CN109154920B - 对象被标记的存储器监测方法及处理设备 - Google Patents
对象被标记的存储器监测方法及处理设备 Download PDFInfo
- Publication number
- CN109154920B CN109154920B CN201780031817.7A CN201780031817A CN109154920B CN 109154920 B CN109154920 B CN 109154920B CN 201780031817 A CN201780031817 A CN 201780031817A CN 109154920 B CN109154920 B CN 109154920B
- Authority
- CN
- China
- Prior art keywords
- memory
- tag
- address
- statistics
- tracking
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
Abstract
描述了一种标记和跟踪与存储器分配调用相关的对象的方法和处理设备。应用程序或软件将标签添加到存储器分配调用以支持对象级跟踪。条目会被录入到对象跟踪表中,所述表存储所述标签以及与所述对象和相关联存储器装置相关的各种统计。所述应用程序可以查询所述对象统计,以通过所述应用程序做出运行时的放置决策或者通过基于先前运行的离线代码调整来调整功率/性能特性。所述应用程序可以将标签添加到存储器分配调用,以基于所述对象统计来指定所请求的存储器特性的类型。
Description
政府权利条款
本发明是在美国政府支持下由美国能源部授予的以主要合同号DE-AC5207NA27344、分包合同号B600716进行的。美国政府在本发明中拥有某些权利。
相关申请的交叉参考
本申请要求2016年4月22日提交的美国非临时申请第15/136,851号的权益,该申请的内容以宛如全文阐述引用的方式并入本文中。
技术领域
所公开的实施方式通常涉及处理器,且具体来说涉及存储器管理和处理。
背景技术
应用程序或软件控制的异构存储器***允许用户或操作***选择放置数据的位置。这些类型的异构存储器***可以具有针对不同存取模式定制的多个存储装置,例如随机、顺序、高带宽、高容量或低功率。例如,在用户控制的环境下,存储器分配是由诸如例如C语言中的malloc()的函数执行的。应用程序通常在对象级管理其数据,并期望数据被连续分配给存储器装置。但是,操作***会在页面级跟踪和分配数据。当前无法向应用程序通知存储器控制器级别的对象级性能。例如,无法将具有高随机存取、高带宽或低读/写比的对象分配给适当的功率/性能调整存储器区域。这种类型的用户级定向对象分配目前是不可行的。
附图说明
从结合附图举例给出的以下描述中可得到更详细的理解,其中:
图1是根据某些实施方式的处理设备的实例方框图;
图2是根据某些实施方式的用于标记和跟踪对象的实例流程图;和
图3是用于实施本文所述方法和处理设备的实例装置的方框图。
具体实施方式
本文描述一种标记和跟踪与存储器分配调用相关的对象的方法和处理设备。所述方法和处理设备允许应用程序或软件识别软件关注跟踪或监测的对象(即存储器地址范围)。对象跟踪表可以保持对象统计的跟踪。然后,软件可以回读累积的对象统计,并基于对象统计的分析进行优化。所述方法和处理设备提供跟踪应用程序关注的对象和统计的自动方式。如下文所述,所述方法和处理设备支持对象和存储器级粒度的精确数据映射决策,而无需操作***干预,这提高了页面粒度监测的准确性,并捕获了虚拟地址转译级(即转译旁置缓冲器(translation lookaside buffer)下)下看不到的副作用流量行为(高速缓存逐出触发的读写)。
一般而言,应用程序或软件将标签添加到存储器分配调用以支持对象级跟踪。条目会被录入对象跟踪表中,所述表存储标签以及与对象和相关联存储装置相关的各种统计。应用程序可以查询对象统计,以通过应用程序做出运行时的放置决策或者通过基于先前运行的离线代码调整来调整功率/性能特性。应用程序可以将标签添加到存储器分配调用,以基于对象统计来指定所请求的存储器特性的类型。
图1是根据某些实施方式的处理设备100的实例方框图。处理设备100包括处理单元105,其可连接到存储器控制器110和对象跟踪表115。存储器控制器110可连接到对象跟踪表115和主存储器120,主存储器120可进一步连接到对象跟踪表115。虽然图1将控制器描绘为存储器控制器110,但是控制器可以是高速缓存控制器或任何类似的装置。虽然图1将存储器描绘为主存储器120,但是该存储器可以是高速缓存或任何其它类似的装置。应理解,处理设备100可以包括图1中未示出的额外组件。
应注意,所述处理设备和方法基于对象级跟踪。如所知,应用程序在虚拟地址空间中操作或运行。操作***(OS)使用可位于例如处理单元105中的转译旁置缓冲器(TLB)知悉对应的物理地址。因此,对象可以是多个页面、一个页面或少于一个页面,且因此与页面分辨率无关。
一般而言,应用程序或软件(即用户级构造或装置)可以发送存储器请求或进行存储器分配函数调用。存储器分配函数调用可以提供标签。应用程序可以通过在存储器分配函数调用(即malloc(size,TAG)函数调用)中包括标签来控制哪些对象可能需要被跟踪。这种类型的存储器分配函数调用可以在对象跟踪表115中寄存跟踪的对象。此外,可以通过在每个控制器中寄存相同的地址范围和标签来处置多个存储器控制器。当例如在处理单元105上运行的应用程序或操作***(OS)读取给定标签的对象统计时,应用程序或OS可以获得如每个控制器所见的单独统计。虽然本文实例描述了将标签添加到存储器分配函数调用,但是这种标签或限定符也可以被添加到程序内的变量定义中(即不使用malloc),使得编译器可在其为这些变量分配存储器时指定适当的标签。这可允许收集和查询关于这些变量的对象使用的统计的能力。虽然本文的描述将应用程序、用户程序、软件或OS称为收集的统计的请求和/或优化实体,但是也可以使用其它类似的构造、实体或模块,并且它们可以被统称为用户实体或用户装置。
虽然本文实例描述了将标签添加到存储器分配函数调用,但是这种标签或限定符也可以被添加到对象存储***/架构中的对象。一般而言,对象存储中的每个对象通常包括数据本身、可变数量的元数据和全局唯一标识符。对象和标签可以在用于对象存储的对象分配指令中相关联。或者,本文所述标签可以由OS提供。
标签可以是从存储器分配函数返回的对象识别(ID)参数或基址指针。未分配对象ID的空闲列表或对象ID池可由应用程序或OS维护以供应用程序使用。列表或池可以在整个***中全局使用。例如,标签可以在存储器存取时从TLB中拾取(即,标签被存储为页表条目的部分)。基址指针标签使用与对象相关联的存储器地址的开头作为标签。例如,标签可以与一个或多个地址范围相关联,并被编程到如下文所述的对象跟踪表(OTT)中。如果一个对象由两个范围组成,则两个OTT条目可以分配有对应于该两个范围的相同标签。当程序从OTT中读出统计时,该程序将知悉两组统计都指向相同对象。在任一情况下,应用程序和/或OS可以将信息附加到标签上,诸如进程ID或线程号。进程ID是唯一的,并且可以被添加以避免标签之间的冲突。
应注意,在基址指针标签中,malloc分配函数返回的指针是虚拟地址。OS将虚拟地址映射到适当的物理地址,并且此转译/映射物理地址将被键入到OTT中。类似地,当应用程序或程序希望基于虚拟地址指针从OTT读取和查看统计时,应用程序或程序将不得不调用OS来执行从虚拟地址到物理地址的映射/转换,以在OTT中查找条目。
还应注意,物理页面可以由OS在运行时重新定位。如果OS要物理移动页面,则OS还将需要在OTT中更新任何匹配的物理地址,以便继续跟踪对象。
在分配所请求的存储器时,OS可以发送指令或命令,例如以在对象跟踪表115中录入条目。指令或命令可以被直接发送到对象跟踪表115(经由路径130)或者经由存储器控制器110间接发送到对象跟踪表115(经由路径135)。对于路径135,可以将对象跟踪表115映射到存储器地址空间中,并且可以使用常规(未经高速缓存的)加载和存储来完成对对象跟踪表115的存取。表条目寄存与对象和标签相关联的存储器地址。实际上,对象跟踪表115中的条目会警告存储器控制器110,当存储器地址范围内的存储器地址被引用、请求、存取等(统称为“被引用”)时,存储器控制器110应向对象跟踪表115发送相关对象或标签的更新。例如,存储器控制器110可以计数或跟踪读取、写入、位翻转或任何其它类似事件的数量,并且向对象跟踪表115发送更新。
为了防止在每个存储器引用上查找标签,可能需要将最新标签查找的高速缓存保存在某处。每个存储器请求都必须检查TLB,这是页表的高速缓存。因此,最近使用的标签可以被高速缓存在TLB中,并且其它标签可以在TLB未命中时加载。因此,对于每个存储器请求,存储器地址和标签可以被发送到存储器控制器110。也就是说,存储器请求现在可以将(多个)标签随每次读取或写入从TLB条目携带到存储器控制器110。存储器控制器110然后可以更新对象跟踪表115,而不必查找标签。或者,最近使用的标签可以被高速缓存在每个处理器的单独表中,或者高速缓存在存储器控制器110处的单独表中。这可以提供页面粒度跟踪。每页可以存储多个标签以支持子页面粒度对象跟踪。
对象跟踪表115可以被调整大小以适应多个并发标签的跟踪。对象跟踪表115可以被视为类似于TLB的高速缓存,并且在存在比对象跟踪表115可保存的更多的有效标签时,可溢出到主存储器120。对象跟踪表可以被实施为主存储器120的部分、实施为高速缓存或类似定位装置。
对象跟踪表115中的每个条目可以具有标签和一组统计。统计可每标签被单独跟踪,并且举例而言可以包括(但不限于):读取和写入计数、读取/写入比、存储体冲突、延时、行命中率、带宽、顺序相对于随机分数、命令队列占用(排队延迟)、一致性信息;将对象指定为只读或可修改的;指定对象的预期存取模式特性(顺序、随机、高速缓存友好…);指定对象持久性;需要保存在非易失性存储器中、分配位置;需要处理器已经共享的特定存储器装置或存储器装置类型、安全特征(“探针过滤器(probe filter)”);以及参考频率。
对象跟踪表115还可以保持跟踪由于写入未命中以及回写而引起的读取。这些事件可以用触发存储器请求的标签来标记。实际上,对象跟踪表115可以捕获和跟踪对给定标记对象的存取所产生的“副作用”存储器流量。例如,如果应用程序请求存取高速缓存线,则OS或TLB可以将标签应用于高速缓存线,即对象。为了安装高速缓存线,高速缓存控制器可能需要逐出另一可能与对象无关的高速缓存线(高速缓存逐出)。在某些情况下,应用程序可能希望跟踪这个高速缓存逐出或者回写主存储器,即标签的“副作用”。因此,应用程序知晓包括与请求相关联的“副作用”的所有流量。
OS或应用程序可以查询每个独立对象的统计,以调整数据放置决策。这可以例如通过向对象跟踪表115发出读取条目命令来完成。然后,应用程序可以确定并指定哪个存储器应该用于下一存储器请求。
当标签被应用程序明确释放或者存储器被取消分配时(例如,free()调用),标签可以被释放。可以将标签及其统计从对象跟踪表115中移除。这可以例如通过向对象跟踪表115发出删除条目命令来完成。
如果处理设备100在存储器层级中包括其它存储器,则存储器层级的每一级别可以使用对象跟踪表来保持跟踪与该级存储器相关联的统计。
本文所述标签可以与置信度估计器一起使用,以避免跟踪具有不显著数量的存储器存取的对象。例如,在对象跟踪表115中录入条目之前,置信度估计器可能需要对给定标签有至少N次存取。然后,OS可以忽略标签,并且不在对象跟踪表115中创建条目。处理单元105或类似装置可以保持跟踪最近存取的存储器地址和阈值。当存取次数达到或超过阈值时,然后OS可以在对象跟踪表115中创建条目。
图2是根据某些实施方式的用于标记和跟踪对象的实例流程图200。流程图200仅说明性用于跟踪主存储器存取。在不脱离权利要求范围的情况下,可以为其它类型的存储器和其它类型的命令或指令实施其它流程图。
用户程序(例如应用程序)请求具有标签的存储器分配(方框205)。标签可以是对象ID(示为Tag),或者是从基址指针导出的标签(示为ObjectPtr)。存储器分配调用由OS处置(方框210)。具体来说,对象的地址范围和标签被写入对象跟踪表。如果对象跟踪表没有足够的空间来保存地址范围和标签,则可将条目逐出到主存储器以释放空间;实际上,将对象跟踪表视为高速缓存。然后,用户程序恢复执行(方框215)。确定存储器存取是否是最后一级高速缓存未命中(方框220)。具体来说,最后一级高速缓存未命中是存储器存取(加载或存储(高速缓存回写))。这确保了在本实例中,只有主存储器存取触发了对象跟踪表中的查找。
如果是最后一级高速缓存未命中(方框222),则跟踪对象跟踪表中的计数器(方框230)。具体来说,如果地址范围和事件(例如,读取、写入或其它存储器事件)匹配,则适当的计数器递增。如果不是最后一级高速缓存未命中(方框224),则确定程序是否完成(方框240)。如果程序未完成(方框242),则程序继续执行(方框215)且周期从头开始。如果程序完成(方框244),则用户程序发送命令以从对象跟踪表获得对象统计(方框250)。读取来自对象跟踪表的条目并将其发送给用户程序(方框260)。
虽然本文的描述涉及一种存取存储器控制器的处理单元,但是举例而言,在不脱离权利要求范围的情况下,可以根据以上描述使用直接存储器存取(DMA)控制器。在这种情况下,处理单元被避开,且应用程序和DMA控制器将直接介接以处理存储器分配请求。标签和对象跟踪表可以根据本文陈述的描述来处置。
图3是在其中可实施一个或多个公开实例或实施方式的一个或多个部分的实例装置300方框图。装置300可例如包括头戴式装置、服务器、计算机、游戏装置、手持装置、机顶盒、电视机、移动电话或平板计算机。装置300包括处理器302、存储器304、存储装置306、一个或多个输入装置308和一个或多个输出装置310。装置300还可以可选地包括输入驱动器312和输出驱动器314。应理解,装置300可以包括图3中未示出的额外组件。
处理器302可以包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU,或者一个或多个处理器核,其中每个处理器核可以是CPU或GPU。存储器304可以位于与处理器302相同的管芯上,或者可以独立于处理器302而定位。存储器304可以包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储装置306可以包括固定或可抽换存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置308可以包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速度计、陀螺仪、生物识别扫描仪或网络连接(例如,用于无线IEEE 802信号的传输和/或接收的无线局域网)。输出装置310可以包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于发送和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器312与处理器302和输入装置308通信,并且允许处理器302从输入装置308接收输入。输出驱动器314与处理器302和输出装置310通信,并且允许处理器302将输出发送到输出装置310。应注意,输入驱动器312和输出驱动器314是可选组件,并且如果不存在输入驱动器312和输出驱动器314,则300将以相同的方式操作。
一般而言,一种用于跟踪对象的方法包括将标签与对象相关联,其中对象是存储器地址。所述方法还包括:针对对象和标签在对象跟踪表中添加表条目,其中对象跟踪表维护多个存储器事件的多个对象统计。所述方法还包括由存储器控制器更新相关联存储器事件的发生的对象统计,并提供多个对象统计以优化存储器利用决策。对象和标签可以在存储器分配指令中相关联。对象和标签可以在变量定义中相关联。在接收到存储器分配指令时,标签可以与对象相关联。表条目可以被键入到对象和标签的多个对象跟踪表中,每个对象跟踪表具有相关联的存储器控制器。标签是选自对象识别参数池的对象识别参数之一,或者基于与对象相关联的基址指针。标签包括进程识别符和线程识别符中的至少一个。如果对象和标签已被存取至少预定次数,则可以添加表条目。
一般而言,一种用于跟踪对象的处理设备包括:对象跟踪表,其具有用于对象和与对象相关联的标签的表条目,其中:对象是存储器地址,且其中对象跟踪表维护多个存储器事件的多个对象统计,其中使用多个对象统计来优化存储器利用决策;和存储器控制器,其针对相关联存储器事件的发生的对象统计更新表条目。对象和标签可以在存储器分配指令中相关联。对象和标签可以在变量定义中相关联。标签在接收到存储器分配指令时与对象相关联。对象可以在用于对象存储的对象分配指令中相关联。所述处理设备还包括多个对象跟踪表和多个存储器控制器,其中多个对象跟踪表中的一个与多个存储器控制器中的一个之间可能存在一一对应,并且其中在每个对象跟踪表中为对象和标签键入表条目。标签是选自对象识别参数池的对象识别参数之一,或者基于与对象相关联的基址指针。标签包括进程识别符和线程识别符中的至少一个。如果对象和标签已被存取至少预定次数,则添加表条目。
一般而言,一种包括指令的计算机可读非暂态介质,该指令在处理设备中执行时使得处理设备执行用于跟踪对象的方法,该方法包括:将标签与对象相关联,其中对象是存储器地址;针对对象和标签在对象跟踪表中添加表条目,其中对象跟踪表维护多个存储器事件的多个对象统计;由存储器控制器更新相关联的存储器事件的发生的对象统计;以及提供多个对象统计以优化存储器利用决策。标签是选自对象识别参数池的对象识别参数之一,或者基于与对象相关联的基址指针。标签包括进程识别符和线程识别符中的至少一个。对象和标签在存储器分配指令中相关联。对象和标签在用于对象存储的对象分配指令中相关联。
一般而言,在不限制本文描述的实施方式的情况下,一种计算机可读非暂态介质包括指令,该指令在处理设备中执行时使得处理设备执行用于对象标记跟踪的方法。
应理解,基于本文公开的许多变化是可行的。虽然上文以特定的组合描述了特征和元件,但是每个特征或元件可以在没有其它特征和元件的情况下单独使用,或者在具有或不具有其它特征和元件的情况下以各种组合使用。
所提供的方法可以在通用计算机、处理器或处理器核心中实施。合适的处理器例如包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其它类型的集成电路(IC)和/或状态机。这种处理器可以通过使用经处理的硬件描述语言(HDL)指令和包括网表的其它中间数据(这些指令能够被存储在计算机可读介质上)的结果来配置制造工艺来制造。这种处理的结果可以是之后用于半导体制造工艺中用于制造实施实施方式的诸多方面的处理器的掩摸作品。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中用于由通用计算机或处理器执行的计算机程序、软件或固件中实现。非暂态计算机可读存储介质的实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器装置、磁介质(诸如内部硬盘和可抽换式磁盘)、磁光介质和光学介质(诸如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
Claims (18)
1.一种用于跟踪对象以优化存储器分配的方法,所述方法包括:
计算对所述对象的存取请求的数量,其中所述对象是内存分配,所述内存分配包括一个或多个存储器地址的地址范围;
将标签与所述对象相关联,其中所述标签与存储器地址相关联;
将所述标签添加到与所述对象所在的存储器地址相关联的转译旁置缓冲器条目中,其中所述转译旁置缓冲器条目还包括与所述存储器地址相关联的地址转译;
响应于超过预定阈值的存取请求数量,针对所述对象和所述标签,在对象跟踪表中添加表条目,其中所述对象跟踪表维护多个存储器事件的多个对象统计;以及响应于检测到特定存储器事件,基于所述多个对象统计分配所述存储器。
2.根据权利要求1所述的方法,其中所述对象和所述标签在存储器分配指令中相关联。
3.根据权利要求1所述的方法,其中所述对象和所述标签在变量定义中相关联。
4.根据权利要求1所述的方法,其中所述标签在接收到存储器分配指令时与所述对象相关联。
5.根据权利要求1所述的方法,其中针对所述对象和所述标签在多个对象跟踪表中键入表条目,每个对象跟踪表具有相关联存储器控制器。
6.根据权利要求1所述的方法,其中所述标签是选自对象识别参数池的对象识别参数之一,或者基于与所述对象相关联的基址指针。
7.根据权利要求1所述的方法,其中所述标签包括进程识别符和线程识别符中的至少一个。
8.一种用于跟踪对象以优化存储器分配的处理设备,其包括:
对象跟踪表;和
存储器控制器,其通信地耦合到所述对象跟踪表,其中所述存储器控制器被配置为:
计算对所述对象的存取请求的数量,其中所述对象是内存分配,所述内存分配包括一个或多个存储器地址的地址范围,
将标签与所述对象相关联,
将所述标签添加到与所述对象所在的存储器地址相关联的转译旁置缓冲器条目中,其中所述转译旁置缓冲器条目还包括与所述存储器地址相关联的地址转译,以及
响应于超过预定阈值的存取请求数量,针对所述对象和所述标签,在对象跟踪表中添加表条目,其中所述对象跟踪表中的所述表条目维护多个存储器事件的多个对象统计;
更新用于相关联存储器事件的发生的对象统计的所述表条目;以及
响应于检测到特定存储器事件,基于所述多个对象统计分配所述存储器。
9.根据权利要求8所述的处理设备,其中所述对象和所述标签在存储器分配指令中相关联。
10.根据权利要求8所述的处理设备,其中所述对象和所述标签在变量定义中或用于对象存储的对象分配指令中相关联。
11.根据权利要求8所述的处理设备,其中所述标签在接收到存储器分配指令时与所述对象相关联。
12.根据权利要求8所述的处理设备,其还包括:
多个对象跟踪表;和
多个存储器控制器,其中:
在所述多个对象跟踪表之一与所述多个存储器控制器之一之间存在一一对应,并且
表条目被键入在每个对象跟踪表中用于所述对象和所述标签。
13.根据权利要求8所述的处理设备,其中所述标签是选自对象识别参数池的对象识别参数之一,或者基于与所述对象相关联的基址指针。
14.根据权利要求13所述的处理设备,其中所述标签包括进程识别符和线程识别符中的至少一个。
15.一种包括指令的非暂态计算机可读介质,所述指令在处理设备中执行时使得所述处理设备执行用于跟踪对象以优化存储器分配的方法,所述方法包括:
计算对所述对象的存取请求的数量,其中所述对象是内存分配,所述内存分配包括一个或多个存储器地址的地址范围;
将标签与所述对象相关联,其中所述标签与存储器地址相关联;
将所述标签添加到与所述对象所在的存储器地址相关联的转译旁置缓冲器条目中,其中所述转译旁置缓冲器条目还包括与所述存储器地址相关联的地址转译;
响应于超过预定阈值的存取请求数量,针对所述对象和所述标签,在对象跟踪表中添加表条目,其中所述对象跟踪表维护多个存储器事件的多个对象统计;以及
响应于检测到特定存储器事件,基于所述多个对象统计分配所述存储器。
16.根据权利要求15所述的非暂态计算机可读介质,其中所述标签是选自对象识别参数池的对象识别参数之一,或者基于与所述对象相关联的基址指针。
17.根据权利要求15所述的非暂态计算机可读介质,其中所述标签包括进程识别符和线程识别符中的至少一个。
18.根据权利要求15所述的非暂态计算机可读介质,其中所述对象和所述标签在存储器分配指令中或在用于对象存储的对象分配指令中相关联。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/136,851 US11061572B2 (en) | 2016-04-22 | 2016-04-22 | Memory object tagged memory monitoring method and system |
US15/136,851 | 2016-04-22 | ||
PCT/US2017/027901 WO2017184497A1 (en) | 2016-04-22 | 2017-04-17 | Object tagged memory monitoring method and processing apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109154920A CN109154920A (zh) | 2019-01-04 |
CN109154920B true CN109154920B (zh) | 2023-07-18 |
Family
ID=60089539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780031817.7A Active CN109154920B (zh) | 2016-04-22 | 2017-04-17 | 对象被标记的存储器监测方法及处理设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11061572B2 (zh) |
EP (1) | EP3446223A4 (zh) |
JP (1) | JP6983806B2 (zh) |
KR (1) | KR102410348B1 (zh) |
CN (1) | CN109154920B (zh) |
WO (1) | WO2017184497A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11086782B2 (en) * | 2017-06-21 | 2021-08-10 | Tetra Laval Holdings & Finance S.A. | Method of logging process data in a PLC controlled equipment |
KR102394695B1 (ko) * | 2017-11-08 | 2022-05-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US10776282B2 (en) * | 2017-12-15 | 2020-09-15 | Advanced Micro Devices, Inc. | Home agent based cache transfer acceleration scheme |
US10877894B2 (en) | 2019-05-16 | 2020-12-29 | Micron Technology, Inc. | Memory-side transaction context memory interface systems and methods, wherein first context and first address are communicated on plural wires during different clock cycles and second context (of block of the first context) is communicated on additional wire during one of the different clock cycles |
US10877889B2 (en) | 2019-05-16 | 2020-12-29 | Micron Technology, Inc. | Processor-side transaction context memory interface systems and methods |
CN112905405B (zh) * | 2019-12-03 | 2022-12-23 | 武汉斗鱼鱼乐网络科技有限公司 | 一种标签数据处理方法、装置和存储介质 |
US11216366B2 (en) * | 2020-02-13 | 2022-01-04 | Intel Corporation | Security check systems and methods for memory allocations |
US11379376B2 (en) | 2020-05-20 | 2022-07-05 | Micron Technologies, Inc. | Embedding data in address streams |
CN112333233B (zh) * | 2020-09-23 | 2023-11-24 | 北京达佳互联信息技术有限公司 | 事件信息的上报方法、装置、电子设备及存储介质 |
WO2022139850A1 (en) | 2020-12-26 | 2022-06-30 | Intel Corporation | Cryptographic computing including enhanced cryptographic addresses |
JP2022142648A (ja) * | 2021-03-16 | 2022-09-30 | 富士通株式会社 | 情報処理装置および復元制御方法 |
US11972126B2 (en) | 2021-03-26 | 2024-04-30 | Intel Corporation | Data relocation for inline metadata |
US11829627B2 (en) | 2021-08-16 | 2023-11-28 | Micron Technology, Inc. | Data migration schedule prediction using machine learning |
US11954045B2 (en) | 2021-09-24 | 2024-04-09 | Intel Corporation | Object and cacheline granularity cryptographic memory integrity |
US12050584B2 (en) * | 2022-03-15 | 2024-07-30 | Cisco Technology, Inc. | Content tracking and updating |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011107046A2 (zh) * | 2011-04-19 | 2011-09-09 | 华为技术有限公司 | 内存访问监测方法和装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6839739B2 (en) * | 1999-02-09 | 2005-01-04 | Hewlett-Packard Development Company, L.P. | Computer architecture with caching of history counters for dynamic page placement |
US6286092B1 (en) * | 1999-05-12 | 2001-09-04 | Ati International Srl | Paged based memory address translation table update method and apparatus |
JP2007094871A (ja) | 2005-09-29 | 2007-04-12 | Matsushita Electric Ind Co Ltd | メモリ管理装置及びメモリ管理方法 |
US7941631B2 (en) | 2007-12-28 | 2011-05-10 | Intel Corporation | Providing metadata in a translation lookaside buffer (TLB) |
US9223814B2 (en) | 2008-11-20 | 2015-12-29 | Microsoft Technology Licensing, Llc | Scalable selection management |
US8539452B2 (en) * | 2009-05-05 | 2013-09-17 | International Business Machines Corporation | Virtual machine tool interface for tracking objects |
JP5618796B2 (ja) | 2010-12-02 | 2014-11-05 | 株式会社日立製作所 | 計算機、計算機の制御方法及びプログラム |
US8874515B2 (en) * | 2011-04-11 | 2014-10-28 | Sandisk Enterprise Ip Llc | Low level object version tracking using non-volatile memory write generations |
US20130024597A1 (en) * | 2011-07-19 | 2013-01-24 | Loh Gabriel H | Tracking memory access frequencies and utilization |
US8918616B2 (en) * | 2011-08-24 | 2014-12-23 | Microsoft Corporation | Memory allocation analysis |
US8626993B2 (en) | 2011-11-18 | 2014-01-07 | Apple Inc. | Method for tracking memory usages of a data processing system |
US8700962B2 (en) | 2012-07-27 | 2014-04-15 | Lsi Corporation | Scan test circuitry configured to prevent capture of potentially non-deterministic values |
US9417988B2 (en) | 2013-02-26 | 2016-08-16 | Red Hat, Inc. | Tracking subclasses of and operations performed by generic objects in a computer system |
US9396030B2 (en) * | 2013-03-13 | 2016-07-19 | Samsung Electronics Co., Ltd. | Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications |
US9940286B2 (en) * | 2013-03-14 | 2018-04-10 | Nvidia Corporation | PCIE traffic tracking hardware in a unified virtual memory system |
US20150242312A1 (en) | 2013-04-19 | 2015-08-27 | Hitachi, Ltd. | Method of managing memory, computer, and recording medium |
US9317443B2 (en) * | 2014-04-17 | 2016-04-19 | International Business Machines Corporation | Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces |
US9858140B2 (en) * | 2014-11-03 | 2018-01-02 | Intel Corporation | Memory corruption detection |
-
2016
- 2016-04-22 US US15/136,851 patent/US11061572B2/en active Active
-
2017
- 2017-04-17 KR KR1020187032346A patent/KR102410348B1/ko active IP Right Grant
- 2017-04-17 WO PCT/US2017/027901 patent/WO2017184497A1/en active Application Filing
- 2017-04-17 JP JP2018553152A patent/JP6983806B2/ja active Active
- 2017-04-17 CN CN201780031817.7A patent/CN109154920B/zh active Active
- 2017-04-17 EP EP17786404.8A patent/EP3446223A4/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011107046A2 (zh) * | 2011-04-19 | 2011-09-09 | 华为技术有限公司 | 内存访问监测方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US11061572B2 (en) | 2021-07-13 |
EP3446223A4 (en) | 2019-12-04 |
JP2019516179A (ja) | 2019-06-13 |
WO2017184497A1 (en) | 2017-10-26 |
CN109154920A (zh) | 2019-01-04 |
KR20180128489A (ko) | 2018-12-03 |
JP6983806B2 (ja) | 2021-12-17 |
US20170308297A1 (en) | 2017-10-26 |
KR102410348B1 (ko) | 2022-06-17 |
EP3446223A1 (en) | 2019-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109154920B (zh) | 对象被标记的存储器监测方法及处理设备 | |
KR102665339B1 (ko) | 변환 색인 버퍼 축출 기반 캐시 교체 | |
EP3414665B1 (en) | Profiling cache replacement | |
US8285969B2 (en) | Reducing broadcasts in multiprocessors | |
US20170185528A1 (en) | A data processing apparatus, and a method of handling address translation within a data processing apparatus | |
US10007614B2 (en) | Method and apparatus for determining metric for selective caching | |
US7669009B2 (en) | Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches | |
EP3262513B1 (en) | Data caching | |
US9552301B2 (en) | Method and apparatus related to cache memory | |
US20180052779A1 (en) | Data cache region prefetcher | |
KR101893966B1 (ko) | 메모리 관리 방법 및 장치, 및 메모리 컨트롤러 | |
US10503658B2 (en) | Page migration with varying granularity | |
WO2023055486A1 (en) | Re-reference interval prediction (rrip) with pseudo-lru supplemental age information | |
US8140766B2 (en) | Enhanced coherency tracking with implementation of region victim hash for region coherence arrays | |
CN114238167B (zh) | 信息预取方法、处理器、电子设备 | |
US9128856B2 (en) | Selective cache fills in response to write misses | |
US20180052778A1 (en) | Increase cache associativity using hot set detection | |
US11467960B1 (en) | Access frequency caching hardware structure | |
US10430343B2 (en) | Acceleration of cache-to-cache data transfers for producer-consumer communication | |
KR101976320B1 (ko) | 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법 | |
US11397691B2 (en) | Latency hiding for caches | |
CN114218132A (zh) | 信息预取方法、处理器、电子设备 | |
WO2024072574A1 (en) | Region pattern-matching hardware prefetcher | |
CN115917516A (zh) | 用于相联高速缓存的直接映射模式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |