CN102483718B - 虚拟化环境中的高速缓存分区 - Google Patents
虚拟化环境中的高速缓存分区 Download PDFInfo
- Publication number
- CN102483718B CN102483718B CN201080037627.4A CN201080037627A CN102483718B CN 102483718 B CN102483718 B CN 102483718B CN 201080037627 A CN201080037627 A CN 201080037627A CN 102483718 B CN102483718 B CN 102483718B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- cache
- partitioning
- controls
- speed cache
- 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
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在虚拟机监视器中提供了一种用于在虚拟化环境中提供高速缓存分区的机制。所述机制将虚拟标识(ID)分配给所述虚拟化环境中的每个虚拟机。处理核心将所述虚拟机的所述虚拟ID存储在专用寄存器中。所述机制还在分区表中为所述虚拟机创建表项。所述机制可使用垂直(路)分区和/或水平分区对共享高速缓存进行分区。所述分区表中的表项包括垂直分区控制和水平分区控制。对于每次高速缓存访问,所述虚拟机将所述虚拟ID连同地址一起传递到所述共享高速缓存。如果所述高速缓存访问导致未命中,则所述共享高速缓存使用所述分区表选择牺牲高速缓存行以便替换。
Description
技术领域
本申请一般地涉及改进的数据处理装置和方法,更具体地说,涉及一种用于提供改进的可重新配置的高速缓存的装置和方法。
背景技术
高速缓存用于加快数据传输,并且可以是临时或永久的。每台计算机中都有存储器高速缓存以加快指令执行以及数据检索和更新。这些临时高速缓存用作登台区域并且其内容不断变化。存储器高速缓存或“CPU高速缓存”是桥接主存储器和中央处理单元(CPU)的存储器组(bank)。存储器高速缓存比主存储器快,并允许以较高速度执行指令以及读取和写入数据。指令和数据以固定块(称为高速缓存“行(line)”)从主存储器传输到高速缓存。
虚拟机是在计算机系统内的一个隔离分区中运行的操作系统连同一个或多个应用的实例。虚拟机监视器能够使不同操作系统同时在同一计算机中运行并防止应用相互干扰。这不同于双重引导或多重引导环境,其中用户在启动时只能选择一个操作系统。
每个虚拟机都如同一个机器,并且它好像拥有整台计算机那样运行。每个虚拟机分区中的操作系统可以被称为“客户(guest)操作系统”,并且它们通过虚拟机监视器(VMM)与硬件通信。VMM为每个虚拟机“虚拟化”诸如处理器、存储器、输入/输出(I/O)适配器之类的硬件和其他资源。
利用虚拟化,多个操作系统可以在同一服务器中运行,从而无需将单个机器专用于一个应用。新旧应用可以同时在多个具有许多执行线程的核心服务器中通过它们各自的操作系统运行,这节省了空间和功耗。无需购买新的硬件即可部署新版本的操作系统和新的应用。
因此,本领域需要解决上述问题。
发明内容
从第一方面来看,本发明提供了一种在数据处理系统中对虚拟化环境中的共享高速缓存进行分区的方法。所述方法包括将虚拟标识符分配给虚拟机以及在分区表中为所述虚拟机创建表项。所述表项包括垂直分区控制和水平分区控制。所述方法还包括接收来自所述虚拟机的高速缓存访问请求,以及响应于所述高速缓存访问请求导致高速缓存未命中,根据所述分区表内与所述虚拟机对应的所述表项中的所述垂直分区控制和所述水平分区控制而写入所述共享高速缓存。
从另一方面来看,本发明提供了一种计算机程序产品,所述计算机程序产品包括提供计算机可读程序的计算机可用或可读介质。所述计算机可读程序在计算设备上执行时导致所述计算设备执行上面针对方法示例性实施例描述的各种操作及其组合。
从另一方面来看,本发明提供了一种对虚拟化环境中的共享高速缓存进行分区的装置。所述装置包括共享高速缓存阵列和共享高速缓存控制器。所述共享高速缓存控制器被配置为:接收来自虚拟机的高速缓存访问请求,以及响应于所述高速缓存访问请求导致高速缓存未命中,根据分区表内与所述虚拟机对应的表项中的垂直分区控制和水平分区控制而写入所述共享高速缓存阵列。
从另一方面来看,本发明提供了一种存储在计算机可读介质上并可载入数字计算机的内部存储器的计算机程序,所述计算机程序包括软件代码部分,当所述程序在计算机上运行时,所述软件代码部分用于执行本发明的步骤。
本发明的这些和其他特征和优点将在以下对本发明的实例实施例的详细说明中进行描述,或者鉴于以下对本发明的实例实施例的详细说明,本发明的这些和其他特征和优点将对本领域的技术人员变得显而易见。
附图说明
现在仅通过实例的方式参考如以下附图所示的优选实施例描述本发明:
图1示出了根据现有技术并且其中可以实现本发明的一个优选实施例的数据处理系统的方块图;其中可以实现示例性实施例的各方面;
图2示出了根据本发明的一个优选实施例的实例虚拟化环境的方块图;
图3示出了根据本发明的一个优选实施例的共享高速缓存的垂直和水平分区;
图4是示出根据本发明的一个优选实施例的用于虚拟化环境中的高速缓存分区的分区表的方块图;
图5示出了根据本发明的一个优选实施例的虚拟化环境中的共享高速缓存的垂直分区;
图6示出了根据本发明的一个优选实施例的虚拟化环境中的共享高速缓存的水平分区;
图7是示出根据本发明的一个优选实施例的虚拟化环境中的高速缓存分区的虚拟机监视器的操作的流程图;以及
图8是示出根据本发明的一个优选实施例的虚拟化环境中的共享高速缓存的操作的流程图。
具体实施方式
示例性实施例在虚拟机监视器中提供了一种用于在虚拟化环境中提供高速缓存分区的机制。所述机制将虚拟标识(ID)分配给所述虚拟化环境中的每个虚拟机。处理核心将所述虚拟机的所述虚拟ID存储在专用寄存器中。所述机制还在分区表中为所述虚拟机创建表项。
所述机制可以使用垂直(路)分区和/或水平分区对共享高速缓存进行分区。所述分区表中的表项包括垂直分区控制和水平分区控制。根据一个示例性实施例,对于8路高速缓存,所述垂直分区控制包括8位掩码。根据一个示例性实施例,所述水平分区控制包括4位掩码和4位偏移。所述4位掩码确定多个分区,以及所述4位偏移确定第一位置(行)。
对于每次高速缓存访问,所述虚拟机将所述虚拟ID连同地址一起传递到所述共享高速缓存。如果所述高速缓存访问导致未命中,则所述共享高速缓存使用所述分区表选择牺牲高速缓存行(victim cache line)以便替换。牺牲高速缓存行是作为数据替换的候选者的高速缓存行。
因此,示例性实施例可以用于多种不同类型的数据处理环境,包括分布式数据处理环境、单个数据处理设备等。为了提供描述示例性实施例的特定元素和功能的上下文,下面提供了图1和2作为其中可以实现示例性实施例的各方面的实例环境。尽管遵照图1和2的描述将主要专注于单个数据处理设备实施方式,但这仅是一个实例而并非旨在声明或暗示对本发明的特征的任何限制。相反,示例性实施例旨在包括分布式数据处理环境。
现在参考附图,具体地说,参考图1和2,提供了其中可以实现本发明的示例性实施例的数据处理环境的实例图。应该理解,图1和2仅是实例,并非旨在断言或暗示对其中可以实现本发明的各方面或实施例的环境的任何限制。可以对描述的环境做出许多修改而不偏离本发明的范围。
现在参考附图,图1是其中可以实现示例性实施例的各方面的数据处理系统的方块图。数据处理系统100是计算机的一个实例,其中可以针对示例性实施例定位实施各过程的计算机可用程序代码或指令。在此示例性实例中,数据处理系统100包括通信结构102,通信结构102在处理器单元104、存储器106、永久性存储装置108、通信单元110、输入/输出(I/O)单元112和显示器114之间提供通信。
处理器单元104用于执行可以加载到存储器106中的软件指令。处理器单元104可以是包括一个或多个处理器的集合,或者可以是多处理器核心,具体取决于特定实施方式。此外,处理器单元104可以使用一个或多个其中主处理器与辅助处理器存在于单个芯片上的异构处理器系统实施。作为另一个示例性实例,处理器单元104可以是包含多个相同类型处理器的对称多处理器系统。
存储器106和永久性存储装置108是存储设备116的实例。存储设备是任何一个能够临时和/或永久存储信息(例如但不限于数据、功能形式的程序代码和/或其他适合的信息)的硬件。在这些实例中,存储器106例如可以是随机存取存储器或任何其他适合的易失性或非易失性存储设备。永久性存储装置108可以采取各种形式,具体取决于特定实施方式。例如,永久性存储装置108可以包含一个或多个组件或设备。例如,永久性存储装置108可以是硬盘驱动器、闪存、可重写光盘、可重写磁带或上述各项的某种组合。永久性存储装置108使用的介质还可以是可移动的。例如,可以使用可移动硬盘驱动器作为永久性存储装置108。
处理单元104可以具有高速缓存134。高速缓存134可以是0级(L0)和/或1级(L1)高速缓存。存储器106可以具有高速缓存136,高速缓存136例如是可以2级(L2)高速缓存或3级(L3)高速缓存。存储器106可以是在多个线程或多个处理单元之间共享的共享存储器。因此,高速缓存136可以是共享高速缓存。
在这些实例中,通信单元110提供与其他数据处理系统或设备的通信。在这些实例中,通信单元110是网络接口卡。通信单元110可以通过使用物理和无线通信链路二者之一或全部提供通信。
输入/输出单元112允许与可以连接到数据处理系统100的其他设备进行数据的输入和输出。例如,输入/输出单元112可以提供连接以便通过键盘、鼠标和/或某些其他适合的输入设备实现用户输入。此外,输入/输出单元112可以将输出发送到打印机。显示器114提供用于向用户显示信息的机制。
用于操作系统、应用和/或程序的指令可以位于存储设备116中,存储设备116通过通信结构102与处理器单元104通信。在这些示例性实例中,所述指令以功能形式位于永久性存储装置108上。这些指令可以加载到存储器106中以便由处理器单元104执行。处理器单元104可以使用可位于存储器(如存储器106)中的计算机实现的指令执行不同实施例的过程。
这些指令被称为程序代码、计算机可用程序代码或计算机可读程序代码并可由处理器单元104中的处理器读取和执行。不同实施例中的所述程序代码可以包含在不同物理或有形计算机可读介质(例如存储器106或永久性存储装置108)上。
程序代码118以功能形式位于可选择性地移除的计算机可读介质120上,并可以加载或传输到数据处理系统100以便由处理器单元104执行。在这些实例中,程序代码118和计算机可读介质120形成计算机程序产品122。在一个实例中,计算机可读介质120可以采取有形形式,例如插入或放入属于永久性存储装置108的一部分的驱动器或其他设备中的光盘或磁盘,以便传输到存储设备(例如属于永久性存储装置108的一部分的硬盘驱动器)。在有形形式中,计算机可读介质120还可以采取永久性存储装置的形式,例如连接到数据处理系统100的硬盘驱动器、拇指驱动器或闪存。有形形式的计算机可读介质120也被称为计算机可记录存储介质。在某些情况下,计算机可读介质120可能不可移动。
备选地,程序代码118可以通过到通信单元110的通信链路和/或通过到输入/输出单元112的连接从计算机可读介质120传输到数据处理系统100。在示例性实例中,所述通信链路和/或连接可以是物理或无线的。所述计算机可读介质还可以采取非有形介质的形式,例如包含所述程序代码的通信链路或无线传输。
在某些示例性实施例中,程序代码118可以通过网络从其他设备或数据处理系统下载到永久性存储装置108以便在数据处理系统100内使用。例如,存储在服务器数据处理系统内的计算机可读存储介质中的程序代码可以通过网络从所述服务器下载到数据处理系统100。提供程序代码118的数据处理系统可以是服务器计算机、客户端计算机或者能够存储和传输程序代码118的某种其他设备。
针对数据处理系统100示出的不同组件并非旨在提供对其中可以实现不同实施例的方式的架构限制。可以在包括针对数据处理系统100示出的这些组件之外或替代这些组件的组件的数据处理系统中实现不同的示例性实施例。图1中示出的其他组件可以不同于示出的示例性实例。可以使用任何能够执行程序代码的硬件设备或系统实现不同的实施例。作为一个实例,所述数据处理系统可以包括与无机组件集成的有机组件和/或可以完全由除人以外的有机组件组成。例如,存储设备可以包括有机半导体。
作为另一个实例,数据处理系统100中的存储设备是任何可以存储数据的硬件装置。存储器106、永久性存储装置108和计算机可读介质120是有形形式的存储设备的实例。
在另一个实例中,总线系统可以用于实施通信结构102,并且可以包括一个或多个总线(例如系统总线或输入/输出总线)。当然,所述总线系统可以使用任何适合类型的架构实施,所述架构在连接到所述总线系统的不同组件或设备之间提供数据传输。此外,通信单元可以包括一个或多个用于传输和接收数据的设备,例如调制解调器或网络适配器。此外,存储器例如可以是存储器106或者例如在可以存在于通信结构102中的接口和存储器控制器集线器中发现的高速缓存。
图2是其中可以实现示例性实施例的各方面的实例虚拟化环境的方块图。虚拟化环境200中的硬件可以例如作为图1中的数据处理系统100实施。虚拟化环境200包括虚拟机210、220和230、虚拟机监视器250以及资源260。操作系统212、222和232分别在虚拟机210、220和230内执行。操作系统212、222和232可以是单个操作系统的多个副本或同时在虚拟化环境200内运行的多个异构操作系统。
虚拟机监视器250为虚拟机210、220和230分配资源260。资源260例如可以包括处理器261-263、存储器264和265、服务处理器266、高速缓存267和268、存储装置269和I/O适配器270-272。例如,虚拟机监视器250可以为每个虚拟机分配“虚拟处理器”,从虚拟机的角度,该“虚拟处理器”似乎是单个处理器。虚拟处理器可以是多线程处理器核心的线程、一个处理器核心、多个处理器核心、多核处理器或多个处理器。
虚拟机监视器250为虚拟机210、220和230执行多种功能和服务以创建和实施虚拟化环境200的分区。虚拟机监视器250例如可以是在服务处理器266上运行的软件或固件。系统管理程序软件是提供的服务器固件的一个实例。固件是存储在存储器芯片中的无需电力即可保持其内容的“软件”,所述存储器芯片例如只读存储器(ROM)、可编程ROM(PROM)、可擦写可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)以及非易失性随机存取存储器(非易失性RAM)。因此,虚拟机监视器250通过对虚拟化环境200的所有硬件资源进行虚拟化,允许同时执行独立操作系统映像212、222和232。IBM是国际商业机器公司的商标,在全球许多管辖范围内进行了注册。
更具体地说,资源260包括高速缓存267和高速缓存268。因此,高速缓存267和高速缓存268可以是共享高速缓存。虚拟化环境可能需要性能保证。例如,为使虚拟机满足性能目标,虚拟机可能需要特定数量的高速缓存。因此,可以使用高速缓存着色(coloring)或路分区对所述高速缓存进行分区。但是,共享高速缓存中的干扰可能与性能保证不一致。
根据本发明的一个优选实施例,在虚拟机监视器250中提供了一种用于在虚拟化环境200中提供高速缓存分区的机制。所述机制为虚拟化环境200中的每个虚拟机210、220和230分配虚拟标识(ID)。所述机制在分区表中为所述虚拟机创建表项。所述机制可以使用垂直(路)分区和/或水平分区对共享高速缓存进行分区。所述分区表中的表项包括垂直分区控制和水平分区控制。
图3示出了根据本发明的一个优选实施例的共享高速缓存的垂直和水平分区。在所示实例中,共享高速缓存是8路高速缓存;因此,垂直分区也可以被称为“路分区”。也就是说,在垂直分区中,虚拟机监视器可以为虚拟机分配共享高速缓存的一个或多个列或路。在所示实例中,共享高速缓存的每个行可以被称为“集合”或“同余类”。因此,在水平分区中,虚拟机监视器可以为虚拟机分配共享高速缓存的一个或多个行或集合。
图4是示出根据本发明的一个优选实施例的虚拟化环境中的高速缓存分区的分区表的方块图。所述虚拟机监视器为虚拟机分配虚拟ID 402。虚拟ID 402是对分区表410的索引。所述虚拟机监视器还在分区表410中为所述虚拟机创建由虚拟ID 402索引的表项。分区表410中的每个表项包括垂直分区控制412和/或水平分区控制414。
分配给虚拟机的处理器核心在专用寄存器中存储虚拟ID 402。虚拟ID402是所述虚拟机的架构状态的一部分;因此,在虚拟机切换过程中保存虚拟ID 402。所述虚拟机将其虚拟ID 402连同地址一起传递到共享高速缓存。如果高速缓存访问导致高速缓存未命中,则共享高速缓存使用虚拟ID402和分区表410选择牺牲行。
图5示出了根据本发明的一个优选实施例的虚拟化环境中的共享高速缓存的垂直分区。垂直分区控制可以包括位掩码,其中用于共享高速缓存的每个路的位不超过1位。例如,对于8路高速缓存,垂直分区控制将包括一个8位掩码。第一虚拟机的位掩码1502可以是“0b11000011”,这指示所述第一虚拟机使用路0、路1、路6和路7。第二虚拟机的位掩码2504可以是“0b00110011”,这指示所述第二虚拟机使用路2、路3、路6和路7。因此,在上面的实例中,所述虚拟机具有两个专用垂直分区(对于第一虚拟机为路0和路1,对于第二虚拟机为路2和路3)以及两个共享虚拟分区(即,路6和路7)。
图6示出了根据本发明的一个优选实施例的虚拟化环境中的共享高速缓存的水平分区。水平分区控制可以包括掩码和分区偏移。假设具有16个水平分区,则水平分区控制可以包括一个4位掩码和一个4位偏移。水平分区的数量是2的幂(所述幂等于掩码中的位数),在此实例中为24或16。因此,水平分区是分区0到分区15。
掩码指示虚拟机可以使用何种相对位置。换言之,掩码指示要使用多少个分区。偏移指示第一位置在何处。因此,掩码“0b0000”和偏移“0b0001”指示虚拟机使用分区1。作为另一个实例,掩码“0b0001”和偏移“0b0010”指示虚拟机使用分区2和分区3。
给定地址610包括标记(tag)612、分区ID 614、下标(low index)616和行偏移618。分区ID 614具有与掩码602相同的位数。分区ID 614和掩码进行“与”的结果是此虚拟机可以使用的第一水平分区的位置。此结果加上偏移604指向具有给定地址610的对应位置。下标616是选定行内到对应行的位置的索引。
选择对应行或同余集之后,使用垂直分区信息在行中选择牺牲行。垂直分区信息可用于扩展已知替换策略。例如,常用替换策略是替换最近最少使用(LRU)高速缓存行。LRU策略可以扩展为选择存储在此虚拟机可以使用的垂直分区中的LRU行。如果虚拟机的位掩码2502为“0b00110011”,则选择来自路2、路3、路6和路7的LRU行作为牺牲行。
垂直分区的数量必须小于或等于关联性(每行的大小)。每个虚拟机必须使用2的水平分区数的幂。其他虚拟机无法容易地使用未使用的专用分区。
在一个备选实施例中,分区信息可以被视为提示(hint)。换言之,虚拟机可以使用虚拟机监视器在分区表中分配的垂直和/或水平分区,但可以决定不遵循所分配的分区。在一个实例实施例中,虚拟机可以在考虑分区表中的所分配分区之前选择未使用的行。
如本领域的技术人员将理解的,本发明可以体现为系统、方法、计算机程序产品或计算机程序。因此,本发明可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了在此通常被称为“电路”、“模块”或“系统”的软件和硬件方面的实施例的形式。此外,本发明可以采取体现在任何有形表达介质(在介质中包含计算机可用程序代码)中的计算机程序产品的形式。
可以使用一个或多个计算机可用或计算机可读介质的任意组合。所述计算机可用或计算机可读介质例如可以是(但不限于)电、磁、光、电磁、红外线或半导体系统、装置、设备或传播介质。计算机可读介质的更具体的实例(非穷举列表)将包括以下项:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CDROM)、光存储设备、诸如支持因特网或内联网的传输介质或磁存储设备。要指出的是,所述计算机可用或计算机可读介质甚至可以是程序被打印在其上的纸张或其他适合的介质,因为所述程序可以通过例如光扫描所述纸张或其他介质被电子地捕获,然后被编译、解释或另外以适合的方式被处理(如果必要),然后被存储在计算机存储器中。在本文档的上下文中,计算机可用或计算机可读介质可以是任何能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的介质。计算机可用介质可以包括其中包含计算机可用程序代码(在基带中或作为载波的一部分)的传播数据信号。可以使用任何适当的介质(包括但不限于无线、有线、光缆、射频(RF)等)来传输计算机可用程序代码。
用于执行本发明的操作的计算机程序代码可以使用一种或多种编程语言的任意组合来编写,所述编程语言包括诸如JavaTM、SmalltalkTM、C++之类的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行,部分地在用户计算机上执行,作为独立的软件包、部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,也可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。此外,所述程序代码可以包含在服务器或远程计算机上的计算机可读存储介质中,并且通过网络下载到所述远程计算机或用户计算机的计算机可读存储介质以便存储和/或执行。此外,任何计算系统或数据处理系统都可以在通过网络从远程计算系统或数据处理系统下载程序代码之后,将所述程序代码存储在计算机可读存储介质中。
下面参考根据本发明的优选实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图描述示例性实施例。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的指令产生用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的装置。
这些计算机程序指令也可以被存储在引导计算机或其他可编程数据处理装置以特定方式工作的计算机可读介质中,以便存储在所述计算机可读介质中的指令产生一件包括实现在一个或多个流程图和/或方块图方块中指定的功能/操作的指令装置的制品。
所述计算机程序指令还可被加载到计算机或其他可编程数据处理装置,以导致在所述计算机或其他可编程装置上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。
附图中的流程图和方块图示出了根据本发明的各种优选实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能(多个)的一个或多个可执行指令。还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为连续的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。还将指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
图7是示出根据本发明的一个优选实施例的用于虚拟化环境中的高速缓存分区的虚拟机监视器的操作的流程图。当激活新的虚拟机时操作开始,虚拟机监视器将虚拟ID分配给所述虚拟机(方块702)。分配给所述虚拟机的处理核心将虚拟ID存储在专用寄存器中(方块704)。所述虚拟机监视器然后在高速缓存分区表中为所述虚拟机创建表项(方块706)。此后,操作结束。
图8是示出根据本发明的一个优选实施例的虚拟化环境中的共享高速缓存的操作的流程图。当虚拟机在虚拟化环境中对共享高速缓存执行高速缓存访问时操作开始,所述虚拟机将虚拟ID和地址传递到高速缓存(方块802)。高速缓存判定所述高速缓存访问是否导致高速缓存未命中(方块804)。如果所述高速缓存访问未导致高速缓存未命中,则高速缓存执行所述高速缓存访问(方块806),并且操作结束。如果在方块804所述高速缓存访问导致高速缓存未命中,则高速缓存使用分区表选择牺牲行(方块808)、从存储器读取数据(方块810),并替换牺牲行(方块812)。此后,操作结束。
因此,示例性实施例在虚拟机监视器中提供了一种用于在虚拟化环境中提供高速缓存分区的机制。所述机制将虚拟标识(ID)分配给所述虚拟化环境中的每个虚拟机。处理核心将所述虚拟机的所述虚拟ID存储在专用寄存器中。所述机制还在分区表中为所述虚拟机创建表项。所述机制可以使用垂直(路)分区和/或水平分区对共享高速缓存进行分区。所述分区表中的表项包括垂直分区控制和水平分区控制。对于每次高速缓存访问,所述虚拟机将虚拟ID连同地址一起传递到所述共享高速缓存。如果所述高速缓存访问导致未命中,则所述共享高速缓存使用所述分区表选择牺牲高速缓存行以便替换。
示例性实施例的机制无需更改虚拟机中的客户操作系统。此外,示例性实施例的机制为高速缓存增加了非常小的复杂性,因为它们无需更改高速缓存阵列。高速缓存分区表非常小。例如,每个虚拟机的16位表项(8位用于垂直分区,8位用于水平分区)允许128个分区。
通过示例性实施例的机制进行的高速缓存分区允许灵活的分区,从而允许各种程度的共享和专用性。一个行可以转到多个分区。示例性实施例可以与许多基于软件的高速缓存着色技术无关。
如上面所指出的,应该理解,示例性实施例可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在一个实例实施例中,示例性实施例的机制以软件或程序代码实现,所述软件或程序代码包括但不限于固件、驻留软件、微代码等。
适合于存储和/或执行程序代码的数据处理系统将包括至少一个直接或通过系统总线间接连接到存储器元件的处理器。所述存储器元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等)可以直接或通过中间I/O控制器与系统相连。网络适配器也可以被连接到系统以使所述数据处理系统能够通过中间专用或公共网络变得与其他数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器和以太网卡只是几种目前可用的网络适配器类型。
出于示例和说明目的给出了对本发明的描述,并且所述描述并非旨在是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说,许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。
Claims (15)
1.一种在数据处理系统中对虚拟化环境中的共享高速缓存进行分区的方法,所述方法包括:
由虚拟机监视器将虚拟标识符分配给虚拟机;
由虚拟机监视器在分区表中为所述虚拟机创建表项,其中虚拟标识符是对分区表的索引,其中所述表项包括垂直分区控制和水平分区控制;
接收来自所述虚拟机的高速缓存访问请求;以及
响应于所述高速缓存访问请求导致高速缓存未命中,根据所述分区表内与所述虚拟机对应的所述表项中的所述垂直分区控制和所述水平分区控制而写入所述共享高速缓存,其中垂直分区对应于为虚拟机分配的共享高速缓存的一个或多个列,水平分区对应于为虚拟机分配的共享高速缓存的一个或多个行或集合。
2.如权利要求1中所述的方法,其中所述垂直分区控制包括位掩码。
3.如权利要求2中所述的方法,其中所述共享高速缓存是八路高速缓存,以及其中所述位掩码是8位位掩码。
4.如上述任一权利要求中所述的方法,其中所述水平分区控制包括掩码和偏移。
5.如权利要求4中所述的方法,其中所述高速缓存访问请求指定包括标记、分区标识符、下标和行偏移的地址,以及其中根据所述分区表内与所述虚拟机对应的所述表项中的所述垂直分区控制和所述水平分区控制而写入所述共享高速缓存包括:
对所述掩码和所述分区标识符执行“与”运算以形成结果;以及
将所述水平控制的偏移与所述结果相加以形成指向所述地址内的对应位置的指针。
6.如权利要求5中所述的方法,其中所述虚拟机的处理器核心存储所述虚拟标识符。
7.如权利要求6中所述的方法,其中所述高速缓存访问请求包括所述虚拟标识符。
8.如权利要求1中所述的方法,其中根据所述分区表内与所述虚拟机对应的所述表项中的所述垂直分区控制和所述水平分区控制而写入所述共享高速缓存包括:
根据所述水平分区控制选择所述共享高速缓存的一个或多个行;
根据所述垂直分区控制选择所述共享高速缓存的所述一个或多个行的一个或多个路。
9.如权利要求8中所述的方法,其中根据所述分区表内与所述虚拟机对应的所述表项中的所述垂直分区控制和所述水平分区控制而写入所述共享高速缓存进一步包括:
从所述一个或多个路选择要替换的一个或多个最近最少使用高速缓存行。
10.一种在数据处理系统中对虚拟化环境中的共享高速缓存进行分区的装置,所述装置包括:
虚拟机监视器,其中所述虚拟机监视器被配置为:将虚拟标识符分配给虚拟机以及在分区表中为所述虚拟机创建表项,其中虚拟标识符是对分区表的索引;
共享高速缓存阵列;以及
共享高速缓存控制器,其中所述共享高速缓存控制器被配置为:接收来自虚拟机的高速缓存访问请求,以及响应于所述高速缓存访问请求导致高速缓存未命中,根据分区表内与所述虚拟机对应的表项中的垂直分区控制和水平分区控制而写入所述共享高速缓存阵列,其中垂直分区对应于为虚拟机分配的共享高速缓存的一个或多个列,水平分区对应于为虚拟机分配的共享高速缓存的一个或多个行或集合。
11.如权利要求10中所述的装置,其中所述垂直分区控制包括位掩码,以及其中所述水平分区控制包括掩码和偏移。
12.如权利要求11中所述的装置,其中所述高速缓存访问请求指定包括标记、分区标识符、下标和行偏移的地址,以及其中根据所述分区表内与所述虚拟机对应的所述表项中的所述垂直分区控制和所述水平分区控制而写入所述共享高速缓存阵列包括:
对所述掩码和所述分区标识符执行“与”运算以形成结果;以及
将所述水平控制的偏移与所述结果相加以形成指向所述地址内的对应位置的指针。
13.如权利要求10中所述的装置,其中根据所述分区表内与所述虚拟机对应的所述表项中的所述垂直分区控制和所述水平分区控制而写入所述共享高速缓存阵列包括:
根据所述水平分区控制选择所述共享高速缓存的一个或多个行;
根据所述垂直分区控制选择所述共享高速缓存的所述一个或多个行的一个或多个路。
14.如权利要求13中所述的装置,其中根据所述分区表内与所述虚拟机对应的所述表项中的所述垂直分区控制和所述水平分区控制而写入所述共享高速缓存进一步包括:
从所述一个或多个路选择要替换的一个或多个最近最少使用高速缓存行。
15.如权利要求10中所述的装置,其中所述虚拟机的处理器核心存储所述虚拟标识符。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/546,791 | 2009-08-25 | ||
US12/546,791 US8745618B2 (en) | 2009-08-25 | 2009-08-25 | Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments |
PCT/EP2010/062077 WO2011023617A1 (en) | 2009-08-25 | 2010-08-19 | Cache partitioning in virtualized environments |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102483718A CN102483718A (zh) | 2012-05-30 |
CN102483718B true CN102483718B (zh) | 2014-12-24 |
Family
ID=43064340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080037627.4A Active CN102483718B (zh) | 2009-08-25 | 2010-08-19 | 虚拟化环境中的高速缓存分区 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8745618B2 (zh) |
CN (1) | CN102483718B (zh) |
DE (1) | DE112010003397T5 (zh) |
GB (1) | GB2485328B (zh) |
WO (1) | WO2011023617A1 (zh) |
Families Citing this family (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8818496B2 (en) | 2005-10-14 | 2014-08-26 | Medicalgorithmics Ltd. | Systems for safe and remote outpatient ECG monitoring |
US8635380B2 (en) | 2007-12-20 | 2014-01-21 | Intel Corporation | Method, system and apparatus for handling events for partitions in a socket with sub-socket partitioning |
US8296522B2 (en) * | 2007-12-20 | 2012-10-23 | Intel Corporation | Method, apparatus, and system for shared cache usage to different partitions in a socket with sub-socket partitioning |
US8543769B2 (en) * | 2009-07-27 | 2013-09-24 | International Business Machines Corporation | Fine grained cache allocation |
US8745618B2 (en) * | 2009-08-25 | 2014-06-03 | International Business Machines Corporation | Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments |
FR2950714B1 (fr) * | 2009-09-25 | 2011-11-18 | Bull Sas | Systeme et procede de gestion de l'execution entrelacee de fils d'instructions |
CN102541619B (zh) * | 2010-12-23 | 2015-09-16 | 国际商业机器公司 | 虚拟机管理装置和方法 |
US20120179874A1 (en) * | 2011-01-07 | 2012-07-12 | International Business Machines Corporation | Scalable cloud storage architecture |
CN102426536B (zh) * | 2011-10-26 | 2014-04-09 | 深圳市亚特尔科技有限公司 | 一种多任务间数据通信的实现方法及系统 |
CN102609362A (zh) * | 2012-01-30 | 2012-07-25 | 复旦大学 | 一种共享高速缓存动态划分方法与电路 |
US9336147B2 (en) * | 2012-06-12 | 2016-05-10 | Microsoft Technology Licensing, Llc | Cache and memory allocation for virtual machines |
US20140025890A1 (en) * | 2012-07-19 | 2014-01-23 | Lsi Corporation | Methods and structure for improved flexibility in shared storage caching by multiple systems operating as multiple virtual machines |
JP5965076B2 (ja) | 2012-09-25 | 2016-08-03 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | 訂正不能メモリエラー処理方法及びその可読媒体 |
US9361237B2 (en) * | 2012-10-18 | 2016-06-07 | Vmware, Inc. | System and method for exclusive read caching in a virtualized computing environment |
US10140219B2 (en) | 2012-11-02 | 2018-11-27 | Blackberry Limited | Multi-port shared cache apparatus |
CN102999444A (zh) * | 2012-11-13 | 2013-03-27 | 华为技术有限公司 | 一种用于替换缓存模块中数据的方法及装置 |
CN103902352B (zh) * | 2012-12-28 | 2017-06-13 | 华为技术有限公司 | 多核虚拟机系统获取请求数据的方法和装置 |
GB2509755B (en) | 2013-01-14 | 2015-07-08 | Imagination Tech Ltd | Partitioning a shared cache using masks associated with threads to avoiding thrashing |
CN103077133B (zh) * | 2013-01-23 | 2016-01-13 | 杭州士兰微电子股份有限公司 | 提供可变长度高速缓存线的高速缓存器控制器及方法 |
US9223710B2 (en) | 2013-03-16 | 2015-12-29 | Intel Corporation | Read-write partitioning of cache memory |
CN105210037B (zh) * | 2013-05-10 | 2019-05-21 | 英派尔科技开发有限公司 | 存储器访问的加快 |
US9854035B2 (en) | 2013-05-28 | 2017-12-26 | International Business Machines Corporation | Maintaining state synchronization of an application between computing devices as well as maintaining state synchronization of common information between different applications without requiring periodic synchronization |
US10044799B2 (en) | 2013-05-28 | 2018-08-07 | International Business Machines Corporation | Implementing synchronization of state information betweeen instances of an application as well as between different applications in an efficient, scalable manner |
CN104461928B (zh) * | 2013-09-16 | 2018-11-16 | 华为技术有限公司 | 划分高速缓存的方法及装置 |
US9507731B1 (en) | 2013-10-11 | 2016-11-29 | Rambus Inc. | Virtualized cache memory |
US10089238B2 (en) | 2014-07-17 | 2018-10-02 | Qualcomm Incorporated | Method and apparatus for a shared cache with dynamic partitioning |
US9612970B2 (en) | 2014-07-17 | 2017-04-04 | Qualcomm Incorporated | Method and apparatus for flexible cache partitioning by sets and ways into component caches |
CN104216758B (zh) * | 2014-08-22 | 2018-05-04 | 华为技术有限公司 | 一种读写操作性能优化方法以及装置 |
US20160093102A1 (en) * | 2014-09-25 | 2016-03-31 | Peter L. Doyle | Efficient tessellation cache |
US10303514B2 (en) * | 2014-11-14 | 2019-05-28 | Cavium, Llc | Sharing resources in a multi-context computing system |
EP3066571B1 (en) * | 2014-12-14 | 2018-06-13 | VIA Alliance Semiconductor Co., Ltd. | Cache memory budgeted by ways on memory access type |
WO2016097807A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Cache replacement policy that considers memory access type |
EP3129890B1 (en) | 2014-12-14 | 2019-08-14 | VIA Alliance Semiconductor Co., Ltd. | Set associative cache memory with heterogeneous replacement policy |
WO2016097806A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Fully associative cache memory budgeted by memory access type |
US9898411B2 (en) | 2014-12-14 | 2018-02-20 | Via Alliance Semiconductor Co., Ltd. | Cache memory budgeted by chunks based on memory access type |
CN104484288B (zh) * | 2014-12-30 | 2018-01-02 | 浪潮电子信息产业股份有限公司 | 一种对目录条目进行替换的方法及装置 |
US10180908B2 (en) | 2015-05-13 | 2019-01-15 | Qualcomm Incorporated | Method and apparatus for virtualized control of a shared system cache |
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 |
US20170031838A1 (en) * | 2015-07-28 | 2017-02-02 | Qualcomm Incorporated | Method and apparatus for using context information to protect virtual machine security |
CN106445628A (zh) * | 2015-08-11 | 2017-02-22 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
US10440152B2 (en) | 2016-01-27 | 2019-10-08 | Oracle International Corporation | System and method of initiating virtual machine configuration on a subordinate node from a privileged node in a high-performance computing environment |
GB2547191B (en) * | 2016-02-05 | 2020-01-08 | Advanced Risc Mach Ltd | An apparatus and method for supporting multiple cache features |
EP3258382B1 (en) * | 2016-06-14 | 2021-08-11 | Arm Ltd | A storage controller |
US10901639B2 (en) * | 2016-11-29 | 2021-01-26 | Sap Se | Memory allocation in multi-core processors |
US10686729B2 (en) | 2017-03-29 | 2020-06-16 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
CN110710139A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 具有光置换器的无阻塞全网状数据中心网络 |
WO2018183553A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups |
CN110741356B (zh) | 2017-04-10 | 2024-03-15 | 微软技术许可有限责任公司 | 多处理器系统中的中继一致存储器管理 |
US10282299B2 (en) | 2017-06-23 | 2019-05-07 | Cavium, Llc | Managing cache partitions based on cache usage information |
EP3625679A1 (en) | 2017-07-10 | 2020-03-25 | Fungible, Inc. | Data processing unit for stream processing |
US10659254B2 (en) | 2017-07-10 | 2020-05-19 | Fungible, Inc. | Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric |
US10318425B2 (en) | 2017-07-12 | 2019-06-11 | International Business Machines Corporation | Coordination of cache and memory reservation |
US10678690B2 (en) * | 2017-08-29 | 2020-06-09 | Qualcomm Incorporated | Providing fine-grained quality of service (QoS) control using interpolation for partitioned resources in processor-based systems |
US10965586B2 (en) | 2017-09-29 | 2021-03-30 | Fungible, Inc. | Resilient network communication using selective multipath packet flow spraying |
CN111149329A (zh) | 2017-09-29 | 2020-05-12 | 芬基波尔有限责任公司 | 通过多个备用数据路径进行分组喷射的数据中心网络的结构控制协议 |
WO2019104090A1 (en) | 2017-11-21 | 2019-05-31 | Fungible, Inc. | Work unit stack data structures in multiple core processor system for stream data processing |
US10496541B2 (en) * | 2017-11-29 | 2019-12-03 | Samsung Electronics Co., Ltd. | Dynamic cache partition manager in heterogeneous virtualization cloud cache environment |
WO2019152063A1 (en) | 2018-02-02 | 2019-08-08 | Fungible, Inc. | Efficient work unit processing in a multicore system |
US10929175B2 (en) | 2018-11-21 | 2021-02-23 | Fungible, Inc. | Service chaining hardware accelerators within a data stream processing integrated circuit |
US11010165B2 (en) | 2019-03-12 | 2021-05-18 | Marvell Asia Pte, Ltd. | Buffer allocation with memory-based configuration |
US11693708B2 (en) * | 2019-04-24 | 2023-07-04 | Netflix, Inc. | Techniques for increasing the isolation of workloads within a multiprocessor instance |
US11513958B1 (en) | 2019-05-29 | 2022-11-29 | Marvell Asia Pte, Ltd. | Shared mid-level data cache |
US11327890B1 (en) | 2019-05-29 | 2022-05-10 | Marvell Asia Pte, Ltd. | Partitioning in a processor cache |
US11036643B1 (en) | 2019-05-29 | 2021-06-15 | Marvell Asia Pte, Ltd. | Mid-level instruction cache |
US11093405B1 (en) | 2019-05-29 | 2021-08-17 | Marvell Asia Pte, Ltd. | Shared mid-level data cache |
US11379368B1 (en) | 2019-12-05 | 2022-07-05 | Marvell Asia Pte, Ltd. | External way allocation circuitry for processor cores |
US11487874B1 (en) | 2019-12-05 | 2022-11-01 | Marvell Asia Pte, Ltd. | Prime and probe attack mitigation |
CN110990128A (zh) * | 2019-12-23 | 2020-04-10 | 北京元心科技有限公司 | 一种虚拟化加速方法、装置、存储器及设备 |
CA3209399A1 (en) | 2021-02-24 | 2022-09-01 | Michael Thomas Pace | System and method for a digitally beamformed phased array feed |
US11709776B2 (en) | 2021-03-29 | 2023-07-25 | Pensando Systems Inc. | Methods and systems for a stripe mode cache pool |
WO2022261223A1 (en) * | 2021-06-09 | 2022-12-15 | Ampere Computing Llc | Apparatus, system, and method for configuring a configurable combined private and shared cache |
WO2022261226A1 (en) * | 2021-06-09 | 2022-12-15 | Ampere Computing Llc | Apparatuses, systems, and methods for configuring combined private and shared cache levels in a processor-based system |
US11947454B2 (en) * | 2021-06-09 | 2024-04-02 | Ampere Computing Llc | Apparatuses, systems, and methods for controlling cache allocations in a configurable combined private and shared cache in a processor-based system |
US12007896B2 (en) | 2021-06-09 | 2024-06-11 | Ampere Computing Llc | Apparatuses, systems, and methods for configuring combined private and shared cache levels in a processor-based system |
US11880306B2 (en) | 2021-06-09 | 2024-01-23 | Ampere Computing Llc | Apparatus, system, and method for configuring a configurable combined private and shared cache |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6493800B1 (en) * | 1999-03-31 | 2002-12-10 | International Business Machines Corporation | Method and system for dynamically partitioning a shared cache |
CN1499381A (zh) * | 2002-11-11 | 2004-05-26 | 松下电器产业株式会社 | 高速缓存控制器、高速缓存控制方法以及计算机系统 |
CN1728112A (zh) * | 2004-06-30 | 2006-02-01 | 英特尔公司 | 用于对芯片多处理器的共享高速缓存器分区的设备和方法 |
CN1790294A (zh) * | 2004-12-17 | 2006-06-21 | 国际商业机器公司 | 保留虚拟机的高速缓存的系统和方法 |
WO2006082554A2 (en) * | 2005-02-02 | 2006-08-10 | Koninklijke Philips Electronics N.V. | Data processing system comprising a cache unit |
CN101122886A (zh) * | 2007-09-03 | 2008-02-13 | 杭州华三通信技术有限公司 | 分配缓存空间的方法和装置以及缓存控制器 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353425A (en) * | 1992-04-29 | 1994-10-04 | Sun Microsystems, Inc. | Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature |
EP0713181A1 (en) * | 1994-11-16 | 1996-05-22 | International Business Machines Corporation | Data processing system including mechanism for storing address tags |
GB9701960D0 (en) * | 1997-01-30 | 1997-03-19 | Sgs Thomson Microelectronics | A cache system |
EP0856797B1 (en) * | 1997-01-30 | 2003-05-21 | STMicroelectronics Limited | A cache system for concurrent processes |
US5898849A (en) * | 1997-04-04 | 1999-04-27 | Advanced Micro Devices, Inc. | Microprocessor employing local caches for functional units to store memory operands used by the functional units |
US6122709A (en) * | 1997-12-19 | 2000-09-19 | Sun Microsystems, Inc. | Cache with reduced tag information storage |
US20020000657A1 (en) * | 1999-05-06 | 2002-01-03 | Cheng P. Wen | Plated chrome solder dam for high power mmics |
US6625715B1 (en) * | 1999-12-30 | 2003-09-23 | Intel Corporation | System and method for translation buffer accommodating multiple page sizes |
CZ10019U1 (en) * | 2000-03-15 | 2000-05-29 | Fermata | Compact disc with scratch-pad area |
US7856633B1 (en) * | 2000-03-24 | 2010-12-21 | Intel Corporation | LRU cache replacement for a partitioned set associative cache |
US6834327B2 (en) * | 2002-02-08 | 2004-12-21 | Hewlett-Packard Development Company, L.P. | Multilevel cache system having unified cache tag memory |
US6996676B2 (en) * | 2002-11-14 | 2006-02-07 | International Business Machines Corporation | System and method for implementing an adaptive replacement cache policy |
US7299468B2 (en) * | 2003-04-29 | 2007-11-20 | International Business Machines Corporation | Management of virtual machines to utilize shared resources |
JP4282426B2 (ja) * | 2003-09-29 | 2009-06-24 | 株式会社東芝 | 電子機器および同機器に適用されるプログラム |
US7536692B2 (en) * | 2003-11-06 | 2009-05-19 | Intel Corporation | Thread-based engine cache partitioning |
US20050132364A1 (en) * | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US20050210108A1 (en) * | 2004-03-19 | 2005-09-22 | John Covert | System and method for creating customized electronic messages |
US7441242B2 (en) * | 2004-04-22 | 2008-10-21 | International Business Machines Corporation | Monitoring performance of a logically-partitioned computer |
KR100688503B1 (ko) * | 2004-11-02 | 2007-03-02 | 삼성전자주식회사 | 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법 |
US8544008B2 (en) * | 2004-12-10 | 2013-09-24 | Nxp B.V. | Data processing system and method for cache replacement using task scheduler |
US7437516B2 (en) * | 2004-12-28 | 2008-10-14 | Sap Ag | Programming models for eviction policies |
US7404046B2 (en) * | 2005-02-10 | 2008-07-22 | International Business Machines Corporation | Cache memory, processing unit, data processing system and method for filtering snooped operations |
JP2007011580A (ja) * | 2005-06-29 | 2007-01-18 | Toshiba Corp | 情報処理装置 |
US7415575B1 (en) * | 2005-12-08 | 2008-08-19 | Nvidia, Corporation | Shared cache with client-specific replacement policy |
US8533395B2 (en) * | 2006-02-24 | 2013-09-10 | Micron Technology, Inc. | Moveable locked lines in a multi-level cache |
US7506119B2 (en) * | 2006-05-04 | 2009-03-17 | International Business Machines Corporation | Complier assisted victim cache bypassing |
US7574564B2 (en) * | 2006-05-11 | 2009-08-11 | Freescale Semiconductor, Inc. | Replacement pointer control for set associative cache and method |
US20080010413A1 (en) * | 2006-07-07 | 2008-01-10 | Krishnan Kunjunny Kailas | Method and apparatus for application-specific dynamic cache placement |
JP4783229B2 (ja) * | 2006-07-19 | 2011-09-28 | パナソニック株式会社 | キャッシュメモリシステム |
US20080148241A1 (en) * | 2006-10-11 | 2008-06-19 | Scott Thomas Jones | Method and apparatus for profiling heap objects |
US7774549B2 (en) * | 2006-10-11 | 2010-08-10 | Mips Technologies, Inc. | Horizontally-shared cache victims in multiple core processors |
US7877537B2 (en) * | 2006-12-15 | 2011-01-25 | Microchip Technology Incorporated | Configurable cache for a microprocessor |
US7783858B2 (en) * | 2007-01-20 | 2010-08-24 | International Business Machines Corporation | Reducing memory overhead of a page table in a dynamic logical partitioning environment |
JP5161696B2 (ja) * | 2008-08-07 | 2013-03-13 | 株式会社日立製作所 | 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム |
US8176282B2 (en) * | 2009-03-11 | 2012-05-08 | Applied Micro Circuits Corporation | Multi-domain management of a cache in a processor system |
US8250332B2 (en) * | 2009-06-11 | 2012-08-21 | Qualcomm Incorporated | Partitioned replacement for cache memory |
US8543769B2 (en) | 2009-07-27 | 2013-09-24 | International Business Machines Corporation | Fine grained cache allocation |
US8745618B2 (en) | 2009-08-25 | 2014-06-03 | International Business Machines Corporation | Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments |
-
2009
- 2009-08-25 US US12/546,791 patent/US8745618B2/en active Active
-
2010
- 2010-08-19 GB GB1204882.3A patent/GB2485328B/en active Active
- 2010-08-19 DE DE112010003397T patent/DE112010003397T5/de not_active Ceased
- 2010-08-19 CN CN201080037627.4A patent/CN102483718B/zh active Active
- 2010-08-19 WO PCT/EP2010/062077 patent/WO2011023617A1/en active Application Filing
-
2012
- 2012-04-11 US US13/444,439 patent/US8739159B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6493800B1 (en) * | 1999-03-31 | 2002-12-10 | International Business Machines Corporation | Method and system for dynamically partitioning a shared cache |
CN1499381A (zh) * | 2002-11-11 | 2004-05-26 | 松下电器产业株式会社 | 高速缓存控制器、高速缓存控制方法以及计算机系统 |
CN1728112A (zh) * | 2004-06-30 | 2006-02-01 | 英特尔公司 | 用于对芯片多处理器的共享高速缓存器分区的设备和方法 |
CN1790294A (zh) * | 2004-12-17 | 2006-06-21 | 国际商业机器公司 | 保留虚拟机的高速缓存的系统和方法 |
WO2006082554A2 (en) * | 2005-02-02 | 2006-08-10 | Koninklijke Philips Electronics N.V. | Data processing system comprising a cache unit |
CN101122886A (zh) * | 2007-09-03 | 2008-02-13 | 杭州华三通信技术有限公司 | 分配缓存空间的方法和装置以及缓存控制器 |
Also Published As
Publication number | Publication date |
---|---|
GB2485328B (en) | 2016-07-13 |
US20110055827A1 (en) | 2011-03-03 |
US8739159B2 (en) | 2014-05-27 |
US20120198172A1 (en) | 2012-08-02 |
CN102483718A (zh) | 2012-05-30 |
DE112010003397T5 (de) | 2012-12-27 |
GB201204882D0 (en) | 2012-05-02 |
US8745618B2 (en) | 2014-06-03 |
WO2011023617A1 (en) | 2011-03-03 |
GB2485328A (en) | 2012-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102483718B (zh) | 虚拟化环境中的高速缓存分区 | |
Oakes et al. | {SOCK}: Rapid task provisioning with {Serverless-Optimized} containers | |
US9459850B2 (en) | Adaptive cloud aware just-in-time (JIT) compilation | |
CN100487659C (zh) | 用于优化分段资源分配的方法和设备 | |
EP3285166B1 (en) | Optimizing a distribution of applications executing in a multiple platform system | |
CN100478871C (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
CN102707900B (zh) | 虚拟盘存储技术 | |
CN101221514B (zh) | 选择处理器对程序而言遵循的架构级别的方法、处理器及系统 | |
CN1894662B (zh) | 作为用于执行引导码的ram的处理器缓存存储器 | |
CN100373344C (zh) | 用于在实时与虚拟化操作系统之间共享资源的系统和方法 | |
TWI417792B (zh) | 在處理器系統之指令階使資源分配識別之方法及裝置 | |
CN101211289B (zh) | 恢复操作管理系统和方法 | |
CN102541619B (zh) | 虚拟机管理装置和方法 | |
US8543769B2 (en) | Fine grained cache allocation | |
CN108351752A (zh) | 存储虚拟化卸载 | |
US5892963A (en) | System and method for assigning tags to instructions to control instruction execution | |
US20100205619A1 (en) | Environment modification in a hybrid node computing environment | |
US8365169B1 (en) | Migrating a virtual machine across processing cells connected to an interconnect that provides data communication without cache coherency support | |
CN103699496A (zh) | 分级存储器管理 | |
CN103635875A (zh) | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 | |
CN108536392B (zh) | 混合数据查找方法 | |
CN102915236A (zh) | 使用硬件抽象执行软件应用程序的方法和系统 | |
CN102194010A (zh) | 虚拟文件系统碎片的零拷贝整理方法 | |
TW202034160A (zh) | 用於通用處理器之排序及合併指令 | |
CN104699538A (zh) | 用于多处理系统中的工作负载请求分派的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |