CN103870394B - 基于保留优先级的缓存替换策略 - Google Patents

基于保留优先级的缓存替换策略 Download PDF

Info

Publication number
CN103870394B
CN103870394B CN201310680919.5A CN201310680919A CN103870394B CN 103870394 B CN103870394 B CN 103870394B CN 201310680919 A CN201310680919 A CN 201310680919A CN 103870394 B CN103870394 B CN 103870394B
Authority
CN
China
Prior art keywords
cache lines
buffer memory
priority
cache
priority value
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
CN201310680919.5A
Other languages
English (en)
Other versions
CN103870394A (zh
Inventor
帕瑞卡什·史昂莱·瑞恩莱卡亚妮
阿里·格哈森·赛迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN103870394A publication Critical patent/CN103870394A/zh
Application granted granted Critical
Publication of CN103870394B publication Critical patent/CN103870394B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means

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)

Abstract

本公开提供基于保留优先级的缓存替换策略。一种数据处理系统包括缓存存储器(58)和缓存控制电路(56),用于基于对缓存存储器(58)中的每个缓存行(66)存储的保留优先级值PV来施加缓存替换策略。在缓存行(66)被插入缓存存储器(58)中时设置的初始保留优先级值取决于多个源中的哪个发送了导致插入的存储器存取请求以及导致插入的存储器存取请求的权限级别中的一者或两者。由指令获取产生的缓存行的初始保留优先级级别可以被设置为与由数据存取产生的缓存行不同。

Description

基于保留优先级的缓存替换策略
技术领域
本发明涉及数据处理系统领域。更具体地,本发明涉及在数据处理系统中使用的缓存替换策略。
背景技术
已知提供带有缓存存储器的数据处理系统。缓存存储器提供对频繁使用的数据或指令更快、更有效的存取。与主存储器相比,缓存存储器通常具有有限的大小,并因此在任意给定的时间仅有保存在主存储器中的指令/数据的子集能够被保存在缓存存储器中。为缓存存储器提供替换策略,替换策略确定应当从缓存中移出缓存行(该缓存行可能包含数据和/或指令)以便给将要从主存储器中获取并存储在缓存存储器中的新的缓存行腾出空间。有很多已知的缓存替换策略的示例,比如最近最少使用法、轮叫法以及随机法。
发明内容
从本发明的一个方面看,提供了一种用于处理数据的装置,所述装置包括:
存储器存取请求的多个源;
耦合到所述多个源的缓存存储器;以及
耦合到所述缓存存储器的缓存控制电路,所述缓存控制电路被配置来控制缓存行到所述缓存存储器的插入以及缓存行从所述缓存存储器的逐出,其中
所述缓存控制电路被配置来存储与插入到所述缓存存储器中的每个缓存行相关联的各保留优先级值;
所述缓存控制电路被配置来根据所述保留优先级值从所述缓存存储器中选择缓存行以逐出;以及
所述缓存控制电路被配置来根据以下至少一项设置与插入到所述缓存存储器中的缓存行相关联的保留优先级值:
(i)所述多个源中的哪个发送了导致所述缓存行插入到所述缓存存储器中的存储器存取请求;以及
(ii)所述存储器存取请求的权限级别。
本技术认识到改善的替换策略可以通过将每个缓存行与依赖于存储器存取请求的源和/或存储器存取请求的权限级别的保留优先级值相关联来获得。随后根据这些分配的保留优先级值(这些保留优先级值在缓存行驻留于缓存存储器中期间可以被改变)从缓存存储器中选择缓存行以逐出。
缓存控制电路被配置来使具有相应于低保留优先级的保留优先级值的缓存行比具有相应于高保留优先级的保留优先级值的缓存行优先逐出。保留优先级值因此可被用来表示将给定的缓存行保持在缓存存储器中的预测意愿。将缓存行保持在缓存存储器中的意愿可能是该缓存行被频繁存取或如果因该缓存行不存在于缓存存储器中而存取被延迟所以导致重大惩罚的事实的结果。根据触发获取的初始存储器存取请求的源和/或触发获取的存储器存取请求的权限级别设置的保留优先级值可以增加从保留在缓存存储器中的缓存行获取的益处(或以另一种方式看,减少由没有保留在缓存存储器内的缓存行招致的惩罚)。
在一些示例实施例中,多个源可以包括被配置来获取用于执行的程序指令的指令获取电路和被配置来存取要经受处理操作的数据值的数据存取电路。作为示例,指令获取电路和数据存取电路可以是通用处理器、图形处理单元或DSP的部分。根据缓存行是因为指令获取电路的存储器存取还是数据存取电路的存储器存取而被插入到缓存存储器中,指令保留优先级值或数据保留优先级值可以与缓存行相关联。指令保留优先级值和数据保留优先级值的不同之处在于对于缓存行随后被从缓存存储器中逐出给出不同的可能性。
根据情况,可能希望指令保留优先级值比数据保留优先级值对应于更高的保留优先级。在其他情况中,可能希望应当保持相反的保留优先级关系。因此,在一些实施例中,缓存控制电路响应于标志来设置上述关系之一。
尽管标志可以由物理硬件信号控制,在一些实施例中,标志值是软件可编程标志程序值,该标志值控制指令或数据是否凭借它们被插入到缓存存储器中时被分配给它们的不同的保留优先级值而被优先地保留在缓存存储器中。
在一些实施例中,指令获取电路和数据存取电路是顺序处理器的部分,并且在这种情形下,希望指令保留优先级值应当比数据保留优先级值具有较低的保留优先级,即,希望数据比指令优先地保留在缓存存储器中(至少到与指令相比偏向有利于保留数据的程度而不是阻止指令被保留)。
尽管保留优先级值可以被存储在系统中的任何位置(例如,存储在缓存控制电路中),在一些实施例中,保留优先级值与它们相关联的缓存行一起(如果缓存存储器包含单独的TAG存储器和数据存储器,最可能与TAG值一起)存储在缓存存储器中是方便的。缓存行可以被扩展一位或多位来容易地适应与之相关联的保留优先级值。
当选定了用于逐出的缓存行时,缓存控制电路对与缓存行相关联的保留优先级值进行响应。在一些实施例中,缓存控制电路可以被配置来从那些具有相应于可能表示的最低保留优先级值的相关联保留优先级值的缓存行中选择用于逐出的缓存行。在相应于最低保留优先级的缓存行池中,缓存控制电路可以依据诸如轮叫或最近最少使用法的另一种策略进行选择,但是如果在那些具有相应于最低保留优先级的相关联保留优先级值的缓存行中进行随机选择的话,这是简单的。
如果没有具有相应于最低保留优先级的相关联保留优先级值并适于逐出的缓存行,在一些实施例中,缓存控制器被配置来降低缓存存储器中的所有缓存行的保留优先级,直到至少一个缓存行具有相应于最低保留优先级的保留优先级值并因此适于逐出。这种降级可以通过改变所存储的保留优先级值或通过改变所存储的保留优先级值和它们所表示的优先级之间的映射来获得。
当缓存行被插入时与之相关联的保留优先级值如上所述依赖于相应的存储器存取请求的源或权限级别而变化。此后,保留优先级值可能随与缓存行单独地相关联的活动或与缓存存储器总地相关联的活动而改变。在一些实施例中,缓存控制电路被配置来检测对已经存在于缓存存储器中的缓存行的存取(命中)并基于这种命中来改变保留优先级值,以便提高缓存行的保留优先级。因此,经常被存取的缓存行的保留优先级将被提高,从而它们优先地保留在缓存存储器中。
在缓存命中发生时对缓存行的保留优先级值的提高能够以各种不同的方式进行。在一些实施例中,命中的缓存行的保留优先级值随每次存取逐步提高到最高的最大保留优先级值(一旦达到最大保留优先级值,不再随命中进行进一步提高),或可选地,当出现命中时,命中的缓存行的保留优先级值被改变为直接移动到最高保留优先级。
如前所述,与不同的保留优先级值相关联的多个源可以采用指令获取电路或数据存取电路的形式。在其他实施例中,多个源可以包括通用处理器和图形处理单元,它们具有与由它们触发而被插入到在通用处理器和图形处理单元之间共享的缓存存储器中的缓存行相关联的不同的保留优先级值。作为示例,图形处理单元可以容许与缓存存储器内失效(miss)的存储器存取相关联的较长的延时,并因此希望通过为插入到缓存存储器中代表通用处理器的缓存行分配相应于较高保留优先级的保留优先级值来将缓存资源偏向通用处理器。
多个源的另一个示例可以是多个可能相同的通用处理器。然而,这些处理器中的一些可能被分配更多时间要求严格的任务,并因此对缓存行在多个通用处理器共享的缓存存储器中的保留应该偏向对快速存取指令和数据有最大需求的处理器(例如,一些处理器可能正执行对性能要求严格的实时任务,而其它处理器可能正执行可以容易地容许较长延时的后台维护任务)。
应用本技术的缓存存储器可以在存储器系统内的不同位置采用各种不同的形式。在一些实施例中,缓存存储器是二级缓存存储器,而在其它实施例中缓存存储器可以是三级缓存存储器。
应理解,根据想要指定的粒度,保留优先级值可以具有各种不同的位大小。在所支持的粒度和存储保留优先级值所需的存储资源之间存在平衡。在一些实施例中,保留优先级值为两位保留优先级可获得折中。
如前所述,缓存行在插入到缓存存储器中时被分配的保留优先级值可以随与对于缓存存储器获取缓存行的存储器存取请求相关联的权限级别而变化。以这种方式,缓存行保留可以偏向由具有较高权限级别的存储器存取请求获取的缓存行。作为示例,装置可以执行内核程序和一个或多个用户程序,并且内核程序的权限级别高于一个或多个用户程序的权限级别。在这种情况中,例如,插入到缓存存储器中代表内核程序的缓存行可以比那些被插入的代表一个或多个用户程序的缓存行被赋予较高的保留优先级以便保留。在其它实施例中,相反的情况也可能,即,插入的代表用户程序的缓存行比插入的代表内核程序的缓存行被赋予较高的优先级。
从本发明的另一个方面看,提供了一种用于处理数据的装置,所述装置包括:
多个源装置,用于产生存储器存取请求;
缓存存储器装置,用于存储数据;
缓存控制装置,用于控制缓存行到所述缓存存储器装置的插入及缓存行从所述缓存存储器装置的逐出,其中
所述缓存控制装置被配置来存储与插入到所述缓存存储器装置中的每个缓存行相关联的各保留优先级值;
所述缓存控制装置被配置来根据所述保留优先级值从所述缓存存储器装置中选择用于逐出的缓存行;以及
所述缓存控制装置被配置来根据以下至少一项设置与插入到所述缓存存储器装置中的缓存行相关联的保留优先级值:
(i)所述多个源中的哪个发送了导致所述缓存行插入到所述缓存存储器装置中的存储器存取请求;以及
(ii)所述存储器存取请求的权限级别。
从本发明的有一个方面看,提供了一种处理数据的方法,所述方法包括如下步骤:
以多个源产生存储器存取请求;
在缓存存储器中存储数据;以及
控制缓存行到所述缓存存储器的插入及缓存行从所述缓存存储器中的逐出,所述方法还包括如下步骤:
存储与插入到所述缓存存储器中的每个缓存行相关联的各保留优先级值;
根据所述保留优先级值从所述缓存存储器中选择用于逐出的缓存行;以及
根据以下至少一项设置与插入到所述缓存存储器装置中的缓存行相关联的保留优先级值:
(i)所述多个源中的哪个发送了导致所述缓存行插入到所述缓存存储器装置中的存储器存取请求;以及
(ii)所述存储器存取请求的权限级别。
本发明的上述及其它目标、特征及优点将从下述结合附图对示例实施例的详细地描述中变得显而易见。
附图说明
现在仅通过示例的方式,参照附图来描述本发明的实施例,其中。
图1示意性地示出了包括多个存取请求源、缓存层级结构和主存储器的数据处理系统;
图2示意性地示出了包括指令获取电路和数据存取电路的通用处理器;
图3示意性地示出了用于插入伴有不同的保留优先级值的缓存行并随后根据那些保留优先级值执行缓存行逐出的缓存控制电路;
图4示意性地示出了缓存行的内容;
图5是示意性地示出了缓存控制电路响应于接收到的存储器存取请求的操作的流程图;
图6是示意性地示出了当保留优先级值依据存储器存取请求源被设置时有关缓存失效而执行的处理操作的流程图;
图7是除保留优先级值是根据导致失效的存储器存取请求是否具有与内核程序相关联的内核权限级别而设置的之外,与图6的流程图相似的流程图。
具体实施方式
图1示意性地示出了处理数据的装置2,装置2包括主存储器4,包括三级缓存6、两个二级缓存8和10、四个一级缓存12、14、16和18的缓存层级结构,以及包括两个通用处理器20和22、图形处理单元24和DSP单元26的多个存储器存取请求源。
各种缓存存储器6到18是按层级结构排列的。所有的存取请求源20、22、24和26共享单个三级缓存6。两个通用处理器20和22共享二级缓存8。图形处理单元24和DSP单元26共享二级缓存10。存取请求源20、22、24和26中的每个都有自己的一级缓存12、14、16和18。本技术可以被应用于缓存6到18中的任何一个,尽管发现在二级缓存8和10以及三级缓存6中特别实用。
图1也示出了主存储器4。主存储器4支持存储器地址空间,其中不同范围的存储器地址可以主要被在各种存取请求源20、22、24和26上执行的不同的任务或程序使用。被获取到缓存存储器6到18中的任何一个的缓存行将在主存储器4中有相应的地址(实际上是小地址范围)。如图1所示,不同范围的存储器地址被被多个用户程序28、30、32和34中不同的用户程序使用,并且不同范围的存储器地址36用于内核程序(操作系统的部分,包括在某些操作模式中可能被频繁地执行的代码)。存储器管理单元(未示出)可以被提供来根据存储器存取请求源的当前权限级别来限制对主存储器4的不同区域的存取。权限级别也可以被用来控制保留优先级。正如后面将讨论的,与缓存行相关联的一个或多个存储器地址可被用于确定当缓存行被插入缓存存储器6到18中的一个中时分配给该缓存行的保留优先级值。存储器地址空间被分为多个存储器地址范围,从而使得不同的保留优先级值可以与不同存储器地址范围相关联。
图2示意性地示出了包括指令获取电路40和数据存取电路42的通用处理器38。指令获取电路40获取程序指令流,程序指令被传递到顺序指令流水线44并沿着顺序指令流水线44前进,正如他们经历各个阶段的处理。这些处理阶段中的至少一个使用指令解码器46解码指令并产生控制诸如寄存器组48、乘法器50、移位器52和加法器54等的处理电路来执行由解码的程序指令所指定的处理操作的控制信号。数据存取电路42具有负载存取单元(LSU)的形式,并执行数据存取来读和写经受由处理电路48、50、52和54执行的程序指令控制下的处理操作的数据值。通用处理器38输出识别存储器存取请求是涉及指令还是数据以及相关联的权限级别的信号。
要理解的是图2是对通用处理器38的程式化的表现,而实践中通用处理器38通常包括更多的电路元件。为清楚起见,图2中省略了这些电路元件。
通过指令获取电路40和数据存取电路42存取的数据和指令可以被存储在缓存层级结构6到18的任何级中,并且也将被存储在主存储器4中。存储器存取请求沿缓存层级结构向上传递直到出现命中(hit),或者如果没有命中出现将传递到主存储器4中。当没有出现命中时,这是失效(miss),并且包括试图要存取的数据(或指令)的缓存行将被从主存储器4获取到缓存层级结构6到18中。如果失效出现在较高级的缓存之一中(例如,一级缓存12到18,但是命中出现在诸如二级缓存或三级缓存6的较低级的缓存之一中),那么缓存行将被从较低级的缓存中取回到离存储器存取请求源较近的较高级的缓存中。本技术可以被用来分配当缓存行从缓存层级结构的一个级被复制到另一级时而插入时的保留优先权值。
当存储器存取请求是由存取请求源20、22、24和26之一所作出时,那么该存储器存取请求伴随有识别存储器存取请求源的信号以及识别当前执行的程序的权限级别的信号。作为示例,伴随信号可以区分存储器存取请求源自指令获取电路40还是数据存取电路42。如果存储器存取请求导致了失效,那么这个指示存储器存取请求源的信号可以被用来在与失效相应的缓存行被插入到缓存存储器中出现失效的位置时与该缓存行相关联的保留优先级值。这些与因指令获取或数据存取而被插入的缓存行相关联的不同的保留优先权值随后可以被用来控制从缓存存储器中选择用于逐出(eviction)的缓存行。
上面描述了基于源是指令获取电路40还是数据存取电路42而对保留优先级值的不同设置。不同的保留优先级值也可以根据例如诸如源是否是通用处理器20和22或图形处理单元24之一等的其它因素而被设置。在其它实施例中,两个通用处理器20和22可以执行不同类型的任务,并且代表他们以相关联的不同保留优先级值用于填充到共享缓存存储器中的缓存行(例如,一个处理器20可以正在执行被分配了较高缓存保留优先级的实时任务,而另一个处理器22可以正在执行具有较低保留优先级的后台任务)。
另一种控制与插入到缓存存储器中的缓存行相关联的保留优先级值的方法(可以单独使用或与源标识符组合使用)基于与缓存行相关联的权限级别。内核程序与用户程序相比通常以较高权限级别执行,并且与被一个或多个用户程序获取的缓存行相比,缓存行保留(使用插入时的保留优先级值)可能会偏向于被内核程序获取的缓存行。
图3示意性地示出了耦合到缓存存储器58的缓存控制电路56。缓存控制电路56接收指定存储器地址的存储器存取请求、识别该存储器存取请求是来自存储器存取请求源之一的指令获取还是数据存取的信号以及权限级别信号。缓存控制电路56对软件可编程标志值60做出响应,软件可编程标志值60指示指令是否比数据被赋予更高的保留优先级或数据是否比指令被赋予更高的保留优先级。在诸如图2所示的顺序通用处理器的情况中,已经发现对数据缓存行比指令缓存行赋予更高的保留优先级可以提高性能。软件可编程标志值60允许这一偏好在软件控制下被选择以适应个人情况。
与具有内核权限级别的存储器存取请求相关联的缓存行将比那些与用户权限级别相关联的缓存行被赋予更高的保留优先级,并因此将优先保留在缓存储器58中。缓存控制电路56控制关于存储器存取请求是否能够由存储于缓存存储器58中的缓存行66来服务(相应于命中)或缓存存储器58是否不包含相应的缓存行并因此必须参考缓存存储器层级结构中的更高级(相应于失效)的判断。当出现失效时,那么数据将随后从存储器层级结构中的更高级返回并存储在缓存存储器58中(除非存储器存取被标记为不可缓存的)。
如果缓存存储器58已经满了,那么必须从缓存存储器58移除现有的缓存行来为新获取的缓存行腾出空间。如在下文中所述,替换策略可以取决于在当每个缓存行被插入时由缓存控制电路56存储于缓存存储器58中的保留优先级值PV。保留优先级值PV在缓存行被插入时被设置为初始值,但可以随缓存行存在于缓存存储器58中时对缓存行的使用以及缓存存储器58可能产生的操作的其它方面而改变(例如,全局降级以给出潜在的受害者(victim)缓存行池)。
图4示意性地示出了缓存行66。在这一示例中,缓存行包括相应于存储器地址的TAG值68,构成缓存行的N个字的指令或数据被从主存储器4的存储器地址空间中的该存储器地址提取。缓存行内还包括两位(bit)保留优先级值70。保留优先级值如图所示进行编码,保留优先级值“00”相应于最高保留优先级,而保留优先级值“11”相应于最低优先级。在下面将要进一步讨论的示例中,当缓存行被缓存控制器56插入到缓存存储器58中时,缓存行将以初始保留优先级值70为相应于最低保留优先级的“11”或相应于比最低优先级高一级的保留优先级,保留优先级值“10”,被插入。其它初始值可被使用,例如,“01”用于较高保留优先级以及“10”用于较低保留优先级。当已经被保存于缓存存储器中的缓存行上出现命中时,那么在一些实施例中该缓存行的保留优先级值可以被递减一,直到达到相应于最高保留优先级的限值“00”。在其它实施例中,当对于已经被保存于缓存存储器58中的缓存行出现命中时,那么缓存行的保留优先级值可以被立即改变到相应于最高保留优先级的限值“00”。
要理解图4示出了具有和数据一起存储的TAG的缓存行。在实践中,TAG可以与数据分开存储。在这种情况下,保留优先级值可以与TAG以及诸如有效位和脏位(dirty bit)等其它位一起存储。
保留优先级值更一般的是n位保留优先级值。这给出2n种可能的保留优先级值K=0,1,…2n-1。被分配给不同类别的缓存行插入(例如,数据相对于指令,或内核相对于用户)的保留优先级值被选择,以使得它们总和为2n-1。这在可用的位空间内平均分配保留优先级值。不同的开始插入值可被选择为例如强烈有利于数据(数据=00,指令=11)、微弱有利于数据(数据=01,指令=10),微弱有利于指令(数据=10,指令=01)、强烈有利于指令(数据=11,指令=00)。这些不同的开始值相应于在(例如,通过硬件配置选择或通过软件配置选择)间可以选择的不同策略。
图5是示意性地示出缓存控制电路56和缓存存储器58在缓存层级结构6到18中给定的层级上在服务于存储器存取请求的过程中所进行的操作的流程图。在步骤72中,处理等候直到接收到存取请求。在步骤74中,做出存取请求是相应于已经存在于缓存存储器58中的缓存行之一中的数据还是指令的判断。如果存储器存取请求相应于已经存在的存储行,那么这是命中,处理前进到步骤76。在步骤76中已经命中的缓存行的保留优先权值被递减一(相应于保留优先级级别提升一级),受限于降低到达到最小可能值“00”的保留优先权值。在步骤76之后,步骤78用来为来自缓存存储器58的存储器缓存请求提供服务,处理返回到步骤72。
如果在步骤74没有检测到命中,处理前进到步骤80,其中如下面所述的缓存失效操作被触发。随后处理在步骤82等待数据或指令的缓存行被返回到缓存存储器58。一旦数据/指令被返回并且插入到缓存存储器58(或与这种插入并行),随后处理前进到步骤78,其中存储器存取请求被提供服务。
图6是示意性地示出了由缓存控制电路56和缓存存储器58基于图5中由步骤80触发的失效而执行的失效操作的流程图。在步骤84中,处理等待直到检测到缓存失效。步骤86判断缓存存储器当前是否是满的。如果缓存存储器当前不是满的,那么处理前进到步骤88,其中当前空的缓存行之一随机地被选择作为“受害者”,新获取的缓存行可以被填入其中。
如果在步骤86中确定缓存已经满了,那么必须从当前被占用的缓存行中选择受害者。步骤90判断是否有当前被占用的缓存行中的任何缓存行具有最低保留优先级。在前面讨论的示例中,这相应于具有保留优先级值“11”的缓存行。如果没有这种具有最低保留优先级的缓存行,那么处理前进到步骤92,其中当前保持于缓存存储器58中的所有缓存行的保留优先级都被降一级。这将通过改变所有存储的保留优先级值PV来达到。然而,更有效的实施例可以改变存储的保留优先级值和保留优先级级别之间的映射以达到相同的结果。在所有的缓存行都被降低一个保留优先级级别后,随后处理返回到步骤90,其中重复对最低优先级级别的缓存行的检查。处理在步骤90和92间循环直到在步骤90中检测到至少一个具有最低保留优先级级别的缓存行。
当在步骤90中检测到至少一个具有最低保留优先级级别的缓存行之后,步骤94用来从具有最低保留优先级的缓存行中随机选择受害者(如果单一缓存行具有这一最低保留优先级,那么将选择这个单一行)。在最低保留优先级缓存行中随机选择受害者相对易于实现。诸如最近最少使用策略或轮叫策略等从最低保留优先级缓存行池中进行选择的其他策略可以被采用。这些不同的策略通常需要额外的资源来存储与它们的操作相关联的状态。
一旦在步骤94中选定了受害者,步骤96确定该缓存行是否是脏的(是否包含不同于那些当前保存于主存储器4中值的更新值)。如果该缓存行是脏的,那么步骤98用于在该缓存行被新插入的缓存行重写之前,将该缓存行回写到储存器4中。
在这一示例中,步骤100确定触发失效的存储器存取是否源自指令获取单元40。如果存储器存取是源自获取单元的,那么该缓存行至少包含要被获取的指令,并在步骤102中以保留优先级值“10”标记。如果在步骤100中确定存储器存取不是来自指令获取单元,那么存储器存取是来自负载存储单元42(数据存取电路)的,并在步骤104中设置保留优先级值PV为“01”。随后步骤106等待直到接收到来自存储器层级结构中的较低级(例如,较低级别缓存存储器之一或主存储器)的缓存行。当在步骤106中接收到缓存行时,随后步骤108用于将新缓存行和初始保留优先级值PV一起写入在步骤94中选定的先前存储的受害者中。
图7是与图6中的流程图相似的流程图。图7的不同之处在于保留优先级值是基于与出现缓存失效的缓存行相关联的权限级别是否是相应于操作系统的内核程序的内核权限级别。一旦受害者被选定,那么步骤110确定出现缓存行失效的存储器存取是否具有相应于内核程序的权限级别。如果在步骤110中确定存储器缓存具有相应于内核程序的内核权限级别,随后步骤112用于设置保留优先级值PV为“01”。相反地,如果存储器存取具有用户权限级别并且不相应于内核程序,随后步骤114用于设置初始保留优先级值PV为“10”。如此,与内核程序相关联的缓存行比那些与其它程序(例如,用户程序)相关联的缓存行被赋予较高的初始保留优先级。
尽管已经参照附图对本发明的示意性实施例作了详细地描述,要理解的是本发明不限于这些具体的实施例,并且在不脱离由所附权利要求限定的本发明的精神和范围的情况下,本领域技术人员能够做出各种变化和修改。

