CN108694133A - 用于即时高速缓存关联性的装置、方法和系统 - Google Patents

用于即时高速缓存关联性的装置、方法和系统 Download PDF

Info

Publication number
CN108694133A
CN108694133A CN201810166324.0A CN201810166324A CN108694133A CN 108694133 A CN108694133 A CN 108694133A CN 201810166324 A CN201810166324 A CN 201810166324A CN 108694133 A CN108694133 A CN 108694133A
Authority
CN
China
Prior art keywords
cache
data
address
memory
direct mapping
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
Application number
CN201810166324.0A
Other languages
English (en)
Inventor
C.威尔克森
Z.基什蒂
Z.王
E.特兰
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN108694133A publication Critical patent/CN108694133A/zh
Pending legal-status Critical Current

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/0864Addressing 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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • 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
    • 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
    • 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/608Details relating to cache mapping

Abstract

所提供的是用于即时高速缓存关联性的装置、方法和系统,其用于具有作为用于非易失性存储器的高速缓存的高速缓存位置的高速缓冲存储器。接收针对非易失性存储器中的目标地址的要添加到高速缓冲存储器的数据。根据非易失性存储器中的目标地址确定高速缓冲存储器中的直接映射高速缓存位置。响应于直接映射高速缓存位置存储针对非易失性存储器中的另一地址的数据,在与直接映射高速缓存位置不同的高速缓冲存储器中的可用高速缓存位置处写入针对目标地址的数据。响应于直接映射高速缓存位置不存储针对非易失性存储器中的另一地址的数据,在直接映射高速缓存位置中写入针对目标地址的数据。

Description

用于即时高速缓存关联性的装置、方法和系统
技术领域
本文所描述的实施例一般涉及用于即时高速缓存关联性的装置、方法和系统。
背景技术
不同高速缓存算法可以被用于确定在哪里将数据放置在更快的高速缓存设备或第一级存储器中,所述第一级存储器被导向到针对诸如第二级存储器之类的更大、典型地更慢的存储器的地址。直接映射高速缓存算法向数据地址的部分应用散列函数,以确定针对该地址的数据被存储在的高速缓存中的唯一位置。当寻找针对直接映射高速缓存中的读取地址的读取数据时,可具有针对该读取地址的读取数据的直接映射高速缓存位置是已知的,并且高速缓存算法必须确保针对除该读取地址外的不同地址的数据不位于直接映射高速缓存位置中,这是因为来自更大的第二级存储器设备的多个地址映射到高速缓冲存储器中的一个地址。如果针对该读取地址的数据不在直接映射高速缓存位置处,则存在读取未命中,并且需要从第二级存储器检索该数据。
组相联高速缓存(set associative cache)将每一个地址映射到一组高速缓存位置或块,使得针对该地址的数据可以被存储在该地址映射到的该组中的任何高速缓存位置中。当寻找该读取地址映射到的该组中的读取地址时,该组中的所有高速缓存位置需要被读取,以确定它们是否具有针对该读取地址的数据,该确定是通过寻找该组中的具有与该读取地址的标签部分相匹配的地址的标签部分的高速缓存位置来进行的。
附图说明
作为示例参考附图来描述实施例,附图未按比例绘制,其中相似的参考标号指代类似的元素。
图1图示了具有由处理器使用的两级存储器的系统的实施例。
图2图示了如现有技术中已知的地址的实施例。
图3图示了高速缓冲存储器中的高速缓存位置处的内容的实施例。
图4图示了重映射信息条目的实施例。
图5图示了向第一存储器高速缓存添加数据的操作的实施例。
图6图示了从第一存储器高速缓存读取数据的操作的实施例。
图7图示了其中可以部署图1的存储器设备的系统的实施例。
具体实施方式
处理器主存储器可以包括两个存储器级,该两个存储器级包括较快存取第一级较小存储器(诸如动态随机存取存储器(DRAM)系统),其高速缓存用于第二级较大且较慢存储器的数据。将第二级存储器作为主存储器向主机和操作系统呈现,而第一级存储器充当高速缓存,且对操作系统来说是透明的。该两级存储器(2LM)的管理可以由主机的处理器中的2LM引擎执行。
两级主存储器包括两个存储器级,该两个存储器级包括较快存取第一级较小易失性存储器(诸如动态随机存取存储器(DRAM)系统),其高速缓存用于第二级较大且较慢或字节可寻址写入到位(write-in place)非易失性存储器的数据。第一级存储器可以被称为近存储器或高速缓冲存储器,并且第二级存储器可以被称为远存储器或非易失性存储器。
直接映射高速缓存的优点在于:所请求的读取地址在高速缓存中的位置是已知的,并且,可以直接检索数据而不必执行多个高速缓存位置的标签搜索,如关于组相联高速缓存所执行的那样。然而,由于来自第二级存储器的多个地址映射到针对直接映射高速缓存的一个高速缓存位置,因此读取未命中的可能性增大。组相联高速缓存的优点在于未命中率降低,这是因为读取地址可以被存储在它映射到的该组中的高速缓存位置中的任一个中。然而,在访问高速缓存之前执行标签搜索的需要显著增加读取延时。理想的高速缓存将在冲突罕见时充当直接映射高速缓存,且在这些冲突更加常见时充当组相联高速缓存。
所描述的实施例提供了一种即时关联性高速缓存,其将直接映射高速缓存用于较新近被访问且很可能具有较高命中率的读取地址,并且然后切换到组相联高速缓存以用于新近不太被访问的读取地址,所述新近不太被访问的读取地址使用组相联高速缓存加以存储以减少针对新近不太被访问或频繁被访问的数据的读取未命中。然而,为针对较频繁被访问的数据(即,较新近被访问的数据)的较快直接映射高速缓存位置提供较低延时。以此方式,当高速缓存冲突是罕见的时,使用直接映射高速缓存位置以提供高命中率,并且当高速缓存冲突更加常见时,使用组相联高速缓存,以随着高速缓存冲突增加(即,映射到高速缓存中的相同直接映射高速缓存位置的读取地址正在被更频繁地访问),维持高命中率。
在以下描述中,阐述了众多具体细节,诸如逻辑实现方式、操作码、指定操作数的手段、资源划分/共享/复制实现方式、系统组件的类型和相互关系、以及逻辑划分/集成选择,以便提供对本发明的更加透彻的理解。然而,本领域技术人员将领会到,可以在没有这样的具体细节的情况下实践本发明。在其它实例中,并未详细示出控制结构、门级电路和全软件指令序列,以免使本发明模糊。本领域普通技术人员利用所包括的描述将能够在没有过多实验的情况下实现适当的功能性。
在说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是可以不是每个实施例都必然包括该特定特征、结构或特性。而且,这样的短语不必然指代相同的实施例。某些实施例涉及存储设备电子组装件。实施例包括用于形成电子组装件的设备和方法二者。
图1图示了具有处理器102的系统100的实施例,处理器102包括多个处理核104和片上高速缓冲存储器控制器106以与高速缓冲存储器110对接,高速缓冲存储器110还称为高速缓冲存储器、高速缓存或第一级存储器。高速缓冲存储器控制器106包括访问高速缓冲存储器110的逻辑,且还可以与非易失性存储器控制器112通信以访问非易失性存储器114或第二级存储器中的地址。高速缓冲存储器控制器106包括高速缓存管理器108,以使用高速缓冲存储器110作为在高速缓冲存储器110中的高速缓存位置300或高速缓存块中存储针对非易失性存储器114中的地址的数据的高速缓存。高速缓冲存储器控制器106可以通过接口116访问第一级存储器110和非易失性存储器控制器112,作为示例而非限制,接口116包括存储器总线、外围组件互连(PCI)总线,诸如高速外围组件互连(PCIe)总线等。
高速缓冲存储器110和非易失性存储器114可以包括处理器102的主存储器,其中高速缓冲存储器110操作为用于非易失性存储器114的高速缓存,具有对来自非易失性存储器114的数据和地址进行高速缓存的高速缓存位置300。
在一个实施例中,高速缓冲存储器110可以由一个或多个易失性存储器设备组成,所述一个或多个易失性存储器设备要求电力以维持由介质存储的数据的状态。易失性存储器的非限制性示例可以包括各种类型的随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)、双列直插存储器模块(DIMM)、同步动态随机存取存储器(SDRAM)等。在特定实施例中,存储器组件的DRAM可以遵守由JEDEC颁布的标准,诸如针对DDR SDRAM的JESD79F、针对DDR2 SDRAM的JESD79-2F、针对DDR3 SDRAM的JESD79-3F、针对DDR4 SDRAM的JESD79-4A、针对低功率DDR(LPDDR)的JESD209、针对LPDDR2的JESD209-2、针对LPDDR3的JESD209-3和针对LPDDR4的JESD209-4(这些标准在www.jedec.org处可得到)。这样的标准(和类似的标准)可以称为基于DDR的标准,并且实现这样的标准的存储设备的通信接口可以称为基于DDR的接口。
非易失性存储器114可以由字节可寻址写入到位非易失性存储器设备组成,所述字节可寻址写入到位非易失性存储器设备诸如是铁电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、三维(3D交叉点)存储器、相变存储器(PCM)、结合有忆阻器技术的存储器、磁阻随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、SRAM、存储设备等。在某些实施例中,3D交叉点存储器可以包括无晶体管的可堆叠交叉点架构,其中存储器单元位于字线和位线的交点处且可单独寻址,并且其中位存储基于体电阻中的改变。在另外的实施例中,非易失性存储器114可以包括块可寻址非易失性存储器,诸如NAND管芯(例如单级单元(SLC)、多级单元(MLC)、三级单元(TLC)NAND存储器等)。
高速缓存管理器108确定由使用非易失性存储器114中的地址向处理器102传送读取请求的应用请求的数据是否处于高速缓冲存储器110中,并且如果不处于高速缓冲存储器110中,则高速缓存管理器108从非易失性存储器114取得所请求的数据,且在高速缓冲存储器110中存储以便可用于供将来访问的更快高速缓存访问。
在一个实施例中,高速缓存管理器108可以是两级存储器(“2LM”)引擎的一部分,所述引擎管理具有第一和第二级存储器设备的用于处理器的主存储器。在另外的实施例中,高速缓存管理器108可以是组合的高速缓存代理和本地代理配置的一部分,其用于在第一级存储器110中高速缓存来自第二级存储器114的数据,诸如被提供有英特尔公司QuickPath互连逻辑。其它类型的技术和协议可以被用于实现高速缓存管理器108以维持作为用于较大的第二级存储器114的高速缓存的第一级存储器110。
系统100还可以与输入/输出(I/O)设备通信,所述输入/输出(I/O)设备可以包括输入设备(例如键盘、触摸屏、鼠标等)、显示设备、图形卡、端口、网络接口等。
图2图示了如现有技术中已知的、用于寻址非易失性存储器114中的位置的地址200的组件的实施例,且包括标签位202(诸如最高有效位)和块偏移位206,标签位202唯一地标识由地址200的组位204标识的高速缓存组中的地址200,块偏移位206包括用于定位高速缓存位置中的数据的地址200的最低有效位。
图3图示了高速缓冲存储器110中的高速缓存位置300i(还称为高速缓存块)之一的实施例,且包括:有效/脏旗标302,其指示高速缓存位置300i是否具有有效数据和脏(例如,经更新的)数据;标签304,其具有针对非易失性存储器114的来自地址200的标签位202;针对高速缓存位置300i的优先级信息306;以及针对地址200的一个或多个数据字节3081、3082……308b
优先级信息306指示存储在高速缓存位置/块300i中的数据的优先级。优先级306可以包括指示高速缓存位置300i处的数据的使用新近性的值。如果存在用于表示优先级的一个或多个位,则那些位可以指示使用新近性的相对程度,使得在数据没有随时间而被访问时,数据的优先级或使用新近性随时间降低。访问高速缓存位置300i处的数据将使使用新近性或优先级提高至最高值,诸如最新近使用(MRU, Most Recently Used)值。在某些实施例中,可以存在有限数目的优先级或使用新近性值,使得多个高速缓存位置可以具有相同的使用新近性值。例如,可以通过最少新近使用(LRU, Least Recently Used)类来表述使用新近性的程度,其中某些类指示该数据比与其它LRU类相关联的数据更多被新近访问。在可替换的实施例中,每一个高速缓存位置300i可以具有唯一的优先级306或最少新近使用(LRU)列表中的使用新近性,这将要求更多位来表示。在其中高速缓存位置300i被分组成组的实施例中,则优先级或使用新近性(例如LRU类)将相对于相同组120i中的其它高速缓存位置。
图1示出了被组位204标识为高速缓存位置300中的线的高速缓存组(例如120i),并且每一个高速缓存位置被表示为高速缓存组120i中的框。每一个地址200可以直接映射到由组位204标识的高速缓存组120i中的位置300i。每一个地址200将映射到由地址的组位204标识的组120i中的一个唯一的直接映射高速缓存位置300DM,其中非易失性存储器114中的地址200中的多个可以映射到相同的直接映射高速缓存位置。
在一个实施例中,高速缓存管理器108可以向地址200的标签位202应用散列函数,其产生映射到由组位204标识的组120i中的直接映射高速缓存位置300i的值。散列函数向具有不同标签位202(所述不同标签位202具有相同的组位204,即,映射到相同的高速缓存组120i)的多个地址200的应用可以导致标识针对那些地址的相同直接映射高速缓存位置的位的相同散列值。以此方式,具有相同组位204的地址200中的某些将具有高速缓冲存储器110中的相同直接映射高速缓存位置300i。在可替换的实施例中,可以通过来自组位204的位的子集确定针对地址的组120i中的直接映射高速缓存位置。例如,如果每一个组具有8个高速缓存位置/块,还称为槽位(slot),则可以使用组位204的底部3个位以确定针对地址200的组120i中的直接映射高速缓存位置。
高速缓存管理器108维护重映射信息400(图1),所述重映射信息400提供与针对不是针对地址的直接映射高速缓存位置的高速缓存位置300i中的数据的地址有关的信息。例如,在以下所描述的某些情形中,高速缓存管理器108可以基于地址200的标签202将针对地址200的数据存储在针对地址的组中的不是直接映射高速缓存位置的位置处。在这样的情况下,重映射信息400将指示针对未存储在其直接映射高速缓存位置中的地址200的位置。
图4图示了重映射信息条目400i的实施例,所述重映射信息条目400i针对的是地址200,地址200存储在高速缓冲存储器110中的不是针对该地址200的直接映射高速缓存位置的位置300i处,其中条目400i可以包括:地址标签202的标签402;包括针对地址200的组位204的组404;以及组404中的位置406或块,其中存储针对地址200的数据和地址200,所述位置406或块包括除针对地址200的直接映射高速缓存位置外的位置。
在一个实施例中,为了节约空间,重映射信息400可以仅维护针对高速缓存中的位置的每一个组120i的有限数目的重映射信息条目400i以限制重映射信息400的大小,重映射信息400i可以包括表格或其它数据结构。在这样的情况下,被重映射且在重映射信息条目400i中未指示的那些地址仅可以通过检查位置300i中的标签304而定位,以确定具有针对所请求的地址的数据的高速缓存位置300i
在一个实施例中,包括高速缓存管理器108和重映射信息400的高速缓冲存储器控制器106可以在形成处理器102的集成电路或芯片上实现,作为片上系统(SOC)实现方式的一部分。在可替换的实施例中,高速缓存管理器108和重映射信息400可以被实现为由处理器102执行的软件,以在操作系统级执行高速缓存管理。
图5图示了由高速缓存管理器108执行以向高速缓冲存储器110中的高速缓存位置300i添加数据以用于对非易失性存储器114的写入或用于读取未命中的操作的实施例,其中所请求的数据不处于高速缓冲存储器110中。在接收到(在块500处)针对非易失性存储器114中的目标地址200T的要添加到高速缓冲存储器110的数据时,高速缓存管理器108使用组位204以确定组120i和标签位202来确定(在块502处)针对目标地址的直接映射高速缓存位置300DM,诸如向标签位202应用散列函数以确定由组位204标识的组120i中的位置。确定(在块504处)是否存在直接映射高速缓存位置300DM中的另一地址,诸如具有与针对目标地址200T的标签位202不同的标签位304。如果(在块504处)所确定的直接映射高速缓存位置300DM不具有针对不同地址的数据,即,未存储有效数据或者存储了针对目标地址的数据,即,具有相同的标签位202,则将针对目标地址200T的数据写入(在块506处)到直接映射高速缓存位置300DM,并且在针对直接映射高速缓存位置300DM处的所写入的数据的优先级信息306中指示(在块508处)高优先级。例如,可以将最新近使用值指示为针对所写入的直接映射高速缓存位置300DM的优先级信息306。针对高速缓存组120i中的位置300i的其它优先级可以使其优先级或使用新近性降低。
如果(在块504处)存在直接映射高速缓存位置300DM中的另一地址,则高速缓存管理器108根据针对高速缓存位置300DM的优先级信息306确定(在块510处)直接映射高速缓存位置300DM处的数据的优先级(例如,使用新近性)是否具有高优先级,该高优先级可以包括大于值的阈值的优先级值或者最新近使用(MRU)值。如果(在块510处)直接映射高速缓存位置300DM处的数据的优先级不高,即,数据具有相对低的使用新近性,则如果(在块512处)直接映射高速缓存位置300DM处的数据是脏的,则将来自直接映射高速缓存位置300DM的数据降级至直接映射高速缓存位置300DM中所指示的非易失性存储器114中的地址200。从块512,控制继续回到块506以将针对目标地址的数据写入到直接映射高速缓存位置300DM。如果直接映射高速缓存位置300DM处的数据不是脏的(即,经更新),则直接映射高速缓存位置300DM将只是在块506处被盖写。
如果(在块504处)直接映射位置300DM处的数据的优先级是高优先级,或者预定阈值优先级或使用新近性,则高速缓存管理器108根据不具有数据的组位204来确定(在块514处)是否存在目标地址200T映射到的组中的高速缓存位置300i。如果找到这样的空位置300i,则高速缓存管理器108将针对目标地址200T的数据和目标地址写入(在块516处)到不具有数据的组120i中的位置300i。将针对所写入的高速缓存位置300i的优先级306指示(在块518处)为高。高速缓存管理器108还在重映射信息400中的条目400i中指示(在块520处)具有设置到目标地址200T的标签202的标签402、设置到目标地址200T的组位204的组406、以及数据被写入到的设置到高速缓存位置300i的组406中的位置。如果存在针对组的最大数目的条目400i,则新的条目400i将取代针对组120i的重映射信息400中的另一条目。
如果(在块514处)不存在不具有数据(即,可用于被写入)的、目标地址200T组位204映射到的组120i中的位置,则高速缓存管理器108确定(在块522处)具有带有低优先级的数据的组120i中的位置300i,诸如最少新近使用的优先级306。如果(在块524处)所确定的位置处的数据是脏的,则使其降级。将针对目标地址200T的数据和目标地址200T写入(在块526处)到组120i中的所确定的位置300i。然后,控制继续到块518以更新针对被写入的位置300i和重映射信息400的优先级。
利用图5的操作,首先针对被添加到高速缓存的数据考虑直接映射高速缓存位置,并且如果直接映射高速缓存位置已经具有高优先级高速缓存数据,带有高使用新近性,则可以选择针对目标地址的高速缓存组中的另一位置以存储针对目标地址的数据。在此时,高速缓存管理器108从直接映射高速缓存切换到高速缓存关联性。利用所描述的实施例,在重映射信息中指示除直接映射高速缓存位置外的所使用的位置,以提供针对所添加的数据的目标地址的组相联位置的快速查找。
图6图示了由高速缓存管理器108执行以通过首先检验所请求的读取数据是否处于高速缓冲存储器110中来读取非易失性存储器114中的读取地址处的数据的操作的实施例。在接收到(在块600处)针对非易失性存储器114中的读取地址200R的读取请求时,高速缓存管理器108确定(在块602处)针对读取地址200R的直接映射高速缓存位置300DM,使用组位204以确定组120i和标签位202以便确定组120i中的特定位置300i。高速缓存管理器108可以向标签位202应用散列函数以确定由组位204标识的组120i中的位置。高速缓存管理器108确定(在块604处)是否存在针对直接映射高速缓存位置300DM中的读取地址200R的数据,诸如具有与针对读取地址200R的标签位202相同的标签位304。如果(在块604处)所确定的直接映射高速缓存位置300DM确实具有针对读取地址200R的数据,则将直接映射高速缓存位置300DM处的数据返回(在块606处)到读取请求,即,高速缓存命中,并且将针对直接映射高速缓存位置300DM的优先级信息306指示(在块608处)为高,例如最新近使用或高LRU类。
如果(在块604处)直接映射高速缓存位置300DM处的数据不具有针对读取地址200R的数据,则高速缓存管理器108确定(在块610处)重映射信息400是否具有条目400i,条目400i的标签402和组404位匹配于读取地址200R的标签202和组位204。如果存在具有读取地址200R的重映射信息条目400i,则高速缓存管理器108根据条目400i确定(在块612处)针对读取地址200R的组406中的位置,并将来自位置406的数据返回(在块614处)到读取请求,并将针对位置406处的读取数据的优先级信息308指示(在块616处)为高。
如果(在块610处)重映射信息400不具有条目400i,其中条目400i具有匹配于读取地址200R的标签202和组204位的标签402和组404位,则高速缓存管理器108确定(在块618处)是否存在读取地址200R映射到的具有匹配于读取地址200R的标签202的标签304的组中的位置300i,组相联标签搜索。如果是这样,则高速缓存管理器108在重映射信息400中指示(在块620处)字段402中的读取地址200R的标签202以及具有条目400i的字段406中的标签的组中的位置300i。如果存在针对组的最大数目的条目,则创建针对读取数据的条目400i可以取代针对组120i的重映射信息400中的条目400j之一。然后,控制继续到块614以返回所确定的位置处的数据。
如果(在块618处)不存在读取地址200R映射到的具有读取地址200R的组中的高速缓存位置300i,则存在高速缓存未命中,并且高速缓存管理器108访问(在块622处)来自非易失性存储器114的读取地址处的数据以返回到读取请求。高速缓存管理器108然后将执行(在块624处)图5中的操作以将针对读取未命中的读取数据添加到高速缓冲存储器110中的高速缓存位置300i
利用图6的实施例,高速缓存管理器108首先使用直接映射高速缓存以检验针对所请求的读取数据的直接映射高速缓存位置,且如果不在那里,则使用重映射信息400以确定所请求的读取数据是否处于除直接映射高速缓存位置外的映射高速缓存位置300i中。如果重映射信息400未提供具有所请求的数据的高速缓存位置,则高速缓存管理器108切换到组相联高速缓存以执行标签搜索,以便在组中的每个高速缓存位置处搜索所请求的读取地址的标签。
图7图示了系统700的实施例,在系统700中,可以将高速缓冲存储器110部署为高速缓冲存储器710,并且可以将非易失性存储器114部署为系统存储器设备708和/或存储设备。该系统包括通过总线706与系统存储器设备708和另一存储器设备710通信的处理器704,在系统存储器设备708中对正在执行的程序、操作数和参数进行高速缓存,所述另一存储器设备710可以包括易失性或其它快速存取存储器设备,以对用于系统存储器708的数据进行高速缓存。处理器704还可以与输入/输出(I/O)设备712a、712b通信,输入/输出(I/O)设备712a、712b可以包括输入设备(例如键盘、触摸屏、鼠标等)、显示设备、图形卡、端口、网络接口等。存储器708和高速缓冲存储器710可以耦合到系统700母板上的接口,安装在系统700母板上,或者部署在外部存储器设备中或通过网络可访问。
应当领会到,遍及本说明书对“一个实施例”或“实施例”的引用意指结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,要强调且应当领会到的是,在本说明书的各种部分中对“实施例”或“一个实施例”或“可替换的实施例”的两次或更多次引用不必然都指代相同的实施例。另外,可以在本发明的一个或多个实施例中如合适的那样组合特定特征、结构或特性。
类似地,应当领会到,在本发明的实施例的前文描述中,有时在单个实施例、附图或其描述中将各种特征分组在一起以用于精简本公开的目的,从而帮助理解各种发明方面中的一个或多个。然而,该公开方法不应被解释为反映以下意图:所要求保护的主题要求比在每一个权利要求中明确记载的特征更多的特征。相反,如随附权利要求所反映,发明方面在于单个前文所公开的实施例的并非全部特征。因此,随附于详细描述的权利要求由此被明确地并入到该详细描述中。
本文所使用的参考字符(诸如b、i和n)在本文中用于标示可变数目的元素实例,这可以表示相同或不同值,且可以表示在与不同的所描述的实例中的不同或相同的元素一起使用时的相同或不同值。
示例
以下示例关于另外的实施例。
示例1是一种用于即时高速缓存关联性的装置,在使用组相联高速缓存与直接映射高速缓存之间切换,所述装置包括:高速缓冲存储器;字节可寻址写入到位非易失性存储器;以及高速缓存管理器,其要:根据非易失性存储器中的目标地址确定高速缓冲存储器中的直接映射高速缓存位置;响应于直接映射高速缓存位置存储针对非易失性存储器中的另一地址的数据,在与直接映射高速缓存位置不同的高速缓冲存储器中的可用高速缓存位置处写入针对目标地址的数据;以及响应于直接映射高速缓存位置不存储针对非易失性存储器中的另一地址的数据,在直接映射高速缓存位置中写入针对目标地址的数据。
在示例2中,示例1和3-10的主题可以可选地包括,来自非易失性存储器的每一个地址映射到高速缓冲存储器中的多组高速缓存位置的组,其中来自非易失性存储器的每一个地址映射到多组之一,并且其中针对目标地址的数据被写入在的可用高速缓存位置处于目标地址映射到的高速缓存位置组中。
在示例3中,示例1、2和4-10的主题可以可选地包括,高速缓存管理器还要:生成重映射信息,重映射信息包括比每一组中的高速缓存位置的数目少的数目的针对每一组的重映射地址。
在示例4中,示例1-3和5-10的主题可以可选地包括,高速缓存管理器还要:在重映射信息中至少指示目标地址的部分和高速缓冲存储器中的可用高速缓存位置,所述可用高速缓存位置不同于针对目标地址的数据被写入在的直接映射高速缓存位置。
在示例5中,示例1-4和6-10的主题可以可选地包括,高速缓存管理器还要:接收对非易失性存储器中的读取地址的读取请求;响应于高速缓冲存储器中的直接映射高速缓存位置具有针对读取地址的数据,从针对读取地址的直接映射高速缓存位置返回针对读取地址的数据;响应于直接映射高速缓存位置不包括针对读取地址的数据,确定是否在不同于针对读取地址的直接映射高速缓存位置的高速缓冲存储器中的高速缓存位置处在重映射信息中指示读取地址;以及响应于确定在重映射信息中指示读取地址,返回针对重映射信息中所指示的读取地址的数据。
在示例6中,示例1-5和7-10的主题可以可选地包括,高速缓存管理器还要:响应于确定重映射信息不指示读取地址,确定读取地址是否处于读取地址映射到的一组高速缓存位置之一中;以及响应于确定读取地址处于该组高速缓存位置之一中,返回针对该组中的高速缓存位置之一处的读取地址的数据。
在示例7中,示例1-6和8-10的主题可以可选地包括,高速缓存管理器还要:响应于直接映射高速缓存位置存储针对另一地址的数据,确定高速缓冲存储器中的直接映射高速缓存位置中的数据是否具有高优先级;以及响应于确定直接映射高速缓存位置中的数据不具有高优先级,在直接映射高速缓存位置处写入针对目标地址的数据,其中响应于直接映射高速缓存位置中的数据具有高优先级,将针对目标地址的数据写入到可用高速缓存位置。
在示例8中,示例1-7和9-10的主题可以可选地包括,基于数据的访问的新近性,高速缓冲存储器中的数据具有高优先级或低优先级,其中相对更新近访问的数据具有高优先级,并且相对不太新近访问的数据不具有高优先级。
在示例9中,示例1-8和10的主题可以可选地包括,高速缓存管理器还要:处理目标地址映射到的高速缓冲存储器中的多组高速缓存位置的组中的高速缓存位置,以确定该组中的高速缓存位置中具有低优先级的一个,其中数据被写入到的可用高速缓存位置包括目标地址映射到的具有较低优先级的该组中的高速缓存位置。
在示例10中,示例1-9的主题可以可选地包括:处理器,包括集成电路;以及高速缓冲存储器控制器,被实现在处理器集成电路管芯上。高速缓冲存储器控制器包括高速缓存管理器,并管理对高速缓冲存储器的访问,并与非易失性存储器通信。
示例11是一种用于即时高速缓存关联性的系统,在使用组相联高速缓存与直接映射高速缓存之间切换,所述系统包括:高速缓冲存储器;非易失性存储器;以及处理器,所述处理器包括高速缓存管理器,其要:根据非易失性存储器中的目标地址确定高速缓冲存储器中的直接映射高速缓存位置;响应于直接映射高速缓存位置存储针对非易失性存储器中的另一地址的数据,在与直接映射高速缓存位置不同的高速缓冲存储器中的可用高速缓存位置处写入针对目标地址的数据;以及响应于直接映射高速缓存位置不存储针对非易失性存储器中的另一地址的数据,在直接映射高速缓存位置中写入针对目标地址的数据。
在示例12中,示例11和13-18的主题可以可选地包括,来自非易失性存储器的每一个地址映射到高速缓冲存储器中的多组高速缓存位置的组,其中来自非易失性存储器的每一个地址映射到多组之一,并且其中针对目标地址的数据被写入在的可用高速缓存位置处于目标地址映射到的高速缓存位置组中。
在示例13中,示例11、12和14-18的主题可以可选地包括,高速缓存管理器还要:在重映射信息中至少指示目标地址的部分和高速缓冲存储器中的可用高速缓存位置,所述可用高速缓存位置不同于针对目标地址的数据被写入在的直接映射高速缓存位置。
在示例14中,示例11-13和15-18的主题可以可选地包括,高速缓存管理器还要:接收对非易失性存储器中的读取地址的读取请求;响应于高速缓冲存储器中的直接映射高速缓存位置具有针对读取地址的数据,从针对读取地址的直接映射高速缓存位置返回针对读取地址的数据;响应于直接映射高速缓存位置不包括针对读取地址的数据,确定是否在不同于针对读取地址的直接映射高速缓存位置的高速缓冲存储器中的高速缓存位置处在重映射信息中指示读取地址;以及响应于确定在重映射信息中指示读取地址,返回针对重映射信息中所指示的读取地址的数据。
在示例15中,示例11-14和16-18的主题可以可选地包括,高速缓存管理器还要:响应于确定重映射信息不指示读取地址,确定读取地址是否处于读取地址映射到的一组高速缓存位置之一中;以及响应于确定读取地址处于该组高速缓存位置之一中,返回针对该组中的高速缓存位置之一处的读取地址的数据。
在示例16中,示例11-15和17-18的主题可以可选地包括,高速缓存管理器还要:响应于直接映射高速缓存位置存储针对另一地址的数据,确定高速缓冲存储器中的直接映射高速缓存位置中的数据是否具有高优先级;以及响应于确定直接映射高速缓存位置中的数据不具有高优先级,在直接映射高速缓存位置处写入针对目标地址的数据,其中响应于直接映射高速缓存位置中的数据具有高优先级,将针对目标地址的数据写入到可用高速缓存位置。
在示例17中,示例11-16和18的主题可以可选地包括,基于数据的访问的新近性,高速缓冲存储器中的数据具有高优先级或低优先级,其中相对更新近访问的数据具有高优先级,并且相对不太新近访问的数据不具有高优先级。
在示例18中,示例11-17的主题可以可选地包括,高速缓存管理器还要:处理目标地址映射到的高速缓冲存储器中的多组高速缓存位置的组中的高速缓存位置,以确定该组中的高速缓存位置中具有低优先级的一个,其中数据被写入到的可用高速缓存位置包括目标地址映射到的具有较低优先级的该组中的高速缓存位置。
示例19是一种用于即时高速缓存关联性的方法,在使用组相联高速缓存与直接映射高速缓存之间切换,以用于具有作为用于非易失性存储器的高速缓存的高速缓存位置的高速缓冲存储器,所述方法包括:根据非易失性存储器中的目标地址确定高速缓冲存储器中的直接映射高速缓存位置;响应于直接映射高速缓存位置存储针对非易失性存储器中的另一地址的数据,在与直接映射高速缓存位置不同的高速缓冲存储器中的可用高速缓存位置处写入针对目标地址的数据;以及响应于直接映射高速缓存位置不存储针对非易失性存储器中的另一地址的数据,在直接映射高速缓存位置中写入针对目标地址的数据。
在示例20中,示例19和21-25的主题可以可选地包括,来自非易失性存储器的每一个地址映射到高速缓冲存储器中的多组高速缓存位置的组,其中来自非易失性存储器的每一个地址映射到多组之一,并且其中针对目标地址的数据被写入在的可用高速缓存位置处于目标地址映射到的高速缓存位置组中。
在示例21中,示例19、20和22-25的主题可以可选地包括:在重映射信息中至少指示目标地址的部分和高速缓冲存储器中的可用高速缓存位置,所述可用高速缓存位置不同于针对目标地址的数据被写入在的直接映射高速缓存位置。
在示例22中,示例19-21和23-25的主题可以可选地包括:接收对非易失性存储器中的读取地址的读取请求;响应于高速缓冲存储器中的直接映射高速缓存位置具有针对读取地址的数据,从针对读取地址的直接映射高速缓存位置返回针对读取地址的数据;响应于直接映射高速缓存位置不包括针对读取地址的数据,确定是否在不同于针对读取地址的直接映射高速缓存位置的高速缓冲存储器中的高速缓存位置处在重映射信息中指示读取地址;以及响应于确定在重映射信息中指示读取地址,返回针对重映射信息中所指示的读取地址的数据。
在示例23中,示例19-22和24-25的主题可以可选地包括:响应于确定重映射信息不指示读取地址,确定读取地址是否处于读取地址映射到的一组高速缓存位置之一中;以及响应于确定读取地址处于该组高速缓存位置之一中,返回针对该组中的高速缓存位置之一处的读取地址的数据。
在示例24中,示例19-23和25的主题可以可选地包括:响应于直接映射高速缓存位置存储针对另一地址的数据,确定高速缓冲存储器中的直接映射高速缓存位置中的数据是否具有高优先级;以及响应于确定直接映射高速缓存位置中的数据不具有高优先级,在直接映射高速缓存位置处写入针对目标地址的数据,其中响应于直接映射高速缓存位置中的数据具有高优先级,将针对目标地址的数据写入到可用高速缓存位置。
在示例25中,示例19-24的主题可以可选地包括:基于数据的访问的新近性,高速缓冲存储器中的数据具有高优先级或低优先级,其中相对更新近访问的数据具有高优先级,并且相对不太新近访问的数据不具有高优先级。
示例26是一种用于即时高速缓存关联性的装置,在使用组相联高速缓存与直接映射高速缓存之间切换,以用于具有作为用于非易失性存储器的高速缓存的高速缓存位置的高速缓冲存储器,所述装置包括:用于根据非易失性存储器中的目标地址确定高速缓冲存储器中的直接映射高速缓存位置的部件;用于响应于直接映射高速缓存位置存储针对非易失性存储器中的另一地址的数据,在与直接映射高速缓存位置不同的高速缓冲存储器中的可用高速缓存位置处写入针对目标地址的数据的部件;以及用于响应于直接映射高速缓存位置不存储针对非易失性存储器中的另一地址的数据,在直接映射高速缓存位置中写入针对目标地址的数据的部件。
示例27是一种装置,包括用于执行如任何前述权利要求中所要求保护的方法的部件。
示例28是一种包括机器可读指令的机器可读储存器,所述机器可读指令在被执行时实现如任何前述权利要求中所要求保护的方法或实现如任何前述权利要求中所要求保护的装置。

Claims (25)

1.一种用于即时高速缓存关联性的装置,在使用组相联高速缓存与直接映射高速缓存之间切换,所述装置包括:
高速缓冲存储器;
字节可寻址写入到位非易失性存储器;以及
高速缓存管理器,其要:
根据非易失性存储器中的目标地址确定高速缓冲存储器中的直接映射高速缓存位置;
响应于直接映射高速缓存位置存储针对非易失性存储器中的另一地址的数据,在与直接映射高速缓存位置不同的高速缓冲存储器中的可用高速缓存位置处写入针对目标地址的数据;以及
响应于直接映射高速缓存位置不存储针对非易失性存储器中的另一地址的数据,在直接映射高速缓存位置中写入针对目标地址的数据。
2.权利要求1所述的装置,其中来自非易失性存储器的每一个地址映射到高速缓冲存储器中的多组高速缓存位置的组,其中来自非易失性存储器的每一个地址映射到多组之一,并且其中针对目标地址的数据被写入在的可用高速缓存位置处于目标地址映射到的高速缓存位置组中。
3.权利要求2所述的装置,其中高速缓存管理器还要:
生成重映射信息,重映射信息包括比每一组中的高速缓存位置的数目少的数目的针对每一组的重映射地址。
4.权利要求1所述的装置,其中高速缓存管理器还要:
在重映射信息中至少指示目标地址的部分和高速缓冲存储器中的可用高速缓存位置,所述可用高速缓存位置不同于针对目标地址的数据被写入在的直接映射高速缓存位置。
5.权利要求4所述的装置,其中高速缓存管理器还要:
接收对非易失性存储器中的读取地址的读取请求;以及
响应于高速缓冲存储器中的直接映射高速缓存位置具有针对读取地址的数据,从针对读取地址的直接映射高速缓存位置返回针对读取地址的数据;
响应于直接映射高速缓存位置不包括针对读取地址的数据,确定是否在不同于针对读取地址的直接映射高速缓存位置的高速缓冲存储器中的高速缓存位置处在重映射信息中指示读取地址;以及
响应于确定在重映射信息中指示读取地址,返回针对重映射信息中所指示的读取地址的数据。
6.权利要求5所述的装置,其中高速缓存管理器还要:
响应于确定重映射信息不指示读取地址,确定读取地址是否处于读取地址映射到的一组高速缓存位置之一中;以及
响应于确定读取地址处于该组高速缓存位置之一中,返回针对该组中的高速缓存位置之一处的读取地址的数据。
7.权利要求1所述的装置,其中高速缓存管理器还要:
响应于直接映射高速缓存位置存储针对另一地址的数据,确定高速缓冲存储器中的直接映射高速缓存位置中的数据是否具有高优先级;以及
响应于确定直接映射高速缓存位置中的数据不具有高优先级,在直接映射高速缓存位置处写入针对目标地址的数据,其中响应于直接映射高速缓存位置中的数据具有高优先级,将针对目标地址的数据写入到可用高速缓存位置。
8.权利要求7所述的装置,其中基于数据的访问的新近性,高速缓冲存储器中的数据具有高优先级或低优先级,其中相对更新近访问的数据具有高优先级,并且相对不太新近访问的数据不具有高优先级。
9.权利要求8所述的装置,其中高速缓存管理器还要:
处理目标地址映射到的高速缓冲存储器中的多组高速缓存位置的组中的高速缓存位置,以确定该组中的高速缓存位置中具有低优先级的一个,其中数据被写入到的可用高速缓存位置包括目标地址映射到的具有较低优先级的该组中的高速缓存位置。
10.如权利要求1-9中任一项所述的装置,还包括:
处理器,包括集成电路;以及
高速缓冲存储器控制器,被实现在处理器集成电路管芯上,其中高速缓冲存储器控制器包括高速缓存管理器,并管理对高速缓冲存储器的访问,并与非易失性存储器通信。
11.一种用于即时高速缓存关联性的系统,在使用组相联高速缓存与直接映射高速缓存之间切换,所述系统包括:
高速缓冲存储器;
非易失性存储器;以及
处理器,所述处理器包括高速缓存管理器,其要:
根据非易失性存储器中的目标地址确定高速缓冲存储器中的直接映射高速缓存位置;
响应于直接映射高速缓存位置存储针对非易失性存储器中的另一地址的数据,在与直接映射高速缓存位置不同的高速缓冲存储器中的可用高速缓存位置处写入针对目标地址的数据;以及
响应于直接映射高速缓存位置不存储针对非易失性存储器中的另一地址的数据,在直接映射高速缓存位置中写入针对目标地址的数据。
12.权利要求11所述的系统,其中来自非易失性存储器的每一个地址映射到高速缓冲存储器中的多组高速缓存位置的组,其中来自非易失性存储器的每一个地址映射到多组之一,并且其中针对目标地址的数据被写入在的可用高速缓存位置处于目标地址映射到的高速缓存位置组中。
13.权利要求11所述的系统,其中高速缓存管理器还要:
在重映射信息中至少指示目标地址的部分和高速缓冲存储器中的可用高速缓存位置,所述可用高速缓存位置不同于针对目标地址的数据被写入在的直接映射高速缓存位置。
14.权利要求13所述的系统,其中高速缓存管理器还要:
接收对非易失性存储器中的读取地址的读取请求;以及
响应于高速缓冲存储器中的直接映射高速缓存位置具有针对读取地址的数据,从针对读取地址的直接映射高速缓存位置返回针对读取地址的数据;
响应于直接映射高速缓存位置不包括针对读取地址的数据,确定是否在不同于针对读取地址的直接映射高速缓存位置的高速缓冲存储器中的高速缓存位置处在重映射信息中指示读取地址;以及
响应于确定在重映射信息中指示读取地址,返回针对重映射信息中所指示的读取地址的数据。
15.权利要求14所述的系统,其中高速缓存管理器还要:
响应于确定重映射信息不指示读取地址,确定读取地址是否处于读取地址映射到的一组高速缓存位置之一中;以及
响应于确定读取地址处于该组高速缓存位置之一中,返回针对该组中的高速缓存位置之一处的读取地址的数据。
16.权利要求11所述的系统,其中高速缓存管理器还要:
响应于直接映射高速缓存位置存储针对另一地址的数据,确定高速缓冲存储器中的直接映射高速缓存位置中的数据是否具有高优先级;以及
响应于确定直接映射高速缓存位置中的数据不具有高优先级,在直接映射高速缓存位置处写入针对目标地址的数据,其中响应于直接映射高速缓存位置中的数据具有高优先级,将针对目标地址的数据写入到可用高速缓存位置。
17.权利要求16所述的系统,其中基于数据的访问的新近性,高速缓冲存储器中的数据具有高优先级或低优先级,其中相对更新近访问的数据具有高优先级,并且相对不太新近访问的数据不具有高优先级。
18.权利要求17所述的系统,其中高速缓存管理器还要:
处理目标地址映射到的高速缓冲存储器中的多组高速缓存位置的组中的高速缓存位置,以确定该组中的高速缓存位置中具有低优先级的一个,其中数据被写入到的可用高速缓存位置包括目标地址映射到的具有较低优先级的该组中的高速缓存位置。
19.一种用于即时高速缓存关联性的方法,在使用组相联高速缓存与直接映射高速缓存之间切换,以用于具有作为用于非易失性存储器的高速缓存的高速缓存位置的高速缓冲存储器,所述方法包括:
根据非易失性存储器中的目标地址确定高速缓冲存储器中的直接映射高速缓存位置;
响应于直接映射高速缓存位置存储针对非易失性存储器中的另一地址的数据,在与直接映射高速缓存位置不同的高速缓冲存储器中的可用高速缓存位置处写入针对目标地址的数据;以及
响应于直接映射高速缓存位置不存储针对非易失性存储器中的另一地址的数据,在直接映射高速缓存位置中写入针对目标地址的数据。
20.权利要求19所述的方法,其中来自非易失性存储器的每一个地址映射到高速缓冲存储器中的多组高速缓存位置的组,其中来自非易失性存储器的每一个地址映射到多组之一,并且其中针对目标地址的数据被写入在的可用高速缓存位置处于目标地址映射到的高速缓存位置组中。
21.权利要求19所述的方法,还包括:
在重映射信息中至少指示目标地址的部分和高速缓冲存储器中的可用高速缓存位置,所述可用高速缓存位置不同于针对目标地址的数据被写入在的直接映射高速缓存位置。
22.权利要求21所述的方法,还包括:
接收对非易失性存储器中的读取地址的读取请求;以及
响应于高速缓冲存储器中的直接映射高速缓存位置具有针对读取地址的数据,从针对读取地址的直接映射高速缓存位置返回针对读取地址的数据;
响应于直接映射高速缓存位置不包括针对读取地址的数据,确定是否在不同于针对读取地址的直接映射高速缓存位置的高速缓冲存储器中的高速缓存位置处在重映射信息中指示读取地址;以及
响应于确定在重映射信息中指示读取地址,返回针对重映射信息中所指示的读取地址的数据。
23.权利要求22所述的方法,还包括:
响应于确定重映射信息不指示读取地址,确定读取地址是否处于读取地址映射到的一组高速缓存位置之一中;以及
响应于确定读取地址处于该组高速缓存位置之一中,返回针对该组中的高速缓存位置之一处的读取地址的数据。
24.权利要求19所述的方法,还包括:
响应于直接映射高速缓存位置存储针对另一地址的数据,确定高速缓冲存储器中的直接映射高速缓存位置中的数据是否具有高优先级;以及
响应于确定直接映射高速缓存位置中的数据不具有高优先级,在直接映射高速缓存位置处写入针对目标地址的数据,其中响应于直接映射高速缓存位置中的数据具有高优先级,将针对目标地址的数据写入到可用高速缓存位置。
25.权利要求24所述的方法,其中基于数据的访问的新近性,高速缓冲存储器中的数据具有高优先级或低优先级,其中相对更新近访问的数据具有高优先级,并且相对不太新近访问的数据不具有高优先级。
CN201810166324.0A 2017-03-31 2018-02-28 用于即时高速缓存关联性的装置、方法和系统 Pending CN108694133A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/476838 2017-03-31
US15/476,838 US20180285274A1 (en) 2017-03-31 2017-03-31 Apparatus, method and system for just-in-time cache associativity

Publications (1)

Publication Number Publication Date
CN108694133A true CN108694133A (zh) 2018-10-23

Family

ID=61187212

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810166324.0A Pending CN108694133A (zh) 2017-03-31 2018-02-28 用于即时高速缓存关联性的装置、方法和系统

Country Status (3)

Country Link
US (1) US20180285274A1 (zh)
EP (1) EP3382558B1 (zh)
CN (1) CN108694133A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190034337A1 (en) * 2017-12-28 2019-01-31 Intel Corporation Multi-level system memory configurations to operate higher priority users out of a faster memory level
CN111124951B (zh) * 2018-10-31 2023-09-15 伊姆西Ip控股有限责任公司 管理数据访问的方法、设备和计算机程序产品
CN110008154B (zh) * 2019-04-16 2020-08-21 北京智芯微电子科技有限公司 提高处理器与访存总线时序的方法及内存属性预测器
US11526448B2 (en) 2019-09-27 2022-12-13 Intel Corporation Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10105458A (ja) * 1996-10-02 1998-04-24 Hitachi Ltd キャッシュメモリシステム
US6446168B1 (en) * 2000-03-22 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamically switching a cache between direct-mapped and 4-way set associativity
US8176255B2 (en) * 2007-10-19 2012-05-08 Hewlett-Packard Development Company, L.P. Allocating space in dedicated cache ways
US9176856B2 (en) * 2013-07-08 2015-11-03 Arm Limited Data store and method of allocating data to the data store

Also Published As

Publication number Publication date
US20180285274A1 (en) 2018-10-04
EP3382558B1 (en) 2020-01-22
EP3382558A1 (en) 2018-10-03

Similar Documents

Publication Publication Date Title
TWI771387B (zh) 記憶體模組及操作記憶體模組的方法
US9075725B2 (en) Persistent memory for processor main memory
US9792221B2 (en) System and method for improving performance of read/write operations from a persistent memory device
TWI393050B (zh) 促進多重處理器介面之板內建快取記憶體系統之記憶體裝置及方法及使用其之電腦系統
US6782453B2 (en) Storing data in memory
CN105630703A (zh) 利用可编程哈希地址的控制缓存访问的方法及相关缓存控制器
US11210020B2 (en) Methods and systems for accessing a memory
CN108694133A (zh) 用于即时高速缓存关联性的装置、方法和系统
US10261901B2 (en) Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory
US9740613B2 (en) Cache memory system and processor system
US20190004954A1 (en) Application and processor guided memory prefetching
US11126573B1 (en) Systems and methods for managing variable size load units
WO2024045586A1 (zh) 支持simt架构的高速缓冲存储器及相应处理器
WO2024066195A1 (zh) 缓存管理方法及装置、缓存装置、电子装置和介质
CN115168247B (zh) 用于并行处理器中动态共享存储空间的方法及相应处理器
CN111124297A (zh) 一种堆叠dram缓存的性能提升方法
US20220398198A1 (en) Tags and data for caches
US7865691B2 (en) Virtual address cache and method for sharing data using a unique task identifier
US10042562B2 (en) Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device
US10467137B2 (en) Apparatus, system, integrated circuit die, and method to determine when to bypass a second level cache when evicting modified data from a first level cache
CN112148639A (zh) 一种高效小容量高速缓冲存储器替换方法及系统
WO1992007323A1 (en) Cache controller and associated method for remapping cache address bits
US20240160574A1 (en) Computer system including a main memory device with heterogeneous memories and method of operating the same
US10423540B2 (en) Apparatus, system, and method to determine a cache line in a first memory device to be evicted for an incoming cache line from a second memory device
EP4116829A1 (en) Systems and methods for managing variable size load units

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