CN112349342B - 维护ddr5内存子系统的维护装置、方法、设备和存储介质 - Google Patents

维护ddr5内存子系统的维护装置、方法、设备和存储介质 Download PDF

Info

Publication number
CN112349342B
CN112349342B CN202011223475.9A CN202011223475A CN112349342B CN 112349342 B CN112349342 B CN 112349342B CN 202011223475 A CN202011223475 A CN 202011223475A CN 112349342 B CN112349342 B CN 112349342B
Authority
CN
China
Prior art keywords
data
ddr5
mode register
response
correct
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011223475.9A
Other languages
English (en)
Other versions
CN112349342A (zh
Inventor
李海洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202011223475.9A priority Critical patent/CN112349342B/zh
Publication of CN112349342A publication Critical patent/CN112349342A/zh
Application granted granted Critical
Publication of CN112349342B publication Critical patent/CN112349342B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

提供用于维护DDR5内存子系统的维护装置、方法、设备和存储介质,该维护装置包括:命令发送模块,向DDR5内存发送模式寄存器读取命令,该DDR5内存包括DDR5动态随机存取存储器颗粒;数据收发模块,接收DDR5动态随机存取存储器颗粒的模式寄存器的多个DQ数据;数据校验模块,对多个DQ数据进行校验,以确定多个DQ数据是否正确;以及控制逻辑,响应于确定多个DQ数据正确,基于多个DQ数据来维护DDR5内存子系统。本公开的装置有效地提高了系统的稳定性、可靠性和抗干扰性。

Description

维护DDR5内存子系统的维护装置、方法、设备和存储介质
技术领域
本公开的实施例涉及DDR5,并且更具体地,涉及用于维护DDR5内存子系统的维护装置、方法、设备和存储介质。
背景技术
第五代双倍数据速率同步动态随机访问存储器(Double-Data-Rate ThreeSynchronous Dynamic Random Access Memory,DDR5),也被称为DDR5内存,是新一代内存芯片颗粒,可用作计算机系统主内存。相比较于DDR4,DDR5工作电压降低,接口速率大幅提高,内存容量更大,接口信号减少,因而能够提供低功耗、高带宽、高容量的内存系统。
发明内容
需要一种能够提高DDR5内存子系统的可靠性和抗干扰性的技术。
本公开的实施例的一方面公开了一种用于维护DDR5内存子系统的维护装置。该装置包括:命令发送模块,向DDR5内存发送模式寄存器读取命令,DDR5内存包括DDR5动态随机存取存储器颗粒;数据收发模块,接收DDR5动态随机存取存储器颗粒的模式寄存器的多个DQ数据;数据校验模块,对多个DQ数据进行校验,以确定多个DQ数据是否正确;以及控制逻辑,响应于确定多个DQ数据正确,基于多个DQ数据来维护DDR5内存子系统。
例如,根据本公开的实施例提供的方法,其中,数据校验模块被配置为:将多个DQ数据分组为一个或多个DQ数据组;以及响应于一个或多个DQ数据组满足条件,确定多个DQ数据正确,条件包括以下中的一个或多个:DQ数据组内的一个或多个DQ数据的低位部分为全0或全1;DQ数据组内的DQ数据之间相同或相互反相;和DQ数据组之间的DQ数据之间相同或相互反相。
例如,根据本公开的实施例提供的方法,其中,数据校验模块还被配置为通过如下步骤来确定DQ数据组内的DQ数据之间相同或相互反相:在DQ数据组内的DQ数据之间进行异或操作;以及响应于异或操作的结果为全0或全1,确定DQ数据组内的DQ数据之间相同或相互反相,其中,异或操作包括以下中的一个或多个:在DQ数据组内的多个DQ数据的所有位之间进行异或操作;在DQ数据组内的多个DQ数据的高位部分之间进行异或操作;和在DQ数据组内的多个DQ数据的低位部分之间进行异或操作。
例如,根据本公开的实施例提供的方法,其中,数据校验模块还被配置为通过如下步骤来确定DQ数据组内的DQ数据之间相同或相互反相:判断DQ数据组内的每个DQ数据的低位部分是否为全0或全1;响应于每个DQ数据的低位部分为全0或全1,将每个DQ数据的低位部分与高位部分进行异或操作;以及响应于异或操作的结果彼此相同,确定DQ数据组内的DQ数据之间相同或相互反相。
例如,根据本公开的实施例提供的方法,其中,数据校验模块还被配置为通过如下步骤来确定DQ数据组之间的DQ数据之间相同或相互反相:响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。
例如,根据本公开的实施例提供的方法,其中,数据校验模块被配置为通过如下步骤来将多个DQ数据分组为一个或多个DQ数据组:将多个DQ数据中的每m个DQ数据分为一组,其中m为大于或等于2的偶数。
例如,根据本公开的实施例提供的方法,还包括:计数模块,响应于确定多个DQ数据不正确,执行错误计数;以及其中,控制逻辑被配置为:响应于错误计数小于阈值n,重复执行命令发送模块的发送、数据收发模块的接收和数据校验模块的校验,其中n为正整数;和响应于错误计数大于或等于阈值n,停止执行所述重复。
例如,根据本公开的实施例提供的方法,还包括:更新模块,其中,控制逻辑被配置为:当模式寄存器读取命令为模式寄存器46、模式寄存器47读取命令时,使得更新模块通过如下步骤来维护DDR5内存子系统:基于确定为正确的多个DQ数据来更新DQ数据发送延迟,以保证DDR5内存写数据功能正确;其中,当模式寄存器读取命令是模式寄存器4读取命令时,使得更新模块通过如下步骤来维护DDR5内存子系统:基于确定为正确的多个DQ数据来更新内存刷新频率,以维护DDR5内存内数据准确性。
本公开的实施例的另一方面公开了一种用于维护DDR5内存子系统的方法。该方法包括:向DDR5内存发送模式寄存器读取命令,DDR5内存包括DDR5动态随机存取存储器颗粒;接收DDR5动态随机存取存储器颗粒的模式寄存器的多个DQ数据;对多个DQ数据进行校验,以确定多个DQ数据是否正确;以及响应于确定多个DQ数据正确,基于多个DQ数据来维护DDR5内存子系统。
例如,根据本公开的实施例提供的方法,其中,对多个DQ数据进行校验,以确定多个DQ数据是否正确,包括:将多个DQ数据分组为一个或多个DQ数据组;以及响应于一个或多个DQ数据组满足条件,确定多个DQ数据正确,条件包括以下中的一个或多个:DQ数据组内的一个或多个DQ数据的低位部分为全0或全1;DQ数据组内的DQ数据之间相同或相互反相;和DQ数据组之间的DQ数据之间相同或相互反相。
例如,根据本公开的实施例提供的方法,其中,确定DQ数据组内的DQ数据之间相同或相互反相,包括:在DQ数据组内的DQ数据之间进行异或操作;以及响应于异或操作的结果为全0或全1,确定DQ数据组内的DQ数据之间相同或相互反相。
例如,根据本公开的实施例提供的方法,其中,异或操作包括以下中的一个或多个:在DQ数据组内的多个DQ数据的所有位之间进行异或操作;在DQ数据组内的多个DQ数据的高位部分之间进行异或操作;和在DQ数据组内的多个DQ数据的低位部分之间进行异或操作。
例如,根据本公开的实施例提供的方法,其中,确定DQ数据组内的DQ数据之间相同或相互反相,包括:判断DQ数据组内的每个DQ数据的低位部分是否为全0或全1;响应于每个DQ数据的低位部分为全0或全1,将每个DQ数据的低位部分与高位部分进行异或操作;以及响应于异或操作的结果彼此相同,确定DQ数据组内的DQ数据之间相同或相互反相。
例如,根据本公开的实施例提供的方法,其中,确定DQ数据组之间的DQ数据之间相同或相互反相,包括:响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。
例如,根据本公开的实施例提供的方法,其中,将多个DQ数据分组为一个或多个DQ数据组包括:将多个DQ数据中的每m个DQ数据分为一组,其中m为大于或等于2的偶数。
例如,根据本公开的实施例提供的方法,还包括:响应于确定多个DQ数据不正确,执行错误计数;以及响应于错误计数小于阈值n,重复执行接收和校验,其中n为正整数;和响应于错误计数大于或等于阈值n,停止执行所述重复。
例如,根据本公开的实施例提供的方法,其中,当模式寄存器读取命令为模式寄存器46、模式寄存器47读取命令时,维护DDR5内存子系统包括:基于确定为正确的多个DQ数据来更新DQ数据发送延迟,以保证DDR5内存写数据功能正确。
例如,根据本公开的实施例提供的方法,其中,其中,当模式寄存器读取命令是模式寄存器4读取命令时,维护DDR5内存子系统包括基于确定为正确的多个DQ数据来更新内存刷新频率,以维护DDR5内存内数据准确性。
本公开的实施例的再一方面公开了一种用于维护DDR5内存子系统的设备。该设备包括:存储器,存储计算机程序指令;以及处理器,执行存储器存储的计算机程序指令,使得处理器执行上述任意一项所述的方法。
本公开的实施例的又一方面公开了一种计算机存储介质。该存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述任意一项所述的方法。
根据本公开的实施例,通过对从DRAM内部模式寄存器读取的MRR进行校验可以判断获取的DQ数据是否正确,并且基于正确的DQ数据来维护DDR5内存子系统,避免了直接依据某根DQ信号上读取的MRR数据来贸然对DDR5内存子系统进行维护或操作,从而导致系统运行错误或崩溃的情况,有效地提高了系统的稳定性、可靠性和抗干扰性。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对本公开实施例的附图作简单地介绍。明显地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了根据本公开的实施例的DDR5内存子系统的示意图。
图2示出了根据本公开的实施例的X4 DRAM(Dynamic Random Access Memory,动态随机存取存储器)的MRR(mode register read,模式寄存器读取值)数据输出格式图。
图3A-3C示出了根据本公开的实施例的对从DIMM(Dual-Inline-Memory-Module,双列直插内存条)的DQ(Data input/output,I/O通道)接收到的X4 DRAM的DQ数据进行分组的示意图。
图4示出了根据本公开的实施例的DDR5内存子系统的另一示意图。
图5示出了根据本公开的实施例的DDR5内存子系统的又一示意图。
图6示出了根据本公开的实施例的用于维护DDR5内存子系统的方法的流程图。
图7示出了根据本公开的实施例的对DQ数据进行校验的流程图。
图8示出了根据本公开的实施例的确定DQ数据组内的DQ数据之间是否相同或相互反相的流程图。
图9示出了根据本公开的实施例的确定DQ数据组内的DQ数据之间是否相同或相互反相的另一流程图。
图10示出了根据本公开的实施例的用于维护DDR5内存子系统的方法另一流程图。
图11示出了根据本公开的实施例的用于维护DDR5内存子系统的设备1100的示意图。
图12示出了根据本公开的实施例的计算机存储介质的示意图。
具体实施方式
现在将详细参考本发明的具体实施例,在附图中例示了本发明的示例。尽管将结合具体实施例描述本发明,但将理解,不是想要将本发明限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本发明的精神和范围内包括的变更、修改和等价物。应注意,本文描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
为了使本领域技术人员更好地理解本发明,下面结合附图和具体实施方式对本发明作进一步详细说明。
注意,接下来要介绍的示例仅是具体的示例,而不作为限制本发明的实施例必须为示出和描述的具体的外形、硬件、连接关系、步骤、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本发明的构思来构造本说明书中未提到的更多实施例。
DDR5颗粒从降低功耗角度考量,采用数据总线上数据选通信号DQS(Bi-directional Data Strobe,双向数据控制引脚)信号和数据线DQ(data input/output,即数据输入输出通道)线延时不平衡设计,减少了DQ数据线缓冲器门数,以达到降低功耗的目的。新设计由于DQS和DQ在动态随机存取存储器(Dynamic Random Access Memory,DRAM)(DRAM颗粒)内部延迟单元数量不一样,因此受到温度和电压变化的影响导致两者歪斜值不停变化。内存控制器必须适时地根据DDR5内部DQS和DQ的歪斜变化来调整DQ数据(本文也称为数据输入输出通道数据,即经由数据输入输出通道传输的数据)的发送时间,以达到在温度电压变化导致的DQS信号延迟变化的情况下,DQ抵达时间和DQS采样DQ时间关系固定而保证数据写入功能正确。
DDR5通过内部置有DQS延迟单元相同电路的拷贝来构成环形振荡器,其中,环形振荡器由奇数数量的非门构成,能输出时钟信号。利用固定已知频率的时钟产生定长时间的高电平信号A,环形振荡器输出时钟的上升沿来计数高电平信号A,得到计数值。根据计数值和计数的时间可算得环形电路的延迟值。
外部系统可以通过MPC(Multi Purpose Command,多用途命令)DQS Start命令启动环形振荡器,在一定时间内由内存输入时钟计数,通过计数值可获得延迟单元的延迟量,这个延迟量可近似模拟DQS数据线延迟模拟量。DDR5初始化需要做一系列地址控制命令线训练以及数据总线训练,以及DQS延迟拷贝电路延迟值初始监测,并被内存控制器通过模式寄存器读取命令读取作为初始参考值。在正常工作模式中,内存控制系统定时通过MPC DQstart命令启动DQS拷贝电路环形振荡器,DRAM定时计数结束后,内存控制器通过MRR命令(模式寄存器读取命令),例如MRR46、MRR47命令来获得DQS拷贝电路实时计数值(即模式寄存器的DQ数据)。DQS拷贝电路环形振荡器计数器初始计数值和实时计数器计数值可通过公式计算近似作为DQS信号线延迟随温度电压变化而变化的数值。DDR5内存子系统定时通过MRR命令读取DQS拷贝电路环形振荡器计数值之后,和系统初始训练得到的初始值通过计算可知道DQS延迟变化情况,通过调整控制器DQ延迟,可使得DRAM内部DQS采样DQ信号有可靠的建立时间和保持时间裕量,保证DRAM写数据功能正确。
由于内存总线数据速率高,为提高系统抗干扰性,服务器系统使用ECC DIMM(Error Correcting Code Dual-Inline-Memory-Module,纠错双列直插内存条),通过额外的内存颗粒存储写入的校验数据,在读取时候根据校验数据来校验读出任务数据的正确性。ECC DIMM具有一位纠错、两位检错能力。
MRR操作是读取DRAM或DDR5 SDRAM(第五代双倍数据速率同步动态随机访问存储器,或称DDR5内存,为计算机系统主内存)内部的模式寄存器(mode register,MR),以获取模式寄存器读取数据(MRR数据)。由DRAM输出的MRR数据以DQ数据的格式输出,如前8位是固定为1或者0,后8位是寄存器数据或者反相数据。在偶数DQ线上输出8位0,然后是寄存器数据,奇数DQ上输出8位1,然后是8位反相的寄存器数据(如下参考图2更详尽的描述)。
但是在执行MRR数据读取时,由于读出数据来自于DRAM内部,且ECC颗粒也需要执行MRR操作,因此此时没有ECC校验数据。没有ECC校验数据,内存控制器就难以保证读出的MRR数据的正确性。例如,模式寄存器46、47一般存储有用于维护DDR5内存子系统的DQ延迟的数据。如果依然根据某根DQ信号上读取的相应MRR数据直接贸然更新DQ输出的延迟值,那么使用错误的延迟值的DQ输出将导致DRAM数据写入采样错误,从而使得写入数据错误,进而导致内存系统和整个计算机系统崩溃。
需要注意的是DRAM的奇数位编号DQ和偶数位编号DQ的数据是反相数据,但是DIMM上存在DIMM接口DQ信号线到DRAM接口DQ信号的映射(map),以X4 DRAM为例,也就是说在每4根DQ构成的nibble(半字节)内,DIMM的接口DQ和DRAM接口的DQ虽然是一一连接,但是不是1-1、2-2、3-3、4-4固定映射连接,而是有任意一对一连接的可能。在一个字节Byte内部两个nibble还有交换(swap)的可能。因此,控制器不能直接拿DQ0的后8位数据使用。
类似的,温度控制刷新(Temperature Control Refresh,TCR)也需要MRR命令来读取DRAM内部寄存器温度状态,并根据当前的温度状态区间做相应的刷新频率调整。如果直接使用某一根DQ线上的数据使用,那么有更大的出错概率。另外,如果出错后即终止获取正确的MRR数据的操作,那么系统抗干扰性就很低,系统容易因为刷新频率不够导致DRAM数据丢失进而系统崩溃。需要解决上述问题中的一个或多个的技术。
图1示出了根据本公开的实施例的DDR5内存子系统100的示意图。
参考图1,根据本公开的示例性实施例的系统架构100适用于实施本公开的一般性系统。DDR5内存子系统100可以体现在诸如平板电脑、台式计算机、个人计算机(PC机)以及其他能够使用DIMM或DDR5内存的电子设备或包含在这些设备当中。图1仅示出了与本公开密切相关的单元或模块。然而,根据本公开实施例的DDR5内存子系统100不限于此,而是还可以包括其他附加单元,诸如存储单元、应用以及其他合适的单元等,或者可以省去部分单元。
参考图1,DDR5内存子系统包括用于维护DDR5内存子系统的维护装置102和与维护装置102耦合的DDR5内存104。
DDR5内存可以体现在DIMM 104中。DIMM 104可以包括DDR5动态随机存取存储器颗粒(本文简称为DRAM或DRAM颗粒),DRAM可以形成一个或多个列(rank)中。如本领域技术人员所知的,每个rank可以包括一个或多个DRAM,如DRAM0、DRAM1、或更多或更少的DRAM。
维护装置102包括控制逻辑106、命令发送模块108、数据收发模块110和数据校验模块112。控制逻辑106可以控制维护装置102的整体操作。
命令发送模块108可以向DDR5内存发送模式寄存器读取命令。数据收发模块110可以接收DDR5 DRAM颗粒的模式寄存器的多个DQ数据。数据校验模块112可以对多个DQ数据进行校验,以确定多个DQ数据是否正确。控制逻辑106响应于确定多个DQ数据正确,基于多个DQ数据来维护DDR5内存子系统。
在一些实施例中,命令发送模块108可以向DDR5内存发送模式寄存器读取命令(MRR命令)。例如,命令发送模块108可以在控制逻辑106的控制下经由地址命令线向DIMM104发送MRR命令,以读取DRAM内部的模式寄存器。MRR命令可以包括rank的选择信息(例如rank0表示对rank0的选择)以及对rank内的DRAM内部的模式寄存器进行选择性读取的信息(例如MRR4命令表示对DRAM内部的模式寄存器4的读取,MRR46、MRR47命令表示对DRAM内部的模式寄存器46、47的读取,仅举数例)。当命令发送模块108向DIMM 104发送MRR命令后,响应于该MRR命令,DIMM 104可以将当前rank(例如rank0)内的所有DRAM的模式寄存器(例如MR4)的MRR数据(例如经由数据线)发送到数据收发模块110。因此,数据收发模块110可以接收一个或多个DRAM的模式寄存器的MRR数据。
数据收发模块110可以在控制逻辑106的控制下经由DQ线/DQ通道从DIMM 104接收DQ数据或向DIMM 104发送DQ数据。一般地,发送的DQ数据可以用于写入/存储到DIMM的DRAM中的数据,而接收的DQ数据可以是经由DQ线获取的DRAM中存储的数据,或者是DRAM内部模式寄存器的MRR数据。在本文中,数据收发模块110接收的MRR数据为DQ数据,即经由DQ线读取/获取的MRR数据。因此,当命令发送模块108向DIMM 104发送MRR命令后,数据收发模块110可以接收DDR5 DRAM颗粒的模式寄存器的多个DQ数据。
图2示出了根据本公开的实施例的X4 DRAM的MRR数据输出格式图。图2示出了某一模式寄存器输出的MRR数据(DQ数据)应满足的关系的示例。
参考图2,X4 DRAM的MRR数据包括4位长(BL)的DQ数据,即4个DQ数据(DQ0-DQ3)。每个DQ数据的前8位(低位,bit 0-7)是固定为1或者0,后8位(高位,bit 8-15)是寄存器数据(OP0-OP7)或者寄存器数据的反相数据(!OP0-!OP7)。例如,在偶数DQ线(如DQ0、DQ2)上输出8位0,然后是寄存器数据。奇数DQ线(如DQ1、DQ3)上输出8位1,然后是8位反相的寄存器数据。换句话说,模式寄存器的原始数据被放在偶数DQ线的高位(bit 8-15),并在其低位(bit0-7)添加全0,以进行传输;模式寄存器的原始数据的反相数据被放在奇数DQ线的高位(bit8-15),并在其低位(bit 0-7)添加全1,以进行传输。虽然图2示出了每个DQ数据包括16位(bit),然而实施例不限于此,例如可以在低位添加CRC校验位。
类似的,X8 DRAM的MRR数据输出格式可以包括8个DQ数据(DQ0-DQ7),X16 DRAM的MRR数据输出格式可以包括16个DQ数据(DQ0-DQ15),各个DQ数据同样满足上述X4 DRAM的DQ的关系。
在实际的应用中,一方面,DIMM接口的DQ线和DRAM接口的DQ线虽然是一一连接,但是不是1-1、2-2、3-3、4-4固定映射连接,而是有任意一对一连接的可能,并且另一方面DQ数据在传输的过程中受到环境的影响而发生错误,诸如电磁干扰等。因而,数据收发模块110从DIMM 104所接收的DQ数据与DRAM接口的DQ线所输出的DQ数据不一定相同,例如体现在,从DIMM所接收的DQ0不一定是DRAM所输出的DQ0,因而例如不能判断获得DQ数据是DRAM的DQ数据的原始数据还是原始数据的反相,或者每个DQ的数据(bit0-bit15)中存在错误。如果利用数据收发模块110接收的DQ数据来贸然维护DDR5内存容易将导致系统崩溃。因此,需要对获取的DQ数据进行校验。在下文中,除非另有说明,否则术语“DQ数据”、“MRR数据”是指数据收发模块110经由DQ线从DIMM 104所接收/获取的DQ数据,并且利用本公开的方法所校验的DQ数据是数据收发模块110指经由DQ线读取/获取的MRR数据。
在数据收发模块110接收到多个DQ数据并将其传送给数据校验模块112之后,数据校验模块112可以对多个DQ数据进行校验,以确定多个DQ数据是否正确。例如,数据校验模块112可以对每个rank内的一个或多个DRAM的相同模式寄存器各自的DQ数据进行校验,以确定该DQ数据是否正确。例如,可以校验当前rank内的部分或所有DRAM的相同模式寄存器各自的一个或多个DQ数据的低位为全0或全1,或者校验DQ数据之间是否相同或反相等,然而实施例不限于此,将在下文中进一步描述数据校验模块112所执行的校验操作。
在上述校验之后,控制逻辑106响应于确定多个DQ数据正确,基于多个DQ数据来维护DDR5内存子系统。例如,控制逻辑106响应于确定部分或全部rank内的部分或全部DRAM的相同模式寄存器的DQ数据正确,基于被确定为正确的DQ数据来维护DDR5内存子系统或者基于包含正确的DQ数据的DQ数据来维护DDR5内存子系统(例如,当不对所有的DRAM进行校验时,可以基于被确定为正确的DQ数据和未被校验的DQ数据来维护相应的DDR5内存子系统)。例如,可以在数据校验模块112确定当前rank内的DRAM的DQ数据正确之后,控制逻辑106可以修改MRR命令中的rank选择信息,以从DIMM 104获取另一rank内的所有DRAM的DQ数据,用于确定另一rank内的所有DRAM各自的DQ数据是否正确,以实现DIMM 104中包括的多个的DRAM的相应寄存器的DQ数据的校验。
在一些实施例中,当数据校验模块112确定出DDR5内存包括的DDR5动态随机存取存储器颗粒的相同寄存器的DQ数据正确时,表明已经获取了当前用于维护DDR5内存子系统的相关的部分或全部正确的MRR数据,可以停止重复上述命令发送模块108、数据收发模块110和数据校验模块112的操作。例如,在所有rank内的所有DRAM的相同模式寄存器的DQ读取数据读取完成且被校验正确时,停止重复命令发送模块108、数据收发模块110和数据校验模块112的操作。随后,控制逻辑106可以基于正确的DQ数据来维护DDR5内存子系统。
如此,根据本公开实施例,通过对从DRAM内部模式寄存器读取的DQ数据进行校验可以判断获取的DQ数据是否正确,并且基于正确的DQ数据来维护DDR5内存子系统,避免了直接依据某根DQ信号上读取的MRR数据来贸然对DDR5内存子系统进行维护或操作,从而导致系统运行错误或崩溃的情况,有效地提高了系统的稳定性、可靠性和抗干扰性。
下面进一步描述由数据校验模块112执行的对DQ数据进行校验以确定DQ数据是否正确的操作。需要说明的是,从同一DRAM的模式寄存器(如DRAM0的模式寄存器4)输出的MRR数据中的原始数据(OP0-OP7)相同,而从不同DRAM的相同模式寄存器(例如DRAM0的模式寄存器4与DRAM1的模式寄存器4)输出的MRR中的原始数据一般不相同。因此,对DQ数据的校验操作是以属于某一DRAM内的某一模式寄存器的DQ数据为单元进行的。换句话说,可以基于获取的某一模式寄存器的DQ数据是否满足该模式寄存器的MRR数据输出格式中DQ数据的一些或全部规则(例如,图2的MRR数据的DQ数据的关系)来进行校验。
根据本公开的实施例的数据校验模块112可以被配置为:将属于同一DDR5 DRAM颗粒的同一模式寄存器的多个DQ数据分组为一个或多个DQ数据组;以及响应于一个或多个DQ数据组满足条件,确定该DQ数据正确,条件包括以下中的一个或多个:DQ数据组内的一个或多个DQ数据的低位部分为全0或全1;DQ数据组内的DQ数据之间相同或相互反相;和DQ数据组之间的DQ数据之间相同或相互反相。
在一些实施例中,数据校验模块112可以将属于同一DDR5 DRAM颗粒的同一模式寄存器的多个DQ数据分组为一个或多个DQ数据组。例如,数据校验模块112可以将当前rank内的一个或多个DRAM的相同模式寄存器各自的DQ数据分组成一个或多个DQ数据组。例如,将属于当前rank的DRAM0的模式寄存器4的DQ数据分组为一个或多个DQ数据组,将属于当前rank的DRAM1的模式寄存器4的DQ数据分组为一个或多个DQ数据组。这将在下面参考图3A-3C的实施例进一步描述。
数据校验模块112可以响应于一个或多个DQ数据组满足条件,确定多个DQ数据正确。例如,数据校验模块112可以响应于当前rank内的一个或多个DRAM中的某一模式寄存器的一个或多个DQ数据组满足以下条件中的一个或多个,确定某一个DRAM的DQ数据正确,其中该条件为:条件1)DQ数据组内的一个或多个DQ数据的低位部分为全0或全1;条件2)DQ数据组内的DQ数据之间相同或相互反相;和条件3)DQ数据组之间的DQ数据之间相同或相互反相。例如,数据校验模块112可以响应于DRAM0的模式寄存器4的DQ数据组满足条件1)-3)中的一个或多个,确定该DQ数据正确。
可以以上述条件逐个或并行地校验当前rank内的部分或全部DRAM的相同模式寄存器的DQ数据组,以确定当前rank内的多个DQ数据是否正确。例如,可以逐个或并行地校验DRAM0的模式寄存器4的DQ数据组和DRAM1的模式寄存器4的DQ数据组,以确定当前rank内的多个DQ数据是否正确。当存在多个rank时,在确定当前rank内的DRAM的相同模式寄存器的DQ数据正确后,可以修改MRR命令中对rank的选择信息,以获取另一rank内的DRAM的相应寄存器的DQ数据,以利用上述相同的方法对该另一rank内的DRAM的相应寄存器的DQ数据进行校验,从而确定一个或多个rank内的DRAM的相同模式寄存器的DQ数据是否正确。因而,本公开实施的数据校验模块112以某一DRAM的某一模式寄存器的DQ数据为基本单元来进行校验,以确定当前DRAM的某一模式寄存器的DQ数据是否正确。此外,数据校验模块112可以(例如逐个或并行地)对部分或所有DRAM的相同模式寄存器各自的DQ数据进行校验,以确定接收的DQ数据是否正确。
需要说明的是,术语“分组”是指将从某一DRAM的某一模式寄存器获得的DQ数据视为一个或多个不同的DQ数据组,以便在组内采用相同方法进行校验,并不指示需要通过专门/明确的动作或步骤来将DQ数据分组为一个或多个DQ数据组。因此,任何将一个或多个DQ数据作为一个或多个组以供在组内采用相同条件进行校验的操作均包括在本申请的“分组”的操作步骤中,并且落入本公开的范围之内。
图3A-3C示出了根据本公开的实施例的对从DIMM的DQ接收到的X4DRAM的DQ数据进行分组的示意图。
虽然图3A-图3C所示的X4 DRAM的DQ数据均按照DQ0-DQ1的顺序进行接收,并且各个DQ数据低位全部为全0或全1填充,而且DQ的高位数据之间相同或反相,然而这只是示出了从DIMM的DQ接收到的X4DRAM的DQ数据的一种情况,或者说是一种正确的情况。如上所述,由于DIMM的接口DQ和DRAM接口的DQ的映射关系以及受环境影响导致的bit0-bit15的错误,因此图3A-图3C中的DQ0-DQ3的映射关系并不一定分别对应于DRAM输出的DQ0-DQ3的顺序,bit0-7并不一定是全0或全1,或者bit 8-15也不一定相互相同或反相,因而需要对接收的DQ数据进行校验。
数据校验模块112可以被配置为将属于同一DDR5 DRAM颗粒的相同模式寄存器的多个DQ数据分组为一个或多个DQ数据组。
在一些实施例中,可以每m个DQ数据分为一组,m是正整数。例如,参考图3A,X4DRAM的MRR数据包括4位长的DQ数据(DQ0-DQ3),并且可以每2个DQ数据分为一组,因此4个DQ数据被分为2个DQ数据组,其中DQ数据组0包括DQ0和DQ1并且中DQ数据组1包括DQ2和DQ3。可替换地,可以将任意的两个DQ数据分为一组。可替换地,可以将4个DQ数据分别分为4个DQ数据组,每个DQ数据组包括一个DQ数据。
在一些实施例中,可以将DQ数据分为一组。例如,参考图3B,4个DQ数据(DQ0-DQ3)作为整体而分组为DQ数据组0。
在一些实施例中,可以将不同数量的DQ数据分为一组,换句话说,各个DQ数据组可以包括不同数量的DQ数据。例如,参见图3C,4个DQ数据被分为3组,其中DQ数据组0包括一个DQ数据,而DQ数据组1包括3个DQ数据。
上述对X4 DRAM的DQ数据进行分组的示例并不是穷举的,可以根据需要对这些DQ数据以其他合适的方式进行分组。
在对DQ数据进行分组之后,数据校验模块112可以确定这些DQ数据是否满足上述条件1)-3)中的一个或多个。在此,满足条件1)-3)中的一个或多个表示:条件可以是条件1),满足条件表示满足条件1)即可,或者条件可以是条件2),满足条件表示满足条件2)即可,或者条件可以是条件3),满足条件表示满足条件3)即可,或者条件可以是条件1)和2),满足条件表示满足条件1)和2)两者即可,或者条件可以是条件1)和3),满足条件表示满足条件1)和3)两者即可,或者条件可以是条件2)和3),满足条件表示满足条件2)和3)两者即可,或者条件可以是条件1)、2)、3),满足条件表示必须满足条件1)、2)、3)三者。
为了确定条件1),数据校验模块112可以确定DQ数据组内的一个或多个DQ数据的低位部分是否为全0或全1。例如,数据校验模块112可以确定一个或多个DQ数据组中的一个或多个DQ数据的低位部分是否为全0或全1。针对图3A的DQ数据组0而言,当2个DQ数据中的任意一个或多个DQ数据的低位部分(前8位)为全0或全1时,可以确定该DQ数据正确,或者当确定DQ数据组0和DQ数据组1各自的一个或多个DQ数据的低位部分是否为全0或全1时,可以确定该DQ数据正确。相反,当校验的DQ数据的低位不满足全0或全1,说明该DQ数据错误(例如在传输过程中受电磁影响),并且在后续的操作的中将不使用该DQ数据来维护DDR5内存子系统,以避免系统崩溃。
如此,根据本公开的实施例,可以根据任意一个或多个DQ数据来获得正确的MRR数据或确定不正确的MRR数据。前8位数据为全零时使用后8位原数据,前8位为全1时使用后8位反相数据作为寄存器数据,可以降低或避免贸然直接使用DQ数据来维护DDR5内存子系统而导致的系统崩溃。此外,不需要对例如X4 DRAM的所有DQ数据进行校验,从而降低了计算开销。
为了确定条件2),数据校验模块112可以确定DQ数据组内的DQ数据之间是否相同或相互反相。例如,在DQ数据组内的DQ数据之间进行异或操作(XOR);以及响应于异或操作的结果为全0或全1,确定DQ数据组内的DQ数据之间相同或相互反相。
在一个实施例中,数据校验模块112可以在DQ数据组内的DQ数据的低位部分之间进行异或操作。以图3A为例,可以对其中的DQ0和DQ1的所有低位之间一一对应地进行异或操作,如DQ0的bit0与DQ1的bit0异或,以此类推,直到DQ0的bit7与DQ1的bit7异或。
在另一实施例中,数据校验模块112可以在DQ数据组内的DQ数据的高位部分之间一一对应地进行异或操作。以图3A为例,可以对其中的DQ0和DQ1的所有高位之间进行异或操作,如DQ0的bit8与DQ1的bit8异或,以此类推,直到DQ0的bit15与DQ1的bit15异或。
在又一实施例中,数据校验模块112可以在DQ数据组内的DQ数据的所有位之间一一对应地进行异或操作。以图3A为例,可以对其中的DQ0和DQ1的所有相同位之间进行异或操作,如DQ0的bit0与DQ1的bit0异或,以此类推,直到DQ0的bit15与DQ1的bit15异或。
如此,根据本公开的实施例,与仅判断DQ数据的低位相比,通过对DQ数据组内的高位DQ之间进行异或操作,或者对所有位之间进行异或操作可以进一步提高判断出错误MRR数据的概率,提高了系统的可靠性。
在确定条件2)的替代实施例中,数据校验模块112可以确定DQ数据组内的DQ数据之间是否相同或相互反相。例如,数据校验模块112判断DQ数据组内的每个DQ数据的低位部分是否为全0或全1;响应于每个DQ数据的低位部分为全0或全1,将每个DQ数据的低位部分与高位部分进行异或操作;以及响应于异或操作的结果彼此相同,确定DQ数据组内的DQ数据之间相同或相互反相。
在一个实施例中,数据校验模块112可以判断DQ数据组内的每个DQ数据的低位部分是否为全0或全1。例如,返回参考图3A,可以判断DQ数据组0内的DQ0和DQ1的低位(bit0-bit7)是否为全0或全1,并且判断DQ数据组1内的DQ2和DQ3的低位是否为全0或全1。如此,可以判断每个DQ数据的低位是否正确。在一些实施例中,当DQ数据组内的DQ的低位不满足全0或全1时,指示该DQ数据存在错误,可以报错。
随后,数据校验模块112响应于每个DQ数据的低位部分为全0或全1,将每个DQ数据的低位部分与高位部分进行异或操作。例如,继续参考图3A,在确定DQ数据的低位为全0或全1时,表明DQ数据的低位正确,然后可以将每个DQ数据的低位与高位进行异或操作,从而获得4个DQ数据对应的模式寄存器的原始数据,即bit8-bit15中的操作数(OP0-OP7),分别记为MRDQ0、MRDQ1、MRDQ2、MRDQ3。
然而,受到例如电磁干扰的影响,这里所获得的MRDQ0、MRDQ1、MRDQ2、MRDQ3并不一定是正确的,即并不一定与相应模式寄存器的原始数据相同。进一步地,数据校验模块112可以确定上述异或操作的结果是否彼此相同,数据校验模块112响应于异或操作的结果彼此相同,可有确定DQ数据组内的DQ数据之间相同或相互反相。例如,继续参考图3A,当DQ数据组0内满足MRDQ0==MRDQ1时,可以确定DQ数据组0内的DQ0和DQ1正确,同样,当DQ数据组1内满足MRDQ2==MRDQ3时,可以确定DQ数据组1内的DQ2和DQ3正确。在一些实施例中,当DQ数据组内的原始数据之间不满足完全相等时,指示该DQ数据组存在错误的DQ数据,可以报错。
为了确定条件3),数据校验模块112可以确定DQ数据组之间的DQ数据之间是否相同或相互反相。例如,响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。
在一个实施例中,数据校验模块112可以将一个DQ数据组内的任一DQ数据与另一DQ数据组内的任一DQ数据进行校验,响应于DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。
在另一个实施例中,可以先在DQ数据组内进行校验,例如确定DQ数据组是否满足上述条件1)或2)中的一个或多个。当DQ数据组满足上述条件1)或2)中的一个或多个时,确定DQ数据组之间的DQ数据之间是否相同或相互反相。例如,响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。例如在上述确定条件2)的替代实施例中,当确定异或操作的结果彼此相同,即DQ数据组内的原始数据完全相等时,数据校验模块112可以将DQ数据组之间的任意两个DQ数据进行比较。如继续参考图3A,可以将DQ数据组0内的DQ0与DQ数据组1内的DQ2进行比较(例如DQ0 XORDQ2,或者判断DQ0==DQ2)。当DQ0 XOR DQ2为全0或全1,例如DQ0 XOR DQ2的结果为16位的全0或全1时,或者DQ0==DQ2时,例如DQ0的高位OP0-OP8与DQ2的高位OP0-OP8分别相等时,可以确定DQ数据组0和DQ数据组1之间的DQ数据相同或相互反相,进而确定X4 DRAM内的4个DQ数据完全相等。在一些实施例中,当不满足完全相等时,指示该DQ数据组存在错误的DQ数据,可以报错。
在一些实施例中,数据校验模块112可以对不同的DQ数据组采用不同的校验方式。例如,可以仅校验一个DQ数据组内的DQ数据的低位是否满足全0或全1并校验另一个DQ数据组内的DQ数据之间的异或操作是否为全0或全1。当这些DQ数据组满足各自的条件时,响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。当不满足DQ数据组之间的DQ数据之间相同或相互反相时,指示该DQ数据组之间存在错误的DQ数据,可以报错。
如此,根据本公开的实施例,可以通过灵活的方式进行DQ数据组内和DQ数据之间的校验,从而实现对同一DRAM内的相应寄存器的多个DQ数据中的部分DQ数据的校验甚至全部DQ数据的校验(本文称为完整性校验),进一步提高了判断出获取的DQ数据的存在错误的概率。
如上描述了对当前rank内同一DRAM内的某一模式寄存器的DQ数据的校验的实施例。换句话说,上述的校验是以单个DRAM内的某一模式寄存器的DQ数据为单元进行的。在一些实施中,可以利用上述校验方法对从当前rank内的其他DRAM的相同模式寄存器获取的DQ数据进行校验。例如,一个rank可以包括多个DRAM,可以并行地分别对从每个DRAM的相应寄存器获取的DQ数据进行上述校验,以实现当前rank的所有DRAM的DQ数据的校验。
如此,根据上述实施例,可以实现当前rank内的所有DRAM的DQ数据的校验,提高判断出错误MRR数据的概率,从而降低了利用错误的MRR数据维护DDR5内存的可能性。
如上所述,在一些情况下,DDR5可以包括多个rank。可以修改模式寄存器读取命令中对rank的选择信息,获取其余rank内的DRAM的相同模式寄存器的DQ数据,并重复上述校验的操作,以确定所有rank内的所有DRAM的相应寄存器的DQ数据是否都正确,从而确定一个或多个DRAM的相同寄存器的DQ数据是否都正确。
可替代地,也可以在数据收发模块110获取所有rank内的所有DRAM各自的DQ数据后,利用数据校验模块112对这些DQ数据(例如,并行地)进行校验,以实现DIMM 104中包括的多个的DRAM的相同寄存器的DQ数据的校验。
如此,根据本公开的实施例的数据校验模块112可以确定DDR5内存中的一个或多个DRAM的相应模式存储器的DQ数据是否正确。进而,控制逻辑106可以基于正确的DQ数据维护DDR5内存子系统(例如当对所有的DQ数据进行校验的情况下)或者基于包括正确的DQ数据的DQ数据维护DDR5内存子系统,从而避免了利用错误DQ数据来维护DDR5而导致系统崩溃的情况,提高了DDR5内存子系统的可靠性和抗干扰性。
图4示出了根据本公开的实施例的DDR5内存子系统400的示意图。图4示出了图1所述的系统100的附加方面。与图1相比,DDR5内存子系统400还可以可选地包括计数模块414或更新模块416。
计数模块114可以连接到数据校验模块112。计数模块114可以响应于数据校验模块112确定多个DQ数据不正确来执行错误计数;以及响应于错误计数小于阈值n,重复执行命令发送模块108的发送、数据收发模块110的接收和数据校验模块112的校验;和响应于错误计数大于或等于阈值n,停止执行所述重复,其中n为正整数。
在一些实施例中,当数据校验模块112确定DQ数据不正确时,例如某一DRAM的某一模式寄存器的DQ数据不满足上述条件1)-3)中的一个或多个,计数模块114可以响应于确定该DQ数据不正确,执行错误计数。
在执行错误计数后,控制逻辑106可以基于计数模块的错误计数进行操作。例如,控制逻辑106可以响应于每次错误计数而报错(error),或者响应于错误计数是否大于或等于阈值n来进行操作。在一些实施例中,当错误计数小于阈值n时,控制逻辑106可以控制重复执行上述命令发送模块108的发送操作、数据收发模块110的获取MRR数据的操作或数据校验模块112的校验操作,即进行重试,以达到获取正确的DQ数据的目的。在一些实施例中,当错误计数等于阈值n时,控制逻辑106可以控制停止执行上述重复操作,并且可以报致命错误(fatal error)。n可以为大于或等于1的正整数。例如n可以为1,表示当检测到一次校验错误时即停止上述操作并报错,如此,控制逻辑106不利用错误的DQ数据来管理DDR5内存子系统。可替代地,n可以为3,表示错误计数大于或等于3次时,控制逻辑106可以停止重复并将致命中断信号报告给上级控制模块。
可选地,当数据校验模块112确定DQ数据不正确时,控制逻辑106可以判定当前DDR5内存子系统所处的环境恶劣从而导致获取的DQ数据不正确,进而可以延迟不同的时间来重复上述命令发送模块108、数据收发模块110和数据校验模块112的操作,以避开环境恶劣情况下的频繁重复操作,从而降低计算开销。
如此,根据本公开实施例,一方面,在MRR数据准确性无法保证的情况下,即校验出错误的DQ数据的情况下,可以避免利用错误的DQ数据进行维护操作,保证了系统的可靠性;另一方面,在MRR数据准确性无法保证的情况下,可以重复执行操作多次,即重复获取DQ数据并进行校验,提高了系统获取的MRR数据准确性的机会。
在一些实施例中,当数据校验模块112确定一个或多个DRAM的相应的模式寄存器的DQ数据正确时,控制逻辑106可以向更新模块116发送更新请求以对DDR5内存子系统进行维护。例如,模式寄存器读取命令可以是模式寄存器46、模式寄存器47读取命令(MRR46、MRR47命令),因此维护DDR5内存子系统可以包括,由更新模块416基于从模式寄存器46、模式寄存器47(MR46、MR47)读取的确定为正确的DQ数据来更新DQ发送(DQTX)延迟,以保证DDR5内存写数据功能正确。例如,更新模块416可以与数据收发模块110连接,以更新用于数据发送的延迟单元的延迟量,以保证DDR5内存写数据功能正确。
可替代地,模式寄存器读取命令可以是模式寄存器4读取命令(MRR4命令),因此维护DDR5内存子系统包括,由更新模块416基于从模式寄存器4(MR4)读取的确定为正确的DQ数据来更新内存刷新频率,以维护DDR5内存内数据准确性。
当然,当需要降低计算开销时,可以不必对所有DRAM或所有DRAM的相同模式寄存器的所有DQ数据进行校验。此时,可以利用被确定为正确的DQ数据和其余未被校验的DQ数据来维护DDR5内存子系统。
如此,根据本公开的实施例,在获得准确的MRR数据后,可以基于准确的MRR数据来维护DDR5内存系统,以提高系统的可靠性。
图5示出了根据本公开的实施例的DDR5内存子系统500的示意图。DDR5内存子系统500的可以是DDR5内存子系统100和400的更详尽或优选地的示意图。然而,可以理解的是,DDR5内存子系统500所包括的各个单元仅是示例性的,这些单元中的多个单元可以组合成单个单元,或者单个单元可以分离为多个单元。因此,本公开的DDR5内存子系统500可以根据需要包括更多或更少的单元,并且各个单元的布置也可以相应地做出改变。另外,下面由系统500中的各个单元所执行的动作也仅是示例性的,本领域的技术人员在了解本发明构思以后可以对这些动作进行改变。
参考图5,DDR5内存子系统500包括维护装置502和与维护装置502耦合的DIMM104。维护装置502可以与图1所示的维护装置102和图4所示的维护装置402相同。
参考图5,维护装置502包括:DDC(DQS Drift Compensation,DQS信号漂移补偿)控制逻辑504;TCR控制逻辑506;仲裁逻辑电路508,负责仲裁DDC、TCR或其他申请控制命令总线输出的逻辑电路;命令发送模块510;地址控制线输出IO(CA TX IO)电路512;DQ发送延迟更新模块514;DQ发送接收IO(DQTX/RX IO)接口电路516;数据接收模块518,包括读取的MRR数据(或DQ数据)和CPU读取数据;MRR数据校验模块520;执行次数、MRR数据和错误状态寄存器模块522。
DDC控制逻辑504主要功能是根据定时器触发一次DDC补偿操作请求。DDC控制逻辑504申请DDR总线控制器控制权,得到授权后,DDC控制逻辑504清除模块522次数计数器,并发送MPC DQS Oscillator Start command命令,等待控制器配置好的约定时间后,DRAM内部Oscillator计数器计数结束。DDC控制逻辑504发送MRR46、MRR47读取命令。MRR数据返回到522模块,模块522会标志出MRR返回数据校验结果(或完整性校验结果)和当前次数。如果MRR数据完全正确,则DDC控制逻辑504会向DQ发送延迟更新模块514发送DQTX延迟更新请求。DQ发送延迟更新模块514存储有第一次Training结束时候MRR46、MRR47命令读取的初始数据,DQ发送延迟更新模块514根据DDC控制逻辑504发送来的更新请求和第一次MRR46、MRR47命令读取的数据、当前次各个rank的每个DRAM颗粒的MRR46、MRR47命令读取的数据通过计算来更新模块1.7里的DQTX发送延迟。其计算方法参考DDR5规格书。
如果当前次某一个rank某一个DRAM颗粒MRR46、MRR47命令读取的数据错误,且重复次数小于n次,则DDC控制逻辑504会重新执行所有rank所有DRAM颗粒的MRR46、MRR47读取,并发送错误计数脉冲使能信号给模块522次数计数器逻辑;如果错误次数等于n次则DDC控制逻辑504停止重试并报致命中断信号给上级控制模块。
数据接收逻辑电路518根据需要根据命令发送模块1.4传送来的MRR数据读取标志来区分是读取的MRR数据还是正常的CPU读取数据。该电路功能包括数据CRC校验、解扰码、ECC校验电路和MRR数据直通功能。对于正常的CPU读取数据,该电路输出解扰码后的数据,并输出CRC校验结果和ECC校验结果。对于读取的MRR数据,该电路依据DDR5规格书丢掉CRC校验数据且不做CRC校验,直接将接收的MRR数据输出给MRR数据校验模块电路520。
在一些实施例中,MRR数据校验模块520可以根据模块518传送来的MRR数据进行数据完整性校验。其校验方法是根据DDR5规格书的数据特征按如下规则校验。
i):将DQ数据中属于同一DRAM的模式寄存器的DQ数据中的每m个DQ数据分为一组,其中m为大于或等于2的偶数。例如,可以将每4位DQ数据分为一组,以形成一个或多个数据组,称为一个nibble,在每个nibble内进行DQ数据校验,即确定每个nibble是否满足如下ii)-v)中的部分或全部。
ii):判断DQ数据组内的多个DQ数据中的每个DQ数据的低位部分是否为全0或全1。例如,每个DQ数据的前8位数据必须为0(即低位为全0)或者255(即高位为全1);若不满足,报error。
iii):响应于每个DQ数据的低位部分为全0或全1,将每个DQ数据的低位部分与高位部分进行异或操作。例如响应于满足规则ii),则对每个DQ数据的后8位数据和前8位数据进行异或操作,得到每一个DQ数据的模式寄存器的原始数据。即DQX[7:0]XOR DQX[15:8],记为MRDQ0、MRDQ1、MRDQ2、MRDQ3。
iv):响应于异或操作的结果彼此相同,确定DQ数据组内的DQ数据之间相同或相互反相。例如,一方面,响应于MRDQ0==MRDQ1==MRDQ2==MRDQ3,确定该nibble内的DQ数据之间相同或相互反相,即确定该nibble内的DQ数据正确。另一方面,响应于MRDQ0、MRDQ1、MRDQ2、MRDQ3不全相等,表明该DQ数据存在错误,报error。
v)响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。例如,如果是X8DRAM颗粒,根据规则i)可以将8个DQ数据平均分为两组(例如nibble 0和nibble 1),则需要校验偶数位编号A的nibble(例如nibble 0)的任一MRDQ和奇数位编号(A+1)的nibble(例如nibble 1)的任一MRDQ相等,如果相等,则表明X8 DRAM颗粒中的8个DQ数据相同或相互反相,即确定该X8 DRAM内的DQ数据正确。如果偶数位编号A的nibble(例如nibble 0)的任一MRDQ和奇数位编号(A+1)的nibble(例如nibble 1)的任一MRDQ不相等,表明该DQ数据存在错误,报error。
DRAM颗粒一般可以是X4 DRAM、X8 DRAM或X16 DRAM,因此可以将其某一模式寄存器的DQ数据中的每m个DQ数据分为一组,其中m为大于或等于2的偶数。例如,可以将4个DQ线分为一组,如此X4 DRAM的DQ数据被分为一组,X8 DRAM或X16 DRAM各自的DQ数据可以分别被分为2组和4组,并采用上述规则i)-v)进行校验。针对现有的X4 DRAM、X8 DRAM或X16DRAM,这种以4个DQ数据为一组的分组方式可以减小分组的复杂性和组数,降低了校验或校验算法的复杂性,减少了计算开销。
当然,MRR数据校验模块520可以根据518传送来的MRR数据进行与上述数据校验模块112所执行的其他校验方法,而不限于该实施例所描述的完整性校验,在此不再赘述。
模块522存有当前执行次数、MRR操作对应DRAM寄存器数据,以及当前的MRR数据的校验结果和所有rank的DRAM颗粒的校验状态是OK还是FAIL,以供DDC控制逻辑504或TCR控制逻辑506判断执行成功还是错误,是否继续重新操作,或者执行DQTX延迟单元更新。
类似的,TCR控制逻辑506和DDC控制逻辑504类似,也具有MRR数据校验错误会执行重复操作例如最大3次的功能。如果3次都失败,则报fatal error,否则根据最新的DRAM温度状态采取相应的刷新频率。在新的刷新频率下,内存控制器发送内存刷新命令给DRAM以维护DRAM内数据准确性。
如此,根据本公开的实施例,大大提高DDC补偿的可靠性,能消除MRR数据传输过程中电磁干扰导致的DDC补偿错误导致写入数据错误,以及避免温度状态读取错误导致刷新频率不够的内存颗粒数据丢失,大大降低内存系统,计算机系统崩溃的概率。
图6示出了根据本公开的实施例的用于维护DDR5内存子系统的方法600的流程图。如上所述,该方法可以在图1、图4和图5的DDR5内存子系统或维护装置中实施。
参考图6,在操作S602中,向DDR5内存发送模式寄存器读取命令,DDR5内存包括DDR5 DRAM颗粒。在操作S604中,接收DDR5 DRAM颗粒的模式寄存器的多个DQ数据。在操作S606中,对多个DQ数据进行校验,以确定多个DQ数据是否正确。在操作S608中,响应于确定多个DQ数据正确,基于多个DQ数据来维护DDR5内存子系统。
图7示出了根据本公开的实施例的对DQ数据进行校验的方法700的流程图。图7可以是操作S606的更详尽/特定的实施例。
参考图7,操作S702中,将属于同一DDR5 DRAM颗粒的同一模式寄存器的多个DQ数据分组为一个或多个DQ数据组。在操作S704中,响应于一个或多个DQ数据组满足条件,确定多个DQ数据正确,其中该校验条件包括以下中的一个或多个:条件1)DQ数据组内的一个或多个DQ数据的低位部分为全0或全1;条件2)DQ数据组内的DQ数据之间相同或相互反相;和条件3)DQ数据组之间的DQ数据之间相同或相互反相。
在操作S702中,可以以不同的方式对接收的DQ数据中属于同一DRAM的同一模式寄存器的DQ数据分组。在一些实施例中,可以每m个DQ数据分为一组。在一些实施例中,可以将该DQ数据分为一个组。在一些实施例中,可以将不同数量的DQ数据分为一组,以使各个DQ数据组可以包括不同数量的DQ数据。
在操作S704中,基于分组情况,当DQ数据满足上述条件1)-3)中的一个或多个可以确定DQ数据正确。
为了确定条件1),可以确定DQ数据组内的一个或多个DQ数据的低位部分是否为全0或全1。
如此,根据本公开的实施例,可以根据任意一个或多个DQ数据来确定获得的DQ数据正确或确定获得的DQ数据不正确。前8位数据为全零时使用后8位原数据,前8位为全1时使用后8位反相数据作为寄存器数据,可以降低或避免贸然直接使用DQ数据来维护DDR5内存子系统而导致的系统崩溃。此外,也可以不需要对例如X4 DRAM的所有DQ数据进行校验,即不需要进行完整性校验,从而可以降低了计算开销。
为了确定条件2),可以确定DQ数据组内的DQ数据之间是否相同或相互反相。
图8示出了根据本公开的实施例的确定DQ数据组内的DQ数据之间是否相同或相互反相的方法800的流程图。
在操作S802中,在DQ数据组内的DQ数据之间进行异或操作。在操作S804中,响应于异或操作的结果为全0或全1,确定DQ数据组内的DQ数据之间相同或相互反相。
在一个实施例中,可以在DQ数据组内的DQ数据的低位部分之间进行异或操作。在另一实施例中,可以在DQ数据组内的DQ数据的高位部分之间进行异或操作。在又一实施例中,可以在DQ数据组内的DQ数据的所有位之间进行异或操作。
如此,根据本公开的实施例,与仅判断DQ数据的低位相比,通过对DQ数据组内的高位DQ之间进行异或操作,或者对所有位之间进行异或操作可以进一步提高判断出错误MRR数据的概率,提高了系统的可靠性。
图9示出了根据本公开的实施例的确定DQ数据组内的DQ数据之间是否相同或相互反相的另一方法900的流程图。
参考图9,在操作S902中,判断DQ数据组内的每个DQ数据的低位部分是否为全0或全1。在操作S904中,响应于每个DQ数据的低位部分为全0或全1,将每个DQ数据的低位部分与高位部分进行异或操作。在操作S906中,响应于异或操作的结果彼此相同,确定DQ数据组内的DQ数据之间相同或相互反相。
为了确定条件3),可以确定DQ数据组之间的DQ数据之间是否相同或相互反相。例如,响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。
在一个实施例中,可以将一个DQ数据组内的任一DQ数据与另一DQ数据组内的任一DQ数据进行校验,响应于DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。
在另一个实施例中,可以先在DQ数据组内进行校验,以确定DQ数据组是否满足上述条件1)或2)中的一个或多个。当DQ数据组满足上述条件1)或2)中的一个或多个时,确定DQ数据组之间的DQ数据之间是否相同或相互反相。例如,响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。
在一些实施例中,可以对不同的DQ数据组采用不同的校验方式。例如,可以仅校验一个DQ数据组内的DQ数据的低位是否满足全0或全1并校验另一个DQ数据组内的DQ数据之间的异或操作是否为全0或全1。当这些DQ数据组满足各自的条件时,响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。当不满足DQ数据组之间的DQ数据之间相同或相互反相时,指示该DQ数据组之间存在错误的DQ数据,可以报错。
如此,根据本公开的实施例,可以通过灵活的方式进行DQ数据组内和DQ数据之间的校验,从而实现对同一DRAM的MMR数据的多个甚至全部的DQ数据的校验,进一步提高了判断出错误MRR数据的概率。
如上描述了对当前rank内同一DRAM内的某一模式寄存器的DQ数据的校验的实施例。换句话说,上述的校验是以单个DRAM内的某一模式寄存器的DQ数据为单元进行的。在一些实施中,可以利用上述校验方法对从当前rank内的其他DRAM的相同模式寄存器获取的DQ数据进行校验。例如,一个rank可以包括多个DRAM,可以并行地分别对从每个DRAM的相应寄存器获取的DQ数据进行上述校验,以实现当前rank的所有DRAM的DQ数据的校验。
如此,根据上述实施例,可以实现当前rank内的所有DRAM的DQ数据的校验,降低了利用错误的MRR数据维护DDR5内存的可能性。
如上,在一些情况下,DDR5可以包括多个rank。可以修改模式寄存器读取命令中对rank的选择信息,获取其余rank内的DRAM的相同模式寄存器的DQ数据,并重复上述校验的操作,以确定所有rank内的所有DRAM的相应寄存器的DQ数据是否都正确,从而确定一个或多个DRAM的相同寄存器的DQ数据是否都正确。
可替代地,也可以在获取所有rank内的所有DRAM各自的DQ数据后,利用据校验模块112对这些DQ数据(例如,并行地)进行校验,以实现DIMM 104中包括的多个的DRAM的相同寄存器的DQ数据的校验。
图10示出了根据本公开的实施例的用于维护DDR5内存子系统的方法1000的另一流程图。图10示出了图6的方法600的附加方面。
在操作S1002中,向DDR5内存发送MRR命令,该DDR5内存包括DDR5 DRAM颗粒。
在操作S1002中,接收DDR5 DRAM颗粒的模式寄存器的多个DQ数据。
在操作S1004中,对多个DQ数据进行校验。
在操作S1006中,确定该多个DQ数据是否正确。如果是,方法1000前进到操作S1008。在操作S1008中,基于该多个DQ数据来维护DDR5内存子系统。
返回操作S1006中,当该多个DQ数据不正确,方法1000前进到操作S1010,以执行错误计数。
在操作S1012中,判断错误计数是否大于或等于阈值。如果是,方法1000前进到操作S1014。在操作S1014中,结束重试操作并报致命中断信号给上级控制模块。
返回操作S1006中,当错误计数小于阈值,返回到操作S1001,以重复上述相关操作。
如此,根据本公开的实施例的用于维护DDR5内存子系统的方法可以附加地实现如下技术效果:一方面,在MRR数据准确性无法保证的情况下,即校验出错误的DQ数据的情况下,可以避免利用错误的DQ数据进行维护操作,保证了系统的可靠性;另一方面,在MRR数据准确性无法保证的情况下,可以重复执行操作多次,即重复获取DQ数据并对其进行校验,提高了系统获取的MRR数据准确性的机会。
图11示出了根据本公开的实施例的用于维护DDR5内存子系统的设备1100的示意图。
参考图11,设备1100可以包括各种组件1102、1104和1106。如图11示意性所示,设备1100可以包括一个或多个处理器1102和一个或多个存储器1104。可选地,设备1100还可以包括接口I/F 1106,以便与例如DDR5内存1108或其他外围存储设备进行交互。可以设想,设备1100可以根据需要包含其他组件。
设备1100可以装载并因此包括一个或多个应用。这些应用是指令集(例如,计算机程序代码),当被一个或多个处理器1102执行时,这些指令集控制设备1100的操作。为此,一个或多个存储器1104可以包括可由一个或多个处理器1102执行的指令/数据,由此设备1100可执行根据本公开中所公开方法的方法或过程。
图12示出了根据本公开的实施例的计算机存储介质1200的示意图,在该示例中计算机存储介质是数据盘1200的形式。然而实施例不限于此,计算机存储介质1200也可以是其他介质,诸如光盘、数字视频盘、闪存或其他常用的存储器技术。在一个实施例中,数据盘1200是磁性数据存储盘。数据盘1200被配置为携带指令1202,该指令1202可以被加载到诸如图11所示的设备1100的设备的存储器1104中。当设备1100的处理器1102执行指令时,使得设备1100执行根据本公开中所公开方法的方法或过程。
本文描述的各个方面和实施例可以判断DDR5内存的内部模式寄存器获取的MRR数据是否正确,并且基于正确的DQ数据来维护DDR5内存子系统,避免了直接依据某根DQ信号上读取的MRR数据来贸然对DDR5内存子系统进行维护或操作,从而导致系统运行错误或崩溃的情况,有效地提高了系统的稳定性、可靠性和抗干扰性。
贯穿本公开呈现的各方面和实施例的附加优点是,在MRR数据准确性无法保证的情况下,可以重复执行操作多次,以提高系统获得MRR数据准确性的机会。当然,本公开呈现的各方面和实施例还可以包括其他附加的实施例,这里不再一一列举。
在上文的详细描述中,出于解释而非限制的目的,阐述了具体细节,以便提供对本公开中描述的各个方面和实施例的透彻理解。在一些情况下,省略了对众所周知的设备、组件、电路和方法的详细描述,以免用不必要的细节来模糊本文公开的实施例的描述。本文列举本文公开的原理、方面和实施例的所有声明,以及其具体示例,旨在涵盖其结构等同物和功能等同物两者。另外,这种等同物旨在包括当前已知的等同物以及将来开发的等同物,即,开发的执行相同功能的任何元件,而不管结构如何。因此,例如,可以理解,本文的框图可以表示体现所描述的实施例的原理的说明性电路系统或其他功能单元的概念图。类似地,可以理解,任何流程图等表示各种过程,这些过程可以基本上在计算机存储介质中表示,并且由计算机或处理器执行,无论是否明确示出了这样的计算机或处理器。包括功能块的各种元件的功能可以通过使用硬件(诸如电路硬件和/或能够以存储在上述计算机存储介质上的编码指令的形式执行软件的硬件)来提供。因此,这样的功能和所示的功能块将被理解为是硬件实施的和/或计算机实施的,因此是机器实施的。就硬件实施方式而言,功能块可以包括或涵盖但不限于数字信号处理器(digital signal processor,DSP)硬件、精简指令集处理器、硬件(例如,数字或模拟)电路系统,包括但不限于(多个)专用集成电路(application specific integrated circuit,ASIC)和/或(多个)现场可编程门阵列(field programmable gate array,FPGA),以及(在适当的情况下)能够执行这些功能的状态机。就计算机实施方式而言,计算机通常被理解为包括一个或多个处理器或一个或多个控制器。当由计算机或处理器或控制器提供时,功能可以由单个专用计算机或处理器或控制器、单个共享计算机或处理器或控制器、或多个单独的计算机或处理器或控制器提供,其中一些可以是共享的或分布式的。此外,术语“处理器”、“控制器”或“控制逻辑”的使用也可以被解释为指代能够执行这样的功能和/或执行软件的其他硬件,诸如上面列举的示例硬件。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框/步骤中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框/步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框/步骤、以及框图和/或流程图中的方框/步骤的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一个计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一、第二等的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且进一步包括没有明确列出的其他要素,或者是进一步包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所附权利要求及其等同物的保护范围为准。

