CN115512758A - 应用感知存储器巡查擦洗技术 - Google Patents

应用感知存储器巡查擦洗技术 Download PDF

Info

Publication number
CN115512758A
CN115512758A CN202210512516.9A CN202210512516A CN115512758A CN 115512758 A CN115512758 A CN 115512758A CN 202210512516 A CN202210512516 A CN 202210512516A CN 115512758 A CN115512758 A CN 115512758A
Authority
CN
China
Prior art keywords
memory
patrol
scrub
scrubbing
policy
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
CN202210512516.9A
Other languages
English (en)
Inventor
弗朗西斯·桂姆·伯纳特
卡尔蒂克·库马尔
马克·A·施米瑟
托马斯·威尔哈姆
马科斯·E·卡兰萨
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN115512758A publication Critical patent/CN115512758A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

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

Abstract

本公开涉及应用感知存储器巡查擦洗技术。用于应用感知存储器巡查擦洗技术的方法和装置。该方法可以在计算系统上被执行,该计算系统包括一个或多个存储器设备并且运行多个应用及其相关联的进程。该计算系统可以被实现在多租户环境中,其中由系统提供的物理资源的虚拟实例被分配给单独的租户,例如通过采用虚拟机或容器的虚拟化方案。提供服务质量(QoS)擦洗逻辑和新颖的接口来使得能够在租户、应用和/或进程级处应用存储器擦洗QoS策略。这个QoS策略可以包括被应用特定策略的存储器范围,以及用于执行擦洗操作的带宽分配。还提供模式生成器,用于基于观察或预测的存储器访问模式和/或预定的模式来生成擦洗模式。

Description

应用感知存储器巡查擦洗技术
技术领域
本公开总体涉及应用感知存储器巡查擦洗技术。
背景技术
随着云部署涉及数万台服务器的规模,存储器错误在最近一段时间成为了尖锐的焦点。作为一个示例,SAP HANA部署在单个节点中涉及的服务器平均跨越2-4TB(万亿字节)的存储器,并且主要的超大规模公司部署了数千个这样的服务器。
当前,存储器错误是用几种方法来解决的。机器检查架构恢复解决方案提供了各种选项和流程从存储器错误中恢复。最简单的情况是硬件可纠正的错误,它可以完全由硬件修复,而不要求软件堆栈的参与。
在错误无法纠正的情况下,软件堆栈需要参与。一种方法是由操作系统(operating system,OS)处理的,OS被通知了错误。如果页(具有包括错误的地址范围)是未使用的,那么该页可以被OS取消映射,并且被适当标记,其结果是不会由于无法纠正的错误而损失应用数据。如果该页被使用,则发信号通知应用。许多应用,包括数据库,都有一些能力来补偿不可纠正的错误,并且恢复利用应用级校验和(不同于硬件纠错码(errorcorrection code,ECC)),以便重建数据,或者在一些情况下从盘中恢复数据。
另外,巡查擦洗(patrol scrubbing)是一种针对存储器错误的重要机制,因为它被设计来解决ECC算法无法纠正的多比特错误。擦洗利用了在任何给定时间在同一个字中出现两次打击的低概率。巡查擦洗的当前使用是通过ECC逻辑来使得存储器周期性地循环,以便在单比特错误累积之前纠正它们。
发明内容
本公开提供了用于应用感知存储器巡查擦洗技术的方法和装置。该方法可以在计算系统上被执行,该计算系统包括一个或多个存储器设备并且运行多个应用及其相关联的进程。该计算系统可以被实现在多租户环境中,其中由系统提供的物理资源的虚拟实例被分配给单独的租户,例如通过采用虚拟机或容器的虚拟化方案。提供服务质量(QoS)擦洗逻辑和新颖的接口来使得能够在租户、应用和/或进程级处应用存储器擦洗QoS策略。这个QoS策略可以包括被应用特定策略的存储器范围,以及用于执行擦洗操作的带宽分配。还提供模式生成器,用于基于观察或预测的存储器访问模式和/或预定的模式来生成擦洗模式。
根据本公开的第一实施例,提供了一种用于擦洗计算系统上的存储器的方法,所述计算系统包括一个或多个存储器设备并且运行第一进程或应用和第二进程或应用,所述方法包括:使用第一巡查擦洗策略来对与所述第一进程或应用相关联的存储器设备上的存储器的至少第一部分执行巡查擦洗;以及使用第二巡查擦洗策略来对与运行的所述第二进程或应用相关联的存储器设备上的存储器执行巡查擦洗。
根据第一实施例提供的方法,还包括:为所述第一巡查擦洗策略采用的巡查擦洗分配第一带宽;并且为所述第二巡查擦洗策略采用的巡查擦洗分配第二带宽。
根据第一实施例提供的方法,还包括:使用所述第二巡查擦洗策略或者第三巡查擦洗策略来对与所述第一进程或应用相关联的存储器设备上的存储器的第二部分执行巡查擦洗。
根据第一实施例提供的方法,还包括:实现用于所述第一巡查擦洗策略的第一擦洗模式;并且实现用于所述第二巡查擦洗策略的第二擦洗模式。
根据第一实施例提供的方法,还包括:对用于所述第一进程或应用的存储器访问模式进行监视和预测中的至少一者;并且至少部分地基于监视和预测的访问模式中的至少一者来生成将由所述第一擦洗模式采用的擦洗模式。
根据第一实施例提供的方法,其中,所述第一擦洗模式是由所述第一进程或应用基于其对更重要的存储器区域的知识而指定的。
根据第一实施例提供的方法,其中,所述计算系统包括与所述一个或多个存储器设备耦合的存储器控制器,并且其中,所述第一擦洗模式是通过对嵌入在所述存储器控制器上的加速器进行编程而生成的。
根据第一实施例提供的方法,还包括:生成要被应用于所述第一巡查擦洗策略和所述第二巡查擦洗策略中的每一者的一组服务质量(QoS)参数,其中,所述QoS参数包括要被用于巡查擦洗的分配带宽。
根据第一实施例提供的方法,其中,用于所述第一巡查擦洗策略的一组QoS参数包括:存储器地址范围,分配带宽,以及标识将使用所述分配带宽来应用到所述存储器地址范围中的存储器的擦洗模式的标记。
根据第一实施例提供的方法,其中,所述方法是针对由所述计算系统托管的多租户环境实现的,并且其中,所述第一进程或应用包括在分配给第一租户的第一虚拟机或容器上运行的应用,并且其中,所述第二进程或应用包括在分配给第二租户的第二虚拟机或容器上运行的应用。
根据本公开的第二实施例,提供了一种计算系统,包括:一个或多个存储器设备,其中存储了用于多个应用的代码和数据;处理器,具有一个或多个核心并且具有与所述一个或多个存储器设备耦合的集成存储器控制器,用于所述多个应用中的两个或更多个应用的代码在所述一个或多个核心上执行,所述集成存储器控制器被配置为,使用第一巡查擦洗策略来对所述一个或多个存储器设备中的与第一应用或进程相关联的存储器设备上的存储器的至少第一部分执行巡查擦洗,其中,所述进程与所述第一应用相关联;以及使用第二巡查擦洗策略来对所述一个或多个存储器设备中的与第二应用或进程相关联的存储器设备上的存储器执行巡查擦洗,其中,所述进程与所述第二应用相关联。
根据第二实施例提供的计算系统,其中,所述存储器控制器还被配置为:为所述第一巡查擦洗策略采用的巡查擦洗分配第一带宽;并且为所述第二巡查擦洗策略采用的巡查擦洗分配第二带宽。
根据第二实施例提供的计算系统,其中,所述存储器控制器还被配置为:使用所述第二巡查擦洗策略或者第三巡查擦洗策略来对与所述第一应用或进程相关联的存储器设备上的存储器的第二部分执行巡查擦洗。
根据第二实施例提供的计算系统,其中,所述存储器控制器还被配置为:生成用于所述第一巡查擦洗策略的第一擦洗模式;并且生成用于所述第二巡查擦洗策略的第二擦洗模式。
根据第二实施例提供的计算系统,其中,所述存储器控制器具有嵌入式加速器,并且其中,所述第一擦洗模式是通过对所述嵌入式加速器进行编程而生成的。
根据本公开的第三实施例,提供了一种存储器控制器,包括:输入/输出(I/O)接口,被配置为耦合到一个或多个存储器设备;以及接口,所述接口使得能够指定被存储器擦洗器QoS逻辑使用的QoS策略,以用于执行与要在计算系统中执行的相应进程或应用相关联的存储器的巡查擦洗,所述存储器控制器被配置为安装在所述计算系统中,所述计算系统包括一个或多个存储器设备。
根据第三实施例提供的存储器控制器,其中,QoS策略包括在执行与该QoS策略相关联的存储器的巡查擦洗时要使用的分配带宽。
根据第三实施例提供的存储器控制器,其中,QoS策略包括被应用该QoS策略的存储器地址范围。
根据第三实施例提供的存储器控制器,还包括:模式生成器,其被配置为生成要用于执行存储器擦洗的擦洗模式。
根据第三实施例提供的存储器控制器,还包括:加速器,所述加速器由所述模式生成器进行编程以使用一个或多个擦洗模式来执行存储器擦洗。
附图说明
随着通过在结合附图进行理解的同时参考接下来的详细描述而更好地理解本发明的上述方面和许多附带的优点,这些方面和优点将变得更容易明白,在附图中,除非另有指明,否则相似的标号在各种视图中始终指代相似的部分。
图1是根据一个实施例图示出用于实现存储器擦洗器QoS逻辑的存储器控制器架构的高级别描述的示意图;
图2是根据一个实施例图示出用于实现存储器擦洗器QoS逻辑的存储器控制器架构的进一步细节的示意图;
图3是图示出稀疏存储器访问模式的示例的图线和示意图;
图4是根据一个实施例图示出使用具有模式的巡查擦洗而执行的操作的流程图;
图5是根据一个实施例图示出多层级存储器方案的概述的示意图;
图6是包括与存储器模块耦合的存储器控制器的示例系统的示意图,其中该系统被配置为根据本文的实施例的各方面实现巡查存储器擦洗;以及
图7是示例性系统的框图,在该系统中可以实现本文公开的实施例的各方面。
具体实施方式
本文描述了用于应用感知存储器巡查擦洗技术的方法和装置的实施例。在以下描述中,记载了许多具体细节以帮助透彻理解本发明的实施例。然而,相关领域的技术人员将会认识到,没有这些具体细节中的一个或多个,或者利用其他方法、组件、材料等等,也可实现本发明。在其他情况中,没有示出或详细描述公知的结构、材料或操作,以避免模糊本发明的各方面。
本说明书中各处提及“一个实施例”或“一实施例”的意思是结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在一实施例中”在本说明书各处的出现不一定全都指的是同一实施例。此外,特定的特征、结构或特性在一个或多个实施例中可按任何适当的方式被组合。
为了清楚起见,本文的附图中的个体组件也可以由其在附图中的标签而不是由特定的标号来指代。此外,指代特定类型的组件(而不是特定组件)的标号可以用标号后面跟着意指“典型”的“(typ)”来示出。将会理解,这些组件的配置将是可能存在、但为了简单和清楚起见而没有在附图中示出的类似组件或者没有用分开的标号标注的其他方面类似的组件的典型配置。相反,“(typ)”不应被解释为意味着该组件、元素等等通常被用于其公开的功能、实现、目的,等等。
当前,巡查擦洗选项可以在BIOS中作为参数被选择,例如,默认可以是每24小时擦洗一次整个存储器。有一些选项来增大高可靠性部署的频率,并且这可能频繁到每几个小时一次。鉴于这对于一个日益普遍的问题是一种重要的预防工具,本文公开的实施例更好地利用了巡查擦洗机制来预防和减轻存储器错误。所公开的技术部分地基于以下关键观察。
首先,从应用的角度来看,所有的存储器范围并不都是相等的,无论是从错误预防的角度,还是从错误纠正的角度。例如,对于存储器内数据库而言,存储器的某些区域是只读的,并且被复制在盘中。这些区域中的错误可以通过从盘中恢复数据来修复。另外,存储器的某些区域被用于统计核算和簿记,以提高数据库的内部效率,并且这些区域中的错误可以被容忍,而不会有业务连续性的任何损失。有鉴于此,巡查擦洗工作可以被应用或操作系统提示所指导,以将注意力集中在从业务连续性角度来看至关重要的存储器区域上。
第二,考虑到巡查擦洗器可以周期性地执行存储器“擦洗”,尤其是对那些从可靠性角度来看至关重要的存储器区域,为巡查擦洗器提供ECC之外的额外擦洗能力是有利的。例如,使用应用级提示或者与应用级校验和的链接。
第三,巡查擦洗需要占用带宽,而不是“免费”的。这就是为什么倾向于使用不频繁的24小时或X小时一次的巡查擦洗,以便应用性能不受影响。这里有两个关键因素需要考虑——首先,从信息丢失的角度来看“重要”的存储器范围并不总是带宽密集型存储器范围。例如,分析处理(对带宽要求很高)经常是针对只读数据的,这通常不像比如事务处理(不像分析处理那样对带宽要求很高)区域那样关键,在那里对数据进行了关键修改。其次,如果某个区域确实很重要,当今在RAS(可靠性、可用性和可服务性)方面有一些技术,比如DIMM内子区域镜像,它可以与巡查擦洗被结合利用以保护带宽。一个关键的见解是,人们需要更少的特定区域来关注这些技术,而当前将整个存储器系统视为一个整体的方法使得不可能使用这种技术组合,因为我们根本没有足够的容量/资源。
本文描述和图示的实施例通过用自适应巡查擦洗器来提供独特的差异化以解决上述问题,该擦洗器可以将注意力集中在由OS和/或应用软件指定的范围上,并且还扩大了校验求和以及纠正逻辑的能力,以包括特定应用逻辑。此外,实施例将存储器子系统中的服务质量(Quality of Service,QoS)概念——该概念历来关注的是缓存容量和存储器带宽——扩展到还包括存储器可靠性,并且扩展了QoS API以包括对关键存储器范围的指定,在这种关键存储器范围中信息的丢失将意味着业务连续性的丢失。
实施例的一个方面是存储器控制器中的新逻辑,它允许软件堆栈(例如,操作系统)控制与针对每个不同进程以及潜在的不同存储器范围执行存储器擦洗的方式相关联的不同服务质量水平。这是由存储器擦洗器QoS逻辑实现的,如本文的图中所示,包括下面的图1。该新逻辑还包括比特流模式生成器,它负责生成擦洗逻辑可以访问并且可以遵循的存储器地址模式。与存储器擦洗器QoS逻辑类似,存储器地址模式可以是针对进程的或者是针对进程和地址空间的。这允许了软件堆栈实现特定的流程(例如,给定在相关结构上遵循指针追逐的针对进程的稀疏访问,不需要擦洗所有的地址,而是将注意力集中在对应用很重要的稀疏访问路径上)。
图1对存储器控制器架构中包括的这些新的基本块提供了高级别描述。存储器控制器100包括入口逻辑102、模式生成器104、存储器擦洗器QoS逻辑106、存储器擦洗器逻辑108、以及退出逻辑110。存储器控制器100与多个DIMM(dual inline memory module,双列直插存储器模块)112耦合。DIMM 112的地址空间被划分为不同的区域,如下所述。
存储器擦洗器QoS逻辑106控制分配给存储器擦洗的带宽如何被分配给不同的应用(例如,由进程地址ID(process address id,PASID)标识),并且可能在不同的存储器范围内。在图1所示的示例中,为两个进程定义了两个不同的策略,如高优先级策略114和低优先级策略116所描绘。高优先级策略114被应用到两个存储器范围118和120。对于存储器范围118,由模式生成器104使用M MB/s的最大带宽来生成存储器擦洗器模式“X”。由模式生成器104使用N MB/s的最大带宽来生成存储器擦洗器模式“Y”用于存储器范围120。
一般而言,低优先级策略可以采用传统的巡查擦洗操作,例如执行所要求的最小量的擦洗。例如,使用随机访问模式,以最低擦洗率(例如每小时擦洗此范围),使用P MB/s的可选最大带宽,将低优先级策略116应用到区域122。在一些实施例中,应用于存储器范围120的策略可以与应用于存储器范围122的策略相同。
本文提供的技术包括简单的方法(例如,遵循简单的跨步模式)和基于小型加速逻辑的更复杂的方法(例如,基于读取内容来生成特定模式)。下面将论述跨步模式和特定模式的生成。
图2示出了为了支持本文描述的扩展存储器擦洗功能而对存储器控制器200进行的新颖增强的额外细节。在图1和图2中,具有相似标号的组件/块执行类似的功能。除了先前标识的块和逻辑以外,存储器控制器200还包括配置接口202和系统地址解码器204,它们的操作将在下文描述。如进一步示出的,存储器擦洗器逻辑108a访问表格206,在该表格中存储有各种规则和关联的参数。
一组新的接口被存储器控制器暴露出来,以便允许软件堆栈配置该方法。这些接口可以用特定于模型的寄存器(model-specific register,MSR)、ENQ(入队)命令或任何类似的装置来实现。在一个实施例中,它们在第0环(RING 0)中,以避免用户空间程序影响RAS特征。在一个实施例中,提供了三个新接口。
第一接口使得操作者和/或控制软件或固件,例如操作系统,能够指定可以被消耗用于擦洗的整体存储器带宽。这个接口可以使得存储器带宽能够被指定为条件性输入,或者使得带宽能够被添加到用于其他应用的当前存储器带宽的量。该带宽可以进一步被指定为:
i.存储器带宽利用的范围(例如,用于常规读取和写入的[10%-60%]存储器带宽)
ii.指定用于擦洗的存储器带宽的量(例如,未使用的带宽中的50%)。
第二接口允许了为由进程地址ID(PASID)表示的特定进程指定或选择特定的存储器擦洗服务质量策略。在一个实施例中,此接口包括以下参数:
i.应用的PASID。
ii.与存储器擦洗QoS有关的可选存储器范围。如果没有关联的范围,则将默认为该进程的所有地址空间关联QoS。否则,QoS将被映射到指定的特定区域(存储器范围)。
iii.进程的优先级。在有特定的期望最小擦洗带宽的情况下,可以提供进程优先级来在所有的PASID之间进行区分。
iv.与QoS注册相关联的特定最小存储器带宽。存储器带宽必须高于设计要求的最小值。这个最小限度是可以在工厂注册的,或者可以是可配置的。如果没有足够量的可分配存储器擦洗带宽,则注册可能会失败。
取决于可以被消耗用于擦洗的整体存储器带宽,即使分配了所要求的存储器带宽,它也可能是无法实现的。在这种情况下,可以生成系统中断,以向操作系统通知带宽的注册无法被满足。
第三接口使得特定的擦洗模式能够与特定的范围(例如,经由第二接口注册的存储器范围)相关联。这可以包括:
i.应用的PASID。
ii.关联的存储器范围。
iii.需要被关联的存储器模式。
在一个实施例中,可以使用两个不同的选项来输入存储器模式:1)提供模式ID(例如,跨步)和参数(例如,4);或者2)提供可以在小型加速单元中执行的比特流,该加速单元可以基于应用的专门知识来生成特定的模式。
表格206示出了被第二接口使用的示例性数据。这包括规则ID字段208、存储器范围字段210、PASID字段212、分配带宽(BW)字段214、优先级字段216、以及模式字段218。规则ID字段208包含规则标识符,它一般可以包括值或数据来标识规则,例如数字或字母串。存储器范围字段210包含规则适用的存储器范围,例如开始地址和结束地址(例如,地址A、地址B)。PASID字段212包含进程的PASID。在分配BW字段214中提供分配的带宽。
优先级字段216包含与优先级别相关联的标记。图2中示出了“低”和“高”的非限制性示例;然而,也可以使用支持更大优先级粒度的标记。
模式字段218被用于标识模式(例如,“随机”)或者提供指针等来指向给定的比特流或者用于对存储器擦洗器逻辑108a进行编程的比特流的标识符。除了比特流以外,如本文所论述还可以使用其他模式。
擦洗模式生成
各种技术可以被用于生成擦洗模式,包括基于跨步的模式和特定应用模式。在特定应用模式方面,给定的应用或应用类别,例如机器学习(machine learning,ML)和/或人工智能(artificial intelligence,AI)应用或者在云托管服务中实现的应用,可能更频繁地在一些地址而不是其他地址访问存储器。在一些情况下,为应用分配的存储器页的一些范围可能被非常不频繁地使用或者根本不被使用。例如,某个应用可以请求分配包括将被使用的存储器页并且可能包括可能被使用的其他页的存储器(取决于各种条件、用户输入、动态响应,等等)。请求分配可能被使用的存储器确保了该存储器可供使用(无论它是否被实际使用),而不是根据需要来分配此存储器。
对于一些应用,访问模式可能是稀疏的——也就是说,只有一小部分(即,稀疏部分)的存储器被实际访问。图3中示出了稀疏访问模式的示例,其中放大的区域300示出了在Hashemi,Milad等人所著的“学习存储器访问模式”,国际机器学习会议,PMLR,2018(Hashemi,Milad,et al."Learning memory access patterns."InternationalConference on Machine Learning.PMLR,2018)中发表的omnetpp数据集上的缓存错失地址。缓存错失地址对应于导致缓存错失的存储器访问请求(例如,不在采用L1/L2缓存和最后一级缓存(Last Level Cache,LLC)的处理器的缓存层次体系中)。这也反映了在从系统存储器中读取的是哪一部分存储器(哪些缓存线)。
由于这些缓存线比其他缓存线被更频繁地访问,所以更频繁地擦洗这些缓存线以防止数据错误是有利的。根据一些实施例的进一步方面,采用了一种或多种技术和/或机制来监视或预测存储器访问模式,然后使用监视或预测的存储器访问模式来识别要使用模式访问方案进行擦洗的存储器部分。
图4示出了根据一个实施例图示出使用具有模式的巡查擦洗而执行的操作的流程图400。如在开始和结束循环块402和416之间耦合的外循环中所示,对于多租户环境,可以为一个或多个租户执行这些操作。如在开始和结束循环块404和414之间耦合的中间循环中所示,可以为一个或多个进程执行这些操作。在块406中,监视和/或预测存储器访问模式。在块408中,监视或预测的存储器访问模式被提供给模式生成器作为输入。在块410中,模式生成器(和/或其他逻辑)被用来对擦洗器逻辑进行编程。例如,在一个实施例中,FPGA被使用并且被比特流编程以擦洗与监视或预测的模式相对应的存储器地址/缓存线。在块412中,然后通过使用基于该模式以及适用的QoS参数和与该进程的PASID相关联的设置的巡查擦洗来擦洗存储器。如回到块406的可选循环所描绘的,块406、408、410和412的操作可以被持续地执行,以基于最近监视和/或预测的存储器访问模式来调整用于巡查擦洗的模式。在实践中,对于多个进程和(如果适用的话)多个租户的巡查擦洗操作一般可以被并行执行,其中模式被周期性地更新。
在前面提到的“学习存储器访问模式”论文中描述了用于预测存储器访问模式的技术。例如,在一些实施例中,可以观察存储器预取,以使用巡查擦洗来确定要采用的存储器访问模式。
预取器是根据过去的存储器访问历史来预测未来的存储器访问的硬件结构。它们一般可以被分为两种类别:跨步预取器和相关预取器。跨步预取器通常被实现在现代处理器中,并且锁定到稳定、可重复的差量(后续存储器地址之间的差异)。例如,给定每次向存储器地址添加四(0,4,8,12)的访问模式,跨步预取器将学习该差量,并且尝试在需求流之前预取,对潜在的未来地址目标(16,20,24)发动并行访问,直到设置的预取距离为止。相关预取器尝试学习可能重复、但不像单个稳定差量那样一致的模式。它们将过去的存储器访问历史存储在大表格中,并且比跨步预取器更善于预测更不规则的模式。相关预取器的示例包括马尔科夫预取器、GHB预取器,以及最近的利用更大的存储器内结构的工作。
图5图示了示例系统500。在一些示例中,如图5所示,系统500包括计算设备中的存储器子系统的元素和处理器。处理器510代表计算系统的处理单元,该处理单元可以执行操作系统(OS)和应用,它们可以被统称为主机或存储器子系统的用户。OS和应用执行导致存储器访问的操作。处理器510可以包括一个或多个单独的处理器。每个单独的处理器可以包括单个处理单元、多核处理单元、或者这些的组合。处理单元可以是诸如中央处理单元(central processing unit,CPU)之类的主处理器,诸如图形处理单元(graphicsprocessing unit,GPU)之类的外围处理器,或者这些的组合。存储器访问也可以由诸如网络控制器或硬盘控制器之类的设备发起。这种设备在一些系统中可以与处理器集成,或者经由总线(例如,PCI快速总线)附接到处理器,或者这些的组合。系统500可以实现为片上系统(system on a chip,SOC),或者可以用独立的组件来实现。
对存储器设备的提及可以适用于不同的存储器类型。存储器设备经常指的是易失性存储器技术,例如DRAM。除了易失性存储器以外,或者作为易失性存储器的替代,在一些示例中,对存储器设备的提及可以指一种非易失性存储器设备,即使该设备的电力被中断,其状态也是确定的。在一个示例中,非易失性存储器设备是块可寻址存储器设备,例如NAND或NOR技术。存储器设备还可以包括具有3维(3D)交叉点存储器结构的字节或块可寻址类型的非易失性存储器,该结构包括但不限于硫属化合物相变材料(例如,硫属化合物玻璃),以下称为“3D交叉点存储器”。非易失性类型的存储器还可以包括其他类型的字节或块可寻址非易失性存储器,例如但不限于多阈值级NAND闪存、NOR闪存、单级或多级相变存储器(phase change memory,PCM)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(ferroelectric transistor random access memory,FeTRAM)、反铁电存储器、包括金属氧化物基、氧空位基和导电桥随机存取存储器(conductive bridge random accessmemory,CB-RAM)的电阻式存储器、自旋电子磁结存储器、磁隧道结(magnetic tunnelingjunction,MTJ)存储器、畴壁(domain wall,DW)和自旋轨道转移(spin orbit transfer,SOT)存储器、基于晶闸管的存储器、结合了忆阻器技术的磁阻随机存取存储器(magnetoresistive random access memory,MRAM)、自旋转移扭矩MRAM(spin transfertorque MRAM,STT-MRAM),或者上述任何项的组合。
本文提到“RAM”或“RAM设备”的描述可以适用于任何允许随机访问的存储器设备,无论是易失性的还是非易失性的。提到“DRAM”、“SDRAM”、“DRAM设备”或“SDRAM设备”的描述可以指易失性随机存取存储器设备。存储器设备、SDRAM或DRAM可以指管芯本身,可以指包括一个或多个管芯的封装存储器产品,或者两者都指。在一些示例中,具有需要被刷新的易失性存储器的系统也可以包括至少一些非易失性存储器。
如图5所示,存储器控制器520可以代表系统500的一个或多个存储器控制器电路或设备。另外,存储器控制器520可以包括响应于处理器510对操作的执行而生成存储器访问命令的逻辑和/或特征。在一些示例中,存储器控制器520可以访问一个或多个存储器设备540。对于这些示例,(一个或多个)存储器设备540可以是根据上文提及的任何的SDRAM或DRAM设备。可以通过不同的通道来组织和管理(一个或多个)存储器设备540,其中这些通道可以经由总线和信号线并行地耦合到多个存储器设备。每个通道可以是可独立操作的。因此,可以独立地访问和控制单独的通道,并且对于每个通道,定时、数据传送、命令和地址交换以及其他操作可以是单独的。耦合可以指电气耦合、通信耦合、物理耦合,或者这些的组合。物理耦合可以包括直接接触。电气耦合例如包括允许组件之间的电气流动或者允许组件之间的信号传递或者两者兼有的接口或互连。通信耦合例如包括使得组件能够交换数据的连接,包括有线的或无线的。
根据一些示例,对于每个通道的设置是由单独的模式寄存器或其他寄存器设置来控制的。对于这些示例,存储器控制器520可以管理单独的存储器通道,但是系统500可以被配置为具有由单个存储器控制器管理的多个通道,或者在单个通道上有多个存储器控制器。在一个示例中,存储器控制器520是处理器510的一部分,例如存储器控制器520的逻辑和/或特征与处理器510实现在相同的管芯上,或者与处理器510实现在相同的封装空间中,有时被称为集成存储器控制器。
存储器控制器520包括输入/输出(I/O)接口电路522,以耦合到存储器总线,例如上文提及的存储器通道。I/O接口电路522(以及(一个或多个)存储器设备540的I/O接口电路542)可以包括引脚、焊盘、连接器、信号线、迹线或导线,或者用于连接设备的其他硬件,或者这些的组合。I/O接口电路522可以包括硬件接口。如图5所示,I/O接口电路522至少包括信号线的驱动器/收发器。通常,集成电路接口内的导线与焊盘、引脚或连接器耦合,以对接设备间的信号线或迹线或其他导线。I/O接口电路522可以包括驱动器、接收器、收发器或端接,或者在存储器控制器520和(一个或多个)存储器设备540之间的信号线上交换信号的其他电路或电路组合。信号的交换包括发送或接收中的至少一者。虽然被示为将I/O接口电路522从存储器控制器520耦合到(一个或多个)存储器设备540的I/O接口电路542,但将会理解,在其中(一个或多个)存储器设备540的群组被并行访问的系统500的实现方式中,多个存储器设备可以包括到存储器控制器520的相同接口的I/O接口电路。在包括一个或多个存储器模块570的系统500的实现方式中,除了用于(一个或多个)存储器设备540的接口硬件以外,I/O接口电路542还可以包括(一个或多个)存储器模块570的接口硬件。其他存储器控制器520可以包括到(一个或多个)存储器设备540中的一个或多个存储器设备的多个单独的接口。
在一些示例中,存储器控制器520可以经由多条信号线与(一个或多个)存储器设备540耦合。多条信号线可以至少包括时钟(CLK)532,命令/地址(CMD)534,以及写入数据(DQ)和读取数据(DQ)536,以及零个或多个其他信号线538。根据一些示例,将存储器控制器520耦合到(一个或多个)存储器设备540的信号线的构成可以被统称为存储器总线。用于CMD 534的信号线可以被称为“命令总线”、“C/A总线”或ADD/CMD总线,或者指示出命令的传送的某种其他名称。用于DQ 536的信号线可以被称为“数据总线”。
根据一些示例,独立的通道可以具有不同的时钟信号、命令总线、数据总线和其他信号线。对于这些示例,在独立的接口路径可以被视为单独总线的意义上,系统500可以被视为具有多个“总线”。将会理解,除了图5所示的信号线以外,总线还可以包括选通信令线、警报线、辅助线或者其他信号线中的至少一者,或者这些额外信号线的组合。还将会理解,串行总线技术可以被用于在存储器控制器520和(一个或多个)存储器设备540之间传输信号。串行总线技术的一个示例是在每个方向上通过单一差分信号对的带有嵌入式时钟的高速数据的8B10B编码和传输。在一些示例中,CMD 534代表与多个存储器设备540并行共享的信号线。在其他示例中,多个存储器设备共享CMD 534的编码命令信号线,并且每个设备具有单独的芯片选择(CS_n)信号线来选择(一个或多个)个体存储器设备540。
在一些示例中,存储器控制器520和(一个或多个)存储器设备540之间的总线包括经由CMD 534中包括的信号线路由的附属命令总线和经由DQ 536中包括的信号线路由的携带写入和读取数据的附属数据总线。在一些示例中,CMD 534和DQ 536可以分别包括双向线。在其他示例中,DQ 536可以包括单向写入信号线来从主机写入数据到存储器,以及单向线来从存储器读取数据到主机。
根据一些示例,根据所选择的存储器技术和系统设计,其他538中包括的信号线可以增强存储器总线或附属总线。例如,用于DQS的选通线信号线。基于系统500的设计,或者存储器技术实现方式,存储器总线对于(一个或多个)存储器设备540中包括的每个存储器设备可以具有更多或更少的带宽。存储器总线可以支持(一个或多个)存储器设备540中包括的存储器设备,这些设备具有x32接口、x16接口、x8接口或者其他接口。惯例“xW”表示与存储器控制器520交换数据的信号线的数目,其中W是一个整数,指的是(一个或多个)存储器设备540的接口的接口大小或宽度。这些存储器设备的接口大小可以是关于在系统500中每个通道可以并发使用多少个存储器设备或者向相同信号线并行耦合多少个存储器设备的一个控制因素。在一些示例中,高带宽存储器设备、宽接口存储器设备、或者堆叠式存储器设备、或者这些的组合,可以实现更宽的接口,例如x128接口、x256接口、x512接口、x1024接口,或者其他数据总线接口宽度。
根据一些示例,(一个或多个)存储器设备540代表系统500的存储器资源。对于这些示例,(一个或多个)存储器设备540中包括的每个存储器设备是单独的存储器管芯。单独的存储器设备可以与每个设备或管芯的多个(例如,2个)通道对接。(一个或多个)存储器设备540中的给定存储器设备可以包括I/O接口电路542,并且可以具有由与该给定存储器设备的实现方式或配置相关联的接口宽度(例如,x16或x8或一些其他接口带宽)确定的带宽。I/O接口电路542可以使得存储器设备能够与存储器控制器520对接。I/O接口电路542可以包括硬件接口并且与存储器控制器520的I/O接口电路522协调操作。
在一些示例中,多个存储器设备540可以并行地连接到相同的命令和数据总线(例如,经由CMD 534和DQ 536)。在其他示例中,多个存储器设备540可以并行地连接到相同的命令总线,但连接到不同的数据总线。例如,系统500可以被配置有并行耦合的多个存储器设备540,其中每个存储器设备响应于一个命令,并且访问每个存储器设备内部的存储器资源560。对于写入操作,(一个或多个)存储器设备540中的个体存储器设备可以写入整体数据字的一部分,而对于读取操作,个体存储器设备可以取得整体数据字的一部分。作为非限制性示例,特定的存储器设备可以为读取或写入操作分别提供或接收128比特数据字中的8比特,或者256比特数据字中的8比特或16比特(取决于X8或X16设备)。该字的剩余比特可以由其他存储器设备并行提供或接收。
根据一些示例,(一个或多个)存储器设备540可以被直接布置在计算设备的主板或主机系统平台(例如,布置有处理器510的PCB(印刷电路板))上。(一个或多个)存储器设备540可以被组织成(一个或多个)存储器模块570。在一些示例中,存储器模块570可以代表双列直插存储器模块(DIMM)。在一些示例中,(一个或多个)存储器模块570可以代表多个存储器设备的其他组织或配置,这些存储器设备共享访问或控制电路的至少一部分,该电路可以是单独的电路、单独的设备或来自主机系统平台的单独的板。在一些示例中,(一个或多个)存储器模块570可以包括多个存储器设备540,并且(一个或多个)存储器模块570可以包括对布置在其上的所包括的(一个或多个)存储器设备540的多个单独通道的支持。
在一些示例中,(一个或多个)存储器设备540可以被纳入到与存储器控制器520相同的封装件中。例如,纳入在多芯片模块(multi-chip-module,MCM)中、具有硅通孔(through-silicon via,TSV)的封装件堆叠中,或者其他技术或组合。类似地,在一些示例中,(一个或多个)存储器设备540可以被纳入到(一个或多个)存储器模块570中,这些模块本身可以被纳入到与存储器控制器520相同的封装件中。将会明白,对于这些和其他示例,存储器控制器520可以是处理器510的一部分或者与处理器510集成。
如图5所示,在一些示例中,(一个或多个)存储器设备540包括存储器资源560。存储器资源560可以代表用于数据的存储器位置或存储位置的个体阵列。存储器资源560被管理为数据的行,经由字线(行)和位线(行内的个体比特)控制来访问这些行。存储器资源560可以被组织为存储器的单独通道(channel)、阶列(rank)和存储体(bank)。通道可以指代到(一个或多个)存储器设备540内的存储位置的独立控制路径。阶列可以指代多个存储器设备(例如,不同存储器设备内的相同行地址)上的共同位置。存储体可以指代(一个或多个)存储器设备540中的给定存储器设备内的存储器位置的阵列。存储体可以被划分为子存储体,对于子存储体有至少一部分的共享电路(例如,驱动器、信号线、控制逻辑),从而允许单独的寻址和访问。将会理解,通道、阶列、存储体、子存储体、存储体群组或者存储器位置的其他组织,以及这些组织的组合,在其应用对存储器资源560进行访问时可以重叠。例如,相同的物理存储器位置可以作为特定的存储体通过特定的通道被访问,该特定存储体也可以属于某个阶列。因此,可以以包容而非排斥的方式来理解存储器资源560的组织。
根据一些示例,如图5所示,(一个或多个)存储器设备540包括一个或多个寄存器544。(一个或多个)寄存器544可以代表一个或多个存储设备或存储位置,它们为操作(一个或多个)存储器设备540提供配置或设置。在一个示例中,(一个或多个)寄存器544可以为(一个或多个)存储器设备540提供存储位置以存储数据,以供存储器控制器520访问作为控制或管理操作的一部分。例如,(一个或多个)寄存器544可以包括一个或多个模式寄存器(mode register,MR)和/或可以包括一个或多个多用途寄存器。
在一些示例中,对(一个或多个)寄存器544中的一个或多个寄存器的写入或编程可以将(一个或多个)存储器设备540配置为在不同的“模式”中操作。对于这些示例,被写入到或编程到一个或多个寄存器的命令信息可以在(一个或多个)存储器设备540内触发不同的模式。额外地或者替换地,不同的模式也可以依据所触发的模式而从地址信息或其他信号线触发不同的操作。(一个或多个)寄存器544的编程设置可以指示或触发I/O设置的配置。例如,定时、端接、管芯上端接(on-die termination,ODT)、驱动器配置或其他I/O设置的配置。
根据一些示例,(一个或多个)存储器设备540包括ODT 546作为与I/O接口电路542相关联的接口硬件的一部分。ODT 546可以提供对于要被应用于到指定信号线的接口的阻抗的设置。例如,ODT 546可以被配置为向DQ 536或CMD 534中包括的信号线应用阻抗。用于ODT 546的ODT设置可以基于(一个或多个)存储器设备540中的一存储器设备是访问操作的选定目标还是非目标存储器设备而被改变。用于ODT 546的ODT设置可以影响例如CMD 534或DQ 536中包括的端接信号线上的信令的定时和反射。对用于ODT 546的ODT设置的控制可以实现更高速的操作,并且改善所应用的阻抗和负载的匹配。阻抗和负载可以被应用到I/O接口电路542、522的特定信号线(例如,CMD 534和DQ 536),而不一定被应用到所有信号线。
在一些示例中,如图5所示,(一个或多个)存储器设备540包括控制器550。控制器550可以代表(一个或多个)存储器设备540内的控制逻辑,以控制(一个或多个)存储器设备540内的内部操作。例如,控制器550对由存储器控制器520发送的命令进行解码并且生成内部操作以执行或满足命令。控制器550可以被称为内部控制器,并且与主机的存储器控制器520分离。控制器550可以包括逻辑和/或特征,以确定基于在(一个或多个)寄存器544中指示的编程或默认设置选择什么模式,并且基于所选模式来配置用于访问存储器资源560的操作或其他操作的内部执行。控制器550生成控制信号来控制(一个或多个)存储器设备540内的比特的路由,以便为所选模式提供适当的接口,并且将命令引导到存储器资源560的适当存储器位置或地址。控制器550包括命令(CMD)逻辑552,它可以对在命令和地址信号线上接收到的命令编码进行解码。因此,CMD逻辑552可以是或者可以包括命令解码器。通过命令逻辑552,存储器设备可以识别命令并且生成内部操作以执行所请求的命令。
再次提到存储器控制器520,存储器控制器520包括CMD逻辑524,它代表生成命令以发送到(一个或多个)存储器设备540的逻辑和/或特征。命令的生成可以指在调度之前的命令,或者准备好被发送的排队命令的准备。一般而言,存储器子系统中的信令包括命令内或伴随命令的地址信息,以指示或选择(一个或多个)存储器设备540应当执行该命令的一个或多个存储器位置。响应于对(一个或多个)存储器设备540的事务的调度,存储器控制器520可以经由I/O接口电路522发出命令,以使得(一个或多个)存储器设备540执行命令。在一些示例中,(一个或多个)存储器设备540的控制器550接收和解码经由I/O接口电路542从存储器控制器520接收到的命令和地址信息。基于接收到的命令和地址信息,控制器550可以控制(一个或多个)存储器设备540内的逻辑、特征和/或电路的操作的定时,以执行命令。控制器550可以被布置为按照标准或规范,例如对于(一个或多个)存储器设备540的定时和信令要求,来进行操作。存储器控制器520可以通过访问调度和控制来实现对标准或规范的遵守。
在一些示例中,存储器控制器520包括刷新(REF)逻辑526。REF逻辑526可以被用于易失性的并且需要被刷新以保持确定性状态的存储器资源。REF逻辑526例如可以指示出刷新的位置,以及要执行的刷新的类型。REF逻辑526可以在(一个或多个)存储器设备540内触发自刷新,或者通过发送刷新命令来执行外部刷新(这可被称为自动刷新命令),或者这些的组合。根据一些示例,系统500支持所有存储体刷新以及每存储体刷新。所有存储体刷新引起对在并行耦合的所有(一个或多个)存储器设备540内的存储体的刷新。每存储体刷新引起对(一个或多个)存储器设备540中的指定存储器设备内的指定存储体的刷新。在一些示例中,(一个或多个)存储器设备540内的控制器550包括REF逻辑554以在(一个或多个)存储器设备540内应用刷新。REF逻辑554例如可以生成内部操作以根据从存储器控制器520接收到的外部刷新来执行刷新。REF逻辑554可以确定刷新是否指向(一个或多个)存储器设备540,并且确定响应于该命令要刷新什么存储器资源560。
如进一步图示的,存储器控制器520包括与对于图2中的存储器控制器200所示出的类似的逻辑,包括入口逻辑102、模式生成器104、配置接口202、系统地址解码器204、存储器擦洗器QoS逻辑106、存储器擦洗器逻辑108a以及退出逻辑110。存储器控制器520也会有用于生成和访问与上面论述的图2中的表格206类似的QoS参数表格的配设(图5中未示出)。
在一些实施例中,可以在存储器设备540和/或存储器模块570上提供擦洗逻辑。例如,这被描绘为擦洗器逻辑556,它可以是控制器550的一部分,或者可以包括单独的逻辑。在一些实施例中,擦洗器逻辑556可以使得能够结合存储器擦洗器逻辑108a来执行巡查擦洗操作。在一些实施例中,擦洗器逻辑556可以实现本文对于存储器擦洗器逻辑108a所示出和描述的类似逻辑。在一些实施例中,擦洗器逻辑556可以包括加速器等,它可以被编程为使用由模式生成器104生成的一个或多个模式来执行存储器擦洗操作。
多层级存储器架构的应用
可以使用各种类型的分层级存储器架构来实现本文描述的教导和原理。例如,图6图示了采用三个层级的分层级存储器架构的抽象视图:1)“近端”存储器;2)“远端”存储器;以及3)SCM(storage class memory,存储类存储器)。术语“近端”和“远端”存储器不是指CPU和关联的存储器设备之间的物理距离,而是指用于访问存储在存储器设备中的数据的延时和/或带宽。SCM存储器是一类池式存储器——当池式存储器位于一个单独的机箱、托架或抽屉中,或者位于通过网络或结构连接的单独机架中时,池式存储器可以被称为远程池式存储器。
图6示出了平台600,其包括与近端存储器604和远端存储器606耦合的中央处理单元(CPU)602。计算节点600进一步连接到SCM存储器节点614和616中的SCM存储器610和612,这些节点经由高速、低延时结构618耦合到计算节点600。在图示的实施例中,SCM存储器610耦合到SCM节点614中的CPU 620,并且SCM存储器612耦合到SCM节点616中的CPU 622。图6进一步示出了第二或第三层级存储器,包括在经由CXL(Compute Express Link,计算快速链路)互连628耦合到平台600的CXL卡626中实现的IO(输入-输出)存储器624。CLX卡626还包括代理630和存储器控制器(memory controller,MC)632。
在一个示例下,层级1存储器包括DDR和/或HBM,层级2存储器包括3D交叉点存储器,并且T3包括池式SCM存储器,例如3D交叉点存储器。在一些实施例中,CPU可以提供支持对层级2存储器的访问的存储器控制器。在一些实施例中,层级2存储器可以包括采用DIMM外形参数的存储器设备。
对于CXL,MC 632中的其他逻辑或代理630可以被提供指令和/或数据以在IO存储器624上执行擦洗操作。例如,可以使用CXL协议通过CXL链路628发送这种指令和/或数据。对于池式SMC存储器等,可以在SCM节点上提供CPU或其他类型的处理元件(微引擎、FPGA,等等),并且将其用于执行本文所公开的擦洗操作。这样的CPU可以具有类似于系统500的配置,其中处理器具有集成的存储器控制器,或者存储器控制器可以是单独的。
图7图示了示例系统700。在一些示例中,系统700可以是计算系统,其中存储器系统可以实现DCA训练算法。系统700代表根据本文描述的任何示例的计算设备,并且可以是膝上型计算机、桌面型计算机、平板计算机、服务器、游戏或娱乐控制系统、扫描仪、复印机、打印机、路由或交换设备、嵌入式计算设备、智能电话、可穿戴设备、物联网设备或者其他电子设备。
系统700包括处理器710,该处理器为系统700提供处理、操作管理和指令的执行。处理器710可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心、或者用来为系统700提供处理的其他处理硬件、或者处理器的组合。处理器710控制系统700的整体操作,并且可以是或者可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(digital signal processor,DSP)、可编程控制器、专用集成电路(application specific integrated circuit,ASIC)、可编程逻辑器件(programmablelogic device,PLD),等等,或者这种设备的组合。
在一个示例中,系统700包括与处理器710耦合的接口712,它可以代表更高速度的接口或者高吞吐量接口,用于需要更高带宽连接的系统组件,例如存储器子系统720或图形接口组件740。接口712代表接口电路,它可以是独立的组件,或者可以被集成到处理器管芯上。如果存在,则图形接口740与图形组件对接,用于向系统700的用户提供视觉显示。在一个示例中,图形接口740可以驱动向用户提供输出的高清晰度(high definition,HD)显示器。高清晰度可以指具有大约100PPI(每英寸像素)或更大的像素密度的显示器,并且可以包括诸如全HD(例如,1080p)、视网膜显示器、4K(超高清或UHD)之类的格式或其他格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口740基于存储在存储器730中的数据或者基于由处理器710执行的操作或者这两者来生成显示。在一个示例中,图形接口740基于存储在存储器730中的数据或者基于由处理器710执行的操作或者这两者来生成显示。
存储器子系统720代表系统700的主存储器,并且提供用于将由处理器710执行的代码或者在执行例程时将要使用的数据值的存储装置。存储器子系统720的存储器730可以包括一个或多个存储器设备,例如只读存储器(read-only memory,ROM)、闪存、一个或多个种类的随机存取存储器(random access memory,RAM)(比如DRAM)、或者其他存储器设备、或者这种设备的组合。存储器730存储和托管——除其他外——操作系统(OS)732,以为系统700中的指令的执行提供软件平台。此外,应用734可以在存储器730中的OS 732的软件平台上执行。应用734代表具有其自己的操作逻辑的程序,以执行一个或多个功能的执行。进程736代表向OS 732或一个或多个应用734或者其组合提供辅助功能的代理或例程。OS732、应用734和进程736提供软件逻辑以为系统700提供功能。在一个示例中,存储器子系统720包括存储器控制器722,它是用于生成和发出命令给存储器730的存储器控制器。将会理解,存储器控制器722可以是处理器710的物理部分或者接口712的物理部分。例如,存储器控制器722可以是集成的存储器控制器,与处理器710一起被集成到电路上。
虽然没有具体图示,但将会理解,系统700可以包括设备之间的一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线,或者其他总线。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者同时将组件通信地且电气地耦合在一起。总线可以包括物理通信线路、点到点连接、桥接器、适配器、控制器、或者其他电路或者这些的组合。总线可以包括例如以下各项中的一项或多项:系统总线、外围组件互连(PeripheralComponent Interconnect,PCI)总线、超传输总线(HyperTransport)或工业标准架构(industry standard architecture,ISA)总线、小型计算机系统接口(small computersystem interface,SCSI)总线、通用串行总线(universal serial bus,USB)、或者电气与电子工程师学会(Institute of Electrical and Electronics Engineers,IEEE)标准1394总线。
在一个示例中,系统700包括接口714,它可以耦合到接口712。接口714可以是比接口712更低速度的接口。在一个示例中,接口714代表接口电路,它可以包括独立的组件和集成电路。在一个示例中,多个用户接口组件或外围组件或者这两者耦合到接口714。网络接口750向系统700提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口750可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或者其他基于有线或无线标准的或专属的接口。网络接口750可以与远程设备交换数据,这可以包括发送存储在存储器中的数据或者接收要被存储在存储器中的数据。
在一个示例中,系统700包括一个或多个I/O接口760。(一个或多个)I/O接口760可以包括一个或多个接口组件,用户通过这些接口组件与系统700进行交互(例如,音频、字母数字、触觉/触摸、或者其他接口方式)。外围接口770可以包括上文没有具体提到的任何硬件接口。外设一般是指依赖性地连接到系统700的设备。依赖性连接是指这样的连接:系统700提供软件平台或硬件平台或者这两者,操作在该平台上执行,并且用户与该平台进行交互。
在一个示例中,系统700包括存储子系统780,用于以非易失性方式存储数据。在一个示例中,在某些系统实现方式中,存储子系统780的至少某些组件可以与存储器子系统720的组件重叠。存储子系统780包括(一个或多个)存储设备784,其可以是或者可以包括用于以非易失性方式存储大量数据的任何传统介质,例如一个或多个磁性的、固态的、或者基于光学的盘,或者这些的组合。(一个或多个)存储设备784以持久的状态来保存代码或指令和数据786(即,尽管到系统700的电力中断,该值仍被保留)。(一个或多个)存储设备784可以被笼统地认为是“存储器”,虽然存储器730通常是执行或操作存储器,以提供指令给处理器710。(一个或多个)存储设备784是非易失性的,而存储器730可以包括易失性存储器(即,如果到系统700的电力被中断,数据的值或状态是不确定的)。在一个示例中,存储子系统780包括控制器782来与(一个或多个)存储设备784对接。在一个示例中,控制器782是接口714或处理器710的物理部分,或者可以包括处理器710和接口714两者中的电路或逻辑。
电源702向系统700的组件提供电力。更具体而言,电源702通常与系统700中的一个或多个电力供应源704对接,以向系统700的组件提供电力。在一个示例中,电力供应源704包括AC到DC(交流电到直流电)适配器,以插入到壁式插座中。这种AC电力可以是可再生能量(例如,太阳能)电源702。在一个示例中,电源702包括DC电源,例如外部AC到DC转换器。在一个示例中,电源702或电力供应源704包括无线充电硬件,以经由接近充电场来充电。在一个示例中,电源702可以包括内部电池或燃料电池源。
如本文所述,对存储器设备的提及可以适用于不同的存储器类型。如本文所述的存储器子系统可以与若干个存储器技术或标准兼容,例如DDR3(双数据速率版本3,JESD79-3,最初由JEDEC(联合电子设备工程委员会)于2007年6月27日发布),DDR4(DDR版本4,JESD79-4,最初由JEDEC于2012年9月发布),LPDDR3(低功率DDR版本3,JESD209-3B,最初由JEDEC于2013年8月发布),LPDDR4(低功率DDR版本4,JESD209-4,最初由JEDEC于2014年8月发布),WIO2(宽I/O 2(WideIO2),JESD229-2,最初由JEDEC于2014年8月发布),HBM(高带宽存储器DRAM,JESD235,最初由JEDEC于2013年10月发布),LPDDR5(最初由JEDEC于2019年2月发布),HBM2((HBM版本2),最初由JEDEC于2018年12月发布),DDR5(DDR版本5,最初由JEDEC于2020年7月发布),或者其他存储器技术或存储器技术的组合,以及基于这种规范的衍生或扩展的技术。
除了用于具有处理器的计算平台和系统中以外,本文公开的教导和原理还可以被应用到其他处理单元(统称为XPU),包括以下各项中的一项或多项:图形处理器单元(Graphic Processor Unit,GPU)或通用GPU(General Purpose GPU,GP-GPU)、张量处理单元(Tensor Processing Unit,TPU)、数据处理器单元(Data Processor Unit,DPU)、基础设施处理单元(Infrastructure Processing Unit,IPU)、人工智能(ArtificialIntelligence,AI)处理器或AI推理单元和/或其他加速器、FPGA和/或其他可编程逻辑(用于计算目的),等等。虽然本文的一些图示出了对处理器的使用,但这仅仅是示例性的,而非限制性的。一般而言,任何类型的XPU都可以被用来代替图示实施例中的处理器。此外,如所附权利要求中所使用的,术语“处理器”被用来概括地涵盖处理器、CPU和各种形式的XPU。
虽然已参考特定实现方式描述了一些实施例,但根据一些实施例,其他实现方式是可能的。此外,不需要按图示和描述的特定方式来布置附图中图示和/或本文描述的元素或其他特征的布置和/或顺序。根据一些实施例,许多其他布置是可能的。
在附图中示出的每个系统中,元素在一些情况下可各自具有相同的标号或不同的标号以暗示出所表示的元素可以是不同的和/或相似的。然而,元素可以灵活到足以具有不同的实现方式并且与本文示出或描述的一些或所有系统一起工作。附图中示出的各种元素可以是相同或者不同的。哪一个被称为第一元素以及哪一个被称为第二元素,是任意的。
在说明书和权利要求中,可以使用术语“耦合”和“连接”及其衍生词。应当理解,并不旨在让这些术语作为彼此的同义词。更确切地说,在特定实施例中,“连接”可以被用于指示出两个或更多个元素与彼此发生直接物理或电气接触。“耦合”的意思可以是两个或更多个元素发生直接物理或电气接触。然而,“耦合”也可以指两个或更多个元素没有与彼此发生直接接触,但仍与彼此合作或交互。此外,“通信耦合”是指使得可以与彼此发生或不发生直接接触的两个或更多个元素能够与彼此通信。例如,如果组件A连接到组件B,组件B进而又连接到组件C,那么组件A可以使用组件B作为中介组件与组件C进行通信耦合。
实施例是本发明的实现方式或示例。说明书中提及“一实施例”、“一个实施例”、“一些实施例”或者“其他实施例”的意思是,结合这些实施例描述的特定特征、结构或特性被包括在本发明的至少一些实施例中,但不一定是所有实施例中。“一实施例”、“一个实施例”或者“一些实施例”的各种出现不一定全都指的是相同实施例。
在一个或多个特定实施例中并不需要包括本文描述和图示的所有组件、特征、结构、特性,等等。如果说明书陈述例如“可”、“可能”、“可以”或者“能够”包括某一组件、特征、结构或特性,那么并不要求包括该特定组件、特征、结构或特性。如果说明书或权利要求提及“一”元素,那么并不意味着只有一个该元素。如果说明书或权利要求提及“一额外”元素,那么并不排除有多于一个该额外元素。
如上所述,本文的实施例的各种方面可以由相应的软件和/或固件组件和应用来促进,例如由嵌入式处理器等等执行的软件和/或固件。因此,本发明的实施例可以被用作或者用于支持在某种形式的处理器、处理核心或嵌入式逻辑上执行的软件程序、软件模块、固件和/或分布式软件、在处理器或核心上运行的虚拟机,或者以其他方式在非暂态计算机可读或机器可读存储介质上或在其内实施或实现。非暂态计算机可读或机器可读存储介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,非暂态计算机可读或机器可读存储介质包括以计算机或计算机器(例如,计算设备、电子系统,等等)可访问的形式提供(即,存储和/或传输)信息的任何机制,例如可记录/不可记录介质(例如,只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁盘存储介质、光存储介质、闪存设备,等等)。内容可以是直接可执行的(“对象”或“可执行”形式)、源代码、或者差异代码(“增量”或“补丁”代码)。非暂态计算机可读或机器可读存储介质也可以包括可从其中下载内容的存储装置或数据库。非暂态计算机可读或机器可读存储介质还可以包括在销售或交付时其上存储有内容的设备或产品。因此,交付带有存储的内容的设备,或者通过通信介质提供内容以供下载,可被理解为提供一种包括具有本文描述的这种内容的非暂态计算机可读或机器可读存储介质的制造品。
上面提到的作为本文描述的过程、服务器或工具的各种组件可以是用于执行所描述的功能的手段。由本文描述的各种组件执行的操作和功能可以通过在处理元件上运行的软件、经由嵌入式硬件等等、或者通过硬件和软件的任何组合来实现。这种组件可以被实现为软件模块、硬件模块、专用硬件(例如,特定应用硬件、ASIC、DSP,等等)、嵌入式控制器、硬连线电路、硬件逻辑,等等。可以经由包括非暂态计算机可读或机器可读存储介质的制造品来提供软件内容(例如,数据、指令、配置信息,等等),该存储介质提供代表可被执行的指令的内容。该内容可能导致计算机执行本文描述的各种功能/操作。
就本文使用的而言,由术语“……中的至少一者”联接的项目的列表可意指所列出的术语的任何组合。例如,短语“A、B或C中的至少一者”可意指A;B;C;A和B;A和C;B和C;或者A、B和C。
以上对本发明的图示实施例的描述,包括摘要中描述的那些,并不旨在是详尽无遗的或者将本发明限制到所公开的精确形式。虽然出于说明目的在本文中描述了本发明的具体实施例及其示例,但正如相关领域的技术人员将会认识到的,在本发明的范围内各种等同修改是可能的。
可以按照以上详细描述对本发明做出这些修改。所附权利要求中使用的术语不应当被解释为将本发明限制到说明书和附图中公开的具体实施例。更确切地说,本发明的范围完全由所附权利要求来确定,这些权利要求应根据所确立的权利要求解读准则来被解释。

Claims (20)

1.一种用于擦洗计算系统上的存储器的方法,所述计算系统包括一个或多个存储器设备并且运行第一进程或应用和第二进程或应用,所述方法包括:
使用第一巡查擦洗策略来对与所述第一进程或应用相关联的存储器设备上的存储器的至少第一部分执行巡查擦洗;以及
使用第二巡查擦洗策略来对与运行的所述第二进程或应用相关联的存储器设备上的存储器执行巡查擦洗。
2.如权利要求1所述的方法,还包括:
为所述第一巡查擦洗策略采用的巡查擦洗分配第一带宽;并且
为所述第二巡查擦洗策略采用的巡查擦洗分配第二带宽。
3.如权利要求1或2所述的方法,还包括:
使用所述第二巡查擦洗策略或者第三巡查擦洗策略来对与所述第一进程或应用相关联的存储器设备上的存储器的第二部分执行巡查擦洗。
4.如权利要求1至3中任一项所述的方法,还包括:
实现用于所述第一巡查擦洗策略的第一擦洗模式;并且
实现用于所述第二巡查擦洗策略的第二擦洗模式。
5.如权利要求4所述的方法,还包括:
对用于所述第一进程或应用的存储器访问模式进行监视和预测中的至少一者;并且
至少部分地基于监视和预测的访问模式中的至少一者来生成将由所述第一擦洗模式采用的擦洗模式。
6.如权利要求5所述的方法,其中,所述第一擦洗模式是由所述第一进程或应用基于其对更重要的存储器区域的知识而指定的。
7.如权利要求6所述的方法,其中,所述计算系统包括与所述一个或多个存储器设备耦合的存储器控制器,并且其中,所述第一擦洗模式是通过对嵌入在所述存储器控制器上的加速器进行编程而生成的。
8.如权利要求1至4中任一项所述的方法,还包括:
生成要被应用于所述第一巡查擦洗策略和所述第二巡查擦洗策略中的每一者的一组服务质量(QoS)参数,
其中,所述QoS参数包括要被用于巡查擦洗的分配带宽。
9.如权利要求8所述的方法,其中,用于所述第一巡查擦洗策略的一组QoS参数包括:存储器地址范围,分配带宽,以及标识将使用所述分配带宽来应用到所述存储器地址范围中的存储器的擦洗模式的标记。
10.如权利要求8或9所述的方法,其中,所述方法是针对由所述计算系统托管的多租户环境实现的,并且其中,所述第一进程或应用包括在分配给第一租户的第一虚拟机或容器上运行的应用,并且其中,所述第二进程或应用包括在分配给第二租户的第二虚拟机或容器上运行的应用。
11.一种计算系统,包括:
一个或多个存储器设备,其中存储了用于多个应用的代码和数据;
处理器,具有一个或多个核心并且具有与所述一个或多个存储器设备耦合的集成存储器控制器,用于所述多个应用中的两个或更多个应用的代码在所述一个或多个核心上执行,所述集成存储器控制器被配置为,
使用第一巡查擦洗策略来对所述一个或多个存储器设备中的与第一应用或进程相关联的存储器设备上的存储器的至少第一部分执行巡查擦洗,其中,所述进程与所述第一应用相关联;以及
使用第二巡查擦洗策略来对所述一个或多个存储器设备中的与第二应用或进程相关联的存储器设备上的存储器执行巡查擦洗,其中,所述进程与所述第二应用相关联。
12.如权利要求11所述的计算系统,其中,所述存储器控制器还被配置为:
为所述第一巡查擦洗策略采用的巡查擦洗分配第一带宽;并且
为所述第二巡查擦洗策略采用的巡查擦洗分配第二带宽。
13.如权利要求11或12所述的计算系统,其中,所述存储器控制器还被配置为:
使用所述第二巡查擦洗策略或者第三巡查擦洗策略来对与所述第一应用或进程相关联的存储器设备上的存储器的第二部分执行巡查擦洗。
14.如权利要求11至13中任一项所述的计算系统,其中,所述存储器控制器还被配置为:
生成用于所述第一巡查擦洗策略的第一擦洗模式;并且
生成用于所述第二巡查擦洗策略的第二擦洗模式。
15.如权利要求14所述的计算系统,其中,所述存储器控制器具有嵌入式加速器,并且其中,所述第一擦洗模式是通过对所述嵌入式加速器进行编程而生成的。
16.一种存储器控制器,包括:
输入/输出(I/O)接口,被配置为耦合到一个或多个存储器设备;以及
接口,所述接口使得能够指定被存储器擦洗器QoS逻辑使用的QoS策略,以用于执行与要在计算系统中执行的相应进程或应用相关联的存储器的巡查擦洗,所述存储器控制器被配置为安装在所述计算系统中,所述计算系统包括一个或多个存储器设备。
17.如权利要求16所述的存储器控制器,其中,QoS策略包括在执行与该QoS策略相关联的存储器的巡查擦洗时要使用的分配带宽。
18.如权利要求16或17所述的存储器控制器,其中,QoS策略包括被应用该QoS策略的存储器地址范围。
19.如权利要求16至18中任一项所述的存储器控制器,还包括:模式生成器,其被配置为生成要用于执行存储器擦洗的擦洗模式。
20.如权利要求19所述的存储器控制器,还包括:加速器,所述加速器由所述模式生成器进行编程以使用一个或多个擦洗模式来执行存储器擦洗。
CN202210512516.9A 2021-06-23 2022-05-12 应用感知存储器巡查擦洗技术 Pending CN115512758A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/356,338 2021-06-23
US17/356,338 US20210318929A1 (en) 2021-06-23 2021-06-23 Application aware memory patrol scrubbing techniques