Claims (17)

1.一种用于处理数据的装置,所述装置包括:
用于产生存储器存取请求的多个源;
耦合到所述多个源的缓存存储器;以及
耦合到所述缓存存储器的缓存控制电路,所述缓存控制电路被配置来控制缓存行到所述缓存存储器的插入以及缓存行从所述缓存存储器的逐出,其中
所述缓存控制电路被配置来存储与插入到所述缓存存储器中的每个缓存行相关联的各保留优先级值;
所述缓存控制电路被配置来根据所述保留优先级值从所述缓存存储器中选择用于逐出的缓存行;
所述缓存控制电路被配置来根据以下至少一项设置与插入到所述缓存存储器中的缓存行相关联的保留优先级值:
(i)所述多个源中的哪个发送了导致所述缓存行插入到所述缓存存储器中的存储器存取请求;以及
(ii)所述存储器存取请求的权限级别;
所述缓存控制电路被配置来使具有相应于低保留优先级的保留优先级值的缓存行比具有相应于高保留优先级的保留优先级值的缓存行优先逐出;
所述缓存控制电路被配置来从那些具有相应于最低保留优先级的相关联保留优先级值的缓存行中选择用于逐出的缓存行;以及
如果没有具有相应于所述最低保留优先级的相关联保留优先级值的缓存行,则所述缓存控制器被配置来降低所述缓存存储器中所有缓存行的保留优先级,直到至少一个缓存行具有相应于所述最低保留优先级的保留优先级值。
2.如权利要求1所述的装置,其中,所述多个源包括:
被配置来获取用于执行的程序指令的指令获取电路;以及
被配置来存取要在所述程序指令的控制下经受处理操作的数据值的数据存取电路,其中
因由所述指令获取电路发出的存储器存取请求而被插入到所述缓存存储器中的缓存行与指令保留优先级值相关联,并且因由所述数据存取电路发出的存储器存取请求而被插入到所述缓存存储器中的缓存行与不同于所述指令保留优先级值的数据保留优先级值相关联。
3.如权利要求2所述的装置,其中,所述缓存控制电路响应于标志值以设置如下其中一项:
(i)所述指令保留优先级值比所述数据保留优先级值相应于较高保留优先级;
(ii)所述指令保留优先级值比所述数据保留优先级值相应于较低保留优先级。
4.如权利要求3所述的装置,其中,所述标志值是软件可编程标志值。
5.如权利要求2所述的装置,其中,所述指令获取电路和所述数据存取电路是顺序处理器的部分,并且所述指令保留优先级值比所述数据保留优先级值相应于较低保留优先级。
6.如权利要求1所述的装置,其中,所述保留优先级值以及与所述保留优先级值相关联的缓存行的TAG值一起存储在所述缓存存储器中。
7.如权利要求1所述的装置,其中,所述缓存控制电路被配置来从具有相应于最低保留优先级的相关联保留优先级值的缓存行中随机选择用于逐出的缓存行。
8.如权利要求1所述的装置,其中,所述缓存控制电路被配置来检测对已经存在于所述缓存存储器中的缓存行的存取以及改变所述缓存行的保留优先级以提高所述缓存行的保留优先级。
9.如权利要求8所述的装置,其中,所述保留优先级值被改变为以下其中一项:
(i)基于每次存取,逐步向最高保留优先级提高所述缓存行的保留优先级;以及
(ii)直接提高所述缓存行到最高保留优先级。
10.如权利要求1所述的装置,其中,所述多个源包括通用处理器和图形处理单元。
11.如权利要求1所述的装置,其中,所述多个源包括多个通用处理器。
12.如权利要求1所述的装置,其中,所述缓存存储器是缓存存储器层级结构中的二级缓存存储器,所述缓存存储器层级结构包括至少一个一级缓存存储器和所述二级缓存存储器。
13.如权利要求1所述的装置,其中,所述缓存存储器是缓存存储器层级结构中的三级缓存存储器,所述缓存存储器层级结构包括至少一个一级缓存存储器、至少一个二级缓存存储器和所述三级缓存存储器。
14.如权利要求1所述的装置,其中,所述保留优先级值是n位保留优先级值,并且在缓存行被插入时能够由所述缓存控制电路设置的不同保留优先级值的总和为2n-1。
15.如权利要求1所述的装置,其中,因具有内核程序权限级别的存储器存取请求而被插入所述缓存存储器的缓存行与内核保留优先级相关联,并且被插入所述缓存层级的缓存行与用户保留优先级值相关联。
16.如权利要求15所述的装置,其中,如下述之一:
所述内核保留优先级值比所述用户保留优先级值相应于较高保留优先级;以及
所述用户保留优先级值比所述内核保留优先级值相应于较高保留优先级。
17.一种处理数据的方法,所述方法包括如下步骤:
以多个源产生存储器存取请求;
在缓存存储器中存储数据;
缓存控制电路控制缓存行到所述缓存存储器的插入以及缓存行从所述缓存存储器的逐出,所述方法还包括如下步骤:
存储与插入到所述缓存存储器中的每个缓存行相关联的各保留优先级值;
根据所述保留优先级值从所述缓存存储器中选择用于逐出的缓存行;以及
根据以下至少一项设置与插入到所述缓存存储器中的缓存行相关联的保留优先级值:
(i)所述多个源中的哪个发送了导致所述缓存行插入所述缓存存储器的存储器存取请求;以及
(ii)所述存储器存取请求的权限级别;
所述缓存控制电路被配置来使具有相应于低保留优先级的保留优先级值的缓存行比具有相应于高保留优先级的保留优先级值的缓存行优先逐出;
所述缓存控制电路被配置来从那些具有相应于最低保留优先级的相关联保留优先级值的缓存行中选择用于逐出的缓存行;以及
如果没有具有相应于所述最低保留优先级的相关联保留优先级值的缓存行,则所述缓存控制电路被配置来降低所述缓存存储器中所有缓存行的保留优先级,直到至少一个缓存行具有相应于所述最低保留优先级的保留优先级值。
CN201310680919.5A 2012-12-13 2013-12-12 基于保留优先级的缓存替换策略 Active CN103870394B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/713,999 US9372811B2 (en) 2012-12-13 2012-12-13 Retention priority based cache replacement policy
US13/713,999 2012-12-13

Publications (2)

Publication Number Publication Date
CN103870394A CN103870394A (zh) 2014-06-18
CN103870394B true CN103870394B (zh) 2018-12-14

Family

ID=49679961

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310680919.5A Active CN103870394B (zh) 2012-12-13 2013-12-12 基于保留优先级的缓存替换策略

Country Status (4)

Country Link
US (1) US9372811B2 (zh)
JP (1) JP6325243B2 (zh)
CN (1) CN103870394B (zh)
GB (1) GB2508962B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9448816B2 (en) * 2013-04-29 2016-09-20 Vmware, Inc. Virtual desktop infrastructure (VDI) caching using context
US9418019B2 (en) * 2013-12-31 2016-08-16 Samsung Electronics Co., Ltd. Cache replacement policy methods and systems
CN105302741B (zh) * 2014-07-04 2019-02-26 华为技术有限公司 一种高速缓存控制方法及装置
US10817425B2 (en) * 2014-12-26 2020-10-27 Intel Corporation Hardware/software co-optimization to improve performance and energy for inter-VM communication for NFVs and other producer-consumer workloads
US9740635B2 (en) * 2015-03-12 2017-08-22 Intel Corporation Computing method and apparatus associated with context-aware management of a file cache
WO2016169518A1 (zh) * 2015-04-23 2016-10-27 上海芯豪微电子有限公司 一种基于指令和数据推送的处理器系统和方法
GB2540761B (en) * 2015-07-23 2017-12-06 Advanced Risc Mach Ltd Cache usage estimation
US10366013B2 (en) * 2016-01-15 2019-07-30 Futurewei Technologies, Inc. Caching structure for nested preemption
EP3258382B1 (en) 2016-06-14 2021-08-11 Arm Ltd A storage controller
US10789175B2 (en) * 2017-06-01 2020-09-29 Mellanox Technologies Ltd. Caching policy in a multicore system on a chip (SOC)
US10528483B2 (en) * 2017-10-23 2020-01-07 Advanced Micro Devices, Inc. Hybrid lower-level cache inclusion policy for cache hierarchy having at least three caching levels
US11907091B2 (en) * 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10846241B2 (en) * 2018-08-29 2020-11-24 Vmware, Inc. Score-based cache admission and eviction
US10909038B2 (en) * 2018-12-30 2021-02-02 Chengdu Haiguang Integrated Circuit Design Co. Ltd. Cache management method, cache and storage medium
US11099999B2 (en) * 2019-04-19 2021-08-24 Chengdu Haiguang Integrated Circuit Design Co., Ltd. Cache management method, cache controller, processor and storage medium
CN110704439B (zh) * 2019-09-27 2022-07-29 北京智道合创科技有限公司 数据存储方法及装置
US11768777B2 (en) * 2020-01-22 2023-09-26 EMC IP Holding Company LLC Application aware cache management
US11379380B2 (en) 2020-05-07 2022-07-05 Nxp Usa, Inc. Systems and methods for managing cache replacement
CN112527697A (zh) * 2020-05-11 2021-03-19 大唐半导体科技有限公司 Cache RAM与Retention RAM数据交换控制器及实现方法
CN112612728B (zh) * 2020-12-17 2022-11-11 海光信息技术股份有限公司 缓存管理方法及装置、设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192198A (zh) * 2006-12-01 2008-06-04 国际商业机器公司 在多处理器系统中高速缓存数据的方法和多处理器系统
CN101470893A (zh) * 2007-12-26 2009-07-01 中国科学院声学研究所 一种基于位图缓存的矢量图形显示的加速方法
CN101739357A (zh) * 2008-11-21 2010-06-16 辉达公司 多类数据高速缓存策略
US7774522B2 (en) * 2008-11-17 2010-08-10 Applied Micro Circuits Corporation Cache stashing processor control messages

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3964054A (en) 1975-06-23 1976-06-15 International Business Machines Corporation Hierarchy response priority adjustment mechanism
JPH05314120A (ja) * 1992-05-11 1993-11-26 Fuji Xerox Co Ltd キャッシュメモリ
US5956744A (en) 1995-09-08 1999-09-21 Texas Instruments Incorporated Memory configuration cache with multilevel hierarchy least recently used cache entry replacement
JP3707854B2 (ja) 1996-03-01 2005-10-19 株式会社東芝 キャッシュ機能を有するコンピュータ及びキャッシュメモリ制御方法
US5963978A (en) 1996-10-07 1999-10-05 International Business Machines Corporation High level (L2) cache and method for efficiently updating directory entries utilizing an n-position priority queue and priority indicators
GB9701960D0 (en) * 1997-01-30 1997-03-19 Sgs Thomson Microelectronics A cache system
US5943687A (en) * 1997-03-14 1999-08-24 Telefonakiebolaget Lm Ericsson Penalty-based cache storage and replacement techniques
US5974507A (en) * 1997-04-14 1999-10-26 International Business Machines Corporation Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm
US6532520B1 (en) * 1999-09-10 2003-03-11 International Business Machines Corporation Method and apparatus for allocating data and instructions within a shared cache
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
US6349365B1 (en) 1999-10-08 2002-02-19 Advanced Micro Devices, Inc. User-prioritized cache replacement
US6721852B2 (en) * 2001-10-17 2004-04-13 Sun Microsystems, Inc. Computer system employing multiple board sets and coherence schemes
US20050144409A1 (en) * 2002-09-11 2005-06-30 Fujitsu Limited Data processing device and method utilizing latency difference between memory blocks
JP2004110240A (ja) * 2002-09-17 2004-04-08 Mitsubishi Electric Corp キャッシュメモリ装置
US6976128B1 (en) * 2002-09-26 2005-12-13 Unisys Corporation Cache flush system and method
US6973541B1 (en) * 2002-09-26 2005-12-06 Unisys Corporation System and method for initializing memory within a data processing system
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
US7383387B2 (en) * 2002-12-13 2008-06-03 Sap Ag Document transformation tool
US20050188158A1 (en) 2004-02-25 2005-08-25 Schubert Richard P. Cache memory with improved replacement policy
JP4618785B2 (ja) * 2004-12-24 2011-01-26 株式会社日立製作所 データ処理システム及び方法
GB0603552D0 (en) * 2006-02-22 2006-04-05 Advanced Risc Mach Ltd Cache management within a data processing apparatus
US7502890B2 (en) * 2006-07-07 2009-03-10 International Business Machines Corporation Method and apparatus for dynamic priority-based cache replacement
US7899994B2 (en) * 2006-08-14 2011-03-01 Intel Corporation Providing quality of service (QoS) for cache architectures using priority information
WO2008043670A1 (en) * 2006-10-10 2008-04-17 International Business Machines Corporation Managing cache data
US8195886B2 (en) * 2007-03-16 2012-06-05 Arm Limited Data processing apparatus and method for implementing a replacement scheme for entries of a storage unit
US7644328B2 (en) * 2007-03-22 2010-01-05 Intel Corporation Sharing routing of a test signal with an alternative power supply to combinatorial logic for low power design
US20090124241A1 (en) * 2007-11-14 2009-05-14 Qualcomm Incorporated Method and system for user profile match indication in a mobile environment
GB0722707D0 (en) * 2007-11-19 2007-12-27 St Microelectronics Res & Dev Cache memory
JP4939387B2 (ja) * 2007-12-06 2012-05-23 ルネサスエレクトロニクス株式会社 データ処理装置及びアドレス空間保護方法
US7802057B2 (en) 2007-12-27 2010-09-21 Intel Corporation Priority aware selective cache allocation
US8001331B2 (en) * 2008-04-17 2011-08-16 Arm Limited Efficiency of cache memory operations
US8966181B2 (en) * 2008-12-11 2015-02-24 Seagate Technology Llc Memory hierarchy with non-volatile filter and victim caches
US8250040B2 (en) 2009-06-15 2012-08-21 Microsoft Corporation Storage or removal actions based on priority
US8918601B2 (en) * 2009-12-14 2014-12-23 International Business Machines Corporation Deferred page clearing in a multiprocessor computer system
US8510511B2 (en) * 2009-12-14 2013-08-13 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
US8930635B2 (en) * 2009-12-14 2015-01-06 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US8473725B2 (en) * 2009-12-21 2013-06-25 Ceva D.S.P., Ltd. System and method for processing interrupts in a computing system
US8595451B2 (en) 2010-11-04 2013-11-26 Lsi Corporation Managing a storage cache utilizing externally assigned cache priority tags
US8510510B1 (en) * 2011-01-31 2013-08-13 Symantec Corporation File cache optimization using element prioritization
US9104327B2 (en) * 2011-05-17 2015-08-11 Sandisk Technologies Inc. Fast translation indicator to reduce secondary address table checks in a memory device
US20120311269A1 (en) * 2011-06-03 2012-12-06 Loh Gabriel H Non-uniform memory-aware cache management
US20130024647A1 (en) * 2011-07-20 2013-01-24 Gove Darryl J Cache backed vector registers
US9262327B2 (en) * 2012-06-29 2016-02-16 Intel Corporation Signature based hit-predicting cache

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192198A (zh) * 2006-12-01 2008-06-04 国际商业机器公司 在多处理器系统中高速缓存数据的方法和多处理器系统
CN101470893A (zh) * 2007-12-26 2009-07-01 中国科学院声学研究所 一种基于位图缓存的矢量图形显示的加速方法
US7774522B2 (en) * 2008-11-17 2010-08-10 Applied Micro Circuits Corporation Cache stashing processor control messages
CN101739357A (zh) * 2008-11-21 2010-06-16 辉达公司 多类数据高速缓存策略

Also Published As

Publication number Publication date
JP2014123357A (ja) 2014-07-03
CN103870394A (zh) 2014-06-18
JP6325243B2 (ja) 2018-05-16
US9372811B2 (en) 2016-06-21
GB201318092D0 (en) 2013-11-27
US20140173214A1 (en) 2014-06-19
GB2508962B (en) 2020-12-02
GB2508962A (en) 2014-06-18

Similar Documents

Publication Publication Date Title
CN103870394B (zh) 基于保留优先级的缓存替换策略
CN102640124B (zh) 用于数据流的储存感知预取的计算系统、方法以及预取单元
CN105095116B (zh) 缓存替换的方法、缓存控制器和处理器
US7856532B2 (en) Cache logic, data processing apparatus including cache logic, and a method of operating cache logic
CN110209601A (zh) 存储器接口
GB2509755A (en) Partitioning a shared cache using masks associated with threads to avoiding thrashing
US11907753B2 (en) Controller with caching and non-caching modes
US9355035B2 (en) Dynamic write priority based on virtual write queue high water mark for set associative cache using cache cleaner when modified sets exceed threshold
CN106201980A (zh) 处理单元及其处理方法
US7574562B2 (en) Latency-aware thread scheduling in non-uniform cache architecture systems
US11392498B2 (en) Aliased mode for cache controller
US20170357596A1 (en) Dynamically adjustable inclusion bias for inclusive caches
CN105446889B (zh) 一种内存管理方法、装置以及内存控制器
CN107506315B (zh) 存储控制器
US20200097407A1 (en) Producer/consumer data transfer within a data processing system having a cache
US20150032970A1 (en) Performance of accesses from multiple processors to a same memory location
US11934307B2 (en) Apparatus and method for providing coherence data for use when implementing a cache coherency protocol
US20070101064A1 (en) Cache controller and method
CN109643280A (zh) 高速缓存保留数据管理
Wang et al. LAB-LRU: A Life-Aware Buffer Management Algorithm for NAND Flash Memory

Legal Events

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