CN108431786B - 混合高速缓存 - Google Patents

混合高速缓存 Download PDF

Info

Publication number
CN108431786B
CN108431786B CN201680073767.4A CN201680073767A CN108431786B CN 108431786 B CN108431786 B CN 108431786B CN 201680073767 A CN201680073767 A CN 201680073767A CN 108431786 B CN108431786 B CN 108431786B
Authority
CN
China
Prior art keywords
cache
logical
logical cache
processor
control unit
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
Application number
CN201680073767.4A
Other languages
English (en)
Other versions
CN108431786A (zh
Inventor
加百利尔·H·罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN108431786A publication Critical patent/CN108431786A/zh
Application granted granted Critical
Publication of CN108431786B publication Critical patent/CN108431786B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

用于实现混合高速缓存的系统、装置以及方法。一种处理器可以包括混合L2/L3高速缓存,其允许所述处理器动态调整所述L2高速缓存的大小和所述L3高速缓存的大小。在一些实施方案中,所述处理器可以是多核处理器,并且可以存在划分为L2逻辑高速缓存和L3逻辑高速缓存以供核心使用的单个高速缓存。在一个实施方案中,所述处理器可以跟踪所述L2逻辑高速缓存和所述L3逻辑高速缓存的高速缓存命中率,并且基于所述高速缓存命中率调整所述L2逻辑高速缓存和所述L3逻辑高速缓存的大小。在另一个实施方案中,所述处理器可以基于所述处理器当前正在执行的应用程序调整所述L2逻辑高速缓存和所述L3逻辑高速缓存的大小。

Description

混合高速缓存
技术领域
本文所描述的实施方案涉及处理器,并且更具体地涉及利用处理器中的高速缓存。
背景技术
许多现代计算设备(例如,膝上型/台式计算机、智能电话、机顶盒、器具等)包括具有一个或多个高速缓存的处理子系统。高速缓存通常是位于处理子系统内或附近的较小的快速存取存储器电路,其可以用于存储从计算设备中存储器分级结构的较高级别(即,其他更大的高速缓存和/或存储器)检索的数据,以使得能够更快地访问所存储的数据。
一般来讲,计算机系统的主存储器在页面级别粒度下具有存储器组织。通常,页面可以是四千字节(KB)页面,但是可以针对特定实现方式定义任何其他大小的页面。高速缓存存储器组织通常处于高速缓存行级别粒度。高速缓存行是存储在连续的存储器位置中的一组字节,出于一致性目的,它们被视为单元。如本文所用,术语“高速缓存行”和“高速缓存块”中的每一个是可互换的。高速缓存行中的字节数可以根据设计选择而变化,并且可以具有任何大小。
现代处理器常常采用多级高速缓存分级结构。例如,对于多核处理器,每个核心可以包括用于存储数据和/或指令的一级(L1)高速缓存。多级高速缓存分级结构通常还包括每核心的专用二级(L2)高速缓存和在核心间共享的较大三级(L3)高速缓存。处理器可以执行许多不同类型的应用程序,所述应用程序具有不同数量的待处理的数据和不同的数据访问模式。一些应用程序可以处理大量数据,而其他应用程序可以通过逐步修改相同部分的数据来处理少量数据。然而,使用常规的多级高速缓存分级结构可导致一些应用程序由处理器以低于最佳效率的方式执行。
发明内容
设想用于实现混合高速缓存的系统、装置以及方法。
在各种实施方案中,多核处理器可以包括多级高速缓存分级结构。处理器可以具有高速缓存组织,其有效地将高速缓存分级结构的第一级别和第二级别一起组合为单个高速缓存,然后对单个高速缓存进行逻辑划分以供每个核心使用。在各种实施方案中,高速缓存逻辑划分为二级(L2)高速缓存和三级(L3)高速缓存,其中每个核心分配有给定的L2高速缓存和L3高速缓存。在各种实施方案中,高速缓存分级结构的第一级别和第二级别的大小可以静态设置或动态调整。
例如,逻辑高速缓存的大小可以在生产时固定。在其他实施方案中,逻辑高速缓存的大小可以基于当前运行条件而动态调整。例如,处理器可以执行第一应用程序,所述第一应用程序将以较小的L2高速缓存为代价从较大的L3高速缓存中受益。当执行第一应用程序时,处理器可以减小L2高速缓存的大小并增大L3高速缓存的大小。随后,处理器可以从执行第一应用程序切换到执行第二应用程序,并且处理器可以确定或接收第二应用程序将以较小的L3高速缓存为代价从较大的L2高速缓存中受益的指示。因此,处理器然后可以减小L3高速缓存的大小并增大L2高速缓存的大小。
在另一实施方案中,处理器可以监测与高速缓存分级结构的不同级别相关联的各种参数。在这个实施方案中,处理器可以基于监测的参数动态调整高速缓存分级结构的两个或更多个级别的大小。这些参数可以包括第一高速缓存的高速缓存命中率、第二高速缓存的高速缓存命中率、以及对应于不同处理器核心的不同第一高速缓存之间的高速缓存行的迁移速率。在各种实施方案中,处理器可以将参数中的一个或多个与一个或多个阈值进行比较。基于比较的结果,处理器可以减小第一高速缓存(例如,L2高速缓存)的大小并增大第二高速缓存(例如,L3高速缓存)的大小,处理器可以增大第一高速缓存的大小并且减小第二高速缓存的大小,或者处理器可以维持第一高速缓存和第二高速缓存的当前大小。
通过本文提出的方法的以下详细描述,这些和其他特征和优点对于本领域普通技术人员将变得清楚。
附图说明
本方法和机制的上述和另外的优点可以通过参考以下结合附图的描述而更好地理解,在附图中:
图1是计算系统的一个实施方案的框图。
图2是逻辑高速缓存的一个实施方案的框图。
图3是控制单元的一个实施方案的框图。
图4是处理器的一个实施方案的框图。
图5是处理器的另一个实施方案的框图。
图6是在三个不同时间点的逻辑高速缓存的一个实施方案的框图。
图7展示示出多个高速缓存行的标签位的图解。
图8是展示用于动态调整高速缓存大小的方法的一个实施方案的概括性流程图。
图9是展示用于动态调整高速缓存大小的方法的另一个实施方案的概括性流程图。
图10是展示用于确定何时调整高速缓存大小的方法的一个实施方案的概括性流程图。
图11是展示用于确定何时调整高速缓存大小的方法的另一个实施方案的概括性流程图。
图12是展示用于监测高速缓存分级结构中的迁移速率的方法的一个实施方案的概括性流程图。
图13是展示用于利用相邻高速缓存级别之间的不同容量分配的方法的一个实施方案的概括性流程图。
图14是展示用于转发填充数据的方法的一个实施方案的概括性流程图。
图15是展示用于重新分配逻辑高速缓存的一部分的方法的一个实施方案的概括性流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对本文所提出的方法和机制的全面理解。然而,本领域普通技术人员应当认识到,各种实施方案可以在没有这些具体细节的情况下实践。在一些情况下,没有详细展示众所周知的结构、部件、信号、计算机程序指令和技术以避免混淆本文所描述的方法。应当理解,为了简单和清楚起见,图中示出的元件不一定按比例绘制。例如,一些元件的尺寸可以相对于其他元件放大。
现在参考图1,示出了展示计算系统100的一个实施方案的框图。系统100可以包括处理器105和存储器130。系统100还可以包括其他部件(例如,显示器、输入/输出(I/O)接口、网络接口),所述其他部件在图1中未示出以避免混淆附图。取决于实施方案,系统100可以是各种类型的计算系统中的任一种,包括移动设备(例如,智能电话、平板电脑)、计算机、电视、娱乐设备、服务器等。处理器105是用于执行指令并执行计算操作的任何类型的处理器(例如,图形处理单元(GPU)、中央处理单元(CPU)、加速处理单元(APU))的代表。
在一个实施方案中,处理器105可以是具有如图1所示的四个核心110A-D和高速缓存115A-D的多核处理器。在其他实施方案中,处理器105可以包括其他数目的核心。在各种实施方案中,如下文将更详细讨论的,每个高速缓存115A-D可以是划分为逻辑高速缓存的单个物理高速缓存。每个核心110A-D可以包括用于存储指令和/或数据的一级(L1)高速缓存(未示出)。每个核心110A-D还可以包括和/或耦合到对应的物理高速缓存115A-D。高速缓存115A-D中的每一个可以包括用于存储高速缓存的数据和指令的存储器电路。例如,高速缓存115A-D可以包括静态随机存取存储器(SRAM)、嵌入式动态随机存取存储器(eDRAM)、DRAM、双倍数据速率同步DRAM(DDR SDRAM)和/或其他类型的存储器电路中的一个或多个。
在一个实施方案中,每个高速缓存115A-D可以包括与共享的三级(L3)高速缓存的可配置切片(或部分)逻辑组合的可配置二级(L2)高速缓存,其中处理器105能够修改这些高速缓存部分的大小。如果处理器105将特定高速缓存115A-D的L2部分的大小减小给定量,那么处理器105可以将特定高速缓存115A-D的L3部分的大小增大给定量。或者,如果处理器105将特定高速缓存115A-D的L2部分的大小增大给定量,那么处理器可以将特定高速缓存115A-D的L3部分的大小减小给定量。换句话讲,每个高速缓存115A-D具有在L2高速缓存与L3切片之间分割的固定存储容量。因此,对给定高速缓存115A-D的L2高速缓存的大小的任何改变将导致对给定高速缓存115A-D的L3切片大小的相反改变。
虽然关于图1示出并描述了动态地重新调整L2和L3高速缓存的大小的实例,但这意味着是非限制性实例,并且应当理解,处理器可以动态地重新调整高速缓存分级结构的任意两个或更多个相邻级别的大小。类似地,在本公开的全文中,在描述动态地重新调整L2和L3高速缓存部分的大小的实例时,应当理解,这些技术可以与高速缓存分级结构的其他级别一起使用。在一些实施方案中,可以使用本文所描述的技术来动态调整高速缓存分级结构的三个或更多个级别的大小。
在一个实施方案中,处理器105可以动态改变每个高速缓存115A-D的L2和L3部分的大小。因此,在这个实施方案中,L2和L3高速缓存的存储容量可以在运行时改变。在一个实施方案中,L2和L3高速缓存的配置可以通过软件(例如,操作系统、管理程序、应用程序)来修改。在另一个实施方案中,硬件控制器(例如,控制单元120)可以监测系统性能度量(例如,L2和L3高速缓存命中率),并且动态地重新调整L2和L3分配的大小以优化一些目标(例如,最大化性能)。在另一实施方案中,L2和L3高速缓存的配置可以通过软件和硬件的组合来设置。
在各种实施方案中,响应于检测一个或多个条件,处理器105可以动态改变每个高速缓存115A-D的L2和L3部分的大小。一个或多个条件可取决于与L2和L3高速缓存相关联的监测参数和/或由处理器105执行的应用程序的变化。处理器105可以被配置来监测L2和L3高速缓存的命中率、不同核心中的不同L2高速缓存之间的高速缓存行的迁移速率和/或与L2和L3高速缓存相关联的其他参数。处理器105可以将这些参数与一个或多个阈值进行比较以确定是否动态地重新分配高速缓存115A-D的L2与L3部分之间的存储容量。
在另一个实施方案中,处理器105可以监测正被执行的应用程序并且针对正被执行的每个应用程序确定L2和L3高速缓存大小的最佳分配。在一些情况下,处理器105可以维持与应用程序相关联的历史行为数据,以确定高速缓存大小的哪种分布将允许应用程序更有效地运行。在其他情况下,每个应用程序可以具有指示用于应用程序的优选或最佳高速缓存大小的预先确定的设置。例如,第一应用程序可以包括指示第一应用程序将受益于相对较小的L2高速缓存和相对较大的L3高速缓存的设置。因此,当执行第一应用程序时,处理器105可以减小每个核心的L2高速缓存的大小并增大L3切片的大小。然后,在稍后的时间点,处理器可以执行第二应用程序,所述第二应用程序包括指示第二应用程序将受益于相对较大的L2高速缓存和相对较小的L3高速缓存的设置。因此,响应于执行第二应用程序,处理器可以增大每个核心的L2高速缓存并减小每个核心的L3切片的大小。
在另一个实施方案中,高速缓存115A-D的L2和L3高速缓存的大小可以作为处理器105的制造或生产过程的一部分被静态调整。在这个实施方案中,可以在生产时设置L2和L3高速缓存配置。这允许将相同的硅设计部署为各种不同的配置。在这个实施方案中,一个片上系统(SoC)可以与多个库存单元(SKU)一起使用。例如,可以使用配置文件系统(fuse)来设置高速缓存115A-D的L2和L3高速缓存的期望配置。可替代地,高速缓存115A-D的L2和L3高速缓存的大小可以存储在BIOS在启动期间读取的只读存储器(ROM)的配置位中,这将导致高速缓存大小在系统启动期间被设置。
在一个实施方案中,控制单元120可以被配置来确定每个高速缓存115A-D对可变大小的L2高速缓存分配多少以及每个高速缓存115A-D对可变大小的L3切片分配多少。尽管控制单元120和存储器控制器125被示出为通过同一总线连接到高速缓存115A-D,但这仅仅是为了便于说明而示出,并且应当理解,控制单元120和存储器控制器125可以利用不同的物理连接件来连接到高速缓存115A-D。
存储器130包括形成计算系统100的“主存储器”的存储器电路。存储器130可以用于存储供处理器105的核心110A-D使用的指令和数据。存储器130是任何数量、容量和类型的存储设备的代表。系统100中可以利用各种类型的存储器130,包括随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、高速CMOS、高密度DRAM、eDRAM、3D堆叠存储器(例如,堆叠DRAM)、基于内插器的集成存储器、多芯片模块(MCM)、主板上的片外DRAM、非易失性RAM(NVRAM)、磁光存储介质、只读存储器(ROM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDRSDRAM)、相变存储器、自旋转移力矩磁性RAM、忆阻器、扩展数据输出(EDO)RAM、存储器总线式RAM、存储器总线式DRAM、可擦除可编程存储器(EEPROM)、固态存储器、硬盘驱动器、光存储介质等。
现在转向图2,示出了高速缓存200的一个实施方案的框图。在一个实施方案中,(图1的)高速缓存115A-D中的每一个可以包括高速缓存200的部件。在其他实施方案中,可以利用其他类型和/或结构的逻辑高速缓存。如图2所示,高速缓存200具有相关联的高速缓存控制器215和高速缓存存储器阵列210。在一个实施方案中,高速缓存存储器阵列210可以被组织为组相联高速缓存。高速缓存存储器阵列210可以包括‘M’个组,其中‘M’根据不同实施方案而变化。每个组可以包括‘N’条路径,其中‘N’也根据不同实施方案而变化,其中‘M’和‘N’是正整数。
在一个实施方案中,每个组的‘X’条路径可以被分配给高速缓存200的L2部分,并且每个组的‘N-X’条路径可以被分配给高速缓存200的L3部分。因此,当执行对L2部分的查找时,高速缓存控制器215可以针对目标地址仅查看对应组的‘X’条路径。如果查找未命中,那么可以执行对L3高速缓存的‘N-X’路径的查找。根据地址交错方案和存储器请求所针对的地址,针对给定核心的L3高速缓存查找可以被执行到相同的逻辑高速缓存或不同的逻辑高速缓存。
高速缓存控制器215可以执行各种功能以便控制高速缓存200中的操作。例如,高速缓存控制器215可以存储高速缓存行、使其无效和/或将其驱逐、执行对高速缓存行的查找、处理一致性操作并且对来自高速缓存200的对高速缓存行的请求作出响应。高速缓存控制器215还可以被配置来重新分配高速缓存200的L2与L3部分之间的容量。例如,在一个实施方案中,高速缓存控制器215可以耦合到控制单元(例如,图1的控制单元120),以用于接收指示应当如何将高速缓存200划分为L2和L3部分的更新。响应于接收到来自控制单元的更新,高速缓存控制器215可以被配置来动态地重新调整高速缓存200的L2和L3部分的大小。
现在参考图3,示出了控制单元300的一个实施方案。在一个实施方案中,图1的控制单元120可以包括控制单元300的部件。控制单元300至少可以包括重映射单元305和表格310。重映射单元305可以被配置来在逻辑高速缓存已经在L2与L3部分之间重新调整大小之后重映射逻辑高速缓存(例如,图2的高速缓存200)中的数据。当将路径或其他部分从逻辑高速缓存的L2部分重新分配到L3部分或者从逻辑高速缓存的L3部分重新分配到L2部分时,存储在路径中的数据可能不再映射到正确的位置。因此,重映射单元305可以被配置来在L2和L3配置已经改变之后重映射并迁移数据。可替代地,代替迁移数据,控制单元300可以在L2和L3配置已经改变之后使数据无效。
控制单元300还可以被配置来监测与处理器、应用程序和高速缓存相关联的各种参数。在一个实施方案中,控制单元300可以将参数值存储在表格310中的一个或多个中。表格310是可以用于存储与主机处理器的运行条件相关联的数据的任何数量和类型的结构的代表。例如,在一个实施方案中,控制单元300可以将用于主机处理器正在执行的多个应用程序的优选L2和L3高速缓存大小存储在表格310A中。可替代地,在一些实施方案中,代替利用表格310A,控制单元300可以从软件检索或接收设置以用于正被执行的当前应用程序。然后,控制单元300可以利用所述设置来确定是否调整或维持L2与L3高速缓存之间的当前容量分配。
表格310A是可由控制单元300用来确定用于主机处理器正在执行的给定应用程序的优选L2和L3高速缓存大小的表格的实例。表格310A中可以存储任何数目的应用程序的任何数目的设置。如表格310A所示,第一应用程序可以具有用于每核心逻辑高速缓存的128KB的优选L2高速缓存大小和896KB的优选L3切片大小,第二应用程序可以具有用于每核心逻辑高速缓存的384KB的优选L2高速缓存大小和640KB的优选L3切片大小,第三应用程序可以具有用于每核心逻辑高速缓存的256KB的优选L2高速缓存大小和768KB的优选L3切片大小等等。出于本讨论的目的,可以假设1MB是用于L2和L3部分的每核心逻辑高速缓存总大小。用于每核心逻辑高速缓存大小的存储容量的数量可以根据实施方案而变化。
表格310B是可由控制单元300用来确定何时调整用于每个每核心逻辑高速缓存的L2和L3高速缓存大小的表格的另一个实例。表格310B可以包括与可以用于与一个或多个阈值进行比较的与L2和L3高速缓存相关联的参数的当前值。在一个实施方案中,软件和/或其他控制逻辑可以被配置来对存储在表格310B中的阈值进行编程。在另一个实施方案中,可以预先确定存储在表格310B中的阈值。应当注意,控制单元300可以包括可以用来帮助动态地重新调整L2和L3高速缓存部分的大小,或者用来在重新调整大小之后重新定位数据的其他表格(例如,重映射表格)。
现在转向图4,示出了处理器400的一个实施方案。处理器400可以包括核心405A-D和高速缓存410A-D。在其他实施方案中,处理器405可以包括其他数目的核心和对应的高速缓存。每个高速缓存410A-D可以包括L2高速缓存和L3切片,其中L2高速缓存和L3切片的大小可调整。每个高速缓存410A-D的总大小可以是固定的,使得L2部分的大小的增大将通过L3部分的大小的减小来抵消。给定高速缓存410A-D的L2与L3部分之间的大小混合可以被调整成使得处理器性能针对当前运行条件和/或处理器400正在执行的当前应用程序而被优化。
如图4所示的高速缓存410A-D的资源的分配展示了如何在高速缓存410A-D的L2与L3部分之间分配空间的一个实例。如图4所示,高速缓存410A的两条路径被分配给L2高速缓存,并且高速缓存410A的四条路径被分配给L3高速缓存。出于本讨论的目的,可以假设高速缓存410A有六条路径,并且还可以假设分配给L2高速缓存的高速缓存410A的容量为256千字节(KB)以及分配给L3高速缓存的高速缓存410A的容量为512KB。所示出的针对高速缓存410A的L2和L3部分的分配还可以用于高速缓存410B-D。然而,应当理解,L2和L3部分的容量分配对于高速缓存410A-D中的每一个不必是相同的。
L3高速缓存415可以是核心405A-D间的共享高速缓存,并且当所有四个L3切片加在一起时,对L3高速缓存415分配的总容量为2兆字节(MB)。处理器400可以利用地址交错,使得对给定核心405A-D的请求可以被映射到与对应于给定核心405A-D的高速缓存410A-D不同的高速缓存410A-D的L3切片。例如,由核心405A产生的存储器请求的地址可以被映射到高速缓存410A、高速缓存410B、高速缓存410C和高速缓存410D的L3部分。其他核心也可以用类似的地址交错方案映射到所有高速缓存410A-D。
虽然在图4中展示了高速缓存410A-D可以具有分配给L2高速缓存的第一部分路径和分配给L3高速缓存的第二部分路径,但是应当理解,这仅仅是用于划分高速缓存的方案的一个实例。在其他实施方案中,高速缓存410A-D可以被分成L2与L3部分之间的其他尺寸的部分(例如,组、存储体)。例如,在另一个实施方案中,对于每个高速缓存410A-D,第一数目的组可以被分配给L2高速缓存并且第二数目的组可以被分配给L3高速缓存。
现在参考图5,示出了处理器500的另一个实施方案的框图。处理器500可以包括核心505A-D和高速缓存510A-D。在其他实施方案中,处理器505可以包括其他数目的核心。每个高速缓存510A-D可以包括L2部分和L3部分,其中L2和L3部分的大小可调整。处理器500可以被配置来动态调整每个高速缓存510A-D的L2和L3部分。
图5中示出了高速缓存实现方式的一个实例,其中对于每个高速缓存510A-D,三条路径被分配给L2高速缓存并且三条路径被分配给L3切片。在一个实施方案中,处理器500可以代表在已经调整L2高速缓存和L3高速缓存的大小之后的稍后时间点的处理器400。在这个实施方案中,L3切片已经从每个高速缓存510A-D的四条路径减少到每个高速缓存510A-D的三条路径。响应于检测一个或多个条件,处理器500可以调整L3高速缓存515和L2高速缓存的大小。下面在与图8-13相关的讨论中进一步详细描述用于调整高速缓存大小的条件的实例。
在图5所示的实施方案中,可以假设每条路径对应于每个高速缓存510A-D的128KB数据。因此,高速缓存510A-D中的每个L2高速缓存包括384KB的容量,而高速缓存510A-D中的每个L3切片也包括384KB的容量。在这个实施方案中,共享L3高速缓存515的总容量为1.5MB。其他实施方案可以具有每高速缓存510A-D不同数目的路径和/或每路径其他数量的容量。
在一个实施方案中,核心505A可以将高速缓存行‘X’的副本高速缓存在其L2高速缓存中。核心505C也可以将高速缓存行‘X’的副本高速缓存在其相应的L2高速缓存中。然而,出于本讨论的目的,可以假设核心505B在其L2高速缓存中不具有高速缓存行‘X’的副本。在高速缓存切片510B的L2切片中的高速缓存未命中时,核心505B可以向核心505D发送请求,假设L3地址交错将高速缓存行‘X’映射到核心505D的L3切片。因此,可以执行查找以在核心505D的L3切片中找到高速缓存行‘X’,然后将其提供给核心505B。
现在转向图6,示出了在三个不同时间点的高速缓存600的一个实施方案的框图。高速缓存600A示于图6的顶部处,并且高速缓存600A包括L2高速缓存605A和L3切片610A。L3切片610A可以是较大L3高速缓存的包括对应于其他核心的其他高速缓存(未示出)的L3切片的一部分。响应于改变运行条件,高速缓存600A可以被配置来动态调整L2高速缓存605A和L3切片610A的大小。如高速缓存600A所示,L2高速缓存605A包括路径0-2,并且L3切片610A包括路径3-7。在其他实施方案中,高速缓存600A可以包括其他数目的路径。高速缓存600A还可以包括‘N’个组,其中‘N’是正整数,其可以根据不同实施方案而变化。高速缓存行625被示出为存储在高速缓存600A的组0的路径3中,高速缓存行630被示出为存储在高速缓存600A的组1的路径3中,并且高速缓存行635被示出为存储在高速缓存600A的组N的路径3中。应当注意,高速缓存600A可以存储其他高速缓存行,所述其他高速缓存行未示出以避免混淆附图。
出于本讨论的目的,可以假设响应于检测一个或多个条件、接收来自软件的指令和/或其他事件,高速缓存600A的容量在L2与L3部分之间动态地重新分配。位于图6中间的高速缓存600B的图解意图代表在已经调整L2和L3部分的大小之后的稍后时间点的高速缓存600A。如高速缓存600B所示,路径3已经从L3切片610B重新分配给L2高速缓存605B。高速缓存行625、630和635可以保留在它们在路径3中的相同的物理位置中,但是它们现在存储在L2高速缓存605B中而不是L3切片610B中。然而,高速缓存行625、630和635可以不映射到L2高速缓存605B中的这些位置,这将防止高速缓存控制器(未示出)在执行对L2高速缓存605B的查找时找到这些高速缓存行。
因此,响应于动态地重新调整L2高速缓存605B和L3切片610B的大小,高速缓存控制器可以被配置来将已经受重新调整大小影响的高速缓存行重映射并迁移到基于其地址的适当位的它们将实际映射的位置。位于图6的底部处的高速缓存600C(包括L2高速缓存605C和L3切片610C)的图解意图代表在高速缓存行625、630和635已经重映射到基于其对应于L2映射的地址位的适当位置之后的稍后时间点的高速缓存600B。出于本讨论的目的,可以假设高速缓存行625已经重映射并迁移到L2高速缓存605C的组1的路径1,高速缓存行630已经重映射并迁移到L2高速缓存605C的组N-1的路径0,并且高速缓存行635已经重映射并迁移到L2高速缓存605C的组0的路径0。可替代地,代替重映射并迁移高速缓存行625、630和635,可以使这些高速缓存行无效。如果和当将来再次请求这些高速缓存行时,将出现高速缓存未命中,然后基于地址位和L2映射将高速缓存行插入到L2高速缓存中的适当位置处。
这些重映射仅仅意图说明重映射方案的一个实例,其中重映射方案根据受影响的高速缓存行的标签位和高速缓存映射方案而变化。应当理解,高速缓存600的组织意图说明高速缓存的一个可能的组织。在其他实施方案中,可以实现具有其他数目的组、路径和/或其他高速缓存尺寸的其他结构的高速缓存。
现在参考图7,示出了展示多个高速缓存的地址位的图解。样本高速缓存行地址700示于图7的顶部处,其中取决于实施方案,样本高速缓存行700包括任何数目的位。地址700的第一部分的位715可以用于选择L3高速缓存的给定切片(例如,图6的L3切片610A),地址700的第二部分的位720可以用于选择L2高速缓存的给定组(例如,图6的L2切片605A),并且地址700的第三部分的位725可以用作用于选择L3切片(例如,L3切片610A)的给定组的L3标签位。尽管示出了L3切片索引位715包括两个位,并且L2组索引位720和L3组索引位725包括三个位,但这仅仅是一个实施方案的代表,并且其他实施方案可以具有其他数目的L3切片索引位以及L2和L3组索引位。在各种实施方案中,L2索引位、L3切片位以及L3索引位可以彼此分开。可替代地,在各种实施方案中,L2索引、L3切片以及L3索引的一个或多个位可以重叠。
高速缓存行625、630和635的地址位示于图7的底部处。出于本讨论的目的,可以假设利用高速缓存行625、630和635的L3切片索引位‘00’分别将高速缓存行625、630和635映射到如高速缓存600A中所示的L3切片610A。出于本讨论的目的,还可以假设利用高速缓存行625、630和635的L3组索引位分别将高速缓存行625、630和635映射到如高速缓存600A中所示的L3切片610A的正确组。因此,高速缓存行625的地址的L3组索引部分为“000”,其将高速缓存行625映射到L3切片610A的组0,高速缓存行630的地址的L3组索引部分为“001”,其将高速缓存行630映射到L3切片610A的组1,并且高速缓存行635的地址的L3组索引部分为“111”,其将高速缓存行635映射到L3切片610A的组N-1。可以假设在这个特定实施方案中‘N’等于八。然后,在将路径3从L3切片610A重新分配给L2高速缓存605B之后,可以利用高速缓存行625、630和635的L2组索引部分分别将高速缓存行625、630和635重映射并迁移到如高速缓存600C中所示的L2高速缓存605C的正确组。因此,高速缓存行625的地址的L2组索引部分为“001”,其将高速缓存行625映射到L2高速缓存605C的组1,高速缓存行630的地址的L2组索引部分为“111”,其将高速缓存行630映射到L2高速缓存605C的组N-1,并且高速缓存行635的地址的L2组索引部分为“000”,其将高速缓存行635映射到L2高速缓存605C的组0。
应当理解,如图7所示的用于确定高速缓存切片和组映射的具体地址位的实例仅仅是一个可能的实现方式。其他实现方式可以利用其他地址位来确定高速缓存行到L2高速缓存和对应高速缓存的L3切片内的位置的映射。
现在转向图8,示出了用于动态调整逻辑高速缓存大小的方法800的一个实施方案。出于讨论目的,以相继次序示出这个实施方案中的步骤。应当注意,在以下所描述方法的各种实施方案中,所描述的元件中的一个或多个可以与所示顺序不同的顺序同时执行,或者可以整体省略。还可以根据需要执行其他另外的元件。本文所描述的各种系统或处理器中的任一种可以被配置来实现方法800。
处理器可以监测与第一逻辑高速缓存和第二逻辑高速缓存相关联的一个或多个参数(方框805)。在一个实施方案中,单个高速缓存可以逻辑地划分为第一逻辑高速缓存和第二逻辑高速缓存,其中第一逻辑高速缓存代表L2高速缓存并且第二逻辑高速缓存代表L3高速缓存。在其他实施方案中,第一逻辑高速缓存和第二逻辑高速缓存可以代表处理器的高速缓存分级结构的其他级别。一个或多个参数可以包括第一逻辑高速缓存和/或第二逻辑高速缓存的高速缓存命中率、第一逻辑高速缓存和/或第二逻辑高速缓存的高速缓存未命中率、不同第一逻辑高速缓存之间的高速缓存行的迁移速率和/或其他参数。
接下来,处理器可以将一个或多个参数与一个或多个阈值进行比较(方框810)。例如,在各种实施方案中,处理器可以将第一逻辑高速缓存的高速缓存命中率与第一阈值进行比较,处理器可以将第二逻辑高速缓存的高速缓存命中率与第二阈值进行比较,处理器可以将第一逻辑高速缓存的命中率与第二逻辑高速缓存的命中率之间的差值与第三阈值进行比较,处理器可以将迁移速率与第四阈值进行比较,和/或处理器可以执行其他比较。计算高速缓存命中率或高速缓存行迁移速率所经过的时间量可以根据实施方案而变化。在一个实施方案中,可以在一些实施方案中按照重要性顺序排序比较,使得如果排名最高的比较结果超过给定阈值,那么这将取代所有其他比较。在另一个实施方案中,可以同样地处理比较,使得一个比较的结果消除另一个比较的结果。通常,实施方案可以单独或组合利用考虑比较中的一个或多个的任何函数(例如,当第一比较和第二比较超过相应的第一给定阈值和第二给定阈值时)。
接下来,处理器可以确定比较结果是否指示应当调整第一逻辑高速缓存和第二逻辑高速缓存的大小(条件框815)。例如,比较结果可以指示应当减小第一逻辑高速缓存的大小,并且应当增大第二逻辑高速缓存的大小以实现改进的处理器性能。可替代地,比较结果可以指示应当增大第一逻辑高速缓存的大小,并且应当减小第二逻辑高速缓存的大小以实现改进的处理器性能。
如果比较结果指示应当调整第一逻辑高速缓存和第二逻辑高速缓存的大小(条件框815,“是”分支),那么处理器可以动态调整第一逻辑高速缓存和第二逻辑高速缓存的大小(方框820)。如果比较结果不指示应当调整第一逻辑高速缓存和第二逻辑高速缓存的大小(条件框815,“否”分支),那么处理器可以维持第一逻辑高速缓存和第二逻辑高速缓存的当前大小(方框825)。在方框820和825之后,方法800可以结束。应当注意,方法800可以有规律的间隔执行。下面的图9-12提供关于其中监测具体参数并将所述参数与一个或多个阈值进行比较的实施方案的进一步细节。
现在参考图9,示出了用于动态调整高速缓存大小的方法900的另一个实施方案。出于讨论目的,以相继次序示出这个实施方案中的步骤。应当注意,在以下所描述方法的各种实施方案中,所描述的元件中的一个或多个可以与所示顺序不同的顺序同时执行,或者可以整体省略。还可以根据需要执行其他另外的元件。本文所描述的各种系统或处理器中的任一种可以被配置来实现方法900。
处理器可以监测第一高速缓存的高速缓存命中率(方框905)。可替代地,在方框905中,处理器可以监测第一高速缓存的高速缓存未命中率,所述高速缓存未命中率等于1-高速缓存命中率。在一个实施方案中,处理器可以是多核处理器,其中核心的数目根据不同实施方案而变化。在各种实施方案中,单个高速缓存在逻辑上划分为第一(逻辑)高速缓存和第二(逻辑)高速缓存。在一个实施方案中,第一高速缓存可以是L2高速缓存,并且第二高速缓存可以是L3高速缓存。接下来,处理器可以将第一高速缓存的命中率与阈值进行比较(方框910)。在一个实施方案中,阈值可以是可编程的。
如果第一高速缓存的命中率大于阈值(条件框915,“是”分支),那么处理器可以增大第一高速缓存的大小并减小第二高速缓存的大小(方框920)。如果第一高速缓存的命中率小于阈值(条件框915,“否”分支),那么处理器可以维持第一高速缓存和第二高速缓存的当前大小(方框925)。在方框920和925之后,方法900可以结束。在一个实施方案中,方法900可以有规律的间隔重复以确定是否应当基于第一高速缓存的命中率来调整高速缓存大小。应当注意,方法900可以由处理器与一个或多个其他方法(例如,图10-12的方法1000、1100和1200)同时执行。通常,实施方案可以单独或组合利用考虑比较中的一个或多个的任何函数(例如,当第一比较和第二比较超过相应的第一给定阈值和第二给定阈值时)。
现在参考图10,示出了用于确定何时调整高速缓存大小的方法1000的一个实施方案。出于讨论目的,以相继次序示出这个实施方案中的步骤。应当注意,在以下所描述方法的各种实施方案中,所描述的元件中的一个或多个可以与所示顺序不同的顺序同时执行,或者可以整体省略。还可以根据需要执行其他另外的元件。本文所描述的各种系统或处理器中的任一种可以被配置来实现方法1000。
处理器可以监测第一高速缓存和第二高速缓存的命中率(方框1005)。出于本讨论的目的,可以假设第一(逻辑)高速缓存与第二(逻辑)高速缓存组合在单个物理高速缓存中。在一个实施方案中,第一高速缓存可以是L2高速缓存,并且第二高速缓存可以是L3高速缓存。在其他实施方案中,第一高速缓存和第二高速缓存可以是多级高速缓存分级结构的其他高速缓存级别。接下来,处理器可以将第一高速缓存的命中率与第二高速缓存的命中率之间的差值与第一阈值和第二阈值进行比较(方框1010)。在一个实施方案中,第一阈值和第二阈值可以是可编程的。
如果第一高速缓存(FC)的命中率比第二高速缓存(SC)的命中率高第一阈值(条件框1015,“是”分支),那么处理器可以增大第一高速缓存的大小并减小第二高速缓存的大小(方框1020)。如果第一高速缓存的命中率不比第二高速缓存的命中率高第一阈值(条件框1015,“否”分支),那么处理器可以确定第二高速缓存的命中率是否比第一高速缓存的命中率高第二阈值(条件框1025)。如果第二高速缓存的命中率比第一高速缓存的命中率高第二阈值(条件框1025,“是”分支),那么处理器可以增大第二高速缓存的大小并减小第一高速缓存的大小(方框1030)。如果第二高速缓存的命中率不比第一高速缓存的命中率高第二阈值(条件框1025,“否”分支),那么处理器可以维持第一高速缓存和第二高速缓存的当前大小(方框1035)。在方框1020、1030和1035之后,方法1000可以结束。在一个实施方案中,方法1000可以定期重复以基于第一高速缓存与第二高速缓存的命中率之间的差值来确定是否应当调整高速缓存大小。
现在参考图11,示出了用于确定何时调整高速缓存大小的方法1100的另一个实施方案。出于讨论目的,以相继次序示出这个实施方案中的步骤。应当注意,在以下所描述方法的各种实施方案中,所描述的元件中的一个或多个可以与所示顺序不同的顺序同时执行,或者可以整体省略。还可以根据需要执行其他另外的元件。本文所描述的各种系统或处理器中的任一种可以被配置来实现方法1100。
处理器可以监测第一高速缓存和第二高速缓存的命中率(方框1105)。出于本讨论的目的,可以假设单个物理高速缓存在逻辑上划分为第一高速缓存和第二高速缓存。在一个实施方案中,第一高速缓存可以是L2高速缓存,并且第二高速缓存可以是L3高速缓存。在其他实施方案中,第一高速缓存和第二高速缓存可以是多级高速缓存分级结构的其他高速缓存级别。接下来,处理器可以将第一高速缓存的命中率与第一阈值进行比较(方框1110)。
如果第一高速缓存的命中率小于第一阈值(条件框1115,“是”分支),那么处理器可以将第二高速缓存的命中率与第二阈值进行比较(方框1120)。在一个实施方案中,第一阈值和第二阈值可以是可编程的。如果第一高速缓存的命中率大于第一阈值(条件框1115,“否”分支),那么处理器可以维持第一高速缓存和第二高速缓存的当前大小(方框1125)。在一些实施方案中,处理器可以将第一高速缓存的命中率与多个阈值进行比较,其中第一阈值是相对较低的阈值。在一些情形下,处理器可以将第一高速缓存的命中率与相对较高的阈值进行比较,并且响应于第一高速缓存的命中率超过相对较高的阈值,处理器可以增大第一高速缓存的大小并减小第二高速缓存的大小。参考图9的方法900描述这样的实施方案。
如果第二高速缓存的命中率小于第二阈值(条件框1130,“是”分支),那么处理器可以增大第二高速缓存的大小并减小第一高速缓存的大小(方框1135)。如果第一高速缓存和第二高速缓存两者的命中率均低于其对应阈值,那么这指示处理器正在访问比适于第二高速缓存更多的数据,并且因此在这种情况下,处理器可以通过减小第一高速缓存的大小以便增大第二高速缓存的大小来改进性能。如果第二高速缓存的命中率大于第二阈值(条件框1130,“否”分支),那么处理器可以维持第一高速缓存和第二高速缓存的当前大小(方框1125)。在方框1125和1135之后,方法1100可以结束。
现在参考图12,示出了用于监测高速缓存分级结构中的迁移速率的方法1200的一个实施方案。出于讨论目的,以相继次序示出这个实施方案中的步骤。应当注意,在以下所描述方法的各种实施方案中,所描述的元件中的一个或多个可以与所示顺序不同的顺序同时执行,或者可以整体省略。还可以根据需要执行其他另外的元件。本文所描述的各种系统或处理器中的任一种可以被配置来实现方法1200。
具有多级高速缓存分级结构的多核处理器可以监测多级高速缓存分级结构的给定级别的高速缓存之间的迁移速率(方框1205)。在一个实施方案中,给定级别可以是高速缓存分级结构的的L2级别。接下来,处理器可以将迁移速率与阈值进行比较(方框1210)。在一个实施方案中,阈值可以是可编程的。如果迁移速率大于阈值(条件框1215,“是”分支),那么处理器可以减小给定级别的高速缓存的大小并且增大高速缓存分级结构的下一个更高级别的高速缓存的大小(方框1220)。在一个实施方案中,下一个更高级别可以是高速缓存分级结构的的L3级别。如果迁移速率小于阈值(条件框1215,“否”分支),那么处理器可以维持给定级别和下一个更高级别的当前高速缓存大小(方框1225)。在方框1220和1225之后,方法1200可以结束。
现在参考图13,示出了用于利用相邻高速缓存级别之间的不同容量分配的方法1300的一个实施方案。出于讨论目的,以相继次序示出这个实施方案中的步骤。应当注意,在以下所描述方法的各种实施方案中,所描述的元件中的一个或多个可以与所示顺序不同的顺序同时执行,或者可以整体省略。还可以根据需要执行其他另外的元件。本文所描述的各种系统或处理器中的任一种可以被配置来实现方法1300。
具有多级高速缓存分级结构的处理器可以执行第一应用程序(方框1305)。多级高速缓存分级结构可以包括物理高速缓存,所述物理高速缓存包括第一逻辑高速缓存(或第一高速缓存)以及第二逻辑高速缓存(或第二高速缓存)的一部分。在一个实施方案中,第一高速缓存可以是L2高速缓存,并且第二高速缓存可以是L3高速缓存。处理器可以在执行第一应用程序的同时利用物理高速缓存的第一高速缓存与第二高速缓存之间的第一容量分配(方框1310)。在一个实施方案中,第一容量分配可以包括分配给第一高速缓存的第一容量和分配给第二高速缓存的第二容量,并且第一容量分配可以是第一应用程序的优选分配。第一容量和第二容量的组合(或总和)可以等于第三容量,并且第三容量对于给定的物理高速缓存可以是固定的。
接下来,处理器可以检测到执行第二应用程序的切换(方框1315)。响应于检测到执行第二应用程序的切换,处理器可以在执行第二应用程序的同时利用物理高速缓存的第一高速缓存与第二高速缓存之间的第二容量分配(方框1320)。出于本讨论的目的,可以假设第二容量分配是第二应用程序的优选分配。还可以假设第二容量分配不同于第一容量分配,其中第二容量分配包括分配给第一高速缓存的第四容量和分配给第二高速缓存的第五容量。换句话讲,第四容量不同于第一容量,并且第五容量不同于第二容量。另外,第四容量和第五容量的组合可以等于第三容量。在方框1320之后,方法1300可以结束。应当注意,在一些情况下,当处理器在执行不同应用程序之间切换时,不同应用程序可以具有用于第一高速缓存和第二高速缓存的相同的优选容量分配。因此,如果不同应用程序共享相同的优选容量分配,那么在执行不同应用程序之间切换时,处理器可以不更改容量分配。
现在转向图14,示出了用于转发填充数据的方法1400的一个实施方案。出于讨论目的,以相继次序示出这个实施方案中的步骤。应当注意,在以下所描述方法的各种实施方案中,所描述的元件中的一个或多个可以与所示顺序不同的顺序同时执行,或者可以整体省略。还可以根据需要执行其他另外的元件。本文所描述的各种系统或处理器中的任一种可以被配置来实现方法1400。
处理器可以从第二高速缓存的第一部分向存储器发送第一请求,其中第一请求以第一存储器地址为目标(方框1405)。在一个实施方案中,响应于在第二高速缓存的第一部分中缺失第一请求,处理器可以向存储器发送第一请求。在各种实施方案中,第一高速缓存可以是L2逻辑高速缓存,并且第二高速缓存可以是L3逻辑高速缓存。在其他实施方案中,第一高速缓存和第二高速缓存可以处于多级高速缓存分级结构的其他逻辑级别。
接下来,在接收对应于来自存储器的第一请求的第一填充数据之前,高速缓存控制器可以在将第一请求发送到存储器之后将第二高速缓存的第一部分重新分配给第一高速缓存(方框1410)。然后,高速缓存控制器可以接收来自存储器的第一请求(方框1415)。高速缓存控制器可以确定第一存储器地址已经重映射到第二高速缓存的第二部分(方框1420)。出于本讨论的目的,可以假设第二高速缓存的第一部分到第一高速缓存的重新分配导致第一存储器地址重映射到第二高速缓存的第二部分。响应于确定第一存储器地址已经重映射到第二高速缓存的第二部分,高速缓存控制器可以将第一填充数据转发到第二高速缓存的第二部分(方框1425)。在另一个实施方案中,高速缓存控制器可以丢弃第一填充数据而不是将第一填充数据转发到第二高速缓存的第二部分。在方框1425之后,方法1400可以结束。
现在参考图15,示出了用于重新分配物理高速缓存的一部分的方法1500的一个实施方案。出于讨论目的,以相继次序示出这个实施方案中的步骤。应当注意,在以下所描述方法的各种实施方案中,所描述的元件中的一个或多个可以与所示顺序不同的顺序同时执行,或者可以整体省略。还可以根据需要执行其他另外的元件。本文所描述的各种系统或处理器中的任一种可以被配置来实现方法1500。
在给定时间点,处理器可以将物理高速缓存的第一部分用作第一逻辑高速缓存的一部分(方框1505)。在一个实施方案中,物理高速缓存可以包括第一逻辑高速缓存和第二逻辑高速缓存,其中第一逻辑高速缓存代表L2高速缓存并且第二逻辑高速缓存代表L3高速缓存(或L3高速缓存的切片)。取决于实施方案,第一部分可以是物理高速缓存的第一路径、第一组、第一存储体或另一个部分。响应于事件或检测一个或多个条件,处理器可以动态地将物理高速缓存的第一部分重新分配给第二逻辑高速缓存(方框1510)。取决于实施方案,事件可以是从第一应用程序切换到第二应用程序,检测高速缓存命中率是高于还是低于阈值,检测高速缓存命中率之间的差值是否高于阈值,和/或一个或多个其他条件。
接下来,处理器可以将物理高速缓存的第一部分用作第二逻辑高速缓存的一部分(方框1515)。例如,在方框1515中,处理器可以将由第二逻辑高速缓存接收的高速缓存行存储在物理高速缓存的第一部分中。在方框1515之后,方法1500可以结束。应当注意,处理器可以在处理器的操作的长时段内多次动态地重新分配第一逻辑高速缓存与第二逻辑高速缓存之间的容量,并且物理高速缓存的第一部分可以在第一逻辑高速缓存与第二逻辑高速缓存之间多次来回传递。
在各种实施方案中,可以使用软件应用程序的程序指令来实现先前所描述的方法和/或机制。程序指令可以高级编程语言(诸如C)描述硬件的行为。可替代地,可以使用硬件设计语言(HDL),诸如Verilog。程序指令可以存储在非暂时性计算机可读存储介质上。许多类型的存储介质都可用。存储介质在使用期间可由计算系统访问以向计算系统提供程序指令和伴随数据用于程序执行。计算系统至少可以包括一个或多个存储器和被配置来执行程序指令的一个或多个处理器。
应当强调,上述实施方案仅是实现方式的非限制性实例。本领域技术人员在完全理解以上公开内容后将清楚众多变型和修改。意图将所附权利要求书解释为涵盖全部此类变型和修改。

Claims (13)

1.一种处理器,其包括:
第一物理高速缓存,其耦合到第一核心;以及
第二物理高速缓存,其耦合到第二核心;以及
控制单元;
其中所述控制单元被配置来:
将所述第一物理高速缓存划分为第一逻辑高速缓存和第二逻辑高速缓存的第一部分;
将所述第二物理高速缓存划分为第三逻辑高速缓存和所述第二逻辑高速缓存的第二部分,其中所述第一逻辑高速缓存和所述第三逻辑高速缓存代表高速缓存分级结构的第一级别,并且其中所述第二逻辑高速缓存代表所述高速缓存分级结构的第二级别;并且其中所述第一逻辑高速缓存和所述第二逻辑高速缓存中的每一者被配置为存储从高级别存储器中获取的数据;
将所述第二逻辑高速缓存的第一路径重新分配到所述第一逻辑高速缓存;
识别存储在所述第二逻辑高速缓存的所述第一路径中的第一高速缓存行;并且
响应于将所述第一路径从所述第二逻辑高速缓存重新分配到所述第一逻辑高速缓存,使所述第一高速缓存行无效。
2.如权利要求1所述的处理器,其中:
所述第一逻辑高速缓存是所述第一核心的专用高速缓存;
所述第三逻辑高速缓存是所述第二核心的专用高速缓存;并且
所述第二逻辑高速缓存由所述第一核心和所述第二核心共享。
3.如权利要求1所述的处理器,其中所述控制单元进一步被配置来:
响应于接收到包括地址的请求,在所述第一逻辑高速缓存中执行查找;
响应于确定所述请求在所述第一逻辑高速缓存中未命中:
响应于确定所述地址选择所述第二逻辑高速缓存的所述第一部分,在所述第二逻辑高速缓存的所述第一部分中执行查找;以及
响应于确定所述地址选择所述第二逻辑高速缓存的所述第二部分,在所述第二逻辑高速缓存的所述第二部分中执行查找。
4.如权利要求1所述的处理器,其中所述处理器进一步被配置来响应于所述第一逻辑高速缓存和所述第三逻辑高速缓存之间的高速缓存命中率和高速缓存数据的迁移速率中的一者或多者,修改所述第一逻辑高速缓存、所述第二逻辑高速缓存和所述第三逻辑高速缓存中的一者或多者的大小。
5.如权利要求1所述的处理器,其中所述处理器进一步被配置来:
响应于检测到第一存储器地址未命中,向存储器发送以所述第二逻辑高速缓存中的原始位置为目标的第一请求;
在将所述第一请求发送到存储器之后并且在从存储器接收第一填充数据之前,将所述原始位置从所述第二逻辑高速缓存重新分配到所述第一逻辑高速缓存,其中所述第一填充数据对应于所述第一请求;
从存储器接收所述第一填充数据;
确定所述第一存储器地址已经重映射到所述第二逻辑高速缓存中的新位置,其中所述第二逻辑高速缓存中的所述新位置不同于所述第二逻辑高速缓存中的所述原始位置;
将所述第一填充数据存储到所述第二逻辑高速缓存中的所述新位置。
6.如权利要求1所述的处理器,其中所述处理器被配置来响应于从执行第一应用程序切换到执行第二应用程序,减小所述第一逻辑高速缓存的存储容量并增大所述第二逻辑高速缓存的存储容量。
7. 一种用于实现高速缓存的方法,其包括:
通过控制单元将耦合到第一核心的第一物理高速缓存划分为第一逻辑高速缓存和第二逻辑高速缓存的第一部分;并且
通过所述控制单元将耦合到第二核心的第二物理高速缓存划分为第三逻辑高速缓存和所述第二逻辑高速缓存的第二部分,其中所述第一逻辑高速缓存和所述第三逻辑高速缓存代表高速缓存分级结构的第一级别,其中所述第二逻辑高速缓存代表所述高速缓存分级结构的第二级别,并且其中所述第一逻辑高速缓存和所述第二逻辑高速缓存中的每一者被配置为存储从高级别存储器中获取的数据;
通过所述控制单元将所述第二逻辑高速缓存的第一路径重新分配到所述第一逻辑高速缓存;
通过所述控制单元识别存储在所述第二逻辑高速缓存的所述第一路径中的第一高速缓存行;并且
通过所述控制单元,响应于将所述第一路径从所述第二逻辑高速缓存重新分配到所述第一逻辑高速缓存,使所述第一高速缓存行无效。
8.如权利要求7所述的方法,其中:
所述第一逻辑高速缓存是所述第一核心的专用高速缓存;
所述第三逻辑高速缓存是所述第二核心的专用高速缓存;并且
所述第二逻辑高速缓存由所述第一核心和所述第二核心共享。
9.如权利要求7所述的方法,其还包括:
通过所述控制单元,响应于接收到包括地址的请求,在所述第一逻辑高速缓存中执行查找;
响应于确定所述请求在所述第一逻辑高速缓存中未命中:
响应于通过所述控制单元确定所述地址选择所述第二逻辑高速缓存的所述第一部分,在所述第二逻辑高速缓存的所述第一部分中执行查找;以及
通过所述控制单元,响应于确定所述地址选择所述第二逻辑高速缓存的所述第二部分,在所述第二逻辑高速缓存的所述第二部分中执行查找。
10.如权利要求7所述的方法,其还包括响应于所述第一逻辑高速缓存和所述第三逻辑高速缓存之间的高速缓存命中率和高速缓存数据的迁移速率中的一者或多者,通过所述控制单元修改所述第一逻辑高速缓存、所述第二逻辑高速缓存和所述第三逻辑高速缓存中的一者或多者的大小。
11.如权利要求7所述的方法,其还包括:
通过所述控制单元,响应于检测到第一存储器地址未命中,向存储器发送以所述第二逻辑高速缓存中的原始位置为目标的第一请求;
通过所述控制单元,在将所述第一请求发送到存储器之后并且在从存储器接收第一填充数据之前,将所述原始位置从所述第二逻辑高速缓存重新分配到所述第一逻辑高速缓存,其中所述第一填充数据对应于所述第一请求;
通过所述控制单元从存储器接收所述第一填充数据;
通过所述控制单元确定所述第一存储器地址已经重映射到所述第二逻辑高速缓存中的新位置,其中所述第二逻辑高速缓存中的所述新位置不同于所述第二逻辑高速缓存中的所述原始位置;
通过所述控制单元将所述第一填充数据存储到所述第二逻辑高速缓存中的所述新位置。
12.如权利要求7所述的方法,其还包括:
通过所述控制单元,响应于从执行第一应用程序切换到执行第二应用程序,减小所述第一逻辑高速缓存的存储容量并增大所述第二逻辑高速缓存的存储容量。
13.一种用于实现高速缓存的系统,其包括:
存储器;以及
如权利要求1-6所述的处理器。
CN201680073767.4A 2015-12-17 2016-09-20 混合高速缓存 Active CN108431786B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/973,448 US10255190B2 (en) 2015-12-17 2015-12-17 Hybrid cache
US14/973,448 2015-12-17
PCT/US2016/052722 WO2017105575A1 (en) 2015-12-17 2016-09-20 Hybrid cache

Publications (2)

Publication Number Publication Date
CN108431786A CN108431786A (zh) 2018-08-21
CN108431786B true CN108431786B (zh) 2024-05-03

Family

ID=59057364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680073767.4A Active CN108431786B (zh) 2015-12-17 2016-09-20 混合高速缓存

Country Status (6)

Country Link
US (1) US10255190B2 (zh)
EP (1) EP3391227A4 (zh)
JP (1) JP6730434B2 (zh)
KR (1) KR102414157B1 (zh)
CN (1) CN108431786B (zh)
WO (1) WO2017105575A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013048497A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
CN106095587B (zh) * 2016-06-24 2019-12-24 北京金山安全软件有限公司 应用程序的缓存扫描方法、装置及电子设备
US11397687B2 (en) * 2017-01-25 2022-07-26 Samsung Electronics Co., Ltd. Flash-integrated high bandwidth memory appliance
US11016665B2 (en) * 2018-01-23 2021-05-25 Seagate Technology Llc Event-based dynamic memory allocation in a data storage device
CN109117291A (zh) * 2018-08-27 2019-01-01 惠州Tcl移动通信有限公司 基于多核处理器的数据调度处理方法、装置和计算机设备
US10740234B2 (en) * 2018-09-04 2020-08-11 International Business Machines Corporation Virtual processor cache reuse
CN112148665B (zh) * 2019-06-28 2024-01-09 深圳市中兴微电子技术有限公司 缓存的分配方法及装置
US11372758B2 (en) * 2020-05-12 2022-06-28 Jackson State University Dynamic reconfigurable multi-level cache for multi-purpose and heterogeneous computing architectures
KR102612947B1 (ko) * 2021-03-31 2023-12-11 광운대학교 산학협력단 통합 l2 캐시-변환 색인 버퍼 메모리의 제어 방법 및 장치
CN113259177B (zh) * 2021-06-17 2021-10-15 国网江苏省电力有限公司信息通信分公司 虚拟网络切片的重构方法和装置
KR102514268B1 (ko) * 2021-07-14 2023-03-24 연세대학교 산학협력단 데이터 마이그레이션 정책 스위칭 방법 및 장치
US11841798B2 (en) * 2021-08-09 2023-12-12 Arm Limited Selective allocation of memory storage elements for operation according to a selected one of multiple cache functions
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution
GB2622841A (en) * 2022-09-29 2024-04-03 Imagination Tech Ltd Distributed system level cache

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101331465A (zh) * 2005-12-21 2008-12-24 英特尔公司 分区的共享高速缓存
CN102567224A (zh) * 2010-12-02 2012-07-11 微软公司 高效高速缓存管理
CN102934046A (zh) * 2010-05-11 2013-02-13 超威半导体公司 高速缓存控制的方法和装置
KR101480143B1 (ko) * 2013-08-02 2015-01-06 전남대학교산학협력단 멀티코어 프로세서의 캐쉬 교체 방법 및 그 방법에 의해 동작하는 멀티코어 프로세서
CN104375958A (zh) * 2013-08-15 2015-02-25 国际商业机器公司 高速缓存存储器管理事务性存储器访问请求
CN104516830A (zh) * 2013-09-26 2015-04-15 凯为公司 多阶段地址转换中的转换旁路
CN105027211A (zh) * 2013-01-31 2015-11-04 惠普发展公司,有限责任合伙企业 自适应粒度行缓冲器高速缓存

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324621B2 (en) * 1998-06-10 2001-11-27 International Business Machines Corporation Data caching with a partially compressed cache
US6792509B2 (en) 2001-04-19 2004-09-14 International Business Machines Corporation Partitioned cache of multiple logical levels with adaptive reconfiguration based on multiple criteria
US20030145170A1 (en) * 2002-01-31 2003-07-31 Kever Wayne D. Dynamically adjusted cache power supply to optimize for cache access or power consumption
US6868485B1 (en) 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US20040103251A1 (en) 2002-11-26 2004-05-27 Mitchell Alsup Microprocessor including a first level cache and a second level cache having different cache line sizes
US7643480B2 (en) * 2004-01-22 2010-01-05 Hain-Ching Liu Method and system for reliably and efficiently transporting data over a network
US7257678B2 (en) 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Dynamic reconfiguration of cache memory
US8037281B2 (en) * 2005-04-07 2011-10-11 Advanced Micro Devices, Inc. Miss-under-miss processing and cache flushing
US20060248287A1 (en) * 2005-04-29 2006-11-02 Ibm Corporation Methods and arrangements for reducing latency and snooping cost in non-uniform cache memory architectures
US7389402B2 (en) 2005-06-07 2008-06-17 Advanced Micro Devices, Inc. Microprocessor including a configurable translation lookaside buffer
US20080104323A1 (en) 2006-10-26 2008-05-01 Colglazier Daniel J Method for identifying, tracking, and storing hot cache lines in an smp environment
US8019946B2 (en) * 2008-07-31 2011-09-13 Samsung Electronics Co., Ltd. Method and system for securing instruction caches using cache line locking
US8990506B2 (en) * 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
US8788783B1 (en) * 2010-06-18 2014-07-22 Disney Enterprises, Inc. Dynamically tuning the size of a cache stored in a shared memory
US20120144123A1 (en) * 2010-12-01 2012-06-07 International Business Machines Corporation Read-ahead processing in networked client-server architecture
US20120303897A1 (en) * 2011-05-28 2012-11-29 Sakthivel Komarasamy Pullagoundapatti Configurable set associative cache way architecture
WO2013101092A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Data control using last accessor information
GB2509755B (en) * 2013-01-14 2015-07-08 Imagination Tech Ltd Partitioning a shared cache using masks associated with threads to avoiding thrashing
US9336144B2 (en) * 2013-07-25 2016-05-10 Globalfoundries Inc. Three-dimensional processing system having multiple caches that can be partitioned, conjoined, and managed according to more than one set of rules and/or configurations
US9251081B2 (en) 2013-08-01 2016-02-02 Advanced Micro Devices, Inc. Management of caches
CN105493053B (zh) 2013-08-29 2019-06-11 英派尔科技开发有限公司 多核处理器及更新多核处理器中的高速缓存的方法
US20150205724A1 (en) 2014-01-20 2015-07-23 Honeywell International Inc. System and method of cache partitioning for processors with limited cached memory pools
US9710383B1 (en) * 2015-09-29 2017-07-18 EMC IP Holding Company LLC Caching techniques

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101331465A (zh) * 2005-12-21 2008-12-24 英特尔公司 分区的共享高速缓存
CN102934046A (zh) * 2010-05-11 2013-02-13 超威半导体公司 高速缓存控制的方法和装置
CN102567224A (zh) * 2010-12-02 2012-07-11 微软公司 高效高速缓存管理
CN105027211A (zh) * 2013-01-31 2015-11-04 惠普发展公司,有限责任合伙企业 自适应粒度行缓冲器高速缓存
KR101480143B1 (ko) * 2013-08-02 2015-01-06 전남대학교산학협력단 멀티코어 프로세서의 캐쉬 교체 방법 및 그 방법에 의해 동작하는 멀티코어 프로세서
CN104375958A (zh) * 2013-08-15 2015-02-25 国际商业机器公司 高速缓存存储器管理事务性存储器访问请求
CN104516830A (zh) * 2013-09-26 2015-04-15 凯为公司 多阶段地址转换中的转换旁路

Also Published As

Publication number Publication date
EP3391227A4 (en) 2019-08-28
CN108431786A (zh) 2018-08-21
JP6730434B2 (ja) 2020-07-29
US10255190B2 (en) 2019-04-09
US20170177492A1 (en) 2017-06-22
EP3391227A1 (en) 2018-10-24
WO2017105575A1 (en) 2017-06-22
KR102414157B1 (ko) 2022-06-28
JP2019502996A (ja) 2019-01-31
KR20180085752A (ko) 2018-07-27

Similar Documents

Publication Publication Date Title
CN108431786B (zh) 混合高速缓存
US11507516B2 (en) Adaptive cache partitioning
US10235290B2 (en) Hot page selection in multi-level memory hierarchies
US10067872B2 (en) Memory speculation for multiple memories
JP6928123B2 (ja) メモリシステム内のページマイグレーションのオーバヘッドを低減するメカニズム
US9098417B2 (en) Partitioning caches for sub-entities in computing devices
US10860244B2 (en) Method and apparatus for multi-level memory early page demotion
US10310985B2 (en) Systems and methods for accessing and managing a computing system memory
US11294808B2 (en) Adaptive cache
JP6203937B2 (ja) 計算機およびメモリ制御方法
US20120221785A1 (en) Polymorphic Stacked DRAM Memory Architecture
US10255191B2 (en) Logical memory address regions
US10031854B2 (en) Memory system
US20170083444A1 (en) Configuring fast memory as cache for slow memory
US8645612B2 (en) Information processing device and information processing method
US20180088853A1 (en) Multi-Level System Memory Having Near Memory Space Capable Of Behaving As Near Memory Cache or Fast Addressable System Memory Depending On System State
EP3839747A1 (en) Multi-level memory with improved memory side cache implementation
US11188467B2 (en) Multi-level system memory with near memory capable of storing compressed cache lines
US9880778B2 (en) Memory devices and methods
EP3506112A1 (en) Multi-level system memory configurations to operate higher priority users out of a faster memory level
US11003591B2 (en) Arithmetic processor, information processing device and control method of arithmetic processor
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof
US20160103766A1 (en) Lookup of a data structure containing a mapping between a virtual address space and a physical address space

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant