用于插入缓存块的方法和系统的制作方法

文档序号:6362022阅读:166来源:国知局
专利名称:用于插入缓存块的方法和系统的制作方法
用于插入缓存块的方法和系统
背景技术
随着计算机处理能力的增强,技术用户和应用的需求也增强。对于许多行业,这会导致资源优先级排序的快速的移动。例如,在许多关系数据库应用中,非易失性存储器容量的相对重要性和成本急速地降低。对于系统管理员,关于存储容量的关心已经转移到对性能和可靠性的关心,因为存储技术的事务延迟限制了更快的并且更加强大微处理器的潜在的好处。在半导体工业内,存在类似的现象。遵循摩尔定律的处理能力和计算速度的理论增益大大地受到诸如存储器访问速度之类的非CPU瓶颈的限制。随着研究人员探索下一范式转移存储技术,诸如改善的缓存方法之类的中间技术帮助弥合该缝隙。通过跨一系列不同的应用利用多种类型的缓存存储设备,对于某些应用,可以降低访问延迟的瓶颈。对缓存设计和缓存算法的研究导致缓存和缓存管理设备的复杂性的增大。对于从CPU缓存到磁盘缓存和数据库缓存的一切,缓存系统在总体系统性能方面和跨每一层的计算谱变得越来越重要。缓存算法主要处理缓存数据项的插入、删除,以及修改。被缓存的数据的相关性和优先级排序优于缓存的有效的操作。通过将频繁地使用的数据项保持在缓存中,并清除在未来很少会使用的那些,传统的缓存算法旨在提高缓存命中率和性能。

发明内容
一般而言,一方面,本发明涉及将缓存块插入到缓存队列中的方法。该方法包括检测缓存队列的第一缓存未中,识别响应于所述缓存未中接收访问的存储块,计算包括所述存储块的第一存储容器的第一估计的缓存未中成本,基于所述第一估计的缓存未中成本的数学公式来计算所述第一存储容器的插入概率,从均匀分布中随机地选择插入概率数,以及,响应于所述插入概率超过所述插入概率数,将对应于所述存储块的新缓存块插入到所述缓存队列中。一般而言,一方面,本发明涉及将缓存块插入到缓存队列中的方法。该方法包括计算缓存队列内的缓存块的估计的缓存未中成本,从所述缓存队列清除所述缓存块,以及,将对应于所述缓存块的存储块的条目插入到对应于所述缓存队列的遮蔽列表中。该方法还包括检测弓I用存储块的缓存队列的缓存未中,响应于所述缓存未中,访问所述遮蔽列表内的条目,基于从所述缓存队列清除的缓存块的多个估计的旧缓存未中成本的数学公式计算估计的缓存未中成本阈值,以及,响应于所述估计的缓存未中成本超过所述估计的缓存未中成本阈值,将对应于所述存储块的新缓存块插入到所述缓存队列中。一般而言,一方面,本发明涉及存储用于将缓存块插入到缓存队列中的指令的计算机可读存储介质。指令包括检测缓存队列的第一缓存未中,识别响应于所述缓存未中接收访问的存储块,计算包括所述存储块的第一存储容器的第一估计的缓存未中成本,基于所述第一估计的缓存未中成本的数学公式计算第一存储容器的插入概率,以及,从均匀分布中随机地选择插入概率数的功能。进一步地,指令还包括响应于所述插入概率超过所述概率数,将对应于所述存储块的新缓存块插入到缓存队列中的功能。
—般而言,一方面,本发明涉及用于插入缓存块的系统。该系统包括在缓存队列的末尾处包括试用段的缓存队列,与所述试用段相邻的保护段。该系统还包括在处理器上执行并被配置成检测缓存队列的缓存未中、识别响应于所述缓存未中接收访问的存储块,计算包括所述存储块的存储容器的估计的缓存未中成本,基于所述估计的缓存未中成本的数学公式计算所述存储容器的插入概率,从均匀分布中随机地选择概率数,以及,响应于所述插入概率超过所述概率数,将对应于所述存储块的新缓存块插入到缓存队列中的试用段的开始处的缓存管理器。通过下面的描述和所附权利要求书,本发明的其他方面将变得显而易见。


图1A和IB描绘了根据本发明的一个或多个实施例的系统的示意框图。图2、3、4A、4B、6、7、9,以及10描绘了根据本发明的一个或多个实施例的流程图。图5A、5B,以及5C描绘了根据本发明的一个或多个实施例的缓存队列的示例。图8A和SB描绘了根据本发明的一个或多个实施例的系统的示意框图。图11描绘了根据本发明的一个或多个实施例的计算机系统。
具体实施例方式现在将参考附图详细描述本发明的具体实施例。为确保一致性,各附图中的相同元件通过相同附图标记来表示。在下面的对本发明的各实施例的详细描述中,阐明了众多具体细节以提供对本发明的各实施例的更加全面的理解。然而,对本领域的技术人员显而易见的是,本发明也可以在没有这些具体细节的情况下实施。在其他情况下,没有对已知的特征进行详细描述,以避免不必要地使描述复杂化。一般而言,本发明的各实施例提供了用于管理缓存的方法和系统。具体而言,本发明的各实施例向存储容器分配估计的缓存未中成本。估计的缓存未中成本是对存储容器内的存储块的缓存未中的成本的估计。估计的缓存未中成本可以被用来概率地将对应于存储块的新缓存块插入到缓存队列中。出于说明的目的,缓存操作可以是指任何对缓存的访问和/或修改。缓存操作的示例可以包括但不仅限于:读取操作、写入操作、回写操作、任何类型的缓存命中、任何类型的缓存未中,和/或任意数量的其他缓存操作。在本发明的一个或多个实施例中,缓存操作可以是指导致缓存队列中的一个或多个缓存块被回收利用的任何缓存请求。回收利用可以是指缓存队列内的一个或多个缓存块的任何反向移动。对存储容器的缓存操作和/或访问可以是指对存储容器内的存储块的访问。出于说明的目的,缓存未中可以是指请求对缓存(和/或相关联的缓存队列,如果适用的话)中不存在的存储块的读取或写入的缓存操作。因此,在本发明的一个或多个实施例中,存储块被直接从相应的存储设备读取,随后被插入到缓存中。在本发明的一个或多个实施例中,缓存未中可以是指写入未中、读取未中,和/或需要对当前不存储在缓存内的存储块的访问的写入和读取请求的某种组合。出于说明的目的,缓存命中可以是指访问当前存储在缓存(以及相关联的缓存队列,如果适用的话)中的存储块的缓存操作。根据本发明的各实施例,缓存命中可以包括对相应于该缓存的缓存队列的修改。“读取”缓存命中可以是指读取缓存内的存储单元的内容的请求。“写入”缓存命中可以是指将值从缓存中的存储单元写入到存储设备中的相应的存储块的请求。在本发明的一个或多个实施例中,写入操作可以通过将所述值写入到存储单元而不修改存储块(例如,在回写缓存中)来执行。然后,在某个预定时间或在事件触发之后,该值可以被回写到存储块。出于说明的目的,旧缓存块是自从被插入到缓存队列中以来接收到至少一个缓存命中的缓存块。新缓存块是指自从被插入到缓存队列中以来没有接收到缓存命中的缓存块。图1A示出了根据本发明的一个实施例的系统(199)。如图1A所示,系统(199)具有多个组件,包括缓存(100)、存储设备(110)、一组存储容器(例如,存储容器I (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)、电话、移动电话、自助服务终端、电缆盒,以及任何其他设备)或可以位于通过网络(例如,因特网)利用有线和/或无线段连接的分离的设备上。本领域技术人员将认识到,可以有多于一个的每一个单独的组件在设备上运行,以及在本发明的给定实施例内可以有这些组件的任意组
口 o在本发明的一个或多个实施例中,缓存(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缓存、闪存缓存、存储器缓存
(例如,作为甲骨文公司的EXADATA 存储器服务器产品线的一部分)、操作系统缓冲
池,和/或对应于中间层缓存的对象缓存。EXADATA’是位于加利福尼亚州雷德伍德城的甲骨文公司的注册商标。在一个示例中,缓存(100)驻留在硬盘驱动器上,并被虚拟存储器管理模块用来存储具有对应于一个或多个其他存储设备(例如,RAM)上的物理地址的虚拟地址的页面表。在此示例中,存储单元是存储了来自实际(即,物理)存储器的一个或多个存储块的虚拟地址。在另一个示例中,缓存(100)是驻留在存储设备内的数据结构。因此,缓存(100)本身可以是被设计用于基于一个或多个缓存算法存储来自物理或虚拟存储器设备的内容的虚拟缓存。在另一个示例中,CPU缓存是安装在主板(S卩,印刷电路板)上并通过总线操作地连接到中央处理单元(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))可以被分组到存储容器(例如,存储容器I (120)、存储容器Z (130))中。在本发明的一个或多个实施例中,存储容器可以是指存储设备内的存储块的逻辑和/或物理组。存储容器的示例可以包括但不仅限于:文件、数据库记录、数据库字段、HTML页面、数据库引用、存储器字节、存储器字、寄存器、slab、和/或存储设备内的一个或多个存储块的任何分组。在一个示例中,存储容器是驻留在硬盘驱动器上的文件,而存储块是所述硬盘驱动器上的存储器字节。在另一个示例中,存储容器是数据库行,而其对应的存储块是数据库行内的数据库字段。如示例所示,存储容器可以只是特定硬件设备上的一组仅有且所有的存储块、特定表或特定数据库上的一组仅有且所有的存储块,或任何其他逻辑或物理组。根据本发明的各实施例,存储设备内的存储容器的大小可以是固定的(S卩,对所有存储容器一致)或可变的(例如,取决于存储容器的内容的大小)。进一步地,存储容器中的存储块的数量可以是固定的或可变的。在本发明的一个或多个实施例中,存储容器是可寻址的。数据可以基于任何存储机制和/或算法,跨一个或多个存储容器被存储在一个或多个存储块内。因此,存储容器内的存储块可以对应于相同逻辑单元,和/或根据它们在软件程序内的用途相关联。存储设备(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所示,系统具有多个组件,包括多个缓存块(例如,缓存块I (156)、缓存块i (158)、缓存块i+1 (160)、缓存块j (162)、缓存块j+k (164))、保护段(152)、试用段(154),以及受害者段(170)。系统的组件可以位于同一个设备上(例如,硬盘驱动器、RAM、存储设备、存储器管理单元(MMU)Jg务器、大型机、台式个人计算机(PC)、膝上型计算机、个人数字助理(PDA)、电话、移动电话、自助服务终端、电缆盒,以及任何其他设备)或可以位于通过网络(例如,因特网)利用有线和/或无线段连接的分离的设备上。本领域技术人员将认识到,可以有多于一个的每一个单独的组件在设备上运行,在本发明的给定实施例内可以有这些组件的任何组合。在本发明的一个或多个实施例中,缓存队列(142)是缓存块(例如,缓存块I(156)、缓存块i (158)、缓存块i+1 (160)、缓存块j (162)、缓存块j+k (164))的队列。缓存队列(142)中的每一个缓存块(例如,缓存块I (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),以便完成通过。具体而言,对缓存块的通过的开始处于保护段(例如,缓存块I (156))的开始处,或者试用段(例如,缓存块i+1 (160))的开始处。随着缓存块被从缓存队列(142)中清除和/或在缓存队列(142)内回收利用,任何剩余缓存块都可以重复缓存队列中的一个或多个点(例如,向图1B所示出的图中的右侧移动)。例如,如果缓存块j+k (164)被回收利用到试用段(154)的开始处(S卩,到位置i+1
(160))并且缓存块j+k-1 (未示出)被清除,那么,试用段(154)中的剩余缓存块中每一个都在图1B的图中向右移动两个空格。作为另一个示例,如果缓存块j+k (164)被回收利用到保护段(152)的开始处(S卩,到位置I (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)缓存队列类似地(S卩,没有概率性的插入和/或删除)操作缓存队列。因此,在本发明的一个或多个实施例中,缓存管理器(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”)。在本发明的一个或多个实施例中,这保持跟踪自从对缓存块的最后一次访问(即,缓存命中)以来执行的(即,由缓存服务的)事务的数量。如果此值超过预定义的阈值数字,则在被考虑从缓存中清除之后以概率I删除对应于此存储容器的缓存块。可以从缓存管理器(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_f irst_pass_hits>l的所有容器统计对象,作为容器延迟*num_first_pass_hits/num_first_pass_blocks,来计算存储容器的估计的新块成本(“estimated_new_block_cost”)(遵循公式Ctlj=E[N」]礼」,其中,E[Nj]是在对缓存队列的第一次通过过程中对来自存储容器j的新缓存块的缓存命中的期望数,如下面所讨论的)。对于这样的容器统计对象,活动状态标记可以被设置为真(TRUE),并且num_first_pass_blocks 和 num_first_pass_hits 可以被设置为 O。b.那些没有num_first_pass_hits>l的容器统计对象继续使用estimated_new_block_cost 的旧值,并持续增大 num_first_pass_blocks 和 num_first_pass_hits,直到下
一容器统计更新。c.在本发明的一个或多个实施例中,对于具有num_second_pass_hit_blocks>l的所有容器统计对象,作为 latency* (num_second_pass_hit_blocks/num_second_chance_blocks)/avg_cache_accesses_before_first_hit来计算估计的零命中缓存未中成本(“estimated_Ohit_miss_cost”)(遵循公式 Cj=LjRj=LjP(A|B」)/Tj,如下面所讨论的)。在本发明的一个或多个实施例中,对于这些容器统计对象,num_second_chance_blocks、num_second_pass_hit_blocks,以及 avg_cache_accesses_before_first_hit 可以被复位为零。d.在本发明的一个或多个实施例中,那些没有num_second_pass_hit_blocks>l的容器统计对象可以继续使用现有的estimated_Ohit_miss_cost,和/或继续增大num_second_chance_blocks> num_second_pass_hit_blocks 和 / 或 avg_cache_accesses_before_first_hit0在本发明的一个或多个实施例中,在预热期之后和/或执行指定数量的事务之后,对于活动状态标记被设置为FALSE的容器统计对象,缓存管理器(140)以概率I将对应于存储容器的新缓存块插入在试用段的开始处(即,顶部)。另外,缓存管理器(140)还以概率0.5删除对应于存储容器的缓存块,如果它们在对试用段的第一次通过过程中接收到零个缓存命中(此时被认为从缓存中清除)的话。在本发明的一个或多个实施例中,这增强了这样的缓存块的回收利用,以便提高估计的容器统计数据的精确度。分析缓存删除继续图1A,根据本发明的一个或多个实施例,缓存管理器(140)以概率的方式从缓存队列(142)的受害者段删除一个或多个新缓存块。因此,可以给受害者段中的一个或多个新缓存块指派删除概率。删除概率是:如果检查相应的缓存块,则该缓存块将被从缓存中清除的概率。例如,删除概率可以是零和一(含)之间的数字。当新缓存块被考虑从缓存队列中清除时,缓存管理器(140)可以随机地选择概率数。在本发明的一个或多个实施例中,概率数可以从均匀分布中选择和/或在匹配删除概率的潜在值的范围的潜在值的范围内选择。随后,将概率数与删除概率进行比较,并且对是否要清除缓存块作出判断。继续上述示例,如果删除概率大于或等于概率数,则从缓存队列中清除缓存块(对应的存储单元被释放)。在本发明的一个或多个实施例中,缓存管理器(140)响应于被请求的缓存操作,识别缓存命中和/或缓存未中。在本发明的一个或多个实施例中,缓存管理器(140)跟踪在对缓存队列(142)的每一次通过过程中由缓存块接收到的缓存命中的数量(对每一个缓存块b表示为nb)。对缓存队列(142)的通过可以包括对缓存队列的在其之后缓存块被清除或回收利用的任何段(例如,试用段和/或保护段)的通过。在本发明的一个或多个实施例中,如果对于正在被考虑清除的缓存块,nb等于零,则从缓存队列中删除缓存块。如果nb>0,那么,缓存块被回收利用到缓存队列(142)的保护段的开始处(S卩,顶部)。在插入到缓存队列(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 n BjVP(Bj)c在此公式中,Bj是属于在其对试用段的第一次通过过程中没有接收到缓存命中的存储容器j的新块的事件,A是该新块在其对试用段的第二次通过过程中接收到缓存命中的事件。对于每一个存储容器j,此条件概率可以被估计为满足事件Bj并在被回收利用到缓存队列的试用段的开始处(即,顶部)之后接收到缓存命中的缓存块的一部分。在本发明的一个或多个实施例中,缓存管理器(140)作为Rj=P (A| Bj)/Tj来计算来自存储容器j的新缓存块的估计的访问速率,其中,Tj是在在对试用段的第二次通过过程中接收到缓存命中之前由来自存储容器j的新缓存块花费在缓存中的平均时间。在本发明的一个或多个实施例中,可以使用其中1^是1的递减函数的任何公式来计算估计的访问速率(包括所示出的公式的任何线性和/或指数变体)。继续图1A,在本发明的一个或多个实施例中,缓存管理器(140)作为Cj=LfRj来计算在受害者缓存中具有一个或多个新缓存块的存储容器的估计的缓存未中成本,其中Lj是存储容器j的延迟。缓存管理器(140)可以计算删除这样的缓存块的概率Pj,以便对于在受害者段中有新缓存块的任何两个存储容器j和k,相对删除概率与相对缓存未中成本成反比:Pj/Pk=Ck/Cj。在本发明的一个或多个实施例中,可以使用其中存储容器的删除概率与其估计的缓存未中成本逆相关的任何公式或给定公式的变体(包括所示出的公式的任何线性和/或指数变体)。在本发明的一个或多个实施例中,缓存管理器(140)可以使用此公式和/或此公式的变体来隔离在缓存队列中具有缓存块的任何存储容器的删除概率(PP。首先,缓存管理器(140)可以识别在受害者段中具有一个或多个新缓存块的存储容器之中的最低
估计的缓存未中成本(Cf )。然后,缓存管理器(140)可以作
权利要求
1.一种将缓存块插入到缓存队列中的方法,包括: 由处理器检测所述缓存队列的第一缓存未中; 由所述处理器识别响应于所述缓存未中接收访问的存储块; 由所述处理器计算包括所述存储块的第一存储容器的第一估计的缓存未中成本;由所述处理器基于所述第一估计的缓存未中成本的数学公式来计算所述第一存储容器的插入概率; 从均匀分布中随机地选择插入概率数,其中,所述插入概率超过所述插入概率数;以及响应于所述插入概率超过所述插入概率数,将对应于所述存储块的新缓存块插入到所述缓存队列中。
2.如权利要求1所述的方法,其中,计算所述第一估计的缓存未中成本包括: 计算由对应于第一存储容器的多个缓存块在对所述缓存队列的试用段的第一次通过中接收到的缓存命中的平均数; 识别所述第一存储容器的延迟;以及 基于缓存命中的所述平均数和所述延迟,计算所述第一估计的缓存未中成本。
3.如权利要求1所述的方法,还包括: 计算具有所述缓存队列中的缓存块的多个存储容器的多个估计的缓存未中成本,其中,所述多个估计的缓存未中成本包括所述第一估计的缓存未中成本,并且所述多个存储容器包括所述第一存储容器;以及 识别对应于所述多个存储容器中的第二存储容器的所述多个估计的缓存未中成本的最大估计的缓存未中成本,其中,所述插入概率进一步基于所述最大估计的缓存未中成本。
4.如权利要求3所述的方法,还包括: 识别所述第一存储容器的多个新缓存块的第一到达速率,其中,所述插入概率进一步基于所述第一到达到达速率;以及 识别对应于所述第二存储容器的多个新缓存块的第二到达速率,其中,所述第一到达速率超过所述第二到达速率。
5.如权利要求4所述的方法,其中,所述新缓存块被插入在所述缓存队列的试用段的开始处,并且其中,所述试用段包括所述缓存队列的末尾处的缓存块的相邻组。
6.如权利要求1所述的方法,还包括: 在检测到所述第一缓存未中之后并基于旧存储容器的访问速率,检测所述旧存储容器的工作负荷变化; 在所述缓存队列的受害者段内,识别对应于具有所述工作负荷变化之前最新访问时间的所述旧存储容器的旧缓存块;以及 在插入所述新缓存块之前并基于所述工作负荷变化,从所述缓存队列中清除所述旧缓存块。
7.如权利要求1所述的方法,还包括: 在所述缓存队列内,识别存储在先存储块的值的在先新缓存块; 由所述处理器计算包括所述在先存储块的第二存储容器的第二估计的缓存未中成本; 基于所述第二估计的缓存未中成本的数学公式,计算所述第二存储容器的删除概率;从所述均匀分布中随机地选择删除概率数,其中,所述删除概率超过所述删除概率数;以及 响应于所述删除概率超过所述删除概率数,并在将所述新缓存块插入到所述缓存队列中之前,从所述缓存队列清除所述在先新缓存块。
8.如权利要求1所述的方法,其中,所述数学公式将所述插入概率表示为所述第一估计的缓存未中成本的递增函数。
9.一种将缓存块插入到缓存队列中的方法,包括: 计算所述缓存队列内的缓存块的估计的缓存未中成本; 从所述缓存队列中清除所述缓存块; 将对应于所述缓存块的存储块的条目插入到对应于所述缓存队列的遮蔽列表中; 由处理器检测引用所述存储块的所述缓存队列的缓存未中; 响应于所述缓存未中,访问所述遮蔽列表内的所述条目; 基于从所述缓存队列中清除的缓存块的多个估计的旧缓存未中成本的数学公式,计算估计的缓存未中成本阈值;以及 响应于所述估计的缓存未中成本超过所述估计的缓存未中成本阈值,将对应于所述存储块的新缓存块插入到所述缓存队列中。
10.如权利要求9所述的方法,其中,计算所述估计的缓存未中成本阈值包括: 计算所述多个估计的旧缓存未中成本; 识别所述多个估计的旧缓存未中成本中的最大估计的旧缓存未中成本; 计算所述多个估计的旧缓存未中成本的标准偏差;以及 基于所述最大估计的旧缓存未中成本和所述标准偏差,来计算所述估计的缓存未中成本阈值。
11.如权利要求9所述的方法,其中,计算所述缓存块的所述估计的缓存未中成本包括: 对于所述缓存块,基于自从插入到所述缓存队列中以来接收到的缓存命中的数量除以自从插入到所述缓存队列中以来消逝的时间,来计算估计的访问速率;以及 基于所述缓存块的延迟乘以所述估计的访问速率,来计算所述估计的缓存未中成本。
12.—种存储了用于将缓存块插入到缓存队列中的多个指令的计算机可读存储介质,所述多个指令包括下列功能: 检测所述缓存队列的缓存未中; 识别响应于所述缓存未中接收访问的存储块; 计算包括所述存储块的第一存储容器的第一估计的缓存未中成本; 基于所述第一估计的缓存未中成本的数学公式,来计算所述第一存储容器的插入概率; 从均匀分布中随机地选择插入概率数,其中,所述插入概率超过所述插入概率数;以及响应于所述插入概率超过所述插入概率数,将对应于所述存储块的新缓存块插入到所述缓存队列中。
13.如权利要求12所述的计算机可读存储介质,其中,计算所述第一估计的缓存未中成本包括:对于所述第一存储容器,计算由对应于所述第一存储容器的多个缓存块在对所述缓存队列的试用段的第一次通过中接收到的缓存命中的平均数; 识别所述第一存储容器的延迟;以及 基于缓存命中的所述平均数和所述延迟,计算所述第一估计的缓存未中成本。
14.如权利要求12所述的计算机可读存储介质,其中,所述多个指令还包括下列功能: 计算具有所述缓存队列中的缓存块的多个存储容器的多个估计的缓存未中成本,其中,所述多个估计的缓存未中成本包括所述第一估计的缓存未中成本,并且所述多个存储容器包括所述第一存储容器;以及 识别所述多个估计的缓存未中成本的最大估计的缓存未中成本,其中,所述插入概率进一步基于所述最大估计的缓存未中成本。
15.如权利要求12所述的计算机可读存储介质,其中,所述多个指令还包括下列功能: 在所述缓存队列内,识别存储在先存储块的值的在先新缓存块; 计算包括所述在先存储块的第二存储容器的第二估计的缓存未中成本; 基于所述第二估计的缓存未中成本的数学公式,计算所述第二存储容器的删除概率; 从所述均匀分布中随机地选择删除概率数,其中,所述删除概率超过所述删除概率数;以及 响应于所述删除概率超过所述删除概率数,并在将所述新缓存块插入到所述缓存队列中之前,从所述缓存队列清除所述在先新缓存块。
16.如权利要求12所述的计算机可读存储介质,其中,所述多个指令还包括下列功能: 计算所述第一存储容器的新缓存块的估计的到达速率,其中,所述插入概率进一步基于所述估计的到达速率。
17.一种用于插入缓存块的系统,包括: 一种缓存队列,包括: 所述缓存队列的末尾处的试用段,以及 与所述试用段相邻的保护段;以及 在处理器上执行的并被配置成执行下列操作的缓存管理器: 检测所述缓存队列的缓存未中; 识别响应于所述缓存未中接收访问的存储块; 计算包括所述存储块的存储容器的估计的缓存未中成本; 基于所述估计的缓存未中成本的数学公式,计算所述存储容器的插入概率; 从均匀分布中随机地选择概率数,其中,所述插入概率超过所述概率数;以及响应于所述插入概率超过所述概率数,将对应于所述存储块的新缓存块插入到所述缓存队列中的所述试用段的开始处。
18.如权利要求17所述的系统,进一步包括: 对应于所述缓存队列的遮蔽列表,包括: 用于清除的缓存块的多个条目; 其中,所述缓存管理器进一步被配置成: 在插入所述新缓存块之前,从所述缓存队列清除受害者缓存块;以及 将所述受害者缓存块的条目插入到所述遮蔽列表中。
19.如权利要求17所述的系统,进一步包括: 包括所述存储容器的存储设备,其中,所述存储容器包括多个存储块,并且其中,所述多个存储块包括所述存储块。
20.如权利要求17所述的系统,其中,计算所述估计的缓存未中成本包括: 计算由对应于第一存储容器的多个缓存块在对所述缓存队列的试用段的第一次通过中接收到的缓存命中的平均数; 识别所述第一存储容器的延迟;以及 基于缓存命中的所述平均 数和所述延迟,计算所述第一估计的缓存未中成本。
全文摘要
一种将缓存块插入到缓存队列中的方法包括检测缓存队列的第一缓存未中,识别响应于所述缓存未中接收访问的存储块,计算包括所述存储块的第一存储容器的第一估计的缓存未中成本,基于第一估计的缓存未中成本的数学公式来计算第一存储容器的插入概率,从均匀分布中随机地选择插入概率数,以及,响应于所述插入概率超过所述插入概率数,将对应于所述存储块的新缓存块插入到缓存队列中。
文档编号G06F12/12GK103154912SQ201180049886
公开日2013年6月12日 申请日期2011年8月31日 优先权日2010年8月31日
发明者G·F·斯沃特, D·温格沃弗 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1