Publications (1)

Publication Number Publication Date
CN115512758A true CN115512758A (zh) 2022-12-23

Family

ID=78006743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210512516.9A Pending CN115512758A (zh) 2021-06-23 2022-05-12 应用感知存储器巡查擦洗技术

Country Status (3)

Country Link
US (1) US20210318929A1 (zh)
CN (1) CN115512758A (zh)
DE (1) DE102022106020A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789649B2 (en) * 2021-04-22 2023-10-17 Nvidia Corporation Combined on-package and off-package memory system

Also Published As

Publication number Publication date
DE102022106020A1 (de) 2022-12-29
US20210318929A1 (en) 2021-10-14

Similar Documents

Publication Publication Date Title
US9921751B2 (en) Methods and systems for mapping a peripheral function onto a legacy memory interface
US11733870B2 (en) Near-memory compute module
US7539842B2 (en) Computer memory system for selecting memory buses according to physical memory organization information stored in virtual address translation tables
US7490217B2 (en) Design structure for selecting memory busses according to physical memory organization information stored in virtual address translation tables
KR20120097389A (ko) 하이브리드 메모리를 위한 시스템, 방법 및 장치
US20210141692A1 (en) Distribution of error checking and correction (ecc) bits to allocate ecc bits for metadata
US20180188960A1 (en) Method and apparatus for redirecting memory access commands sent to unusable memory partitions
CN113434330A (zh) 行可寻址且列可寻址的存储器中的动态数据的错误纠正
US20240013851A1 (en) Data line (dq) sparing with adaptive error correction coding (ecc) mode switching
CN115512758A (zh) 应用感知存储器巡查擦洗技术
US10732859B2 (en) Systems and methods for granular non-volatile memory health visibility to a host
NL2029789B1 (en) Adaptive error correction to improve for system memory reliability, availability, and serviceability (ras)
EP4071583A1 (en) Avoiding processor stall when accessing coherent memory device in low power
US20220012126A1 (en) Translation cache and configurable ecc memory for reducing ecc memory overhead
US20210191811A1 (en) Memory striping approach that interleaves sub protected data words
US20230222025A1 (en) Ras (reliability, availability, and serviceability)-based memory domains
US20220222178A1 (en) Selective fill for logical control over hardware multilevel memory
US20230110110A1 (en) Starvation mitigation for associative cache designs
US20240078041A1 (en) Die-Based Rank Management
US20210286727A1 (en) Dynamic random access memory (dram) with scalable meta data
US20240071437A1 (en) Die Disablement
US20220229575A1 (en) Dynamic multilevel memory system
US20220326860A1 (en) Method and apparatus to perform bank sparing for adaptive double device data correction
US20190108896A1 (en) Systems and methods for providing post-package repair visibility to a host for memory reliability, availability, and serviceability

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication