CN108475197B - 用于嵌套抢占的高速缓存结构 - Google Patents
用于嵌套抢占的高速缓存结构 Download PDFInfo
- Publication number
- CN108475197B CN108475197B CN201780006956.4A CN201780006956A CN108475197B CN 108475197 B CN108475197 B CN 108475197B CN 201780006956 A CN201780006956 A CN 201780006956A CN 108475197 B CN108475197 B CN 108475197B
- Authority
- CN
- China
- Prior art keywords
- cache
- task
- entry
- cache entry
- cache memory
- 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
Images
Classifications
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/12—Replacement control
-
- 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
- G06F2212/1044—Space efficiency improvement
-
- 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/60—Details of cache memory
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
公开了一种管理高速缓存存储器的操作的系统和方法。所述系统和方法为每个嵌套任务分配级别,以及为在嵌套级别内的每个任务分配实例。使用所述分配的任务级别和实例,所述高速缓存管理模块能够在需要空间时,确定应该从高速缓存驱逐的高速缓存条目,以及在抢占任务完成时,确定应该恢复的驱逐的高速缓存条目。
Description
相关申请的交叉引用
本申请要求享有2016年1月15日提交的、申请序列号为14/997,026、名称为“用于嵌套抢占的缓存结构”的美国非临时专利申请的优先权,通过引用将其全部内容并入本文。
背景技术
计算系统可以使用高速缓存存储器来提高计算性能。例如,对于需要频繁存取的数据,计算系统可以将该数据存储在更小、更快的高速缓存存储器中,而不是将该数据存储在较慢、较大的存储器(例如主存储器单元)中。相应地,计算系统能够更快地存取数据,这可以减少存储器存取的等待时间。
实时和一般的时间共享操作系统通常在调度任务和中断时使用嵌套抢占。例如,当更高优先级的进程准备运行时,固定优先级系统将抢占当前正在运行的进程。发生这种情况时,关于当前正在运行的进程的信息将被保存,直到优先级较高的进程结束运行才会使用该信息。例如,考虑任务X被任务Y抢占,然后任务Y被任务Z抢占的情况。任务Z将首先完成运行,任务Y将恢复。一旦任务Y完成运行,任务X将恢复。抢占的好处是,优先级较高的任务Z可以更快地运行,并在其截止时间之前处理其更紧急的工作。
然而,抢占具有成本。第一个成本是保存任务X的信息并切换到任务Y所需的开销。然后是用以保存任务Y的信息并切换到任务Z再次发生成本。操作系统和硬件已经设计为最小化该成本。第二个成本被称为高速缓存相关的抢占延迟(Cache Related PreemptionDelay,CRPD)。当更高优先级的任务运行时,如果高速缓存存储器内存空间不足,它们将从当前任务中逐出高速缓存条目。这将导致当前任务在继续执行时未命中高速缓存,并且必须等待来自更远的主存储器的数据。
这种成本因典型的最近最少使用(Least Recently Used,LRU)缓存策略而变差。在LRU下,与较早任务关联的数据在与较新近任务关联的数据之前被逐出。因此,在上面的示例中,当任务X带回其需要的数据时,抢占任务X的剩余缓存条目将首先被驱逐以腾出空间存放新数据,即使已完成执行,高优先级任务Y和任务Z的条目也将被保留。研究表明,CRPD的影响可能高达44%。
发明内容
一方面,本技术涉及一种计算设备,其包括:高速缓存存储器,其包括多个高速缓存条目,每个高速缓存条目被分配有所述高速缓存条目的嵌套级别,以及所述嵌套级别的实例标识符ID;处理器,接收嵌套级别为n的新任务并且所述新任务具有实例ID x,级别为n的新任务抢占正在进行的嵌套级别为m的任务,其中m小于n。
在一种实现方式中,本技术还包括高速缓存管理模块,其包括高速缓存替换模块,其中,所述高速缓存替换模块将选择的高速缓存条目替换为用于所述新任务的新的高速缓存条目。
在一种实现方式中,所述选择的高速缓存条目是以下中的一个:(a)所述高速缓存存储器中的具有有效数据的高速缓存条目;(b)所述高速缓存存储器中的所述嵌套级别高于n的高速缓存条目;(c)所述高速缓存存储器中的所述嵌套级别n、并且具有不同于x的所述实例ID的高速缓存条目;(d)所述高速缓存存储器中的所述嵌套级别低于n的高速缓存条目;或者(e)所述高速缓存存储器中的所述嵌套级别n、并且具有所述实例ID x的高速缓存条目。
在一种实现方式中,所述高速缓存替换模块先于(b)-(e)选择(a)作为所述选择的高速缓存条目待被替换;所述高速缓存替换模块先于(c)-(e)选择(b)作为所述选择的高速缓存条目待被替换;所述高速缓存替换模块先于(d)和(e)选择(c)作为所述选择的高速缓存条目待被替换;以及所述高速缓存替换模块先于(e)选择(d)作为所述选择的高速缓存条目待被替换。
在一种实现方式中,所述高速缓存管理模块向所述新的高速缓存条目分配所述嵌套级别n和所述实例ID x。
在一种实现方式中,所述计算设备还包括FIFO第二级别高速缓存存储器,并且其中,所述高速缓存管理模块还包括高速缓存恢复模块;所述高速缓存恢复模块将所述选择的高速缓存条目存储在所述FIFO第二级别高速缓存存储器中。
在一种实现方式中,在所述新任务完成时,所述高速缓存恢复模块将所述选择的高速缓存条目从所述FIFO第二级别高速缓存存储器恢复到所述高速缓存存储器中。
另一方面,本技术涉及一种操作高速缓存存储器的方法,所述高速缓存存储器包括多个高速缓存条目,每个高速缓存条目被分配有所述高速缓存条目的嵌套级别,以及所述嵌套级别的实例标识符ID,所述方法包括:当执行嵌套级别m的第一任务时,接收分配有嵌套级别n和实例ID x的抢占任务,其中,n>m;暂停所述嵌套级别m的所述第一任务;以及执行分配有所述嵌套级别n的所述抢占任务。
在一种实现方式中,所述方法还包括将选择的高速缓存条目替换为用于所述抢占任务的新的高速缓存条目,其中所述选择的高速缓存条目是以下中的一个:(i)所述高速缓存存储器中的所述嵌套级别高于n的高速缓存条目;(ii)所述高速缓存存储器中的所述嵌套级别n、并且具有不同于x的所述实例ID的高速缓存条目;以及(iii)所述高速缓存存储器中的所述嵌套级别低于n的高速缓存条目。
在一种实现方式中,先于(ii)和(iii)中的所述高速缓存条目之前替换(i)中的所述高速缓存条目。
在一种实现方式中,先于(iii)中的所述高速缓存条目之前替换(ii)中的所述高速缓存条目。
在一种实现方式中,所述方法还包括将选择的高速缓存条目替换为用于所述抢占任务的所述新的高速缓存条目的步骤,其中,所述选择的高速缓存条目是:(iv)所述高速缓存存储器中的具有有效数据的高速缓存条目或者(v)所述高速缓存存储器中的所述嵌套级别n、并且具有所述实例ID x的高速缓存条目。
又一方面,本技术涉及一种实现操作高速缓存存储器的高速缓存恢复模块的方法,所述高速缓存存储器包括多个高速缓存条目,每个高速缓存条目被分配有所述高速缓存条目的嵌套级别,所述方法包括:接收嵌套任务级别的任务已经完成的指示;基于在嵌套任务级别的所述任务已经完成的所述指示,从高速缓存缓冲器提取选择的高速缓存条目,从所述高速缓存缓冲器提取的所述选择的高速缓存条目是从所述高速缓存存储器驱逐的高速缓存条目;以及将所述选择的高速缓存条目恢复到所述高速缓存存储器中。
在一种实现方式中,所述选择的高速缓存条目是所述高速缓存缓冲器中存储的最新的高速缓存条目。
在一种实现方式中,所述选择的高速缓存条目是从所述高速缓存存储器驱逐的用于未完成的任务的高速缓存条目。
在又一方面,本技术涉及一种存储有用于高速缓存存储器管理的计算机指令的非暂时性计算机可读介质,当由一个或多个处理器执行所述非暂时性计算机可读介质时,所述非暂时性计算机可读介质使得所述一个或者多个处理器执行以下步骤:配置包括多个高速缓存条目的高速缓存存储器,其中,每个高速缓存条目被分配有嵌套级别,并且每个高速缓存条目被分配有指示所述嵌套级别的相应的任务的实例标识符ID;当执行嵌套级别m的第一任务时,接收嵌套级别n以及实例ID为x的抢占任务,其中,n>m;暂停所述嵌套级别m的所述第一任务;执行所述嵌套级别n的所述抢占任务。
在一种实现方式中,所述非暂时性计算机可读介质还存储用于高速缓存存储器管理的计算机指令,当由一个或多个处理器执行所述非暂时性计算机可读介质时,所述非暂时性计算机可读介质使得所述一个或者多个处理器将所述高速缓存存储器中的选择的高速缓存条目替换为用于所述嵌套级别n和所述实例ID x的所述抢占任务的新的高速缓存条目。
在一种实现方式中,所述非暂时性计算机可读介质还存储用于高速缓存存储器管理的计算机指令,当由一个或多个处理器执行所述非暂时性计算机可读介质时,所述非暂时性计算机可读介质使得所述一个或者多个处理器在任务完成时,将驱逐的高速缓存条目恢复回所述高速缓存存储器中,所述驱逐的高速缓存条目是先前从所述高速缓存存储器驱逐的高速缓存条目。
在一种实现方式中,所述驱逐的高速缓存条目被添加到FIFO缓冲器。
在一种实现方式中,所述驱逐的高速缓存条目是被用于所述抢占任务的所述新的高速缓存条目替换的所述选择的高速缓存条目。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并非旨在确定所要求保护的主题的关键特征或基本特征,也不旨在用作确定所要求保护的主题的范围的辅助手段。所要求保护的主题不限于解决背景中提到的任何或全部缺点的实施方式。
附图说明
图1是根据本技术的实施例的计算设备的示意图。
图2是根据本技术的实施例的高速缓存存储器的示意图。
图3是示出根据本技术的实施例的替换模块的操作的第一部分的流程图。
图4是示出根据本技术的实施例的替换模块的操作的第二部分的流程图。
图5-8图示了根据本技术的实施例的高速缓存存储器中高速缓存条目的替换。
图9是根据本技术的其他实施例的计算设备的示意图。
图10是用于操作图9的实施例的图3和4的补充流程图。
图11是示出根据本技术的实施例的恢复模块的操作的流程图。
图12用于实现电池管理方法和本技术的其他方面的示例性计算设备的方框图。
具体实施方式
粗略描述的本技术涉及实现用于管理高速缓存存储器的操作的高速缓存管理模块的系统和方法。高速缓存管理模块为每个嵌套任务分配一个级别,并且为嵌套级别内的每个任务分配一个实例。通过使用分配的任务级别和实例,高速缓存管理模块能够实现两个子模块,用于智能处理高速缓存行替换和恢复。当需要空间时,在本文被称为替换模块的第一子模块以驱逐最先完成的任务的方式替换高速缓存条目,并且其最不可能驱逐用于即将到来的函数调用的高速缓存条目。这样降低了高速缓存未命中以及不得不从主存储器中检索数据的可能性。
当一个或多个高速缓存行被替换时,在本文被称为恢复模块的第二子模块检查替换的高速缓存条目是否用于尚未完成的抢占任务。如果是,则恢复模块将用于抢占任务的一个或多个高速缓存条目或高速缓存条目地址存储在诸如先进先出FIFO数据缓冲器的本地存储器位置中。任务完成后,最有可能再次使用的、处于较低抢占级别的高速缓存条目被从数据缓冲区预取并返回到高速缓存存储器。这进一步降低了缓存未命中以及访问主存储器的需要的可能性。
本领域技术人员将认识到的,本公开的各方面可以在本文中以包括任何新的有用的工艺、机器、制造,或其物质组成,或其任何新的并且有用的改进的多个可取得专利的类别中的任何一个进行说明和描述。因此,本公开的各方面可完全地以硬件、完全地以软件(包括固件、驻留软件、微代码等)或软件和硬件组合的实现方式来实现,这些实现方式在本文中通常可被称为“模块”。此外,本公开的各方面可以采取包含一个或多个计算机可读介质中的计算机程序产品的形式,其中,一个或多个计算机可读介质在其上包含有计算机可读程序代码。
图1是用于实现本技术的各方面的计算机设备100的示意图。计算设备可以是各种计算设备中的任何一种,包括例如台式电脑、笔记本电脑、平板电脑、智能电话、服务器、分布式计算设备、智能家电等。实施例不限于任何特定的计算设备,并且可以在与图1所示的具体示例不同的环境中实践。
计算设备100包括经由高速缓存控制器106与高速缓存存储器104通信的处理单元102(在本文中也称为处理器)。处理单元102还经由存储器总线和外部通信接口110与主存储器108通信。处理单元102执行任务,包括例如在计算设备100的操作中需要的任何处理、逻辑操作、计算、函数调用等。在其操作中,处理单元首先从高速缓存存储器104中检索用于执行包括例如编程步骤的任务的数据并且提供结果作为输出。如果在高速缓存存储器104中未发现(高速缓存未命中),则处理器从主存储器108中检索数据。任务可以来自计算设备100的各种组件中的任何组件(通常在112处示出)。众所周知,每个任务可以具有由调度器114分配的相关联的优先级或最后期限。
在实施例中,高速缓存存储器104可以是包括例如静态RAM(static RAM,SRAM)的各种高速存储器组件中的任何组件。主存储器108可以是包括例如动态RAM(dynamic RAM,DRAM)的较慢存储器组件。在下面描述的实施例中,处理器可以从单个高速缓存存储器104中查找数据,并且如果未发现,则在主存储器108中查找数据。然而,众所周知,高速缓存存储器104可以包括分级布置,其包括多级高速缓存(例如,L1,L2,L3)。还可以理解,高速缓存存储器104可以包括单独的数据和指令高速缓存。
当处理单元102需要读取或写入主存储器108中的位置时,其首先检查高速缓存存储器104中的对应条目。如果处理单元发现存储位置位于高速缓存存储器中,则发生高速缓存命中。然而,如果处理单元102未在高速缓存存储器104中发现存储位置,则发生高速缓存未命中。在高速缓存命中的情况下,处理单元102在高速缓存存储器104中配发新条目,并且从主存储器108复制数据。该请求由高速缓存存储器104的内容实现。
为了在高速缓存未命中为新条目腾出空间,高速缓存存储器可能不得不驱逐现有条目中的一个。例如,如上所述的,处理器102可以使用嵌套的抢占方案进行操作,其中,如通过调度器114所确定的那样,较低优先级任务被较高优先级任务抢占。为了为较高优先级任务的数据腾出空间,较低优先级任务的数据可能会被替换或驱逐。此外,在较低优先级的将来的任务的数据已被替换的情况下,可能需要在将来进行恢复。计算设备100还可以实现高速缓存管理模块116,用于确定何时替换高速缓存条目以及何时恢复高速缓存条目。高速缓存管理模块116可以包括管理高速缓存存储器104的操作所需的任何数据、指令、算法等。
根据本技术的各方面,高速缓存管理模块116可以包括替换模块,该替换模块定义当高速缓存存储器104需要使空间可用于新数据时,高速缓存存储器104将如何移除或驱逐高速缓存条目。根据本技术的进一步的方面,高速缓存管理模块116可以包括恢复路由,该恢复路由定义高速缓存存储器如何为较低优先级的任务恢复被驱逐的数据或者尚未由处理单元102执行的调度的任务。
替换模块和恢复模块利用为每个任务分配、并存储在与每个任务相关联的高速缓存存储器104中的嵌套级别指示符和实例指示符。图2是高速缓存存储器104如何可以存储包括任务和数据的高速缓存条目118的示意图。如已知的,每个高速缓存条目118可以包括来自主存储器的数据块,该数据块作为高速缓存行120存储。如进一步已知的,每个高速缓存条目还可以包括标签122和状态位124,其中,标签122包括主存储单元中的数据的地址。状态位124可用于指示高速缓存块是否已加载有效数据。高速缓存条目118可以进一步包括脏位(未示出),该脏位指示相关高速缓存行120是否由于其从主存储器被读取(脏)而被改变,这意味着处理单元102已经向该行写入数据并且新值并未自始至终传播到主存储器108。可以理解,高速缓存104可以包括比所示的更多的高速缓存条目118。
如上所述的,处理单元102可以根据嵌套的抢占方案进行操作,其中,较低优先级任务被较高优先级任务抢占,并且在级别为n的任务继续之前,完成级别>n的所有较高优先级任务。如果高速缓存存储器中需要空间用于高优先级任务的数据,则可以移除或驱逐较低优先级任务的高速缓存条目。根据本技术的各方面,每个高速缓存条目118可以进一步包括嵌套级别124和实例126,以便跟踪可能被移除的高速缓存条目。在实施例中,嵌套级别124可以被表示为整数,并且实例可以被表示为字母。然而,可以理解的是,嵌套级别可以由其他顺序指示符来表示,和/或实例可以在其他实施例中由其他顺序指示符来表示。
当接收到第一任务和随后的抢占任务时,处理单元102为每个这样的任务分配下一个连续增加的嵌套级别(级别1、2、3等)。当级别为m的任务T1被新任务T2抢占时,任务T2在嵌套级别n下执行,其中,n=m+1。如果嵌套级别n是新级别(即,先前没有任务在嵌套级别n下执行),则处理单元将第一实例(例如,A)分配给新级别为n的任务T2。另一方面,如果一个或多个任务先前已经在嵌套级别n下执行并完成,那么向任务T2分配下一个连续增加的实例(实例B、C、D等),以便将任务T2与先前在嵌套级别n下执行的一个或多个任务区分开。该方案将参考图2和5-7的示例进一步说明。
在图2所示的示例中,处理单元首先执行任务T1。该任务被分配了嵌套级别/实例1A。任务T1被分配了嵌套级别/实例2A的较高优先级的任务T2抢占。任务T2完成,并且通过处理器执行返回到第一嵌套级别1。然而,在完成任务T1之前,另一个较高优先级的任务T3进入。该任务在嵌套级别2下执行。为了将也在嵌套级别2下执行的任务T3与任务T2区分开,任务T3的实例增加,使得任务T3的嵌套级别/实例为2B。
在图2的示例中,任务T3被任务T4中断。由于这是一个新的嵌套级别,因此任务T4被分配了嵌套级别/实例3A。如图所示,任务T4具有占用两条高速缓存行的数据。在任务T4完成后,嵌套任务T3继续,但其被任务T5抢占。同样,由于任务T5在嵌套级别3下执行,并且为了区分任务T5和任务T4,任务T5被分配嵌套级别/实例3B。
在任务T5完成时,嵌套任务T3继续。嵌套任务T3完成时,任务T1继续。在执行任务T1期间,新任务T6进入嵌套级别2,占用两条高速缓存行。为了区分任务T6与任务T2和T3,任务T6被分配嵌套级别/实例2C。任务T6完成时,任务T1继续,但其又被任务T7抢占。为了在第二嵌套级别下将任务T7与任务T2、T3和T6区分开,任务T7被分配嵌套级别/实例2D。
下表1总结了每个任务的任务处理流程和嵌套级别/实例分配。
1A:开始任务T1
2A:任务T2抢占任务T1
1A:任务T2完成并且任务T1继续
2B:任务T3抢占任务T1
3A:任务T4抢占任务T3
2B:任务T4完成并且任务T3继续
3B:任务T5抢占任务T3
2B:任务T5完成并且任务T3继续
1A:任务T3完成并且任务T1继续
2C:任务T6抢占任务T1
1A:任务T6完成并且任务T1继续
2D:任务T7抢占任务T1
表1
以上对高速缓存存储器104中的高速缓存条目的描述仅作为示例,并且将在其他实施例中变化。可以由处理单元102执行顺序嵌套级别和实例的分配,并且最后分配的嵌套级别和实例可以存储在高速缓存存储器104或其他存储器存储位置(诸如另一级高速缓存存储器)中。
在图2的上述描述中,新任务的数据被添加到高速缓存存储器104,而不必替换现有的高速缓存条目。然而,在某些时候,新任务的高速缓存条目将替换现有的高速缓存条目。存储的嵌套级别和实例启用了新型替换模块,现在将参考图3的流程图对其进行描述。
图3描述了用于新任务的高速缓存条目118如何通过处理单元102在嵌套级别n(n≥1级)下操作来添加到缓存存储器104。在步骤200中,接收高速缓存请求。例如,高速缓存存储器104可以接收处理单元102执行级别为n的任务的高速缓存请求。在步骤204,确定在高速缓存存储器104中是否包括在高速缓存请求中标识的数据。如果数据在高速缓存存储器中,则存在高速缓存命中,并且该方法继续到步骤206,其中,高速缓存存储器104处理高速缓存请求(例如,读取或写入由高速缓存请求指定的数据)。
如果数据不在高速缓存存储器中,则存在高速缓存未命中,并且如上所述,处理器102然后可以在步骤208中将该序列中的下一个嵌套级别和实例分配给新任务。例如,当执行级别为m的任务时,处理器可以接收新的抢占任务,处理器向其分配新的、下一个增加的更高级别n,其中n=m+1。如果级别n是新级别(先前未在该级别下执行任务),则处理器将第一实例i分配给级别为n的任务。如果一个或多个任务已经在级别n下执行并完成,那么处理器在级别n处的i之后分配下一个依次更高的实例。任务在运行时会多次请求高速缓存条目(或有高速缓存未命中)。任务启动时将发生下一级别/实例的分配。在给定级别/实例下执行的任务的高速缓存条目将被分配相同级别的实例。在实施例中,在某些时候,在高速缓存104的使用中,级别和/或实例可以被再循环以再次在第一级别和/或实例下开始。
然后该方法可以继续到步骤210,其中,确定是否存在任何可用的高速缓存存储器(例如,在其内部没有数据的高速缓存存储器)。如果存在可用高速缓存存储器,则该方法继续到步骤212,其中,高速缓存存储器向主存储器108发出高速缓存未命中请求。在包括高速缓存级别层次的实施例中,在步骤212中,高速缓存存储器可以向下一个更高级别的高速缓存存储器发出高速缓存未命中请求。在步骤216中,在高速缓存存储器104中创建新的高速缓存条目118。
另一方面,如果在步骤208不存在可用的高速缓存存储器,则高速缓存控制器需要根据替换模块替换现有的高速缓存条目118,现在将参考图4进行描述。在步骤220中,高速缓存存储器首先确定高速缓存条目118中的任何一个是否具有“无效”状态。如果是,则在步骤224中首先进行替换。如果在步骤220中不存在无效高速缓存条目,则高速缓存存储器在大于n的级别下查找现有高速缓存行。根据定义,在嵌套抢占方案中,级别高于n的高速缓存条目可能已经完成。如果发现高于n的现有高速缓存条目,则可以在步骤228中将其替换。如果存在高于n的多个条目,则可以根据预定义规则选择一个条目进行替换。例如,大于n的最高级别或最低级别的条目可以被替换,或者如果存在更高级别的多个实例,则最高或最低的实例可以被替换。
如果在步骤226中不存在比级别n更高级别的条目,则高速缓存存储器在步骤230中查找级别为n的现有高速缓存行,但具有与新任务不同的实例指示符。根据定义,除非具有较早实例的任务已完成,否则不会创建给定级别的新实例。如果在级别n中发现现有高速缓存条目但具有不同实例,则可以在步骤234中将其替换。如果存在多个级别为n的其他实例是现有的,那么根据预定义的规则可以选择与一个实例相关联的高速缓存行用于替换。
如果在步骤230中不存在具有不同实例的级别为n的其他高速缓存行,则在步骤238中,高速缓存存储器查找级别低于n的现有高速缓存行。如果发现低于n的现有高速缓存条目,则高速缓存存储器将高速缓存条目置于最低级别,并且在步骤240中替换该高速缓存条目。与级别低于n的高速缓存行相关联的任务尚未完成。然而,最低级别的高速缓存行被选择是因为此任务将相对于级别低于n的其他高速缓存行最后执行。可以理解,在其他实施例中,在步骤240中低于n但高于最低级别的缓存行可以首先被选择以用于替换。
如果该方法在不满足步骤220、226、230以及238的条件的情况下使其通过流程,唯一剩余的可能性是高速缓存条目具有与新任务相同的级别n和相同的实例。因此,如果流程继续进行经过步骤238,则高速缓存存储器在步骤244中替换为相同级别n和相同实例相同的高速缓存条目。一旦图4的方法在步骤224、228、234、240或244的其中一个中识别要替换的高速缓存条目,则该方法返回到图3的步骤212,其中,高速缓存存储器向主存储器108发出高速缓存未命中请求。在步骤216中,识别的高速缓存条目被驱逐,并且新的高速缓存条目118被创建在高速缓存存储器104中的替换的位置处。
图5-8图示了如在图3-4中所述的替换模块的示例。图5图示了类似于图2中示出的高速缓存存储器104,其中唯一的改变是上述任务T7已经完成,使得处理器在级别1处恢复任务1A。在图5的示例中,进一步假设当新的抢占任务T8进入时,处理器在嵌套级别n=1下执行任务T1。在步骤208中,处理单元102将嵌套任务级别增加1,并分配任务T8嵌套级别n=2。因为任务T2、T3、T6以及T7已经在级别2下执行,所以任务T8在级别2处被分配下一个增加的实例(即实例E)。
在图5的示例中,假设所有状态位都是有效的,使得该方法跳过步骤220的状态位检查。在步骤226处,替换模块检查高速缓存存储器用于级别大于2的高速缓存行。在图2的示例中,高速缓存行4、5和6各自存储用于嵌套级别3的数据。由于如果处理器正在执行级别2任务,那么这些任务已经被执行,所以在步骤228中他们中的一个被替换。在图5的示例中,高速缓存行4被用于任务T8的高速缓存行10所替代,但是应该理解,在其他实施例中,高速缓存行5或高速缓存行6可被替换。
图6图示了类似于图5示出的缓存存储器104,但是当处理器在嵌套级别/实例2E下执行任务T8时,新的抢占任务T9进入。在步骤208中,处理单元102为任务T9分配嵌套级别3。因为任务T4和T5已经在嵌套级别3下执行,所以任务T9被分配级别3的下一个增加的实例(即实例C)。
在步骤226处,替换模块检查高速缓存存储器中的级别大于3的高速缓存行。没有发现。替换模块接下来在步骤230中检查级别等于3但具有与分配给任务T9的实例不同的实例的高速缓存行(如上所述,任务T9被分配实例C)。在图5的示例中,高速缓存行5和6各自存储嵌套级别为3、具有不同于C的实例的数据。由于如果处理器正在执行级别3的实例C,那么这些任务已经被执行,他们的其中一个在步骤234中被替换。在图6的示例中,高速缓存行6被用于任务T9的高速缓存行11替换,但是应该理解,在其他实施例中,高速缓存行5可以被替换。
图7示出了类似于图6所示的高速缓存存储器104,但是当处理器正在嵌套级别/实例3C下执行任务T9时,新的抢占任务T10进入。在步骤208中,处理单元102为任务T10分配嵌套级别4。在嵌套级别4下没有执行任务,因此分配的实例是嵌套级别4下的第一实例(即实例A)。
在步骤226处,替换模块检查高速缓存存储器中级别大于4的高速缓存行。没有发现。在步骤230,替换模块检查具有级别等于4、但具有与分配给任务T10的实例不同的实例的高速缓存行。没有发现。在步骤238中,替换模块在低于4的级别下检查高速缓存行。图7中示出的所有高速缓存行都满足该条件。这些任务尚未完成,所以替换模块选择将在最远的将来执行的任务-图6的示例中的任务T1。可以理解,在其他实施例中,可以选择除了T1之外的任务的高速缓存行。如图7所示,将用于任务T1的数据替换为用于任务T10的数据。
图8示出了高速缓存存储器104的示例,其中,所有条目填充有用于例如在嵌套级别2、实例E下执行的任务T8的数据。在较早的替换操作中(未示出),替换模块替换了除实例E之外的所有较低级别(n=1)的缓存条目、所有较高级别(n>2)的缓存条目以及级别2的所有实例。因此,该方法经过步骤226、230以及238,并且执行替换级别为2,实例为E的高速缓存条目的步骤244。图8中的所有高速缓存条目满足该条件,所以可以根据预定义的规则来选择其中一个,例如,最低的高速缓存行。因此,在图8中,高速缓存行1被高速缓存行10替换。根据适用于高速缓存存储器104的这种条件的其他预定义规则,其他高速缓存行可以被选择用于图8的示例中的替换。
上述替换模块以多种方式减少CRPD。完成的任务的高速缓存行可能会先被替换。接下来会替换不太可能再次调用的高速缓存行。接下来,将被最后调用的高速缓存行被替换。通过优先驱逐完成的任务(级别>n)的高速缓存行,而非抢占的任务(级别<n)的任务行,该模型比传统解决方案更有效地减少了CRPD。
替换模块执行步骤220、226、230以及238的顺序提供了替换高速缓存条目的有效方法,其中,最有可能在近期内用于执行调度的任务的数据被替换的可能性最小。这最大限度地减少了执行这些调度的任务时发生高速缓存未命中的可能性。然而,应该理解,在其他实施例中,步骤220、226、230以及238可以以各种其他顺序中的任何顺序执行。还应理解,替换模块还可以执行除了或替代步骤220、226、230和/或238中的一个或多个之外其他步骤,以确定当新缓存条目需要空间时替换哪些高速缓存条目。
在实施例中,本技术可以仅包括如上所述的关于图1-8所描述的替换模块。然而,在其他的实施例中,本技术还可以包括用于替换被驱逐的高速缓存行的恢复模块,现在将参照图9-11进行描述。
图9图示了实现包括高速缓存替换模块和高速缓存恢复模块的高速缓存管理模块116的计算设备100的示意性框图。图9的计算设备100类似于图1的计算设备100,但是图9的计算设备100还包括第二高速缓存存储器140和高速缓存提取单元142。图9的实施例包括如上所述的高速缓存104,但在图9的实施例中,高速缓存存储器104可以是级别1高速缓存,并且高速缓存存储器140可以是级别2高速缓存。在实施例中,高速缓存存储器140还可以是一组先入先出(first in-first out,FIFO)存储缓冲器,并且可以是包括例如SRAM的各种高速存储器组件中的任何一种。
恢复模块利用这样的可能性,即当级别≤n的高速缓存行被驱逐时,它们可能包含受害数据并且当较低级别抢占任务继续时再次使用。因此,当级别小于当前级别n的高速缓存行被驱逐时,当抢占任务恢复以进一步减少CRPD时,缓存行被记忆并预取。在实施例中,这是通过将用于抢占任务的驱逐高速缓存行放置在FIFO高速缓存存储器140中来实现的。当任务继续时,高速缓存提取单元142将最新高速缓存行重新存储到高速缓存存储器104。如上所述,当替换高速缓存条目时,以随后被使用的可能性最小的条目首先被驱逐并且随后被使用的可能性最大的条目最后被驱逐的顺序对它们进行替换。因此,通过首先提取FIFO高速缓存存储器140中的最后一个条目,其最有可能是当抢占任务继续时首先被需要的高速缓存条目。
为了与恢复模块一起操作,可以如图10的流程图中所示对替换模块进行简单的修改。具体来说,继续参照图4的流程图,如果流程进行到步骤240,则这意味着用于抢占任务(级别<n)的高速缓存行被更高级别任务的高速缓存行(级别为n)替换。参考图10,在识别出用于抢占任务的高速缓存行在步骤240中被替换之后,在步骤250中将该高速缓存行写入FIFO高速缓存存储器142。替换模块的剩余步骤如上所述。根据本实施例,作为步骤244的结果驱逐的高速缓存行(驱逐与当前任务具有相同级别和实例的高速缓存条目)也可以存储在FIFO高速缓存存储器142中,并按如下所述进行恢复。
现在将参照图11的流程图更详细地解释恢复模块的操作。在步骤260中,恢复模块确定嵌套抢占任务是否完成并且较低级别任务是否继续。若是,则在步骤262中,恢复模块检查FIFO高速缓存存储器140中是否存在任何高速缓存条目。若是,则在步骤266中,高速缓存提取单元142将该高速缓存条目提取回L1高速缓存存储器104中。任务可能有多个要恢复的条目。当抢占任务继续时,它们都可以被恢复。需要注意的是,被恢复到高速缓存存储器104中的高速缓存行可以使用替换模块的上述步骤替换高速缓存存储器104中的现有高速缓存条目。一旦高速缓存条目从FIFO高速缓存存储器140中恢复,那么就可以在步骤268中将其从FIFO高速缓存存储器140中移除。
因此,继续参考图7的示例,其中,用于级别为1的抢占任务T1的数据被任务T8替换,恢复模块可将用于任务T1的驱逐的高速缓存行写入用于级别1的FIFO高速缓存存储器140中。此后,当任务8完成时,处理器可以继续较低级别任务,该任务可以是级别为1的抢占任务T1或级别低于任务8的一些其他任务。此时,级别1FIFO中用于任务T1的高速缓存行可由高速缓存提取单元142提取并恢复到高速缓存存储器104中。
在处理单元102需要高速缓存行之前,恢复模块尝试将用于抢占任务的高速缓存行恢复到高速缓存存储器104中。如果高速缓存存储器104中的条目在被从FIFO高速缓存存储器140恢复之前就被任务需要,则高速缓存存储器104就像以前一样简单地进行高速缓存未命中,并且对于恢复机制的操作没有任何损失。
在上述恢复模块的实施例中,FIFO高速缓存存储器140可以存储从高速缓存存储器104中被驱逐的实际受害数据。然而,在其他实施例中,FIFO高速缓存存储器140可以将地址存储在存储有驱逐的数据的主存储器108中。在这种实例中,高速缓存提取单元将从要被恢复的高速缓存行的FIFO高速缓存存储器中提取地址,然后从主存储器108中的地址检索数据。
虽然上述本技术的实施例可以在嵌套任务抢占的情况下使用,但是它们可以在函数调用级别用于单个应用。当所有参数按值传递到被调用的例程时,这可能特别有效。在进一步的实施例中,频繁嵌套的中断服务例程可以使用本技术。
图12图示了计算设备300的细节,该计算设备300可以是上面对应于图1和图9描述的计算设备100的示例。计算设备300的组件可以包括但不限于处理器302、系统存储器304、计算机可读存储介质306、各种系统接口以及耦合各种系统组件的系统总线308。系统总线308可以是几种类型的总线结构中的任何一种,包括使用任何各种总线体系结构的存储器总线或存储器控制器、外围总线以及本地总线。图2的处理单元130、系统存储器132、非易失性存储器144以及总线136可以分别是处理器302、系统存储器304、存储介质306以及系统总线308的示例。
计算设备300可以包括计算机可读介质。计算机可读介质可以是可由计算设备300访问的任何可用的有形介质,并且包括易失性和非易失性介质、可移动和不可移动介质。计算机可读介质不包括不包含在有形介质中的暂态、调制或其他传输的数据信号。系统存储器304包括诸如ROM 310和RAM 312的易失性和/或非易失性存储器形式的计算机可读介质。RAM312可以包含用于计算设备300的操作系统313。RAM 312还可以执行一个或多个应用程序314,包括例如策略代理140。计算机可读介质还可以包括存储介质306,诸如硬盘驱动器、光驱以及闪存驱动器。
计算设备300可以包括用于数据和信息的输入和输出的各种接口。输入接口316可以接收来自不同来源的数据,包括触摸屏(在触敏屏幕的情况下)、鼠标324和/或键盘322。视频接口330可被提供用于与触摸屏331和/或显示屏332,诸如显示器160,接口连接。外围接口336可以被提供用于支持外围设备,包括例如打印机338。
计算设备300可以使用到一个或多个远程计算机344、346的逻辑连接经由网络接口340在联网环境中操作。与计算机344的逻辑连接可以是局域连接(local areaconnection,LAN)348,并且到计算机346的逻辑连接可以经由因特网350。其他类型的网络连接也是可能的,包括如上所述的宽带通信。应该理解,计算设备300的以上描述仅作为示例,并且可以包括除了或代替上述那些之外的各种其他组件。
已经出于说明和描述的目的呈现了本公开的描述,但并非旨在穷尽或限制于所公开的形式的公开内容。在不脱离本公开的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。为了最好地解释本公开的原理和实际应用,并且使本领域的其他普通技术人员能够以适合于预期的特定使用的各种修改来理解本公开,本文公开的这些方面被选择和描述。
尽管已经用特定于结构特征和/或方法动作的语言描述了主题,应该明白,所附权利要求中限定的主题不一定限于上面描述的特定特征或动作。相反,上述具体特征和行为是作为实施权利要求的示例形式公开的。
Claims (19)
1.一种计算设备,包括:
高速缓存存储器,包括多个高速缓存条目,每个高速缓存条目被分配有所述高速缓存条目的嵌套级别,以及所述嵌套级别的实例标识符ID;
处理器,用于接收被分配有下一个连续增加的嵌套级别n、并且被分配有所述嵌套级别n的下一个连续增加的实例ID x的新任务,所述级别为n的新任务抢占嵌套级别m的正在进行的任务,其中m小于n,并且管理所述高速缓存存储器的操作以基于所述新任务的所述嵌套级别和所述实例ID以及每个高速缓存条目的所述嵌套级别和所述实例ID选择高速缓存条目,以使完成的任务的高速缓存条目在所述高速缓存存储器中最先被选择,并且具有即将到来的函数调用的高速缓存条目在所述高速缓存存储器中最后被选择,并将选择的高速缓存条目替换为用于所述新任务的新的高速缓存条目。
2.根据权利要求1所述的计算设备,其中,所述选择的高速缓存条目是以下中的一个:
(a)所述高速缓存存储器中的具有无效数据的高速缓存条目;
(b)所述高速缓存存储器中的所述嵌套级别高于n的高速缓存条目;
(c)所述高速缓存存储器中的所述嵌套级别n、并且具有的所述实例ID不同于x的高速缓存条目;
(d)所述高速缓存存储器中的所述嵌套级别低于n的高速缓存条目;或者
(e)所述高速缓存存储器中的所述嵌套级别n、并且具有所述实例ID x的高速缓存条目。
3.根据权利要求2所述的计算设备,其中,所述处理器管理所述高速缓存存储器的操作以先于(b)-(e)选择(a)作为所述选择的高速缓存条目待被替换;所述处理器管理所述高速缓存存储器的操作以先于(c)-(e)选择(b)作为所述选择的高速缓存条目待被替换;所述处理器管理所述高速缓存存储器的操作以先于(d)和(e)选择(c)作为所述选择的高速缓存条目待被替换;以及所述处理器管理所述高速缓存存储器的操作以先于(e)选择(d)作为所述选择的高速缓存条目待被替换。
4.根据权利要求1至3中任一项所述的计算设备,其中,所述处理器管理所述高速缓存存储器的操作以向所述新的高速缓存条目分配所述嵌套级别n和所述实例ID x。
5.根据权利要求1至3中任一项所述的计算设备,还包括先入先出FIFO第二级别高速缓存存储器,并且其中,所述处理器管理所述高速缓存存储器的操作以将所述选择的高速缓存条目存储在所述先入先出FIFO第二级别高速缓存存储器中。
6.根据权利要求5所述的计算设备,其中,在所述新任务完成时,所述处理器管理所述高速缓存存储器的操作以将所述选择的高速缓存条目从所述先入先出FIFO第二级别高速缓存存储器恢复到所述高速缓存存储器中。
7.一种操作高速缓存存储器的方法,所述高速缓存存储器包括多个高速缓存条目,每个高速缓存条目被分配有所述高速缓存条目的嵌套级别,以及所述嵌套级别的实例标识符ID,所述方法包括:
当执行嵌套级别m的第一任务时,接收被分配有下一个连续增加的嵌套级别n、并且被分配有所述嵌套级别n的下一个连续增加的实例ID x的抢占任务,其中,n>m;
暂停所述嵌套级别m的所述第一任务;
执行分配有所述嵌套级别n的所述抢占任务;
基于所述抢占任务的所述嵌套级别和所述实例ID以及每个高速缓存条目的所述嵌套级别和所述实例ID选择高速缓存条目,以使完成的任务的高速缓存条目在所述高速缓存存储器中最先被选择,并且具有即将到来的函数调用的高速缓存条目在所述高速缓存存储器中最后被选择;以及
将选择的高速缓存条目替换为用于所述抢占任务的新的高速缓存条目。
8.根据权利要求7所述的方法,其中所述选择的高速缓存条目是以下中的一个:
(i)所述高速缓存存储器中的所述嵌套级别高于n的高速缓存条目;
(ii)所述高速缓存存储器中的所述嵌套级别n、并且具有的所述实例ID不同于x的高速缓存条目;以及
(iii)所述高速缓存存储器中的所述嵌套级别低于n的高速缓存条目。
9.根据权利要求8所述的方法,其中,先于(ii)和(iii)中的所述高速缓存条目替换(i)中的所述高速缓存条目。
10.根据权利要求8所述的方法,其中,先于(iii)中的所述高速缓存条目之前替换(ii)中的所述高速缓存条目。
11.根据权利要求7所述的方法,其中,所述选择的高速缓存条目是:(iv)所述高速缓存存储器中的具有无效数据的高速缓存条目或者(v)所述高速缓存存储器中的所述嵌套级别n、并且具有所述实例ID x的高速缓存条目。
12.一种实现操作高速缓存存储器的高速缓存恢复模块的方法,所述高速缓存存储器包括多个高速缓存条目,每个高速缓存条目被分配有所述高速缓存条目的嵌套级别和所述嵌套级别的实例标识符ID,所述方法包括:
接收嵌套任务级别的任务已经完成的指示;
基于嵌套任务级别的所述任务已经完成的所述指示,从高速缓存缓冲器提取选择的高速缓存条目,从所述高速缓存缓冲器提取的所述选择的高速缓存条目是从所述高速缓存存储器被驱逐并且被分配有下一个连续增加的嵌套级别n、并且被分配有所述嵌套级别n的下一个连续增加的实例ID x的抢占任务的高速缓存条目所替换,其中完成的任务的高速缓存条目在所述高速缓存存储器中最先被选择,并且具有即将到来的函数调用的高速缓存条目在所述高速缓存存储器中最后被选择;以及
将所述选择的高速缓存条目恢复到所述高速缓存存储器中。
13.根据权利要求12所述的方法,其中,所述选择的高速缓存条目是所述高速缓存缓冲器中存储的最新的高速缓存条目。
14.根据权利要求12或13所述的方法,其中,所述选择的高速缓存条目是从所述高速缓存存储器驱逐的用于未完成的任务的高速缓存条目。
15.一种非暂时性计算机可读介质,存储用于高速缓存存储器管理的计算机指令,当所述计算机指令由一个或多个处理器执行时,使得所述一个或者多个处理器执行以下步骤:
配置包括多个高速缓存条目的高速缓存存储器,其中,每个高速缓存条目被分配有嵌套级别,并且每个高速缓存条目被分配有指示所述嵌套级别的相应的任务的实例标识符ID;
当执行嵌套级别m的第一任务时,接收被分配有下一个连续增加的嵌套级别n、并且被分配有所述嵌套级别n的下一个连续增加的实例ID x的抢占任务,其中,n>m;
暂停所述嵌套级别m的所述第一任务;
执行所述嵌套级别n的所述抢占任务;
基于所述抢占任务的所述嵌套级别和所述实例ID以及每个高速缓存条目的所述嵌套级别和所述实例ID选择高速缓存条目,以使完成的任务的高速缓存条目在所述高速缓存存储器中最先被选择,并且具有即将到来的函数调用的高速缓存条目在所述高速缓存存储器中最后被选择;以及
将选择的高速缓存条目替换为用于所述嵌套级别n和所述实例ID x的所述抢占任务的新的高速缓存条目。
16.根据权利要求15所述的非暂时性计算机可读介质,其中,所述选择的高速缓存条目是以下中的一个:
(a)所述高速缓存存储器中的具有无效数据的高速缓存条目;
(b)所述高速缓存存储器中的所述嵌套级别高于n的高速缓存条目;
(c)所述高速缓存存储器中的所述嵌套级别n、并且具有的所述实例ID不同于x的高速缓存条目;
(d)所述高速缓存存储器中的所述嵌套级别低于n的高速缓存条目;或者
(e)所述高速缓存存储器中的所述嵌套级别n、并且具有所述实例ID x的高速缓存条目。
17.根据权利要求15或16所述的非暂时性计算机可读介质,当所述计算机指令由一个或多个处理器执行时,还使得所述一个或者多个处理器执行以下步骤:
在任务完成时,将所述选择的高速缓存条目恢复回所述高速缓存存储器中,所述选择的高速缓存条目是先前从所述高速缓存存储器驱逐的高速缓存条目。
18.根据权利要求17所述的非暂时性计算机可读介质,其中,所述选择的高速缓存条目被添加到先入先出FIFO缓冲器。
19.根据权利要求17所述的非暂时性计算机可读介质,其中,所述选择的高速缓存条目是被用于所述抢占任务的所述新的高速缓存条目替换的所述选择的高速缓存条目。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/997,026 US10366013B2 (en) | 2016-01-15 | 2016-01-15 | Caching structure for nested preemption |
US14/997,026 | 2016-01-15 | ||
PCT/CN2017/070654 WO2017121300A1 (en) | 2016-01-15 | 2017-01-09 | Caching structure for nested preemption |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108475197A CN108475197A (zh) | 2018-08-31 |
CN108475197B true CN108475197B (zh) | 2021-06-04 |
Family
ID=59312100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780006956.4A Active CN108475197B (zh) | 2016-01-15 | 2017-01-09 | 用于嵌套抢占的高速缓存结构 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10366013B2 (zh) |
CN (1) | CN108475197B (zh) |
WO (1) | WO2017121300A1 (zh) |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434671B2 (en) * | 1997-09-30 | 2002-08-13 | Intel Corporation | Software-controlled cache memory compartmentalization |
WO2004049154A2 (en) * | 2002-11-28 | 2004-06-10 | Koninklijke Philips Electronics N.V. | A loop control circuit for a data processor |
US7436405B2 (en) * | 2004-05-14 | 2008-10-14 | Microsoft Corporation | Terrain rendering using nested regular grids |
US7831777B2 (en) * | 2006-05-26 | 2010-11-09 | De Mevergnies Michael Neve | Apparatus and method for reducing information leakage between processes sharing a cache |
US8813080B2 (en) * | 2007-06-28 | 2014-08-19 | Intel Corporation | System and method to optimize OS scheduling decisions for power savings based on temporal characteristics of the scheduled entity and system workload |
FR2923039A1 (fr) * | 2007-10-24 | 2009-05-01 | Centre Nat Rech Scient | Procede de gestion des preemptions dans un systeme d'exploitation en temps reel |
US8918784B1 (en) * | 2010-12-21 | 2014-12-23 | Amazon Technologies, Inc. | Providing service quality levels through CPU scheduling |
US8719828B2 (en) * | 2011-10-14 | 2014-05-06 | Intel Corporation | Method, apparatus, and system for adaptive thread scheduling in transactional memory systems |
US10019381B2 (en) * | 2012-05-01 | 2018-07-10 | Nvidia Corporation | Cache control to reduce transaction roll back |
US9442737B2 (en) * | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9372811B2 (en) * | 2012-12-13 | 2016-06-21 | Arm Limited | Retention priority based cache replacement policy |
US9773218B2 (en) * | 2013-07-30 | 2017-09-26 | Red Hat, Inc. | Segmented business process engine |
US9146774B2 (en) | 2013-12-12 | 2015-09-29 | International Business Machines Corporation | Coalescing memory transactions |
CN103713948B (zh) * | 2013-12-30 | 2015-09-23 | 北京控制工程研究所 | 一种优先级抢占时间片轮转操作系统中任务定时调度方法 |
US9454370B2 (en) | 2014-03-14 | 2016-09-27 | International Business Machines Corporation | Conditional transaction end instruction |
KR102338849B1 (ko) * | 2014-04-01 | 2021-12-14 | 삼성전자주식회사 | 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템 |
CN103927268B (zh) * | 2014-04-08 | 2017-02-15 | 中国科学院微电子研究所 | 一种存储器的访问方法及装置 |
US9606833B2 (en) * | 2014-04-09 | 2017-03-28 | Samsung Electronics Co., Ltd | Method and apparatus for providing a preemptive task scheduling scheme in a real time operating system |
US9734070B2 (en) * | 2015-10-23 | 2017-08-15 | Qualcomm Incorporated | System and method for a shared cache with adaptive partitioning |
-
2016
- 2016-01-15 US US14/997,026 patent/US10366013B2/en active Active
-
2017
- 2017-01-09 CN CN201780006956.4A patent/CN108475197B/zh active Active
- 2017-01-09 WO PCT/CN2017/070654 patent/WO2017121300A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US10366013B2 (en) | 2019-07-30 |
CN108475197A (zh) | 2018-08-31 |
WO2017121300A1 (en) | 2017-07-20 |
US20170206173A1 (en) | 2017-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10268588B2 (en) | Methods of cache preloading on a partition or a context switch | |
JP6944983B2 (ja) | ハイブリッドメモリ管理 | |
US10467152B2 (en) | Dynamic cache management for in-memory data analytic platforms | |
US20210216368A1 (en) | Hardware accelerated dynamic work creation on a graphics processing unit | |
US10204175B2 (en) | Dynamic memory tuning for in-memory data analytic platforms | |
AU2006262111B2 (en) | Managing memory pages | |
US9304920B2 (en) | System and method for providing cache-aware lightweight producer consumer queues | |
US8799611B2 (en) | Managing allocation of memory pages | |
KR20110048531A (ko) | 가상처리장치의 인터럽트 제어 | |
CN102934076A (zh) | 指令发行控制装置以及方法 | |
US8793444B2 (en) | Managing large page memory pools | |
US11687364B2 (en) | Methods and apparatus for cache-aware task scheduling in a symmetric multi-processing (SMP) environment | |
US20080276045A1 (en) | Apparatus and Method for Dynamic Cache Management | |
CN108475197B (zh) | 用于嵌套抢占的高速缓存结构 | |
EP3724774B1 (en) | Rinsing cache lines from a common memory page to memory | |
US20050044321A1 (en) | Method and system for multiprocess cache management | |
US8356141B2 (en) | Identifying replacement memory pages from three page record lists | |
Banerjee et al. | A New Proposed Hybrid Page Replacement Algorithm (HPRA) in Real Time Systems. | |
JP5077209B2 (ja) | メモリ管理装置、メモリ管理方法およびプログラム | |
Park et al. | Weight-aware cache for application-level proportional i/o sharing | |
JP2004303096A (ja) | ジョブ管理方法、ジョブ管理装置、ジョブ管理プログラム | |
JP2012208698A (ja) | 情報処理装置、送受信バッファ管理方法および送受信バッファ管理プログラム |
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 |