CN118113500A - 一种内存映射方法及相关设备 - Google Patents

一种内存映射方法及相关设备 Download PDF

Info

Publication number
CN118113500A
CN118113500A CN202211691518.5A CN202211691518A CN118113500A CN 118113500 A CN118113500 A CN 118113500A CN 202211691518 A CN202211691518 A CN 202211691518A CN 118113500 A CN118113500 A CN 118113500A
Authority
CN
China
Prior art keywords
memory
address
circuit
mapping table
failure
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.)
Pending
Application number
CN202211691518.5A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to PCT/CN2023/118425 priority Critical patent/WO2024114039A1/zh
Publication of CN118113500A publication Critical patent/CN118113500A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种内存映射方法及相关设备,该内存映射方法包括:获取第一内存的内存失效行地址,使匹配查找电路中获取地址映射表,地址映射表包括内存失效行地址和与内存失效行地址对应的内存重映射行地址的映射关系,当第一内存的访问目标为内存失效行地址时,通过地址映射表获得内存失效行地址所映射的内存重映射行地址,其中,内存重映射行地址指示的内存区域位于第一内存的预留空间,因匹配查找电路可以集成在第一内存的内存访问路径中的任何地址命令输出电路或驱动电路,用户可以自定义集成位置和用于替换的冗余资源数量,以基于该地址映射表实现多次可逆替换,从而大幅降低内存故障率,提高内存可靠性。

Description

一种内存映射方法及相关设备
本申请要求于2022年11月30日提交中国国家知识局、申请号为202211521408.4、发明名称为“一种DRAM多次行替换的方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请实施例涉及计算机领域,尤其涉及一种内存映射方法及相关设备。
背景技术
随着高性能计算、大数据分析和内存数据库等业务的发展,应用对内存容量和带宽的需求越来越强烈。
在内存容量密度、带宽性能需求的持续驱动下,内存制造工艺不断微缩、接口速率不断提升,但与此同时,随着制程升级,内存发生错误的概率和内存失效率逐步攀升,内存可靠性面临巨大风险。为此,需要对内存错误进行检测,对检测得到的内存的失效行(row)进行替换,例如当前的内存颗粒厂商会在内存颗粒中设置替换功能。
但是在内存颗粒中设置替换功能是将用于替换的冗余空间预先设置好的,无法变更,这会使得内存替换次数较为局限并伴随着一定业务性能损失,无法满足当前内存的故障需求。
发明内容
本申请实施例提供一种内存映射方法,用于灵活定义地址映射表的集成位置以及灵活定义用于替换的冗余资源数量,以基于该地址映射表实现内存失效行的多次可逆替换,避免业务性能损失,并大幅降低内存故障率,提高内存可靠性。本申请实施例还提供了相应的内存映射电路、计算设备、计算机可读存储介质、芯片***及计算机程序产品等。
本申请第一方面提供一种内存映射方法,该方法包括:获取第一内存(第一内存例如是一个内存条,具体而言,是Rambus直插内存模块(rambus in-line memory module,RIMM)内存条、单列直插内存模块(single in-line memory module,SIMM)内存条、或者双列直插内存模块(dual in-line memory module,DIMM)内存条的一种)的内存失效行地址;匹配查找电路获取地址映射表,地址映射表包括内存失效行地址和与内存失效行地址对应的内存重映射行地址的映射关系,当第一内存的访问目标为内存失效行地址时,通过地址映射表获得内存失效行地址所映射的内存重映射行地址,其中,内存重映射行地址指示的内存区域位于第一内存的预留空间,匹配查找电路集成在第一内存的内存访问路径中的地址命令输出电路或驱动电路。
本申请中,该内存映射方法以计算设备执行为例,为了执行内存映射,首先需要使匹配查找电路获取地址映射表,其中,匹配查找电路集成在第一内存的内存访问路径中的地址命令输出电路或驱动电路,具体的,匹配查找电路集成在内存控制器的地址映射模块到内存芯片之间的任何地址命令输出电路或驱动电路,第一内存的内存访问路径可以理解为计算设备的处理器中的内存控制器到访问第一内存中的内存芯片的路径。
本申请中的内存重映射行地址指示的内存区域位于第一内存的预留空间,其中第一内存的预留空间可以来自第一内存中的用户内存芯片/颗粒的容量,即该预留空间用户可见,需要额外通过软件方法预留,此外,该预留空间也可以来自内存厂商在第一内存的标称容量之外设计的冗余空间,该预留空间在内存控制器的寻址范围之外,用户不可见。
本申请中的第一内存装载在计算设备中,该计算设备可以为任意使用内存的计算机设备、服务器或存储设备。
本申请中,该内存映射方法可以在第一内存的生产阶段、计算设备的启动阶段和计算设备的运行阶段执行,生成该地址映射表后,就可以基于该地址映射表实现内存地址的替换。
为了解决内存行地址失效的问题,一种做法是,内存颗粒厂商会在内存颗粒中设置地址替换功能,即:在每个的内存颗粒中设置映射表,当内存被访问的地址为失效的地址时,基于映射表将该内存颗粒中失效的地址替换为新的内存地址。但是,由于颗粒由内存厂家进行封装,因此在内存颗粒中设置地址替换功能只能由内存厂商预先设置好,内存的用户无法用自行变更,这会使得内存替换次数较为局限;并且,为每个内存颗粒单独设置替换功能,带来了明显的内存性能损失。
本申请中,因匹配查找电路集成在第一内存的内存访问路径中的地址命令输出电路或驱动电路,而这些电路(例如将匹配查找电路设置在内存控制器或寄存时钟驱动器中)均在颗粒之外,并且是用户可以控制的电路。计算设备中的处理芯片(例如CPU、GPU、NPU)对内存进行访问时,访问请求主板的内存接口到达内存;接着,访问请求会址经过匹配查找电路,由匹配查找电路执行失效地址的替换;最后,基于被替换后的访问地址,访问请求会进入各个内存颗粒,完成数据的访问。
可以看出,基于本申请所提供的方案:每个匹配查到电路会与多个颗粒连接,因此也就是说仅在一个匹配查找电路中设置地址映射表就可以为多个作用对象(颗粒)提供服务,避免在每个颗粒中都重复设置替换功能。此外,由于匹配查找电路是用户可以编辑的电路,因此用户也可以自定义匹配查找电路所能存储地址映射表的大小,地址映射表越大,便可以替换更多的内存地址失效行,还允许将内存地址失效行替换多次。进一步的,由于匹配查找电路能够被用户自行定义,因此本申请可以扩大替换的粒度,也就是把多个颗粒作为一个替换的整体,当检测到单个颗粒出现失效行,对匹配查找电路所管理的多个颗粒(例如位于同一个rank的多个颗粒)使用相同的内存地址同时发出替换信号,这会引起多个颗粒的失效行替换。这样做的好处可以是可以对多个颗粒共同使用映射表中的一个记录,而不是每个颗粒分别对应一个映射表中的记录,从而减少了映射表的数据量,节约了映射表所需占用的存储空间。更进一步的,由于本申请内存重映射行地址指示的内存区域位于所述第一内存的预留空间,也就是说预留空间是用户可见的,并且能够被用户所管理;因此用户可以需要自行决定预留空间的大小,例如在内存行故障的发生频率较低时,预留较小的空间;随着内存的老化,可靠性逐渐降低,预留较大的空间,因此本申请方案可以提高内存利用率。
该第一方面,通过获取第一内存的内存失效行地址,使匹配查找电路中获取地址映射表,地址映射表包括内存失效行地址和与内存失效行地址对应的内存重映射行地址的映射关系,当第一内存的访问目标为内存失效行地址时,通过地址映射表获得内存失效行地址所映射的内存重映射行地址,其中,内存重映射行地址指示的内存区域位于第一内存的预留空间,因匹配查找电路可以集成在第一内存的内存访问路径中的任何地址命令输出电路或驱动电路,用户可以自定义集成位置和用于替换的冗余资源数量,以基于该地址映射表实现多次可逆替换,从而大幅降低内存故障率,提高内存可靠性。
在第一方面的一种可能的实现方式中,该方法还包括:获取来自第一内存外部的内存访问地址;使用获取的内存访问地址,基于地址映射表对内存访问地址进行匹配;当在内存失效行地址中匹配到内存访问地址时,将对内存访问地址的访问转换为对内存重映射行地址进行访问。
该种可能的实现方式中,匹配查找电路获取地址映射表后,就可以基于地址映射表对内存访问地址进行匹配,当内存访问地址在地址映射表中匹配为内存失效行地址时,将内存失效行地址重映射为与内存失效行地址对应的内存重映射行地址,最后对内存重映射行地址进行访问,完成了失效内存地址的替换,提升了方案的可实现性。
在第一方面的一种可能的实现方式中,第一内存包括多个内存芯片,匹配查找电路把多个内存芯片作为一个行地址转换整体,上述步骤:通过地址映射表获得内存失效行地址所映射的内存重映射行地址的步骤,具体包括:当单个内存芯片出现失效行时,通过地址映射表将多个内存芯片中的行地址转换为内存重映射行地址,其中,被转换的行包括失效行。
该种可能的实现方式中,第一内存包括一个或多个内存通道(channel),一个内存通道中可以***一个或多个双列直插内存模块(dual in-line memory module,DIMM),一个DIMM中可以用由一个或多个内存列(rank)构成,一个rank中包括多个内存芯片(内存颗粒,chip),匹配查找电路把多个内存芯片作为一个行地址转换整体,当单个内存芯片出现失效行时,匹配查找电路用于通过地址映射表将多个内存芯片中的行地址转换为内存重映射行地址,其中,被转换的行包括失效行,即地址映射表的作用对象为每个chip,例如在地址映射表中匹配到了地址A,匹配查找电路会对所有chip中的地址A都进行替换,从而减少了映射表的数据量,节约了映射表所需占用的存储空间。
在第一方面的一种可能的实现方式中,多个内存芯片中的每个内存芯片包括多个内存体memory bank,第一内存的预留空间包括多个内存体中的每个内存体的至少一行存储单元。
该种可能的实现方式中,一个chip中包括多个内存体(bank)或内存体组(bankgroup)bank为由多个存储单元组成的阵列,bank中的一行存储单元可以用行(row)表示,而第一内存的预留空间包括每个bank的至少一行存储单元,即在每个bank中都有至少一行存储单元作为预留空间,使得用户可以自定义更大的预留空间,可以基于该地址映射表实现多次可逆替换,在内存行故障的发生频率较低时,预留较小的空间;随着内存的老化,可靠性逐渐降低,预留较大的空间,从而提高内存利用率。
在第一方面的一种可能的实现方式中,地址映射表存储在匹配查找电路中的易失性存储器,该方法还包括:在第一内存停止工作之前,将地址映射表从匹配查找电路写入第一存储器,第一存储器为位于计算设备中的非易失性存储器;在第一内存开始工作后,将第一存储器中的地址映射表加载至匹配查找电路。
该种可能的实现方式中,地址映射表存储在匹配查找电路中的易失性存储器,因此需要将地址映射表写入非易失性存储器的第一存储器以持久化保存,例如在计算设备的运行阶段中,在第一内存停止工作之前,将地址映射表从匹配查找电路写入第一存储器,在第一内存开始工作后,将第一存储器中的地址映射表加载至匹配查找电路,避免了地址映射表丢失的问题。
在第一方面的一种可能的实现方式中,该方法还包括:在装载有第一内存的计算设备的启动过程中,从第一存储器读取地址映射表,并通过计算设备的内存自检更新所述地址映射表。
该种可能的实现方式中,可以在计算设备的启动过程中读取持久化存储的地址映射表,并基于计算设备的内存自检功能,对该地址映射表进行更新,以及时发现内存中的失效行,并及时进行替换,提升了内存的可靠性。
在第一方面的一种可能的实现方式中,匹配查找电路中的易失性存储器内容寻址存储器、三态内容寻址存储器或全相连缓存。
该种可能的实现方式中,匹配查找电路中的易失性存储器具体可以为内容寻址存储器、三态内容寻址存储器或全相连缓存中的任意一种,提升了方案的可实现性。
在第一方面的一种可能的实现方式中,地址映射表存储在匹配查找电路中的非易失性存储器。
该种可能的实现方式中,地址映射表存储在匹配查找电路中的非易失性存储器,使匹配查找电路中的地址映射表可以持久化保存,避免了地址映射表丢失的问题。
在第一方面的一种可能的实现方式中,上述步骤:匹配查找电路获取地址映射表包括:在装载有第一内存的计算设备启动时,生成地址映射表;在计算设备使用第一内存之前,将地址映射表同步至匹配查找电路。
该种可能的实现方式中,在计算设备的启动阶段,可以通过自检生成地址映射表,并在计算设备使用第一内存之前,将地址映射表同步至匹配查找电路,避免计算设备使用第一内存后再同步表项存在的内存数据搬移的问题。
在第一方面的一种可能的实现方式中,上述步骤:获取第一内存的内存失效行地址包括:获取第一内存的第一内存故障日志;从第一内存故障日志中提取出第一内存故障特征;基于第一内存故障特征进行预测,得到第一内存的内存失效行地址。
该种可能的实现方式中,在计算设备的运行阶段,通过汇聚带外或带内内存错误信息供离线训练节点对内存故障预测模型进行参数训练,训练所得算法、模型即可用于在线推理实时预测内存失效演变趋势,并适时更新地址映射表,减少甚至避免不可纠正错误发生。
在第一方面的一种可能的实现方式中,该方法还包括:对内存失效行地址进行访问测试,以确定内存失效行地址是否为真实失效的行地址;当内存失效行不为真实失效的行地址,将内存失效行地址和与内存失效行地址对应的内存重映射行地址从地址映射表中释放。
该种可能的实现方式中,在计算设备的运行阶段中的闲置状态下,可以通过内存故障预测模型重新预测内存失效行地址,以判断之前预测的内存失效行地址是否为真实失效的行地址,当内存失效行不为真实失效的行地址,将内存失效行地址和与内存失效行地址对应的内存重映射行地址从地址映射表中释放,从而节省匹配查找电路和预留空间中的冗余空间,使得***具备可逆的隔离、释放能力,降低预测准确度要求并提高故障预测覆盖率。
在第一方面的一种可能的实现方式中,该方法还包括:发送第一命令,第一命令用于使能停止获取第一内存的内存失效行地址。
该种可能的实现方式中,在计算设备的启动阶段,可以设置一个使能开关,发送第二命令时,打开使能开关,启动自检,使能获取第一内存的内存失效行地址,一旦发现内存失效及时予以替换。发送第一命令时,关闭使能开关,关闭自检,停止获取第一内存的内存失效行地址,以达到快速启动计算设备的目的。
在第一方面的一种可能的实现方式中,匹配查找电路集成在地址命令输出电路或驱动电路中的内存控制器或寄存时钟驱动器。
该种可能的实现方式中,匹配查找电路具体集成在处理器中的内存控制器或rank中的寄存时钟驱动器,提升了方案的可实现性。
本申请第二方面,提供了一种内存映射电路,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该内存映射电路包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的电路、模块或单元,如:获取电路、匹配查找电路、读写电路、生成电路、释放电路和发送电路。
本申请第三方面提供一种计算设备,该计算设备包括主板、处理器、内存和上述第二方面或第二方面的任意可能的实现方式中的内存映射电路;
其中,主板用于进行内存失效行检测,并把内存失效行地址发送给内存映射电路,内存映射电路集成在处理器或内存中,内存作为第一内存执行内存失效行地址映射。
本申请第四方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
本申请第五方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
本申请第六方面提供了一种芯片***,该芯片***包括至少一个处理器和接口,该接口用于接收数据和/或信号,至少一个处理器用于支持计算机设备实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片***还可以包括存储器,存储器,用于保存计算机设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例中,通过获取第一内存的内存失效行地址,使匹配查找电路中获取地址映射表,地址映射表包括内存失效行地址和与内存失效行地址对应的内存重映射行地址的映射关系,当第一内存的访问目标为内存失效行地址时,通过地址映射表获得内存失效行地址所映射的内存重映射行地址,其中,内存重映射行地址指示的内存区域位于第一内存的预留空间,因匹配查找电路可以集成在第一内存的内存访问路径中的任何地址命令输出电路或驱动电路,用户可以自定义集成位置和用于替换的冗余资源数量,以基于该地址映射表实现多次可逆替换,从而大幅降低内存故障率,提高内存可靠性。
附图说明
图1为计算机***的架构示意图;
图2为本申请实施例提供的内存映射方法的一个实施例示意图;
图3为本申请实施例提供的第一内存生产阶段的流程示意图;
图4为本申请实施例提供的计算设备启动阶段的流程示意图;
图5为本申请实施例提供的计算设备运行阶段的流程示意图;
图6为本申请实施例提供的内存映射方法的应用架构示意图;
图7为本申请实施例提供的双向查找表的一个实施例示意图;
图8为本申请实施例提供的地址映射表设置在内存控制器的架构示意图;
图9为本申请实施例提供的地址映射表设置在寄存时钟驱动器的架构示意图;
图10为本申请实施例提供的内存映射电路的一个实施例示意图;
图11为本申请实施例提供的计算设备的一个实施例示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
本申请实施例提供一种内存映射方法,用于灵活定义地址映射表的集成位置以及灵活定义用于替换的冗余资源的预留量,并基于该地址映射表实现内存失效行的多次可逆替换,避免业务性能损失,并大幅降低内存故障率,提高内存可靠性。本申请实施例还提供了相应的内存映射电路、计算设备、计算机可读存储介质、芯片***及计算机程序产品等。以下分别进行详细说明。
下面对本申请实施例涉及的应用场景进行举例说明。
如图1所示,典型的冯诺依曼计算机***包含五大部件:运算、控制、存储、输入和输出,其中存储包括主存(内存)和辅存(固态硬盘、机械硬盘等)。作为冯诺依曼体系结构中不可或缺的一部分,内存主要充当工作存储器(working memory),存储计算机运行所需要的指令和数据。随着高性能计算、大数据分析和内存数据库等业务的发展,应用对内存容量和带宽的需求越来越强烈。在内存容量密度、带宽性能需求的持续驱动下,内存制造工艺不断微缩、接口速率不断提升,与此同时,内存失效率逐步攀升,内存可靠性面临巨大风险,例如:
(1)容值下降:随着制程微缩,电容容值下降(25nm制程电容容值为18fF,17nm制程下电容容值降到8fF左右),电容所能存储的电荷量减少,从而数据保持力(retention)逐步下降;
(2)漏电增加:因电容绝缘材料减薄、存取(access)晶体管的亚阈值效应导致漏电增加,使存储单元数据保持力下降;
(3)耦合影响增大:由于尺寸微缩,电容与电容之间、位线(bit line)与位线之间、字线(word line)与字线之间相互靠近,耦合增加,导致相邻空间相互影响产生数据跳变几率增加;
(4)工艺缺陷导致的行、列错误增加:随尺寸微缩和容量密度增大,对加工工艺精度要求不断提升,加工缺陷密度不断增加,表现为动态随机存取存储器(dynamic randomaccess memory,DRAM)早期失效增加,特别是行/列为特征故障域的失效显著增加;
(5)传输率提升导致接口出错概率增加:双倍速率同步动态随机存储器(doubledata rate synchronous dynamic random-access memory,DDR SDRAM),简称DDR的接口速率每代次都在不断提升,由于是采用单端信号的并行总线,加上内存条插座等影响,接口上发生数据跳变的概率也在增加。
基于对内存生产失效和现网故障的数据统计,可以发现,随代次演进,越来越多的内存失效行数超过内存修复能力上限,生产拦截率逐代增加、现网失效率不断增加,但内存失效区域集中在有限行以内。当前的内存颗粒厂商会在内存颗粒中设置替换功能。但是在内存颗粒中设置替换功能是将用于替换的冗余空间预先设置好的,无法变更,这会使得内存替换次数较为局限并伴随着一定业务性能损失,无法满足当前内存的故障需求。
基于此,本申请实施例提供一种内存映射方法,用于灵活定义地址映射表的集成位置,并灵活定义用于替换的冗余资源的预留量,并基于该地址映射表实现内存失效行的多次可逆替换,避免业务性能损失,并大幅降低内存故障率,提高内存可靠性。
下面结合上述应用场景对本申请实施例提供的进行说明。
如图2所示,本申请实施例提供的内存映射方法的一实施例包括:
200、基板管理控制器(baseboard management controller,BMC)对计算设备的多个内存进行失效行检测,当检测到第一内存中有失效行的时候,把失效行地址提供给基本输入输出***(basic input output system,BIOS)。
本申请实施例中,由BIOS指示第一内存的内存映射电路对失效行进行替换。内存映射电路包括获取电路和匹配查找电路,匹配查找电路集成在第一内存的内存访问路径中的地址命令输出电路中,或集成在第一内存的驱动电路中。
其中,BMC和BIOS均位于计算设备的主板,主板提供内存插槽用于连接包括第一内存在内的多个内存。这里的主板包括通常意义的主板,也包括主板与背板的组合。
需要说明的是,当第一内存还在生产阶段时,可以通过其他测试设备对第一内存进行失效行检测,在计算设备的启动阶段,可以通过计算设备的BIOS进行失效行检测,本申请实施例对失效行检测的执行主体不作限制。
201、第一内存的获取电路从主板获取第一内存的内存失效行地址,并把获取的失效行地址提供给第一内存的匹配查找电路。
其中,第一内存是一个内存条,每个内存条包括多个内存颗粒(内存芯片,chip),每个内存颗粒包括多个内存体(bank)。
202、第一内存的匹配查找电路获取地址映射表。
本申请实施例中,计算设备首先需要使匹配查找电路获取地址映射表,其中,匹配查找电路集成在第一内存中,其具***置在内存访问路径上,例如的地址命令输出电路或驱动电路。具体的,匹配查找电路集成在内存控制器的地址映射(address mapping)模块到DRAM颗粒(内存芯片)之间的任何地址命令输出电路或驱动电路,第一内存的内存访问路径可以理解为计算设备的处理器访问内存的路径,例如中央处理器(central processingunit,CPU)、数据处理器(data processing unit,DPU)、图形处理器(graphics processingunit,GPU)、张量处理器(tensor processing unit,TPU)和嵌入式神经网络处理器(neural-network processing unit,NPU)中的内存控制器访问第一内存中的DRAM颗粒的路径。该内存访问路径中的地址命令输出电路或驱动电路包括计算设备的处理器中的内存控制器(DDR controller,DDRC),还包括第一内存中的寄存时钟驱动器(registeringclock driver,RCD),本申请实施例以匹配查找电路集成在RCD中进行举例说明。
进一步的,第一内存通过计算设备主板提供的内存插槽装载在计算设备中,该计算设备可以为任意使用内存的计算机设备、服务器或存储设备,匹配查找电路中可以包括易失性存储器,例如内容寻址存储器(content addressable memory,CAM)、三态内容寻址存储器(ternary content addressable memory,TCAM)和全相连缓存,即全相连静态随机存取存储器(static random-access memory,SRAM)缓存,匹配查找电路也可以包括非易失性存储器(non volatile memory,NVM),例如一次性可编程存储器(eFuse)、可编程只读存储器(programmable read-only memory,PROM)、带电可擦可编程只读存储器(electrically erasable programmable read only memory,E2PROM)和储存级存储器(storage class memory,SCM)。本申请实施例以匹配查找电路包括TCAM进行举例说明,即地址映射表存储在TCAM中,该TCAM集成在第一内存的RCD中。
进一步的,地址映射表包括内存失效行地址和与内存失效行地址对应的内存重映射行地址的映射关系,地址映射表用于当第一内存的访问目标为内存失效行地址时,将内存失效行地址重映射为内存重映射行地址,内存重映射行地址指示的内存区域位于第一内存的预留空间,其中第一内存的预留空间可以来自第一内存中的用户DRAM颗粒容量,即该预留空间用户可见,需要额外通过软件方法预留,此外,该预留空间也可以来自内存厂商在第一内存的标称容量之外设计的冗余空间,该预留空间在内存控制器的寻址范围之外,用户不可见,本申请实施例以预留空间来自第一内存中的用户DRAM容量进行举例说明。
进一步的,第一内存具体为高速存储器,例如第一内存为DDR、低功耗DDR(lowpower DDR,LPDDR)、图形DDR(graphics DDR,GDDR)、高带宽存储器(high bandwidthmemory,HBM)或SCM等等,本申请实施例以第一内存为DDR进行举例说明,其中第一内存包括一个或多个内存通道(channel),一个内存通道中可以***一个或多个双列直插内存模块(dual in-line memory module,DIMM),一个DIMM中可以用由一个或多个内存列(rank)构成,一个rank中包括多个内存芯片(chip),内存芯片也可以称为内存颗粒,一个chip中包括多个内存体(memory bank,bank)或内存体组(bank group),bank为由多个存储单元组成的阵列,bank中的一行存储单元可以用行(row)表示。当内存的介质是DRMA时,内存芯片也称为DRAM颗粒。
进一步的,匹配查找电路把多个内存芯片作为一个行地址转换整体,当单个内存芯片出现失效行时,匹配查找电路通过地址映射表将多个内存芯片中的行地址转换为内存重映射行地址,其中,被转换的行包括失效行,即地址映射表的作用对象为每个chip,匹配查找电路会对所有chip中的内存失效行地址都进行替换。且第一内存的预留空间包括多个内存体中的每个内存体的至少一行(row),即在每个bank中都有至少一行存储单元作为预留空间,使得用户可以自定义更大的预留空间,可以基于该地址映射表实现多次可逆替换。
本申请实施例中,因匹配查找电路集成在第一内存的内存访问路径中的地址命令输出电路或驱动电路,则用户可以在内存访问路径中的地址命令输出电路或驱动电路中自定义匹配查找电路的大小和集成位置,即自定义地址映射表的大小和集成位置,而自定义地址映射表越大,内存重映射行地址也越多,作为冗余资源的预留空间也越大,上述大小和位置都是用户可以根据需求和实际情况灵活自定义的。
本申请实施例提供的内存映射方法中,步骤201和步骤202可以在多个场景下独立指向执行,下面分别进行说明。也就是说,在内存厂商生产内存的阶段,计算设备启动的阶段,以及计算设备运行业务的阶段,各自均可以进行内存行的映射与替换,并拥有相应的技术效果。可以选择在三个场景中的一个或者多个进行内存行的映射与替换。
一、第一内存生产阶段
如图3所示,在第一内存的生产阶段,可以通过测试设备(此时该测试设备作为计算设备,为本申请方法实施例的执行主体)获取第一内存的内存失效行地址,具体的,进行颗粒筛选程序测试(smart memory test,SMT),基于筛选老化算法提前激发早期失效,一旦检测到内存错误(error),则记录下对应的内存失效行地址,为内存失效行地址分配内存重映射行地址,并按预定格式在匹配查找电路中生成地址映射表,提高内存生产直通率。
进一步的,因TCAM为易失性存储器,还可以在第一内存中增加NVM,例如eFuse,并将此时生成的地址映射表写入到RCD中的eFuse。第一内存生产时生成的地址映射表作为该第一内存的特有信息通过内置的eFuse实现永久跟随,通常eFuse编程接口现网对用户不开放,以防止用户误操作,因eFuse用于持久化保存第一内存生产失效时确定的地址映射表,还需要将地址映射表持久化到其他非易失性介质。
具体的,第一内存装载到计算设备后,还需要将eFuse中的地址映射表同步至计算设备的第一存储器中,第一存储器为NVM,第一存储器可以集成于RCD片内、模组印制电路板(printed circuit board,PCB)和***主板等,计算设备的处理器需要检测eFuse中的地址映射表是否同步到计算设备的NVM,同步成功之后计算设备才可以使用该第一内存,此时第一内存使用就绪。
内存生产阶段所得到的地址映射表,可以存储在内存条的非易失性存储介质中,当内存被用户使用时。用户可以从非易失性存储介质中得到地址映射表,并在计算设备启动阶段对内存的自检,把新发现的失效行添加到地址映射表中。
二、计算设备启动阶段
如图4所示,用户把内存安装在计算设备中,在计算设备(装载该第一内存)中可以设置一个使能开关,发送第二命令时,打开使能开关,启动自检,使能获取第一内存的内存失效行地址,一旦发现内存失效及时予以替换。发送第一命令时,关闭使能开关,关闭自检,停止获取第一内存的内存失效行地址,以达到快速启动计算设备的目的。
在计算设备启动时,发送第一命令后,具体在内存初始化阶段(pre extensiblefirmware interface initialization,PEI),计算设备的BIOS进行全空间内存检测,例如进行存储器内建自测试(memory build-in-self test,Mbist),一旦检测到内存错误则需要记录下对应的内存失效行地址,并为内存失效行地址在预留空间中分配内存重映射行地址,按预定格式在匹配查找电路中生成地址映射表,并将TCAM中地址映射表同步到计算设备中的***持久化NVM备份,例如板载串行外设接口(serial peripheral interface,SPI)flash。
进一步的,在装载有第一内存的计算设备的启动过程中,从第一存储器读取地址映射表,并通过计算设备的内存自检更新地址映射表。具体的,在计算设备启动时的PEI阶段,以第一内存的产品序列号(serial number,SN)为作为唯一识别标记,读取计算设备的第一存储器NVM中的地址映射表、第一内存生产阶段中eFuse记录的地址映射表和计算设备启动时PEI阶段内存自检生成的地址映射表,取其信息并集。上述三份记录的地址映射表中,针对不同行的表项直接合并(Rd-Merge),如果某一内存失效行地址被替换过多次,即某一行的替换信息同时存在于两个或以上的记录位置,则取高置信优先级的地址映射表进行覆盖,其中置信优先级为NVM>eFuse>PEI自检,例如内存失效行地址为A1,NVM中的地址映射表记录中对应的内存重映射行地址为B1,eFuse记录的地址映射表对应的内存重映射行地址为B2,PEI阶段内存自检记录的地址映射表对应的内存重映射行地址为B3,则最后确定与内存失效行地址A1对应的内存重映射行地址为B1,将其同步至匹配查找电路TCAM,因此时计算设备还未使用第一内存,避免了内存数据搬移问题,最后在DXE阶段再将合并后的地址映射表写入第一存储器NVM。
可选的,对于预留空间来自第一内存中的用户DRAM容量的情况,在计算设备启动时BIOS的地址映射(memory map)阶段,可以通过内存描述符定义***内存映射关系和内存段属性,然后通过高级配置与电源接口(advanced configuration and power interface,ACPI)接口传递给计算设备的操作***(operating system,OS)。可以在memory map阶段将前述预留空间以reserve属性上报,需要说明的是,由于memory map为启动服务,在计算设备运行时已退出,且无法唤醒,所以无法在运行时对热***的内存进行预留空间的设置,而当预留空间来自内存厂商在第一内存的标称容量之外设计的冗余空间时,则无需再计算设备启动时执行该步骤。
三、计算设备运行阶段
如图5所示,在计算设备运行时,通过获取第一内存的第一内存故障日志,从第一内存故障日志中提取出第一内存故障特征,并基于第一内存故障特征进行预测,来得到第一内存的内存失效行地址。
具体的,如图6所示,计算设备包括应用(APP)、OS、BIOS和CPU,CPU中设置有内存控制器,计算设备通过OS中的单板管理代理收集的带内信息(管理控制信息与业务承载信息通过同一个逻辑通道传送),即通过数据通道收集的信息,和计算设备中设置的基板管理控制器BMC收集的带外信息(通过不同的逻辑通道传送),即数据通道额外增加的通道收集的信息,作为第一内存故障日志在BMC实时汇聚,形成联合诊断模块(federal diagnosemodule,FDM)记录(log),FDM log记录有第一内存中某一row的比特跳变信息,部署于BMC的内存故障预测引擎,可以利用FDM log提取的第一内存故障特征(内存即时故障特征)进行故障预测,预测第一内存中的哪些row会失效(可以理解为风险行),最终得到第一内存的内存失效行地址。
应理解,在计算设备的运行态生成的地址映射表可动态替换和释放,非永久性,因此可以降低对故障预测的精准度要求,从而提高覆盖度。
若内存故障预测引擎预测到某行失效风险较高,BMC记录下风险行信息。在可靠性、可用性和可服务性(reliability、availability、serviceability,RAS)中断处理时,BIOS通过智能平台管理接口(intelligent platform management interface,IPMI)接口查询BMC是否有风险行预警,若有,BIOS启动行替换流程,为内存失效行地址在预留空间中分配内存重映射行地址,生成新的地址映射表,此外,在计算设备的使用状态下进行地址映射表的行替换,除了需要修改地址映射表中的映射关系,还需要进行数据拷贝。
其中,故障预测上报的是介质row地址,需要反算出BIOS可以操作的物理地址。因所有DRAM容量之和与BIOS上报的DRAM空间大小相等,所以物理地址与介质地址之间是一对一的映射关系,必定存在一个可逆的反向映射,实现从介质地址到物理地址的转换。因而可以算出该行首地址对应的物理地址作为拷贝起始地址,同时通过交织的通道(way)数算出该行所涉及的连续地址范围大小。数据拷贝可以在在BIOS下利用内存拷贝函数(memcpy)直接操作物理地址实现,其中内部以缓存块(cache line,CL)粒度进行读取、纠错和写入,以前面反算的物理地址作为拷贝起始地址,连续地址范围作为拷贝长度,将内存失效行地址对应的数据直接拷贝到分配的内存重映射行地址。拷贝完成后,按照预定义格式与第一存储器中NVM记录的地址映射表合并生成新的地址映射表,然后通过I3C总线将该地址映射表覆盖写到TCAM,并覆盖写入***NVM。
需要说明的是,在完成上述操作后,计算设备运行时发现某内存失效行地址被替换过后依然报错,表明该行地址所重映射到的内存重映射行地址已失效,需要进一步更新内存重映射行地址,将其重映射到另外一个冗余行。地址映射表中的映射关系修改成功后,由于底层映射已更改,后续对内存失效行地址的访问将被重定向内存重映射行地址。
本申请实施例通过BMC汇聚带外或带内内存错误信息供离线训练节点对内存故障预测模型进行参数训练,训练所得算法、模型即可用于在线推理实时预测内存失效演变趋势,并适时通知BIOS生成新的地址映射表,减少甚至避免不可纠正错误(uncorrectableerror,UCE)发生。
一并参照图6,可见计算设备通过内存控制器访问第一内存中的多个DIMM,在DIMM中,包括多个内存芯片(例如一个rank中的chip0-chip10)、RCD和串行检测集线器(serialpresence detect hub,SPD Hub),每个内存芯片中包括多个内存体(例如bank0),RCD中设置有TCAM和eFuse,第一内存开始工作/上电时,TCAM从eFuse中加载地址映射表,第一内存停止工作/下电时,TCAM将地址映射表同步至eFuse或计算设备的***NVM以实现持久化存储,内存访问地址从内存控制器通过DIMM的金手指传输至RCD中的TCAM进行匹配,将内存体中的内存失效行地址重映射为内存重映射行地址后再进行访问,例如将内存失效行地址重映射为位于同个bank中的内存重映射行地址。
进一步的,在第一内存停止工作之前,即计算设备停止工作之前,需要将地址映射表从匹配查找电路写入第一存储器,在第一内存开始工作后,即计算设备开始工作之后,再将第一存储器中的地址映射表加载至匹配查找电路,从而实现地址映射表的持久化存储和更新。
进一步的,在计算设备的***闲置(idle)时,可以采用获取内存失效行地址相同的方式进行风险确认和释放,即对内存失效行地址进行访问测试,以获取第一内存的第二内存故障日志,然后从第二内存故障日志中提取出第二内存故障特征,基于第二内存故障特征进行预测,以确定内存失效行地址是否为真实失效的行地址,当预测出该内存失效行地址的行失效风险较低时,确定该内存失效行地址不为真实失效的行地址,将内存失效行地址和与内存失效行地址对应的内存重映射行地址从地址映射表中释放,从而节省TCAM和预留空间中的冗余空间,使得***具备可逆的隔离、释放能力,降低预测精准度要求并提高故障预测覆盖率。
可选的,为了进行风险确认和释放,也可以在RCD中设计TCAM绕行(bypass)开关,通过寄存器使能配置,打开TCAM bypass开关后,对内存的访问将不会查询匹配TCAM,从而可以实现已替换失效行地址的访问。此外,如图7所示,还可以设计双向查找表,自动根据输入地址范围确定是业务访问还是风险压测确认。以RCD上设置的双向查找表为例,若输入行地址范围为用户寻址空间(例如0-10000),则进行正向查找,由内存失效行地址映射到内存重映射行地址;若输入行地址范围为预留空间地址(例如10000-11000),进行反向查找,由内存重映射行地址映射到内存失效行地址,判断能不能访问成功,据此对内存失效行地址做压力测试以实现二次风险确认,从而确定内存失效行地址是否是真实行失效以及是否需要释放。
如图8所示,本申请实施例提供的TCAM还可以集成在第一设备的处理器的内存控制器中,该内存控制器至少包括RAS模块、调度器、地址映射模块和物理层(PHY)几个部分,内存控制器与HA连接。其中,RAS模块实现内存子***的RAS特性,调度器用于对访存任务进行高效率、高服务质量(quality of service,QoS)的调度,地址映射模块完成***介质地址到DDR物理地址的转换,使得内存访问符合DDR协议,并通过DDR物理接口(DDR PHYInterface,DFI)协议将内存访问地址发送到PHY,PHY通过输入输出接口(I/O)与片外的DDRSDRAM连接,将DFI协议转换成DDR协议,并通过对接口时序的微调和接口特性的校准,最大化采样窗口。此外,地址映射模块中设置有TCAM和NVM,第一内存开始工作/上电时,TCAM从NVM中加载地址映射表,第一内存停止工作/下电时,TCAM将地址映射表同步至NVM以实现持久化存储。
203、第一内存获取来自第一内存外部的内存访问地址。
其中,访问由计算设备中具有内存访问权限的处理器发起,作为外部访问者的处理器例如可以是CPU、GPU、DPU或者NPU。
204、内存映射电路使用获取的内存访问地址,基于地址映射表对内存访问地址进行匹配。
205、当在内存失效行地址中匹配到内存访问地址时,内存映射电路将对内存访问地址的访问转换为对内存重映射行地址进行访问。
对于读访问,把重映射行地址中的数据返回给203步骤中的外部访问者。对于写访问,把数据写入重映射行地址中,并返回写成功响应给203步骤在的外部访问者。
在步骤202中,无论是在哪个阶段生成的地址映射表,都需要在访问内存时进行匹配使用。首先获取来自第一内存外部的内存访问地址,该内存访问地址可以为计算设备的处理器发送的,具体可以为输入命令地址(input command address,DCA)输入的bankgroup、bank或row信息,然后基于地址映射表对内存访问地址进行匹配,当第一内存的访问目标为内存失效行地址时,通过地址映射表获得内存失效行地址所映射的内存重映射行地址。应理解,步骤202-步骤205具体由计算设备中的匹配查找电路来执行。
示例性的,如表1所示的地址映射表中,包括4组映射关系,其中A用于指示第一内存中某个bank失效行,B用于指示第一内存中位于同一bank内对应的重映射行,示例性的,A1指示bank0中的第一行(例如row1),B1指示bank0中的最后一行(例如row100),A2指示bank1中的第二行,B2指示bank1中的最后一行,A3指示bank2中的第二行,B3指示bank2中的倒数第二行,A4指示bank3中的第一行,B4指示bank3中的倒数第三行。
表1
内存失效行地址 内存重映射行地址
A1 B1
A2 B2
A3 B3
A4 B4
具体的,如图9所示,内存访问地址从内存访问路径输入至第一内存,当内存访问地址通过DDR C/A总线到达RCD中的TCAM时开始匹配(TCAM search),当内存访问地址在地址映射表中匹配为内存失效行地址时,例如内存访问地址为A1时,可以理解为该内存访问地址存在行失效(row fail),TCAM击中(hit),即匹配成功,将DRAM中的内存失效行地址重映射为与内存失效行地址对应的内存重映射行地址B1,后续的访问目标被替换为内存重映射行地址B1,即通过DDR数据总线(DDR data bus)去读取内存重映射行地址B1对应的数据,当内存访问地址为A5时,无法在地址映射表中匹配,可以理解为TCAM丢失(miss),后续的访问目标依然为内存访问地址A5,通过DDR数据总线直接读取内存访问地址A5对应的数据。
本申请实施例中,通过获取第一内存的内存失效行地址,并在匹配查找电路中生成地址映射表,其中,地址映射表包括内存失效行地址和与内存失效行地址对应的内存重映射行地址,地址映射表用于当第一内存的访问目标为内存失效行地址时,将内存失效行地址重映射为内存重映射行地址,内存重映射行地址指示的内存区域位于第一内存的预留空间,因匹配查找电路集成在第一内存的内存访问路径中的地址命令输出电路或驱动电路,用户可以灵活定义地址映射表集成位置和冗余资源预留量,并基于该地址映射表实现多次可逆替换,不需要重启***,内核态和用户态均无感知,避免了业务性能损失,从而大幅降低内存故障率,提高内存可靠性。
以上介绍了本申请实施例提供的内存映射方法,下面结合附图介绍本申请实施例提供的相关设备。
如图10所示,本申请实施例提供的内存映射电路1000的一实施例包括:
获取电路1001,用于获取第一内存的内存失效行地址;该获取单元1001可以执行上述方法实施例中的步骤201。
匹配查找电路1002,用于从获取电路1001得到内存失效行地址,匹配查找电路1002还用于获取地址映射表,地址映射表包括内存失效行地址和与内存失效行地址对应的内存重映射行地址的映射关系,当第一内存的访问目标为内存失效行地址时,匹配查找电路1002用于通过地址映射表获得内存失效行地址所映射的内存重映射行地址,其中,内存重映射行地址指示的内存区域位于第一内存的预留空间,匹配查找电路集成在第一内存的内存访问路径中的地址命令输出电路或驱动电路。该匹配查找电路1002可以执行上述方法实施例中的步骤202。
可选的,内存映射电路1000集成在内存中,内存包括用于提供预留空间的多个内存芯片;或者,内存映射电路1000集成在处理器中,处理器为中央处理器CPU、数据处理器DPU、嵌入式神经网络处理器NPU、图形处理器GPU或张量处理器TPU中的任意一种。
可选的,匹配查找电路1002还用于获取来自第一内存外部的内存访问地址;使用获取的内存访问地址,基于地址映射表对内存访问地址进行匹配;当在内存失效行地址中匹配到内存访问地址时,将对内存访问地址的访问转换为对内存重映射行地址进行访问。
可选的,第一内存包括多个内存芯片,匹配查找电路1002把多个内存芯片作为一个行地址转换整体;匹配查找电路1002具体用于当单个内存芯片出现失效行时,通过地址映射表将多个内存芯片中的行地址转换为内存重映射行地址,其中,被转换的行包括失效行。
可选的,多个内存芯片中的每个内存芯片包括多个内存体memory bank,第一内存的预留空间包括多个内存体中的每个内存体的至少一行。
可选的,地址映射表存储在匹配查找电路1002中的易失性存储器,该内存映射电路1000还包括读写电路1003,读写电路1003用于在第一内存停止工作之前,将地址映射表从匹配查找电路1002写入第一存储器,第一存储器为位于计算设备中的非易失性存储器;读写单元1004还用于在第一内存开始工作后,将第一存储器中的地址映射表加载至匹配查找电路1002。
可选的,在装载有第一内存的计算设备的启动过程中,读写电路1003还用于从第一存储器读取地址映射表,并通过计算设备的内存自检更新地址映射表。
可选的,匹配查找电路1002中的易失性存储器为内容寻址存储器、三态内容寻址存储器或全相连缓存。
可选的,地址映射表存储在匹配查找电路1002中的非易失性存储器。
可选的,该内存映射电路1000还包括生成电路1004,生成电路1004用于在装载有第一内存的计算设备启动时,生成地址映射表;在计算设备使用第一内存之前,将地址映射表同步至匹配查找电路1002。
可选的,获取单元1001具体用于获取第一内存的第一内存故障日志;从第一内存故障日志中提取出第一内存故障特征;基于第一内存故障特征进行预测,得到第一内存的内存失效行地址。
可选的,该内存映射电路1000还包括释放电路1005,释放电路1005用于对内存失效行地址进行访问测试,以确定内存失效行地址是否为真实失效的行地址;当内存失效行地址不为真实失效的行地址,将内存失效行地址和与内存失效行地址对应的内存重映射行地址从地址映射表中释放。
可选的,该内存映射电路1000还包括发送电路1006,发送电路1006用于发送第一命令,第一命令用于使能停止获取第一内存的内存失效行地址。
可选的,匹配查找电路1002集成在地址命令输出电路或驱动电路中的内存控制器或寄存时钟驱动器。
本申请实施例提供的内存映射电路1000可以参阅前述内存映射方法实施例部分的相应内容进行理解,此处不再重复赘述。
图11所示,为本申请的实施例提供的计算设备的一种可能的逻辑结构示意图。计算设备包括主板1101、处理器1102、内存1103和内存映射电路1104;
其中,主板1101用于进行内存失效行检测,并把内存失效行地址发送给内存映射电路1104,内存映射电路1104集成在处理器1102或内存1103中(如图11所示内存映射电路1104集成在内存1103),内存映射电路1104用于执行如上述图2至图9部分实施例所描述的内存映射方法,内存1103作为第一内存执行内存失效行地址映射。
具体的,该内存1103为方法实施例中的第一内存,该内存映射电路1104包括方法实施例中的匹配查找电路,具体为内存控制器或寄存时钟驱动器,或者该内存映射电路1104包括图10中所示的获取电路1001、匹配查找电路1002、读写电路1003、生成电路1004、释放电路1005和发送电路1006,内存映射电路1104可以对内存1103执行上述内存映射方法。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的至少一个处理器执行该计算机执行指令时,设备执行上述图2至图9部分实施例所描述的内存映射方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备执行上述图2至图9部分实施例所描述的内存映射方法。
在本申请的另一实施例中,还提供一种芯片***,该芯片***包括至少一个处理器和接口,该接口用于接收数据和/或信号,至少一个处理器用于支持实现上述图2至图9部分实施例所描述的内存映射方法。在一种可能的设计中,芯片***还可以包括存储器,存储器,用于保存计算机设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (29)

1.一种内存映射方法,其特征在于,包括:
获取第一内存的内存失效行地址;
匹配查找电路获取地址映射表,所述地址映射表包括所述内存失效行地址和与所述内存失效行地址对应的内存重映射行地址的映射关系;
当所述第一内存的访问目标为所述内存失效行地址时,通过所述地址映射表获得所述内存失效行地址所映射的所述内存重映射行地址,其中,所述内存重映射行地址指示的内存区域位于所述第一内存的预留空间,所述匹配查找电路集成在所述第一内存的内存访问路径中的地址命令输出电路或驱动电路。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取来自所述第一内存外部的内存访问地址;
使用获取的所述内存访问地址,基于所述地址映射表对所述内存访问地址进行匹配;
当在所述内存失效行地址中匹配到所述内存访问地址时,将对内存访问地址的访问转换为对所述内存重映射行地址进行访问。
3.根据权利要求1或2所述的方法,其特征在于,所述第一内存包括多个内存芯片,所述匹配查找电路把所述多个内存芯片作为一个行地址转换整体,所述通过所述地址映射表获得所述内存失效行地址所映射的所述内存重映射行地址的步骤,具体包括:
当单个内存芯片出现失效行时,通过所述地址映射表将所述多个内存芯片中的行地址转换为内存重映射行地址,其中,被转换的行包括所述失效行。
4.根据权利要求3所述的方法,其特征在于,所述多个内存芯片中的每个内存芯片包括多个内存体memorybank,所述第一内存的预留空间包括所述多个内存体中的每个内存体的至少一行存储单元。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述地址映射表存储在所述匹配查找电路中的易失性存储器,所述方法还包括:
在所述第一内存停止工作之前,将所述地址映射表从所述匹配查找电路写入第一存储器,所述第一存储器为非易失性存储器;
在所述第一内存开始工作后,将所述第一存储器中的地址映射表加载至所述匹配查找电路。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在装载有所述第一内存的计算设备的启动过程中,从所述第一存储器读取所述地址映射表,并通过所述计算设备的内存自检更新所述地址映射表。
7.根据权利要求5或6所述的方法,其特征在于,所述匹配查找电路中的易失性存储器为内容寻址存储器、三态内容寻址存储器或全相连缓存。
8.根据权利要求1-4中任一项所述的方法,其特征在于,所述地址映射表存储在所述匹配查找电路中的非易失性存储器。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述匹配查找电路获取地址映射表包括:
在装载有所述第一内存的计算设备启动时,生成地址映射表;
所述方法进一步包括:
在所述计算设备使用所述第一内存之前,将所述地址映射表同步至所述匹配查找电路。
10.根据权利要求1-9中任一项所述的方法,其特征在于,所述获取第一内存的内存失效行地址包括:
获取所述第一内存的第一内存故障日志;
从所述第一内存故障日志中提取出第一内存故障特征;
基于所述第一内存故障特征进行预测,得到所述第一内存的内存失效行地址。
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述方法还包括:
对所述内存失效行地址进行访问测试,以确定所述内存失效行地址是否为真实失效的行地址;
当所述内存失效行地址不为真实失效的行地址,将所述内存失效行地址和与所述内存失效行地址对应的内存重映射行地址从所述地址映射表中释放。
12.根据权利要求1-11中任一项所述的方法,其特征在于,所述方法还包括:
发送第一命令,所述第一命令用于使能停止获取所述第一内存的内存失效行地址。
13.根据权利要求1-12中任一项所述的方法,其特征在于,所述匹配查找电路集成在所述地址命令输出电路或所述驱动电路中的内存控制器或寄存时钟驱动器。
14.一种内存映射电路,其特征在于,包括:
获取电路,用于获取第一内存的内存失效行地址;
匹配查找电路,用于从所述获取电路得到所述内存失效行地址,所述匹配查找电路还用于获取地址映射表,所述地址映射表包括所述内存失效行地址和与所述内存失效行地址对应的内存重映射行地址的映射关系;
当所述第一内存的访问目标为所述内存失效行地址时,所述匹配查找电路用于通过所述地址映射表获得所述内存失效行地址所映射的所述内存重映射行地址,其中,所述内存重映射行地址指示的内存区域位于所述第一内存的预留空间,所述匹配查找电路集成在所述第一内存的内存访问路径中的地址命令输出电路或驱动电路。
15.根据权利要求14所述的电路,其特征在于,所述内存映射电路集成在内存中,所述内存包括用于提供所述预留空间的多个内存芯片;
或者,所述内存映射电路集成在处理器中,所述处理器为中央处理器CPU、数据处理器DPU、嵌入式神经网络处理器NPU、图形处理器GPU或张量处理器TPU中的任意一种。
16.根据权利要求14或15所述的电路,其特征在于,所述匹配查找电路还用于获取来自所述第一内存外部的内存访问地址;使用获取的所述内存访问地址,基于所述地址映射表对所述内存访问地址进行匹配;当在所述内存失效行地址中匹配到所述内存访问地址时,将对内存访问地址的访问转换为对所述内存重映射行地址进行访问。
17.根据权利要求14-16中任一项所述的电路,其特征在于,所述第一内存包括多个内存芯片,所述匹配查找电路把多个内存芯片作为一个行地址转换整体;
所述匹配查找电路具体用于当单个内存芯片出现失效行时,通过所述地址映射表将所述多个内存芯片中的行地址转换为内存重映射行地址,其中,被转换的行包括所述失效行。
18.根据权利要求17所述的电路,其特征在于,所述多个内存芯片中的每个内存芯片包括多个内存体memorybank,所述第一内存的预留空间包括所述多个内存体中的每个内存体的至少一行存储单元。
19.根据权利要求14-18中任一项所述的电路,其特征在于,所述地址映射表存储在所述匹配查找电路中的易失性存储器,所述电路还包括:
读写电路,用于在所述第一内存停止工作之前,将所述地址映射表从所述匹配查找电路写入第一存储器,所述第一存储器为非易失性存储器;
所述读写电路还用于在所述第一内存开始工作后,将所述第一存储器中的地址映射表加载至所述匹配查找电路。
20.根据权利要求19所述的电路,其特征在于,在装载有所述第一内存的计算设备的启动过程中,所述读写电路还用于从所述第一存储器读取所述地址映射表,并通过所述计算设备的内存自检更新所述地址映射表。
21.根据权利要求19或20所述的电路,其特征在于,所述匹配查找电路中的易失性存储器为内容寻址存储器、三态内容寻址存储器或全相连缓存。
22.根据权利要求14-18中任一项所述的电路,其特征在于,所述地址映射表存储在所述匹配查找电路中的非易失性存储器。
23.根据权利要求14-22中任一项所述的电路,其特征在于,所述电路还包括:
生成电路,用于在装载有所述第一内存的计算设备启动时,生成地址映射表;在所述计算设备使用所述第一内存之前,将所述地址映射表同步至所述匹配查找电路。
24.根据权利要求14-23中任一项所述的电路,其特征在于,所述获取电路具体用于获取所述第一内存的第一内存故障日志;从所述第一内存故障日志中提取出第一内存故障特征;基于所述第一内存故障特征进行预测,得到所述第一内存的内存失效行地址。
25.根据权利要求14-24中任一项所述的电路,其特征在于,所述电路还包括:
释放电路,用于对所述内存失效行地址进行访问测试,以确定所述内存失效行地址是否为真实失效的行地址;当所述内存失效行地址不为真实失效的行地址,将所述内存失效行地址和与所述内存失效行地址对应的内存重映射行地址从所述地址映射表中释放。
26.根据权利要求14-25中任一项所述的电路,其特征在于,所述电路还包括:
发送电路,用于发送第一命令,所述第一命令用于使能停止获取所述第一内存的内存失效行地址。
27.根据权利要求14-26中任一项所述的电路,其特征在于,所述匹配查找电路集成在所述地址命令输出电路或所述驱动电路中的内存控制器或寄存时钟驱动器。
28.一种计算设备,其特征在于,包括主板、处理器、内存和如权利要求14-27中任一项所述的内存映射电路;
其中,所述主板用于进行内存失效行检测,并把内存失效行地址发送给所述内存映射电路,所述内存映射电路集成在所述处理器或所述内存中,所述内存作为第一内存执行内存失效行地址映射。
29.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-13中任一项所述的方法。
CN202211691518.5A 2022-11-30 2022-12-27 一种内存映射方法及相关设备 Pending CN118113500A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2023/118425 WO2024114039A1 (zh) 2022-11-30 2023-09-13 一种内存映射方法及相关设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2022115214084 2022-11-30
CN202211521408 2022-11-30

Publications (1)

Publication Number Publication Date
CN118113500A true CN118113500A (zh) 2024-05-31

Family

ID=91209447

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211691518.5A Pending CN118113500A (zh) 2022-11-30 2022-12-27 一种内存映射方法及相关设备

Country Status (2)

Country Link
CN (1) CN118113500A (zh)
WO (1) WO2024114039A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103324582A (zh) * 2013-06-17 2013-09-25 华为技术有限公司 一种内存迁移方法、装置及设备
US9274888B2 (en) * 2013-11-15 2016-03-01 Qualcomm Incorporated Method and apparatus for multiple-bit DRAM error recovery
CN113590508B (zh) * 2021-09-30 2022-02-11 沐曦科技(北京)有限公司 动态可重构的内存地址映射方法及装置
CN115220967A (zh) * 2022-07-28 2022-10-21 苏州忆联信息***有限公司 固态硬盘内存容错性提升方法、装置和计算机设备

Also Published As

Publication number Publication date
WO2024114039A1 (zh) 2024-06-06

Similar Documents

Publication Publication Date Title
US9164848B2 (en) Variable partitioning in a hybrid memory subsystem
US8046546B2 (en) Variable partitioning in a hybrid memory subsystem
US7865679B2 (en) Power interrupt recovery in a hybrid memory subsystem
TWI781439B (zh) 映射未經分類之記憶體存取至經分類之記憶體存取
US8756458B2 (en) Mount-time reconciliation of data availability
US10740010B2 (en) Memory module and memory system including memory module
US20090235038A1 (en) Hybrid memory system with backup power source and multiple backup an restore methodology
TWI764265B (zh) 用於將資料連結至記憶體命名空間的記憶體系統
US8516298B2 (en) Data protection method for damaged memory cells
US8154259B2 (en) Capacitor save energy verification
CN114402305A (zh) 与存储器类型相关的页表
US20220137859A1 (en) Computing system and operating method thereof
CN112988467A (zh) 一种固态硬盘及其数据恢复方法和终端设备
CN114647375B (zh) 使装置具备增强型持久性存储器区存取能力
US20190303226A1 (en) Semiconductor memory module and memory system including the same
CN111399752A (zh) 不同类型存储单元的控制装置及方法
US20190310905A1 (en) Memory systems and operating methods of memory systems
CN111026325A (zh) 闪存控制器、闪存控制器的控制方法及相关的电子装置
US8745363B2 (en) Bootable volatile memory device, memory module and processing system comprising bootable volatile memory device, and method of booting processing system using bootable volatile memory device
CN118113500A (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