Claims (20)

1.一种维护DDR5内存子系统的维护装置,包括:
命令发送模块,向DDR5内存发送模式寄存器读取命令,所述DDR5内存包括DDR5动态随机存取存储器颗粒;
数据收发模块,接收所述DDR5动态随机存取存储器颗粒内部的模式寄存器的多个数据输入输出通道数据DQ数据,其中所述模式寄存器的多个数据输入输出通道数据DQ数据为所述模式寄存器的模式寄存器读取值;
数据校验模块,对所述多个DQ数据进行校验,以确定所述多个DQ数据是否正确;以及
控制逻辑,控制所述命令发送模块向所述DDR5内存发送所述模式寄存器读取命令以及控制所述数据收发模块接收所述模式寄存器的多个数据输入输出通道数据DQ数据,并响应于确定所述多个DQ数据正确,基于所述多个DQ数据来维护DDR5内存子系统。
2.根据权利要求1所述的维护装置,其中,所述数据校验模块被配置为:
将所述多个DQ数据分组为一个或多个DQ数据组;以及响应于所述一个或多个DQ数据组满足条件,确定所述多个DQ数据正确,
所述条件包括以下中的一个或多个:
DQ数据组内的一个或多个DQ数据的低位部分为全0或全1;
DQ数据组内的DQ数据之间相同或相互反相;和
DQ数据组之间的DQ数据之间相同或相互反相。
3.根据权利要求2所述的维护装置,其中,所述数据校验模块还被配置为通过如下步骤来确定DQ数据组内的DQ数据之间相同或相互反相:
在DQ数据组内的DQ数据之间进行异或操作;以及
响应于所述异或操作的结果为全0或全1,确定DQ数据组内的DQ数据之间相同或相互反相,
其中,所述异或操作包括以下中的一个或多个:
在DQ数据组内的多个DQ数据的所有位之间进行异或操作;
在DQ数据组内的多个DQ数据的高位部分之间进行异或操作;和
在DQ数据组内的多个DQ数据的低位部分之间进行异或操作。
4.根据权利要求2所述的维护装置,其中,所述数据校验模块还被配置为通过如下步骤来确定DQ数据组内的DQ数据之间相同或相互反相:
判断DQ数据组内的每个DQ数据的低位部分是否为全0或全1;
响应于每个DQ数据的低位部分为全0或全1,将每个DQ数据的低位部分与高位部分进行异或操作;以及
响应于所述异或操作的结果彼此相同,确定DQ数据组内的DQ数据之间相同或相互反相。
5.根据权利要求2所述的维护装置,其中,所述数据校验模块还被配置为通过如下步骤来确定DQ数据组之间的DQ数据之间相同或相互反相:
响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。
6.根据权利要求2所述的维护装置,其中,所述数据校验模块被配置为通过如下步骤来将所述多个DQ数据分组为一个或多个DQ数据组:
将所述多个DQ数据中的每m个DQ数据分为一组,其中m为大于或等于2的偶数。
7.根据权利要求1所述的维护装置,还包括:
计数模块,响应于确定所述多个DQ数据不正确,执行错误计数;以及
其中,所述控制逻辑被配置为:
响应于所述错误计数小于阈值n,重复执行所述命令发送模块的所述发送、所述数据收发模块的所述接收和所述数据校验模块的所述校验,其中n为正整数;和
响应于所述错误计数大于或等于阈值n,停止执行所述重复。
8.根据权利要求1所述的维护装置,还包括:
更新模块,
其中,所述控制逻辑被配置为:
当所述模式寄存器读取命令为模式寄存器46、模式寄存器47读取命令时,使得所述更新模块通过如下步骤来维护DDR5内存子系统:基于确定为正确的多个DQ数据来更新DQ数据发送延迟,以保证DDR5内存写数据功能正确;
其中,当所述模式寄存器读取命令是模式寄存器4读取命令时,使得所述更新模块通过如下步骤来维护DDR5内存子系统:基于确定为正确的多个DQ数据来更新内存刷新频率,以维护DDR5内存内数据准确性。
9.一种维护DDR5内存子系统的方法,包括:
向DDR5内存发送模式寄存器读取命令,所述DDR5内存包括DDR5动态随机存取存储器颗粒;
接收所述DDR5动态随机存取存储器颗粒内部的模式寄存器的多个数据输入输出通道数据DQ数据,其中所述模式寄存器的多个数据输入输出通道数据DQ数据为所述模式寄存器的模式寄存器读取值;
对所述多个DQ数据进行校验,以确定所述多个DQ数据是否正确;以及
控制向所述DDR5内存发送所述模式寄存器读取命令以及控制所述数据收发模块接收所述模式寄存器的多个数据输入输出通道数据DQ数据,并响应于确定所述多个DQ数据正确,基于所述多个DQ数据来维护DDR5内存子系统。
10.根据权利要求9所述的方法,其中,对所述多个DQ数据进行校验,以确定所述多个DQ数据是否正确,包括:
将所述多个DQ数据分组为一个或多个DQ数据组;以及
响应于所述一个或多个DQ数据组满足条件,确定所述多个DQ数据正确,
所述条件包括以下中的一个或多个:
DQ数据组内的一个或多个DQ数据的低位部分为全0或全1;
DQ数据组内的DQ数据之间相同或相互反相;和
DQ数据组之间的DQ数据之间相同或相互反相。
11.根据权利要求10所述的方法,其中,确定DQ数据组内的DQ数据之间相同或相互反相,包括:
在DQ数据组内的DQ数据之间进行异或操作;以及
响应于所述异或操作的结果为全0或全1,确定DQ数据组内的DQ数据之间相同或相互反相。
12.根据权利要求11所述的方法,其中,所述异或操作包括以下中的一个或多个:
在DQ数据组内的多个DQ数据的所有位之间进行异或操作;
在DQ数据组内的多个DQ数据的高位部分之间进行异或操作;和
在DQ数据组内的多个DQ数据的低位部分之间进行异或操作。
13.根据权利要求10所述的方法,其中,确定DQ数据组内的DQ数据之间相同或相互反相,包括:
判断DQ数据组内的每个DQ数据的低位部分是否为全0或全1;
响应于每个DQ数据的低位部分为全0或全1,将每个DQ数据的低位部分与高位部分进行异或操作;以及
响应于所述异或操作的结果彼此相同,确定DQ数据组内的DQ数据之间相同或相互反相。
14.根据权利要求10所述的方法,其中,确定DQ数据组之间的DQ数据之间相同或相互反相,包括:
响应于DQ数据组之间的任意两个DQ数据彼此之间相同或相互反相,确定DQ数据组之间的DQ数据之间相同或相互反相。
15.根据权利要求10中所述的方法,其中,将所述多个DQ数据分组为一个或多个DQ数据组包括:
将所述多个DQ数据中的每m个DQ数据分为一组,其中m为大于或等于2的偶数。
16.根据权利要求9所述的方法,还包括:
响应于确定所述多个DQ数据不正确,执行错误计数;以及
响应于所述错误计数小于阈值n,重复执行所述接收和所述校验,其中n为正整数;和
响应于所述错误计数大于或等于阈值n,停止执行所述重复。
17.根据权利要求9所述的方法,其中,当所述模式寄存器读取命令为模式寄存器46、模式寄存器47读取命令时,所述维护DDR5内存子系统包括:基于确定为正确的多个DQ数据来更新DQ数据发送延迟,以保证DDR5内存写数据功能正确。
18.根据权利要求9所述的方法,其中,当所述模式寄存器读取命令是模式寄存器4读取命令时,所述维护DDR5内存子系统包括基于确定为正确的多个DQ数据来更新内存刷新频率,以维护DDR5内存内数据准确性。
19.一种设备,包括:
存储器,存储计算机程序指令;以及
处理器,执行所述存储器存储的计算机程序指令,使得所述处理器执行根据权利要求9-18中任意一项所述的方法。
20.一种存储介质,所述存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现根据权利要求9-18任意一项所述的方法。
CN202011223475.9A 2020-11-05 2020-11-05 维护ddr5内存子系统的维护装置、方法、设备和存储介质 Active CN112349342B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011223475.9A CN112349342B (zh) 2020-11-05 2020-11-05 维护ddr5内存子系统的维护装置、方法、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011223475.9A CN112349342B (zh) 2020-11-05 2020-11-05 维护ddr5内存子系统的维护装置、方法、设备和存储介质

Publications (2)

Publication Number Publication Date
CN112349342A CN112349342A (zh) 2021-02-09
CN112349342B true CN112349342B (zh) 2024-03-22

Family

ID=74428450

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011223475.9A Active CN112349342B (zh) 2020-11-05 2020-11-05 维护ddr5内存子系统的维护装置、方法、设备和存储介质

Country Status (1)

Country Link
CN (1) CN112349342B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112965866B (zh) * 2021-03-04 2023-01-10 山东英信计算机技术有限公司 一种自动筛选内存条耐温范围的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107924349A (zh) * 2015-08-28 2018-04-17 英特尔公司 存储器装置管芯上错误校验和纠正代码
CN109308228A (zh) * 2017-07-27 2019-02-05 三星电子株式会社 存储器系统和存储器模块的操作方法以及存储器控制器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107924349A (zh) * 2015-08-28 2018-04-17 英特尔公司 存储器装置管芯上错误校验和纠正代码
CN107924698A (zh) * 2015-08-28 2018-04-17 英特尔公司 存储器设备校验位读取模式
CN109308228A (zh) * 2017-07-27 2019-02-05 三星电子株式会社 存储器系统和存储器模块的操作方法以及存储器控制器

Also Published As

Publication number Publication date
CN112349342A (zh) 2021-02-09

Similar Documents

Publication Publication Date Title
TWI588835B (zh) 記憶體裝置中錯誤管理之方法及系統
US20220091921A1 (en) Data integrity for persistent memory systems and the like
US10621121B2 (en) Measurement and optimization of command signal timing margins
EP3341941A1 (en) Memory device error check and scrub mode and error transparency
NL2029034B1 (en) Adaptive internal memory error scrubbing and error handling
US10908990B2 (en) Shared address counters for multiple modes of operation in a memory device
US10572341B2 (en) Semiconductor devices
US11003240B2 (en) Systems and methods for frequency mode detection and implementation
JP5947398B2 (ja) 統合データマスキング、データポイズニング及びデータバス反転シグナリング
KR20170054182A (ko) 반도체 장치
CN112612596B (zh) 命令调度方法、装置、设备和存储介质
CN114121075B (zh) 用于存储器刷新的系统及方法
CN112349342B (zh) 维护ddr5内存子系统的维护装置、方法、设备和存储介质
CN107924369B (zh) 存储器装置
US20210011803A1 (en) Systems and methods for performing a write pattern in memory devices
US11276451B2 (en) Error correction methods and semiconductor devices and semiconductor systems using the same
CN100595842C (zh) 存储器接口装置与应用于其上的存储器数据存取方法
JP2019083082A (ja) フラッシュメモリモジュール及びフラッシュメモリ
US20140136910A1 (en) Data communication apparatus and control method
US20200125445A1 (en) Electronic devices
KR20220021695A (ko) 에러정정동작을 수행하기 위한 전자시스템
CN115762621A (zh) 不可校正的存储器错误预测
CN117648218A (zh) 纠错码电路和包括纠错码电路的半导体装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant