CN107438837A - 数据高速缓存 - Google Patents
数据高速缓存 Download PDFInfo
- Publication number
- CN107438837A CN107438837A CN201680018844.6A CN201680018844A CN107438837A CN 107438837 A CN107438837 A CN 107438837A CN 201680018844 A CN201680018844 A CN 201680018844A CN 107438837 A CN107438837 A CN 107438837A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- level
- target
- hierarchy
- 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.)
- Granted
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- 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/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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Photoreceptors In Electrophotography (AREA)
- Holo Graphy (AREA)
- Surgical Instruments (AREA)
Abstract
用于对不经常访问的数据进行高速缓存的方法、系统和设备,包括在计算机存储介质上编码的计算机程序。所述方法中的一个包括:从装置的组件接收对数据的请求;确定所述数据满足不频发条件;响应于确定所述数据满足所述不频发条件:确定目标高速缓存层级,其定义在特定高速缓存的高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述目标高速缓存层级在所述高速缓存层级层次中比最高高速缓存层级低;从不是所述装置的高速缓存的存储器请求并接收所述数据;并且将所述数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述目标高速缓存层级的层级中;以及将所述数据提供给所述组件。
Description
背景技术
本说明书涉及对数据进行高速缓存。
装置可以包括用于存储最近访问的数据或预期被访问的数据的高速缓存。例如,处理器可以包括一个或多个高速缓存层级。例如,与在高速缓存层级层次中位于下部的较大且较慢的L3高速缓存相比,最高高速缓存层级,例如L1高速缓存,可以是高速缓存层级层次中的最快高速缓存并且是最小高速缓存。
发明内容
在一些实施方式中,系统可指定嵌套页面表,例如用于虚拟机,或其它不经常访问的数据所被存储的高速缓存层级。可以随时改变高速缓存层级以降低高速缓存未命中率。将嵌套页面表和其它不经常访问的数据存储在特定高速缓存层级处可以允许处理器在较慢的存储器,例如L3高速缓存,中访问不经常访问的存储器,然而不在高速缓存层级层次中将不经常访问的数据向上移,并且弹出存储在较快的存储器中的更可能被访问的数据。
一般而言,在本说明书中描述的主题的一个创新方面可用方法加以具体实现,所述方法包括以下动作:从装置的组件接收对数据的请求;确定所述数据满足不频发条件;响应于确定所述数据满足所述不频发条件:确定目标高速缓存层级,所述目标高速缓存层级定义在特定高速缓存的高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述目标高速缓存层级在所述高速缓存层级层次中比最高高速缓存层级低;从不是所述装置的高速缓存的存储器请求并接收所述数据;并且将所述数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述目标高速缓存层级的层级中;以及将所述数据提供给所述组件。此方面的其它实施例包括对应的计算机系统、设备和记录在一个或多个计算机存储装置上的计算机程序,其各自被配置成执行所述方法的所述动作。
一般而言,在本说明书中描述的主题的一个创新方面可用方法加以具体实现,所述方法包括以下动作:从装置的组件接收对数据的请求;确定所述数据满足不频发条件;响应于确定所述数据满足所述不频发条件:确定目标高速缓存层级,所述目标高速缓存层级定义在特定高速缓存的高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述目标高速缓存层级在所述高速缓存层级层次中比最高高速缓存层级低;从不是所述装置的高速缓存的存储器请求并接收所述数据;将所述数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述目标高速缓存层级的层级中;并且在所述特定高速缓存的在所述高速缓存层级层次中高于所述目标高速缓存层级的特定层级中存储所述特定层级的最近最少使用高速缓存行中的所述数据,而不更新所述最近最少使用高速缓存行的最近最少使用比特;以及将所述数据提供给所述组件。此方面的其它实施例包括对应的计算机系统、设备和记录在一个或多个计算机存储装置上的计算机程序,其各自被配置成执行所述方法的所述动作。
一般而言,在本说明书中描述的主题的一个创新方面可用方法加以具体实现,所述方法包括以下动作:由高速缓存从装置的组件接收对数据的请求;确定所述数据满足特定模式;响应于确定所述数据满足所述特定模式:确定定义在所述高速缓存的高速缓存层级层次内存储数据的高速缓存层级的目标高速缓存层级;从不是所述装置的高速缓存的存储器请求并接收所述数据;并且将所述数据存储在所述目标高速缓存层级中,而不是将所述数据存储在所述高速缓存的所述高速缓存层级中的全部中;以及将所述数据提供给所述组件。此方面的其它实施例包括对应的计算机系统、设备和记录在一个或多个计算机存储装置上的计算机程序,其各自被配置成执行所述方法的所述动作。
一个或多个计算机的系统可被配置成借助于具有安装在所述系统上的软件、固件、硬件或它们的组合来执行特定操作或动作,所述软件、固件、硬件或它们的组合在操作中导致或者使所述系统执行所述动作。一个或多个计算机程序可被配置成借助于包括指令来执行特定操作或动作,所述指令当由数据处理设备执行时,使所述设备执行所述动作。
上述和其它实施例可单独或相结合地各自可选地包括以下特征中的一个或多个。在一些实施方式中,从所述装置的所述组件接收对数据的所述请求可以包括从装置的处理器接收对所述数据的所述请求,并且将所述数据提供给所述组件可以包括将所述数据提供给所述处理器。从所述装置的所述组件接收对数据的所述请求可以包括从装置的存储器控制器接收对所述数据的所述请求,并且将所述数据提供给所述组件可以包括将所述数据提供给所述存储器控制器。从所述装置的所述组件接收对数据的所述请求可以包括从装置的存储器管理单元接收对所述数据的所述请求,并且将所述数据提供给所述组件可以包括将所述数据提供给所述存储器管理单元。从所述装置的所述组件接收对数据的所述请求可以包括从所述的输入/输出单元接收对所述数据的所述请求,并且将所述数据提供给所述组件可以包括将所述数据提供给所述输入/输出单元。
在一些实施方式中,所述方法可以包括确定对所述数据的所述请求包括对嵌套页面表的请求。确定所述数据满足所述不频发条件可以包括响应于确定对所述数据的所述请求包括对嵌套页面表的请求而确定所述数据满足所述不频发条件。所述方法可以包括接收指示所述目标高速缓存层级的标识符的输入。接收指示所述目标高速缓存层级的所述标识符的所述输入可以包括从基本输入/输出系统或统一可扩展固件接口接收所述输入。接收指示所述目标高速缓存层级的所述标识符的所述输入可以包括从管理员接收所述输入的指示。
在一些实施方式中,确定所述目标高速缓存层级可以包括使用所述特定高速缓存的高速缓存未命中率自动地确定所述目标高速缓存层级。使用所述特定高速缓存的所述高速缓存未命中率自动地确定所述目标高速缓存层级可以包括:确定所述特定高速缓存的所述高速缓存未命中率不满足阈值未命中率;以及响应于确定所述特定高速缓存的所述高速缓存未命中率不满足所述阈值未命中率,而将所述目标高速缓存层级改变为所述高速缓存层级层次中的较低高速缓存层级。使用所述特定高速缓存的所述高速缓存未命中率自动地确定所述目标高速缓存层级可以包括:确定所述特定高速缓存的所述高速缓存未命中率满足阈值未命中率;以及响应于确定所述特定高速缓存的所述高速缓存未命中率满足所述阈值未命中率,而将所述目标高速缓存改变为高于所述高速缓存层级层次中的较低高速缓存层级。所述方法可以包括:从所述处理器接收对第二数据的第二请求;确定所述第二数据满足所述不频发条件;确定更新的目标高速缓存层级,其定义在所述特定高速缓存的所述高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述更新的目标高速缓存层级在所述高速缓存层级层次中比所述最高高速缓存层级低;从不是所述装置的高速缓存的另一存储器请求并接收所述第二数据;将所述第二数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述更新的目标高速缓存层级的层级中;以及将所述第二数据提供给所述处理器。
在一些实施方式中,从所述处理器接收对所述数据的所述请求可以包括在第一虚拟机的执行期间从所述处理器接收所述请求,并且确定所述目标高速缓存层级可以包括确定特定于所述第一虚拟机的第一目标高速缓存层级。所述方法可以包括:在第二虚拟机的执行期间从所述处理器接收对第二数据的第二请求;确定所述第二数据满足第二不频发条件;确定特定于所述第二虚拟机的第二目标高速缓存层级,所述第二目标高速缓存层级定义在所述特定高速缓存的所述高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述第二目标高速缓存层级在所述高速缓存层级层次中比所述最高高速缓存层级低;从不是所述装置的高速缓存的另一存储器请求并接收所述第二数据;将所述第二数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述第二目标高速缓存层级的层级中;以及将所述第二数据提供给所述处理器。确定特定于所述第一虚拟机的所述第一目标高速缓存层级可以包括使用存储在所述装置的第一寄存器中的数据来确定所述第一目标高速缓存层级,并且确定特定于所述第二虚拟机的所述第二目标高速缓存层级可以包括使用存储在所述装置的第二不同寄存器中的数据来确定所述第二目标高速缓存层级。
在一些实施方式中,确定所述目标高速缓存层级可以包括:在从所述存储器接收到所述数据之后标识所述数据的属性;以及使用所述属性来确定所述数据满足所述不频发条件并且确定存储所述数据的所述目标高速缓存层级。所述方法可以包括:从所述处理器接收对第二数据的第二请求;确定所述第二数据满足第二不频发条件;从不是所述装置的高速缓存的第二存储器请求并接收所述第二数据;在从所述第二存储器接收到所述第二数据之后,使用所述第二数据的第二属性来确定第二目标高速缓存层级,其定义在所述特定高速缓存的所述高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述目标高速缓存层级在所述高速缓存层级层次中比所述最高高速缓存层级低;将所述第二数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述目标高速缓存层级的层级中;以及将所述第二数据提供给所述处理器。所述方法可以包括:接收对所述数据的第二请求;以及从存储有所述数据的所述特定高速缓存的所述层级中检索所述数据,同时确保所述数据不被存储在所述高速缓存的在所述高速缓存层级层次中高于所述目标高速缓存层级的另一层级中。在一些实施方式中,这具有如下技术效果:对满足所述不频发条件的数据的请求不会导致从高于所述目标高速缓存层级的高速缓存中逐出其它数据,并且因此使得所述其它数据在较高的高速缓存层级中可用以用于将来请求中的高效访问。
在本说明书中描述的主题可被实现在特定实施例中并且可以导致以下优点中的一个或多个。在一些实施方式中,在下面所描述的系统和方法可以使用不频发条件来决定要在目标高速缓存层级处存储什么数据,使得不太经常使用的数据被存储在较大的较慢的高速缓存层级而非较小的较快的高速缓存层级中,例如,这可以使得从较小的较快的高速缓存层级中逐出将不久被使用的数据。在一些实施方式中,在下面所描述的系统和方法可以导致高于目标高速缓存层级的高速缓存层级中的高速缓存未命中率的降低。在一些实施方式中,在下面所描述的系统和方法可以使用频率条件或数据的模式来确定存储数据的目标高速缓存层级,例如,将经常使用的数据存储在较小的较快的高速缓存层级而非较大的较慢的高速缓存层级或特定高速缓存层级中。在一些实施方式中,将不经常访问的数据存储在一些高速缓存层级中、动态地调整目标高速缓存层级或执行这两者的系统,可以改进其它数据的高速缓存命中率。例如,当用于虚拟机的嵌套页面表未被存储在L1高速缓存中时或者当存储有嵌套页面表的L1高速缓存行的最近最少使用比特不被更新时,系统可以提高用于虚拟机的执行的高速缓存命中率。在下面所描述的系统和方法可以优于未实施这种高速缓存管理的系统而具有降低的功耗。
在下面所描述的系统和方法可以抑制来自恶意虚拟机的拒绝服务攻击。例如,当系统从虚拟机接收到对不经常被访问且未存储在高速缓存中的数据的多个请求时,系统可以通过仅将所请求的数据存储在较低层级高速缓存,例如L3高速缓存,中来抑制拒绝服务攻击,提供更高效的高速缓存、更公平的高速缓存或者这两者或更多个。可以在没有显著的硬件改变或任何硬件改变的情况下实现在下面所描述的系统和方法。
在以下附图和描述中阐述了本说明书的主题的一个或多个实施例的细节。本主题的其它特征、方面和优点将根据本说明书、附图和权利要求书变得显而易见。
附图说明
图1是中央处理单元包括存储特定数据的目标高速缓存层级的系统的示例。
图2是用于将数据存储在目标高速缓存层级中的过程的流程图。
图3是可与本文献中所描述的计算机实现的方法相结合地使用的计算系统的框图。
在各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
一些操作系统,诸如Linux,使用操作系统映射到物理地址并且允许应用在虚拟地址上操作的虚拟存储器。操作系统可以在页面表中维护虚拟地址到物理地址映射,所述页面表从应用被隐藏以提供应用拥有连续存储块、所有存储器或两者的错觉。执行操作系统的物理机器可以例如在转换后备缓冲器(TLB)中缓存页面表的一部分,并且使高速缓存,例如TLB,中的页面表的补充自动化,以使此虚拟到物理翻译加速。
在虚拟化环境,例如云环境,中,虚拟机向此翻译添加另一层。例如,虚拟机使用物理机器将翻译为虚拟机物理地址并然后翻译为主机物理地址,例如针对物理机器,的虚拟机虚拟地址。为了使此翻译加速,在TLB未命中时,页面漫步器(walker)可以执行嵌套页面漫步以用虚拟机虚拟地址到主机物理地址映射来补充TLB。有时,使用嵌套页面表来确定虚拟机虚拟地址到主机物理地址映射可以不经意地逐出存储在高速缓存中,例如物理硬件将在虚拟机的执行期间使用,的有用数据。
在一些实施方式中,系统可以指定存储嵌套页面表和其它不经常访问的数据的目标高速缓存层级并且在将数据存储在高速缓存中时强制实施目标高速缓存层级指定。例如,系统可以使用允许用户,例如管理员,指定特定高速缓存层级,例如L1、L2、L3等,的基本输入/输出系统(BIOS)设定来确定目标高速缓存层级作为存储不经常访问的数据的目标高速缓存层级。系统可以在引导时确定目标高速缓存层级并且在操作系统的执行期间将该目标高速缓存层级应用于不经常访问的数据,例如,不管由请求了不经常访问的数据的虚拟机或应用所使用的地址范围如何。
在一些示例中,系统可以将不经常访问的数据存储在处于和低于目标高速缓存层级的所有层级中,而不将不经常访问的数据存储在高于目标高速缓存层级的任何高速缓存层级中。例如,当处理器包括三级高速缓存层次并且目标高速缓存层级是L2时,系统可以将不经常访问的数据存储在L2高速缓存和L3高速缓存而非L1高速缓存中。
例如,高速缓存层级层次将高速缓存的最高层级定义为高速缓存的最小或最快或者最小且最快层级,例如L1高速缓存。高速缓存层级层次将其它高速缓存层级定义为比高速缓存的最高层级更慢或更大或者既更慢又更大的较低高速缓存层级,例如L2高速缓存和L3高速缓存。例如,高速缓存的最高层级,例如L1高速缓存,高于高速缓存的较低层级,并且高速缓存的较低层级,例如L2高速缓存和L3高速缓存,在高速缓存层级层次中低于最高高速缓存层级。中间高速缓存层级,例如L2高速缓存,低于最高高速缓存层级,例如L1高速缓存,并且高于最低高速缓存层级,例如L3高速缓存。在一些示例中,当高速缓存层级层次包括三个高速缓存层级时,目标高速缓存层级是中间高速缓存层级或最低高速缓存层级。
在下面对这些特征和附加特征进行更详细的描述。
图1是系统100的示例,其中中央处理单元102包括存储特定数据的目标高速缓存层级。特定数据可以是不经常访问的数据,诸如嵌套页面表。例如,处理器104可以在时间TA向高速缓存106提供对嵌套页面表的请求。高速缓存106接收该请求并确定所请求的嵌套页面表是否位于高速缓存106的特定高速缓存层级108a-c中。例如,高速缓存控制器110在时间TB确定所请求的嵌套页面表未被存储在高速缓存106中。
高速缓存106,例如高速缓存控制器110,在时间TC从存储器112,例如随机存取存储器,请求嵌套页面表。在时间TD,高速缓存106从存储器112接收嵌套页面表。
高速缓存控制器110在时间TE确定嵌套页面表满足不频发条件。不频发条件的满足指示数据被以这样的不常见速率访问,由此它仅应该被存储在不高于目标高速缓存层级的层级处的高速缓存中。可因数据具有特定类型或来自特定源或者被以不到阈值速率访问而满足不频发条件。例如,高速缓存控制器110例如使用数据的一个或多个属性来确定所接收到的数据是嵌套页面表还是另一类型的不经常访问的数据。数据为嵌套页面表满足不频发条件。
高速缓存控制器110例如使用数据的属性或标识目标高速缓存层级的系统变量来为不经常访问的数据确定目标高速缓存层级,并且在时间TF,将嵌套页面表存储在一些高速缓存层级中。例如,高速缓存106确定目标高速缓存层级是L2高速缓存108b并且将所接收到的嵌套页面表存储在L2高速缓存108b和L3高速缓存108c而非L1高速缓存108a中。
在时间TG,高速缓存106向处理器104提供所请求的嵌套页面表。例如,高速缓存106将数据从L2高速缓存108b提供给处理器104以便于执行应用,例如虚拟机。
当处理器104稍后请求例如与在时间TA请求的嵌套页面表相同的嵌套页面表并且该嵌套页面表仍然被存储在高速缓存106的至少一个高速缓存层级中时,例如在L3高速缓存108c或L2高速缓存108b和L3高速缓存108c两者中时,高速缓存106将嵌套页面表提供给处理器104,而不将嵌套页面表存储在高速缓存层级层次的高于目标高速缓存层级的层级中,例如而不将嵌套页面表存储在L1高速缓存108a中。例如,高速缓存106可以确定嵌套页面表被存储在L3高速缓存108c中,将嵌套页面表存储在L2高速缓存108b中,并且将嵌套页面表提供给处理器104,例如而不将嵌套页面表存储在L1高速缓存108a中。
在一些实施方式中,系统100按照顺序次序(例如,TA、TB等)执行动作。在一些实施方式中,系统100可以按照与这里所描述的次序不同的次序执行一个或多个动作。例如,高速缓存控制器110可以确定嵌套页面表不在高速缓存中并且然后确定嵌套页面表满足不频发条件。
在一些实施方式中,系统100可以将不经常访问的数据存储在高于目标高速缓存层级的高速缓存层级中,例如,可以将不经常访问的数据存储在L1高速缓存的高速缓存行中,并且不更新指示不经常访问的数据被存储在该高速缓存层级中的数据。例如,系统100可能不更新L2高速缓存中的最近最少使用(LRU)比特,例如,以减少时间重用的机会。系统100可以以正常方式,例如通过更新LRU比特,将数据存储在目标高速缓存层级以及在高速缓存层级层次中低于目标高速缓存层级的任何层级中。
在一些示例中,系统100可以将不经常访问的数据存储在特定高速缓存层级的LRU位置中。在一些示例中,系统100可以将不经常访问的数据存储在特定高速缓存的最近最多使用位置中。在一些示例中,系统100可以使用静态可配置的或动态的第N个最近使用的位置来存储不经常访问的数据。系统100可以使用不同的方法来确定针对每个高速缓存层级存储不经常访问的数据的位置,例如,不经常访问的数据所被存储的高速缓存行。
系统100可以确定针对每条数据存储不经常访问的数据的位置。例如,高速缓存106可以确定第一高速缓存行是用于第一不经常访问的数据的最近最少使用高速缓存行,并且然后,稍后确定第二高速缓存行是用于第二不经常访问的数据的最近最少使用高速缓存行。高速缓存106可以将特定不经常访问的数据存储在所对应的高速缓存行中。
在一些实施方式中,系统100可以包括各自针对特定地址范围的多个目标高速缓存层级。例如,中央处理单元102可以提供用于设定地址范围和相关高速缓存层级的指令。虚拟机监视器可以接收该指令并使用该指令来对每个地址范围应用不同的目标高速缓存层级。在一些示例中,高速缓存控制器110可以存储此范围信息。当高速缓存控制器110接收到对嵌套页面表的数据请求时,高速缓存控制器110可以确定嵌套页面表的地址是否落在地址范围内。如果高速缓存控制器110确定地址落在地址范围内,则高速缓存控制器110使用目标高速缓存层级来强制实施请求,例如,存储嵌套页面表的一个或多个高速缓存层级。
在一些实施方式中,系统100可以使用请求的数据的标识存储器类型的属性,例如元数据,来标识目标高速缓存层级。例如,中央处理单元102可以使用“WC_L2”作为存储器类型来指示L2高速缓存是目标高速缓存层级。基于请求的数据的存储器类型,例如存储嵌套页面表的页面,例如当不同的请求的数据具有标识不同的目标高速缓存层级的不同的存储器类型时,系统100可改变目标高速缓存层级。
在一些实施方式中,系统100可以将目标高速缓存层级存储在例如高速缓存106或处理器104的寄存器中。高速缓存106可以访问寄存器以确定目标高速缓存层级。中央处理单元102的处理器104或另一组件可以,例如在处理器104开始执行虚拟机时或者动态地响应于高速缓存106的高速缓存未命中率,而针对由处理器104执行的每个应用,来更新寄存器的值。
在一些实施方式中,高速缓存106中的所有的高速缓存条目,例如不同的高速缓存层级108a-c中的高速缓存行,全部具有相同的大小。例如,系统100可能至少部分地基于数据的大小确定或者可能不确定数据被不经常使用。在一些示例中,系统100将与不经常访问的数据相同大小的数据存储在最高高速缓存层级中,例如L1高速缓存中。
在一些实施方式中,系统100可以例如基于高速缓存106的高速缓存未命中率动态地确定目标高速缓存层级。当高速缓存未命中率不满足,例如高于,阈值高速缓存未命中率时,系统100可以将目标高速缓存层级移动到高速缓存层级层次中的较低层级。例如,当阈值高速缓存未命中率是3%并且高速缓存未命中率是5%时,系统100可以将目标高速缓存层级移动到高速缓存层级层次中的较低层级。当高速缓存未命中率满足,例如等于或者低于,阈值高速缓存未命中率时,系统100可以将目标高速缓存层级移动到高速缓存层级层次中的较高层级。例如,当阈值高速缓存未命中率是3%并且高速缓存未命中率是3%或2%时,系统100可以将目标高速缓存层级移动到高速缓存层级层次中的较高层级。系统100可以使用任何适当的方法来自动地确定并动态地确定高速缓存106的目标高速缓存层级。
在一些实施方式中,系统100可以为经常使用的数据确定目标高速缓存层级。目标高速缓存层级可以是存储经常访问的数据的最低高速缓存层级。例如,可以将经常访问的数据存储在L1高速缓存而非L2高速缓存或L3高速缓存中。
在一些实施方式中,系统100可以确定数据是否满足,例如匹配,特定模式,并且如果数据满足特定模式,则确定存储数据的目标高速缓存层级。数据可以是由模式定义的特定类型,对数据的访问可以满足模式,或者数据可以以另一适当的方式满足模式。例如,系统100可以使用该特定模式来例如基于数据或者访问数据的应用或装置的属性确定数据是流数据。数据的属性可以是例如数据的地址,并且系统100可以确定处理器104正在依次访问多个顺序地址。系统100可以使用特定模式或多个模式来确定数据是否落入威胁类别,例如用户的身份的欺骗、篡改、拒绝、诸如隐私违规或数据泄露的信息公开、拒绝服务或特权的提升。在一些示例中,系统100可以使用特定模式来确定数据是否是分散/聚集数据访问的一部分,例如,在所述分散/聚集数据访问中装置将来自多个缓冲器的数据写入到单个数据流中或者从数据流读取数据到多个缓冲区中。系统100可以使用数据的源或目的地地址来确定数据是否满足模式。
在这些实施方式中,系统100可以将数据存储在高速缓存层级层次中的目标高速缓存层级和一个或多个较低层级中,将数据存储在高速缓存层级层次中的目标高速缓存层级和一个或多个较高层级中,或者将数据仅存储在目标高速缓存层级中。系统100可以使用例如通过管理员或数据分析预先确定的或动态的,例如使用机器学习过程来确定的,特定模式。系统100可以使用任何适当的方法、模式或两者来确定是否将数据存储在目标高速缓存层级中。
图2是用于将数据存储在目标高速缓存层级中的过程200的流程图。例如,过程200可以由来自系统100的高速缓存106使用。
高速缓存接收指示定义在特定高速缓存的高速缓存层级层次内存储不经常访问的数据的高速缓存层级的目标高速缓存层级的标识符的输入(202)。例如,系统可以从管理员接收标识符并且将标识符提供给高速缓存。标识符可以针对特定应用或应用的类型或者针对所有应用。例如,标识符可以适用于所有虚拟机或特定虚拟机。
在一些实施方式中,系统可以向管理员呈现允许该管理员定义目标高速缓存层级的用户界面。用户界面可以包括允许管理员指定特定应用、应用类型或者应用及对应的目标高速缓存层级的组的一个或多个字段。
高速缓存接收对数据的请求(204)。例如,高速缓存从例如执行虚拟机的处理器接收请求。在一些示例中,高速缓存从存储器控制器、存储器管理单元、输入/输出单元、集成输入/输出单元(例如,在管芯上)或装置的另一组件接收请求。
高速缓存确定数据满足不频发条件(206)。例如,高速缓存确定数据的类型并且确定数据的类型是否满足不频发条件。在一些示例中,高速缓存可以例如基于对存储在高速缓存中的该类型的数据的访问来自动地确定不同类型的数据的频率值。这里,不频发条件可以是访问频率值阈值,并且如果数据的频率值低于频率值阈值,则确定满足不频发条件。
高速缓存确定目标高速缓存层级(208)。例如,高速缓存确定特定于在处理器上执行并对其请求了数据的应用的类型或特定应用的目标高速缓存层级。
高速缓存从存储器请求并接收数据(210)。存储器可以是任何适当类型的存储器,诸如随机存取存储器。
高速缓存将数据存储在目标高速缓存层级中(212)。高速缓存可以例如使用高速缓存层级层次来将数据存储在低于目标高速缓存层级的一个或多个层级中。例如,高速缓存可以将数据存储在仅L2高速缓存中。在一些示例中,高速缓存可以将数据存储在L2高速缓存和L3高速缓存以及可选地任何附加的较低高速缓存层级中。高速缓存可以将数据存储在目标高速缓存层级中,而不将数据存储在,在高速缓存层级层次中,比目标高速缓存层级高的高速缓存层级中。
在一些实施方式中,高速缓存将不经常访问的数据存储在在高速缓存层级层次中比目标高速缓存层级高的高速缓存层级中。在这些实施方式中,高速缓存不更新指示存储有不经常访问的数据的高速缓存行在在高速缓存层级层次中比目标高速缓存层级高的高速缓存层级中已被更新的比特。例如,高速缓存不更新最近最少使用(LRU)比特,但是更新最近最多使用(MRU)比特。
在一些实施方式中,高速缓存可以确定将在特定高速缓存层级中接下来将被覆写的高速缓存行并且将不经常访问的数据存储在该高速缓存行中。高速缓存可能不更新指示高速缓存行被覆写的比特。高速缓存可以使用任何适当的方法来确定将接下来将被覆写的高速缓存行。
高速缓存提供数据(214)。例如,高速缓存可以将数据提供给处理器。在一些示例中,例如当高速缓存被包括在诸如硬盘驱动器的存储器中时,高速缓存将数据提供给请求组件。
高速缓存使用特定高速缓存的高速缓存未命中率来更新目标高速缓存层级(216)。例如,高速缓存可以动态地且自动地确定高速缓存未命中率并且针对特定应用、应用的类型或者针对在装置上执行的所有应用来更新目标高速缓存层级。
目标高速缓存层级特定于特定中央处理单元。例如,当装置包括两个中央处理单元时,该装置针对所述中央处理单元的每一个包括一个目标高速缓存层级。在一些示例中,单个中央处理单元的每个处理器内核可以具有不同的目标高速缓存层级。在一些示例中,单个中央处理单元上的一个或多个处理器内核可以使用相同的目标高速缓存层级。例如,两个处理器内核可以共享相同的目标高速缓存层级,使得当目标高速缓存层级因两个处理器内核中的一个而改变时,目标高速缓存层级因两个处理器内核中的另一个而改变。
高速缓存接收对第二数据的第二请求(218)。第二数据可以用于执行与在步骤204中请求的数据相同的应用或者可以用于不同的应用。在一些示例中,在步骤204中请求的数据用于第一虚拟机而第二数据用于第二虚拟机。
高速缓存确定第二数据满足第二不频发条件(220)。第二不频发条件可以与在步骤206中使用的不频发条件相同或者可以是不同的不频发条件。例如,高速缓存对于不同的虚拟机来说可以具有不同的条件或阈值或者对于所有虚拟机或多个虚拟机来说可以具有相同的条件或阈值。
高速缓存确定第二目标高速缓存层级(222)。第二目标高速缓存层级可以与目标高速缓存层级不同或者可以是相同的。
高速缓存从存储器请求并接收第二数据(224)。例如,高速缓存可以从在步骤210中访问的相同存储器或不同的存储器请求第二数据。
高速缓存将第二数据存储在第二目标高速缓存层级中(226)。高速缓存可以将第二数据提供给请求装置,例如处理器。
上述过程200中的步骤的次序仅是说明性的,并且可按照不同的次序执行将数据存储在目标高速缓存层级中。例如,高速缓存可以接收对数据的请求,从存储器请求并接收数据,并且然后确定数据是否满足不频发条件,以及如果满足,则确定目标高速缓存层级。
在一些实施方式中,过程200可包括附加的步骤、更少的步骤,或者可将一些步骤划分成多个步骤。例如,高速缓存可以从存储器请求数据而不从存储器接收数据。在一些示例中,高速缓存可以仅执行步骤204至212或步骤202至214,或者过程200的步骤的某个其它子集。
在本说明书中描述的主题和功能操作的实施例可用包括本说明书中所公开的结构及其结构等同物的数字电子电路、有形地具体实现的计算机软件或固件、计算机硬件或者用它们中的一个或多个的组合加以实现。在本说明书中描述的主题的实施例可作为一个或多个计算机程序被实现,即,在有形非暂时性程序载体上编码以供由数据处理设备执行或者控制数据处理设备的操作的计算机程序指令的一个或多个模块。可替选地或另外,程序指令可被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号上,所述传播信号被生成来对信息进行编码以便于传输到适合的接收器设备以供由数据处理设备执行。计算机存储介质可以是机器可读存储装置、机器可读存储基板、随机或串行存取存储器装置,或它们中的一个或多个的组合。
术语“数据处理设备”指代数据处理硬件,并且包含用于处理数据的各种设备、装置和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。该设备还可以是或者进一步包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。该设备除了包括硬件之外还可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
也可以被称为或者描述为程序、软件、软件应用、模块、软件模块、脚本或代码的计算机程序可用任何形式的编程语言加以编写,所述编程语言包括编译或解释语言或声明性或过程语言,并且它可被以任何形式部署,包括作为独立程序或者作为适合于在计算环境中使用的模块、组件、子例行程序或其它单元。计算机程序可以但不必对应于文件系统中的文件。程序可存储在保持其它程序或数据的文件的一部分中,例如存储在标记语言文档中的一个或多个脚本中,可存储在专用于所述程序的单个文件中或者在多个协调文件中,例如存储一个或多个模块、子程序或代码的部分的文件中。计算机程序可被部署成在一个计算机上或者在位于一个站点处或者跨越多个站点分布并通过通信网络互连的多个计算机上执行。
在本说明书中描述的过程和逻辑流程可通过一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出执行功能来执行。过程和逻辑流程也可以由专用逻辑电路来执行,并且设备也可以作为专用逻辑电路被实现,所述专用逻辑电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
作为示例,适合于执行计算机程序的计算机包括通用或专用微处理器或两者,或任何其它种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行或者实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器装置。通常,计算机也将包括或者在操作上耦合以从用于存储数据的一个或多个海量存储装置,例如磁盘、磁光盘或光盘,接收数据或者将数据转移到用于存储数据的一个或多个海量存储装置或者两者。然而,计算机不必具有此类装置。此外,可将计算机嵌入在另一装置中,所述另一装置例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储装置,例如通用串行总线(USB)闪存驱动器等。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,作为示例包括半导体存储器器件,例如EPROM,EEPROM和闪速存储器器件;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路来补充,或者并入专用逻辑电路。
在图3中示出了一个这种类型的计算机的示例,图3示出通用计算机系统300的示意图。根据一个实施方式,系统300可被用于与先前所描述的计算机实现的方法中的任一个关联地描述的操作。系统300包括处理器310、存储器320、存储装置330和输入/输出装置340。组件310、320、330和340中的每一个使用系统总线350来互连。处理器310能够处理在系统300内执行的指令。在一个实施方式中,处理器310是单线程处理器。在另一实施方式中,处理器310是多线程处理器。处理器310能够处理存储在存储器320中或者在存储装置330上的指令,以在输入/输出装置340上显示用户界面的图形信息。
存储器320存储系统300内的信息。在一个实施方式中,存储器320是计算机可读介质。在一个实施方式中,存储器320是易失性存储器单元。在另一实施方式中,存储器320是非易失性存储器单元。
存储装置330能够为系统300提供海量存储。在一个实施方式中,存储装置330是计算机可读介质。在各种不同的实施方式中,存储装置330可以是软盘装置、硬盘装置、光盘装置或磁带装置。
输入/输出装置340为系统300提供输入/输出操作。在一个实施方式中,输入/输出装置340包括键盘和/或指点装置。在另一实施方式中,输入/输出装置340包括用于显示图形用户界面的显示单元。
虽然本说明书包含许多特定实施方式细节,但是这些不应被解释为对可以要求保护的范围构成限制,而是相反被解释为对可能特定于特定实施例的特征的描述。也可在单个实施例中相结合地实现在本说明书中在单独的实施例的上下文中描述的某些特征。相反,也可以单独地在多个实施例中或者按照任何适合的子组合实现在单个实施例的上下文中描述的各种特征。此外,尽管特征在上面可以被描述为按照某些组合行动或者因此甚至最初如此要求保护,然而来自要求保护的组合的一个或多个特征在一些情况下可被从组合中移除,并且所要求保护的组合可以针对子组合或子组合的变化。
类似地,虽然在附图中按照特定次序描绘操作,但是这不应被理解为要求按照所示的特定次序或按照顺序次序执行此类操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中要求这种分离,并且应该理解的是,所描述的程序组件和系统通常可被一起集成在单个软件产品中或者封装到多个软件产品中。
已经对主题的特定实施例进行了描述。其它实施例在以下权利要求书的范围内。例如,权利要求书中所记载的动作可按照不同的次序被执行并仍然实现所希望的结果。作为一个示例,附图中所描绘的过程不一定要求所示的特定次序或顺序次序来实现所希望的结果。在一些情况下,多任务处理和并行处理可以是有利的。在一些实施方式中,一个组件、组件的子集或以上硬件组件中的全部都可以用实现相同功能性的等效软件或混合组件替换。
Claims (20)
1.一种计算机实现的方法,所述方法包括:
从装置的组件接收对数据的请求;
确定所述数据满足不频发条件;
响应于确定所述数据满足所述不频发条件:
确定目标高速缓存层级,所述目标高速缓存层级定义在特定高速缓存的高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述目标高速缓存层级在所述高速缓存层级层次中比最高高速缓存层级低;
从不是所述装置的高速缓存的存储器请求并接收所述数据;并且
将所述数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述目标高速缓存层级的层级中;以及
将所述数据提供给所述组件。
2.根据权利要求1所述的方法,其中:
从所述装置的所述组件接收对数据的所述请求包括从装置的处理器接收对所述数据的所述请求;
将所述数据提供给所述组件包括将所述数据提供给所述处理器。
3.根据权利要求1或2所述的方法,其中:
从所述装置的所述组件接收对数据的所述请求包括从装置的存储器控制器接收对所述数据的所述请求;
将所述数据提供给所述组件包括将所述数据提供给所述存储器控制器。
4.根据权利要求1至3中的任一项所述的方法,其中:
从所述装置的所述组件接收对数据的所述请求包括从装置的存储器管理单元接收对所述数据的所述请求;
将所述数据提供给所述组件包括将所述数据提供给所述存储器管理单元。
5.根据权利要求1至4中的任一项所述的方法,其中:
从所述装置的所述组件接收对数据的所述请求包括从装置的输入/输出单元接收对所述数据的所述请求;
将所述数据提供给所述组件包括将所述数据提供给所述输入/输出单元。
6.根据权利要求1至5中的任一项所述的方法,包括:
确定对所述数据的所述请求包括对嵌套页面表的请求,其中确定所述数据满足所述不频发条件包括响应于确定对所述数据的所述请求包括对嵌套页面表的请求而确定所述数据满足所述不频发条件。
7.根据权利要求1至6中的任一项所述的方法,包括:
接收指示所述目标高速缓存层级的标识符的输入。
8.根据权利要求7所述的方法,其中接收指示所述目标高速缓存层级的所述标识符的所述输入包括从基本输入/输出系统或统一可扩展固件接口接收所述输入。
9.根据权利要求7或8所述的方法,其中接收指示所述目标高速缓存层级的所述标识符的所述输入包括从管理员接收所述输入的指示。
10.根据权利要求1至9中的任一项所述的方法,其中确定所述目标高速缓存层级包括使用所述特定高速缓存的高速缓存未命中率自动地确定所述目标高速缓存层级。
11.根据权利要求10所述的方法,其中使用所述特定高速缓存的所述高速缓存未命中率自动地确定所述目标高速缓存层级包括:
确定所述特定高速缓存的所述高速缓存未命中率不满足阈值未命中率;以及
响应于确定所述特定高速缓存的所述高速缓存未命中率不满足所述阈值未命中率,而将所述目标高速缓存层级改变为所述高速缓存层级层次中的较低高速缓存层级。
12.根据权利要求10所述的方法,其中使用所述特定高速缓存的所述高速缓存未命中率自动地确定所述目标高速缓存层级包括:
确定所述特定高速缓存的所述高速缓存未命中率满足阈值未命中率;以及
响应于确定所述特定高速缓存的所述高速缓存未命中率满足所述阈值未命中率,而将所述目标高速缓存改变为高于所述高速缓存层级层次中的较低高速缓存层级。
13.根据权利要求10至12中的任一项所述的方法,包括:
从所述处理器接收对第二数据的第二请求;
确定所述第二数据满足所述不频发条件;
确定更新的目标高速缓存层级,所述更新的目标高速缓存层级定义在所述特定高速缓存的所述高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述更新的目标高速缓存层级在所述高速缓存层级层次中比所述最高高速缓存层级低;
从不是所述装置的高速缓存的另一存储器请求并接收所述第二数据;
将所述第二数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述更新的目标高速缓存层级的层级中;以及
将所述第二数据提供给所述处理器。
14.根据权利要求1至13中的任一项所述的方法,其中:
从所述处理器接收对所述数据的所述请求包括在第一虚拟机的执行期间从所述处理器接收所述请求;以及
确定所述目标高速缓存层级包括确定特定于所述第一虚拟机的第一目标高速缓存层级,所述方法包括:
在第二虚拟机的执行期间从所述处理器接收对第二数据的第二请求;
确定所述第二数据满足第二不频发条件;
确定特定于所述第二虚拟机的第二目标高速缓存层级,所述第二目标高速缓存层级定义在所述特定高速缓存的所述高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述第二目标高速缓存层级在所述高速缓存层级层次中比所述最高高速缓存层级低;
从不是所述装置的高速缓存的另一存储器请求并接收所述第二数据;
将所述第二数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述第二目标高速缓存层级的层级中;以及将所述第二数据提供给所述处理器。
15.根据权利要求14所述的方法,其中:
确定特定于所述第一虚拟机的所述第一目标高速缓存层级包括使用存储在所述装置的第一寄存器中的数据来确定所述第一目标高速缓存层级;并且
确定特定于所述第二虚拟机的所述第二目标高速缓存层级包括使用存储在所述装置的第二不同寄存器中的数据来确定所述第二目标高速缓存层级。
16.根据权利要求1至15中的任一项所述的方法,其中确定所述目标高速缓存层级包括:
在从所述存储器接收到所述数据之后标识所述数据的属性;以及使用所述属性来确定所述数据满足所述不频发条件并且确定存储所述数据的所述目标高速缓存层级。
17.根据权利要求16所述的方法,包括:
从所述处理器接收对第二数据的第二请求;
确定所述第二数据满足第二不频发条件;
从不是所述装置的高速缓存的第二存储器请求并接收所述第二数据;
在从所述第二存储器接收到所述第二数据之后,使用所述第二数据的第二属性来确定第二目标高速缓存层级,所述第二目标高速缓存层级定义在所述特定高速缓存的所述高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述目标高速缓存层级在所述高速缓存层级层次中比所述最高高速缓存层级低;
将所述第二数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述目标高速缓存层级的层级中;以及
将所述第二数据提供给所述处理器。
18.根据权利要求1至17中的任一项所述的方法,包括:
接收对所述数据的第二请求;以及
从存储有所述数据的所述特定高速缓存的所述层级中检索所述数据,同时确保所述数据不被存储在所述高速缓存的在所述高速缓存层级层次中高于所述目标高速缓存层级的另一层级中。
19.一种存储指令的非暂时计算机可读存储介质,所述指令可由数据处理设备执行,并且在这种执行时,使所述数据处理执行操作,所述操作包括:
从装置的组件接收对数据的请求;
确定所述数据满足不频发条件;
响应于确定所述数据满足所述不频发条件:
确定目标高速缓存层级,所述目标高速缓存层级定义在特定高速缓存的高速缓存层级层次内存储不经常访问的数据的高速缓存层级,所述目标高速缓存层级在所述高速缓存层级层次中比最高高速缓存层级低;
从不是所述装置的高速缓存的存储器请求并接收所述数据;
将所述数据存储在所述特定高速缓存的在所述高速缓存层级层次中处于或者低于所述目标高速缓存层级的层级中;并且
在所述特定高速缓存的在所述高速缓存层级层次中高于所述目标高速缓存层级的特定层级中存储所述特定层级的最近最少使用高速缓存行中的所述数据,而不更新所述最近最少使用高速缓存行的最近最少使用比特;以及
将所述数据提供给所述组件。
20.一种系统,包括:
高速缓存;以及
非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质与所述高速缓存进行数据通信并存储指令,所述指令可由所述高速缓存执行,在这种执行时,使所述高速缓存执行操作,所述操作包括:
由所述高速缓存从装置的组件接收对数据的请求;
确定所述数据满足特定模式;
响应于确定所述数据满足所述特定模式:
确定定义在所述高速缓存的高速缓存层级层次内存储数据的高速缓存层级的目标高速缓存层级;
从不是所述装置的高速缓存的存储器请求并接收所述数据;并且
将所述数据存储在所述目标高速缓存层级中,而不是将所述数据存储在所述高速缓存的所述高速缓存层级中的全部中;以及
将所述数据提供给所述组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110187813.6A CN112905501B (zh) | 2015-04-29 | 2016-04-29 | 数据高速缓存 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/699,014 US9600417B2 (en) | 2015-04-29 | 2015-04-29 | Data caching |
US14/699,014 | 2015-04-29 | ||
PCT/US2016/030032 WO2016176551A1 (en) | 2015-04-29 | 2016-04-29 | Data caching |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110187813.6A Division CN112905501B (zh) | 2015-04-29 | 2016-04-29 | 数据高速缓存 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107438837A true CN107438837A (zh) | 2017-12-05 |
CN107438837B CN107438837B (zh) | 2021-03-12 |
Family
ID=56015106
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110187813.6A Active CN112905501B (zh) | 2015-04-29 | 2016-04-29 | 数据高速缓存 |
CN201680018844.6A Active CN107438837B (zh) | 2015-04-29 | 2016-04-29 | 数据高速缓存 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110187813.6A Active CN112905501B (zh) | 2015-04-29 | 2016-04-29 | 数据高速缓存 |
Country Status (9)
Country | Link |
---|---|
US (3) | US9600417B2 (zh) |
EP (3) | EP3657339B1 (zh) |
CN (2) | CN112905501B (zh) |
DE (1) | DE202016107437U1 (zh) |
DK (2) | DK3657339T3 (zh) |
FI (1) | FI3657339T3 (zh) |
HK (1) | HK1245437A1 (zh) |
TW (2) | TWI627534B (zh) |
WO (1) | WO2016176551A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112446478A (zh) * | 2019-09-05 | 2021-03-05 | 美光科技公司 | 数据存储装置中的高速缓存操作的智能优化 |
CN112667847A (zh) * | 2019-10-16 | 2021-04-16 | 北京奇艺世纪科技有限公司 | 数据缓存方法、数据缓存装置和电子设备 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3089035A1 (en) * | 2015-04-30 | 2016-11-02 | Virtual Open Systems | Virtualization manager for reconfigurable hardware accelerators |
US10127156B1 (en) * | 2016-09-29 | 2018-11-13 | EMC IP Holding Company LLC | Caching techniques |
CN110020290B (zh) * | 2017-09-29 | 2022-12-13 | 腾讯科技(深圳)有限公司 | 网页资源缓存方法、装置、存储介质及电子装置 |
TWI681293B (zh) | 2018-01-10 | 2020-01-01 | 瑞昱半導體股份有限公司 | 暫存記憶體處理方法、暫存記憶體程式與記憶裝置 |
US11500674B2 (en) * | 2018-06-26 | 2022-11-15 | Intel Corporation | Circuitry with adaptive memory assistance capabilities |
TWI707272B (zh) | 2019-04-10 | 2020-10-11 | 瑞昱半導體股份有限公司 | 可執行指令的電子裝置以及指令執行方法 |
US11513958B1 (en) | 2019-05-29 | 2022-11-29 | Marvell Asia Pte, Ltd. | Shared mid-level data cache |
CN110716814B (zh) * | 2019-09-17 | 2022-05-13 | 武汉中海庭数据技术有限公司 | 一种进程间大数据量通讯的性能优化方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802563A (en) * | 1996-07-01 | 1998-09-01 | Sun Microsystems, Inc. | Efficient storage of data in computer system with multiple cache levels |
US20090164733A1 (en) * | 2007-12-21 | 2009-06-25 | Mips Technologies, Inc. | Apparatus and method for controlling the exclusivity mode of a level-two cache |
US20090187731A1 (en) * | 2008-01-17 | 2009-07-23 | International Business Machines Corporation | Method for Address Translation in Virtual Machines |
US20100042773A1 (en) * | 2008-08-12 | 2010-02-18 | Phison Electronics Corp. | Flash memory storage system and data writing method thereof |
CN102103547A (zh) * | 2009-12-16 | 2011-06-22 | 英特尔公司 | 替换高速缓冲存储器中的高速缓存行 |
CN102103552A (zh) * | 2009-12-22 | 2011-06-22 | Nxp股份有限公司 | 安全高速缓存存储器架构 |
US8495320B1 (en) * | 2009-07-22 | 2013-07-23 | Marvell International Ltd. | Method and apparatus for storing data in a flash memory including single level memory cells and multi level memory cells |
CN103324585A (zh) * | 2012-03-20 | 2013-09-25 | 苹果公司 | 分级缓存的处理器中的协作预取处理 |
WO2015014302A1 (zh) * | 2013-07-31 | 2015-02-05 | 华为技术有限公司 | 基于多级缓存的数据读/写方法、装置和计算机系统 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021470A (en) | 1997-03-17 | 2000-02-01 | Oracle Corporation | Method and apparatus for selective data caching implemented with noncacheable and cacheable data for improved cache performance in a computer networking system |
US6115795A (en) * | 1997-08-06 | 2000-09-05 | International Business Machines Corporation | Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system |
US6647466B2 (en) | 2001-01-25 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy |
US7552282B1 (en) * | 2004-08-04 | 2009-06-23 | Emc Corporation | Method, computer readable medium, and data storage system for selective data replication of cached data |
TWI265414B (en) * | 2005-07-25 | 2006-11-01 | Ind Tech Res Inst | Data caching method and computer program product therefor |
US7337276B2 (en) * | 2005-08-11 | 2008-02-26 | International Business Machines Corporation | Method and apparatus for aging data in a cache |
US7984241B2 (en) | 2005-09-16 | 2011-07-19 | Hewlett-Packard Development Company, L.P. | Controlling processor access to cache memory |
US7757045B2 (en) | 2006-03-13 | 2010-07-13 | Intel Corporation | Synchronizing recency information in an inclusive cache hierarchy |
US7596662B2 (en) | 2006-08-31 | 2009-09-29 | Intel Corporation | Selective storage of data in levels of a cache memory |
US8166229B2 (en) | 2008-06-30 | 2012-04-24 | Intel Corporation | Apparatus and method for multi-level cache utilization |
US8032707B2 (en) * | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
US8190823B2 (en) * | 2008-09-18 | 2012-05-29 | Lenovo (Singapore) Pte. Ltd. | Apparatus, system and method for storage cache deduplication |
US8601213B2 (en) * | 2008-11-03 | 2013-12-03 | Teradata Us, Inc. | System, method, and computer-readable medium for spool cache management |
US8606997B2 (en) * | 2008-12-23 | 2013-12-10 | Oracle America, Inc. | Cache hierarchy with bounds on levels accessed |
US8291172B2 (en) | 2010-04-27 | 2012-10-16 | Via Technologies, Inc. | Multi-modal data prefetcher |
US8838935B2 (en) * | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
US8788742B2 (en) * | 2011-05-23 | 2014-07-22 | International Business Machines Corporation | Using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device |
CN102841857B (zh) * | 2012-07-25 | 2015-02-25 | 龙芯中科技术有限公司 | 缓存预测执行的处理器与装置及方法 |
US8949544B2 (en) | 2012-11-19 | 2015-02-03 | Advanced Micro Devices, Inc. | Bypassing a cache when handling memory requests |
US20140258628A1 (en) * | 2013-03-11 | 2014-09-11 | Lsi Corporation | System, method and computer-readable medium for managing a cache store to achieve improved cache ramp-up across system reboots |
US9218291B2 (en) | 2013-07-25 | 2015-12-22 | International Business Machines Corporation | Implementing selective cache injection |
-
2015
- 2015-04-29 US US14/699,014 patent/US9600417B2/en active Active
-
2016
- 2016-04-29 TW TW106131550A patent/TWI627534B/zh active
- 2016-04-29 DK DK19213959.0T patent/DK3657339T3/da active
- 2016-04-29 EP EP19213959.0A patent/EP3657339B1/en active Active
- 2016-04-29 DE DE202016107437.1U patent/DE202016107437U1/de active Active
- 2016-04-29 CN CN202110187813.6A patent/CN112905501B/zh active Active
- 2016-04-29 EP EP16723590.2A patent/EP3262513B1/en active Active
- 2016-04-29 EP EP19213908.7A patent/EP3657338A1/en active Pending
- 2016-04-29 WO PCT/US2016/030032 patent/WO2016176551A1/en active Application Filing
- 2016-04-29 DK DK16723590.2T patent/DK3262513T3/da active
- 2016-04-29 FI FIEP19213959.0T patent/FI3657339T3/fi active
- 2016-04-29 TW TW105113569A patent/TWI606340B/zh active
- 2016-04-29 CN CN201680018844.6A patent/CN107438837B/zh active Active
-
2017
- 2017-02-10 US US15/429,579 patent/US10303604B2/en active Active
-
2018
- 2018-04-03 HK HK18104417.7A patent/HK1245437A1/zh unknown
-
2019
- 2019-04-09 US US16/379,303 patent/US10884928B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802563A (en) * | 1996-07-01 | 1998-09-01 | Sun Microsystems, Inc. | Efficient storage of data in computer system with multiple cache levels |
US20090164733A1 (en) * | 2007-12-21 | 2009-06-25 | Mips Technologies, Inc. | Apparatus and method for controlling the exclusivity mode of a level-two cache |
US20090187731A1 (en) * | 2008-01-17 | 2009-07-23 | International Business Machines Corporation | Method for Address Translation in Virtual Machines |
US20100042773A1 (en) * | 2008-08-12 | 2010-02-18 | Phison Electronics Corp. | Flash memory storage system and data writing method thereof |
US8495320B1 (en) * | 2009-07-22 | 2013-07-23 | Marvell International Ltd. | Method and apparatus for storing data in a flash memory including single level memory cells and multi level memory cells |
CN102103547A (zh) * | 2009-12-16 | 2011-06-22 | 英特尔公司 | 替换高速缓冲存储器中的高速缓存行 |
CN102103552A (zh) * | 2009-12-22 | 2011-06-22 | Nxp股份有限公司 | 安全高速缓存存储器架构 |
CN103324585A (zh) * | 2012-03-20 | 2013-09-25 | 苹果公司 | 分级缓存的处理器中的协作预取处理 |
WO2015014302A1 (zh) * | 2013-07-31 | 2015-02-05 | 华为技术有限公司 | 基于多级缓存的数据读/写方法、装置和计算机系统 |
CN104346294A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 基于多级缓存的数据读/写方法、装置和计算机系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112446478A (zh) * | 2019-09-05 | 2021-03-05 | 美光科技公司 | 数据存储装置中的高速缓存操作的智能优化 |
CN112667847A (zh) * | 2019-10-16 | 2021-04-16 | 北京奇艺世纪科技有限公司 | 数据缓存方法、数据缓存装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
TW201706854A (zh) | 2017-02-16 |
TW201743215A (zh) | 2017-12-16 |
US10303604B2 (en) | 2019-05-28 |
US20160321176A1 (en) | 2016-11-03 |
DK3262513T3 (da) | 2020-06-22 |
CN107438837B (zh) | 2021-03-12 |
EP3657339A1 (en) | 2020-05-27 |
US20190236010A1 (en) | 2019-08-01 |
HK1245437A1 (zh) | 2018-08-24 |
CN112905501B (zh) | 2022-08-12 |
TWI606340B (zh) | 2017-11-21 |
US20170153977A1 (en) | 2017-06-01 |
TWI627534B (zh) | 2018-06-21 |
EP3657339B1 (en) | 2022-09-28 |
US10884928B2 (en) | 2021-01-05 |
DK3657339T3 (da) | 2022-11-28 |
EP3262513A1 (en) | 2018-01-03 |
WO2016176551A1 (en) | 2016-11-03 |
DE202016107437U1 (de) | 2017-01-16 |
EP3262513B1 (en) | 2020-03-18 |
EP3657338A1 (en) | 2020-05-27 |
CN112905501A (zh) | 2021-06-04 |
US9600417B2 (en) | 2017-03-21 |
FI3657339T3 (fi) | 2023-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107438837A (zh) | 数据高速缓存 | |
CN105493053B (zh) | 多核处理器及更新多核处理器中的高速缓存的方法 | |
US9501419B2 (en) | Apparatus, systems, and methods for providing a memory efficient cache | |
US8583874B2 (en) | Method and apparatus for caching prefetched data | |
KR102437775B1 (ko) | 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법 | |
GB2509755A (en) | Partitioning a shared cache using masks associated with threads to avoiding thrashing | |
JP6630449B2 (ja) | 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換 | |
US20230102891A1 (en) | Re-reference interval prediction (rrip) with pseudo-lru supplemental age information | |
JP2019511045A (ja) | 実行許可に基づくキャッシュのライトアロケーション(Write−Allocation) | |
US11593268B2 (en) | Method, electronic device and computer program product for managing cache | |
CN109478164A (zh) | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 | |
US20180052778A1 (en) | Increase cache associativity using hot set detection | |
US11899642B2 (en) | System and method using hash table with a set of frequently-accessed buckets and a set of less frequently-accessed buckets | |
US20190034342A1 (en) | Cache design technique based on access distance | |
US11704250B2 (en) | Using request class and reuse recording in one cache for insertion policies of another cache | |
US11841799B2 (en) | Graph neural network accelerator with attribute caching |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1245437 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |