CN107003946B - 用于管理从存储器设备回收的方法、装置、设备和介质 - Google Patents

用于管理从存储器设备回收的方法、装置、设备和介质 Download PDF

Info

Publication number
CN107003946B
CN107003946B CN201580064482.XA CN201580064482A CN107003946B CN 107003946 B CN107003946 B CN 107003946B CN 201580064482 A CN201580064482 A CN 201580064482A CN 107003946 B CN107003946 B CN 107003946B
Authority
CN
China
Prior art keywords
memory
count
source agent
eviction
cost
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
CN201580064482.XA
Other languages
English (en)
Other versions
CN107003946A (zh
Inventor
A·A·萨米
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 CN107003946A publication Critical patent/CN107003946A/zh
Application granted granted Critical
Publication of CN107003946B publication Critical patent/CN107003946B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

认识到不是所有的回收都具有相同的系统性能成本的存储器回收。管理设备保持与存储器的每个部分相关联的权重和/或计数。每个存储器部分与生成对存储器部分的请求的源代理相关联。管理设备通过指示延迟影响的成本因子来调整权重,如果回收的存储器部分在被回收之后再次被请求则会发生延迟影响。延迟影响是要替换存储器部分对相关联的源代理的延迟影响。响应于检测针对存储器设备的回收触发,管理设备可以识别具有最极端权重(诸如最高或最低值权重)的存储器部分。管理设备利用触发回收的存储器部分替换所识别的存储器部分。

Description

用于管理从存储器设备回收的方法、装置、设备和介质
技术领域
本发明的实施例总体上涉及存储器管理,并且更具体地,涉及存储器中的成本感知的页交换和替换。
版权通知/许可
本专利文档的公开部分可以包含受版权保护的内容。版权所有者不反任何人将本专利文档或者本专利公开如其出现在专利商标局的专利文件或记录中那样进行复制,但是另外保留全部任何版权权利。版权通知适用于以下所描述的以及本文附图中的全部数据,并且适用于以下所描述的任意软件:版权
Figure GDA0002985968680000011
2014,英特尔公司,保留全部权利。
背景技术
当存储器设备存储数据接近容量或者达到容量时,响应于来自运行的应用的另外的数据存取请求,将需要替换数据以便于能够存储新的数据。一些正在运行的应用对延迟较为敏感而其它应用则对带宽约束较为敏感。传统上存储器管理器确定存储器的什么部分用于替换或者交换以试图减少错误或者未命中的数量。但是,减少错误或者未命中的总数对于性能而言可能不是最好的,因为从运行的应用的工作负荷的视角而言一些错误比其它错误更昂贵。
附图说明
以下描述包括对附图的讨论,附图通过本发明的实施例的实施示例的方式给出图示。应当通过示例而非限制的方式对附图进行理解。如本文中所使用的,对一个或多个“实施例”的引用应理解为描述包括在本发明的至少一个实施中的特定特征、结构和/或特性。因此,本文中出现的诸如“在一个实施例中”或者“在替代的实施例中”的短语描述本发明的各种实施例和实施方式,并非必须全部指的是相同的实施例。但是,它们也并非必须是互相排斥的。
图1A是实施具有基于成本的因子的存储器回收的系统实施例的框图。
图1B是具有基于成本的因子的在存储器控制器处实施存储器回收的系统实施例的框图。
图2是在多级存储器系统中实施具有基于成本的因子的存储器回收的系统实施例的框图。
图3是基于具有LRU因子和基于成本的因子的计数来实施存储器回收的系统实施例的框图。
图4是用于管理从存储器设备回收的过程的实施例的流程图。
图5是用于选择回收候选者的过程的实施例的流程图。
图6是用于管理回收计数的过程的实施例的流程图。
图7是其中可以实施基于成本的回收管理的计算系统的实施例的框图。
图8是其中可以实施基于成本的回收管理的移动设备的实施例的框图。
随后对特定细节和实施方式的描述包括对附图的描述以及讨论本文中所提出的创造性的概念的其它可能的实施例或者实施方式,附图可以对以下所描述的实施例中的一些或者全部进行描述。
具体实施方式
如本文所描述的,存储器回收考虑关于系统性能的不同的回收成本。可以将存储器回收配置为回收对系统性能具有较低成本影响的存储器部分,而不是仅仅基于新近度和/或对存储器特定部分的使用来保持权重或者值。在一个实施例中,管理设备保持与每个存储器部分相关联的权重和/或计数,该权重和/或计数包括成本因子。每个存储器部分与生成向存储器部分的请求的应用或者源代理相关联。成本因子指示如果被回收的存储器部分在被回收之后再次被请求则会出现的对源代理的延迟影响,或者替换被回收的存储器部分的延迟影响。响应于检测到针对存储器设备的回收触发,管理设备可以识别具有最极端权重(诸如最高或者最低的权重)的存储器部分。可以将系统配置为使得最低权重或者最高权重与最高回收成本相对应。在一个实施例中,管理设备保持具有较高回收成本的存储器部分,并且替换具有最低回收成本的存储器部分。因此,可以将系统配置为回收将对系统性能具有最小影响的存储器部分。在一个实施例中,使用所描述的基于成本的方法可以改进具有延迟敏感的工作负载的系统中的延迟。
应该理解的是,可以使用不同的存储器架构。单级存储器(SLM)具有单级存储器资源。存储器的等级指的是具有相同或者实质上相似的存取时间的设备。多级存储器(MLM)包括多级存储器资源。每级存储器资源具有不同的存取时间,越快的存储器越靠近处理器或者处理器核心,越慢的存储器越远离核心。典型地,除了变得越快之外越靠近的存储器趋向于越小,而越慢的存储器趋向于具有越大的存储空间。在一个实施例中,系统中最高等级的存储器被称为主存储器,而其它层可以被称为高速缓存。最高等级的存储器从存储资源获得数据。
本文中所描述的基于成本的方法可以应用到SLM或者MLM。虽然架构和实施方式可以不同,但是在一个实施例中,SLM中的回收可以被称为与页替换相结合地出现,而MLM中的回收可以被称为与页交换相结合的出现。如本领域技术人员将理解的是,页替换和页交换指的是从存储器资源回收或者移除数据以便为来自较高等级或者来自存储设备中的数据腾出空间。在一个实施例中,SLM或者MLM中的所有存储器资源为易失性存储器设备。在一个实施例中,存储器的一个或多个等级包括非易失性存储器。存储设备是非易失性存储器。
在一个实施例中,存储器管理将权重与每页或者每个存储器部分相关联以用于实施成本感知的页或者部分替换。应该理解的是,实施权重是一个非限制性的示例。传统地,与存储器页相关联的权重仅源于新近度信息(例如,仅LRU(最近最少使用)信息)。如本文中所描述的,存储器管理可以基于新近度信息(例如,LRU信息)将权重或者其它计数与每页相关联,并且基于成本信息修改或者调整权重或者计数。理想地,将不选择较最近存取的以及与高成本相关联的页或者部分用于替换或者交换。相反,存储器管理将从不是最近的并且还与低成本相关联的页中选择回收候选者。
在一个实施例中,存储器管理生成成本测量,成本测量可以被表达为:
权重=新近度+α(成本)
权重是要存储的结果或者计数,用于确定针对回收的候选资格。在一个实施例中,存储器管理根据已知的LRU算法计算用于页或者部分的新近度。在一个实施例中,存储器管理根据用于与页或者部分相关联的源代理的并行量计算用于页或者部分的成本。例如,在一个实施例中,成本与通过一段时间作出的请求数量或者当前在请求队列中待处理的请求数量成反比。可以将因子α用于增加或者减少基于成本的因子相对于新近度因子的权重。可以看出,当α=0时,可以仅基于新近度信息来决定页或者部分的权重。
在一个实施例中,α是动态可调整的因子。应该训练α的值以给出用于成本的适当的权重。在一个实施例中,基于运行在定义的架构上的一列应用在线下执行训练,以找到跨所有应用平均的、针对特定待处理队列计数的α的适当的值。在一个实施例中,可以基于执行高速缓存管理的系统的性能或者条件来修改α的值。
可以将对存储器设备的引用应用于不同的存储器类型。存储器设备通常指的是易失性存储器技术。易失性存储器是如果设备的电源中断则其状态(以及因此存储在其上的数据)是不确定的存储器。非易失性存储器指的是即使设备的电源中断其状态也是确定的存储器。动态易失性存储器需要刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或者诸如同步DRAM(SDRAM)的一些变形。如本文中所描述的存储器子系统可以与诸如以下的许多存储器技术以及基于这些规范的衍生或者延伸的技术兼容:DDR3(双倍数据速率版本3,由JEDEC(联合电子设备工程会议)在2007年6月27日原始发布,当前发布21)、DDR4(DDR版本4,由JEDEC在2012年9月出版最初的规范)、LPDDR3(低功率DDR版本3,JESD209-3B,由JEDEC在2013年8月出版)、LPDDR4(低功率双倍数据速率(LPDDR)版本4,JESD209-4,由JEDEC在2014年8月原始出版)、WIO2(宽I/O 2(WideIO2)、JESD229-2,由JEDEC在2014年8月原始出版)、HBM(高带宽存储器DRAM,JESD235,由JEDEC在2013年10月原始出版)、DDR5(DDR版本5,当前由JEDEC讨论中)、LPDDR5(当前由JEDEC讨论中)、WIO3(宽I/O 3,当前由JEDEC讨论中)、HBM2(HBM版本2,当前由JEDEC讨论中),和/或其它。
除易失性存储器之外或者替代易失性存储器,在一个实施例中,对存储器设备的引用可以指的是即使设备的电源中断其状态也是确定的非易失性存储器设备。在一个实施例中,非易失性存储器设备是诸如NAND或者NOR技术的区块可寻址存储器设备。因此,存储器设备也可以包括诸如三维交叉点存储器设备或者其它字节可寻址非易失性存储器设备的下一代非易失性设备。在一个实施例中,存储器设备可以是或者包括多阈值级NAND闪速存储器、NOR闪速存储器、单级或多级相变存储器(PCM)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、并入忆阻器技术的磁阻随机存取存储器(MRAM)、或者自旋转移力矩(STT)-MRAM或者以上任何的组合、或者其它存储器。
图1A是实施具有基于成本的因子的存储器回收的系统实施例的框图。系统102表示存储器子系统的元件。存储器子系统至少包括存储器管理120和存储器设备130。存储器设备130包括存储器的多个部分132。在一个实施例中,每个部分132是页(例如,在某些计算系统中4k字节)。在一个实施例中,每个部分132是与页不同的大小。针对系统102的不同的实施方式,页大小可以是不同的。页可以指的是存储器130内一次引用的数据的基本单元。
主机110表示硬件和软件平台,存储器130为主机110存储数据和/或代码。主机110包括处理器112以用于在系统102内执行操作。在一个实施例中,处理器112是单核心处理器。在一个实施例中,处理器112是多核处理器。在一个实施例中,处理器112表示系统102中执行主操作系统的主计算资源。在一个实施例中,处理器112表示图形处理器或者外围处理器。由处理器112进行的操作生成对存储在存储器130中的数据的请求。
代理114表示由处理器112执行的程序,并且是用于向存储器130进行存取请求的源代理。在一个实施例中,代理114是诸如终端用户应用的分立的应用。在一个实施例中,代理114包括系统应用。在一个实施例中,代理114表示主机110内的线程或者进程或者其它执行单元。存储器管理120管理由主机110向存储器130进行的存取。在一个实施例中,存储器管理120是主机110的一部分。在一个实施例中,存储器管理120可以被认为是存储器130的一部分。存储器管理120被配置为至少部分基于与每个部分相关联的成本因子来实施部分132的回收。在一个实施例中,存储器管理表示由处理器112上的主机操作系统执行的模块。
如示出的,存储器管理120包括处理器126。处理器126表示使存储器管理120能够计算针对存储器部分132的计数或者权重的硬件处理资源。在一个实施例中,处理器126是处理器112或者是处理器112的一部分。在一个实施例中,处理器126执行回收算法。处理器126表示使存储器管理120能够计算用于确定响应于回收触发而回收哪个存储器部分132的信息的计算硬件。因此,在一个实施例中,处理器126可以被称为回收处理器,其指的是计算用于选择回收候选者的计数或者权重。
存储器管理120至少部分地基于针对特定回收候选者从存储器130回收或者交换对于相关联的代理114的成本。因此,存储器管理120将优选地回收或者交换出低成本页。在延迟约束的系统中,高成本与这样的存储器部分(例如,页)相关联:针对该存储器部分的未命中将引起较显著的性能打击。因此,如果存储器部分被回收并且随后的请求需要再次存取该存储器部分,那么在相比于另一个存储器部分该存储器部分引起较多延时的情况下,该存储器部分将对性能具有较显著的影响。
在一个实施例中,成本与应用支持请求中的多少并行性成正比。某些存储器请求在能够请求额外的数据之前需要对某些数据进行存取和操作,这增加了请求的串行度。可以将一些存储器请求与其它请求并行地执行,或者一些存储器请求在存取存储器部分之前不依赖关于另一部分的操作。因此,并行请求可以具有相对于延迟的较低成本,而串行请求具有较高的延迟成本。
考虑一连串高速缓存未命中沿存储器层级向下传递。存储器管理120可以沿存储器层级向下发送并行的高速缓存未命中P1、P2、P3和P4。存储器管理还可以发送串行的高速缓存未命中S1、S2和S3。可以将并行的高速缓存未命中并行地沿存储器层级向下发送,并因此共享高速缓存未命中的成本(即,很好地隐藏存储器延迟)。与之相比,将串行的未命中串行地沿存储器层级向下发送,并且不能共享延迟。因此,串行的未命中对存储器延迟更敏感,使得相比于由并行的未命中所存取的那些高速缓存区块,由这些串行的未命中所存取的高速缓存区块成本更高。
从存储器130的等级来说,如果出现页错误(针对SLM)或者页未命中(针对MLM),如果存在许多来自相同源代理114的待处理的请求,则页错误/未命中可以共享页错误或者页交换的成本。具有低数量请求的代理114将对延迟较敏感。因此,具有较高存储器等级并行性(MLP)的代理114可以通过向主存储器130发出许多请求来隐藏延迟。相比于作为不示出高等级的MLP的应用(诸如指针追逐应用)的代理114,替换与作为较高MLP应用的代理114相关联的部分或者页132应该成本较低。当MLP低时,代理向存储器130发送较少的并行请求,这使得程序对延迟更加敏感。
与以上所描述的相似,存储器管理120可以通过计算与每个部分132相关联的成本或者权重来实施成本感知的替换。系统102示出了具有队列122的存储器管理120。队列122表示从代理114到存储器130的待处理的存储器存取请求。针对不同的实施方式,队列122的深度是不同的。队列122的深度可以影响应该使用什么比例因子α(或者针对不同的权重计算的等价物)以增加基于成本的对权重的贡献。本文在一个实施例中,可以使用表达回收计数以指示针对存储器部分计算的包括成本部分的值或者权重。在一个实施例中,存储器管理120实施以上所描述的等式,其中将权重计算为新近度信息和成本的按比例调节版本的加和。如之前所描述的,在一个实施例中,根据针对系统102的架构所训练的信息按比例调节成本因子。应该理解的是,示例不表示存储器管理120可以实施成本感知的回收/替换的所有方式。受训练的信息是在系统的线下训练期间收集的信息,其中在不同的负载、配置和/或操作下测试系统以识别预期的性能/行为。因此,可以根据观察到的性能按比例调节成本因子以用于具体的架构或者其它情况。
新近度信息可以包括特定存储器部分132最近被相关联的代理114存取的新近程度的表示。本领域技术人员会理解用于保持新近度信息的技术,诸如在LRU(最近最少使用)或者MRU(最近最多使用)实施方式中使用的技术或者相似技术。在一个实施例中,可以认为新近度信息是一种存取历史信息。例如,存取历史可以包括最后存取存储器部分是什么时候的指示。在一个实施例中,存取历史可以包括已经多频繁地存取存储器部分的指示。在一个实施例中,存取历史可以包括表示最后使用存储器部分是什么时候以及已经多久使用一次存储器部分(例如,存储器部分有多“热门”)两者的信息。其它形式的存取历史是已知的。
在一个实施例中,存储器管理120可以基于系统102的实施方式动态调整比例因子α。例如,存储器管理120可以执行不同形式的预先提取。在一个实施例中,响应于预先提取中不同等级的进取性,存储器管理120可以调整比例因子α以用于计算成本从而确定回收候选者。例如,进取的预先提取可以在存储器等级处提供MLP错误的表现。
在一个实施例中,存储器管理120包括预先提取队列122中的数据,该队列包括针对这样的数据的请求:该数据还未被应用所请求,但是期望在被请求的数据之后不久的将来需要该数据。在一个实施例中,当计算权重或者计数以用于确定回收候选者时,存储器管理120忽略预先提取请求。因此,存储器管理120可以出于计算成本的目的而将预先提取请求视为请求,或者可以出于计算成本的目的而忽略预先请求。可能优选的是,如果系统102包括训练好的预先提取器,则当计算权重时,使存储器管理120考虑预先请求。
应该理解的是,某些代理114可以是具有低的存储器引用计数的CPU(中央处理单元)限制应用。在一个实施例中,这样的代理将被认为具有低MLP,这可以导致高成本。但是,通过在计数或者权重中包括新近度因子,应该理解的是,这样的CPU限制应用可以具有低新近度分量,其可以补偿高成本的影响。在一个实施例中,权重或者计数是包括指示存储器部分132最近被存取的新近程度的值的计数。
在一个实施例中,表124表示由存储器管理120维持以用于管理回收的信息。在不同的实施方式中,表124可以被称为回收表、权重表、回收候选者表或者其它。在一个实施例中,表124包括用于高速缓存在存储器130中的每个存储器部分132的计数或者权重。在一个实施例中,可以对“存储”数据的特定页或者存储器部分132的存储器管理120作出引用。应该理解的是,存储器管理120并非必须是其中存储真实数据的存储器的一部分。但是,该声明表达了存储器管理120可以包括表124和/或用于追踪存储在存储器130中的数据元素的其它机制的事实。此外,当从由存储器管理120进行的监测中移除项目时,在存储器130中重写数据或者至少使数据可用于重写。
在一个实施例中,存储器管理120通过以1/N增加成本计数器来计算权重的成本因子或者成本分量,其中N为当前针对源代理114排队的与部分相关联的并行请求的数量。在一个实施例中,针对与存储器130相关联的时钟的每个时钟周期,存储器管理以1/N增加成本。因此,例如,考虑两个代理114,针对该示例标记为代理0和代理1。假设代理0在队列122中有单个待处理的请求。进一步地假设代理1有100个在队列122中待处理的请求。如果为了从高速缓存未命中返回数据代理必须等待100个时钟周期,则代理0和代理1两者将看到100个周期。但是,代理1有100个待处理的请求,并因此可将延迟有效地看作大约每请求一个周期,而代理0看到大约每请求100个周期的有效性。应该理解的是,可以使用不同的计算。在一个实施例中,当可以使用不同的计算时,存储器管理120计算成本因子,其指示源代理114隐藏延迟或者因为等待对系统102操作中的存储器存取请求进行服务的延迟的能力。
图1B是具有基于成本的因子的在存储器控制器处实施存储器回收的系统实施例的框图。系统104表示存储器子系统的组件,并且可以是根据图1A的系统102的系统的一个示例。系统104和102之间的相同的附图标记可以被理解为用于识别相似的组件,并且可以将以上描述很好地等价地应用到这些组件中。
在一个实施例中,系统104包括存储器控制器,其为对存储器130的存取进行控制的电路或者芯片。在一个实施例中,存储器130是DRAM设备。在一个实施例中,存储器130表示诸如所有与存储器控制器140相关联的设备的多个DRAM设备。在一个实施例中,系统104包括多个存储器控制器,每个存储器控制器与一个或多个存储器设备相关联。存储器控制器140是或者包括存储器管理120。
在一个实施例中,存储器控制器140是系统104的独立的组件。在一个实施例中,存储器控制器140是处理器112的一部分。在一个实施例中,存储器控制器140包括集成在主机处理器或者主机片上系统(SoC)上的控制器或者处理器电路。SoC可以包括一个或多个处理器以及诸如存储器控制器140和可能的一个或多个存储器设备的其它组件。在一个实施例中,系统104是MLM系统,其具有靠近处理器112的表示小型易失性存储器资源的高速缓存116。在一个实施例中,高速缓存116与处理器112一起位于芯片上。在一个实施例中,高速缓存116与处理器112一起是SoC的一部分。针对高速缓存116中的高速缓存未命中,主机110向存储器控制器140发送请求以请求对存储器130进行存取。
图2是在多级存储器系统中实施具有基于成本的因子的存储器回收的系统实施例的框图。系统200表示用于存储器子系统的组件的多级存储器系统架构。在一个实施例中,系统200是根据图1A的系统102或者图1B的系统104的存储器子系统的一个示例。系统200包括主机210、多级存储器220和存储设备240。主机210表示硬件和软件平台,MLM 220的存储器设备为其存储数据和/或代码。主机210包括处理器212以用于执行系统200内的操作。由处理器212进行的操作生成针对存储在MLM 220中的数据的请求。代理214表示由处理器212执行的程序或者源代理,并且它们的执行生成针对来自MLM 220的数据的请求。存储设备240是非易失性存储资源,数据从存储设备240加载到MLM 220中以供由主机210执行。例如,存储设备240可以包括硬盘驱动器(HDD)、半导体盘驱动器(SDD)、磁带驱动器、诸如闪速存储器、NAND、PCM(相变存储器)的非易失性存储器设备或者其它。
存储器230的N个等级中的每个等级包括存储器部分232和管理234。每个存储器部分232是存储器等级232内的可寻址的数据段。在一个实施例中,每个等级230包括不同数量的存储器部分232。在一个实施例中,等级230[0]集成到处理器212上或者集成到处理器212的SoC上。在一个实施例中,等级230[N-1]是主系统存储器(诸如SDRAM中的多个通道),如果在等级230[N-1]的请求结果是未命中,则等级230[N-1]直接从存储设备140中请求数据。
在一个实施例中,每个存储器等级230包括分立的管理234。在一个实施例中,处于一个或多个存储器等级230的管理234实施基于成本的回收确定。在一个实施例中,每个管理234包括表或者其它存储以维持针对存储在该存储器等级220处的每个存储器部分232的计数或者权重。在一个实施例中,任意一个或多个管理234(诸如最高等级的存储器或者主存储器230[N-1]的管理234[N-1])考虑存储在存储器的该等级处的存储器部分232的存取历史以及由并行指示器指示的成本信息。
图3是基于具有LRU因子和基于成本的因子的计数来实施存储器回收的系统实施例的框图。系统300说明存储器子系统的组件,其包括存储器管理310和存储器320。系统300可以是根据本文中所描述的任意实施例的存储器子系统的一个示例。系统300可以是图1A的系统102、图1B的系统104、或者图2的系统200的示例。在一个实施例中,存储器320表示用于计算系统的主存储器设备。在一个实施例中,存储器320存储多个页322。每页包括数据区块,其可以包括许多字节的数据。N个页322中的每个页可以被认为是在存储器320内可寻址的。
在一个实施例中,存储器管理310是或者包括用于管理从存储器320回收页322的逻辑。在一个实施例中,存储器管理310作为被配置为执行存储器管理的管理代码在处理器上执行。在一个实施例中,存储器管理310由系统300是其一部分的计算设备中的主机处理器或者主处理器执行。算法312表示由存储器管理310执行的用于实施回收管理的逻辑操作。回收管理可以根据本文中所描述的任意实施例,维持计数或者权重并且确定回收候选者和相关联的操作。
在一个实施例中,算法312被配置为根据以上所提供的等式来执行权重计算。在一个实施例中,存储器管理310包括多个计数330以用于管理回收候选者。计数330可以是用于确定响应于执行回收的触发哪个页322应该被回收的所涉及的权重或者某其它计数。在一个实施例中,存储器管理310包括针对存储器320中的每个页322的计数330。在一个实施例中,计数330包括两个因子或者两个分量:LRU因子332和成本因子334。
LRU因子332指的是考虑每个页322的最近存取历史的LRU计算或者其它计算。成本因子334指的是用于指示替换相关联的页的相对成本的计数或者计算的值或者其它值。在一个实施例中,算法312包括使存储器管理310能够改变权重或者成本因子334对计数330的贡献的比例因子。在一个实施例中,存储器管理310保持用于计算LRU因子332的计数器(未明确示出)。例如,在一个实施例中,每次存取相关联的页322,存储器管理310可以利用计数器的值更新LRU因子332。因此,较高的数可以表示较最近的使用。在一个实施例中,存储器管理310以考虑源代理的并行等级的量来增加计数330,该源代理与计数所针对的页相关联。例如,成本因子334可以包括每个时钟周期增量为一除以待处理的存储器存取请求的数量。因此,较高数量可以表示较高的替换成本。描述了用于LRU因子332和成本因子334两者的两个示例,其中较高的值指示保持特定的存储器页322的偏好。因此,存储器管理310可以被配置为回收具有最低计数330的页。此外,本领域技术人员将理解的是,所描述的每个因子或者分量可以替代地适应负数或者减去或者增加倒数,或者执行使低的数指示被保持的偏好的其它操作,使得具有最高计数330的页被回收。
图4是用于管理从存储器设备回收的过程的实施例的流程图。过程400可以是根据本文中的存储器管理的任意实施例来实施的用于回收管理的过程的一个示例。过程400示出了如何测量特定存储器部分的成本以实现成本感知的回收和替换的一个实施例。
在一个实施例中,存储器控制器接收针对数据的请求并且将该请求添加到存储器控制器的待处理的队列中402。存储器控制器可以确定该请求是否是高速缓存命中,或者该请求是否是针对已经存储在存储器中的数据404。如果该请求为命中,则进入是(YES)分支406,在一个实施例中,存储器控制器可以更新针对存储器部分的存取历史信息408,并且服务并返回数据410。
如果该请求是未命中,则进入否(NO)分支406,在一个实施例中,存储器控制器可以从存储器回收存储器部分以便为要加载到存储器中的所请求的部分腾出空间。因此,所请求的存储器部分可以触发存储器部分的回收或者替换。此外,存储器控制器将存取所请求的数据,并且可以将计数与新存取的存储器部分相关联以便在之后针对随后的回收请求确定回收候选者时使用。针对所请求的存储器部分,在一个实施例中,存储器控制器将新的成本计数初始化为零412。将成本计数初始化为零可以包括将成本计数与所请求的存储器部分相关联,以及重置用于成本计数的针对存储器或者表条目的值。在一个实施例中,存储器控制器可以将计数初始化为非零的值。
存储器控制器从较高等级的存储器或者从存储设备存取存储器部分,并且将存储器部分存储在存储器中414。在一个实施例中,存储器控制器将成本计数或者成本计数器与存储器部分相关联416。存储器控制器还可以将存储器部分与生成使存储器部分被加载的请求的源代理相关联。在一个实施例中,存储器控制器针对存储器部分被存储在存储器中的每个时钟周期增加成本计数或者成本计数器418。
针对确定回收候选者,在一个实施例中,存储器控制器比较存储在存储器中的存储器部分的计数420。根据本文中所描述的任意实施例,计数或者权重可以包括存取历史因子和基于成本的因子。在一个实施例中,存储器控制器识别具有最低计数的存储器部分作为替换候选者422。应该理解的是,存储器控制器可以被配置为识别具有其它极端计数(即,最低计数或者对应于最低成本的任意极端值)的存储器部分作为用于回收和替换/交换的候选者。存储器控制器然后可以回收所识别的存储器部分424。在一个实施例中,从存储器回收存储器部分可以在存取新的部分之前出现以便服务或满足引起回收触发的请求。
图5是用于选择回收候选者的过程的实施例的流程图。过程500可以是存储器管理根据本文中所描述的任意实施例来选择用于替换或者交换的候选者的过程的一个示例。在主机上执行的代理执行引起存储器存取的操作502。主机生成存储器存取请求,其由存储器控制器或者存储器管理接收504。存储器管理确定该请求结果是否为高速缓存命中506。如果请求结果是命中,则进入508是(YES)分支,存储器管理可以服务该请求并且向代理返回数据,其将保持执行502。
在一个实施例中,如果请求结果是未命中或者错误,则进入508否(NO)分支,存储器管理触发从存储器回收数据以释放空间以便加载所请求的数据510。在一个实施例中,响应于回收触发,存储器管理计算针对高速缓存页的回收计数。计算回收计数可以包括计算针对页的总权重,该计算基于针对该页的存取历史或者LRU计数,并由针对相关联的代理的成本因子调整512。在一个实施例中,存储器管理保持针对每个页的历史计数因子和针对每个代理的成本因子信息。然后当确定回收哪个页时,可以存取成本因子并将其添加到针对每个页的计数中。在一个实施例中,存储器管理可以首先独立地基于存取历史或者LRU信息在预先确定数量的候选者之中选择,然后基于成本来确定回收那些候选者中的哪个。因此,可以在多层中完成回收和替换。存储器管理可以识别最极端的回收计数(即,取决于系统配置的最低或者最高)514,并且回收具有极端的计数或者权重的页516。
图6是用于管理回收计数的过程的实施例的流程图。根据本文中所描述的任意实施例,过程600可以是管理被存储器管理使用的计数以用于确定回收或者页替换/页交换的过程的一个示例。结合处理针对数据的请求,存储器管理将页添加到存储器602。在一个实施例中,存储器管理将页与在主机上执行的代理相关联604。相关联的代理是这样的代理:其数据请求使该页被加载到存储器中。将代理与页相关联可以包括表中的信息或者给页加标签或者使用其它元数据。
存储器管理初始化针对页的计数,其中计数可以包括存取历史计数域和成本计数域606。例如,域可以是针对页的两个不同的表条目。在一个实施例中,将成本计数域与代理相关联(并因此与该代理的所有待处理的页共享)并且在计算时将该成本计数域添加到计数。存储器管理可以监测页并且维持针对页和其它高速缓存页的计数608。
如果存在要更新存取计数域的存取计数事件,则进入610是(YES)分支,存储器管理可以增加或者以其他方式更新(例如,重写)存取计数域信息612。存取事件可以包括对相关联的页进行存取。当不存在存取计数事件时,进入610否(NO)分支,存储器管理可以继续监测这样的事件。
如果存在要更新成本计数域的成本计数事件,则进入614是(YES)分支,存储器管理可以增加或者以其他方式更新(例如,重写)成本计数域信息616。成本计数事件可以包括计时器或者时钟周期或者达到更新计数的计划值。当不存在成本计数事件时,进入610否(NO)分支,存储器管理可以继续监测所述事件。
在一个实施例中,存储器管理更新用于高速缓存页的回收计数,回收计数包括存取计数信息和成本计数信息618。响应于回收触发,存储器管理使用回收计数信息来确定回收哪个高速缓存页620。在一个实施例中,用于更新或者增加计数信息的计算机制和用于确定回收候选者的计算机制是分立的计算机制。
图7是其中可以实施基于成本的回收管理的计算系统的实施例的框图。系统700表示根据本文中所描述的任意实施例的计算设备,并且可以是膝上型计算机、台式计算机、服务器、游戏或者娱乐控制系统、扫描仪、复印机、打印机、路由或者交换设备、或者其它电子设备。系统700包括处理器720,其为系统700提供处理、操作管理和指令的执行。处理器720可以包括为系统700提供处理的任意类型的微处理器、中央处理单元(CPU)、处理核心、或者其它处理硬件。处理器720控制系统700的整个操作,并且可以是或者包括一个或多个可编程通用微处理器或者专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等、或者这样的设备的组合。
存储器子系统730表示系统700的主存储器,并且为要由处理器720执行的代码或者要在执行例程中使用的数据值提供临时的存储。存储器子系统730可以包括一个或多个存储器设备,诸如只读存储器(ROM)、闪速存储器、一种或多种随机存取存储器(RAM)或者其它存储器设备、或者这样的设备的组合。存储器子系统730除了其他之外存储和托管操作系统(OS)736,从而为系统700中的指令的执行提供软件平台。此外,从存储器子系统730存储并且执行其它指令738以提供系统700的逻辑和处理。处理器720执行OS 736和指令738。存储器子系统730包括存储器设备732,存储器子系统730在存储器设备732中存储数据、指令、程序或者其它项目。在一个实施例中,存储器子系统包括存储器控制器734,其为生成命令并向存储器设备732发出的命令的存储器控制器。应该理解的是,存储器控制器734可以是处理器720的物理部分。
将处理器720和存储器子系统730耦合到总线/总线系统710。总线710是表示以下分立的任意一个或多个的抽象:物理总线、通信线路/接口、和/或由合适的桥、适配器、和/或控制器连接的点对点连接。因此,总线710可以包括,例如,以下中的一个或多个:系统总线、外围组件互连(PCI)总线、超传输或者工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或者电气与电子工程师协会(IEEE)标准1394总线(通常被称为“火线”)。总线710的总线还可以对应于网络接口750中的接口。
系统700还可以包括耦合到总线710的一个或多个输入/输出(I/O)接口740、网络接口750、一个或多个内部大容量存储设备760和外围接口770。I/O接口740可以包括用户通过其与系统700交互的一个或多个接口组件(例如,视频、音频和/或字母接口)。网络接口750为系统700提供通过一个或多个网络与远程设备(例如,服务器、其它计算设备)通信的能力。网络接口750可以包括以太网适配器、无线互连组件、USB(通用串行总线)或者其它基于有线或无线标准的或者合适的接口。
存储设备760可以是或者包括以非易失性的方式存储大量数据的任意传统介质,诸如一个或多个磁盘、固态盘、或光盘、或者组合。存储设备760持有处于持久状态(即,即使系统700的电源中断,值也被保留)的代码或指令和数据762。虽然存储器730是向处理器720提供指令的执行存储器或操作存储器,但是存储设备760一般可以被认为是“存储器”。然而,存储设备760是非易失性的,存储器730可以包括易失性存储器(即,如果系统700的电源被中断,则数据的值或者状态是不确定的)。
外围接口770可以包括以上没有明确提到的任意硬件接口。外围设备通常指的是从属地连接到系统700的设备。从属连接是这样的连接:其中系统700提供在其上执行操作并且用户与其交互的软件和/或硬件平台。
在一个实施例中,存储器子系统730包括基于成本的管理器780,其可以是根据本文中所描述的任意实施例的存储器管理。在一个实施例中,基于成本的管理器780是存储器控制器734的一部分。管理器780保持和计算针对存储在存储器732中的每个页或者其它存储器部分的计数或者权重。权重或者计数包括针对每个页的成本信息,其中成本指示针对替换存储器中的该页的性能影响。成本信息可以包括针对该页的存取历史信息或者可以与针对该页的存取历史信息组合。基于包括基于成本的信息的计数或者权重,管理器780可以选择用于从存储器732回收的候选者。
图8是其中可以实施基于成本的回收管理的移动设备的实施例的框图。设备800表示移动计算设备,诸如计算平板、移动电话或者智能电话、支持无线的电子阅读器、可穿戴计算设备或者其它移动设备。应该理解的是,通常示出组件中的某些组件,而不是在设备800中示出这样的设备中的所有组件。
设备800可以包括处理器810,其执行设备800的主要处理操作。处理器810可以包括诸如微处理器、应用处理器、微控制器、可编程逻辑设备或者其它处理模块的一个或多个物理设备。处理器810执行的处理操作包括在其上执行应用和/或设备功能的操作平台或者操作系统的执行。处理操作包括与人类用户或者其它设备的I/O(输入/输出)有关的操作、与电源管理有关的操作和/或与将设备800连接到另一个设备有关的操作。处理操作还可以包括与音频I/O和/或显示I/O有关的操作。
在一个实施例中,设备800包括音频子系统820,其表示与向计算设备提供音频功能相关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动、编解码器)组件。音频功能可以包括扬声器和/或头戴式耳机输出以及麦克风输入。可以将用于这些功能的设备集成到设备800中,或者连接到设备800。在一个实施例中,用户通过提供由处理器810接收和处理的音频命令与设备800交互。
显示子系统830表示为用户提供视觉和/或触觉显示以便与计算设备交互的硬件(例如,显示设备)和软件(例如,驱动器)组件。显示子系统830包括显示接口832,其包括用于向用户提供显示的特定屏幕或者硬件设备。在一个实施例中,显示接口832包括与处理器810分立的用于执行至少一些与显示有关的处理的逻辑。在一个实施例中,显示子系统830包括向用户提供输出和输入两者的触摸屏设备。在一个实施例中,显示子系统830包括向用户提供输出的高清(HD)显示。高清可以指具有大约100PPI(像素每英寸)或者更高的像素密度的显示,并且可以包括诸如全HD(例如,1080p)、视网膜显示、4k(超高清或者UHD)或者其它的格式。
I/O控制器840表示与用户的交互有关的硬件设备和软件组件。I/O控制器840可以操作以管理作为音频子系统820和/或显示子系统830的一部分的硬件。此外,I/O控制器840示出了用于连接到设备800的额外设备的连接点,通过其用户可与系统进行交互。例如,可以附接到设备800的设备可包括麦克风设备、扬声器或者立体声系统、视频系统或者其它显示设备、键盘或者键板设备、或者其它与特定应用一起使用的诸如读卡器的I/O设备、或者其它设备。
如上述提到的,I/O控制器840可以与音频子系统820和/或显示子系统830交互。例如,通过麦克风或者其它音频设备的输入可以提供用于设备800的一个或多个应用或者功能的输入或者命令。此外,替代显示输出或者除显示输出之外,可以提供音频输出。在另一个示例中,如果显示子系统包括触摸屏,显示设备还可以充当输入设备,其可以至少部分地由I/O控制器840来管理。在设备800上还可以存在额外的按钮或者开关以提供由I/O控制器840管理的I/O功能。
在一个实施例中,I/O控制器840管理设备,诸如加速计、相机、光传感器或者其它环境传感器、陀螺仪、全球定位系统(GPS)、或者其它可以被包括在设备800中的硬件。输入可以是直接用户交互的一部分,以及向系统提供环境输入以影响其操作(诸如过滤噪声,调整用于亮度检测的显示、应用相机的闪光等,或者其它特征)。在一个实施例中,设备800包括管理电池电源使用量、电池的充电和与节电操作相关的特征的电源管理850。
存储器子系统860包括存储器设备862以用于在设备800中存储信息。存储器子系统860可以包括非易失性(如果存储器设备的电源中断则状态不会改变)和/或易失性(如果存储器设备的电源中断则状态是不确定的)存储器设备。存储器860可以存储应用数据、用户数据、音乐、照片、文件或者其它数据,以及与应用的执行和系统800的功能有关的系统数据(无论是长期的还是临时的)。在一个实施例中,存储器子系统860包括存储器控制器864(其还可以被认为是系统800的控制的一部分,并且可能会被认为是处理器810的一部分)。存储器控制器864包括调度器以用于生成命令和向存储器设备862发出命令。
连接870包括硬件设备(例如,无线和/或有线连接器以及通信硬件)和软件组件(例如,驱动器、协议堆栈)以用于使设备800能够与外部设备通信。外部设备可以是分立的设备,诸如其它计算设备、无线存取点或者基站、以及诸如头戴式受话器、打印机的外围设备、或者其它设备。
连接870可以包括多个不同类型的连接。概括来说,设备800示出为具有蜂窝连接872和无线连接874。蜂窝连接872通常指的是由无线运营商提供的蜂窝网络连接,诸如经由以下来提供:GSM(全球移动通信系统)或者其变形或衍生、CDMA(码分多址)或者其变形或衍生、TDM(时分复用)或者其变形或衍生、LTE(长期演进,也被称为“4G”)、或者其它蜂窝服务标准。无线连接874指的是非蜂窝的无线连接,并且可以包括个人区域网(诸如蓝牙)、局域网(诸如WiFi)、和/或广域网(诸如WiMax)、或者其它无线通信。无线通信指的是通过使用调制的电磁辐射通过非固体介质的数据传输。有线通信通过固体通信介质发生。
外围连接880包括硬件接口和连接器,以及软件组件(例如,驱动器、协议堆栈)以用于建立外围连接。应该理解的是,设备800既可以是(“到”882)到其它计算设备的外围设备,也可以是外围设备(“从”884)连接到其上。出于诸如管理(例如,下载和/或上传、改变、同步)设备800上的内容的目的,设备800一般具有“对接”连接器以用于连接其它计算设备。此外,对接连接器可以允许设备800连接到某些允许设备800控制内容输出的外围设备(例如,视听系统或者其它系统)。
除了适合的对接连接器或者其它适合的连接硬件,设备800可以经由普通的或者基于标准的连接器来建立外围连接880。普通类型可以包括通用串行总线(USB)连接器(其可以包括许多不同的硬件接口中的任意接口)、包括迷你显示端口(MDP)的显示端口、高清多媒体接口(HDMI)、火线、或者其它类型。
在一个实施例中,存储器子系统860包括基于成本的管理器866,其可以是根据本文中所描述的任意实施例的存储器管理。在一个实施例中,基于成本的管理器866是存储器控制器864的一部分。管理器866保持和计算针对存储在存储器862中的每个页或者其它存储器部分的计数或者权重。权重或者计数包括针对每个页的成本信息,其中成本指示针对在存储器中替换页的性能影响。成本信息可以包括页的存取历史信息或者可以与页的存取历史信息组合。基于包括基于成本的信息的计数或者权重,管理器866可以选择用于从存储器862回收的候选者。
在一个方面,一种用于管理从存储器设备回收的方法,包括:初始化针对存储器设备中的多个存储器部分的一个存储器部分的计数,包括将所述计数与存取所述一个存储器部分的源代理相关联;基于由相关联的源代理对所述一个存储器部分的存取来调整所述计数;基于针对所述相关联的源代理的动态成本因子来调整所述计数,其中,所述动态成本因子指示要替换所述存储器部分对所述源代理的性能的延迟影响;以及响应于针对所述存储器设备的回收触发,将所述计数与针对所述多个部分的其它部分的计数进行比较以确定回收哪个存储器部分。
在一个实施例中,其中存储器设备包括用于主机系统的主存储器资源。在一个实施例中,其中比较包括与存储器控制器设备进行比较。在一个实施例中,其中初始化所述计数包括响应于接收来自请求数据的较低等级存储器的请求而初始化所述计数。在一个实施例中,其中比较计数还包括识别所述多个存储器部分中的具有最低成本的一个以用于回收。在一个实施例中,其中成本因子包括替换成本因子1/N与最近最少使用(LRU)因子之和,其中,N是针对所述相关联的源代理的当前待处理的并行请求的数量。在一个实施例中,其中成本因子是能够通过比例因子动态调整的,以向所述成本因子提供较多或者较少的权重。
在一个方面,一种存储器管理设备,包括:队列,其存储对由所述存储器管理设备管理的存储器设备进行存取的请求;回收表,其存储与所述存储器设备的多个存储器部分中的每个存储器部分相关联的权重,所述多个存储器部分中的每个存储器部分具有相关联的源代理,所述相关联的源代理生成针对存储在所述存储器部分中的数据的请求,其中,每个权重是基于针对所述存储器部分的存取历史以及成本因子而因子化的,所述成本因子指示要替换所述存储器部分对所述相关联的源代理的延迟影响;以及回收处理器,其被配置为初始化针对所述存储器部分中的一个存储器部分的计数;基于由所述相关联的源代理对所述一个存储器部分的存取来调整所述计数;基于针对所述相关联的源代理的动态成本因子来调整所述计数;以及响应于针对所述存储器设备的回收触发,将所述计数与针对所述多个存储器部分的其它存储器部分的计数进行比较以确定回收哪个存储器部分。
在一个实施例中,其中存储器设备包括用于主机系统的DRAM(动态随机存取存储器)资源。在一个实施例中,其中回收处理器包括存储器控制器设备的处理器。在一个实施例中,其中,所述DRAM是多级存储器(MLM)系统的最高等级的存储器,其中,所述回收处理器响应于页错误而检测所述回收触发,所述页错误是对服务来自所述MLM的高速缓存的请求做出响应而出现的。在一个实施例中,其中回收处理器识别具有最低成本的所述存储器部分以用于回收。在一个实施例中,其中所述成本因子包括替换成本因子1/N与最近最少使用(LRU)因子之和,其中,N是针对所述相关联的源代理的所述队列中的当前待处理的并行请求的数量。在一个实施例中,其中成本因子是能够通过比例因子动态调整的,以向所述成本因子提供较多或者较少的权重。
在一个方面,一种具有存储器子系统的电子设备,包括:SDRAM(同步动态随机存取存储器),其包括存储器阵列以存储多个存储器部分,所述多个存储器部分中的每个存储器部分具有相关联的源代理,所述相关联的源代理生成针对存储在所述SDRAM中的数据的请求,其中,每个权重是基于针对所述存储器部分的存取历史以及成本因子而计算的,所述成本因子指示要替换所述存储器部分对所述相关联的源代理的延迟影响;以及存储器控制器,其控制对所述SDRAM的存取,所述存储器控制器包括:队列,其存储对所述SDRAM进行存取的请求;回收表,其存储与多个存储器部分中的每个存储器部分相关联的权重;以及回收处理器,其被配置为初始化针对所述存储器部分中的一个存储器部分的计数;基于由所述相关联的源代理对所述一个存储器部分的存取来调整所述计数;基于针对所述相关联的源代理的动态成本因子来调整所述计数;以及响应于针对所述存储器设备的回收触发,将所述计数与针对所述多个存储器部分的其它存储器部分的计数进行比较以确定回收哪个存储器部分;以及触摸屏显示,其被耦合以基于从所述SDRAM存取的数据而生成显示。
在一个实施例中,其中存储器控制器包括集成到主机处理器片上系统(SoC)上的存储器控制器电路。在一个实施例中,其中SDRAM是多级存储器(MLM)系统的最高等级的存储器,其中,所述回收处理器响应于页错误而检测所述回收触发,所述页错误是对服务来自所述MLM的高速缓存的请求做出响应而出现的。在一个实施例中,其中回收处理器识别具有最低成本的所述存储器部分以用于回收。在一个实施例中,其中所述成本因子包括替换成本因子1/N与最近最少使用(LRU)因子之和,其中,N是针对所述相关联的源代理的所述队列中的当前待处理的并行请求的数量。在一个实施例中,其中成本因子是能够通过比例因子动态调整的,以向所述成本因子提供较多或者较少的权重。
在一个方面,一种用于管理从存储器设备回收的方法,包括:检测存储器设备中的回收触发,其中,所述回收触发指示多个存储器部分中的一个存储器部分应该从所述存储器设备中移除,每个存储器部分具有相关联的权重和相关联的源代理,所述相关联的源代理生成针对存储在所述存储器部分中的数据的请求;识别具有最极端权重的存储器部分,其中,每个权重是基于针对所述存储器部分的存取历史而计算的并且是由成本因子调整的,所述成本因子指示要替换所述存储器部分对所述相关联的源代理的延迟影响;以及利用触发所述回收的存储器部分来替换被识别为具有所述最极端权重的所述存储器部分。
在一个实施例中,其中存储器设备包括用于主机系统的主存储器资源。在一个实施例中,其中检测回收触发包括利用存储器控制器设备检测所述回收触发。在一个实施例中,其中检测回收触发包括接收来自请求数据的较低等级存储器的请求,所述请求引起所述存储器设备中的未命中。在一个实施例中,其中识别具有所述最极端权重的所述存储器部分包括识别具有最低成本的所述存储器部分以用于回收。在一个实施例中,其中成本因子包括替换成本因子1/N与最近最少使用(LRU)因子之和,其中,N是针对所述相关联的源代理的当前待处理的并行请求的数量。在一个实施例中,其中成本因子是能够通过比例因子动态调整的,以向所述成本因子提供较多或者较少的权重。
在一个方面,一种存储器管理设备,包括:队列,其存储对由所述存储器管理设备管理的存储器设备进行存取的请求;回收表,其存储与所述存储器设备的多个存储器部分中的每个存储器部分相关联的权重,所述多个存储器部分中的每个存储器部分具有相关联的源代理,所述相关联的源代理生成针对存储在所述存储器部分中的数据的请求,其中,每个权重是基于针对所述存储器部分的存取历史以及成本因子而因子化的,所述成本因子指示要替换所述存储器部分对所述相关联的源代理的延迟影响;以及回收处理器,其被配置为检测回收触发,所述回收触发指示多个存储器部分中的一个存储器部分应该从所述存储器设备中移除;识别所述回收表中具有最极端权重的存储器部分;以及,利用触发所述回收的存储器部分来替换被识别为具有所述最极端权重的所述存储器部分。
在一个实施例中,其中存储器设备包括用于主机系统的DRAM(动态随机存取存储器)资源。在一个实施例中,其中回收处理器包括存储器控制器设备的处理器。在一个实施例中,其中,所述DRAM是多级存储器(MLM)系统的最高等级的存储器,其中,所述回收处理器响应于页错误而检测所述回收触发,所述页错误是对服务来自所述MLM的高速缓存的请求做出响应而出现的。在一个实施例中,其中回收处理器识别具有最低成本的所述存储器部分以用于回收。在一个实施例中,其中所述成本因子包括替换成本因子1/N与最近最少使用(LRU)因子之和,其中,N是针对所述相关联的源代理的所述队列中的当前待处理的并行请求的数量。在一个实施例中,其中成本因子是能够通过比例因子动态调整的,以向所述成本因子提供较多或者较少的权重。
在一个方面,一种具有存储器子系统的电子设备,包括:SDRAM(同步动态随机存取存储器),其包括存储器阵列以存储多个存储器部分,所述多个存储器部分中的每个存储器部分具有相关联的源代理,所述相关联的源代理生成针对存储在所述SDRAM中的数据的请求,其中,每个权重是基于针对所述存储器部分的存取历史以及成本因子而计算的,所述成本因子指示要替换所述存储器部分对所述相关联的源代理的延迟影响;以及存储器控制器,其控制对所述SDRAM的存取,所述存储器控制器包括:队列,其存储对所述SDRAM进行存取的请求;回收表,其存储与多个存储器部分中的每个存储器部分相关联的权重;以及回收处理器,其被配置为检测回收触发,所述回收触发指示多个存储器部分中的一个存储器部分应该从SDRAM中移除;识别所述回收表中具有最极端权重的存储器部分;以及,利用触发所述回收的存储器部分来替换被识别为具有所述最极端权重的所述存储器部分;以及触摸屏显示,其被耦合以基于从所述SDRAM存取的数据而生成显示。
在一个实施例中,其中存储器控制器包括集成到主机处理器片上系统(SoC)上的存储器控制器电路。在一个实施例中,其中成本因子包括替换成本因子1/N与最近最少使用(LRU)因子之和,其中,N是针对所述相关联的源代理的所述队列中的当前待处理的并行请求的数量。在一个实施例中,其中成本因子是能够通过比例因子动态调整的,以向所述成本因子提供较多或者较少的权重。在一个实施例中,其中SDRAM是多级存储器(MLM)系统的最高等级的存储器,其中,所述回收处理器响应于页错误而检测所述回收触发,所述页错误是对服务来自所述MLM的高速缓存的请求做出响应而出现的。在一个实施例中,其中回收处理器识别具有最低成本的所述存储器部分以用于回收。
在一个方面,一种包括其上存储有内容的计算机可读存储介质的制品,当被存取时,所述内容使计算设备执行用于管理从存储器设备回收的操作,包括:初始化针对存储器设备中的多个存储器部分的一个存储器部分的计数,包括将所述计数与存取所述一个存储器部分的源代理相关联;基于由相关联的源代理对所述一个存储器部分的存取来调整所述计数;基于针对所述相关联的源代理的动态成本因子来调整所述计数,其中,所述动态成本因子指示要替换所述存储器部分对所述源代理的性能的延迟影响;以及响应于针对所述存储器设备的回收触发,将所述计数与针对所述多个部分的其它部分的计数进行比较以确定回收哪个存储器部分。也可以将关于用于管理从存储器设备回收的方法所描述的任意实施例应用于该制品。
在一个方面,一种用于管理从存储器设备回收的装置包括:用于初始化针对存储器设备中的多个存储器部分的一个存储器部分的计数的模块,所述模块包括将所述计数与存取所述一个存储器部分的源代理相关联;用于基于由相关联的源代理对所述一个存储器部分的存取来调整所述计数的模块;用于基于针对所述相关联的源代理的动态成本因子来调整所述计数的模块,其中,所述动态成本因子指示要替换所述存储器部分对所述源代理的性能的延迟影响;以及用于响应于针对所述存储器设备的回收触发而将所述计数与针对所述多个部分的其它部分的计数进行比较以确定回收哪个存储器部分的模块。也可以将关于用于管理从存储器设备回收的方法所描述的任意实施例应用于该装置。
在一个方面,一种包括其上存储有内容的计算机可读存储介质的制品,当被存取时,所述内容使计算设备执行用于管理从存储器设备回收的操作,包括:检测存储器设备中的回收触发,其中,所述回收触发指示多个存储器部分中的一个存储器部分应该从所述存储器设备中移除,每个存储器部分具有相关联的权重和相关联的源代理,所述相关联的源代理生成针对存储在所述存储器部分中的数据的请求;识别具有最极端权重的存储器部分,其中,每个权重是基于针对所述存储器部分的存取历史而计算的并且是由成本因子调整的,所述成本因子指示要替换所述存储器部分对所述相关联的源代理的延迟影响;以及利用触发所述回收的存储器部分来替换被识别为具有所述最极端权重的所述存储器部分。也可以将关于用于管理从存储器设备回收的方法所描述的任意实施例应用于该制品。
在一个方面,一种用于管理从存储器设备回收的装置包括:用于检测存储器设备中的回收触发的模块,其中,所述回收触发指示多个存储器部分中的一个存储器部分应该从所述存储器设备中移除,每个存储器部分具有相关联的权重和相关联的源代理,所述相关联的源代理生成针对存储在所述存储器部分中的数据的请求;用于识别具有最极端权重的存储器部分的模块,其中,每个权重是基于针对所述存储器部分的存取历史而计算的并且是由成本因子调整的,所述成本因子指示要替换所述存储器部分对所述相关联的源代理的延迟影响;以及用于利用触发所述回收的存储器部分来替换被识别为具有所述最极端权重的所述存储器部分的模块。也可以将关于用于管理从存储器设备回收的方法所描述的任意实施例应用于该装置。
本文中示出的流程图提供了各种过程活动的序列的示例。流程图可以指示将由软件或者固件例程执行的操作以及物理操作。在一个实施例中,流程图可以示出有限状态机(FSM)的状态,可以在硬件和/或软件中实现该有限状态机。虽然以特定序列或者顺序示出,但是除非另外指明,活动的顺序可以被修改。因此,应该仅将示出的实施例理解为示例,可以以不同的顺序执行过程,并且可以并行地执行一些动作。此外,在各种实施例中可以省略一个或多个活动;因此,不是在每个实施例中需要所有活动。其它过程流程是有可能的。
在本文中所描述的各种操作或者功能的范围内,可将所述操作或者功能描述或者定义为软件代码、指令、配置和/或数据。内容可以是直接可执行的(“对象”或者“可执行的”形式)源代码或者不同代码(“增量(delta)”或者“补丁”代码)。本文中所描述的实施例的软件内容可以经由其上存储有内容的制品提供,或者通过操作通信接口以经由通信接口发送数据的方法来提供。机器可读存储介质可以使机器执行所描述的功能或者操作,并且包括将信息存储为可由机器(例如,计算设备、电子系统等)存取的形式的任意机制,诸如可记录/非可记录的介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储器设备等)。通信接口包括接口到硬连线、无线、光等介质以便与另一设备通信的任意机制,诸如存储器总线接口、处理器总线接口、因特网连接、盘控制器等。可以通过提供配置参数和/或发送信号以准备通信接口以便提供描述软件内容的数据信号来配置通信接口。通信接口可以通过一个或多个发送到该通信接口的命令或者信号而被访问。
本文中所描述的各种组件可以是用于执行所描述的操作或者功能的模块。本文中所描述的每个组件包括软件、硬件、或这些的组合。组件可以被实现为软件模块、硬件模块、特殊用途硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。
除本文中所描述的内容之外,可以对本发明的公开的实施例和实施方式做出各种修改而在不脱离它们的范围。所以,应该以说明但非限制的方式解释本文中的说明和示例。本发明的范围应该仅参考所附权利要求来衡量。

Claims (18)

1.一种用于管理从存储器设备回收的方法,包括:
初始化计数,所述计数指示针对存储器设备中的多个存储器部分中的一个存储器部分的存取的频率,包括将所述计数与存取所述一个存储器部分的源代理相关联,其中,所述一个存储器部分是由所述源代理存取的所述多个存储器部分中的一个,并且其中,所述源代理是多个代理中的一个;
基于由所述源代理对所述一个存储器部分的存取来调整所述计数;
计算值,包括向所述计数增加针对所述源代理的动态成本因子,其中,所述动态成本因子指示要替换所述一个存储器部分对所述源代理的性能的延迟影响,所述动态成本因子基于对由所述源代理存取的所述多个存储器部分的存取请求的数量;以及
响应于针对所述存储器设备的回收触发,将所述值与针对包括所述多个部分的所述存储器设备的其它存储器部分的值进行比较,以确定回收所述存储器设备的哪个存储器部分。
2.根据权利要求1所述的方法,其中,所述存储器设备包括用于主机系统的主存储器资源。
3.根据权利要求2所述的方法,其中,所述比较包括与存储器控制器设备进行比较。
4.根据权利要求2所述的方法,其中,初始化所述计数包括响应于接收来自请求数据的较低等级存储器的请求而初始化所述计数。
5.根据权利要求1所述的方法,其中,比较所述计数还包括识别所述多个存储器部分中的具有最低成本的一个以用于回收。
6.根据权利要求5所述的方法,其中,所述成本因子包括替换成本因子1/N与最近最少使用(LRU)因子之和,其中,N是针对所述源代理的当前待处理的并行请求的数量。
7.根据权利要求1所述的方法,其中,所述成本因子是能够通过比例因子动态调整的,以向所述成本因子提供较多或者较少的权重。
8.一种存储器管理设备,包括:
队列,其存储对由所述存储器管理设备管理的存储器设备进行存取的请求;
回收表,其存储与所述存储器设备的多个存储器部分中的每个存储器部分相关联的权重,所述多个存储器部分包括要由作为多个代理中的一个的源代理存取的多个存储器部分中的一个存储器部分;以及
回收处理器,其被配置为初始化针对所述一个存储器部分的计数以指示针对所述一个存储器部分的存取历史;基于由所述源代理对所述一个存储器部分的存取来调整所述计数;计算针对所述一个存储器部分的权重,包括向所述计数增加针对所述源代理的动态成本因子,所述动态成本因子基于对由所述源代理存取的所述多个存储器部分的存取请求的数量,并且指示要替换所述一个存储器部分对所述源代理的延迟影响;以及响应于针对所述存储器设备的回收触发,将所述权重与针对包括所述多个存储器部分的所述存储器设备的其它存储器部分的权重进行比较,以确定回收哪个存储器部分。
9.根据权利要求8所述的存储器管理设备,其中,所述存储器设备包括用于主机系统的DRAM(动态随机存取存储器)设备。
10.根据权利要求9所述的存储器管理设备,其中,所述回收处理器包括存储器控制器设备的处理器。
11.根据权利要求9所述的存储器管理设备,其中,所述DRAM设备是多级存储器MLM系统的最高等级的存储器,其中,所述回收处理器响应于页错误而检测所述回收触发,所述页错误是对服务来自所述多级存储器MLM的高速缓存的请求做出响应而出现的。
12.根据权利要求8所述的存储器管理设备,其中,所述回收处理器识别具有最低成本的所述存储器部分以用于回收。
13.根据权利要求12所述的存储器管理设备,其中,所述成本因子包括替换成本因子1/N与最近最少使用(LRU)因子之和,其中,N是针对所述源代理的所述队列中的当前待处理的并行请求的数量。
14.根据权利要求8所述的存储器管理设备,其中,所述成本因子是能够通过比例因子动态调整的,以向所述成本因子提供较多或者较少的权重。
15.一种具有存储器子系统的电子设备,包括:
SDRAM(同步动态随机存取存储器)设备,其包括存储器阵列以存储多个存储器部分,所述多个存储器部分中的每个存储器部分具有相关联的源代理,所述相关联的源代理生成针对存储在所述SDRAM设备中的数据的请求;以及
存储器控制器,其控制对所述SDRAM设备的存取,所述存储器控制器包括:
队列,其存储对所述SDRAM设备进行存取的请求;
回收表,其存储与多个存储器部分中的每个存储器部分相关联的权重,所述多个存储器部分包括要由作为多个代理中的一个的源代理存取的多个存储器部分中的一个存储器部分;以及
回收处理器,其被配置为初始化针对所述一个存储器部分的计数以指示针对所述一个存储器部分的存取历史;基于由所述源代理对所述一个存储器部分的存取来调整所述计数;计算针对所述一个存储器部分的权重,包括向所述计数增加针对所述源代理的动态成本因子,所述动态成本因子基于对由所述源代理存取的所述多个存储器部分的存取请求的数量,并且指示要替换所述一个存储器部分对所述源代理的延迟影响;以及响应于针对所述SDRAM设备的回收触发,将所述权重与针对包括所述多个存储器部分的所述存储器设备的其它存储器部分的权重进行比较,以确定回收哪个存储器部分;以及
触摸屏显示,其被耦合以基于从所述SDRAM设备存取的数据而生成显示。
16.一种用于管理从存储器设备回收的装置,包括用于执行根据权利要求1-7中的任一项所述的方法的模块。
17.一种用于管理从存储器设备回收的设备,包括:
存储指令的存储器;以及
耦合到所述存储器的处理器,所述指令在被所述处理器执行时执行根据权利要求1-7中的任一项所述的方法。
18.一种具有指令的计算机可读介质,所述指令在被处理器执行时,使所述处理器执行根据权利要求1-7中的任一项所述的方法。
CN201580064482.XA 2014-12-26 2015-11-27 用于管理从存储器设备回收的方法、装置、设备和介质 Active CN107003946B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/583,343 2014-12-26
US14/583,343 US20160188490A1 (en) 2014-12-26 2014-12-26 Cost-aware page swap and replacement in a memory
PCT/US2015/062830 WO2016105855A1 (en) 2014-12-26 2015-11-27 Cost-aware page swap and replacement in a memory

Publications (2)

Publication Number Publication Date
CN107003946A CN107003946A (zh) 2017-08-01
CN107003946B true CN107003946B (zh) 2021-09-07

Family

ID=56151370

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580064482.XA Active CN107003946B (zh) 2014-12-26 2015-11-27 用于管理从存储器设备回收的方法、装置、设备和介质

Country Status (5)

Country Link
US (1) US20160188490A1 (zh)
KR (1) KR20170099871A (zh)
CN (1) CN107003946B (zh)
TW (1) TWI569142B (zh)
WO (1) WO2016105855A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
US10467195B2 (en) 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
CN107885666B (zh) * 2016-09-28 2021-07-20 华为技术有限公司 一种内存管理方法和装置
US10394719B2 (en) 2017-01-25 2019-08-27 Samsung Electronics Co., Ltd. Refresh aware replacement policy for volatile memory cache
US20190179547A1 (en) * 2017-12-13 2019-06-13 Micron Technology, Inc. Performance Level Adjustments in Memory Devices
TWI834582B (zh) 2018-01-26 2024-03-01 瑞典商都比國際公司 用於執行一音訊信號之高頻重建之方法、音訊處理單元及非暫時性電腦可讀媒體
KR102379176B1 (ko) * 2019-12-31 2022-03-28 성균관대학교산학협력단 메모리 스왑 방법 및 시스템
US20240094905A1 (en) * 2022-09-21 2024-03-21 Samsung Electronics Co., Ltd. Systems and methods for tier management in memory-tiering environments

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601489A (zh) * 2003-09-25 2005-03-30 国际商业机器公司 利用共享专用高速缓存减少高速缓存失误率的方法和系统
CN1728114A (zh) * 2004-07-28 2006-02-01 三星电子株式会社 使用页信息的页替换方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269433B1 (en) * 1998-04-29 2001-07-31 Compaq Computer Corporation Memory controller using queue look-ahead to reduce memory latency
US6425057B1 (en) * 1998-08-27 2002-07-23 Hewlett-Packard Company Caching protocol method and system based on request frequency and relative storage duration
US7076611B2 (en) * 2003-08-01 2006-07-11 Microsoft Corporation System and method for managing objects stored in a cache
US7590803B2 (en) * 2004-09-23 2009-09-15 Sap Ag Cache eviction
US7937709B2 (en) * 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
US20070226795A1 (en) * 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
US9092337B2 (en) * 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
US8688915B2 (en) * 2011-12-09 2014-04-01 International Business Machines Corporation Weighted history allocation predictor algorithm in a hybrid cache
US9201810B2 (en) * 2012-01-26 2015-12-01 Microsoft Technology Licensing, Llc Memory page eviction priority in mobile computing devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601489A (zh) * 2003-09-25 2005-03-30 国际商业机器公司 利用共享专用高速缓存减少高速缓存失误率的方法和系统
CN1728114A (zh) * 2004-07-28 2006-02-01 三星电子株式会社 使用页信息的页替换方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
A Case for MLP-Aware Cache Replacement;Qureshi, Lynch;《IEEE,computer society》;20061231;第3页第2栏第30-32行,第6页第1栏第1-6行,第6页第1栏第9-16行 *

Also Published As

Publication number Publication date
TWI569142B (zh) 2017-02-01
KR20170099871A (ko) 2017-09-01
US20160188490A1 (en) 2016-06-30
WO2016105855A1 (en) 2016-06-30
TW201640357A (zh) 2016-11-16
CN107003946A (zh) 2017-08-01

Similar Documents

Publication Publication Date Title
CN107003946B (zh) 用于管理从存储器设备回收的方法、装置、设备和介质
US10282292B2 (en) Cluster-based migration in a multi-level memory hierarchy
US9218286B2 (en) System cache with partial write valid states
US10599578B2 (en) Dynamic cache bypassing
US20170293561A1 (en) Reducing memory access bandwidth based on prediction of memory request size
US9563575B2 (en) Least recently used mechanism for cache line eviction from a cache memory
EP3123338B1 (en) Method, apparatus and system to cache sets of tags of an off-die cache memory
US9218040B2 (en) System cache with coarse grain power management
US20140075125A1 (en) System cache with cache hint control
CN107430554B (zh) 通过使用数据的可压缩性作为高速缓存插入的标准来提高存储高速缓存性能
US20170255561A1 (en) Technologies for increasing associativity of a direct-mapped cache using compression
US9043570B2 (en) System cache with quota-based control
KR102354848B1 (ko) 캐시 메모리 장치 및 이를 포함하는 전자 시스템
US20140089600A1 (en) System cache with data pending state
US9229866B2 (en) Delaying cache data array updates
US20180004668A1 (en) Searchable hot content cache
EP2901287B1 (en) System cache with sticky removal engine
US20230359556A1 (en) Performing Operations for Handling Data using Processor in Memory Circuitry in a High Bandwidth Memory
US9286237B2 (en) Memory imbalance prediction based cache management
US10635594B1 (en) Dynamically redistribute cache space based on time savings
US10592420B1 (en) Dynamically redistribute cache space with min-max technique
US20240152461A1 (en) Swap memory device providing data and data block, method of operating the same, and method of operating electronic device including the same

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