CN104850510B - 用于插入缓存块的方法和系统 - Google Patents
用于插入缓存块的方法和系统 Download PDFInfo
- Publication number
- CN104850510B CN104850510B CN201510301980.3A CN201510301980A CN104850510B CN 104850510 B CN104850510 B CN 104850510B CN 201510301980 A CN201510301980 A CN 201510301980A CN 104850510 B CN104850510 B CN 104850510B
- Authority
- CN
- China
- Prior art keywords
- caching
- cache blocks
- cache
- estimation
- buffer queue
- 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
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/461—Sector or disk block
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/465—Structured object, e.g. database record
Abstract
公开了用于插入缓存块的方法和系统。一种将缓存块插入到缓存队列中的方法包括检测缓存队列的第一缓存未中,识别响应于所述缓存未中接收访问的存储块,计算包括所述存储块的第一存储容器的第一估计的缓存未中成本,基于第一估计的缓存未中成本的数学公式来计算第一存储容器的插入概率,从均匀分布中随机地选择插入概率数,以及,响应于所述插入概率超过所述插入概率数,将对应于所述存储块的新缓存块插入到缓存队列中。
Description
本申请是申请号为201180049886.3、申请日为2011年8月31日、名称为“用于插入缓存块的方法和系统”的发明专利申请的分案申请。
技术领域
本发明涉及用于插入缓存块的方法和系统。
背景技术
随着计算机处理能力的增强,技术用户和应用的需求也增强。对于许多行业,这会导致资源优先级排序的快速的移动。例如,在许多关系数据库应用中,非易失性存储器容量的相对重要性和成本急速地降低。对于系统管理员,关于存储容量的关心已经转移到对性能和可靠性的关心,因为存储技术的事务延迟限制了更快的并且更加强大微处理器的潜在的好处。
在半导体工业内,存在类似的现象。遵循摩尔定律的处理能力和计算速度的理论增益大大地受到诸如存储器访问速度之类的非CPU瓶颈的限制。随着研究人员探索下一范式转移存储技术,诸如改善的缓存方法之类的中间技术帮助弥合该缝隙。通过跨一系列不同的应用利用多种类型的缓存存储设备,对于某些应用,可以降低访问延迟的瓶颈。
对缓存设计和缓存算法的研究导致缓存和缓存管理设备的复杂性的增大。对于从CPU缓存到磁盘缓存和数据库缓存的一切,缓存系统在总体系统性能方面和跨每一层的计算谱变得越来越重要。缓存算法主要处理缓存数据项的插入、删除,以及修改。被缓存的数据的相关性和优先级排序优于缓存的有效的操作。通过将频繁地使用的数据项保持在缓存中,并清除在未来很少会使用的那些,传统的缓存算法旨在提高缓存命中率和性能。
发明内容
一般而言,一方面,本发明涉及将缓存块插入到缓存队列中的方法。该方法包括检测缓存队列的第一缓存未中,识别响应于所述缓存未中接收访问的存储块,计算包括所述存储块的第一存储容器的第一估计的缓存未中成本,基于所述第一估计的缓存未中成本的数学公式来计算所述第一存储容器的插入概率,从均匀分布中随机地选择插入概率数,以及,响应于所述插入概率超过所述插入概率数,将对应于所述存储块的新缓存块插入到所述缓存队列中。
一般而言,一方面,本发明涉及将缓存块插入到缓存队列中的方法。该方法包括计算缓存队列内的缓存块的估计的缓存未中成本,从所述缓存队列清除所述缓存块,以及,将对应于所述缓存块的存储块的条目插入到对应于所述缓存队列的遮蔽列表中。该方法还包括检测引用存储块的缓存队列的缓存未中,响应于所述缓存未中,访问所述遮蔽列表内的条目,基于从所述缓存队列清除的缓存块的多个估计的旧缓存未中成本的数学公式计算估计的缓存未中成本阈值,以及,响应于所述估计的缓存未中成本超过所述估计的缓存未中成本阈值,将对应于所述存储块的新缓存块插入到所述缓存队列中。
一般而言,一方面,本发明涉及存储用于将缓存块插入到缓存队列中的指令的计算机可读存储介质。指令包括检测缓存队列的第一缓存未中,识别响应于所述缓存未中接收访问的存储块,计算包括所述存储块的第一存储容器的第一估计的缓存未中成本,基于所述第一估计的缓存未中成本的数学公式计算第一存储容器的插入概率,以及,从均匀分布中随机地选择插入概率数的功能。进一步地,指令还包括响应于所述插入概率超过所述概率数,将对应于所述存储块的新缓存块插入到缓存队列中的功能。
一般而言,一方面,本发明涉及用于插入缓存块的系统。该系统包括在缓存队列的末尾处包括试用段的缓存队列,与所述试用段相邻的保护段。该系统还包括在处理器上执行并被配置成检测缓存队列的缓存未中、识别响应于所述缓存未中接收访问的存储块,计算包括所述存储块的存储容器的估计的缓存未中成本,基于所述估计的缓存未中成本的数学公式计算所述存储容器的插入概率,从均匀分布中随机地选择概率数,以及,响应于所述插入概率超过所述概率数,将对应于所述存储块的新缓存块插入到缓存队列中的试用段的开始处的缓存管理器。
通过下面的描述和所附权利要求书,本发明的其他方面将变得显而易见。
附图说明
图1A和1B描绘了根据本发明的一个或多个实施例的系统的示意框图。
图2、3、4A、4B、6、7、9,以及10描绘了根据本发明的一个或多个实施例的流程图。
图5A、5B,以及5C描绘了根据本发明的一个或多个实施例的缓存队列的示例。
图8A和8B描绘了根据本发明的一个或多个实施例的系统的示意框图。
图11描绘了根据本发明的一个或多个实施例的计算机系统。
具体实施方式
现在将参考附图详细描述本发明的具体实施例。为确保一致性,各附图中的相同元件通过相同附图标记来表示。
在下面的对本发明的各实施例的详细描述中,阐明了众多具体细节以提供对本发明的各实施例的更加全面的理解。然而,对本领域的技术人员显而易见的是,本发明也可以在没有这些具体细节的情况下实施。在其他情况下,没有对已知的特征进行详细描述,以避免不必要地使描述复杂化。
一般而言,本发明的各实施例提供了用于管理缓存的方法和系统。具体而言,本发明的各实施例向存储容器分配估计的缓存未中成本。估计的缓存未中成本是对存储容器内的存储块的缓存未中的成本的估计。估计的缓存未中成本可以被用来概率地将对应于存储块的新缓存块插入到缓存队列中。
出于说明的目的,缓存操作可以是指任何对缓存的访问和/或修改。缓存操作的示例可以包括但不仅限于:读取操作、写入操作、回写操作、任何类型的缓存命中、任何类型的缓存未中,和/或任意数量的其他缓存操作。在本发明的一个或多个实施例中,缓存操作可以是指导致缓存队列中的一个或多个缓存块被回收利用的任何缓存请求。回收利用可以是指缓存队列内的一个或多个缓存块的任何反向移动。对存储容器的缓存操作和/或访问可以是指对存储容器内的存储块的访问。
出于说明的目的,缓存未中可以是指请求对缓存(和/或相关联的缓存队列,如果适用的话)中不存在的存储块的读取或写入的缓存操作。因此,在本发明的一个或多个实施例中,存储块被直接从相应的存储设备读取,随后被插入到缓存中。在本发明的一个或多个实施例中,缓存未中可以是指写入未中、读取未中,和/或需要对当前不存储在缓存内的存储块的访问的写入和读取请求的某种组合。
出于说明的目的,缓存命中可以是指访问当前存储在缓存(以及相关联的缓存队列,如果适用的话)中的存储块的缓存操作。根据本发明的各实施例,缓存命中可以包括对相应于该缓存的缓存队列的修改。“读取”缓存命中可以是指读取缓存内的存储单元的内容的请求。“写入”缓存命中可以是指将值从缓存中的存储单元写入到存储设备中的相应的存储块的请求。在本发明的一个或多个实施例中,写入操作可以通过将所述值写入到存储单元而不修改存储块(例如,在回写缓存中)来执行。然后,在某个预定时间或在事件触发之后,该值可以被回写到存储块。
出于说明的目的,旧缓存块是自从被插入到缓存队列中以来接收到至少一个缓存命中的缓存块。新缓存块是指自从被插入到缓存队列中以来没有接收到缓存命中的缓存块。
图1A示出了根据本发明的一个实施例的系统(199)。如图1A所示,系统(199)具有多个组件,包括缓存(100)、存储设备(110)、一组存储容器(例如,存储容器1(120)、存储容器Z(130))、一组存储块(例如,存储块A(122)、存储块B(124)、存储块C(126)、存储块D(128)、存储块E(132)、存储块F(134)、存储块G(136)、存储块H(138))、缓存管理器(140)、缓存队列(142),以及管理模块(144)。系统(199)的组件可以位于同一个设备上(例如,服务器、大型机、台式个人计算机(PC)、膝上型计算机、个人数字助理(PDA)、电话、移动电话、自助服务终端、电缆盒,以及任何其他设备)或可以位于通过网络(例如,因特网)利用有线和/或无线段连接的分离的设备上。本领域技术人员将认识到,可以有多于一个的每一个单独的组件在设备上运行,以及在本发明的给定实施例内可以有这些组件的任意组合。
在本发明的一个或多个实施例中,缓存(100)是具有一个或多个存储单元的存储器模块。缓存(100)内的每一个存储单元(未示出)可以将被引用的存储块(例如,存储块A(122)、存储块B(124)、存储块C(126)、存储块D(128)、存储块E(132)、存储块F(134)、存储块G(136)、存储块H(138))的一个或多个值存储在存储设备(110)中。如果存储单元的值不同于被引用的存储块的值,则它称为“脏的”。因此,存储块(例如,存储块A(122)、存储块B(124)、存储块C(126)、存储块D(128)、存储块E(132)、存储块F(134)、存储块G(136)、存储块H(138))称为“被缓存”和/或“被存储”在缓存(100)内,如果它被缓存(100)中的存储单元引用和/或如果引用存储块的缓存块被存储在对应的缓存队列内的话。
缓存(100)可以包括具有用于每一个存储单元的一个或多个缓存地址的缓存地址空间。因此,在本发明的一个或多个实施例中,每一个存储单元都可以具有缓存地址、存储存储块的地址的引用字段,和/或存储存储块的值的值字段。缓存(100)可以是存储器设备和/或一个或多个存储器设备的一部分。在本发明的一个或多个实施例中,缓存可以被实现为存储设备和一个或多个应用和/或设备(下面称为“请求者”)之间的抽象的中间层。以此方式,从存储设备请求的值可以作为中间物被存储在缓存(100)内,并提供给请求者。由请求者对存储块中的值的以后的访问可以在不访问存储设备的情况下执行。
继续图1A,缓存(100)可以构成一个或多个硬盘驱动器上的存储器的一部分和/或任何其他形式的易失性和/或非易失性存储器。存储在易失性存储器中的缓存的一个示例是计算机系统内的随机存取存储器(RAM)的指定的部分或指定的量。指定的RAM存储器可以被用来存储来自硬盘驱动器或其他存储设备的一个或多个值,以便进行更快的访问。在本发明的一个或多个实施例中,缓存(100)是跨通过网络连接的一个或多个物理存储设备散布的分布式缓存。存储器设备可以被动态地修改,以便缓存的大小随着一个或多个存储单元的添加和/或删除而增长或收缩。
在本发明的一个或多个实施例中,缓存(100)比一个或多个对应的存储设备具有更低的访问延迟(例如,读和/写延迟)。缓存中的存储单元的数量也可以小于存储设备中的存储块的数量。因此,在本发明的一个或多个实施例中,缓存中的存储单元根据一个或多个缓存算法被删除、插入,和/或修改。缓存算法可以包括涉及缓存的任何操作的同步和/或异步步骤。同步操作可以与一个或多个周期性的事件和/或指令(例如,与系统时钟关联)重合,而异步操作可以是指按需执行的操作和/或在同步时间窗口之外执行的操作。
缓存(100)的示例可以包括但不仅限于:CPU缓存、磁盘缓存、数据库缓存、受害者缓存、Web缓存、回写缓存、无写入缓存、数据库缓冲池、DRAM缓存、闪存缓存、存储器缓存(例如,作为甲骨文公司的存储器服务器产品线的一部分)、操作系统缓冲池,和/或对应于中间层缓存的对象缓存。是位于加利福尼亚州雷德伍德城的甲骨文公司的注册商标。在一个示例中,缓存(100)驻留在硬盘驱动器上,并被虚拟存储器管理模块用来存储具有对应于一个或多个其他存储设备(例如,RAM)上的物理地址的虚拟地址的页面表。在此示例中,存储单元是存储了来自实际(即,物理)存储器的一个或多个存储块的虚拟地址。
在另一个示例中,缓存(100)是驻留在存储设备内的数据结构。因此,缓存(100)本身可以是被设计用于基于一个或多个缓存算法存储来自物理或虚拟存储器设备的内容的虚拟缓存。在另一个示例中,CPU缓存是安装在主板(即,印刷电路板)上并通过总线操作地连接到中央处理单元(CPU)的存储器设备。在此示例中,缓存是使用存储器芯片上的静态随机存取存储器(SRAM)来实现的。
在另一个示例中,使用公司数据库的企业资源计划(ERP)系统是使用三层体系结构来实现的。公司数据库在单独的主机(即,数据层)上从ERP应用来实现。为了通过减少网络流量来提高数据库性能,轻便的数据库安装在应用层主机上,并被配置成缓存公司数据库的数据。因此,缓存在存储了轻便的数据库的应用层主机上在一组本地硬盘驱动器上实现。在此示例中,存储单元可以对应于数据库表、行或字段。
在本发明的一个或多个实施例中,存储设备(110)是存储器设备。存储设备的示例可以包括但不仅限于:硬盘驱动器、随机存取存储器(RAM)、闪存模块、磁带驱动器、光驱动器,和/或存储设备的任何组合。在本发明的一个或多个实施例中,存储设备(110)包括存储块(例如,存储块A(122)、存储块B(124)、存储块C(126)、存储块D(128)、存储块E(132)、存储块F(134)、存储块G(136)、存储块H(138))。
继续图1A,在本发明的一个或多个实施例中,存储块可以是存储设备内的存储器的任何逻辑和/或物理段。每一个存储块都可以是可寻址的,意思是说,它可以基于某个预定义的寻址方法或机制而被访问。存储块的示例可以包括但不仅限于:比特、存储器字节、存储器字、寄存器、slab、数据库记录、数据库字段、超文本标记语言(HTML)页面、数据库引用、文件,和/或存储设备内的数据的任何可寻址的段。根据本发明的各实施例,存储设备内的存储块的大小可以是固定的(即,对所有存储块一致)或可变的(例如,取决于存储块的内容的大小)。
在本发明的一个或多个实施例中,存储块(例如,存储块A(122)、存储块B(124)、存储块C(126)、存储块D(128)、存储块E(132)、存储块F(134)、存储块G(136)、存储块H(138))可以被分组到存储容器(例如,存储容器1(120)、存储容器Z(130))中。在本发明的一个或多个实施例中,存储容器可以是指存储设备内的存储块的逻辑和/或物理组。存储容器的示例可以包括但不仅限于:文件、数据库记录、数据库字段、HTML页面、数据库引用、存储器字节、存储器字、寄存器、slab、和/或存储设备内的一个或多个存储块的任何分组。在一个示例中,存储容器是驻留在硬盘驱动器上的文件,而存储块是所述硬盘驱动器上的存储器字节。在另一个示例中,存储容器是数据库行,而其对应的存储块是数据库行内的数据库字段。如示例所示,存储容器可以只是特定硬件设备上的一组仅有且所有的存储块、特定表或特定数据库上的一组仅有且所有的存储块,或任何其他逻辑或物理组。
根据本发明的各实施例,存储设备内的存储容器的大小可以是固定的(即,对所有存储容器一致)或可变的(例如,取决于存储容器的内容的大小)。进一步地,存储容器中的存储块的数量可以是固定的或可变的。在本发明的一个或多个实施例中,存储容器是可寻址的。数据可以基于任何存储机制和/或算法,跨一个或多个存储容器被存储在一个或多个存储块内。因此,存储容器内的存储块可以对应于相同逻辑单元,和/或根据它们在软件程序内的用途相关联。存储设备(110)的内容可以被能够读取所述存储设备(110)的任何类型的计算机和/或设备使用,并可以被分段,或以任何逻辑次序存储。
在本发明的一个或多个实施例中,缓存管理器(140)包括管理缓存(100)和缓存队列(142)的功能。缓存管理器(140)可以控制缓存块在缓存队列(142)内的插入、删除,和/或修改。缓存管理器(140)也可以对缓存(100)内的存储单元执行诸如插入、删除,和/或修改之类的操作和/或请求所述操作由另一实体(例如,缓存控制器)执行。在本发明的一个或多个实施例中,缓存管理器(140)可以实现诸如此处所公开的方法中的一个或多个的缓存算法。缓存算法的示例可以包括但不仅限于:最近最少使用(LRU)、最近使用(MRU)和/或描述对缓存和/或缓存队列(142)的插入、删除,和/或修改的步骤的一种或多种方法的任何组合。
继续图1A,在本发明的一个或多个实施例中,缓存管理器(140)可以对应于硬件、软件,或其组合。例如,缓存管理器(140)可以被实现为管理DRAM和闪存缓存的数据库缓冲池管理器(例如,数据库内核)的一部分、作为操作地连接到硬件缓存的存储器管理单元、作为管理存储器缓存的存储器服务器的一部分(例如,作为甲骨文公司的EXADATA存储器服务器产品线的一部分)、作为管理DRAM和闪存缓存(readzilla)两者的ZFS仪器缓存管理器的一部分、作为管理操作系统缓冲池的操作系统的一部分,和/或作为管理哪些对象将被维护在中间层缓存中的对象缓存的一部分。如前所述的组件只是其中可以实现缓存管理器(140)的组件的示例。在不偏离本发明的范围的情况下,可以使用其他硬件或软件组件。
在本发明的一个或多个实施例中,缓存管理器(140)控制缓存操作与一个或多个周期性的事件(例如,系统时钟)的同步。缓存管理器(140)也可以基于一个或多个周期性的事件和/或触发器(例如,惰性写入),来控制诸如回写到存储设备(110)之类的周期性的和/或异步操作。缓存管理器(140)可以是存储设备(110)和发出请求的实体之间的中介。发出请求的实体的示例包括但不仅限于:软件程序、CPU,和/或能够从存储设备(110)请求数据和/或向存储设备(110)写入数据的任何实体。因此,缓存管理器(140)可以接收来自发出请求的实体的指令(例如,读和/或写指令),并可以从缓存(100)、缓存队列(142)和/或存储设备中检索数据和/或向它们中写入数据。
图1B示出了根据本发明的一个实施例的缓存队列(142)。如图1B所示,系统具有多个组件,包括多个缓存块(例如,缓存块1(156)、缓存块i(158)、缓存块i+1(160)、缓存块j(162)、缓存块j+k(164))、保护段(152)、试用段(154),以及受害者段(170)。系统的组件可以位于同一个设备上(例如,硬盘驱动器、RAM、存储设备、存储器管理单元(MMU)、服务器、大型机、台式个人计算机(PC)、膝上型计算机、个人数字助理(PDA)、电话、移动电话、自助服务终端、电缆盒,以及任何其他设备)或可以位于通过网络(例如,因特网)利用有线和/或无线段连接的分离的设备上。本领域技术人员将认识到,可以有多于一个的每一个单独的组件在设备上运行,在本发明的给定实施例内可以有这些组件的任何组合。
在本发明的一个或多个实施例中,缓存队列(142)是缓存块(例如,缓存块1(156)、缓存块i(158)、缓存块i+1(160)、缓存块j(162)、缓存块j+k(164))的队列。缓存队列(142)中的每一个缓存块(例如,缓存块1(156)、缓存块i(158)、缓存块i+1(160)、缓存块j(162)、缓存块j+k(164))可以引用缓存内的一个或多个存储单元。缓存队列(142)可以是虚拟结构(例如,存储器中的数据结构)、在存储设备(例如,静态随机存取存储器设备)上实现的物理结构,和/或其任何组合。
在本发明的一个或多个实施例中,缓存块的值引用缓存中的对应的存储单元的位置。因此,缓存块可以是引用存储了存储块的值的物理存储单元的逻辑实体。引用可以呈现位于存储单元的存储位置中、存储物理存储单元的存储位置,或使用用于识别被引用的存储单元的另一种直接或间接技术的形式。根据本发明的一个或多个实施例,将缓存块插入到缓存队列中与将存储块的值插入到缓存中的存储单元重合,以便缓存块引用存储单元。
在本发明的一个或多个实施例中,当一个或多个缓存块被重新定位在缓存队列(142)内时,它们的对应的存储单元不在缓存内移动。因此,缓存块在缓存队列(142)内的顺序可以不反映存储单元在缓存内的顺序。在本发明的一个或多个实施例中,当选择用于插入到缓存中的存储块时,从缓存中清除对应于不同的存储块的值。在本发明的一个或多个实施例中,对于动态地调整大小的缓存,缓存队列(142)的大小与缓存成比例地增长。
继续图1B,在本发明的一个或多个实施例中,缓存队列(142)包括位于缓存队列(142)末端的受害者段(170)。受害者段(170)是构成缓存队列(142)的子集的缓存块的相邻组。受害者段(170)内的缓存块可以是用于从缓存队列(142)清除的候选者。在本发明的一个或多个实施例中,不在受害者段(170)中的缓存块不是用于从缓存队列(142)清除的候选者。因此,在本发明的一个或多个实施例中,在插入到缓存中之前,当缓存队列中的空间不足以用于新缓存块时,缓存队列(142)从受害者段(170)中清除缓存块。
在本发明的一个或多个实施例中,缓存队列(142)包括位于缓存队列(142)末端的试用段(154)。试用段(154)是构成缓存队列(150)的子集的缓存块的相邻组。在本发明的一个或多个实施例中,试用段(154)包括受害者段(170),以便受害者段(170)是试用段(154)的子集。试用段(154)可以包括一个或多个新缓存块和/或一个或多个旧缓存块。在本发明的一个或多个实施例中,新缓存块被插入到缓存队列(142)中的试用段(154)的开始。
在本发明的一个或多个实施例中,缓存队列(142)包括位于缓存队列(142)开始处的保护段(152)。保护段(152)是构成缓存队列(142)的子集的缓存块的相邻组。在本发明的一个或多个实施例中,保护段(152)与试用段(154)相邻。
继续图1B,在本发明的一个或多个实施例中,缓存块在进入缓存队列(142)的受害者段(170)时完成了对缓存队列(142)的通过。因此,缓存块可以穿过整个缓存队列(142)或仅仅穿过缓存队列的试用段(154),以便完成通过。具体而言,对缓存块的通过的开始处于保护段(例如,缓存块1(156))的开始处,或者试用段(例如,缓存块i+1(160))的开始处。随着缓存块被从缓存队列(142)中清除和/或在缓存队列(142)内回收利用,任何剩余缓存块都可以重复缓存队列中的一个或多个点(例如,向图1B所示出的图中的右侧移动)。例如,如果缓存块j+k(164)被回收利用到试用段(154)的开始处(即,到位置i+1(160))并且缓存块j+k-1(未示出)被清除,那么,试用段(154)中的剩余缓存块中每一个都在图1B的图中向右移动两个空格。作为另一个示例,如果缓存块j+k(164)被回收利用到保护段(152)的开始处(即,到位置1(156))并且缓存块j+k-1(未示出)被清除,那么,缓存队列(142)中的剩余缓存块每一个都向图1B中的图中的右侧移动。当缓存块进入受害者段(170)时,对缓存队列的通过完成。
在本发明的一个或多个实施例中,如果缓存块已经被回收利用了N-1次,则可以说该缓存块对于任何正整数N,在缓存队列(142)的第N次通过内。因此,在缓存队列(142)的第一次通过内的缓存块是从来没有被回收利用的任何缓存块,并且在缓存队列的第三次通过内的缓存块是已经被回收利用2次的缓存块。
容器统计
回头参考图1A,在本发明的一个或多个实施例中,缓存管理器(140)存储一组容器统计对象(未示出)。每一个容器统计对象都存储存储设备中的存储容器的数据。在本发明的一个或多个实施例中,为对应于缓存队列(142)中的一个或多个缓存块的每一个存储容器创建容器统计对象。容器统计对象可以在将该存储容器的第一缓存块插入到缓存队列(142)的基础上创建。在本发明的一个或多个实施例中,当容器统计对象的对应的存储容器在缓存队列(142)中没有剩余缓存块时,删除容器统计对象。因此,当存储容器的最后一个缓存块从缓存队列(142)中清除时,可以删除容器统计对象。
在本发明的一个或多个实施例中,容器统计对象在对应于存储容器的缓存队列内包括若干个旧缓存块和若干个新缓存块。存储容器的旧缓存块的数量是存储容器中的作为旧缓存块存储在缓存队列(142)中的存储块的计数。存储容器的新缓存块的数量是存储容器中的作为新缓存块存储在缓存队列(142)中的存储块的计数。作为缓存块“存储”的存储块是指在缓存队列(142)内具有对应的缓存块的存储块。缓存块引用存储了存储块的值(即,脏或非脏值)的缓存(100)内的存储单元。
继续图1A,在本发明的一个或多个实施例中,在启动缓存之后,缓存管理器(140)与分段的最近最少使用的(SLRU)缓存队列类似地(即,没有概率性的插入和/或删除)操作缓存队列。因此,在本发明的一个或多个实施例中,缓存管理器(140)被配置成在预定义的预热期(被定义为若干个预热事务和/或时间段)之后激活概率性的插入和/或概率性的删除。在本发明的一个或多个实施例中,缓存管理器(140)被配置成延迟概率性的插入和/或概率性的删除,直到缓存在指定数量的事务(T)上收集了容器统计对象的数据。在此时间段过程中和/或在此时间段之后,缓存管理器(140)可以收集每一个容器统计对象的下列容器统计中的一个或多个:
a.第一遍缓存块的数量(“num_first_pass_blocks”)。在本发明的一个或多个实施例中,第一遍缓存块是完成了对试用段的第一次通过的那些(即,插入在试用段的开始处(即,顶部)的随后回收利用到试用段或保护段的开始处(即,顶部)的那些)。
b.第一遍命中的数量(“num_first_pass_hits”)。在本发明的一个或多个实施例中,这是完成了对试用段的第一次通过的那些缓存块的缓存命中的总数的计数。
c.第二机会块的数量(“num_second_chance_blocks”)。在本发明的一个或多个实施例中,这是完成了在没有接收到缓存命中的情况下完成对试用段的第一次通过并被回收利用到试用段的开始处的缓存块的数量。
d.第二遍命中块的数量(“num_second_pass_hit_blocks”)。在本发明的一个或多个实施例中,这是在对试用段的第二次通过过程中被命中的缓存块的数量。
e.在接收到第一命中之前缓存访问的平均数(“avg_cache_accesses_before_first_hit”)。在本发明的一个或多个实施例中,这是在将缓存块插入到缓存队列中和对试用段的第二次通过中接收到缓存命中之间的缓存访问的平均数。
f.“活动”状态标志跟踪概率性的删除是否对于对应的存储容器激活。活动状态标记最初被设置为假(FALSE)。
g.自从最后一次访问以来的事务的数量(“transactions_since_last_access”)。在本发明的一个或多个实施例中,这保持跟踪自从对缓存块的最后一次访问(即,缓存命中)以来执行的(即,由缓存服务的)事务的数量。如果此值超过预定义的阈值数字,则在被考虑从缓存中清除之后以概率1删除对应于此存储容器的缓存块。可以从缓存管理器(140)的图形用户界面和/或从任何被授权的用户或实体接收到预定义的阈值数字。
在指定数量的事务(T)完成之后,缓存管理器(140)可以继续收集这些容器统计。在本发明的一个或多个实施例中,基于所述容器统计每T个事务更新一次容器统计对象。因此,缓存管理器(140)可以实现计数器以周期性地更新容器统计对象,以便每T个事务表示数据收集周期。在本发明的一个或多个实施例中,在每个事务之后更新容器统计对象。因此,可以使用事务的移动窗口来计算每一个容器统计对象的容器统计。缓存管理器(140)可以接收预热时间段和/或使用指定数量的事务来与本发明的各实施例的元素和/或步骤中的任何一个相结合地延迟概率性的插入和/或删除。
继续图1A,根据本发明的一个或多个实施例,缓存管理器(140)包括图形用户界面(GUI)和/或应用编程接口(API)。GUI和/或API包括从用户和/或软件应用接收移动窗口的大小、指定数量的事务、预热时间段,在缓存管理器(140)内使用的任何属性或性质。GUI可以在软件应用(例如,Web应用、桌面应用、移动应用等等)内向软件应用的用户显示,以便接收输入并提供反馈。可以使用GUI来提供自定义、报告性能统计,和/或修改系统性质。GUI的用户可以是计算机系统的最终用户、数据库管理员、系统管理员、硬件设计师、和/或符合一个或多个预先颁发的安全凭据的任何实体或个人。作为替代地或附加地,缓存管理器(140)可以被预先配置或设计有预先指定的大小的移动窗口、指定数量的事务、预热时间段,和/或在缓存管理器(140)内使用的任何属性或性质。
在本发明的一个或多个实施例中,缓存管理器(140)使用在指定数量的事务过程中收集的数据来填充和/或修改容器统计对象。这可以在每T个事务之后基于为该T个事务收集的数据,在每个事务之后(基于过去的事务的移动窗口),和/或基于对过去的事务数据的任何采样来进行。在本发明的一个或多个实施例中,下列操作中的一个或多个可以基于收集的数据来执行:
a.对于具有num_first_pass_hits>1的所有容器统计对象,作为容器延迟*num_first_pass_hits/num_first_pass_blocks,来计算存储容器的估计的新块成本(“estimated_new_block_cost”)(遵循公式C0j=E[Nj]*Lj,其中,E[Nj]是在对缓存队列的第一次通过过程中对来自存储容器j的新缓存块的缓存命中的期望数,如下面所讨论的)。对于这样的容器统计对象,活动状态标记可以被设置为真(TRUE),并且num_first_pass_blocks和num_first_pass_hits可以被设置为0。
b.那些没有num_first_pass_hits>1的容器统计对象继续使用estimated_new_block_cost的旧值,并持续增大num_first_pass_blocks和num_first_pass_hits,直到下一容器统计更新。
c.在本发明的一个或多个实施例中,对于具有num_second_pass_hit_blocks>1的所有容器统计对象,作为latency*(num_second_pass_hit_blocks/num_second_chance_blocks)/avg_cache_accesses_before_first_hit来计算估计的零命中缓存未中成本(“estimated_0hit_miss_cost”)(遵循公式Cj=LjRj=LjP(A|Bj)/Tj,如下面所讨论的)。在本发明的一个或多个实施例中,对于这些容器统计对象,num_second_chance_blocks、num_second_pass_hit_blocks,以及avg_cache_accesses_before_first_hit可以被复位为零。
d.在本发明的一个或多个实施例中,那些没有num_second_pass_hit_blocks>1的容器统计对象可以继续使用现有的estimated_0hit_miss_cost,和/或继续增大num_second_chance_blocks、num_second_pass_hit_blocks和/或avg_cache_accesses_before_first_hit。
在本发明的一个或多个实施例中,在预热期之后和/或执行指定数量的事务之后,对于活动状态标记被设置为FALSE的容器统计对象,缓存管理器(140)以概率1将对应于存储容器的新缓存块插入在试用段的开始处(即,顶部)。另外,缓存管理器(140)还以概率0.5删除对应于存储容器的缓存块,如果它们在对试用段的第一次通过过程中接收到零个缓存命中(此时被认为从缓存中清除)的话。在本发明的一个或多个实施例中,这增强了这样的缓存块的回收利用,以便提高估计的容器统计数据的精确度。
分析缓存删除
继续图1A,根据本发明的一个或多个实施例,缓存管理器(140)以概率的方式从缓存队列(142)的受害者段删除一个或多个新缓存块。因此,可以给受害者段中的一个或多个新缓存块指派删除概率。删除概率是:如果检查相应的缓存块,则该缓存块将被从缓存中清除的概率。例如,删除概率可以是零和一(含)之间的数字。当新缓存块被考虑从缓存队列中清除时,缓存管理器(140)可以随机地选择概率数。在本发明的一个或多个实施例中,概率数可以从均匀分布中选择和/或在匹配删除概率的潜在值的范围的潜在值的范围内选择。随后,将概率数与删除概率进行比较,并且对是否要清除缓存块作出判断。继续上述示例,如果删除概率大于或等于概率数,则从缓存队列中清除缓存块(对应的存储单元被释放)。
在本发明的一个或多个实施例中,缓存管理器(140)响应于被请求的缓存操作,识别缓存命中和/或缓存未中。在本发明的一个或多个实施例中,缓存管理器(140)跟踪在对缓存队列(142)的每一次通过过程中由缓存块接收到的缓存命中的数量(对每一个缓存块b表示为nb)。对缓存队列(142)的通过可以包括对缓存队列的在其之后缓存块被清除或回收利用的任何段(例如,试用段和/或保护段)的通过。在本发明的一个或多个实施例中,如果对于正在被考虑清除的缓存块,nb等于零,则从缓存队列中删除缓存块。如果nb>0,那么,缓存块被回收利用到缓存队列(142)的保护段的开始处(即,顶部)。在插入到缓存队列(142)时,nb可以被初始化为任何值。在本发明的一个或多个实施例中,当缓存块被回收利用时,nb被复位到零。
在本发明的一个或多个实施例中,每当需要将新缓存块插入到缓存队列(140)中时(例如,当缓存未中发生时),缓存管理器(140)顺序地考虑缓存队列(142)的受害者段中的缓存块,以从缓存队列(142)末端开始清除。
在本发明的一个或多个实施例中,缓存管理器(140)作为rb=nb/tb来计算缓存中旧缓存块的估计的访问速率,其中,tb是自从旧缓存块b被插入到缓存队列(142)中以来消逝的时间。
继续图1A,在本发明的一个或多个实施例中,缓存管理器(140)将预定义的比率的带有nb等于零的新缓存块回收利用到缓存队列(142)的试用段的开始处(即,顶部)。然后,缓存管理器(140)可以对于每一个存储容器观察在对试用段的第二次通过过程中被命中的那些缓存块的一部分。在一个实施例中,预定义的部分可以由连接到缓存管理器(140)的任何被授权的用户和/或实体设置和/或修改。在本发明的一个或多个实施例中,可以在缓存的操作过程中动态地调整预定义的部分,以便改进缓存的性能。
在本发明的一个或多个实施例中,缓存管理器(140)计算在对试用段的第一次通过之后带有nb=0的新缓存块将在对试用段的第二次通过过程中接收到缓存命中的条件概率为P(A|Bj)=P(A∩Bj)/P(Bj)。在此公式中,Bj是属于在其对试用段的第一次通过过程中没有接收到缓存命中的存储容器j的新块的事件,A是该新块在其对试用段的第二次通过过程中接收到缓存命中的事件。对于每一个存储容器j,此条件概率可以被估计为满足事件Bj并在被回收利用到缓存队列的试用段的开始处(即,顶部)之后接收到缓存命中的缓存块的一部分。
在本发明的一个或多个实施例中,缓存管理器(140)作为Rj=P(A|Bj)/Tj来计算来自存储容器j的新缓存块的估计的访问速率,其中,Tj是在在对试用段的第二次通过过程中接收到缓存命中之前由来自存储容器j的新缓存块花费在缓存中的平均时间。在本发明的一个或多个实施例中,可以使用其中Rj是Tj的递减函数的任何公式来计算估计的访问速率(包括所示出的公式的任何线性和/或指数变体)。
继续图1A,在本发明的一个或多个实施例中,缓存管理器(140)作为Cj=Lj*Rj来计算在受害者缓存中具有一个或多个新缓存块的存储容器的估计的缓存未中成本,其中Lj是存储容器j的延迟。缓存管理器(140)可以计算删除这样的缓存块的概率Pj,以便对于在受害者段中有新缓存块的任何两个存储容器j和k,相对删除概率与相对缓存未中成本成反比:Pj/Pk=Ck/Cj。在本发明的一个或多个实施例中,可以使用其中存储容器的删除概率与其估计的缓存未中成本逆相关的任何公式或给定公式的变体(包括所示出的公式的任何线性和/或指数变体)。在本发明的一个或多个实施例中,缓存管理器(140)可以使用此公式和/或此公式的变体来隔离在缓存队列中具有缓存块的任何存储容器的删除概率(Pj)。首先,缓存管理器(140)可以识别在受害者段中具有一个或多个新缓存块的存储容器之中的最低估计的缓存未中成本(Cjmin)。然后,缓存管理器(140)可以作为来计算缩放因子。给定得出其中,jmin是所述存储容器之中的最低成本存储容器(即,带有最低估计的缓存未中成本的存储容器)的索引。在本发明的一个或多个实施例中,缓存管理器(140)使用此公式(或其变体)来计算缓存队列(142)中的新缓存块的删除概率。在本发明的一个或多个实施例中,可以使用其中存储容器的删除概率与其估计的缓存未中成本逆相关的任何公式或给定公式的变体(包括所示出的公式的任何线性和/或指数变体)。
继续图1A,在本发明的一个或多个实施例中,缓存管理器(140)顺序地考虑受害者段中的所有新缓存块,从缓存队列的末端开始,如果考虑的缓存块b已经对试用段进行了两次通过并具有nb=0,那么它被选择为要被删除的受害者。在本发明的一个或多个实施例中,如果来自存储容器j的新缓存块b正在对试用段进行其第一次通过,具有nb=0,并具有小于受害者段中的最低成本旧缓存块的估计的缓存未中成本Cj,那么它被以概率Pj选择为受害者。
在本发明的一个或多个实施例中,如果在顺序地考虑受害者段中的所有新缓存块之后无新缓存块被选择为要被清除的受害者,那么,缓存管理器(140)从队列的末端选择具有nb=0并且其估计的缓存未中成本小于受害者段中的最低成本旧缓存块的估计的缓存未中成本的第一新缓存块b。如果受害者段不包含任何新缓存块,那么,带有最小的估计的缓存未中成本的旧缓存块被选择为受害者(即,被清除)。
在本发明的一个或多个实施例中,缓存管理器(140)“忘记”由预定义的数量的过去的缓存操作之外的缓存的块接收到的缓存命中。在本发明的一个或多个实施例中,对于一个或多个容器统计对象,被忘记的缓存命中被缓存管理器(140)从考虑中删除。例如,响应于缓存命中被忘记,容器统计对象可以调整自从缓存块b被插入到缓存队列(tb)中以来消逝的时间,以在最早记得的缓存命中的时间开始。在本发明的一个或多个实施例中,预定义的数量可以是在计算容器统计时所使用的事务的数量的整数倍(T,上文所讨论的)。
在本发明的一个或多个实施例中,当考虑用于清除的缓存块b时,如果缓存块b的存储容器(即,对应于缓存块b的存储块的存储容器)在预定义数量的事务内没有被访问,则缓存管理器(140)清除缓存块b。在本发明的一个或多个实施例中,预定义的数量可以是在计算容器统计时所使用的事务的数量的整数倍(T,上文所讨论的)。
工作负荷变化
继续图1A,在本发明的一个或多个实施例中,缓存管理器(140)被配置成检测对于存储容器发生了工作负荷变化。在本发明的一个或多个实施例中,缓存管理器(140)被配置成检测,当存储容器j内的任何两个不经常被访问的存储块在预定义的时间段(例如,20秒)内接收到预定义的数量的访问(N)时,对于存储容器j发生了工作负荷变化。在本发明的一个或多个实施例中,不经常被访问的存储块是具有在预定义的访问速率阈值之下的访问速率(即,估计的访问速率)的存储块。在本发明的一个或多个实施例中,根据此处所公开的过程中的一个或多个(例如,图2的过程,如下面所讨论的),缓存管理器(140)包括计算估计的访问速率的功能。
在本发明的一个或多个实施例中,缓存管理器(140)检测,如果对至少预定义的数量的访问(N)计算的容器j的访问速率增加预定义的变化阈值(例如,百分数增长、倍数增大、单位时间访问数量的增大等等),则对于存储容器j发生了工作负荷变化。在本发明的一个或多个实施例中,缓存管理器(140)被配置成从缓存管理器(140)的GUI的用户那里接收预定义数量的访问(N)、预定义的时间段、预定义的访问速率阈值,和/或预定义的变化阈值。GUI的用户的示例可以包括但不仅限于:计算机系统的最终用户、数据库管理员、系统管理员、硬件设计师、和/或符合一个或多个预先颁发的安全凭据的任何实体或人。作为替代地或附加地,缓存管理器(140)可以被预先配置或设计有预定义数量的访问(N)、预定义的时间段、预定义的访问速率阈值、预定义的变化阈值,和/或在缓存管理器(140)内所使用的任何属性。
在本发明的一个或多个实施例中,缓存管理器(140)包括设置对应于存储容器的容器统计对象的工作负荷变化时间属性(“workload_change_time”)的功能。workload_change_time属性可以被初始化为零。在本发明的一个或多个实施例中,缓存管理器(140)被配置成更新workload_change_time属性,以存储当检测到工作负荷变化时的时间。
在本发明的一个或多个实施例中,缓存管理器(140)被配置成选择“陈旧的”缓存块作为用于从缓存队列(142)中删除的潜在受害者。在本发明的一个或多个实施例中,陈旧的缓存块是在预定义数量的缓存操作内没有被访问并且其最新的访问时间在其对应的存储容器的workload_change_time之前的任何旧缓存块。
分析缓存插入
继续图1A,在本发明的一个或多个实施例中,缓存管理器(140)被配置成,对于一组存储容器(Z)之中的每一个存储容器j,计算到对应于存储容器j的新缓存块b的缓存命中的期望数(E[Nj])。该组容器可以包括具有缓存队列(142)中的一个或多个缓存块的存储容器、具有容器统计对象的存储容器、具有缓存队列的一个或多个段(即,试用段、保护段、受害者段)中的一个或多个旧和/或新缓存块的存储容器,和/或存储设备(110)中存储容器的任何子集。在本发明的一个或多个实施例中,缓存管理器(140)将缓存命中的期望数(E[Nj])估计为在对缓存队列(142)的试用段第一次通过过程中由来自容器j的新缓存块接收到的缓存命中的平均数。根据本发明的各实施例,可以计算任何预定义数量的过去的缓存块的缓存命中的平均数。例如,缓存管理器(140)可以跟踪来自存储容器j的最后10个新缓存块的(在第一次通过过程中)缓存命中的数量。然后,缓存管理器(140)可以取这10个新缓存块的缓存命中的数量的平均值,以用作来自存储容器j的一个或多个新缓存块的缓存命中的期望数的估计。
在本发明的一个或多个实施例中,缓存管理器(140)被配置成作为来计算该组存储容器(Z)的每一个存储容器j的估计的先验的缓存未中成本(即,估计的缓存未中成本),其中,Lj是存储容器j的延迟值。在本发明的一个或多个实施例中,估计的先验的缓存未中成本表示用于概率性的插入的未中成本值。因此,在本发明的一个或多个实施例中,估计的先验的缓存未中成本可以只以概率的方式与新块的实际缓存未中成本相关。
继续图1A,在本发明的一个或多个实施例中,缓存管理器(140)被配置成识别计算出的估计的先验的缓存未中成本之中的最大估计的先验的缓存未中成本在本发明的各实施例中,缓存管理器(140)可以周期性地基于指定数量的缓存操作或事务,和/或在检测缓存未中之前,计算每一次插入到缓存队列(142)之前的估计的先验的缓存未中成本中的一个或多个。
在本发明的一个或多个实施例中,缓存管理器(140)被配置成识别与缓存未中相关联的存储块。存储块可以是被缓存操作引用的存储块。例如,识别的存储块可以被缓存读取或缓存写入引用。在本发明的一个或多个实施例中,识别的存储块不存在于缓存(100)或相关联的缓存队列(142)中。因此,存储块可以被访问,以便获得缓存操作所需的值或将值写入到存储块中。在本发明的一个或多个实施例中,缓存管理器(140)识别包括存储设备(110)内的存储块的存储容器。
在本发明的一个或多个实施例中,缓存管理器(140)被配置成计算该组存储容器(Z)之中的每一个存储容器的新块的到达速率(λj)。在本发明的一个或多个实施例中,到达速率可以是每个缓存操作、缓存操作类型、单位时间(例如,毫秒)到达缓存队列(142)的存储容器中的新缓存块的数量,和/或对于新缓存块的降低的到达率的任何其他预定义的缓存度量。
继续图1A,在本发明的一个或多个实施例中,缓存管理器(140)被配置成识别该组存储容器的计算出的到达速率之中的最大到达速率。在本发明的一个或多个实施例中,最大到达速率和最大估计的先验的缓存未中成本可以或者也可以不对应于不同的存储容器。因此,根据预定义的缓存度量,最大到达速率可以对应于具有最多被插入到缓存队列(142)中的新缓存块的存储容器。
在本发明的一个或多个实施例中,对于对应于缓存未中的存储块b,缓存管理器(140)被配置成判断存储块b的存储容器j是否具有大于具有最大估计的先验的缓存未中成本的容器的到达速率的到达速率。如果是,在本发明的一个或多个实施例中,缓存管理器(140)根据最大到达速率来计算存储块的插入概率(Pj)。在本发明的一个或多个实施例中,缓存管理器(140)作为来计算插入概率(Pj)。在本发明的一个或多个实施例中,如果存储块b的存储容器j具有小于或等于具有最大估计的缓存未中成本的容器的到达速率的到达速率,则缓存管理器(140)根据容器j的估计的缓存未中成本来计算插入概率。在本发明的一个或多个实施例中,当存储块b具有小于或等于具有最大估计的缓存未中成本的容器的到达速率的到达速率时,缓存管理器(140)作为来计算插入概率。在本发明的一个或多个实施例中,在计算插入概率之后,缓存管理器(140)以概率Pj将对应于存储块b的新缓存块插入到缓存队列(142)中。
在本发明的一个或多个实施例中,缓存管理器(140)包括以概率的方式将一个或多个缓存块插入到缓存队列(142)中的功能。在本发明的一个或多个实施例中,缓存管理器(140)被配置成随机地选择概率数。概率数可以从均匀分布中选择和/或在匹配插入概率的潜在值范围的潜在值范围内选择。在本发明的一个或多个实施例中,如果插入概率大于或等于概率数,缓存管理器(140)被配置成将新缓存块插入到缓存队列(142)中(并将存储块的值插入到缓存中的对应的存储单元中)。在本发明的一个或多个实施例中,如果插入概率小于概率数,则新缓存块不被插入到缓存队列(142)中。可以使用任何随机数生成方法,包括伪随机数生成方法。
遮蔽列表
图8A示出了根据本发明的一个实施例的旧块遮蔽列表(849)。如图8A所示,旧块遮蔽列表(849)具有多个组件,包括对应于从缓存队列中清除的旧缓存块的一组旧缓存块条目(例如,旧缓存块条目A(800)、旧缓存块条目B(802)、旧缓存块条目C(804)、旧缓存块条目J(806)、旧缓存块条目J+1(808)、旧缓存块条目J+2(810))。旧块遮蔽列表(849)的组件可以位于同一个设备(例如,服务器、大型机、台式个人计算机(PC)、膝上型计算机、个人数字助理(PDA)、电话、移动电话、自助服务终端、电缆盒,以及任何其他设备)上,或者也可以位于通过网络(例如,因特网)以有线和/或无线段连接的分离的设备上。所属领域的技术人员将认识到,可以有多于一个的每一个单独的组件在设备上运行,在本发明的给定实施例内也可以有这些组件的任何组合。
在本发明的一个或多个实施例中,旧块遮蔽列表(849)存储从缓存队列中清除的一组旧缓存块条目(例如,旧缓存块条目A(800)、旧缓存块条目B(802)、旧缓存块条目C(804)、旧缓存块条目J(806)、旧缓存块条目J+1(808)、旧缓存块条目J+2(810))。在本发明的一个或多个实施例中,对于从缓存队列清除的每一个旧缓存块,其对应的存储单元被释放。
图8B示出了根据本发明的一个实施例的新块遮蔽列表(899)。如图8B所示,新块遮蔽列表(899)具有多个组件,包括一组新缓存块条目(例如,新缓存块条目A(850)、新缓存块条目B(852)、新缓存块条目C(854)、新缓存块条目J(856)、新缓存块条目J+1(858)、新缓存块条目J+2(860))。新块遮蔽列表(899)的组件可以位于同一个设备(例如,服务器、大型机、台式个人计算机(PC)、膝上型计算机、个人数字助理(PDA)、电话、移动电话、自助服务终端、电缆盒,以及任何其他设备)上,或者也可以位于通过网络(例如,因特网)以有线和/或无线段连接的分离的设备上。所属领域的技术人员将认识到,可以有多于一个的每一个单独的组件在设备上运行,在本发明的给定实施例内也可以有这些组件的任何组合。
在本发明的一个或多个实施例中,新块遮蔽列表(899)存储对应于从缓存队列中清除的新缓存块的一组新缓存块条目(例如,新缓存块条目A(850)、新缓存块条目B(852)、新缓存块条目C(854)、新缓存块条目J(856)、新缓存块条目J+1(858)、新缓存块条目J+2(860))。在本发明的一个或多个实施例中,对于在对试用段进行两次或更多次通过之后清除的新缓存块,不向新块遮蔽列表(899)中插入条目。在本发明的一个或多个实施例中,对于从缓存队列清除的每一个新缓存块,其对应的存储单元被释放。
参考图8A和8B,遮蔽列表(例如,旧块遮蔽列表(849)和/或新块遮蔽列表(899))可以是虚拟结构(例如,存储器中的数据结构)、在存储设备(例如,静态随机存取存储器设备)上实现的物理结构,和/或其任何组合。遮蔽列表的大小可以是固定的或可变的(即,能够改变其大小,以便容纳较多或较少的缓存块)。在本发明的一个或多个实施例中,遮蔽列表动态地调整大小,以便根据性能变化而调整和/或响应于来自缓存管理器(例如,图1A的缓存管理器(140),上文所讨论的)的请求。
在本发明的一个或多个实施例中,遮蔽列表中的每一个条目(即,缓存块条目)包括存储块索引、存储容器索引、对被清除的缓存块的访问的总数,以及对被清除的缓存块的第一访问的时间。存储块索引可以引用存储容器中的存储块的位置和/或缓存中的对应的存储单元。存储容器索引引用存储设备上的对应的存储容器的位置。在本发明的一个或多个实施例中,对被清除的缓存块的访问的总数以及对被清除的缓存块的第一访问的时间存储在对应于被清除的缓存块的存储容器的容器统计对象内或从其中拷贝。对被清除的缓存块的访问的总数可以从缓存块最初被插入到缓存队列中时的时间维护。在本发明的一个或多个实施例中,对于被清除的缓存块的访问的总数包括在被清除的缓存块初始插入到缓存队列之前发生的第一次访问(即,导致缓存未中和随后的插入)。在本发明的一个或多个实施例中,对被清除的缓存块的第一次访问的时间是导致缓存未中并启动缓存块被插入到缓存队列的初始访问的时间。根据本发明的各实施例,涉及被清除的缓存块、被清除的缓存块的容器统计对象,和/或被清除的缓存块的对应的存储块的任何其他信息可以存储在遮蔽列表中的缓存块条目内。甚至在从缓存队列中清除并向遮蔽列表(即,旧块遮蔽列表(849)和/或新块遮蔽列表(899))插入对应的条目之后,也可以为缓存块维护此信息。
返回到图1A,在本发明的一个或多个实施例中,缓存管理器(140),对于从缓存队列(142)中清除的预定义数量(T)的旧缓存块中的每一个,将估计的缓存未中成本存储在一组估计的缓存未中成本内。可以根据如此处所公开的用于计算估计的缓存未中成本的方法中的一个或多个来计算此估计的缓存未中成本(例如,图2的过程,下面所讨论的)。
在本发明的一个或多个实施例中,缓存管理器(140)识别该组估计的旧缓存未中成本中最大估计的旧缓存未中成本(CSOldMax)。在本发明的一个或多个实施例中,缓存管理器(140)计算估计的旧缓存未中成本的标准偏差(σ)。该标准偏差可以是该组估计的旧缓存未中成本的方差的平方根。在本发明的一个或多个实施例中,缓存管理器(140)计算用于将缓存块插入到在遮蔽列表中具有条目的存储块的缓存队列(142)中的估计的缓存未中成本阈值(CT)。在本发明的一个或多个实施例中,可以使用最大估计的旧缓存未中成本(CSOldMax)和/或标准偏差的任何公式来计算估计的缓存未中成本阈值(CT)。在本发明的一个或多个实施例中,估计的缓存未中成本阈值被计算为:CT=CSOldMax+σ。
继续图1A,在本发明的一个或多个实施例中,缓存管理器(140)检测在遮蔽列表中具有对应的条目的存储块b的缓存未中。在本发明的一个或多个实施例中,存储块b已接收到至少2个访问(即,将对应的缓存块最初插入到缓存队列(142),以及当在遮蔽列表中时接收到的第二访问)。
在本发明的一个或多个实施例中,缓存管理器(140)响应于缓存未中,使用用来计算缓存队列(142)中的旧缓存块的估计的缓存未中成本的相同方法,来计算存储块b的估计的缓存未中成本(Cb)。
在本发明的一个或多个实施例中,管理模块(144)在系统(199)的各种组件之间提供互操作性、格式转换和/或交叉兼容性,如图1A中的示例性形式所示。例如,管理模块(144)可以在缓存管理器(140)和存储设备(110)之间传输数据,和/或反之亦然。此外,管理模块(144)也可以被用作系统(199)内以及该系统之外的组件的任何组合之间的无缝集成点。
在本发明的一个或多个实施例中,系统(199)的各种组件是可选的,和/或可以驻留在其他组件内,或者也可以位于一个或多个物理设备上。在本发明的一个或多个实施例中,缓存管理器(140)和管理模块(144)驻留在软件应用(例如,操作系统内核)和/或存储器管理单元内。还可以存在各种其他布局和组合。
图2示出了根据本发明的一个或多个实施例的流程图。可以使用图2所示出的流程图的步骤来计算缓存块的估计的缓存未中成本。所属领域的技术人员,在阅读此详细描述之后,将认识到,图2所示出的步骤的顺序和数量可以在本发明的各实施例之间不同。进一步地,图2中的一个或多个步骤可以是可选的,和/或可以以不同的顺序的任何组合来执行。
在步骤200中,识别缓存队列(例如,如上文所讨论的,图1B的缓存队列150)的受害者段(例如,如上文所讨论的,图1B的受害者段170)内的一组旧缓存块。该组旧缓存块可以包括受害者段中的自从被插入到缓存队列中以来至少被访问一次的所有缓存块。
在步骤205中,计算受害者段中的识别的旧缓存块中的每一个的估计的访问速率。在本发明的一个或多个实施例中,该组内的缓存块b的估计的访问速率被计算为rb=nb/tb,其中,nb是在当前通过缓存队列过程中接收到的命中的数量,tb是自从旧缓存块b被插入到缓存队列中以来消逝的时间。
在步骤210中,计算受害者段中的识别的旧缓存块中的每一个的估计的缓存未中成本。在本发明的一个或多个实施例中,估计的缓存未中成本被计算为Cb,j=Lj*rb,其中,Lj是旧缓存块的存储容器j的延迟(时间),rb是缓存块b的估计的访问速率。在本发明的一个或多个实施例中,rb可以是在步骤205中计算出的估计的访问速率,或基于此处所公开的检测和/或估计访问速率的任何方法为缓存块b计算的任何估计的访问速率。
在本发明的一个或多个实施例中,可以对于单个旧缓存块(而并非受害者段中的所有旧缓存块),执行步骤200、205,以及210,或者可以对于受害者段内的每一个旧缓存块迭代执行(从缓存队列的末端顺序地)。这些步骤中的任何一个都也可以响应于缓存未中、预期到缓存未中时异步地、周期性地和一个或多个数据收集过程一起,和/或和任何缓存操作一起执行。
图3示出了根据本发明的一个或多个实施例的流程图。可以使用图3所示出的流程图的步骤来计算缓存块的删除概率。所属领域的技术人员,在阅读此详细描述之后,将认识到,图3所示出的步骤的顺序和数量可以在本发明的各实施例之间不同。进一步地,图3中的一个或多个步骤可以是可选的,和/或可以以不同的顺序的任何组合来执行。
在步骤300中,如果新缓存块b在第一次通过试用段过程中已经接收到零个缓存命中,求来自存储容器j的新缓存块随后将在其第二次通过试用段的过程中接收到至少一个缓存命中的概率(P(A|Bj))的近似值。在本发明的一个或多个实施例中,计算在缓存队列的受害者段中具有至少一个新缓存块的每一个存储容器j的此概率,且此概率对于受害者段中的存储容器j的所有新缓存块是相等的。在本发明的一个或多个实施例中,对于存储容器j,此概率被估计为来自存储容器j的随后在它们第二次通过试用段过程中接收到至少一个缓存命中的回收利用的新缓存块(具有零个缓存命中)的分数。
在步骤305中,计算存储容器j的估计的访问速率。在本发明的一个或多个实施例中,作为Rj=P(A|Bj)/Tj来计算估计的访问速率,其中,Tj是在第二次通过试用段过程中接收到缓存命中之前由来自存储容器j的新缓存块在缓存中花费的平均时间。在本发明的一个或多个实施例中,P(A|Bj)可以是步骤300的输出,或基于任何计算缓存命中概率的方法为存储容器j计算的任何缓存命中概率。可以使用其中估计的访问速率与由缓存块花费在缓存中的时间逆相关的给定公式的任何变体(包括所示出的公式的任何线性和/或指数变体)来计算估计的访问速率。
在步骤310中,作为Cj=Lj*Rj来为存储容器j计算估计的缓存未中成本,其中,Lj是存储容器的延迟。在本发明的一个或多个实施例中,Rj可以是在步骤305中计算出的估计的访问速率,或基于检测和/或估计访问速率的任何方法为存储容器j计算的任何估计的访问速率。可以使用其中估计的访问速率与存储容器和/或存储设备的延迟相关的给定公式的任何变体(包括所示出的公式的任何线性和/或指数变体)来计算估计的缓存未中成本。
在步骤315中,识别在受害者段中具有至少一个新缓存块的所有存储容器之中的最低的估计的缓存未中成本(Cjmin)。这可以通过跟踪向受害者段的每一次新添加并保持对最低估计的缓存未中成本的引用、在一个或多个预定义的时间(例如,当考虑缓存块用于清除时,在考虑缓存块用于清除之前/之后,等等)迭代受害者段中的所有缓存块的估计的缓存未中成本,和/或当对受害者段发生修改时跟踪最低估计的缓存未中成本来进行。
在步骤320中,作为来计算缩放因子。缩放因子可以是使用将存储容器j的估计的缓存未中成本和/或删除概率与具有最低的估计的缓存未中成本的存储容器jmin的估计的缓存未中成本和/或概率相关联的公式估计的或计算出的任何常数。
在步骤325中,计算每一个存储容器j的删除概率。在本发明的一个或多个实施例中,作为来计算带有受害者段中的新缓存块的任何存储容器j的删除概率。在本发明的一个或多个实施例中,可以使用给定公式的任何变体(包括所示出的公式的任何线性和/或指数变体)来计算删除概率,其中,存储容器j的删除概率与最低成本存储容器(即,带有最低估计的缓存未中成本的具有受害者段中的新缓存块的存储容器)的删除概率相关。
图4A和4B示出了根据本发明的一个或多个实施例的流程图。可以使用图4A和4B所示出的流程图的步骤来从缓存队列中选择缓存块供清除。所属领域的技术人员,在阅读此详细描述之后,将认识到,图4A和和4B所示出的步骤的顺序和数量可以在本发明的各实施例之间不同。进一步地,图4A和4B中的一个或多个步骤可以是可选的,和/或可以以不同的顺序的任何组合来执行。另外,可以积极地或消极地执行一个或多个步骤。例如,确定步骤可以基于测试一条件、接收示出了存在该条件的中断、被省略,和/或以任何其他方式来执行。
在步骤400中,检测缓存未中。这可能是因为对于存储设备上的非缓存的存储器块的读取请求或写入请求。在本发明的一个或多个实施例中,这可以导致对存储设备的访问。根据本发明的各实施例,然后可以选择存储块供插入到缓存中(即,可以将存储块的值的副本置于对应于存储块的存储单元中)。在本发明的一个或多个实施例中,可以由可操作地连接到缓存的缓存管理器(例如,图1的缓存管理器(140),上文所讨论的)检测缓存未中。
在步骤401中,判断在缓存队列的受害者段内是否存在至少一个新的缓存块。如果在受害者段内存在至少一个新的缓存块,则过程前进到步骤402。如果不,则过程前进到图4B的步骤460。判断在受害者段内是否存在至少一个新缓存块可能需要受害者段的迭代和/或检查存储了对应于缓存队列中的新的缓存块的计数和/或标记的一个或多个数据结构(例如,在缓存管理器内)。
在步骤402中,新缓存块b被选中以供考虑。在本发明的一个或多个实施例中,缓存块b是从受害者段的末端算起的第一新缓存块(顺序地考虑)。
在步骤404中,判断缓存块b是否已对缓存队列的试用段作出至少两次通过,以及对于当前通过缓存队列缓存块b的缓存命中的数量是否是零。如果两个条件都被满足(即,真),则缓存块b被选中供清除,过程前进到图4B的步骤462。如果任何一个条件不被满足,则过程前进到步骤406。在本发明的一个或多个实施例中,b必须具有从缓存管理器(例如,图1的缓存管理器(140),上文所讨论的)和/或其他实体的程序员获取的等于某个预定义数量的若干个完成的通过。
在步骤406中,判断缓存块b是否在对缓存队列的试用段的第一次通过内,以及是否具有小于受害者段中的旧缓存块之间的最低的估计的缓存未中成本(COldMin)的估计的缓存未中成本(Cj)。如果两个条件都被满足,则过程前进到步骤408。如果不,则过程前进到步骤414。在本发明的各其他实施例中,步骤406可能需要判断缓存块b是否完成任何预定义数量的对缓存队列的通过(而并非第一次通过)。
在本发明的一个或多个实施例中,当搜索受害者段中的旧缓存块之中的最低的估计的缓存未中成本时,如果遇到陈旧的缓存块,则它被选为潜在的受害者。随后,根据如此处所描述的清除新缓存块的处理中的一个或多个,可以顺序地考虑缓存块b和受害者段的末端之间的所有新缓存块(如果有的话)供清除。在本发明的一个或多个实施例中,如果新缓存块中没有一个被选中供清除,则从缓存队列中清除陈旧的缓存块。
在本发明的一个或多个实施例中,由于没有缓存块移动会在缓存命中之后发生,选择潜在的受害者供删除以预期未来的缓存未中。在本发明的一个或多个实施例中,使用指定的线程来异步地识别潜在的受害者。在本发明的一个或多个实施例中,在清除缓存块之后,被清除的缓存块之后(即,下面)的所有缓存块回收利用到保护段的开始处(即,顶部),如果它们具有nb>0,或回收利用到试用段的开始处,如果它们具有nb=0。
在步骤408中,计算缓存块b的存储容器的删除概率(Pj)。在本发明的一个或多个实施例中,缓存块b的存储容器是对应于包括由缓存中的存储单元引用的存储块的缓存的存储设备上的存储容器。存储单元被缓存队列中的缓存块引用,并可以包括清洁值(即,匹配存储块的值)和/或脏值(即,不同于存储块的值)。在本发明的一个或多个实施例中,作为缓存块b的存储容器的估计的缓存未中成本的递减函数,来计算缓存块b的删除概率。在本发明的一个或多个实施例中,通过图3所描绘的流程图所描述的过程被用来计算缓存块b的删除概率。在本发明的一个或多个实施例中,作为来计算删除概率,其中,是作为计算的缩放因子,并且其中,是受害者段中的新缓存块之间的最低的估计的缓存未中成本。
在步骤410中,从均匀分布中随机地选择概率数。在本发明的一个或多个实施例中,均匀分布的范围与在步骤408中计算出的删除概率的范围相同。可以从任意数量的足够随机的过程中获取概率数,这些过程产生随机分布(在给定容差内)。可以使用任何一种随机数生成方法。对于本发明,随机选择可以指能够产生适于用于概率分析中的可能的结果的范围的任何方法。在不偏离本发明的范围的情况下,如此处所使用的随机数生成和随机数可以分别包括伪随机数生成和伪随机数。
在步骤412中,判断删除概率(Pj)是否大于或等于概率数。如果删除概率大于或等于概率数,则过程前进到图4B的步骤462。如果不,则过程前进到步骤414。例如,如果对两个数字给定0到100的可能范围,如果删除概率是45,概率数是40,则过程前进到图4B的步骤462。在本发明的一个或多个实施例中,步骤408、410,以及412可以使用将删除概率与从均匀分布中选择的随机数进行比较的任何方法。因此,在本发明的一个或多个实施例中,如果缓存块b具有较高的删除概率,它更有可能被删除。
在步骤414中,判断受害者段中是否仍保留有任何未考虑的新缓存块。在本发明的一个或多个实施例中,未考虑的新缓存块必须是(1)在位置上比缓存块b更远离缓存队列的末端,并且(2)在图4A(401)的新块序列过程中没有考虑被清除的新缓存块。如果这样的缓存块存在,则过程前进到选择此缓存块以返回到步骤402。如果不,则过程前进到图4B的步骤456。
现在参考图4B,流程图的步骤表示由图4A所描绘的流程图的继续。图之间的连接点(即,A、B,以及C)描绘了所描述的过程的继续。
在步骤456中,在本发明的一个或多个实施例中,选择符合一组选择标准的第一新缓存块,用于从缓存队列中清除。在本发明的一个或多个实施例中,选择标准是,新缓存块必须具有nb=0,且估计的缓存未中成本Cj<COldMin,其中,nb是在当前通过缓存队列过程中接收到的缓存命中的数量,Cj是新缓存块的存储容器的估计的缓存未中成本,而COldMin是受害者段中的旧缓存块之中的最低的估计的缓存未中成本。在本发明的一个或多个实施例中,从受害者段的末端顺序地考虑新缓存块。如果受害者段中没有一个缓存块满足声明的准则,通过此步骤将不选择新缓存块是可能的。在本发明的一个或多个实施例中,通过图4A的新块序列来识别所选第一新缓存块(401)。因此,在本发明的一个或多个实施例中,可能不需要再次迭代受害者段中的新缓存块,如果迭代已经通过这样的过程执行的话。在此情况下,以前的过程可以维护对满足此步骤所描述的准则的受害者段中的第一新缓存块的引用。
在步骤458中,判断是否通过步骤456选择了缓存块。如果是,则过程前进到步骤462。如果不,则过程前进到步骤460。
在步骤460中,在本发明的一个或多个实施例中,选择具有受害者段中的旧缓存块之中的最低估计的缓存未中成本(COldMin)的旧缓存块供清除。可以通过估计缓存块的未中成本的任何手段来计算估计的缓存未中成本(COldMin)。在本发明的一个或多个实施例中,通过图2所描述的过程的步骤被用来计算受害者段中的旧缓存块的估计的缓存未中成本(包括COldMin)。
在步骤462中,在本发明的一个或多个实施例中,从缓存队列中清除受害者段的所选缓存块。因此,缓存内的对应的存储单元被释放。在本发明的一个或多个实施例中,缓存块的清除可以触发来自存储单元的脏值被回写到存储设备上的其对应的存储块。在本发明的一个或多个实施例中,新存储块被缓存到被释放的存储单元,对应的新缓存块被输入到缓存中的试用段的开始处(即,顶部)。为了将新缓存块输入到试用段的开始处,在本发明的一个或多个实施例中,被清除的缓存块的位置之前的所有缓存块(即,更靠近缓存队列的开始处)向缓存队列的末端移动,以便填充被清除的缓存块留下的空隙。
在步骤464中,回收利用缓存队列中的一个或多个缓存块。回收利用可以指缓存队列中的缓存块的反向移动。在本发明的一个或多个实施例中,被清除的缓存块的位置之后的所有缓存块(即,更靠近缓存队列的末尾)被回收利用,如果它们具有nb>0(即,在当前通过缓存队列过程中接收到至少一个缓存命中),则回收利用到保护段的开始处,或如果它们具有nb=0(即,在当前通过缓存队列过程中接收到零个缓存命中),回收利用到试用段的开始处。
图6示出了根据本发明的一个或多个实施例的流程图。可以使用图6所示出的流程图的步骤来计算缓存块的估计的缓存未中成本。所属领域的技术人员,在阅读此详细描述之后,将认识到,图6所示出的步骤的顺序和数量可以在本发明的各实施例之间不同。进一步地,图6中的一个或多个步骤可以是可选的,和/或可以以不同的顺序的任何组合来执行。
在步骤600中,对于一组存储容器之中的每一个存储容器j,估计在对缓存队列的第一次通过过程中对来自存储容器j的新缓存块的缓存命中的期望数(E[Nj])。E[Nj]可以作为在第一次通过缓存队列的试用段过程中由新缓存块接收到的缓存命中的平均数来估计。在本发明的一个或多个实施例中,存储容器组的每一个存储容器具有缓存队列中的至少一个缓存块。根据本发明的各实施例,可以对于存储容器的任何预定义数量的缓存块计算E[Nj]。例如,缓存管理器(例如,图1A的缓存管理器(140),上文所讨论的)可以跟踪在第一次通过过程中来自存储容器j的最后10个新缓存块的缓存命中的数量。然后,缓存管理器(140)可以取这10个的平均值,以用作来自存储容器j的一个或多个新缓存块的缓存命中的期望数的估计。
在步骤602中,计算每一个存储容器j的估计的先验的缓存未中成本(即,估计的缓存未中成本)。在本发明的一个或多个实施例中,作为来计算估计的先验的缓存未中成本其中,Lj是存储容器j的延迟。延迟(Lj)可以是容器j的存储设备访问、检索,和/或修改存储容器j内的存储块的值所需的时间。估计的先验的缓存未中成本可以基于延迟和/或命中的期望数(E[Nj])的任何数学公式(包括所示出的公式的任何线性和/或指数变体)计算。
在步骤604中,识别估计的先验的缓存未中成本之中的最大估计的先验的缓存未中成本在本发明的一个或多个实施例中,缓存管理器(例如,图1A的缓存管理器(140),上文所讨论的)可以随着缓存队列变化而跟踪最大估计的先验的缓存未中成本和/或周期性地迭代存储容器,以便根据需要识别最大估计的先验的缓存未中成本
图7示出了根据本发明的一个或多个实施例的流程图。可以使用图7所示出的流程图的步骤来以概率的方式将缓存块插入到缓存队列中。本领域的技术人员在阅读此详细描述之后将认识到,图7所示出的步骤的顺序和数量可以在本发明的各实施例之间不同。进一步地,图7中的一个或多个步骤可以是可选的,和/或可以以不同的顺序的任何组合来执行。
在步骤700中,识别与缓存未中相关联的存储块b。缓存未中可以是需要和/或启动对存储块b的访问的任何类型的缓存未中(例如,缓存读取未中、缓存写入未中)。存储块可以在缓存未中之后立即被访问和/或在任何未来的时间被访问(例如,响应于周期性的回写请求)。
在步骤704中,判断来自存储块b的存储容器j的新缓存块的到达速率(λj)是否小于或等于来自具有最大估计的缓存未中成本的存储容器的新缓存块的到达速率。存储容器的新缓存块的到达速率可以是每个给定时间段(例如,100毫秒)被插入到缓存队列中的对应于存储容器的估计的和/或计算出的新缓存块数量或缓存操作数量(例如,200次缓存块插入)。根据本发明的一个或多个实施例,具有最大估计的缓存未中成本的存储容器可以指任何存储容器组之中的具有最大估计的缓存未中成本的任何存储容器(例如,最大估计的先验的缓存未中成本,如图6所示,如上文所讨论的)。在本发明的一个或多个实施例中,如果来自存储容器j的新缓存块的到达速率(λj)(即,对应于存储容器j)小于或等于来自具有最大估计的缓存未中成本的存储容器的新缓存块的到达速率,则过程前进到步骤706。在本发明的一个或多个实施例中,如果来自存储容器j的新缓存块的到达速率(λj)(即,对应于存储容器j)大于来自具有最大估计的缓存未中成本的存储容器的新缓存块的到达速率,则过程前进到步骤708。
在步骤706中,基于估计的缓存未中成本计算存储容器j的插入概率。在本发明的一个或多个实施例中,作为来计算插入概率。在本发明的一个或多个实施例中,用于计算插入概率的公式不基于存储容器j的新缓存块的到达速率。可以使用其中Pj是的递增函数的任何公式来计算估计的访问速率(包括所示出的公式的任何线性和/或指数变体)。
在步骤708中,基于估计的缓存未中成本和来自存储容器j的新缓存块的到达速率(λj)),计算存储容器j的插入概率。在本发明的一个或多个实施例中,作为来计算插入概率,其中,是一组存储容器之中的最高到达速率。在本发明的一个或多个实施例中,该组存储容器包括具有缓存队列中的一个或多个缓存块或缓存队列的一段的所有存储容器。可作为替代地,在本发明的一个或多个实施例中,该组存储容器包括被缓存管理器(例如,图1A的缓存管理器(140),上文所讨论的)跟踪的所有存储容器。在本发明的一个或多个实施例中,用于计算插入概率的公式基于存储容器j的新缓存块的到达速率。可以使用其中Pj是的递增函数的任何公式来计算插入概率(包括所示出的公式的任何线性和/或指数变体)。
在步骤710中,从均匀分布中随机地选择概率数。在本发明的一个或多个实施例中,均匀分布的范围与在步骤706和/或步骤708中计算出的插入概率(Pj)的范围相同。可以从任意数量的足够随机的过程中获取概率数,这些过程产生随机分布(在给定容差内)。可以使用任何一种随机数生成方法。出于公开的目的,随机选择可以是指能够产生适于用于概率分析中的可能的结果的范围的任何方法。在不偏离本发明的范围的情况下,如此处所使用的随机数生成和随机数可以分别包括伪随机数生成和伪随机数。
在步骤712中,判断插入概率(Pj)是否大于或等于概率数。如果插入概率大于或等于概率数,则过程前进到步骤714。如果不,则过程前进到步骤716。例如,如果给定两个数字的0到100的可能范围,如果插入概率是45,概率数是40,则过程前进到步骤714。在本发明的一个或多个实施例中,步骤706、708、710,以及712可以使用将插入概率与从均匀分布中选择的随机数进行比较的任何方法。因此,在本发明的一个或多个实施例中,如果给定缓存块b具有较高的插入概率,它更有可能被插入。
在步骤714中,将新缓存块插入到与缓存未中相关联的存储块(b)的缓存队列中。因此,存储块b的值存储在对应于缓存块的存储单元内。在本发明的一个或多个实施例中,在插入新缓存块之前,从缓存队列中清除缓存块,一个或多个现有的缓存块在缓存队列内回收利用。
在步骤716中,响应于缓存未中,没有新缓存块被插入到缓存队列中。因此,在本发明的一个或多个实施例中,在没有对缓存或缓存队列的修改的情况下,访问对应于缓存未中的存储块(b)。
图9示出了根据本发明的一个或多个实施例的流程图。可以使用图9所示出的流程图的步骤来计算将缓存块插入到缓存队列中的估计的缓存未中成本阈值。本领域的技术人员在阅读此详细描述之后将认识到,图9所示出的步骤的顺序和数量可以在本发明的各实施例之间不同。进一步地,图9中的一个或多个步骤可以是可选的,和/或可以以不同的顺序的任何组合来执行。
在步骤900中,对于从缓存队列中清除的预定义数量(T)的旧缓存块中的每一个,估计的旧的缓存未中成本存储在一组估计的旧缓存未中成本中。预定义的数量(T)可以与在其上维护容器统计的事物的指定数量相同,和/或可以是授权的用户或通信地连接到缓存管理器(例如,上文所讨论的,图1A的缓存管理器(140))的实体所定义的任何数量。在本发明的一个或多个实施例中,在过去的缓存操作的移动窗口(即,在每一个缓存操作之后更新)上计算估计的旧缓存未中成本的组。可以使用如此处所公开的任何过程和/或用于计算估计的缓存未中成本的公式来计算估计的旧缓存未中成本。在本发明的一个或多个实施例中,使用图2的过程(上文所讨论的)来计算估计的旧缓存未中成本。计算可以同步地或异步地进行,并可以在检测到缓存未中之前和/或在检测到缓存未中之后进行。估计的缓存未中成本的组可以存储在对应于清除的旧缓存块的组的一组缓存块对象内和/或对应于旧缓存块的一个或多个数据结构内。
在步骤902中,识别估计的旧缓存未中成本组之中的最大估计的旧缓存未中成本(CSOldMax)。在本发明的一个或多个实施例中,识别最大的估计的旧缓存未中成本(CSOldMax)可以同步地或异步地进行,并可以在检测到缓存未中之前和/或在检测到缓存未中之后进行。
在步骤904中,计算估计的旧缓存未中成本组的标准偏差(σ)。标准偏差可以是估计的旧缓存未中成本组的方差的平方根。在本发明的一个或多个实施例中,计算标准偏差按如下方式来执行:
1)计算估计的旧缓存未中成本组的平均估计的旧缓存未中成本。
2)对于每一个估计的旧缓存未中成本,通过从估计的旧的缓存未中成本减去平均估计的旧的缓存未中成本,来计算与平均值的偏差。
3)通过对偏离进行平方(即,将每一个偏离乘以其本身)来计算一组平方。
4)计算该组平方的总和。
5)通过将该组平方的总和除以估计的旧缓存未中成本组的基数减去一,来计算估计的旧缓存未中成本组的方差。
6)通过取该方差的平方根,来计算标准偏差。
在不偏离本发明的范围的情况下,可以使用其他技术来计算标准偏差。
在步骤906中,计算用于将缓存块插入到在遮蔽列表中具有条目的存储块的缓存队列中的估计的缓存未中成本阈值(CT)。在本发明的一个或多个实施例中,可以使用最大估计的旧缓存未中成本(CSOldMax)和/或标准偏差的任何公式来计算估计的缓存未中成本阈值(CT)。在本发明的一个或多个实施例中,估计的缓存未中成本阈值被计算为:CT=CSOldMax+σ。可以使用其中CT是CSOldMax的递增函数的任何公式来计算估计的缓存未中成本阈值(CT)(包括所示出的公式的任何线性和/或指数变体)。
图10示出了根据本发明的一个或多个实施例的流程图。图10所示出的流程图的步骤可以被用来将缓存块插入到缓存队列中,并将值插入到在遮蔽列表中具有条目的存储块的缓存的存储单元中。本领域的技术人员在阅读此详细描述之后将认识到,图10所示出的步骤的顺序和数量可以在本发明的各实施例之间不同。进一步地,图10中的一个或多个步骤可以是可选的,和/或可以以不同的顺序的任何组合来执行。
在步骤1000中,检测在遮蔽列表(例如,图8A的旧块遮蔽列表(849)或图8B的新块遮蔽列表(899),上文所讨论的)中具有对应的条目的存储块b的缓存未中。在本发明的一个或多个实施例中,存储块b在缓存内没有对应的存储单元,因此是非缓存的。因此,缓存未中可能需要对存储设备上的存储块b进行磁盘访问。在本发明的一个或多个实施例中,存储块b的缓存块条目是存储在旧块遮蔽列表内的旧缓存块条目。存储块b的缓存块条目具有大于2的累积的数量的访问(包括导致缓存块先前插入到缓存队列的由缓存未中产生的访问)。在本发明的一个或多个实施例中,存储块b的缓存块条目是存储在旧块遮蔽列表内的新缓存块条目,并具有等于2的累积数量的访问(包括导致缓存块先前插入到缓存队列的由缓存未中产生的访问)。根据本发明的一个或多个实施例,由缓存未中产生的访问可以在缓存未中之后的任何时间执行,并可以被延迟,直到一个或多个缓存操作执行之后。
在步骤1002中,计算存储块b的估计的缓存未中成本(Cb)。可以根据如此处所公开的用于计算估计的缓存未中成本的方法中的一个或多个来计算此估计的缓存未中成本(例如,图2和3的过程,下面所讨论的)。估计的缓存未中成本还可以从在对应于存储块b的缓存块从缓存队列中清除之前发生的在先计算存储。在本发明的一个或多个实施例中,估计的缓存未中成本(Cb)是为存储块(b)的存储容器计算的值,并是对于存储容器内的所有存储块的一致值。在本发明的一个或多个实施例中,对于在遮蔽列表中具有条目的存储块b,该条目的累积的访问的数量增大。在本发明的一个或多个实施例中,对于在新块遮蔽列表中具有条目的存储块b,从新块遮蔽列表中清除该条目,并插入到旧块遮蔽列表中。
在步骤1004中,判断估计的缓存未中成本(Cb)是否超过估计的缓存未中成本阈值(CT)。如果估计的缓存未中成本(Cb)超过估计的缓存未中成本阈值(CT),则该过程前进到步骤1006。如果估计的缓存未中成本(Cb)不超过估计的缓存未中成本阈值(CT),则该过程结束。
在步骤1006中,对应于存储块b的缓存块被插入到缓存队列中。在本发明的一个或多个实施例中,缓存块被插入在缓存队列的保护段的开始处,并从遮蔽列表中删除对应的条目。在本发明的一个或多个实施例中,缓存块在从缓存队列中的任意数量的清除之间从存储块b的遮蔽列表条目继承和/或维护一个或多个缓存块属性,只要被清除的缓存块的遮蔽列表中存在条目。在本发明的一个或多个实施例中,对于存储块b,如果缓存块在缓存队列内不存在或者如果在任何给定时间在一个或多个遮蔽列表内不存在条目,则缓存块属性被复位和/或忘记。
在本发明的一个或多个实施例中,一个或多个遮蔽列表在缓存队列的预热期完成之后激活。预热期可以是当缓存队列包含预定义百分比/数量的旧缓存块和/或当为预定义数量的存储容器识别了预定义数量的最频繁地被访问的旧缓存块时结束的时间段。
在本发明的一个或多个实施例中,在激活遮蔽列表之后,在将任何缓存块条目插入到遮蔽列表之前执行预定义数量(T)的缓存操作。预定义的数量可以与在其上维护容器统计的事务的指定数量相同,和/或可以是被授权的用户或通信地连接到缓存管理器(140)的实体所定义的任何数量。
在本发明的一个或多个实施例中,当向一个或多个遮蔽列表的插入开始时,估计的缓存未中成本、标准偏差,和/或遮蔽列表中的缓存块条目的相关性质在每个事务之后和/或在预定义数量的事务之后更新。因此,可以使用事务的移动窗口来周期性地计算和/或刷新这些值。
在本发明的一个或多个实施例中,在遮蔽列表(例如,图8B的新块遮蔽列表(899),上文所讨论的)内具有缓存块条目的存储块必须在被重插入到缓存中之前被访问至少两次(在遮蔽列表中具有条目时)。因此,在本发明的一个或多个实施例中,在当在遮蔽列表中初始访问之后,缓存块条目保持在遮蔽列表中,其访问数量增加。在本发明的一个或多个实施例中,在当在新块遮蔽列表(例如,图8B的新块遮蔽列表(899),上文所讨论的)中初始访问之后,从新块遮蔽列表中删除缓存块条目,并插入到旧块遮蔽列表(例如,图8A的旧块遮蔽列表(849),上文所讨论的)的开始处。因此,在本发明的一个或多个实施例中,为了使在遮蔽列表中具有缓存块条目的存储块被重插入到缓存中,遮蔽列表中的存储块的条目必须自从插入到缓存以来具有3次的访问总数。
在一个示例中,缓存管理器(例如,图1A的缓存管理器(140),上文所讨论的)检测对应于存储块z的读取缓存未中。在此示例中,旧块遮蔽列表和新块遮蔽列表操作地连接到缓存队列。旧块遮蔽列表存储从缓存队列中清除的旧缓存块的条目,新块遮蔽列表存储从缓存队列中清除的新缓存块的条目。响应于缓存未中,缓存管理器搜索对应于存储块的条目的两种遮蔽列表。在对应于存储块的遮蔽列表内没有发现条目。因此,存储块被访问,值被读取。
继续该示例,识别具有缓存队列中的至少一个缓存块的一组存储容器之中的存储块z的存储容器y。对于该组之中的每一个存储容器j,估计在对缓存队列的第一次通过过程中对来自存储容器j的新缓存块的缓存命中的期望数(E[Nj])。E[Nj]可以作为在对缓存队列的试用段的第一次通过过程中由新缓存块接收到的缓存命中的平均数来估计。计算被插入到缓存队列中的最后10个缓存块的缓存命中的平均数(对于该组的每一个容器的)。对于存储容器y,缓存命中的平均数被计算为1.25。对于该组的每一个存储容器j,作为来计算估计的先验的缓存未中成本,其中,Lj是0.5毫秒的延迟值。存储容器y的估计的先验的缓存未中被计算为还识别该组之中的最大估计的先验的缓存未中成本对于该组存储容器的每一个存储容器j,还计算新缓存块的到达速率。作为每秒钟到达缓存队列的容器的新缓存块的数量来计算到达速率。存储容器y的到达速率(λy)等于4。还识别具有的存储容器的到达速率估计的先验的缓存未中成本和到达速率被缓存管理器存储在容器统计对象内。
接下来,在该示例中,缓存管理器从均匀分布生成零和1之间的随机数。随机数是0.142。缓存管理器创建用于插入到存储块z的缓存队列中的新缓存块J,因为插入概率(Pj=0.176)大于或等于随机数(0.142)。
继续该示例,图5A示出了根据本发明的一个或多个实施例的具有保护段(520A)、试用段(530A),以及受害者段(540A)的示例缓存队列(599A)。缓存队列还包括一组旧缓存块(500A、502A、504A、508A、512A、516A)以及一组新缓存块(506A、510A、514A)。在所示出的示例中,缓存队列(599A)必须清除一个缓存块,以便插入存储块z的新缓存块。为了这样做,操作地连接到缓存的缓存管理器(例如,图1的缓存管理器140,上文所讨论的)计算受害者段(540A)中的每一个旧缓存块(512A、516A)的估计的缓存未中成本。
通过首先作为rb=nb/tb来计算每一个旧缓存块b的估计的访问速率(rb)来计算旧缓存块的估计的缓存未中成本,其中,nb是在对缓存队列的当前通过过程中由旧缓存块b接收到的命中的数量,tb是自从旧缓存块b被插入到缓存队列中以来消逝的时间。基于估计的访问速率,缓存管理器作为Cb,j=Lj*rb来计算估计的缓存未中成本,其中,Lj是旧缓存块b的存储容器j的延迟(以毫秒为单位的时间)。在不偏离本发明的范围的情况下,可以使用其他时标。在受害者段内,作为rI=nI/tI=4/1=4来计算旧缓存块I(516A)的估计的访问速率。作为CI,n=Ln*rI=3*4=12来计算旧缓存块I(516A)的估计的缓存未中成本。对于旧缓存块G(512A)(受害者段中的仅有的其他旧缓存块)执行类似的计算。
继续该示例,缓存管理器在检测到在受害者段(540A)内存在新缓存块(510A,514A)之后,开始顺序地检查受害者段中的新的缓存块,从缓存队列的末端倒退工作。以此顺序,第一新缓存块被识别为新缓存块H(514A)。首先,缓存管理器判断新缓存块H(514A)是否已经对试用段作出至少两次通过。
由于此条件不被满足(即,新缓存块H(514A)在第一次通过内(NH=1)),因此,缓存管理器前进以计算新缓存块H(514A)的估计的缓存未中成本(Cm)。新块H的存储容器(m)具有估计的访问速率5(Rm=5)。缓存管理器通过跟踪在它们的对试用段的第一次通过过程中接收到零个缓存命中并随后在它们的第二次通过过程中接收到至少一个缓存命中的存储容器m中的“回收利用的”新缓存块的比率,来计算前一时间间隔内的此数字。在此示例中,检测到比率是0.5。然后,使用此比率,作为Rm=P(A|Bm)/Tm=0.5/10=5来计算来自存储容器m的新缓存块的估计的访问速率,其中,Tm是在对试用段的第二次通过过程中接收到缓存命中之前由来自存储容器m的新缓存块在缓存中花费的平均时间(例如,以毫秒为单位)。最后,作为Cm=Lm*Rm=2*5=10来计算新缓存块H的存储容器M的估计的缓存未中成本,其中,Lm是存储容器m的延迟,2毫秒。
此时,在本发明的一个或多个实施例中,缓存管理器将受害者段中的旧缓存块的最低估计的缓存未中成本识别为12(旧缓存块G(512A)和I(516A)的估计的缓存未中成本相等)。然后,缓存管理器执行检查以判断新缓存块H(514A)是否在对缓存队列的第一次通过内,并具有小于受害者段(540A)中的旧缓存块之中的最低的估计的缓存未中成本的估计的缓存未中成本。由于两个条件都被满足(NH=1和Cm<12),因此,缓存管理器前进以计算新缓存块H(514A)的删除概率(Pm)。为了做到这一点,计算具有受害者段中的新缓存块的所有存储容器的估计的缓存未中成本。为了做到这一点,对于受害者段(540A)内仅有的剩余新缓存块F(510A)执行上述过程,相应地,由缓存管理器计算新缓存块F(510A)的所有对应的值以及其对应的存储容器j(nF=0,NF=1,Rj=2,Lj=3,Cj=6)。返回到对新缓存块H(514A)的删除概率(Pm)的计算,作为来计算缩放因子,其中,是具有受害者段中的一个或多个新缓存块的存储容器之中的最低估计的缓存未中成本。因此,计算缩放因子为通过使用缩放因子,作为来计算新缓存块H(514A)的删除概率(Pm)。
接下来,缓存管理器从均匀分布生成零和1之间的随机数。随机数是0.533。缓存管理器确定不从缓存队列(599A)中清除新缓存块H(514A),因为删除概率(Pm=0.375)不大于或等于随机数(0.533)。
然后,缓存管理器通过判断新缓存块F(510A)是否对试用段作出至少两次通过来继续对缓存队列(599A)中的新缓存块的连续分析。由于此条件不被满足(即,新缓存块F(510A)在第一次通过内(NF=1)),因此,缓存管理器前进以计算新缓存块F(510A)的删除概率Pj为缓存管理器确定,新缓存块F(510A)的删除概率(Pj=0.625)大于随机数(0.533),并因此从缓存队列(599A)清除新缓存块F(510A)。
继续该示例,缓存管理器确定被清除的新缓存块F在清除之前没有完成对缓存队列的两次或更多次通过。因此,缓存管理器将缓存块条目F插入到具有缓存块F的存储块索引、缓存块F的存储容器的存储容器索引、对缓存块F的总访问数,以及对于缓存块F的第一次访问的时间的新块遮蔽列表的开始处。为了创建用于将缓存块条目F插入到新块遮蔽列表中的空间,新块遮蔽列表的末端处的缓存块条目被清除,列表中的所有其他条目向下移动(即,向末端移动)。
图5B示出了根据本发明的一个或多个实施例的具有保护段(520B)、试用段(530B),以及受害者段(540B)的示例缓存队列(599B)。该缓存队列包括一组旧缓存块(500B、502B、504B、508B、512B、516B)以及一组新缓存块(518B、506B、514B)。在上文所描述的示例的继续中(参考图5A),图5B描绘了在新缓存块J(518B)(上文所讨论的)插入到试用段(530B)的顶部之后缓存队列(599B)的状态。在试用段(530B)内并在被清除的缓存块之前到来(即,更靠近缓存队列(599B)的开始处)的那些现有的缓存块被移向缓存队列(599B)的末端。转移的缓存块是新缓存块D(506B)和旧缓存块E(508B)。此描绘示出了在执行回收利用操作之前的缓存队列(599B),回收利用操作是在插入新块之后执行的。
图5C示出了根据本发明的一个或多个实施例的具有保护段(520C)、试用段(530C),以及受害者段(540C)的示例缓存队列(599C)。缓存队列包括一组旧缓存块(500C、502C、504C、508C、512C、516C))以及一组新缓存块(518C、506C、514C)。在上文所描述的示例的继续中(参考图5A和5B),图5C描绘了在执行回收利用操作之后缓存队列(599C)的状态。在插入新缓存块J(518C)之后,基于在对缓存队列(599C)的当前通过过程中接收到的命中的数量,回收利用在受害者段(530C)内并在最后一个被清除的缓存块之后到来(即,更靠近缓存队列(599C)的末尾)的那些现有的缓存块。在它们的对缓存队列(599C)的当前通过过程中接收到零个缓存命中的那些缓存块被回收利用到试用段(530C)的顶部,而在它们的当前通过过程中接收到至少一个缓存命中的那些缓存块被回收利用到保护段(520B)的顶部。因此,旧缓存块I(516C)被首先回收利用到保护段的顶部,因为nI=4<0。接下来,新缓存块H(514C)被回收利用到试用段的顶部,因为nH=0。最后,旧缓存块G(512C)被回收利用到保护段的顶部,因为nG=4<0。每当缓存块被回收利用时,缓存管理器将现有的缓存块推向缓存队列的末端,以便为试用段(530B)或保护段(520B)的顶部处的回收利用的块腾出空间。
本发明的各实施例可以在几乎任何类型的计算机上实现,不管所使用的平台如何。例如,如图11所示,计算机系统(1100)包括一个或多个处理器(1102)(诸如中央处理单元(CPU)、集成电路、硬件处理器等等)、相关联的存储器(1104)(例如,随机存取存储器(RAM)、高速缓冲存储器、闪存等等)、存储设备(1106)(例如,硬盘、诸如光盘驱动器或数字视频盘(DVD)驱动器之类的光驱动器,闪存棒等等),以及当今的计算机典型的很多其他元件以及功能(未示出)。计算机系统(1100)还可以包括诸如键盘(1108)、鼠标(1110)或麦克风(未示出)之类的输入装置。进一步地,计算机系统(1100)可以包括诸如监视器(1112)(例如,液晶显示器(LCD)、等离子体显示器,或阴极射线管(CRT)监视器)之类的输出装置。计算机系统(1100)可以通过网络接口连接(未示出)连接到网络(1114)(例如,局域网(LAN)、诸如因特网之类的广域网(WAN),或任何其他类型的网络)。本领域的技术人员将认识到,存在许多不同类型的计算机系统,如前所述的输入和输出装置可以呈现其他形式。一般而言,计算机系统(1100)包括实施本发明的各实施例所需的至少最小的处理、输入,和/或输出装置。
此外,在本发明的一个或多个实施例中,如前所述的计算机系统(1100)的一个或多个元件可以位于远程位置,并通过网络连接到其他元件。此外,本发明的各实施例可以在具有多个节点的分布式系统上实现,其中,本发明的每一部分(例如,缓存管理器(140)、缓存(100)、存储设备(110)等等)都可以位于分布式系统内的不同的节点上。在本发明的一个实施例中,节点对应于计算机系统。可作为替代地,节点可以对应于带有相关联的物理存储器的处理器。节点可以作为替代地对应于带有共享存储器和/或资源的处理器或处理器的微核。此外,执行本发明的各实施例的计算机可读取的程序代码形式的软件指令可以临时或永久地存储在诸如光盘(CD)、磁盘、磁带,存储器之类的非瞬时的计算机可读存储介质上,或任何其他有形的计算机可读取的存储设备中。
本发明的一个或多个实施例具有下列优点中的一个或多个。通过收集存储设备中的存储容器的容器统计,可以基于存储容器内的附近的存储块的历史数据来更准确地估计缓存未中成本。
本发明的一个或多个实施例具有下列优点中的一个或多个。通过以概率的方式从缓存中删除缓存的项,可以减少存储器访问的数量,并降低与缓存未中相关联的总成本。另外,对缓存项的概率性的删除可提供对工作负荷变化的更大的适应性。
本发明的一个或多个实施例具有下列优点中的一个或多个。通过以概率的方式向缓存中插入项,可以减少存储器访问的数量,并降低与缓存未中相关联的总成本。另外,缓存项的概率性的插入可提供对工作负荷变化的更大的适应性。
下列示例数据示出了一个或多个实施例中的本发明的一个或多个优点。在各示例中,分析缓存替换(ANCR)算法是指通过图3、4A以及4B所描述的过程。也在各示例中,带有遮蔽列表的分析缓存替换(ANCR-S)算法是指包括维护旧块遮蔽列表和新块遮蔽列表的功能的ANCR算法。
在各示例中,使用缓存模拟器来比较ANCR和ANCR-S算法与最近最少使用(LRU)、分段的最近最少使用的(SLRU)、2Q,以及自适应替换缓存(ARC)算法。对于N个块的缓存大小,SLRU和ANCR的试用段大小是N/2。ANCR的统计收集窗口T被设置为等于N,受害者段大小K被设置为等于N/100。ANCR-S算法的旧块遮蔽列表的大小被设置为缓存大小的25%,新块遮蔽列表的大小被设置为缓存大小的75%。
单个容器示例
第一示例致力于只使用一个容器的简单情况。此示例的用途是演示ANCR算法不需要多个异质容器存在,以便实现比一个或多个现有的缓存替换算法较小的缓存未中比率。
继续第一示例,此示例中的第一工作负荷由模拟的TPC-C“New-Order”事务构成。TPC-C是行业标准联机事务处理(OLTP)基准,该基准模拟其中用户群体对数据库执行事务的完整的计算环境。根据TPC-C规范,被每一个New-Order事务访问的项的数量是范围[5,15]中的随机地选择的整数。数据库中有100000项,使用下列过程来选择每一个访问的项目号。首先,从[1,8191]上的均匀分布提取随机整数A,从[1,100000]上的均匀分布提取另一个整数B。然后,这些整数被转换为二进制格式,通过对A和B的对应的比特执行逐比特逻辑OR操作来获得第三整数C。例如,如果A的第一比特是0,B的第一比特是1,那么,C的第一比特是1。如果A的第二比特是1并且B的第二比特是1,那么,C的第二比特C是1。如果A的第三比特是0并且B的第三比特是0,那么,C的第三比特C是0,等等。最后的项目号等于C以100000为模加1。为了提取对于我们的示例不重要的TPC-C的细节,我们假设每一个项都对应于一块数据,因此,我们具有带有使用上面所指定的概率分布访问的100000个块的表。
继续第一示例,在模拟运行过程中处理的事务的总数是10N。对于8N个事务,缓存被预热,然后,最后的2N个事务被视为评估时间段,在该时间段内,计算缓存未中比率(导致缓存未中的所访问的TPC-C项的比率)。执行每一个模拟运行的足够的重复,以便任何两种算法的缓存未中比率中的差异将在统计上有显著意义。
对于缓存大小N的不同的值,此示例的结果被呈现于表1(下面)中。评估2Q算法的两个版本:将旧队列设置为等于缓存大小的0.5的2Q(0.5)和将旧队列设置为等于缓存大小的0.95的2Q(0.95)。作为缓存大小的比率的旧队列的长度是2Q算法的关键参数,而表1中的结果示出了此参数大大地影响2Q算法的性能。
算法 | N=5,000 | N=10,000 | N=20,000 | N=40,000 |
LRU | 0.581 | 0.407 | 0.227 | 0.085 |
2Q(0.5) | 0.533 | 0.386 | 0.238 | 0.113 |
2Q(0.95) | 0.488 | 0.315 | 0.165 | 0.059 |
SLRU | 0.501 | 0.342 | 0.187 | 0.065 |
ARC | 0.482 | 0.339 | 0.199 | 0.075 |
ANCR | 0.453 | 0.306 | 0.164 | 0.057 |
ANCR-S | 0.433 | 0.294 | 0.157 | 0.054 |
表1:模拟的TPC-C New-Order事务的缓存未中比
如表1所示,ANCR和ANCR-S算法一致地获得测试的算法的最小的缓存未中比率。
多容器示例
在第二示例中,TPC-C项目数据库被被分区为保存下列项目号的范围的5个相等的容器:1-20000、20001-40000、40001-60000、60001-80000以及80001-100000。不同的延迟被指定到不同的容器,以看看它们将如何影响先前考虑的缓存替换算法的相对性能。某些示例性存储设备中的访问延迟从对于闪存盘的0.1ms到对于84%的所加载的SATA磁盘(其具有服务速率μ=100IOPS、到达速率λ=84IOPS,以及延迟1/(μ-λ)=0.0625秒)的62.5ms。为了涵盖此延迟范围,此组示例中的容器j的延迟是25-j。
继续第二示例,总的缓存未中成本被用作用于在存在不同的容器延迟的情况下评估缓存替换算法的度量。它被计算为当访问存储设备上的未中的块时产生的在所有缓存未中内的延迟的总和。表2(下面)中的结果示出了当考虑的缓存替换算法的排序与表1中的相同时,它们的缓存未中成本之间的差异大得多,因为不缓存来自不同的容器的块的成本显著地变化。ANCR和ANCR-S显式地估计不缓存每个块的成本,因此,它们能够朝向带有较高延迟的容器偏移缓存的块的分布,而其他算法却不能那么做。
算法 | N=5,000 | N=10,000 | N=20,000 | N=40,000 |
LRU | 11.4 | 16.2 | 18.3 | 12.9 |
2Q(0.5) | 10.5 | 15.4 | 19.3 | 18.3 |
2Q(0.95) | 7.7 | 10.1 | 10.8 | 7.6 |
SLRU | 9.9 | 13.7 | 15.3 | 10.4 |
ARC | 9.6 | 13.6 | 16.2 | 12.1 |
ANCR | 6.5 | 9.0 | 10.7 | 7.2 |
ANCR-S | 6.2 | 8.3 | 8.7 | 4.8 |
表2:当项目数据库被分区为带有不同的延迟的容器时,模拟的TPCC New-Order事务的以百万为单位的缓存未中成本。
继续第二示例,请注意,表2中的列2比列1具有更大的缓存未中成本,因为评价期等于2N,因此,在N=10000的评价期比N=5000的评价期发生更多未中。最终,对于N=40000,缓存变得如此大,以致于它覆盖几乎所有的被频繁地访问的块,尽管在评价期处理更多事务,但是,缓存未中的实际数量大大地降低,这说明了为什么列4比列3具有较小的缓存未中成本。
尽管是参考数量有限的实施例来描述本发明的,但是,那些本领域技术人员在了解本发明的优点之后,将理解也可以设计出不偏离如此处所公开的本发明的范围的其他实施例。相应地,本发明的范围只能由所附的权利要求来限制。
Claims (6)
1.一种将缓存块插入到缓存队列中的方法,包括:
计算所述缓存队列内的缓存块的估计的缓存未中成本;
从所述缓存队列中清除所述缓存块;
将对应于所述缓存块的存储块的条目插入到对应于所述缓存队列的遮蔽列表中;
由处理器检测引用所述存储块的所述缓存队列的缓存未中;
响应于所述缓存未中,访问所述遮蔽列表内的所述条目;
基于从所述缓存队列中清除的缓存块的多个估计的旧缓存未中成本的数学公式,计算估计的缓存未中成本阈值;以及
响应于所述估计的缓存未中成本超过所述估计的缓存未中成本阈值,将对应于所述存储块的新缓存块插入到所述缓存队列中。
2.如权利要求1所述的方法,其中,计算所述估计的缓存未中成本阈值包括:
计算所述多个估计的旧缓存未中成本;
识别所述多个估计的旧缓存未中成本中的最大估计的旧缓存未中成本;
计算所述多个估计的旧缓存未中成本的标准偏差;以及
基于所述最大估计的旧缓存未中成本和所述标准偏差,来计算所述估计的缓存未中成本阈值。
3.如权利要求1所述的方法,其中,计算所述缓存块的所述估计的缓存未中成本包括:
对于所述缓存块,基于自从插入到所述缓存队列中以来接收到的缓存命中的数量除以自从插入到所述缓存队列中以来消逝的时间,来计算估计的访问速率;以及
基于所述缓存块的延迟乘以所述估计的访问速率,来计算所述估计的缓存未中成本。
4.一种将缓存块插入到缓存队列中的系统,包括:
用于计算所述缓存队列内的缓存块的估计的缓存未中成本的装置;
用于从所述缓存队列中清除所述缓存块的装置;
用于将对应于所述缓存块的存储块的条目插入到对应于所述缓存队列的遮蔽列表中的装置;
用于由处理器检测引用所述存储块的所述缓存队列的缓存未中的装置;
用于响应于所述缓存未中,访问所述遮蔽列表内的所述条目的装置;
用于基于从所述缓存队列中清除的缓存块的多个估计的旧缓存未中成本的数学公式,计算估计的缓存未中成本阈值的装置;以及
用于响应于所述估计的缓存未中成本超过所述估计的缓存未中成本阈值,将对应于所述存储块的新缓存块插入到所述缓存队列中的装置。
5.如权利要求4所述的系统,其中,所述用于计算所述估计的缓存未中成本阈值的装置包括:
用于计算所述多个估计的旧缓存未中成本的装置;
用于识别所述多个估计的旧缓存未中成本中的最大估计的旧缓存未中成本的装置;
用于计算所述多个估计的旧缓存未中成本的标准偏差的装置;以及
用于基于所述最大估计的旧缓存未中成本和所述标准偏差,来计算所述估计的缓存未中成本阈值的装置。
6.如权利要求4所述的系统,其中,用于计算所述缓存块的所述估计的缓存未中成本的装置包括:
用于对于所述缓存块,基于自从插入到所述缓存队列中以来接收到的缓存命中的数量除以自从插入到所述缓存队列中以来消逝的时间,来计算估计的访问速率的装置;以及
用于基于所述缓存块的延迟乘以所述估计的访问速率,来计算所述估计的缓存未中成本的装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37878010P | 2010-08-31 | 2010-08-31 | |
US61/378,780 | 2010-08-31 | ||
US13/007,553 | 2011-01-14 | ||
US13/007,553 US8601217B2 (en) | 2010-08-31 | 2011-01-14 | Method and system for inserting cache blocks |
CN201180049886.3A CN103154912B (zh) | 2010-08-31 | 2011-08-31 | 用于插入缓存块的方法和系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180049886.3A Division CN103154912B (zh) | 2010-08-31 | 2011-08-31 | 用于插入缓存块的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104850510A CN104850510A (zh) | 2015-08-19 |
CN104850510B true CN104850510B (zh) | 2018-09-04 |
Family
ID=44653549
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180049892.9A Active CN103168293B (zh) | 2010-08-31 | 2011-08-31 | 用于删除缓存块的方法和系统 |
CN201510301980.3A Active CN104850510B (zh) | 2010-08-31 | 2011-08-31 | 用于插入缓存块的方法和系统 |
CN201180049886.3A Active CN103154912B (zh) | 2010-08-31 | 2011-08-31 | 用于插入缓存块的方法和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180049892.9A Active CN103168293B (zh) | 2010-08-31 | 2011-08-31 | 用于删除缓存块的方法和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180049886.3A Active CN103154912B (zh) | 2010-08-31 | 2011-08-31 | 用于插入缓存块的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8601216B2 (zh) |
EP (3) | EP2612249B1 (zh) |
CN (3) | CN103168293B (zh) |
WO (2) | WO2012030903A2 (zh) |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7707224B2 (en) | 2006-11-03 | 2010-04-27 | Google Inc. | Blocking of unlicensed audio content in video files on a video hosting website |
US8839275B1 (en) | 2011-06-06 | 2014-09-16 | Proximal Data, Inc. | Method for intercepting input/output requests and responses |
US8621157B2 (en) | 2011-06-13 | 2013-12-31 | Advanced Micro Devices, Inc. | Cache prefetching from non-uniform memories |
US8930330B1 (en) | 2011-06-27 | 2015-01-06 | Amazon Technologies, Inc. | Validation of log formats |
US8732401B2 (en) | 2011-07-07 | 2014-05-20 | Atlantis Computing, Inc. | Method and apparatus for cache replacement using a catalog |
EP2811408A4 (en) * | 2012-01-30 | 2015-01-21 | Fujitsu Ltd | DATA MANAGEMENT DEVICE, DATA MANAGEMENT METHOD, DATA MANAGEMENT PROGRAM, AND INFORMATION PROCESSING DEVICE |
US9372810B2 (en) * | 2012-04-27 | 2016-06-21 | Hewlett Packard Enterprise Development Lp | Collaborative caching |
US9442859B1 (en) | 2012-06-17 | 2016-09-13 | Samsung Electronics Co., Ltd. | Method for asynchronous population of data caches used with mass storage devices |
US9104552B1 (en) | 2012-06-23 | 2015-08-11 | Samsung Electronics Co., Ltd. | Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices |
US8880806B2 (en) * | 2012-07-27 | 2014-11-04 | International Business Machines Corporation | Randomized page weights for optimizing buffer pool page reuse |
US9424202B2 (en) * | 2012-11-19 | 2016-08-23 | Smartfocus Holdings Limited | Database search facility |
US9317435B1 (en) * | 2012-12-18 | 2016-04-19 | Netapp, Inc. | System and method for an efficient cache warm-up |
US9069472B2 (en) | 2012-12-21 | 2015-06-30 | Atlantis Computing, Inc. | Method for dispersing and collating I/O's from virtual machines for parallelization of I/O access and redundancy of storing virtual machine data |
US9277010B2 (en) | 2012-12-21 | 2016-03-01 | Atlantis Computing, Inc. | Systems and apparatuses for aggregating nodes to form an aggregated virtual storage for a virtualized desktop environment |
US10182128B1 (en) * | 2013-02-07 | 2019-01-15 | Amazon Technologies, Inc. | Optimization of production systems |
US9471590B2 (en) | 2013-02-12 | 2016-10-18 | Atlantis Computing, Inc. | Method and apparatus for replicating virtual machine images using deduplication metadata |
US9372865B2 (en) | 2013-02-12 | 2016-06-21 | Atlantis Computing, Inc. | Deduplication metadata access in deduplication file system |
US9250946B2 (en) | 2013-02-12 | 2016-02-02 | Atlantis Computing, Inc. | Efficient provisioning of cloned virtual machine images using deduplication metadata |
US9477609B2 (en) | 2013-04-22 | 2016-10-25 | Sap Se | Enhanced transactional cache with bulk operation |
US9632944B2 (en) | 2013-04-22 | 2017-04-25 | Sap Se | Enhanced transactional cache |
US9251003B1 (en) | 2013-08-14 | 2016-02-02 | Amazon Technologies, Inc. | Database cache survivability across database failures |
US9684686B1 (en) | 2013-09-04 | 2017-06-20 | Amazon Technologies, Inc. | Database system recovery using non-volatile system memory |
US9602398B2 (en) | 2013-09-15 | 2017-03-21 | Nicira, Inc. | Dynamically generating flows with wildcard fields |
US9674087B2 (en) | 2013-09-15 | 2017-06-06 | Nicira, Inc. | Performing a multi-stage lookup to classify packets |
US9552242B1 (en) | 2013-09-25 | 2017-01-24 | Amazon Technologies, Inc. | Log-structured distributed storage using a single log sequence number space |
US9465807B2 (en) | 2013-10-18 | 2016-10-11 | International Business Machines Corporation | Management of file cache |
US9767015B1 (en) | 2013-11-01 | 2017-09-19 | Amazon Technologies, Inc. | Enhanced operating system integrity using non-volatile system memory |
US9760480B1 (en) | 2013-11-01 | 2017-09-12 | Amazon Technologies, Inc. | Enhanced logging using non-volatile system memory |
US9740606B1 (en) | 2013-11-01 | 2017-08-22 | Amazon Technologies, Inc. | Reliable distributed messaging using non-volatile system memory |
US10089220B1 (en) | 2013-11-01 | 2018-10-02 | Amazon Technologies, Inc. | Saving state information resulting from non-idempotent operations in non-volatile system memory |
CN104598478A (zh) * | 2013-11-01 | 2015-05-06 | 株式会社肯博思泰格 | 利用了分割内容的虚拟面试处理系统及方法 |
US10387399B1 (en) | 2013-11-01 | 2019-08-20 | Amazon Technologies, Inc. | Efficient database journaling using non-volatile system memory |
US20150127630A1 (en) * | 2013-11-05 | 2015-05-07 | Combustec Co., Ltd | System and method for processing virtual interview using division content |
US9996467B2 (en) * | 2013-12-13 | 2018-06-12 | Nicira, Inc. | Dynamically adjusting the number of flows allowed in a flow table cache |
US9569368B2 (en) | 2013-12-13 | 2017-02-14 | Nicira, Inc. | Installing and managing flows in a flow table cache |
US9686200B2 (en) | 2014-03-31 | 2017-06-20 | Nicira, Inc. | Flow cache hierarchy |
US9411735B2 (en) | 2014-04-15 | 2016-08-09 | International Business Machines Corporation | Counter-based wide fetch management |
US9483179B2 (en) | 2014-04-15 | 2016-11-01 | International Business Machines Corporation | Memory-area property storage including data fetch width indicator |
US9513805B2 (en) * | 2014-04-15 | 2016-12-06 | International Business Machines Corporation | Page table including data fetch width indicator |
US10270876B2 (en) * | 2014-06-02 | 2019-04-23 | Verizon Digital Media Services Inc. | Probability based caching and eviction |
US10389697B1 (en) | 2014-08-27 | 2019-08-20 | Amazon Technologies, Inc. | Software container activation and throttling |
US11178051B2 (en) | 2014-09-30 | 2021-11-16 | Vmware, Inc. | Packet key parser for flow-based forwarding elements |
US20170302558A1 (en) * | 2014-10-07 | 2017-10-19 | Nec Corporation | Measuring apparatus, measuring system, measuring method, and recording medium in which program is recorded |
US10187488B2 (en) * | 2015-02-25 | 2019-01-22 | Netapp, Inc. | Methods for managing replacement in a distributed cache environment and devices thereof |
US9866647B2 (en) | 2015-03-26 | 2018-01-09 | Alcatel Lucent | Hierarchical cost based caching for online media |
US9954971B1 (en) * | 2015-04-22 | 2018-04-24 | Hazelcast, Inc. | Cache eviction in a distributed computing system |
CN104955075B (zh) * | 2015-04-27 | 2018-10-26 | 哈尔滨工程大学 | 一种基于消息分片和节点协作的延迟容忍网络缓存管理系统及管理方法 |
CN104866602A (zh) * | 2015-06-01 | 2015-08-26 | 走遍世界(北京)信息技术有限公司 | 队列处理方法及装置 |
US9842054B2 (en) * | 2015-07-08 | 2017-12-12 | Hon Hai Precision Industry Co., Ltd. | Computing device and method for processing data in cache memory of the computing device |
US10282324B2 (en) | 2015-07-13 | 2019-05-07 | Samsung Electronics Co., Ltd. | Smart I/O stream detection based on multiple attributes |
US10509770B2 (en) * | 2015-07-13 | 2019-12-17 | Samsung Electronics Co., Ltd. | Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device |
US11461010B2 (en) | 2015-07-13 | 2022-10-04 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device |
GB2540761B (en) * | 2015-07-23 | 2017-12-06 | Advanced Risc Mach Ltd | Cache usage estimation |
CN105549905B (zh) * | 2015-12-09 | 2018-06-01 | 上海理工大学 | 一种多虚拟机访问分布式对象存储系统的方法 |
US9760493B1 (en) * | 2016-03-14 | 2017-09-12 | Vmware, Inc. | System and methods of a CPU-efficient cache replacement algorithm |
US10185668B2 (en) * | 2016-04-08 | 2019-01-22 | Qualcomm Incorporated | Cost-aware cache replacement |
US10628320B2 (en) * | 2016-06-03 | 2020-04-21 | Synopsys, Inc. | Modulization of cache structure utilizing independent tag array and data array in microprocessor |
US10558463B2 (en) | 2016-06-03 | 2020-02-11 | Synopsys, Inc. | Communication between threads of multi-thread processor |
US10318302B2 (en) | 2016-06-03 | 2019-06-11 | Synopsys, Inc. | Thread switching in microprocessor without full save and restore of register file |
CN106201918B (zh) * | 2016-07-14 | 2019-02-12 | 合肥易立迅科技有限公司 | 一种基于大数据量和大规模缓存快速释放的方法和系统 |
US10552158B2 (en) | 2016-08-18 | 2020-02-04 | Synopsys, Inc. | Reorder buffer scoreboard having multiple valid bits to indicate a location of data |
US10613859B2 (en) | 2016-08-18 | 2020-04-07 | Synopsys, Inc. | Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions |
CN106909518B (zh) * | 2017-01-24 | 2020-06-26 | 朗坤智慧科技股份有限公司 | 一种实时数据缓存机制 |
US10394719B2 (en) * | 2017-01-25 | 2019-08-27 | Samsung Electronics Co., Ltd. | Refresh aware replacement policy for volatile memory cache |
CN108323228B (zh) * | 2017-09-06 | 2021-07-27 | 上海朗帛通信技术有限公司 | 一种被用于低延迟通信的用户、基站中的方法和装置 |
US10613764B2 (en) | 2017-11-20 | 2020-04-07 | Advanced Micro Devices, Inc. | Speculative hint-triggered activation of pages in memory |
CN110297719A (zh) * | 2018-03-23 | 2019-10-01 | 北京京东尚科信息技术有限公司 | 一种基于队列传输数据的方法和系统 |
CN109144431B (zh) * | 2018-09-30 | 2021-11-02 | 华中科技大学 | 数据块的缓存方法、装置、设备及存储介质 |
CN109522501B (zh) * | 2018-11-26 | 2021-10-26 | 腾讯科技(深圳)有限公司 | 页面内容管理方法及其装置 |
US11080189B2 (en) | 2019-01-24 | 2021-08-03 | Vmware, Inc. | CPU-efficient cache replacment with two-phase eviction |
US10747594B1 (en) | 2019-01-24 | 2020-08-18 | Vmware, Inc. | System and methods of zero-copy data path among user level processes |
US11714725B2 (en) * | 2019-06-03 | 2023-08-01 | University Of Central Florida Research Foundation, Inc. | System and method for ultra-low overhead and recovery time for secure non-volatile memories |
CN110971962B (zh) * | 2019-11-30 | 2022-03-22 | 咪咕视讯科技有限公司 | 切片缓存的方法、装置及存储介质 |
US11550732B2 (en) * | 2020-02-22 | 2023-01-10 | International Business Machines Corporation | Calculating and adjusting ghost cache size based on data access frequency |
US11281594B2 (en) * | 2020-02-22 | 2022-03-22 | International Business Machines Corporation | Maintaining ghost cache statistics for demoted data elements |
US11379380B2 (en) | 2020-05-07 | 2022-07-05 | Nxp Usa, Inc. | Systems and methods for managing cache replacement |
US10802762B1 (en) * | 2020-06-08 | 2020-10-13 | Open Drives LLC | Systems and methods for asynchronous writing of synchronous write requests based on a dynamic write threshold |
US11249660B2 (en) | 2020-07-17 | 2022-02-15 | Vmware, Inc. | Low-latency shared memory channel across address spaces without system call overhead in a computing system |
US11513832B2 (en) | 2020-07-18 | 2022-11-29 | Vmware, Inc. | Low-latency shared memory channel across address spaces in a computing system |
US11689545B2 (en) * | 2021-01-16 | 2023-06-27 | Vmware, Inc. | Performing cybersecurity operations based on impact scores of computing events over a rolling time interval |
CN117813594A (zh) * | 2021-09-14 | 2024-04-02 | 华为技术有限公司 | 用于控制存储器的存储控制器和方法 |
CN114301851B (zh) * | 2022-01-20 | 2023-12-01 | 燕山大学 | 一种面向工业现场的时间敏感网络流量分级调度方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826599B1 (en) * | 2000-06-15 | 2004-11-30 | Cisco Technology, Inc. | Method and apparatus for optimizing memory use in network caching |
CN101009646A (zh) * | 2006-12-22 | 2007-08-01 | 清华大学 | 按每流排队的物理队列动态共享装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0731820B2 (ja) * | 1987-08-31 | 1995-04-10 | 三菱電機株式会社 | 光デイスク駆動装置 |
US5043885A (en) * | 1989-08-08 | 1991-08-27 | International Business Machines Corporation | Data cache using dynamic frequency based replacement and boundary criteria |
US5381539A (en) | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
US5608890A (en) | 1992-07-02 | 1997-03-04 | International Business Machines Corporation | Data set level cache optimization |
US6385699B1 (en) * | 1998-04-10 | 2002-05-07 | International Business Machines Corporation | Managing an object store based on object replacement penalties and reference probabilities |
US6378043B1 (en) * | 1998-12-31 | 2002-04-23 | Oracle Corporation | Reward based cache management |
US6609177B1 (en) | 1999-11-12 | 2003-08-19 | Maxtor Corporation | Method and apparatus for extending cache history |
US6418510B1 (en) | 2000-09-14 | 2002-07-09 | International Business Machines Corporation | Cooperative cache and rotational positioning optimization (RPO) scheme for a direct access storage device (DASD) |
US6760812B1 (en) * | 2000-10-05 | 2004-07-06 | International Business Machines Corporation | System and method for coordinating state between networked caches |
US6728837B2 (en) * | 2001-11-02 | 2004-04-27 | Hewlett-Packard Development Company, L.P. | Adaptive data insertion for caching |
US7143240B2 (en) | 2003-10-31 | 2006-11-28 | International Business Machines Corporation | System and method for providing a cost-adaptive cache |
CN100395750C (zh) * | 2005-12-30 | 2008-06-18 | 华为技术有限公司 | 一种缓存管理方法 |
US7802057B2 (en) | 2007-12-27 | 2010-09-21 | Intel Corporation | Priority aware selective cache allocation |
US8250302B2 (en) * | 2008-01-31 | 2012-08-21 | Hewlett-Packard Development Company, L.P. | Cache management using sampled values assigned to a request |
US8250306B2 (en) * | 2008-04-24 | 2012-08-21 | International Business Machines Corporation | Method for improving frequency-based caching algorithms by maintaining a stable history of evicted items |
-
2011
- 2011-01-14 US US13/007,539 patent/US8601216B2/en active Active
- 2011-01-14 US US13/007,553 patent/US8601217B2/en active Active
- 2011-08-31 WO PCT/US2011/049875 patent/WO2012030903A2/en active Application Filing
- 2011-08-31 EP EP11758007.6A patent/EP2612249B1/en active Active
- 2011-08-31 EP EP11758008.4A patent/EP2612250B1/en active Active
- 2011-08-31 WO PCT/US2011/049871 patent/WO2012030900A1/en active Application Filing
- 2011-08-31 CN CN201180049892.9A patent/CN103168293B/zh active Active
- 2011-08-31 EP EP14158399.7A patent/EP2746954B1/en active Active
- 2011-08-31 CN CN201510301980.3A patent/CN104850510B/zh active Active
- 2011-08-31 CN CN201180049886.3A patent/CN103154912B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826599B1 (en) * | 2000-06-15 | 2004-11-30 | Cisco Technology, Inc. | Method and apparatus for optimizing memory use in network caching |
CN101009646A (zh) * | 2006-12-22 | 2007-08-01 | 清华大学 | 按每流排队的物理队列动态共享装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2012030903A2 (en) | 2012-03-08 |
CN104850510A (zh) | 2015-08-19 |
EP2612249A1 (en) | 2013-07-10 |
EP2746954A3 (en) | 2014-10-15 |
CN103168293A (zh) | 2013-06-19 |
CN103154912A (zh) | 2013-06-12 |
WO2012030900A1 (en) | 2012-03-08 |
EP2746954B1 (en) | 2018-08-08 |
EP2612250A2 (en) | 2013-07-10 |
CN103154912B (zh) | 2015-12-16 |
EP2746954A2 (en) | 2014-06-25 |
US8601216B2 (en) | 2013-12-03 |
CN103168293B (zh) | 2016-06-22 |
WO2012030903A3 (en) | 2012-07-12 |
EP2612249B1 (en) | 2017-10-11 |
US8601217B2 (en) | 2013-12-03 |
EP2612250B1 (en) | 2014-08-20 |
US20120054445A1 (en) | 2012-03-01 |
US20120054447A1 (en) | 2012-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104850510B (zh) | 用于插入缓存块的方法和系统 | |
US8112586B1 (en) | Predicting and optimizing I/O performance characteristics in a multi-level caching system | |
US6807607B1 (en) | Cache memory management system and method | |
CN103797470B (zh) | 存储系统 | |
US6098152A (en) | Method and apparatus for miss sequence cache block replacement utilizing a most recently used state | |
Herodotou | AutoCache: Employing machine learning to automate caching in distributed file systems | |
CN109086141A (zh) | 内存管理方法和装置以及计算机可读存储介质 | |
Kwon et al. | Training personalized recommendation systems from (GPU) scratch: Look forward not backwards | |
US10649908B2 (en) | Non-disruptive clearing of varying address ranges from cache | |
Lee et al. | Characterization of Memory Access in Deep Learning and Its Implications in Memory Management. | |
Ebrahimi et al. | Rc-rnn: Reconfigurable cache architecture for storage systems using recurrent neural networks | |
Gawanmeh et al. | Enhanced Not Recently Used Algorithm for Cache Memory Systems in Mobile Computing | |
Abawajy | File replacement algorithm for storage resource managers in data grids | |
Zhu et al. | Multi-stream (Q, r) model and optimization for data prefetching | |
Mubarak et al. | Scidac-Data: Enabling Data Driven Modeling of Exascale Computing | |
Mubarak et al. | SciDAC-Data, A Project to Enabling Data Driven Modeling of Exascale Computing | |
Saad et al. | Memory Management Approaches in Apache Spark: A Review | |
Chang et al. | A New Readahead Framework for SSD-based Caching Storage in IoT Systems | |
Wei et al. | Small File Read Performance Optimization Based on Redis Cache in Distributed Storage System | |
Burleson | Creating a Self-Tuning Oracle Database: Automating Oracle9i Dynamic Sga Performance | |
CN109656900A (zh) | 对终端发送的数据及时处理的服务器 | |
Haghdoost | Towards Performance and Reliability Enhancements of Enterprise Data Storage Systems | |
Guermouche | Parallel multifrontal method with out-of-core techniques | |
Chen | DeepBM: A Deep Learning-based Dynamic Page Replacement Policy | |
Gruenwald | Mechanisms for managing partial reload in a high performance memory-resident database system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |