CN115917516A - 用于相联高速缓存的直接映射模式 - Google Patents
用于相联高速缓存的直接映射模式 Download PDFInfo
- Publication number
- CN115917516A CN115917516A CN202180045405.5A CN202180045405A CN115917516A CN 115917516 A CN115917516 A CN 115917516A CN 202180045405 A CN202180045405 A CN 202180045405A CN 115917516 A CN115917516 A CN 115917516A
- Authority
- CN
- China
- Prior art keywords
- memory
- cache
- request
- data
- contiguous
- 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.)
- Pending
Links
Images
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/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- 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
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
- G06F2212/6082—Way prediction in set-associative cache
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
公开了一种控制高速缓存的方法。该方法包括接收对于分配存储器的一部分以存储数据的请求。该方法还包括当对于分配存储器的一部分以存储数据的请求包括对于数据连续驻留在高速缓存存储器中的高速缓存驻留请求时,将存储器的一部分直接映射到高速缓存存储器的所分派的连续部分。该方法还包括当对于分配存储器的一部分以存储数据的请求不包括对于数据连续驻留在高速缓存存储器中的高速缓存驻留请求时,利用相联映射将存储器的所述一部分映射到高速缓存存储器。
Description
相关申请的交叉引用
本申请要求2020年6月26日提交的名称为″DIRECT MAPPING MODE FORASSOCIATIVE CACHE″的美国临时申请号63/044,735和2020年9月25日提交的名称为″DIRECT MAPPING MODE FOR ASSOCIATE CACHE″的美国非临时申请号17/033,287的权益,其全部内容在此以引用方式并入本文。
背景技术
高速缓存存储器(下文中称为″高速缓存″)用于通过将在较大存储器部分中频繁存取的数据的副本存储在高速缓存中来加速对存储在较大存储器部分(例如,主存储器)中的数据的存取。当处理器请求对(例如,由地址标识的)较大存储器部分的存取(例如,从较大存储器部分读取数据或向其写入数据)时,处理器首先确定该数据的副本是否存储在高速缓存中。如果确定该数据的副本存储在高速缓存中,则处理器存取高速缓存,从而便于更有效地存取该数据。
以固定大小的块(通常称为高速缓存行)将频繁存取的数据从存储器复制到高速缓存。当高速缓存行被复制到高速缓存时,高速缓存条目被创建(即,被放置在高速缓存中),其包括所复制的数据和所请求的存储器地址(例如,标签)。如果标签位于高速缓存中,则发生高速缓存命中并且数据在高速缓存行中被存取。如果标签不在高速缓存中,则发生高速缓存未命中。新条目被分配给高速缓存,来自较大存储器的数据被复制到高速缓存并且该数据被存取。根据包括直接映射和相联映射的不同映射策略,现有条目可被新条目替换(例如,被逐出)。
附图说明
可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
图1是可实现本公开的一个或多个特征的示例设备的框图;
图2是例示用于实现本公开的一个或多个特征的示例部件的框图;
图3是例示根据本公开的特征的在不同高速缓存模式之间动态地切换的示例方法的流程图;
图4A是例示根据本公开的特征的不同存储器地址到所标识的存储器块的映射的示图;
图4B是例示根据本公开的特征的将非连续存储器部分直接映射到高速缓存的预定高速缓存索引的示例的示图;并且
图5是例示根据本公开的特征的将所标识的存储器部分直接映射到高速缓存的示例方法的流程图。
具体实施方式
当使用直接映射策略时,每个存储器地址被分配给高速缓存中的特定位置(例如,索引)。存储器与高速缓存之间的映射容易实现,因为索引和偏移可容易计算(例如,用位运算符或简单算术),并且因为避免了搜索通过许多高速缓存行,所以消耗较少的功率来将数据放置在高速缓存中。然而,当许多地址被映射到相同的高速缓存索引时,直接映射的高速缓存的高速缓存行可被重复地逐出,尽管存在未使用的高速缓存行。
当使用完全相联映射策略时,可将新条目复制到任何高速缓存地址。对于完全相联高速缓存,在映射到单个高速缓存块的多个存储器地址之间不存在冲突(即,没有来自冲突的高速缓存未命中),因为数据可被放置在任何未使用的高速缓存行中。然而,实现完全相联高速缓存是非常昂贵的,因为整个地址被用作标签,这大大增加了直接映射的高速缓存的高速缓存大小。另外,必须检查高速缓存中每个高速缓存块的标签,因为数据可位于任何高速缓存行,这增加了功耗和延迟。因此,虽然相联高速缓存与直接映射的高速缓存相比具有更低的高速缓存未命中率,但是它们与直接映射的高速缓存相比增加了硬件成本、功耗和延迟。
出于这些原因,常规相联高速缓存通常利用N路组相联映射策略,其中每个条目被分配给包含数量N个高速缓存行的组,其中每个行可保持来自任何标签的数据。对于组相联高速缓存,N路组相联策略中行的数量N越大,相联性越大且高速缓存未命中的概率越低。然而,相联性的增加包括行的数量N的增加并且要搜索的地址的数量更大,从而导致增加的延迟、更大的功耗和更大的存储区域。
一般而言,随着高速缓存移动得更靠近主存储器,高速缓存被实现为物理存储器地址标记的高速缓存(即,物理标记的高速缓存)。在执行虚拟到物理转换之后并且利用物理地址存取物理标记的高速缓存。
在功率节省操作周期(例如,低功率模式或功率管理活动周期)期间,通常执行不使用一个或多个部件(例如,DRAM)的程序,使得可使这些部件离线。但是在一些情况下,客户端(例如,高服务客户端,诸如显示客户端)执行连续地取数据以便在这些功率节省操作周期期间执行它们的功能的程序。因为部件诸如DRAM或其它存储器部分(例如,其它非物理标记的高速缓存)离线以节省功率,所以使用物理标记的高速缓存来执行连续地取数据的程序。
然而,为虚拟地连续的大地址分配物理地连续的大存储器部分是困难的。例如,当客户端请求分配存储器部分时,分配具有开始地址和结束地址的连续虚拟存储器部分(例如,大小为帧缓冲区)。然而,当映射到连续虚拟存储器部分的物理存储器(例如,主存储器)部分不连续(在物理存储器中分段)时,虚拟存储器地址与物理存储器地址之间的转换可导致不连续的物理存储器地址。当非连续物理存储器地址在物理标记的相联高速缓存中别名在彼此之上(例如,映射到相同的索引)时,数据被逐出,而不管存在未使用的(例如,空的)或使用频率较低的高速缓存行。
当所请求的存储器部分(例如,8KB)小于高速缓存大小(例如,1MB)时,用于执行程序的数据的每个部分在程序的整个执行期间存在于高速缓存中而没有任何数据被从高速缓存逐出在物理上是可行的。但是,如上所述,当非连续物理存储器地址别名到物理标记的高速缓存的相同索引时,常规的组相联策略导致数据从高速缓存被逐出,即使在未使用的或使用频率较低的高速缓存行可用时也如此。
本公开提供了用于确定来自客户端(例如,显示客户端)的对于用于存储数据的存储器分配的请求是否还包括对于要被存储在所请求的存储器部分中的数据的每个部分连续地驻留在高速缓存中(即,不被从中逐出)的请求的装置和方法。该请求例如是对于数据在高速缓存中连续驻留持续一段时间、持续多个循环或直到事件发生(例如,程序或程序的一部分完成执行,客户端指示数据不再需要驻留在高速缓存中或者处理设备退出功率节省模式)的请求。基于对针对连续高速缓存驻留的请求的确定,动态地控制高速缓存以在高速缓存被相联地映射的模式和高速缓存的一部分被直接映射并且高速缓存的另一部分被相联地映射的模式之间切换。例如,在直接映射模式中动态地使用物理构造的相联高速缓存。因此,可实施相联映射和直接映射两者以根据动态确定的具体使用情况(例如,对于数据连续驻留在高速缓存中的请求)来执行程序/应用程序。
例如,当来自客户端的对于分配存储器的一部分的请求还包括对于该数据连续驻留在高速缓存中的请求时,被请求存储器的不同非连续部分被标识并且被直接映射到高速缓存中的所分派索引。因此,对应于被请求存储器的非连续部分的数据不被逐出并且保留在高速缓存中持续一段时间、持续多个循环或直到事件发生。否则,利用相联映射将被请求存储器的地址映射到高速缓存。
本公开的特征对于不共享相同的虚拟到物理转换信息或不共享相同的虚拟地址的多个客户端正尝试使用相同的物理标记的高速缓存的情况是有用的。
公开了一种控制高速缓存的方法。所述方法包括接收对于分配存储器的一部分以存储数据的请求。所述方法还包括当对于分配存储器的一部分以存储所述数据的所述请求包括对于所述数据连续驻留在高速缓存存储器中的高速缓存驻留请求时,将存储器的一部分直接映射到所述高速缓存存储器的所分派的连续部分。所述方法还包括当对于分配存储器的一部分以存储所述数据的所述请求不包括对于数据连续驻留在所述高速缓存存储器中的高速缓存驻留请求时,利用相联映射将存储器的所述一部分映射到所述高速缓存存储器。
公开了一种控制高速缓存的方法。所述方法包括:接收对于分配存储器的一部分以存储数据以及对于所述数据在高速缓存存储器中的连续驻留的请求;以及利用映射到第一存储器地址的第一标识符标识存储器的所述一部分的第一区段。所述方法还包括:保留所述高速缓存存储器的第一连续部分用于所标识的存储器的所述第一区段;以及将所述高速缓存存储器的所述第一连续部分分派给存储器的所述第一区段部分。所述方法还包括:利用映射到与所述第一存储器地址非连续的第二存储器地址的第二标识符来标识存储器的所述一部分的第二区段;保留所述高速缓存存储器的第二连续部分用于所标识的存储器的所述第二区段;以及将所述高速缓存存储器的所述第二连续部分分派给存储器的所述第二区段部分。
公开了一种处理设备,所述处理设备包括存储器、与所述存储器分开的高速缓存存储器部分、以及处理器。所述处理器被配置为:接收对于分配所述存储器的一部分以存储数据的请求;当对于分配存储器的一部分以存储所述数据的所述请求包括对于所述数据连续地驻留在高速缓存存储器中的高速缓存驻留请求时,将存储器的所述一部分直接映射到所述高速缓存存储器的所分派的连续部分;以及当对于分配存储器的一部分以存储所述数据的所述请求不包括对于数据连续驻留在所述高速缓存存储器中的高速缓存驻留请求时,利用相联映射将存储器的所述一部分映射到所述高速缓存存储器。
图1是可实现本公开的一个或多个特征的示例设备100的框图。设备100可包括例如计算机、游戏设备、手持设备、机顶盒、电视、移动电话或平板计算机。设备100包括处理器102、存储器104、存储装置106、一个或多个输入设备108以及一个或多个输出设备110。设备100还可任选地包括输入驱动器112和输出驱动器114。应当理解,设备100可包括图1中未示出的另外部件。
在各种另选方案中,处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU、或一个或多个处理器核心,其中每个处理器核心可为CPU或GPU。在各种另选方案中,存储器104位于与处理器102相同的管芯上或与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM(DRAM)或高速缓存。
存储装置106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108包括但不限于键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出设备110包括但不限于显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入设备108通信,并允许处理器102从输入设备108接收输入。输出驱动器114与处理器102和输出设备110通信,并允许处理器102向输出设备110发送输出。应注意,输入驱动器112和输出驱动器114是任选的部件,并且如果输入驱动器112和输出驱动器114不存在,则设备100将以相同方式操作。输出驱动器114包括耦接到显示设备118的加速处理设备(“APD”)116。APD被配置为从处理器102接收计算命令和图形渲染命令,处理那些计算和图形渲染命令,以及将像素输出提供给显示设备118用于显示。如下文所详述,APD 116包括被配置为根据单指令多数据(“SIMD”)范式来执行计算的一个或多个并行处理单元。因此,尽管这里将各种功能描述为由APD 116执行或与其结合执行,但在各种另选方案中,被描述为由APD 116执行的功能另外地或另选地由具有类似能力的其他计算设备执行,该其他计算设备不由主机处理器(例如,处理器102)驱动并且被配置为向显示设备118提供图形输出。例如,可以设想根据SIMD范式执行处理任务的任何处理系统均可被配置为执行本文所述的功能。另选地,可以设想不根据SIMD范式执行处理任务的计算系统执行本文所述的功能。
图2是例示用于实现本公开的一个或多个特征的示例部件的框图。图2中所示的一些部件为例如处理器(诸如加速处理器(例如,GPU))的部件。本公开的特征可由第一类型的一个或多个处理器(诸如CPU)和/或第二类型的一个或多个处理器(诸如GPU)执行。
本公开的特征可利用多个层级中任一者上的高速缓存来实现。例如,如图2中所示,部件包括多个处理器内核204。每个内核204包括与对应的1级高速缓存214通信并且被配置为利用对应的1级高速缓存214来处理数据的对应的1级高速缓存控制器218。
如图2中进一步所示,部件还包括与2级高速缓存216通信并且被配置为利用2级高速缓存216来处理数据的2级高速缓存控制器220/处理器。高速缓存控制器/处理器220还与下一高速缓存层级(更高高速缓存层级)通信。可使用任意数量的N级高速缓存。下一级高速缓存诸如N级高速缓存212(例如,最后一级高速缓存)和N级高速缓存控制器210可与多个处理器的高速缓存(诸如例如,CPU或GPU(未示出)的高速缓存,其可位于同一管芯或多个管芯上)通信并由其共享。
存储器控制器/处理器208与存储器104(例如,DRAM)以及高速缓存控制器220和218通信。如图2所示,多个客户端206与存储器控制器208通信。当客户端206请求分配存储器的一部分时,存储器控制器208被配置为从客户端206(例如,显示客户端)接收和服务请求,并且经由高速缓存控制器220存取高速缓存216以及经由高速缓存控制器218存取高速缓存214。存储器控制器/处理器208被配置为接收来自客户端206的请求、分配存储器、控制对一个或多个高速缓存(例如,最后一级高速缓存212)的存取以及本文描述的各种其他功能。例如,存储器控制器/处理器208被配置为在相联映射模式中控制一个或多个客户端206进行的高速缓存存取,以及在直接映射模式中控制一个或多个客户端对同一高速缓存的存取。
为了简化说明的目的,图2示出了单个客户端206。然而,存储器控制器被配置为从任意数量的客户端接收请求。客户端可与一个或多个其他客户端共享相同的虚拟到物理转换信息或者包括它们自己的虚拟到物理转换信息。每个客户端可具有与一个或多个其它客户端相同的虚拟地址,或者包括另一虚拟地址。
一般而言,随着高速缓存移动得更靠近存储器104,高速缓存被实现为物理存储器地址标记的高速缓存(即,物理标记的高速缓存)。本公开的特征适合于其中多个客户端正尝试利用相同的物理标记的高速缓存并且客户端不共享相同的虚拟到物理转换信息并且不共享相同的虚拟地址的情况。
现在参考图3、图4A、图4B和图5描述实现本公开的特征的示例,包括在不同高速缓存模式中动态地存取高速缓存。
为了简化说明的目的,下文描述的示例包括来自单个客户端(即,显示客户端)的请求。然而,本公开的特征也可由存取同一高速缓存的多个不同客户端来实现。例如,当一个或多个客户端在相联映射模式中存取高速缓存并且一个或多个客户端在直接映射模式中存取高速缓存时,可实现本公开的特征。
为了简化说明的目的,使用具有1MB大小、64K高速缓存行和16K索引的高速缓存来描述示例。关于方法300所描述的高速缓存大小和索引数量仅仅是示例。本公开的特征可利用具有不同大小和不同索引数量的高速缓存来实现,并且可针对不同量的所请求非连续存储器来实现。
出于简化说明的目的,本文中所描述的示例包括为对应于所标识的存储器的第一部分的数据分派高速缓存索引。本公开的特征还包括分派每个高速缓存索引多个通路。例如,在16路高速缓存(即,每个高速缓存组16个通路)中,如果高速缓存的25%部分被分配用于直接映射模式,则分派每个索引4个通路。因此,在这个示例中,每个索引的一部分(即,小于整个索引)被分派,除非例如高速缓存的较大部分(例如,15/16)被分配用于直接映射模式。
图3是例示根据本公开的特征的在不同高速缓存模式之间动态地切换的示例方法300的流程图。图4A是例示不同存储器地址到所标识的存储器块的映射的示图。图4B是例示将非连续存储器部分直接映射到高速缓存402的预定高速缓存索引的示例的示图。
如框302处所示,方法300包括接收对于分配存储器的一部分(例如,块)以存储数据的请求。在一些情况下,所述请求还包括对于要被存储到存储器的所述一部分的数据的连续高速缓存驻留的请求。例如,从显示客户端接收对于分配存储器的4KB块以及对于要被存储在存储器的该4KB块中的数据驻留在高速缓存中(即,不被逐出)持续一段时间、持续多个循环、或直到事件发生(例如,程序或程序的一部分完成执行,客户端指示数据不再需要驻留在高速缓存中,处理设备退出功率节省模式,或另一事件发生)的请求。
如框304处所示,方法300包括确定所述请求是否包括对于对应于存储器的所述一部分的所述数据的连续高速缓存驻留的请求。当在框304处确定所述请求不包括对于连续高速缓存驻留的请求时,在框306处,利用相联映射将所述存储器分配给高速缓存402。
当在框304处确定所述请求确实包括对于连续高速缓存驻留的请求时,在框308处,利用被映射到存储器的所述一部分的地址的标识符来标识存储器的所述一部分。例如,显示客户端存取映射转换信息(例如,转换表),其将存储器地址映射到存储器的块,每个块由块标识符标识。转换表包括多个转换,诸如例如,将存储器地址(例如,地址0B)映射到由块标识符MB1k1(在图4A中示出)标识的第一4KB存储器块的转换、以及将存储器地址(例如,地址1MB)映射到由块标识符MB1k2(也在图4A中示出)标识的第二4KB存储器块的转换。
在一些情况下,确定是否使用直接映射模式包括确定被请求分配的存储器的量是否小于高速缓存402的容量(例如,大小)或者小于高速缓存402的容量的预定部分(例如,比率、百分比)。例如,当被请求的存储器的量(例如,4KB)小于高速缓存402的容量(例如,1MB)或者被请求的存储器的量小于高速缓存402的预定部分(例如,25%)时,使用直接映射。否则,在框306处,利用相联映射将存储器的所述一部分分配给高速缓存402。
在框310处,高速缓存的一部分(例如,多个索引)被保留用于存储器的由块标识符MB1k1标识并且映射到地址0B的部分(例如,4K块)。例如,高速缓存402的高速缓存索引64-127被保留用于映射到地址0B的存储器块MB1k1,如图4A所示。
如框312处所示,方法300包括将高速缓存的所保留的部分(例如,被保留索引)分派给所标识的存储器的一部分(例如,用于高速缓存对应于所标识的存储器的一部分的数据)。例如,在图4B的第一列处展示的第一循环处,高速缓存402的被保留索引64-127被分派给MB1k1,而不是为MB1k1分派高速缓存402的索引0-63,这会根据相联映射策略而发生。
图5是例示根据本公开的特征的将存储器的所标识部分直接映射到高速缓存402的示例方法500的流程图。在图5中所描述的示例方法500中,存储器的8KB部分被请求并且被分段成两个分开的4KB存储器块。
如框502处所示,方法500包括接收对于分配存储器的一部分以存储数据以及对于所述数据在高速缓存402中持续一段时间、持续多个循环或直到事件发生的连续驻留(即,不被逐出)的请求。例如,从显示客户端接收对于分配8KB存储器块的请求以及对于连续高速缓存驻留的请求。8KB存储器块映射到物理存储器的两个非连续4KB块,其中每个4KB块的物理存储器地址别名到物理标记的相联高速缓存402的相同索引。
因为所述请求包括对于连续高速缓存驻留的请求,所以动态地控制高速缓存以将这两个分段的4KB块(映射到非连续物理存储器地址)直接映射到两个不同的连续高速缓存部分(例如,高速缓存索引的组),如下文关于框504到510所描述。在一些情况下,确定将这两个非连续4KB块直接映射到高速缓存索引的两个不同的连续组包括确定被请求的存储器部分的量是否小于高速缓存402的容量(例如,大小)。例如,因为8KB存储器部分小于1MB高速缓存大小,所以确定将这两个非连续4KB块直接映射到高速缓存索引的两个不同的连续组。
当对于所标识的存储器的分段部分(例如,4K存储器块)请求多个索引时,该多个索引在高速缓存中被保留并且被分派给所标识的存储器的分段部分,这防止对被保留索引的相联分配。例如,如框504处所示,方法500包括利用映射到存储器的第一分段部分的地址的标识符(例如,MB1k1)来标识存储器的第一分段部分。显示客户端存取映射转换信息(例如,转换表),其将物理存储器地址映射到存储器块,每个存储器块由块标识符标识。转换表包括多个转换,诸如例如将存储器地址(例如,地址0B)映射到由块标识符MB1k1(图4A中示出)标识的第一4KB存储器块的转换。因此,在一循环处,第一4K存储器块(例如,由存储器控制器/处理器)被标识为MB1k1,其映射到地址0B。
如框506处所示,方法500包括保留高速缓存的连续部分(例如,被保留的多个索引)用于所标识的存储器的第一分段部分(例如,MB1k1)。例如,高速缓存402的高速缓存索引64-127的连续组被保留用于映射到地址0B(如图4A所示)的MB1k1。
如框508处所示,方法500包括将所保留的连续高速缓存部分(例如,被保留的多个索引)分派给所标识的存储器的第二部分(例如,MB1k1)。例如,在图4B的第一列处展示的第一循环处,高速缓存402的被保留索引64-127被分派给MB1k1(例如,用于高速缓存对应于MB1k1的数据),而不是否则根据相联映射策略会发生的为MB1k1分派高速缓存402的索引0-63。
如框510处所示,利用映射到被请求存储器部分的第二分段部分的地址的标识符(例如,MB1k2)来标识存储器的第二分段部分(例如,第二4K存储器块)。显示客户端存取映射转换信息(例如,转换表),其包括将存储器地址(例如,地址1MB)映射到由块标识符MB1k2(图4A中示出)标识的第二4KB存储器块的转换。
如框512处所示,方法500包括保留高速缓存的连续部分(例如,被保留的多个索引)用于第二被标识的存储器的第二分段部分(例如,MB1k2)。例如,高速缓存402的高速缓存索引0-63的连续组被保留用于映射到地址1MB(在图4A所示)的MB1k2。
如框514处所示,方法500包括将所保留的连续高速缓存部分(例如,被保留的多个索引)分派给所标识的存储器的第二部分(例如,MB1k2)。例如,在图4B的第二列处展示的第二循环处,高速缓存402的被保留索引0-63被分派给MB1k2(例如,用于高速缓存对应于MB1k2的数据)。因此,非连续物理存储器地址(地址0B和地址1MB)将不别名到相同的高速缓存索引,并且用于非连续块MB1k1和MB1k2两者的数据将对于被请求高速缓存驻留的持续时间不被逐出。
虽然高速缓存的一部分(例如,25%)被分配用于直接映射模式(例如,响应于接收到对于连续高速缓存驻留的请求),但是高速缓存的被分段部分不被保留并且相联分配不被阻止,直到存在对于保留高速缓存的被分段部分(例如,高速缓存索引的连续组)用于所标识的存储器块的请求。例如,在第一存储器块经由块标识符MB1k1标识之前不保留高速缓存索引64-127的连续组,并且在第二存储器块经由块标识符MB1k2标识之前不保留高速缓存索引0-63的连续组。有时,可使用被分配部分的任意量以满足连续高速缓存驻留。因此,当使用高速缓存的被分配部分的较小量(例如,小于25%)时,较多高速缓存可供请求相联存取的客户端使用,从而减少性能损失。
应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
附图中例示和/或本文所述的各种功能单元(包括但不限于处理器102、输入驱动器112、输入设备108、输出驱动器114、输出设备110、加速处理设备116、存储器控制器/处理器208、和高速缓存控制器/处理器210、218和220)可被实现为通用计算机、处理器或处理器内核,或者实现为存储在非暂态计算机可读介质或另一介质中的能够由通用计算机、处理器或处理器内核执行的程序、软件或固件。所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程来制造此类处理器。这种处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现本公开的特征的处理器。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(例如内部硬盘和可移动磁盘)、磁光介质和光学介质(例如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
Claims (20)
1.一种控制高速缓存的方法,所述方法包括:
接收对于分配存储器的一部分以存储数据的请求;
当对于分配存储器的一部分以存储所述数据的所述请求包括对于所述数据连续驻留在高速缓存存储器中的高速缓存驻留请求时,将存储器的所述一部分直接映射到所述高速缓存存储器的所分派的连续部分;以及
当对于分配存储器的一部分以存储所述数据的所述请求不包括对于数据连续驻留在所述高速缓存存储器中的高速缓存驻留请求时,利用相联映射将存储器的所述一部分映射到所述高速缓存存储器。
2.根据权利要求1所述的方法,还包括确定对于分配存储器的所述一部分的所述请求是否包括所述高速缓存驻留请求。
3.根据权利要求1所述的方法,还包括:
由映射到存储器地址的标识符标识存储器的所述一部分;以及
保留所述高速缓存存储器的所述部分用于由映射到所述存储器地址的所述标识符标识的所标识的存储器的所述一部分。
4.根据权利要求1所述的方法,其中所述高速缓存存储器的所分派的连续部分包括连续多个高速缓存索引。
5.根据权利要求4所述的方法,其中为每个高速缓存索引分派多个通路。
6.根据权利要求1所述的方法,其中对于所述数据连续驻留在高速缓存存储器的所述部分中的所述高速缓存驻留请求是关于对于一段时间、对于多个循环或在事件发生之前不从高速缓存存储器的所述部分中逐出所述数据的请求。
7.根据权利要求1所述的方法,其中高速缓存存储器的所述部分是高速缓存存储器的物理标记部分。
8.根据权利要求1所述的方法,其中对于分配存储器的所述一部分的所述请求是来自第一客户端的第一请求,并且所述方法还包括:
从第二客户端接收对于分配存储器的第二部分以存储第二数据的第二请求,并且所述第一客户端使用的虚拟到物理转换信息与所述第二客户端使用的虚拟到物理转换信息不相同;
当来自所述第二客户端的所述第二请求包括对于所述第二数据连续驻留在所述高速缓存存储器中的请求时,将存储器的所述第二部分直接映射到所述高速缓存存储器的第二所分派的连续部分;以及
当来自所述第二客户端的所述第二请求不包括对于所述第二数据连续驻留在所述高速缓存中的请求时,利用相联映射将存储器的所述第二部分映射到所述高速缓存存储器。
9.一种控制高速缓存的方法,所述方法包括:
接收对于分配存储器的一部分以存储数据以及对于所述数据在高速缓存存储器中的连续驻留的请求;
利用映射到第一存储器地址的第一标识符标识存储器的所述一部分的第一区段;
保留所述高速缓存存储器的第一连续部分用于所标识的存储器的所述第一区段;
将所述高速缓存存储器的所述第一连续部分分派给存储器的所述第一区段部分;
利用映射到与所述第一存储器地址不连续的第二存储器地址的第二标识符标识存储器的所述一部分的第二区段;
保留所述高速缓存存储器的第二连续部分用于所标识的存储器的所述第二区段;以及
将所述高速缓存存储器的所述第二连续部分分派给存储器的所述第二区段部分。
10.根据权利要求9所述的方法,其中所述高速缓存存储器的所分派的连续部分包括连续多个高速缓存索引。
11.根据权利要求9所述的方法,其中为每个高速缓存索引分派多个通路。
12.根据权利要求9所述的方法,其中对于连续高速缓存驻留的所述请求是关于对于一段时间、对于多个循环或在事件发生之前不从高速缓存存储器的所述部分中逐出所述数据的请求。
13.根据权利要求9所述的方法,其中所述高速缓存是物理标记的高速缓存。
14.一种处理设备,包括:
存储器;
与所述存储器分开的高速缓存存储器;
处理器,所述处理器被配置为:
接收对于分配所述存储器的一部分以存储数据的请求;
当对于分配存储器的一部分以存储所述数据的所述请求包括对于所述数据连续驻留在高速缓存存储器中的高速缓存驻留请求时,将存储器的所述一部分直接映射到所述高速缓存存储器的所分派的连续部分;以及
当对于分配存储器的一部分以存储所述数据的所述请求不包括对于数据连续驻留在所述高速缓存存储器中的高速缓存驻留请求时,利用相联映射将存储器的所述一部分映射到所述高速缓存存储器。
15.根据权利要求14所述的处理设备,其中所述处理器被配置为确定对于分配存储器的所述一部分的所述请求是否包括所述高速缓存驻留请求。
16.根据权利要求14所述的处理设备,其中所述处理器被配置为:
由映射到存储器地址的标识符标识存储器的所述一部分;以及
保留所述高速缓存存储器的所述一部分用于由映射到所述存储器地址的所述标识符标识的所标识的存储器的所述一部分。
17.根据权利要求14所述的处理设备,其中所述高速缓存存储器的所分派的连续部分包括连续多个高速缓存索引。
18.根据权利要求14所述的处理设备,其中为每个高速缓存索引分派多个通路。
19.根据权利要求14所述的处理设备,其中对于所述数据连续驻留在高速缓存存储器的所述部分中的所述高速缓存驻留请求是关于对于一段时间、对于多个循环或在事件发生之前不从高速缓存存储器的所述部分中逐出所述数据的请求。
20.根据权利要求14所述的处理设备,其中高速缓存存储器的所述部分是高速缓存存储器的物理标记部分。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063044735P | 2020-06-26 | 2020-06-26 | |
US63/044,735 | 2020-06-26 | ||
US17/033,287 | 2020-09-25 | ||
US17/033,287 US11422935B2 (en) | 2020-06-26 | 2020-09-25 | Direct mapping mode for associative cache |
PCT/US2021/037709 WO2021262509A1 (en) | 2020-06-26 | 2021-06-16 | Direct mapping mode for associative cache |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115917516A true CN115917516A (zh) | 2023-04-04 |
Family
ID=79030952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180045405.5A Pending CN115917516A (zh) | 2020-06-26 | 2021-06-16 | 用于相联高速缓存的直接映射模式 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11422935B2 (zh) |
EP (1) | EP4172788A1 (zh) |
JP (1) | JP2023532432A (zh) |
KR (1) | KR20230025864A (zh) |
CN (1) | CN115917516A (zh) |
WO (1) | WO2021262509A1 (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0756729A1 (de) * | 1994-04-22 | 1997-02-05 | Gmd - Forschungszentrum Informationstechnik Gmbh | Cache-speichervorrichtung zum speichern von daten |
US5694567A (en) * | 1995-02-09 | 1997-12-02 | Integrated Device Technology, Inc. | Direct-mapped cache with cache locking allowing expanded contiguous memory storage by swapping one or more tag bits with one or more index bits |
US7760804B2 (en) * | 2004-06-21 | 2010-07-20 | Intel Corporation | Efficient use of a render cache |
JP2007102314A (ja) * | 2005-09-30 | 2007-04-19 | Fujitsu Ltd | ディスクキャッシュ制御装置 |
US8965819B2 (en) * | 2010-08-16 | 2015-02-24 | Oracle International Corporation | System and method for effective caching using neural networks |
US20120124291A1 (en) * | 2010-11-16 | 2012-05-17 | International Business Machines Corporation | Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data |
WO2013097105A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | Efficient dynamic randomizing address remapping for pcm caching to improve endurance and anti-attack |
US8700853B2 (en) * | 2012-04-13 | 2014-04-15 | Hitachi, Ltd. | Storage apparatus and data management method |
WO2016020977A1 (ja) * | 2014-08-05 | 2016-02-11 | 株式会社日立製作所 | ストレージシステム、及びキャッシュ制御方法 |
-
2020
- 2020-09-25 US US17/033,287 patent/US11422935B2/en active Active
-
2021
- 2021-06-16 CN CN202180045405.5A patent/CN115917516A/zh active Pending
- 2021-06-16 KR KR1020237001242A patent/KR20230025864A/ko unknown
- 2021-06-16 WO PCT/US2021/037709 patent/WO2021262509A1/en unknown
- 2021-06-16 JP JP2022578563A patent/JP2023532432A/ja active Pending
- 2021-06-16 EP EP21829450.2A patent/EP4172788A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210406177A1 (en) | 2021-12-30 |
KR20230025864A (ko) | 2023-02-23 |
US11422935B2 (en) | 2022-08-23 |
WO2021262509A1 (en) | 2021-12-30 |
JP2023532432A (ja) | 2023-07-28 |
EP4172788A1 (en) | 2023-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9158685B2 (en) | System cache with cache hint control | |
US10380030B2 (en) | Caching of virtual to physical address translations | |
US20110161597A1 (en) | Combined Memory Including a Logical Partition in a Storage Memory Accessed Through an IO Controller | |
JP2020529656A (ja) | アドレス変換キャッシュ | |
US11243891B2 (en) | External memory based translation lookaside buffer | |
EP3446223A1 (en) | Object tagged memory monitoring method and processing apparatus | |
WO2009107048A2 (en) | Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures | |
US9043570B2 (en) | System cache with quota-based control | |
TWI787129B (zh) | 記憶體請求之快取串流 | |
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 | |
US20230102891A1 (en) | Re-reference interval prediction (rrip) with pseudo-lru supplemental age information | |
US20180246815A1 (en) | Sharing translation lookaside buffer resources for different traffic classes | |
US9396122B2 (en) | Cache allocation scheme optimized for browsing applications | |
KR101689094B1 (ko) | 스티키 제거 엔진을 구비한 시스템 캐시 | |
JPWO2010032433A1 (ja) | バッファメモリ装置、メモリシステム及びデータ読出方法 | |
KR102482516B1 (ko) | 메모리 어드레스 변환 | |
US9639467B2 (en) | Environment-aware cache flushing mechanism | |
US11422935B2 (en) | Direct mapping mode for associative cache | |
US11321241B2 (en) | Techniques to improve translation lookaside buffer reach by leveraging idle resources | |
US11762777B2 (en) | Method and apparatus for a dram cache tag prefetcher | |
US20230101038A1 (en) | Deterministic mixed latency cache |
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 |