CN115443454A - 自适应高速缓存 - Google Patents

自适应高速缓存 Download PDF

Info

Publication number
CN115443454A
CN115443454A CN202180024950.6A CN202180024950A CN115443454A CN 115443454 A CN115443454 A CN 115443454A CN 202180024950 A CN202180024950 A CN 202180024950A CN 115443454 A CN115443454 A CN 115443454A
Authority
CN
China
Prior art keywords
cache
adaptive
hardware
cache line
lines
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.)
Withdrawn
Application number
CN202180024950.6A
Other languages
English (en)
Inventor
D·A·罗伯茨
J·T·帕夫洛夫斯基
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.)
Micron Technology Inc
Original Assignee
Micron Technology 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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN115443454A publication Critical patent/CN115443454A/zh
Withdrawn legal-status Critical Current

Links

Images

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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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
    • 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/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • 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/6024History based prefetching
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

自适应高速缓存
背景技术
为了高效操作,一些计算系统包含多级存储器,其被称为分层存储器系统。此处,高效操作意味着成本效率及速度效率。较快的存储器通常比相对较慢的存储器更昂贵,因此设计人员试图平衡其相对成本及收益。一种方法是将较少量的较快存储器及较大量的较慢存储器一起使用。较快的存储器部署在比较慢的存储器更高的层级,使得首先存取较快的存储器。相对较快的存储器的实例被称为高速缓存。相对较慢的存储器的实例是后备存储器,其可包含初级存储器、主存储器、后备存储器等等。因此,高速缓存可通过使用高性能存储器单元存储及检索后备存储器的数据来加速数据操作。高性能存储器单元使得高速缓存能够比后备存储器更快地响应于来自程序的存储器请求。因此可采用分层存储器系统来平衡系统性能与成本。不幸的是,分层存储器系统也会带来工程师与其它计算机设计师努力克服的操作复杂性。
附图说明
在本文档中参考以下附图描述了自适应高速缓存的一或多个方面的细节。在贯穿图式使用相同的数字来引用相似的特征及组件:
图1说明可实施自适应高速缓存的实例设备。
图1-1到1-8说明其中可实施自适应高速缓存技术的实例环境。
图2说明如本文中所公开的自适应高速缓存的实例操作实施方案。
图3说明如本文中所公开的自适应高速缓存的进一步实例操作实施方案。
图4说明组内自适应高速缓存方案的实例。
图5-1及5-2说明组内自适应高速缓存方案的进一步实例。
图6-1及6-2说明如本文中所公开的自适应高速缓存的进一步实例操作实施方案。
图7-1及7-2说明具有如本文中所公开的扇区硬件高速缓存行的自适应高速缓存的进一步实例操作实施方案。
图8说明如本文中所公开的自适应高速缓存的进一步实例操作实施方案。
图9说明描绘用于提供包含自适应高速缓存行的高速缓存的操作的实例流程图。
图10说明描绘用于使高速缓存适应具有所规定特性的高速缓存工作负荷的操作的实例流程图。
图11说明描绘用于重新配置自适应高速缓存行的操作的实例流程图。
图12说明描绘用于响应于高速缓存工作负荷而配置自适应高速缓存行的操作的实例流程图。
图13说明描绘用于管理自适应高速缓存的工作集的操作的实例流程图。
具体实施方式
概述
高速缓存硬件的配置通常在设计或制造时间是固定的。例如,高速缓存硬件可包含固定数目的硬件高速缓存行,每一硬件高速缓存行具有固定大小、长度、容量、组关联性等等(例如,固定高速缓存行大小)。数据以高速缓存行为基础加载到常规高速缓存中。当发生高速缓存未命中时,数据从后备存储器传送到硬件高速缓存行中。响应于高速缓存未命中而传送到高速缓存中的数据量是硬件高速缓存行的容量或长度的函数。单个地址的高速缓存未命中可涉及传送C地址的数据,其中C是硬件高速缓存行的固定容量。因此,高速缓存未命中可涉及传送由于高速缓存未命中而请求的数据以及未明确请求的额外数据。在请求此类数据之前将数据加载到高速缓存中通常被称为“预取”。由于高速缓存行长度而发生的预取量可被称为“高速缓存行预取”。由于常规硬件高速缓存行的容量是固定的,因此硬件高速缓存行的高速缓存行预取量以及因此包括固定容量硬件高速缓存行的常规高速缓存的量也是固定的。
高速缓存行大小与高速缓存工作负荷之间的相互作用可显著影响性能。高速缓存工作负荷可在应用程序之间及/或在处理任务之间变化。一些工作负荷可展现出顺序或连续存取模式(“顺序工作负荷”),而其它工作负荷可展现出非顺序、随机及/或伪随机存取模式(“非顺序工作负荷”)。“长线”高速缓存在顺序工作负荷下可表现良好。具有长、高容量硬件高速缓存行的高速缓存(称为“长线”高速缓存)可产生大量的高速缓存行预取,这是因为高速缓存未命中可导致提取的数据足以填充高容量硬件高速缓存行。由于顺序存取模式,加载到长、高容量硬件高速缓存行的数据可能随后被存取,从而降低高速缓存未命中率,且因此更快地响应来自处理器的存储器请求。
然而,在其它类型的工作负荷下,长线高速缓存的性能可受到影响。例如,在非顺序工作负荷下,预取到较长硬件高速缓存行中的数据在从高速缓存中弹出之前不可能随后被存取。此导致不经常存取(如果有的话)的低价值数据浪费带宽及消耗高速缓存资源。具有短、低容量硬件高速缓存行的高速缓存(称为“短线”高速缓存)可在非顺序工作负荷下提供经改进的性能。将数据加载到短的、低容量的硬件高速缓存行中可避免在非顺序负荷下的带宽浪费及低价值数据的准入。然而,在其它类型的工作负荷下,短线高速缓存的性能可受到影响。在顺序工作负荷下,由较短、容量较低的硬件高速缓存行提供的较低程度的高速缓存行预取可导致高速缓存未命中率增加,并最终导致对来自处理器的存储器请求的响应变慢。
由于硬件高速缓存行的配置是固定的,因此此类高速缓存无法适应工作负荷条件,工作负荷条件可因应用程序而异。例如,计算装置的长线高速缓存可在计算装置正在执行产生顺序工作负荷的应用程序(例如视频编辑应用程序)时提供良好的性能,但其可在计算装置执行产生非顺序的工作负荷的其它应用程序时产生较差性能。相反,短线高速缓存可在计算装置执行产生非顺序工作负荷的应用程序时能够提供良好的性能,但其可在计算装置执行产生连续工作负荷的其它应用程序时产生较差的性能。尝试解决这些问题的另一方法涉及合并具有中等容量的硬件高速缓存行(称为“中线”高速缓存)。然而,中线高速缓存可仅能够提供中等性能,并且由于依赖固定容量的硬件高速缓存行,可无法在不同的工作负荷条件下产生最佳性能。
此文档描述了一种高速缓存,所述高速缓存经配置以尤其根据可编程高速缓存行参数(例如,高速缓存行大小、长度及/或容量)调适其操作高速缓存行的配置。所公开的高速缓存可包含多个硬件高速缓存行,其由硬件组件体现及/或提供。硬件高速缓存行的配置,例如高速缓存行大小、长度及/或容量,可根据高速缓存硬件的设计及/或配置是固定的。这些硬件高速缓存行用于选择性地建立自适应高速缓存行,其提供提高的灵活性以考虑各种工作负荷条件。
例如,自适应高速缓存行可由硬件高速缓存行形成,使得每一自适应高速缓存行包含一或多个硬件高速缓存行。自适应高速缓存行可形成为具有基于硬件高速缓存行的倍数的所规定高速缓存行大小、长度及/或容量。可为特定类型的工作负荷配置自适应高速缓存行。在一个方面中,自适应高速缓存行经配置以高效地服务顺序工作负荷。对于这些状况,自适应高速缓存行可经配置以具有相对较大的容量。自适应高速缓存行的大容量增加自适应高速缓存的高速缓存行预取,从而降低顺序加载下的未命中率,且因此更快地响应来自处理器的存储器请求。在另一方面中,自适应高速缓存行可经配置以高效地服务非顺序工作负荷。自适应高速缓存行可经配置以具有相对低的容量。自适应高速缓存行的低容量减少自适应高速缓存的高速缓存行预取,从而在非顺序工作负荷下减少带宽浪费及低价值数据的准入。此灵活性使得经调适高速缓存能够高效地响应于来自具有不同工作负荷类型的各种应用程序的存储器请求。
实例操作环境
图1说明可实施自适应高速缓存的实例设备100,如本文中所公开。设备100可实现为例如至少一个电子装置。实例电子装置实施方案包含物联网(IoT)装置100-1、平板装置100-2、智能手机100-3、笔记本计算机100-4、台式计算机100-5、服务器计算机100-6及服务器群集100-7。其它设备实例包含可穿戴装置,例如智能手表或智能眼镜;娱乐装置,例如机顶盒或智能电视;主板或服务器刀片;消费类电器;汽车;工业设备;等等。每一类型的电子装置包含一或多个组件,以提供一些计算功能性或特征。
在实例实施方案中,设备100包含至少一个主机102及至少一个处理器103。在一些方面中,设备100可进一步包含至少一个存储器控制器107、至少一个互连件105及至少一个后备存储器109。后备存储器109可用具有动态随机存取存储器(DRAM)的存储器装置来实现(例如,可包括主机102的主存储器)。替代地或另外,后备存储器109可用非易失性存储器装置来实现。本文中描述后备存储器109的其它实例。设备100可进一步包含高速缓存,所述高速缓存可安置在处理器103与后备存储器109之间。在图1的实例中,高速缓存经配置以根据可编程高速缓存行参数114调适其高速缓存行的长度。因此,高速缓存可被称为自适应高速缓存110,如在图1中所说明。
如所说明,主机102或主机装置102可包含处理器103及存储器控制器107。处理器103可包含内部高速缓存存储器(图1中未示出以避免模糊所说明实例的细节)。处理器103还可直接或间接耦合到存储器控制器107。主机102可通过互连件105耦合到后备存储器109及/或自适应高速缓存110。自适应高速缓存110可耦合到后备存储器109(例如,通过互连件105、通过另一互连件等等)。
设备100的所描绘组件表示具有分层存储器系统的实例计算架构。例如,内部高速缓存存储器可逻辑耦合在处理器103与自适应高速缓存110之间,并且自适应高速缓存110可耦合在进程103(及/或其内部高速缓存)与后备存储器109之间。在此实例中,处理器103的内部高速缓存比自适应高速缓存110处于分层存储器系统的更高层级处,自适应高速缓存110比后备存储器109处于分层存储器系统的更高层级处,等等。所指示互连件105以及将各种组件通信地耦合在一起的其它互连件,使得能够在各个组件之间或当中传送数据。
尽管在图1中描绘并在本文中描述设备100的特定实施方案,但可以替代方式来实施设备100。例如,主机102可包含多个高速缓存存储器,包含多个层级的高速缓存存储器。任何此类主机级高速缓存可实施为自适应高速缓存110。此外,至少一个其它存储器装置可耦合在所说明自适应高速缓存110及/或后备存储器109的“下面”。自适应高速缓存110及后备存储器109可以各种方式实现。在一些状况下,自适应高速缓存110及后备存储器109均安置在主板上或由其物理支撑,其中后备存储器109包括“主存储器”。在其它实例中,自适应高速缓存110包括DRAM,并且后备存储器109包括非易失性存储器,例如快闪存储器、磁性硬盘驱动器,等等。然而,可以替代方式来实施组件,包含在分布式或共享存储器系统中。此外,给定设备100可包含更多、更少或不同的组件。
图1-1说明实例环境100-11,在所述环境中可操作本文档中所描述的各种技术及装置。如所说明,自适应高速缓存110可经配置以加速关于后备存储器109的存储器存储操作。自适应高速缓存110可经配置以通过使用高性能高速缓存存储器120来服务关于后备存储器109的请求111,此与通过仅使用后备存储器109来服务请求111相比可减少请求111的等待时间。如本文中进一步详细公开的,自适应高速缓存110包含能够根据一或多个高速缓存行参数114配置的自适应高速缓存行132。自适应高速缓存行132可经配置以具有所规定的高速缓存行大小、长度或容量。高速缓存行参数114可为可编程的。可响应于命令、指令、消息及/或其它方式来设置及/或编程高速缓存行参数114。高速缓存行参数114可规定自适应高速缓存行132的容量。高速缓存控制器(控制器112)可经配置以根据可编程高速缓存行参数114形成及/或管理自适应高速缓存行132。因此,自适应高速缓存行132可具有可配置的容量。控制器112可进一步经配置以在自适应高速缓存行132内高速缓存数据,这可包含将后备存储器109的数据加载到相应自适应高速缓存行132中,将数据从相应自适应高速缓存行132写入到后备存储器109,等等。
自适应高速缓存110可经配置以高速缓存关于后备存储器109的数据。后备存储器109可经配置以将数据单元104存储在相应地址106处。后备存储器109可包含具有多个物理存储器存储位置108的存储器存储媒体,例如页、单元、块、扇区、分区等等。后备存储器109可包含任何合适的存储器及/或数据存储装置,包含但不限于:易失性存储器、主存储器、初级存储器、系统存储器、非易失性存储器、持久性存储器、非暂时性存储器、磁硬盘、随机存取存储器(RAM)、只读存储器(ROM)、静态RAM(SRAM)、同步DRAM(SDRAM)、动态RAM(DRAM)、晶闸管随机存取存储器(TRAM)、铁电RAM(FeRAM)、磁RAM(MRAM)、电阻式RAM(RRAM)、固态存储器、快闪存储器、NAND快闪存储器、NOR快闪存储器、磁阻式RAM(MRAM)、自旋扭矩转移RAM(STT RAM)、相变存储器(PCM),等等。后备存储器109可包括存储器存储装置,例如内部存储器存储装置、外部存储器存储装置、外围存储器存储装置、远程存储器存储装置、网络附接存储(NAS)装置,等等。
自适应高速缓存110可从请求器101接收关于后备存储器109的请求111。请求器101可为处理器、主机、客户端、计算装置、通信装置(例如,智能手机)、个人数字助理(PDA)、平板电脑、物联网(IoT)装置、相机、存储卡读取器、数字显示器、个人计算机、服务器计算机、数据管理系统、数据库管理系统(DBMS)、嵌入式系统、单片系统(SoC)装置等等。请求器101可包含系统主板及/或背板并且可包含处理资源(例如,一或多个处理器、微处理器、控制电路系统等等)。
在图1-1中所说明的实例环境100-11中,自适应高速缓存110可由及/或通过互连件105耦合到请求器101。如本文中所使用,“耦合到”通常是指组件之间的连接,所述连接可为间接通信连接(例如,借助中间组件)或直接通信连接(例如,无需中间组件),无论有线还是无线的,包含例如电、光学、磁性等连接。例如互连件105的互连件的实例包含但不限于总线、信号线、信号迹线、CPU/存储器互连件、存储器总线、存储总线、外围总线、存储器互连件、存储互连件、外围互连件、背板、系统总线、前端总线、后端总线、高级图形端口(AGP)总线、外围总线、外围组件互连(PCI)互连件、快速PCI(PCIe)总线、串行先进技术总线附属(SATA)互连件、通用串行总线(USB)、光纤通道、串行连接SCSI(SAS)、网络、片上网络(NoC)互连件、网状网络等等。互连件105可提供在请求器101与其它组件(例如,后备存储器109、自适应高速缓存110等等)之间传递控制、地址、数据及/或其它信号。如在图1-1中所说明,自适应高速缓存110可由及/或通过互连件105耦合到后备存储器109。替代地或另外,自适应高速缓存110可通过其它互连件、接口、总线等等耦合到请求器101及/或后备存储器109。在一些方面中,自适应高速缓存110可插置在请求器101与后备存储器109之间。
高速缓存存储器120可由高速缓存硬件提供及/或体现,其可包含但不限于:半导体集成电路系统、存储器胞元、存储器阵列、存储器存储体、存储器芯片等等。高速缓存存储器120可提供、体现及/或实施多个高速缓存行122。高速缓存行122的配置(例如,高速缓存行122的大小、长度及/或容量)可根据高速缓存硬件的设计及/或配置是固定的,并且如此高速缓存行122可被称为原生、固定、固定大小、固定长度、固定容量、物理或硬件高速缓存行122。在一些方面中,高速缓存存储器120包含存储器阵列。存储器阵列可经配置为多个硬件高速缓存行122。存储器阵列可为存储器胞元的集合(例如,网格),其中每一存储器胞元经配置以存储至少一位数字数据。高速缓存存储器120(及/或存储器阵列)可形成在例如硅、锗、硅锗合金、砷化镓、氮化镓等的半导体衬底上。在一些状况下,衬底为半导体晶片。在其它状况下,衬底可为绝缘体上硅(SOI)衬底,例如玻璃上硅(SOG)或蓝宝石上硅(SOP),或另一衬底上的半导体材料的外延层。可通过使用各种化学物质(包含但不限于磷、硼或砷)掺杂来控制衬底或衬底的子区域的导电性。可在衬底的初始形成或生长期间通过离子植入或通过任何其它掺杂手段执行掺杂。然而,本公开在这方面不受限制,并且可经调适以并入任何合适类型的存储器、存储器阵列、高速缓存存储器120及/或硬件高速缓存行122。
自适应高速缓存110可包含控制器112,其经配置以由硬件高速缓存行122形成自适应高速缓存行132。自适应高速缓存行132可根据可编程高速缓存行参数114进行配置。高速缓存行参数114可规定由硬件高速缓存行122形成的自适应高速缓存行132的大小、长度及/或容量。自适应高速缓存行132可响应于高速缓存行参数114重新配置。因此,自适应高速缓存行132可被称为可配置高速缓存行、可配置硬件高速缓存行、自适应硬件高速缓存行、虚拟硬件高速缓存行等等。控制器112可由逻辑提供、实施及/或实现,逻辑可包含但不限于:电路系统、逻辑电路系统、控制电路系统、接口电路系统、输入/输出(I/O)电路系统、熔断逻辑、模拟电路系统、数字电路系统、逻辑门、寄存器、开关、多路复用器、算术逻辑单元(ALU)、状态机、微处理器、存储器内嵌处理器(PIM)电路系统等等。如本文中所公开,逻辑可经配置为自适应高速缓存110的控制器112。
高速缓存行参数114可维持在任何合适的存储器存储装置中,包含但不限于:存储器存储电路系统(例如,触发器电路系统、存储器存储单元等等)、寄存器、缓冲器、ROM、电可擦除可编程ROM(EEPROM)、固件等等。在一些方面中,高速缓存行参数114维持在自适应高速缓存110的存储器存储资源内。在其它方面中,高速缓存行参数114可维持在外部存储器存储资源中(在图1-1中未示出以避免模糊所说明实例环境的细节)。高速缓存行参数114可由请求器101或其它实体设置(例如,可响应于命令、指令、消息及/或其它配置方式而编程)。替代地或另外,高速缓存行参数114可由自适应高速缓存110的控制器112设置及/或调整(例如,可基于自适应高速缓存110上的工作负荷来设置及/或调整)。
自适应高速缓存110可经配置以识别关于互连件105上的后备存储器109的请求111(例如,通过监视、过滤、嗅探、提取、拦截及/或以其它方式识别互连件105上的请求111)。自适应高速缓存110可进一步经配置以通过使用高速缓存存储器120来服务所识别的请求111。服务请求111可包含执行高速缓存传送操作(高速缓存传送119)。如本文中所使用,高速缓存传送119是指涉及在后备存储器109与自适应高速缓存110之间传送数据的操作。高速缓存传送119可包含将数据传送到高速缓存存储器120的相应自适应高速缓存行132及/或从自适应高速缓存行传送数据的操作,例如将后备存储器109的数据加载到相应自适应高速缓存行132中的操作(例如,响应于高速缓存未命中)、将数据从相应自适应高速缓存行132写入到后备存储器109(例如,在回写、直写、取消暂存及/或刷新操作中),等等。因此,由自适应高速缓存110实施的高速缓存传送119的粒度(例如,相应高速缓存传送119中涉及的数据量)可由自适应高速缓存行132的配置(根据自适应高速缓存110的可编程高速缓存行参数114)确定。
在一些方面中,可编程高速缓存行参数114包含自适应高速缓存行132的目标粒度;例如,目标自适应粒度(GA)。自适应粒度(GA)可规定自适应高速缓存110的控制器112形成及/或管理的自适应高速缓存行132的大小、长度及/或容量。因此,自适应粒度(GA)可规定及/或确定自适应高速缓存行132的容量(CACL)。自适应粒度(GA)可对应于高速缓存硬件的粒度;例如,硬件高速缓存行122的粒度,所述粒度可被称为自适应高速缓存110的原生、固定、固定大小、固定长度、固定容量、物理或硬件粒度(GH)。在一些方面中,硬件粒度(GH)可等同于高速缓存存储器120的硬件高速缓存行容量(CHCL)(例如,硬件高速缓存行122的原生、固定、固定大小、固定长度、固定容量、物理或硬件容量)。在其它方面中,硬件粒度(GH)可与硬件高速缓存行容量(CHCL)成比例。通过非限制性实例的方式,控制器112可经配置以实施扇区划分方案,其中相应硬件高速缓存行122被划分为多个扇区(图1-1中未展示)。控制器112可经配置以在硬件高速缓存行122的相应扇区内高速缓存后备存储器109的数据(例如,在逐个扇区的基础上将数据传送往/返高速缓存存储器120)。在这些方面中,自适应高速缓存110的硬件粒度(GH)可表达为
Figure BDA0003866019720000081
Figure BDA0003866019720000082
其中SH是自适应高速缓存110的相应硬件高速缓存行122被划分成的扇区的数目。
在一些方面中,高速缓存行参数114的自适应粒度(GA)可根据硬件粒度(GH)或硬件高速缓存行容量(CHCL)来表达。自适应粒度(GA)可表达为GA=V·GH
Figure BDA0003866019720000083
其中V是合适的高速缓存行粒度比。可编程高速缓存行参数114可为自适应高速缓存110规定粒度缩放因子(V),其可确定将由控制器112形成及/或管理的自适应高速缓存行132的配置,例如通过确定如本文中所公开的,自适应高速缓存行132的粒度(GA)、自适应高速缓存行132的容量(CACL)、高速缓存传送119的粒度(GT)等等。高速缓存行参数114可确定自适应高速缓存行132的分组及/或聚合方案,例如通过确定硬件高速缓存行122及/或其扇区的数量来包含在相应自适应高速缓存行132中。在一些方面中,包含在相应自适应高速缓存行132中的硬件高速缓存行122(或扇区)的数量可表达为
Figure BDA0003866019720000084
Figure BDA0003866019720000085
Figure BDA0003866019720000086
其中R是规定将包含在由控制器112形成及/或管理的相应自适应高速缓存行132中的硬件高速缓存行122(或其扇区)的数量的高速缓存行聚合比率(且其可由高速缓存行参数114规定及/或从其导出)。
如本文中所公开,高速缓存行参数114可通过自适应高速缓存行132的目标粒度(GA)、自适应高速缓存行132的目标容量(CACL)、高速缓存行聚合比率(聚合比率,R)等等中的一或多个来规定自适应高速缓存行132的配置。高速缓存行参数114可进一步经配置以规定及/或确定后备存储器109与自适应高速缓存110之间的高速缓存传送119的粒度及/或容量。高速缓存传送119的粒度可等同于自适应高速缓存行132(CACL)的粒度(GA),且相应高速缓存传送119中涉及的数据量(CT)可等同于自适应高速缓存行容量(CACL)及/或其倍数。因此,为自适应高速缓存行132规定的自适应高速缓存行容量(CACL)可确定高速缓存传送119的粒度(例如,可确定在相应高速缓存传送119中传送的最小数据量)。由于数据被传送到相应自适应高速缓存行132中,因此为自适应高速缓存行132所规定的CACL可确定响应于高速缓存未命中的加载到高速缓存中的数据量(及/或地址106的范围)(例如,在相应高速缓存传送119中从后备存储器109检索的数据的数量)。因此,高速缓存行参数114可确定、规定、管理及/或以其它方式控制自适应高速缓存110的高速缓存行预取。
在一些方面中,可编程高速缓存行参数114可根据自适应高速缓存110上的工作负荷来配置。在一个方面中,可编程高速缓存行参数114可经调适以配置自适应高速缓存110以高效地服务顺序工作负荷,这可包含对高速缓存行参数114进行编程以规定相对较大的自适应高速缓存行容量(CACL)、粒度(GA)、聚合比率(R)等等,以使控制器112形成及/或管理长的、大的及/或高容量的自适应高速缓存行132。此增加了自适应高速缓存110的高速缓存行预取程度,这可导致在顺序工作负荷下的性能提高(例如,降低高速缓存未命中率)。在另一方面中,可编程高速缓存行参数114可经调适以配置自适应高速缓存110以高效地服务非顺序工作负荷,此可包含对高速缓存行参数114进行编程以规定相对较小的自适应高速缓存行容量(CACL)、粒度(GA)、聚合比率(R)等等,以使控制器112形成及/或管理短的、小的及/或低容量的自适应高速缓存行132。此降低自适应高速缓存110的高速缓存行预取程度,这可导致在非顺序工作负荷下的性能提高(例如,防止带宽浪费及低价值数据的准入)。如上文所公开,在一些方面中,可响应于命令、指令、消息及/或其它配置方式(例如,响应于通过自适应高速缓存110的互连件105及/或其它接口接收到的信息)对高速缓存行参数114进行编程。替代地或另外地,高速缓存行参数114可由控制器112设置及/或调整(例如,响应于自适应高速缓存110上的工作负荷或预测的工作负荷)。
图1到2说明另一实例环境100-12,在所述环境中可操作本文档中所描述的各种技术及装置。如所说明,主机102可包含存储器存储系统150及/或尤其通过第一互连件105-1耦合到所述存储器存储系统。如本文中所公开的,主机102可对应于客户端或请求器101。存储器存储系统150可包含存储器装置152,所述存储器装置经配置以存储与相应地址106相关联的数据单元104(将可寻址数据单元104存储在物理存储器存储位置108内)。存储器存储系统150可进一步包含自适应高速缓存110,所述自适应高速缓存经配置以高速缓存存储器装置152的数据,如本文中所公开。因此,存储器装置152可为自适应高速缓存110的后备存储器109。自适应高速缓存110可包含控制器112,其经配置以由自适应高速缓存110的硬件高速缓存行122形成自适应高速缓存行132。图1-1中描绘的这些方面在图1-2到1-8中未展示,以避免模糊所说明实例环境的细节。
自适应高速缓存110可通过第二互连件105-2耦合到后备存储器109(存储器装置152)。在一些方面中,第二互连件105-2可为与第一互连件105-1分离及/或独立(例如,第二互连件105-2可由存储器存储系统150的内部互连件来实现)。自适应高速缓存110可通过第一互连件105-1接收关于存储器存储系统150的地址106的请求111,并且可通过第二互连件105-2在后备存储器109(存储器装置152)与相应自适应高速缓存行132之间执行高速缓存传送119。因此,第一互连件105-1可被称为自适应高速缓存110的前端互连件105-1,且第二互连件105-2可被称为自适应高速缓存110的后端互连件105-2。如在图1-2中所说明,自适应高速缓存110可插置在请求器101(主机102)与后备存储器109(存储器装置152)之间。替代地,自适应高速缓存110可通过相同的互连件(例如,通过如在图1-1的实例环境100-11中的互连件105)耦合到请求器101(主机102)及后备存储器109(存储器装置152)。如在图1-3的实例环境100-13中所说明,存储器存储系统150的存储器装置152可包含易失性存储器,例如RAM 154(例如,DRAM)。替代地或另外,存储器存储系统150的存储器装置152可包含非易失性(NV)存储器156,例如快闪存储器、固态存储器装置(SSD)等等,如在图1-4的实例环境100-14中所说明。
在图1-5的实例环境100-15中,自适应高速缓存110经配置以服务关于主存储器162的请求111(例如,自适应高速缓存110的后备存储器109可包含计算系统的主存储器162)。请求111可由一或多个请求器101(例如处理器103)生成。如本文中所公开,自适应高速缓存110可通过第一互连件105-1耦合到处理器103(请求器101)及主存储器162(后备存储器109)。自适应高速缓存110可经配置以高速缓存从处理器103的内部高速缓存(例如L3高速缓存)逐出的数据。在一些方面中,自适应高速缓存110与处理器103分离及/或在其外部(例如,由分离的半导体电路系统、芯片、封装等等体现)。替代地,自适应高速缓存110可通过处理器103的内部高速缓存及/或高速缓存层来实现(例如,处理器103及自适应高速缓存110可在相同的衬底、芯片、平面、封装、结构等等上实施及/或体现)。在一些方面中,且如在图1-5中所说明,处理器103(请求器101)、自适应高速缓存110及主存储器162(后备存储器109)可耦合到相同的互连件(耦合到第一互连件105-1)。自适应高速缓存110可经配置以拦截指向第一互连件105-1上的后备存储器109的请求111。拦截请求111可包含识别关于后备存储器109的请求111;例如,监视、过滤、嗅探、拦截及/或以其它方式识别第一互连件105-1上关于与主存储器162相关联的地址106(例如,主存储器162的地址及/或名称空间内的地址106)的请求111。拦截可进一步包含忽略关于耦合到第一互连件105-1的其它组件的流量(例如,忽略关于主存储器162的地址及/或名称空间之外的地址106的请求)。如上文所公开,自适应高速缓存110可进一步经配置以服务请求111,这可包含但不限于:响应于高速缓存未命中从后备存储器109(主存储器162)填充相应自适应高速缓存行132(例如,执行高速缓存传送119以将数据加载到相应自适应高速缓存行132),响应于高速缓存命中存取在自适应高速缓存行132内高速缓存的数据,将相应自适应行132写入到后备存储器109(主存储器162),等等。因此,服务请求111可包含以对应于由控制器112根据自适应高速缓存110的可编程高速缓存行参数形成及/或管理的自适应高速缓存行132的粒度(GA)及/或容量(CACL)的粒度执行高速缓存传送119。
如在图1-5中所说明,自适应高速缓存110、请求器101(处理器103)及后备存储器109(主存储器162)可耦合到共用物理互连件(例如,第一互连件105-1)。在其它方面中,并且如图1-6的实例100-16中所说明,自适应高速缓存110可插置在请求器101(处理器103)与后备存储器109(主存储器162)之间。自适应高速缓存110可通过第一或前端互连件105-1耦合到请求器101(处理器103),并且可通过第二或后端互连件105-2耦合到后备存储器109(主存储器162)。自适应高速缓存110可通过前端互连件105-1接收关于后备存储器109(主存储器162)的请求111,并且可通过后端互连件105-2执行高速缓存传送119。
在一些方面中,自适应高速缓存110可包含、耦合到及/或安置在存储器及/或高速缓存层次结构的一或多个层之间。如在图1-7的实例环境100-17中所说明,自适应高速缓存110可耦合在高速缓存层LX(LX高速缓存171)与主存储器162之间。自适应高速缓存110可通过前端互连件105-1耦合到LX高速缓存171并且可通过后端互连件105-2耦合到主存储器162。LX高速缓存171可为请求者101,且主存储器162可为自适应高速缓存110的后备存储器109。在一个方面中,LX高速缓存171是处理器103的内部高速缓存层(例如,处理器103的L3高速缓存)。在另一方面中,LX高速缓存171可为外部高速缓存层(例如,可由单独的集成电路或芯片实施及/或体现)。在又一方面中,LX高速缓存171及自适应高速缓存110可为处理器103的内部高速缓存层。
如图1-8的实例环境100-18所说明,自适应高速缓存110可部署在高速缓存层之间。自适应高速缓存110可通过前端互连件105-1耦合到高速缓存层X(LX高速缓存171)并且可通过后端互连件105-2耦合到高速缓存层Y(LY高速缓存173),所述后端互连件可耦合到主存储器162及/或其它存储器存储装置。在图1-8中,LX高速缓存171是客户端或请求者101,且LY高速缓存173是自适应高速缓存110的后备存储器109。因此,自适应高速缓存110可经配置以高速缓存从LX高速缓存171逐出的数据,并且LY高速缓存173可经配置以高速缓存从自适应高速缓存110逐出的数据。
自适应高速缓存的实例方案、技术及硬件
图2说明在图1-1到1-8中的一或多个中所说明的自适应高速缓存110的实例操作实施方案。自适应高速缓存110的控制器112可耦合到前端互连件105-1及/或后端互连件105-2。控制器112可从请求器101(例如客户端、计算装置、计算系统、主机102、处理器103、高速缓存层(例如,LX高速缓存171)等等)接收关于后备存储器109的数据的请求111。可通过前端互连件105-1接收请求111。控制器112可通过后端互连件105-2耦合到后备存储器109。后备存储器109可包含任何合适的存储器存储装置,包含但不限于:存储器装置、存储器媒体、存储器存储系统150、存储器装置152、RAM 154、NV存储器156、主存储器162、高速缓存层(例如,LY高速缓存层173)、存储器存储装置、内部存储器存储装置、外部存储器存储装置、远程存储器存储装置、NAS装置等等。在一些方面中,前端互连件105-1及后端互连件105-2包含及/或对应于相同的互连件(例如,控制器112可通过相同互连件耦合到请求器101及后备存储器109)。在其它方面中,且如在图2中所说明,控制器112可通过分离的互连件(分别通过前端互连件105-a及后端互连件105-2)耦合到请求器101及后备存储器109。
如在本文中所公开的,控制器112可经配置以形成及/或管理自适应高速缓存行132。自适应高速缓存行132可由原生、固定、固定大小、固定长度、固定容量、物理或硬件高速缓存行122形成,其可在高速缓存硬件中提供、实施及/或体现,如本文中所公开。在图2的实例中,高速缓存存储器120包含X个固定容量的硬件高速缓存行122(硬件高速缓存行122A-X)。硬件高速缓存行122可包含及/或与相应硬件高速缓存行(HCL)标签124(HCL标签124A-X)相关联,其可经配置以尤其识别高速缓存在相应硬件高速缓存行122内的数据。HCL标签124可包含地址106的与高速缓存在相应硬件高速缓存行122内的数据相关联的部分(例如,可保存地址106的标签位及/或标签区域224)。硬件高速缓存行122可进一步包含及/或耦合到硬件高速缓存行(HCL)元数据123(HCL元数据123A-X),其可包含关于高速缓存在其中的数据的元数据,包含但不限于:有效性标志(以指示硬件高速缓存行122是否保存有效数据)、已更改标志(以指示存储在硬件高速缓存行122内的数据是否已更改)等等。硬件高速缓存行122可具有固定配置,例如固定粒度(GH)、容量(CHCL)、组关联性等等(根据高速缓存硬件的设计及/或配置),如本文中所公开。在图2的实例中,硬件高速缓存行122是非扇区的,使得GH=CHCL(SH=1)。
自适应高速缓存110的控制器112可包含及/或耦合到高速缓存行管理器212。高速缓存行管理器212可耦合到高速缓存存储器120(例如,可耦合到硬件高速缓存行122)。高速缓存行管理器212可经配置以由硬件高速缓存行122形成自适应高速缓存行132、在相应自适应高速缓存行132内高速缓存数据等等。自适应高速缓存行132可包含及/或与自适应高速缓存行(ACL)标签134相关联。ACL标签134可由对应硬件高速缓存行122的HCL标签124形成。自适应高速缓存行132可进一步包含自适应高速缓存行(ACL)容量232(CACL),其可对应于对应硬件高速缓存行122的数据存储容量。自适应高速缓存行132的配置,例如自适应高速缓存行132的ACL容量232(CACL),可由高速缓存行参数114确定,如本文中所公开的(例如,基于所规定的聚合比率(R)等等)。在图2的非扇区实例中,高速缓存行管理器212可经配置以形成L个自适应高速缓存行132,其中
Figure BDA0003866019720000131
每一自适应高速缓存行132可包含相应的一组R个硬件高速缓存行122。ACL标签134可包含及/或对应于R个硬件高速缓存行122中的一或多个的HCL标签124,并且ACL容量232(CACL)可包含及/或对应于R硬件高速缓存行122的组合硬件高速缓存行容量(CHCL)。此外,ACL元数据133可包含及/或对应于R个硬件高速缓存行122中的一或多个的HCL元数据123。
形成自适应高速缓存行132可包含根据高速缓存行参数114组合硬件高速缓存行122。自适应高速缓存行132可经配置以具有所规定ACL容量232(CACL,其中CACL>CHCL。自适应高速缓存行132可通过组合多组硬件高速缓存行122来形成,每一组包括R个硬件高速缓存行122。将硬件高速缓存行122组合到自适应高速缓存行132中可进一步包含将硬件高速缓存行122中的一个的HCL标签124指定为自适应高速缓存行132的ACL标签134,这可包含禁用、停用及/或以其它方式忽略组中其它硬件高速缓存行122的HCL标签124。替代地或另外,HCL标签124可被链接(例如,设置为相同的标签值)。组合可进一步包含使用硬件高速缓存行122中的一个的HCL元数据123作为自适应高速缓存行132的ACL元数据133,这可包含禁用、停用及/或以其它方式忽略其它硬件高速缓存行122的ACL元数据133。组合硬件高速缓存行122可包含由多个硬件高速缓存行122形成ACL容量232(例如,组合多个硬件高速缓存行122的数据存储容量)。组合硬件高速缓存行122可包含将硬件高速缓存行122聚合、链接及/或以其它方式分组到自适应高速缓存行132中(例如,从硬件高速缓存行122的CHCL组合、聚合、链接及/或以其它方式形成ACL容量232)。组合硬件高速缓存行122可包含将多个硬件高速缓存行122与相同的ACL标签134(例如,多个HCL标签124中选定一个)相关联,通过互连件、接口、路由、可操作地耦合硬件高速缓存行122,及/或将控制器112耦合到高速缓存存储器120的其它电路系统,等等。
在一些方面中,控制器112(或高速缓存行管理器212)包含及/或耦合到高速缓存接口逻辑(高速缓存接口214),其可经配置以由硬件高速缓存行122形成自适应高速缓存行132,如本文中所公开。高速缓存接口214可进一步经配置以由能够被独立及/或并行存取的硬件高速缓存行122形成相应自适应高速缓存行132。高速缓存接口214可经配置以组合体现在高速缓存存储器120的不同及/或独立部分中的硬件高速缓存行122,这可包含将硬件高速缓存行122组合在不同及/或独立的芯片、平面、存储体、组、阵列、行、列等等内。在一些方面中,硬件高速缓存行122可横跨行排列(例如,布置成行或组,每一个对应于相应存储体)。当高速缓存行参数114规定小于或等于硬件高速缓存行大小(CHCL)的自适应高速缓存行大小(CACL)时,高速缓存接口214可将自适应高速缓存行132横跨相应的数行或数组硬件高速缓存行122交错。当高速缓存行参数114规定大于硬件高速缓存行大小(CHCL)的自适应高速缓存行大小(CACL)时,高速缓存接口214可组合来自多个不同组(行或组)的硬件高速缓冲线122。高速缓存接口214可经配置以至少部分并行地存取对应于硬件高速缓存行122的ACL容量232。高速缓存行参数114可规定聚合比率(R),其是2的幂倍数(将CACH规定为CHCL的2的幂倍数),并且高速缓存接口214可由位于相应R行或组内的硬件高速缓存行122形成自适应高速缓存行132,这可使得高速缓存接口214能够至少部分并行地(横跨R行或组硬件高速缓存行122)存取自适应高速缓存行132的ACL容量232。在一些方面中,高速缓存接口214经配置以至少部分并行地提供对自适应高速缓存行132的ACL容量232的存取。高速缓存接口214可经配置以至少部分并行地存取自适应高速缓存行132的多个硬件高速缓存行122。替代地,高速缓存接口214可顺序存取自适应高速缓存行132的ACL容量232(例如,可顺序存取包括相应自适应高速缓存行132的硬件高速缓存行122)。高速缓存接口214可由逻辑提供、实施及/或实现,逻辑可包含但不限于:电路系统、逻辑电路系统、接口电路系统、接口控制电路系统、I/O电路系统、熔丝逻辑、模拟电路系统、数字电路系统、逻辑门、寄存器、开关、多路复用器、ALU、状态机、微处理器、PIM电路系统等等。如本文中所公开,逻辑可经配置为自适应高速缓存110的高速缓存接口214。
高速缓存行管理器212可进一步经配置以确定所规定地址106是否已被加载到高速缓存存储器120的自适应高速缓存行132中,这可包含识别与所规定地址106(如果有的话)相关联的自适应高速缓存行132。确定自适应高速缓存行132是否保存对应于所规定地址106的数据可包含将自适应高速缓存行132的ACL标签134与所规定地址106的标签区域224进行比较(及/或评估自适应高速缓存行132的ACL元数据133,例如有效性标志等等)。
图2的实例200-1说明自适应高速缓存110的操作实施方案,所述自适应高速缓存在规定聚合比率(R)为1的高速缓存行参数114下具有非扇区硬件高速缓存行122(其中SH=1且GH=CHCL)。如所说明,高速缓存行管理器212可包含及/或耦合到接口逻辑(高速缓存接口214),所述接口逻辑经配置以尤其通过聚集、组合及/或分组相应硬件高速缓存行122来形成自适应高速缓存行132,如本文中所公开。响应于由高速缓存行参数114规定的聚合比率(R)为1,高速缓存接口214经配置以形成L个自适应高速缓存行132,其中每一自适应高速缓存行132由X个硬件高速缓存行122中的相应一个形成,使得L=X(其中SH=1且GH=CHCL)并且相应自适应高速缓存行132的ACL容量232(CACL)对应于相应硬件高速缓存行122(CHCL)的容量。
高速缓存行管理器212可进一步包含及/或耦合到比较逻辑216,所述比较逻辑可经配置以将地址106与相应自适应高速缓存行132进行比较。比较逻辑216可经配置以通过将自适应高速缓存行132的ACL标签134与所规定地址106的标签区域224进行比较来确定选定的自适应高速缓存行132是否保存对应于所规定地址106的数据。在实例200-1(其中R=1)中,ACL标签134可由相应硬件高速缓存行122的HCL标签124形成。比较逻辑216可进一步经配置以评估自适应高速缓存行132的ACL元数据133(例如,评估有效标志、已更改标志等等)。在实例200-1(其中R=1)中,ACL元数据133可由相应硬件高速缓存行122的HCL元数据123形成。
图2的实例200-2说明自适应高速缓存110的操作实施方案,所述自适应高速缓存在规定聚合比率(R)为2的高速缓存行参数114下具有非扇区硬件高速缓存行122(其中SH=1且GH=CHCL)。在实例200-2中,高速缓存接口214经配置以由X个硬件高速缓存行122形成L个自适应高速缓存行132,其中
Figure BDA0003866019720000151
并且相应自适应高速缓存行132的自适应高速缓存存储器232(CACL)是2·CHCL。相应自适应高速缓存行132的ACL标签134可通过对应硬件高速缓存行122中的一个的HCL标签124(包括自适应高速缓存行132的两个硬件高速缓存行122的HCL标签124中的一个)来实现。因此,将自适应高速缓存行132与所规定地址106进行比较可涉及单个标签比较,这与将所规定地址106与包括自适应高速缓存行132的两个硬件高速缓存行122中的每一个进行比较所需的两个标签比较相反。因此,除了尤其由于增加的高速缓存行预取而导致的增加高速缓存命中率所引起的在顺序负荷下的改进性能之外,自适应高速缓存行132的使用可减少高速缓存行寻址的等待时间及/或功耗。
图2的实例200-3说明具有非扇区硬件高速缓存行122(其中SH=1且GH=CHCL)的自适应高速缓存110的进一步操作实施方案。在实例200-3中,高速缓存行参数114规定大于二的聚合比率(R)(例如,
Figure BDA0003866019720000161
在实例200-3中,高速缓存接口214经配置以由X个硬件高速缓存行122形成L个自适应高速缓存行132,其中
Figure BDA0003866019720000162
此处,每一自适应高速缓存行132具有R·CHCL的自适应高速缓存存储器232(CACL),ACL标签134对应于R个硬件高速缓存行122中的一个的HCL标签124,并且ACL元数据133对应于R高速缓存行122中的一个的HCL元数据123。因此,将自适应高速缓存行132与所规定地址106进行比较可涉及单个标签比较,这与将所规定地址106与包括自适应高速缓存行132的R个硬件高速缓存行122中的每一个进行比较所需的R个标签比较相反。因此,除了尤其由于加高速缓存行预取的进一步增而导致的增加高速缓存命中率所引起的在顺序负荷下的进一步改进性能之外,实例200-3中的自适应高速缓存行132的使用可进一步减少高速缓存行寻址的等待时间及/或功耗。
如在图2中所说明,存储在自适应高速缓存110内的数据的地址106可划分为标签区域224、设置区域226及偏移区域228。组区域226可用于将地址106映射到相应高速缓存行组(在图2中未示出以避免模糊所说明实例的细节)。包含在组区域226中的位的数量可对应于地址106被映射到相应组的方案;例如,SI=SB mod Cs,其中SB是地址106的设置区域226,且CS是高速缓存行组的数量,其中SI是地址106的高速缓存行组的索引。然而,本公开在这方面不受限制,并且可使用任何合适的组关联技术(例如,散列等等)。偏移区域228可对应于自适应高速缓存110的数据粒度。更具体地,偏移区域228可对应于能够被高速缓存在相应自适应高速缓存行132内的多个可寻址数据单元104(或多个地址106)。这可由例如
Figure BDA0003866019720000163
表示,其中OB是包含在偏移区域228中的位数,且AG是待存储在自适应高速缓存行132内的数据单元104的地址粒度(例如,与相应地址106相关联的数据单元104的大小、长度及/或数量)。
高速缓存行管理器212可经配置以根据自适应高速缓存110的高速缓存行参数114(例如,根据自适应高速缓存行132的ACL容量232(CACL))调适地址106的区域。表1说明适用于相应高速缓存行参数114的地址位计数;例如,相应聚合比率(R)。地址106可包含25个位。为简单起见,在表1实例中,地址粒度(AG)假定为32B,并且每一硬件高速缓存行122能够高速缓存两个32字节数据单元104(GH=CHCL=64B):
114{R} 1 2 4 8 16
C<sub>ACL</sub> 64B 128B 256B 512B 1024B
228(O<sub>B</sub>) 1 2 3 4 5
226(S<sub>B</sub>) 12 11 10 9 8
224(标签) 12 12 12 12 12
表1:SH=1,AG=32B,CHCL=64B,25位地址
图3说明如本文中所公开的自适应高速缓存110的进一步实例操作实施方案。自适应高速缓存110的控制器112可经配置以接收关于后备存储器109的请求111并通过使用高速缓存存储器120来服务所述请求。在一些方面中,控制器112可接收请求111并在同一互连件上执行高速缓存传送119。然而,在图3实例中,高速缓存控制器112包含经配置以将自适应高速缓存110耦合到第一或前端互连件105-1的前端接口313及经配置以将自适应高速缓存110耦合到第二或后端互连件105-2的后端接口315。控制器112可接收及/或拦截关于前端互连件105-1上的后备存储器109的请求111。请求111可通过使用地址及/或名称空间的地址106来引用后备存储器109的数据。如本文中所公开,后端接口315可经配置以在自适应高速缓存110与后备存储器109之间执行高速缓存传送119。
高速缓存存储器120可包含多个硬件高速缓存行122。硬件高速缓存行122可包含相应HCL标签124、HCL元数据123等等(图3中未示出)及/或与其相关联。在一些方面中,HCL标签124可在与硬件高速缓存行122物理分离的结构上(例如,在不同的存储器阵列上)实施。标签及数据阵列可横跨行排列。在图3的实例中,硬件高速缓存行122被布置成多个组322(例如,被布置成M个组322A到322M)。如所说明,组322可包含相应多组N个硬件高速缓存行122;组322可为N路关联,每一组包括N个路径或N个硬件高速缓存行122(其中M·N=X,包括高速缓存存储器120的硬件高速缓存行122的数目)。硬件高速缓存行122可对应于相应组索引(IS);每一组322的N个硬件高速缓存行122可对应于相应组索引(IS)A到N(或0到N-1)。
如所说明,组322A包含硬件高速缓存行122A-A到122A-N,组322B包含硬件高速缓存行122B-A到122B-N,等等,其中组322M包括硬件高速缓存行122M-A到122M-N。组322可实施及/或体现在相应存储体或行中(硬件高速缓存行122可横跨相应组322排列)。高速缓存接口214可经配置以至少部分并行地存取多个组322。在一些方面中,高速缓存接口214可并行存取两个或多于两个不同组322内的硬件高速缓存行122。高速缓存接口214可进一步经配置以至少部分并行地存取对应的HCL标签124(例如,在其中HCL标签体现在单独的存储器结构内的实施方案中)。组322的配置可由高速缓存硬件的设计及/或配置来确定,并且如此可被称为原生、固定、固定大小、固定长度、固定容量、物理或硬件组322。
高速缓存行参数114可被编程以规定自适应高速缓存行132的目标容量(CACL)。高速缓存接口214可存取高速缓存行参数114并形成具有由此所规定的容量(CACL)的自适应高速缓存行132。高速缓存接口214可进一步经配置以将自适应高速缓存行132布置成自适应组332;形成自适应高速缓存行132可进一步包含形成自适应组332,每一组包括自适应高速缓存行132的相应组。自适应高速缓存行132及/或自适应组332的数目及/或配置可为高速缓存行参数114的函数。响应于规定CACL小于或等于硬件高速缓存行容量(CHCL)的高速缓存行参数114,高速缓存接口214可尤其通过横跨相应硬件组322(横跨相应行或存储体)交错组索引(IS)形成自适应高速缓存行132。在图3的实例中,高速缓存行参数114规定等效于CHCL(R=1)的CACL,并且自适应高速缓存行132由硬件高速缓存行122中的相应者形成(高速缓存接口214横跨相应硬件组322交错自适应高速缓存行132的组索引(IS)),并且自适应组332对应于相应硬件组322。
高速缓存行管理器可经配置以将地址106映射到自适应高速缓存行132。高速缓存接口214可使用地址106的组区域226的内容以各种方式选择自适应组332,并且比较逻辑216可将地址106的标签区域224的内容与选定自适应组332的相应自适应高速缓存行132的ACL标签134进行比较。匹配指示高速缓存命中,且不匹配指示高速缓存未命中。响应于高速缓存命中,可读取或写入匹配自适应高速缓存行132的ACL容量232(根据与地址106相关联的请求111)。响应于高速缓存未命中,可选择受害者自适应高速缓存行132进行替换(且如果已更改那么回写)。可根据合适的替换策略来选择受害者自适应高速缓存行132,例如先进先出(FIFO)、后进先出(LIFO)、最近最少使用(LRU)、时间感知LRU(TLRU)、最近最多使用(MRU)、最不经常使用(LFU)、随机替换等等。在通过后端接口315执行的高速缓存传送119中,可用从后备存储器109检索的数据填充选定的自适应高速缓存行132。高速缓存传送119可经配置以传送足以填充如由高速缓存行参数114所规定的自适应高速缓存行132的数据量(CACL)。
高速缓存接口214可响应于高速缓存行参数114重新配置自适应高速缓存行132(及/或自适应组332)。高速缓存接口214可响应于高速缓存行参数114规定大于硬件高速缓存行容量(CHCL)的自适应高速缓存行容量(CACL),通过组合多组硬件高速缓存行122来形成自适应高速缓存行132;例如,其中R>1。在一些方面中,高速缓存接口214经配置以将自适应高速缓存行132的CACL调整为CHCL的2的幂倍数(例如,其中R是1、2、4、8、16、32、64等等中的一个)。高速缓存接口214可根据例如组内方案、组间方案等等的选定方案对硬件高速缓存行122进行分组、组合及/或聚合。接下来参考图4描述实例组内方案,并且下文参考图5-1及5-2进一步描述实例组间方案。
根据组内方案形成自适应高速缓存行132可包含在相应硬件组322内组合硬件高速缓存行122(例如,通过组合相应硬件组322内的路径及禁用未使用的HCL标签124)。在此实施方案中,高速缓存接口214由M个硬件组322形成M个自适应组332,每一自适应组332包括
Figure BDA0003866019720000191
个路径(例如,
Figure BDA0003866019720000192
自适应高速缓存行132)。因此,组内方案可导致减少的组关联性。图4说明根据包括高速缓存数据硬件321及高速缓存标签硬件323的高速缓存存储器120内的组内方案形成的自适应高速缓存行132的实例。高速缓存数据硬件321可实现、提供及/或体现相应硬件高速缓存行122(及/或对应HCL元数据123,在图4中未示出以避免模糊所说明实例的细节)的数据存储容量。标签硬件323可实现、提供及/或体现硬件高速缓存行122的HCL标签124。
如所说明,高速缓存数据硬件321及高速缓存标签硬件323可实施为物理上分离的结构(例如,分离的存储器电路系统、阵列、平面、芯片、存储体等等)。高速缓存数据硬件321及/或高速缓存标签硬件323可横跨行(或组)排列。高速缓存数据硬件321可包含多个N路硬件组322(例如,硬件组322A-M,每一硬件组包括N个硬件高速缓存行122)并且标签硬件323可包含对应标签组324(例如,标签组324A-M,每一标签组包括N个HCL标签124)。在一些方面中,硬件组322A-M及/或标签组324A-M在相应存储体上实施。高速缓存接口214可经配置以至少部分并行(及/或并发)存取硬件组322A-M;例如,高速缓存接口214可经配置以并发存取两个或多于两个不同硬件组322中的每一个中的硬件高速缓存行122。高速缓存接口214可进一步经配置以至少部分并行(及/或并发)存取标签组324A-M;例如,高速缓存接口214可经配置以并发存取两个或多于两个不同标签组324中的每一个中的HCL标签124。
在实例400-1中,高速缓存接口214经配置以根据组内方案根据规定CACL=CHCL(R=1)的高速缓存行参数114形成自适应高速缓存行132。如所说明,高速缓存接口214由相应硬件高速缓存行122形成自适应高速缓存行132,每一自适应高速缓存行132包含硬件高速缓存行122中的相应一个,且每一ACL标签134包括HCL标签124中的相应一个。
在实例400-2中,高速缓存接口214经配置以根据组内方案根据规定CACL=2·CHCL(R=2)的高速缓存行参数114形成自适应高速缓存行132。如所说明,高速缓存接口214通过在相应硬件组322内组合硬件高速缓存行122(以及在相应标签组324内组合HCL标签124)来形成自适应高速缓存行132。在组内方案中,高速缓存接口214形成与硬件组322相同数目的自适应组332(例如,形成M个自适应组332A-M),但将自适应组332的关联性修改为F路关联而不是N路关联,其中
Figure BDA0003866019720000201
Figure BDA0003866019720000202
其中R=2。如在400-2中所说明,自适应高速缓存行132可由相应多组两个硬件高速缓存行122形成;自适应高速缓存行132A-A可包含硬件组322A的硬件高速缓存行122A-A及122A-B等等,其中自适应高速缓存行132M-F包括硬件组322M的硬件高速缓存行122M-M及122M-N。如本文中所公开,形成自适应高速缓存行132可包含可操作地组合多个硬件高速缓存行122(及/或HCL标签124)。形成自适应高速缓存行132可进一步包含尤其通过在相应标签组324内组合相应多组两个HCL标签124(根据组内方案)形成ACL标签134。如所说明,自适应高速缓存行132A-A的ACL标签134A-A可由包括标签组324A的HCL标签124A-A及124A-B的组形成,等等,其中自适应高速缓存行132M-F的ACL标签134M-F由包括标签组324M的HCL标签124M-M及124M-N的组形成。将一组HCL标签124组合到ACL标签134中可包含将HCL标签124中的一个指定为ACL标签134并且禁用、停用或以其它方式忽略所述组的其它HCL标签124。
在实例400-3中,高速缓存接口214经配置以根据组内方案根据规定CACL=4*CHCL(R=4)的高速缓存行参数114形成自适应高速缓存行132。如所说明,自适应高速缓存行132可由相应多组四个硬件高速缓存行122形成;自适应高速缓存行132A-A可包含硬件组322A的硬件高速缓存行122A-A到122A-D等等,其中自适应高速缓存行132M-F包括硬件组322M的硬件高速缓存行122M-K到122M-N。形成自适应高速缓存行132可进一步包含尤其通过在相应标签组324内组合相应多组四个HCL标签124(根据组内方案)形成ACL标签134。如所说明,自适应高速缓存行132A-A的ACL标签134A-A可由包括标签组324A的HCL标签124A-A到124A-D的组形成,等等,其中自适应高速缓存行132M-F的ACL标签134M-F由包括标签组324M的HCL标签124M-K到124M-N的组形成。因此,所得自适应组332的组关联性可减少四倍(F路关联,其中
Figure BDA0003866019720000203
Figure BDA0003866019720000204
尽管描述用于根据组内方案形成自适应高速缓存行132、ACL标签134及/或自适应组332的技术的特定实例(例如,其中R=1、2及4),但本公开在这方面不受限制并且可适于根据组内或其它硬件高速缓存行聚合方案支持任何合适的高速缓存行聚合因子R(及/或
Figure BDA0003866019720000205
的比率)。
根据组间方案形成自适应高速缓存行132可包含尤其通过以相同(或确定性)路径或组索引(IS)横跨多个硬件组322组合硬件高速缓存行122来形成自适应高速缓存行132。在此实施方案中,高速缓存接口214由M个硬件组322形成H个自适应组332,自适应组332具有与M个硬件组322相同的关联性(N向关联性),其中
Figure BDA0003866019720000211
Figure BDA0003866019720000212
在图5-1的实例500-1中,高速缓存接口214经配置以根据规定CACL=CHCL(R=1)的高速缓存行参数形成自适应高速缓存行132。因此,如在实例400-1中,高速缓存接口214可由相应硬件高速缓存行122形成自适应高速缓存行132,由相应HCL标签124形成ACL标签134,及由相应硬件组322形成自适应组332。
在图5-2的实例500-2中,高速缓存接口214经配置以根据组间方案根据规定CHCL=2·CHCL(R=2)的高速缓存行参数形成自适应高速缓存行132。如所说明,高速缓存接口214可由相应硬件组322内的多组硬件高速缓存行122形成自适应高速缓存行132。包括相应自适应高速缓存行132的硬件高速缓存行122可在相应硬件组322内处于相同的组索引(IS)或路径处(如在图5-2中所说明)。替代地,自适应高速缓存行132可由硬件高速缓存行122在相应硬件组322内的确定性组索引(IS)或路径(例如,可在确定的索引偏移处)形成。在实例500-2中,其中R=2,高速缓存接口214由两个不同硬件组322中的两个硬件高速缓存行122形成自适应高速缓存行132;自适应组332A的自适应高速缓存行132A-A包含硬件组322A的硬件高速缓存行122A-A及硬件组322B的硬件高速缓存行122B-A等等,其中自适应组332H的自适应高速缓存行132H-N包括硬件组322L的硬件高速缓存行122L-N及硬件组322M的硬件高速缓存行122M-N。高速缓存接口214可进一步经配置以形成对应于自适应高速缓存行132的ACL标签134。ACL标签134可由相应标签组324中的HCL标签124形成(根据组间方案的不同标签组324);自适应高速缓存行132A-A的ACL标签134A-A可由标签组324A的HCL标签124A-A及标签组324B的HCL标签124B-A形成,等等,其中ACL标签134H-N由标签组324L的HCL标签124L-N及标签组324M的HCL标签124M-N形成。尽管描述用于根据组间方案形成自适应高速缓存行132、ACL标签134及/或自适应组332的技术的特定实例(例如,其中R=1或2),但本公开在这方面不受限制并且可适于根据组间或其它硬件高速缓存行聚合方案支持任何合适的高速缓存行聚合因子R(及/或
Figure BDA0003866019720000213
的比率)。
图6-1说明如本文中所公开的自适应高速缓存110的进一步实例操作实施方案。在图6-1的实例中,高速缓存行参数114被编程以将自适应高速缓存行容量(CACL)设置为硬件高速缓存行容量(CHCL)的两倍,使得自适应高速缓存行比率(R)为2。作为响应,高速缓存行管理器212可配置高速缓存接口214以形成自适应高速缓存行132,每一自适应高速缓存行132包括两个硬件高速缓存行122。如本文中所公开,高速缓存接口214可经配置以根据组间方案形成自适应高速缓存行132(及/或自适应组332)。因此,且如图6-1实例中所说明,高速缓存接口214可横跨不同硬件组322组合硬件高速缓存行122,使得每一自适应高速缓存行132包含来自多个不同硬件组322中的每一个的硬件高速缓存行122(并且不包括同一硬件组322的多个硬件高速缓存行122)。包括相应自适应高速缓存行122的硬件高速缓存行122可在每一硬件组322内的相同组索引(IS)处(或在确定性偏移处)。对于其中R>1的高速缓存行参数114,高速缓存接口214可由M个硬件组322形成H个自适应组332,其可由
Figure BDA0003866019720000221
表示。
在图6-1实例中(对于
Figure BDA0003866019720000222
高速缓存接口214形成
Figure BDA0003866019720000223
个自适应组332,每一个包含N个自适应高速缓存行132。自适应组332A包含硬件组322A及322B,并且自适应组332A的路径(自适应高速缓存行132A-A到132A-N)包含硬件组322A及322B内的对应组索引(IS)处的硬件高速缓存行122。图6-1中突出显示的自适应高速缓存行132A-A(自适应组332A的路径A)包含硬件组322A的硬件高速缓存行122A-A及硬件组322B的硬件高速缓存行122B-A。自适应高速缓存行132A-B(自适应组332A的路径B)包含硬件组322A的硬件高速缓存行122A-B及硬件组322B的硬件高速缓存行122B-B,等等,其中自适应高速缓存行132A-N(自适应组332A的路径N)包括硬件组322A的硬件高速缓存行122A-N及硬件组322B的硬件高速缓存行122B-N。高速缓存接口214可以类似方式形成其它自适应组332;自适应组332H可包括自适应高速缓存行132H-A到132H-N,每一高速缓存行由硬件组322L及322M中的每一个内的相应路径处的硬件高速缓存行122形成(例如,自适应高速缓存行132H-A包括硬件高速缓存行122L-A及122M-A,自适应高速缓存行132H-B包括硬件高速缓存行122L-B及122M-B,等等,其中自适应高速缓存行132H-N包括硬件高速缓存行122L-N及122M-N)。自适应高速缓存行132H-N也在图6-1中突出显示以供参考。高速缓存接口214可进一步经配置以形成用于相应自适应高速缓存行132的ACL标签134,如本文中所公开(图6-1中未示出)。
在分离的、独立的结构(例如,分离的、独立的存储体)内从硬件高速缓存行122形成自适应高速缓存行132可使得高速缓存行管理器212能够改进数据存取性能。在图6-1的实例中,相应自适应高速缓存行132的ACL容量232可从相应硬件组322并行存取;自适应高速缓存行132A-A的ACL容量232可从硬件高速缓存行122A-A(硬件组322A)及硬件高速缓存行122B-A(硬件组322B)等等并行存取,其中自适应高速缓存行132M-N的ACL容量232为可从硬件高速缓存行122L-N(硬件组322L)及硬件高速缓存行122M-N(硬件组322M)并行存取。
在相应硬件组322内的确定性组索引(IS)处从硬件高速缓存行122形成自适应高速缓存行132可使得高速缓存行管理器212能够改进查找性能。由于相应自适应高速缓存行132的硬件高速缓存行122在相应硬件组322内处于相同(或确定性)组索引(IS),因此高速缓存行管理器212可使用单个标签比较(在自适应高速缓存行132中包含的硬件高速缓存行122的HCL标签124中的单个HCL标签与地址106的标签区域224之间的比较)将地址106匹配到自适应高速缓存行132。与匹配的HCL标签124相关联的硬件高速缓存行122的组索引(IS)可用于确定自适应高速缓存行132的其它硬件高速缓存行122中的每一个的组索引(IS)。高速缓存行管理器212的确定性组索引方案可将自适应高速缓存行查找操作中涉及的标签比较减少R倍(硬件高速缓存行122与自适应高速缓存行132的比率)。
图6-2说明如本文中所公开的自适应高速缓存110的进一步实例操作实施方案。在图6-2的实例中,高速缓存行参数114被编程以将自适应高速缓存行容量(CACL)设置为硬件高速缓存行容量(CHCL)的4倍,使得自适应高速缓存行比率(R)为4。作为响应,高速缓存行管理器212可配置高速缓存接口214以由相应多组4个硬件高速缓存行122形成自适应高速缓存行132。如在图6-2实例中说明,高速缓存接口214经配置以根据组间方案形成自适应高速缓存行132、自适应组332及/或ACL标签134。高速缓存接口214经配置以在每一硬件组322内的确定性组索引(IS)处(例如,以相同或确定性方式)横跨不同硬件组322组合硬件高速缓存行122。
在图6-2实例中(对于
Figure BDA0003866019720000231
高速缓存接口214形成
Figure BDA0003866019720000232
个自适应组332,每一个包含N个自适应高速缓存行132(N个路径)。自适应组332A包含硬件组322A-D,且自适应组332A的路径(自适应高速缓存行132A-A到132A-N)包含硬件组322A-D内对应组索引(IS)处的硬件高速缓存行122。在图6-2中突出显示的自适应高速缓存行132A-A(自适应组332A的路径A)分别包含硬件组322A到322D的硬件高速缓存行122A-A到122D-A。自适应高速缓存行132A-B(自适应组332A的路径B)包含硬件组322A到322D的硬件高速缓存行122B-A到122B-A到122B-D。此外,自适应高速缓存行132A-N(自适应组332A的路径N)包含硬件组322A到322D的硬件高速缓存行122A-N到122D-N。高速缓存接口214可以类似方式形成其它自适应组332;自适应组332H可包含自适应高速缓存行132H-A到132H-N,每一高速缓存行由硬件组322J到322M中的每一个内的对应路径处的硬件高速缓存行122形成(例如,自适应高速缓存行132H-A包含硬件高速缓存行122J-A及122M-A,自适应高速缓存行132H-B包含硬件高速缓存行122J-B到122M-B,等等,其中自适应高速缓存行132H-N包含硬件高速缓存行122J-N到122M-N)。图6-2中还突出显示自适应高速缓存行132H-N以供参考。
如在图6-1及6-2中所说明,存储在自适应高速缓存110内的数据的地址106可划分为标签区域224、设置区域226及偏移区域228。组区域226可用于将地址106映射到相应自适应组332。包含在组区域226中的位数目可对应于地址106被映射到相应自适应组332的方案;例如,SI=SB mod Cs,其中SB是地址106的组区域226,CS是自适应组332的数目(例如,H个自适应组332),并且SI是针对地址106的自适应组332的索引。然而,本公开在这方面不受限制,并且可使用任何合适的用于将地址106分布在自适应组332的技术(例如,散列等等)。偏移区域228可对应于自适应高速缓存110的数据粒度。更具体地说,偏移区域228可对应于能够被高速缓存在相应自适应高速缓存行132内的多个可寻址数据单元104(或多个地址106);例如,
Figure BDA0003866019720000241
其中OB是包含在偏移区域228中的位数,且AG是待存储在自适应高速缓存行132内的数据单元104的地址粒度(例如,与相应地址106相关联的数据单元104的大小、长度及/或数量)。
高速缓存行管理器212可经配置以根据自适应高速缓存110的高速缓存行参数114(例如,根据自适应高速缓存行132的ACL容量232(CACL))调适地址106的区域。高速缓存行管理器212可进一步经配置以并行存取自适应高速缓存行132的ACL容量232(CACL)。并行性可对应于由高速缓存接口214形成的自适应高速缓存行132(及/或自适应组332)跨越的多个硬件组322(或其它可独立存取的结构)。表2说明相应高速缓存行参数114的地址位计数及并行组存取;例如,对于包含25个位的地址106的相应高速缓存行聚合因子(R)、AG=32B及硬件高速缓存行容量CHCL=64B(每一硬件高速缓存行122能够高速缓存2个地址106):
114{R} 1 2 4 8 16
C<sub>ACL</sub> 64B 128B 256B 512B 1024B
228(O<sub>B</sub>) 1 2 3 4 5
226(S<sub>B</sub>) 12 11 10 9 8
224(标签) 12 12 12 12 12
平行组(s) 1 2 4 8 16
表2:SH=1,AG=32B,CHCL=64B,25-位地址,组间聚合
图7-1说明如本文中所公开的自适应高速缓存110的进一步实例操作实施方案。在图7-1实例中,硬件高速缓存行122被划分成两个硬件段422A及422B(在扇区方案中,其中S=2)。因此,硬件高速缓存行122的硬件粒度(GH)可不同于CHCL,使得
Figure BDA0003866019720000251
或GHCL=2·GH。高速缓存行管理器212可经配置以形成自适应高速缓存行132,所述自适应高速缓存行具有范围从
Figure BDA0003866019720000252
到CHCL的2的幂倍数的自适应高速缓存行容量(CACL)(其中S=2,根据硬件高速缓存行122的扇区化方案)。在图7-1实例中,高速缓存行参数114规定GH
Figure BDA0003866019720000253
的CACL,使得高速缓存行聚合比率(R)为
Figure BDA0003866019720000254
(每硬件高速缓存行122两个自适应高速缓存行132)。作为响应,高速缓存接口214可由硬件高速缓存行122的相应硬件扇区422形成自适应高速缓存行132。高速缓存接口214可形成双倍数目的自适应高速缓存行132作为硬件高速缓存行122。高速缓存接口214可进一步经配置以形成自适应组332,每一自适应组包含P个自适应高速缓存行132(例如,由N路硬件组322形成P路自适应组332,其中P=R·N或P=2·N,对于
Figure BDA0003866019720000255
如所说明,自适应高速缓存行132A-A(在图7-1中突出显示)可包含硬件高速缓存行122A-A的硬件扇区422A,自适应高速缓存行132A-B可包含硬件高速缓存行122A-A的硬件扇区422B,等等,其中自适应高速缓存行132H-P(也在图7-1中突出显示)包含硬件高速缓存行122M-N的硬件扇区422B。
高速缓存接口214可响应于高速缓存行参数114的改变重新配置自适应高速缓存行132、ACL标签134及/或自适应组332。在图7-2实例中,高速缓存行参数114经编程以规定CACL=4·GH或CACL=2·CHCL(R=2)。作为响应,高速缓存接口214可根据组间方案重新配置高速缓存存储器120。高速缓存接口214可形成H个自适应组332;自适应组332A可包含硬件组322A及332B,等等,其中自适应组332H包含硬件组322L及322M。高速缓存接口214可根据组间方案重新配置自适应高速缓存行132,使得每一自适应高速缓存行132包含两个硬件高速缓存行122的硬件扇区422(硬件高速缓存行122在两个不同硬件组322内的确定性索引处)。自适应高速缓存行132A-A(在图7-1中突出显示)包含硬件高速缓存行122A-A的硬件扇区422A及422B以及硬件高速缓存行122B-A的硬件扇区422A及422B等等,其中自适应高速缓存行132H-N(在图7-1中也突出显示)包含硬件高速缓存行122L-N及122M-N中的每一个的硬件扇区422A及422B。
如本文中所公开,高速缓存行管理器212可经配置以将地址106映射到自适应高速缓存行132,这可包含:a)使用地址106的最低有效位以各种方式选择自适应组332(例如,组区域226的内容),及b)将地址106(例如,标签区域224)的最高有效位与选定自适应组332的自适应高速缓存行132的ACL标签134进行比较。高速缓存行管理器212可根据自适应高速缓存110的高速缓存行参数114(例如,根据自适应高速缓存行132的ACL容量232(CACL))调适地址106的区域。高速缓存行管理器212可进一步经配置以并行存取自适应高速缓存行132的ACL容量232(CACL)。并行性可对应于由高速缓存接口214形成的自适应高速缓存行132(及/或自适应组332)跨越的多个硬件组322(或其它结构)。
表3说明自适应高速缓存110的相应高速缓存行参数114的地址位计数及并行组存取,所述自适应高速缓存包含在相应高速缓存行聚合因子(R)下的如图7-1及7-2中所说明的扇区化硬件高速缓存行122;例如,对于包含25个位的地址106,AG=32B,且硬件高速缓存行容量CHCL=64B(每一硬件高速缓存行122能够在相应硬件扇区422A及422B内高速缓存两个地址106):
114{R} 1/2 1 2 4 8 16
C<sub>ACL</sub> 32B 64B 128B 256B 512B 1024B
228(O<sub>B</sub>) 0 1 2 3 4 5
226(S<sub>B</sub>) 13 12 11 10 9 8
224(标签) 12 12 12 12 12 12
平行组(s) 1 1 2 4 8 16
表3:SH=1,AG=32B,CHCL=64B,S=2,25位地址组间聚合
尽管本文中描述用于根据组内方案由扇区硬件高速缓存线122形成自适应高速缓存行132、ACL标签134及/或自适应组332的技术的特定实例(例如,其中R=1/2或2,分别如在图7-1及7-2中所说明),但本公开在这方面不受限制并且可经调适以根据组内或其它方案支持任何合适的高速缓存行聚合因子R(及/或
Figure BDA0003866019720000261
的比率)及/或硬件扇区化(S)。
图8说明如本文中所公开的自适应高速缓存110的进一步实例操作实施方案。在图8的实例中,自适应高速缓存110包含及/或耦合到自适应引擎812,所述自适应引擎经配置以尤其确定、调整、改善及/或以其它方式管理自适应高速缓存110的高速缓存行参数114。适配引擎812可经配置以确定高速缓存度量814,其可包含关于自适应高速缓存110上的工作负荷、高速缓存性能度量等等的信息。高速缓存度量814可指示工作负荷的顺序性。高速缓存度量814可量化在自适应高速缓存110处接收的请求111的地址106是顺序及/或连续的程度。在一些方面中,适配引擎812在相应时间窗口期间监视请求111的地址106。高速缓存度量814可包含关于工作负荷模式的信息,例如在特定时间期间预测的工作负荷特性(例如,预测的顺序性)。高速缓存度量814可包含关于正在计算装置上执行的处理任务的信息及/或将处理任务与工作负荷特征相关联(例如,将处理任务及/或应用程序与对应工作负荷特性相关联)。通过非限制性实例的方式,高速缓存度量814可指示确定以产生顺序工作负荷的视频编辑应用程序被调度执行。在另一非限制性实例中,高速缓存度量814可指示计算装置正在执行被确定为产生非顺序工作负荷的DBMS应用程序。适配引擎可使用合适的机器学习技术来学习工作负荷模式(及/或特定处理任务的工作负荷模式)。然而,本公开不限制此方面,并且可经调适以使用任何合适的技术来监视、确定量化、建模及/或预测工作负荷特性(例如,顺序性)。在一些方面中,高速缓存度量814包含关于高速缓存性能的信息,例如高速缓存未命中率、高速缓存命中率等等。高速缓存度量814可进一步包含及/或并入关于自适应高速缓存110的当前配置的信息,例如当前高速缓存行参数114、自适应高速缓存行容量(CACH)、高速缓存传送粒度(GT),等等。
适配引擎812可进一步经配置以尤其基于高速缓存度量814来确定及/或调整高速缓存行参数114。适配引擎812可根据自适应高速缓存110上的工作负荷来确定及/或调整高速缓存行参数114。适配引擎812可经配置以响应于以下中的一或多个来调整由控制器112管理的自适应高速缓存行132的容量(例如,调整CACL):工作负荷的顺序性、工作负荷的预测顺序性、工作负荷顺序性的改变、高速缓存性能度量、高速缓存未命中率、高速缓存命中率、正在由计算装置执行的处理任务、经调度以在计算装置等等上执行的处理任务。适配引擎812可经配置以响应于顺序工作负荷而增加高速缓存行预取,响应于非顺序工作负荷而减少高速缓存行预取,等等。适配引擎812可进一步经配置以响应于指示高速缓存未命中率增加或高速缓存命中率降低的高速缓存度量814而选择性地增加或减少高速缓存行预取(基于工作负荷特性,例如顺序性)。在一些方面中,适配引擎812可为相应工作负荷条件确定高速缓存行参数114并且可响应于检测及/或预测对应工作负荷条件而应用所确定的高速缓存行参数114。在一些方面中,适配引擎812包含用于相应工作负荷的机器学习(ML)高速缓存行参数114,例如被确定为在相应工作负荷条件下产生最佳高速缓存性能的高速缓存行参数114。可训练适配引擎812以通过合适的机器学习技术来学习最佳高速缓存行参数114。
自适应高速缓存110可经配置以应用高速缓存行参数114。自适应高速缓存110可应用由自适应引擎812确定及/或修改的高速缓存行参数114。应用修改的高速缓存行参数114可包含配置控制器112以根据修改的高速缓存行参数114重新配置自适应高速缓存行132。重新配置自适应高速缓存行132可包含由不同组的硬件高速缓存行122重新形成自适应高速缓存行132(例如,尤其通过修改硬件高速缓存行122的数量及/或相应自适应高速缓存行132中包含的硬件区段422来修改自适应高速缓存行132的CACH)。重新配置可包含从自适应高速缓存行132刷新工作集,重新配置自适应高速缓存行132,及将工作集(或工作集的一部分)重新加载到重新配置的自适应高速缓存行132中。“工作集”是指在自适应高速缓存110内高速缓存的数据集。控制器112可经配置以响应于重新配置自适应高速缓存行132(及/或刷新自适应高速缓存110)而保留工作集元数据。工作集元数据可识别先前加载到自适应高速缓存110中的地址范围;工作集元数据可包含多个地址范围,每一地址范围对应于在重新配置之前高速缓存在自适应高速缓存行132中的相应一个内的数据。工作集元数据可进一步包含关于地址范围的信息,例如准入时间、存取时间、存取频率等等。地址范围的范围可对应于自适应高速缓存行132的CACL。控制器112可进一步经配置以使用保留的工作集元数据将工作集(及/或其部分)重新加载到重新配置的高速缓存行132中。重新加载工作集可包含加载先前加载的地址范围的数据。重新配置的自适应高速缓存行132的CACL可不同于先前的CACL,并且因此,在重新准入期间可省略(或扩展)地址范围中的一或多个。在一些方面中,高速缓存控制器112尤其基于例如FIFO、LIFO、LRU、TLRU、MRU、LFU、随机替换等等的替换或重新准入策略而选择重新加载(或排除)的地址范围。
自适应高速缓存的实例方法
在本节中参考图9到13的流程图及作业图来描述实例方法。这些描述仅以实例的方式参考图1到8中所描绘的组件、实体及其它方面。图9用流程图900说明用于操作如本文中所公开的自适应高速缓存110的实例方法。在910,自适应高速缓存110确定一或多个高速缓存行参数114,例如将由自适应高速缓存110的控制器112形成的自适应高速缓存行132的目标粒度(GA),自适应高速缓存行132的目标容量(CACL)、高速缓存行聚合比率(R)或其它参数。在910,可从自适应高速缓存110的内部存储器(例如寄存器、EEPROM、固件等等)存取高速缓存行参数114。替代地或另外,高速缓存行参数114可通过互连件等等从外部存储器接收。高速缓存行参数114可在自适应高速缓存110的初始化期间确定。替代地,可响应于修改的高速缓存行参数114来确定高速缓存行参数114。
在920,自适应高速缓存行132根据高速缓存行参数114由硬件高速缓存行122形成,如本文中所公开。自适应高速缓存行132可由相应多组硬件高速缓存行122形成,每一自适应高速缓存行132由相应组的R个硬件高速缓存行122形成,其中
Figure BDA0003866019720000281
当高速缓存行参数114规定小于或等于硬件高速缓存行大小(CHCL)的自适应高速缓存行大小(CACL)时,920可包含横跨相应的数行或数组硬件高速缓存行122交错自适应高速缓存行132。当高速缓存行参数114规定大于CHCL的CACL(例如,2幂的倍数)时,920可包含根据选定聚合方案(例如组内方案、组间方案等等)对硬件高速缓存行122进行分组。
在组内方案中,自适应高速缓存行132可由相应硬件组322内的硬件高速缓存行122形成,这可包含由M个硬件组322形成M个自适应组332,每一自适应组332是F路关联,其中
Figure BDA0003866019720000291
及N是硬件组322的组关联性(例如,形成相同数目的关联组332,同时降低组关联性)。在组间方案中,自适应高速缓存行132可由不同硬件组322内的硬件高速缓存行122形成,这可包含由M个硬件组322形成H个自适应组332,每一自适应组332是N路关联,其中
Figure BDA0003866019720000292
(例如,形成减少数目的自适应组332,同时保留组关联性)。自适应高速缓存行132可由可独立存取的存储器结构内的硬件高速缓存行122形成,使得可至少部分并行地存取相应高速缓存行132的硬件高速缓存行122。在一些方面中,硬件高速缓存行122(及对应HCL标签124)横跨相应行(硬件组322)排列,且自适应高速缓存行132由R个不同行中每一个内的相同(或确定性)组索引(IS)处的硬件高速缓存行122形成。形成自适应高速缓存行132可进一步包含尤其通过将地址106划分为一或多个区域(包含标签区域224、设置区域226及偏移区域228)来确定地址方案。标签区域224可对应于硬件高速缓存行122的HCL标签124;标签区域224中包含的位数(TB)可对应于相应HCL标签124中包含的位数。偏移区域228中包含的位数(OB)可为根据地址106(或数据单元104)的CACL的函数,其中OB=log2CACL,及设置区域226中包含的位数(SB)可为AB-(TB+OB),其中AB为包含在相应地址106中的位数。还可在920确定用于将地址106与相应自适应组332相关联的组映射方案;组映射方案可定义相应地址106的组区域226与根据高速缓存行参数114形成的自适应组332之间的确定性映射。组映射方案可包含任何合适方案,包含但不限于模方案、散列方案等等。
在930,可将后备存储器109的数据高速缓存在自适应高速缓存行132内,这可包含将数据传送到相应自适应高速缓存行132中(响应于高速缓存未命中),读取及/或写入在相应自适应高速缓存行132内高速缓存的数据(响应于高速缓存命中),等等。将数据传送到自适应高速缓存行132中可包含将数据加载到多个硬件高速缓存行122中并将多个硬件高速缓存行122与单个标签相关联。存取自适应高速缓存行132的数据可包含存取多个硬件高速缓存行122的高速缓存容量(例如,读取数据及/或将数据写入到多个硬件高速缓存行122)。高速缓存数据可进一步包含通过以下操作将地址106与自适应高速缓存行132相关联:a)基于地址106的组区域226的内容(根据组映射方案)选择自适应组332,及b)将地址106的标签区域224的内容与选定自适应组332的自适应高速缓存行132的ACL标签134进行比较,其中标签区域224与ACL标签134之间的匹配导致高速缓存命中,并且无法识别匹配ACL标签134导致高速缓存未命中。在930执行的操作可进一步包含在后备存储器109与相应自适应高速缓存行132之间执行高速缓存传送119。高速缓存传送119的粒度(例如,在相应高速缓存传送119中在自适应高速缓存110与后备存储器109之间传送的数据量)可对应于自适应高速缓存行132的容量(CACL)。
图10用流程图1000说明用于操作如本文中所公开的自适应高速缓存110的实例方法。流程图1000描绘用于配置自适应高速缓存110以高效地服务具有所规定特性的高速缓存工作负荷的实例方法,例如顺序工作负荷、非顺序工作负荷、特定应用程序的工作负荷、特定处理任务的工作负荷等等。
在1010,可设置用于特定高速缓存工作负荷的高速缓存行参数114。高速缓存行参数114可通过任何合适的机制来设置,包含但不限于:将高速缓存行参数114传输到自适应高速缓存110,在互连件(例如第一或前端互连件105-1)上传达命令、指令或其它消息,对自适应高速缓存110的固件进行编程,写入到自适应高速缓存110的寄存器或其它存储器,等等。高速缓存行参数114集可经调适用于所规定的高速缓存工作负荷。高速缓存行参数114可对应于工作负荷特性,例如工作负荷顺序性(顺序工作负荷、非顺序工作负荷等等)。替代地或另外地,高速缓存行参数114可经调适用于请求器101(例如,主机102、存储器存储系统150、处理器103、计算装置等等)的特定应用或处理任务。
可响应于检测到特定应用程序或处理任务的执行及/或确定应用程序或处理任务被调度执行而设置高速缓存行参数114。1010的高速缓存行参数114可包含顺序高速缓存行参数114,其经调适以配置自适应高速缓存110以高效地服务顺序高速缓存工作负荷。顺序高速缓存行参数可规定大的、高容量的自适应高速缓存行132(256B、1024B等等的CACL)、大的聚合因子(例如,8、16、32等等),等等,这可导致高度高速缓存行预取。替代地,1010的高速缓存行参数114可包含非顺序高速缓存行参数114,其经调适以配置自适应高速缓存110以高效地服务非顺序高速缓存工作负荷。非顺序高速缓存行参数可规定小的、低容量的自适应高速缓存行132(例如,32B、64B等等)、小的聚合因子(例如,
Figure BDA0003866019720000301
CHCL,等等),等等,这可导致低度高速缓存行预取。
在1020,自适应高速缓存110的控制器112根据在1010设置的高速缓存行参数114形成自适应高速缓存行132,这可包含将多组硬件高速缓存行122组合到相应自适应高速缓存行132中,将多组HCL标签124组合到相应ACL标签134中,等等,如本文中所揭示。自适应高速缓存行132可由能够被至少部分并行存取的硬件高速缓存行122形成。自适应高速缓存行132可由在相应硬件组322(能够独立及/或并行存取的不同存储体或其它存储器结构)内的相同(或确定性)组索引(IS)处的硬件高速缓存行122形成。如本文中所公开,在1020执行的操可进一步包含将硬件组322组合到相应自适应组332中,确定组映射方案(例如,确定地址分段方案)等等。在一些方面中,1020可进一步包含从高速缓存存储器120刷新工作集、重新配置自适应高速缓存行132以及重新加载工作集的部分。
在1030,将后备存储器109的数据高速缓存在1020配置的自适应高速缓存行内,如本文中所公开,这可包含接收关于后备存储器109的请求111并通过使用高速缓存存储器120来服务请求111。服务请求111可包含尤其通过尝试通过以下操作将请求111的地址106映射到自适应高速缓存行132来确定请求是否导致高速缓存命中:(a)基于地址106的组位(地址106的组区域226的内容)而选择自适应组332,及(b)将地址106的标签位(地址106的标签区域224的内容)与相关联于选定自适应组332的自适应高速缓存行132的ACL标签134进行比较。服务可进一步包含响应于高速缓存未命中将对应于地址的数据加载到选定的自适应高速缓存行132中,这可包含执行高速缓存传送119以用后备存储器109的数据填充选定的自适应高速缓存行132。执行高速缓存传送119可包含传送对应于自适应高速缓存行132的CACL的数据量,如在1010设置的高速缓存行参数114所规定。替代地,服务请求111可包含响应于高速缓存命中而读取数据及/或将数据写入到自适应高速缓存行132,这可包含至少部分并行地读取及/或将数据写入到多个硬件高速缓存行122。
图11用流程图1100说明用于操作如本文中所公开的自适应高速缓存110的实例方法。在1110,可将数据高速缓存在根据第一高速缓存行参数114(例如,第一容量参数)形成的自适应高速缓存行132内。1110的操作可包含尤其通过组合包含第一数量的硬件高速缓存行122的组来形成具有第一CACL的自适应高速缓存行。第一数量可为第一CACL(或第一容量参数)与硬件高速缓存行122的固定容量(CHCL)的比率。在一些方面中,1110可进一步包含在后备存储器109与相应自适应高速缓存行132之间以第一传送粒度(GT)执行高速缓存传送119;执行高速缓存传送119以将数据加载到具有第一CACL的自适应高速缓存行132中可包含从后备存储器109请求对应于第一CACL的数据量,执行高速缓存传送119以将具有第一CACL的已更改自适应高速缓存行132取消暂存可包含将对应于第一CACL的数据量写入到后备存储器109,等等。
在1120,可在自适应高速缓存110处接收第二高速缓存行参数114。第二高速缓存行参数114可通过例如第一或前端互连件105-1、第二或后端互连件105-2等等的互连件来接收。替代地或另外,第二高速缓存行参数114可由自适应高速缓存110确定及/或调整;例如,可包含及/或耦合到自适应高速缓存110的自适应引擎812,确定修改的高速缓存行参数114(修改的容量参数),如本文中所公开。第二高速缓存行参数114可修改自适应高速缓存行132的容量(CACL)。第二高速缓存行参数114包含为自适应高速缓存行132规定不同于第一容量的第二容量的第二容量参数。
在1130,可根据第二高速缓存行参数114重新配置自适应高速缓存行132。自适应高速缓存行132可被重新配置以具有第二CACL,尤其通过聚合组,每一组包含第二数量的硬件高速缓存行122。在一些方面中,1130包含在重新配置自适应高速缓存行132(例如,将已更改自适应高速缓存行132写回到后备存储器109)之前从自适应高速缓存110刷新及/或逐出工作集。
在1140,可将后备存储器109的数据高速缓存在重新配置的自适应高速缓存行132内。在一些方面中,1140可包含将工作集的至少一部分加载到自适应高速缓存110中(例如,将数据从后备存储器109传送到重新配置的自适应高速缓存行132中)。1140的操作可包含以对应于第二CACL的第二传送粒度(GT)在后备存储器109与相应自适应高速缓存行132之间执行高速缓存传送119。执行高速缓存传送119以将数据加载到具有第二CACL的自适应高速缓存行132中可包含从后备存储器109请求对应于第二CACL的数据量,执行高速缓存传送119以将具有第二CACL的已更改自适应高速缓存行132取消暂存可包含将对应于第二CACL的数据量写入到后备存储器109,等等。
图12用流程图1200说明用于操作如本文中所公开的自适应高速缓存110的实例方法。在1210,自适应高速缓存110经配置以根据第一高速缓存行参数114操作,这可包含形成自适应高速缓存行132,所述自适应高速缓存行经配置以具有由第一高速缓存行参数114所规定的第一CACL。自适应高速缓存行132可由相应多组硬件高速缓存行122形成,每一自适应高速缓存行132由第一数量的硬件高速缓存行122形成。形成自适应高速缓存行132可进一步包含尤其通过将多个硬件高速缓存行122链接到多个HCL标签124中的一个(例如,单个ACL标签134)由HCL标签124形成ACL标签134。在1210执行的操作可进一步包含在自适应高速缓存行132内高速缓存数据,这可包含以第一粒度(GT)执行高速缓存传送119,如本文中所公开。
在1220,适配引擎812可在第一高速缓存行参数114下在自适应高速缓存110的操作期间监视高速缓存度量814,这可包含监视及/或预测自适应高速缓存110上的工作负荷的特性,例如工作负荷顺序性。在一些方面中,1220可进一步包含监视高速缓存性能度量,例如高速缓存命中率、高速缓存未命中率等等,高速缓存度量814可随着时间被监视(例如,在相应时间间隔期间)。在1220的监视可包含开发、训练及/或改善工作负荷特性的ML或统计模型,例如工作负荷顺序的正态分布;例如,
Figure BDA0003866019720000321
其中x是工作负荷顺序性。适配引擎812可进一步经配置以监视由计算装置执行(及/或被调度以执行)的处理任务(及/或应用程序)。在1220的监视可包含检测被确定为产生具有特定特性的工作负荷的任务的执行,例如被确定为产生顺序高速缓存工作负荷的视频编辑应用程序、被确定为产生非顺序高速缓存工作负荷的DBMS等等的执行。
在1230,适配引擎812确定是否修改高速缓存行参数114。1230的确定可尤其基于1220的监视。在一些方面中,1230可包含修改自适应高速缓存行132的容量(CACL)及/或自适应高速缓存110的高速缓存行预取。适配引擎812可响应于以下中的一或多个来确定修改高速缓存行参数114:工作负荷的顺序性、工作负荷的预测顺序性、工作负荷顺序性的改变(ΔS)、高速缓存未命中率、高速缓存命中率、正在由计算装置执行的处理任务、被调度用于在计算装置上执行的处理任务等等。适配引擎812可经配置以响应于顺序工作负荷而增加高速缓存行预取,响应于非顺序工作负荷而减少高速缓存行预取,等等。在1230,适配引擎812可确定:响应于增加的工作负荷顺序而增加CACL(ΔS>TI,其中TI是顺序性增加阈值),响应于增加的工作负荷顺序性及降低的高速缓存性能(ΔS>TI且MR>TMR,其中MR是高速缓存未命中率,且TMR是高速缓存未命中率阈值)而增加CACL,响应于降低的工作负荷顺序性(TD>ΔS,其中TD是顺序性降低阈值)而降低CACL,响应于降低的工作负荷顺序性及降低的高速缓存性能(TD>ΔS且HR<THR,其中HR是高速缓存命中率,且THR是高速缓存命中率阈值)而降低CACL,等等。替代地或另外,1230的确定可基于由计算装置执行的处理任务(及/或被调度执行的处理任务)。在一些方面中,1230可包含将处理任务与预测的工作负荷特性相关联并且根据工作负荷特性确定是否修改高速缓存行参数114。通过非限制性实例的方式,适配引擎812可响应于确定与高顺序工作负荷相关联的视频编辑处理任务被调度以在计算装置上执行而确定修改高速缓存行参数114以增加高速缓存行预期,可响应于确定产生非顺序工作负荷的DMBS的执行而确定修改高速缓存行参数114以减少高速缓存行预取,等等。
在一些方面中,修改高速缓存行参数114可涉及高速缓存管理开销及/或导致对由自适应高速缓存110提供的高速缓存服务的中断;例如,可涉及从自适应高速缓存110刷新工作集、重新配置自适应高速缓存行132,及将工作集(或其一部分)重新加载到重新配置的自适应高速缓存行132中。因此,1230可包含权衡在修改的高速缓存行参数114下操作的估计收益与相关联于自适应高速缓存110的重新配置的成本。1230的操作可包含估计在修改的高速缓存行参数114下的操作的收益,这可包含在修改的高速缓存行参数114下模拟自适应高速缓存110的操作(例如,估计在修改的高速缓存行参数114下的高速缓存命中率及/或高速缓存带宽消耗)。在一些方面中,1230处的确定可基于高速缓存度量814的统计特性。适配引擎812可尤其基于工作负荷顺序性的变化而确定是否修改高速缓存行参数114。适配引擎812可响应于具有稳定顺序性特性(低顺序性变化)的工作负荷而确定修改高速缓存行参数114,且可响应于具有较高顺序性变化的工作负荷而确定不修改高速缓存行参数114。尽管本文中描述用于确定对高速缓存行参数114的修改的特定技术的实例,但本公开在这方面不受限制并且可经调适以使用任何合适的机制来确定及/或修改高速缓存行参数114。
如果在1230确定要修改高速缓存行参数114,则流程在1240继续;否则,自适应高速缓存110在1210继续在第一高速缓存行参数114下操作。
在1240,自适应高速缓存110被重新配置以在第二高速缓存行参数114下操作。第二高速缓存行参数114可包含在1230确定的修改的高速缓存行参数114。第二高速缓存行参数114可规定与由第一高速缓存行参数114规定的第一CACL不同的第二CACL。在一些方面中,1240进一步包含在重新配置自适应高速缓存行132(例如,将已更改自适应高速缓存行132写回到后备存储器109)之前从自适应高速缓存110刷新工作集,这可包含取消暂存相应自适应高速缓存行132。将根据第一高速缓存行参数114形成的自适应高速缓存行132取消暂存可包含以第一粒度(GT)执行高速缓存传送119;例如,传送对应于由第一高速缓存行参数114所规定的第一CACL的数据量。在一些方面中,自适应高速缓存110经配置以保留关于工作集的信息,例如高速缓存存储器120内高速缓存的地址106(及/或地址范围)。
在1240根据第二高速缓存行参数114重新配置自适应高速缓存行132可包含形成具有第二CACL的自适应高速缓存行132。重新配置的自适应高速缓存行132可由相应多组硬件高速缓存行122形成,每一组包含第二数量的硬件高速缓存行122。重新配置自适应高速缓存行132可进一步包含形成自适应组332,每一自适应组包含自适应高速缓存行132的相应组,确定将地址106映射到相应自适应组332的组映射方案,等等;例如,确定地址106可被映射到相应的自适应高速缓存行132的方案,这可包含将地址106划分为标签区域224、设置区域226及偏移区域228,如本文中所公开。在一些方面中,1240进一步包含重构工作集(及/或其部分),其可包含将工作集的地址106(及/或地址范围)传送到重新配置的自适应高速缓存行132中。将数据加载到重新配置的高速缓存行132可包含以第二粒度(GT)执行高速缓存传送119,这可包含将对应于由第二高速缓存行参数114所规定的第二CACL的数据量109从后备存储器传送到自适应高速缓存110。
图13说明描绘用于管理自适应高速缓存的工作集的操作的实例流程图1300。在1310,根据所规定的高速缓存行参数114操作的自适应高速缓存110接收修改的高速缓存行参数114。修改的高速缓存行参数114可为自适应高速缓存行132规定不同的CACL(可包含第二高速缓存行参数114,所述第二高速缓存行参数规定与如当前配置的第一高速缓存行参数114所规定的第一CACL不同的第二CACL)。可通过任何合适的技术或机制来接收修改的高速缓存行参数114。替代地,修改的高速缓存行参数114可响应于监视高速缓存度量814来确定,如本文中所公开(例如,可基于自适应高速缓存110上的工作负荷的特性来确定)。
在1320保留关于自适应高速缓存110的工作集的工作集元数据。工作集元数据可规定高速缓存在自适应高速缓存110的相应自适应高速缓存行132内的地址106(及/或地址范围)。工作集元数据可进一步包含关于相应地址范围的信息,例如准入时间、存取度量、存取时间、存取频率等等。工作集元数据可保留在任何合适的存储器存储资源中,包含但不限于自适应高速缓存110的存储器(例如,高速缓存存储器120的指定区域、一或多个寄存器、一或多个硬件高速缓存行122等等)。替代地,可将工作集元数据保留在例如后备存储器109等等的外部存储器中。
可在1330刷新自适应高速缓存行132。刷新可包含将已更改自适应高速缓存行132的内容写入到后备存储器109(及/或其它后备存储器)。已更改自适应高速缓存行132可通过使用与自适应高速缓存行132相关联的ACL元数据133(及/或对应硬件高速缓存行122的HCL元数据123)来识别。刷新可进一步包含将自适应高速缓存行132(及/或对应硬件高速缓存行122)标记为无效或空。在一些方面中,1330进一步包含将ACL标签134(及/或对应的HCL标签124)标记为无效或空。
在1340,根据修改的高速缓存行参数114重新配置自适应高速缓存行132,这可包含将硬件高速缓存行122分组为相应自适应高速缓存行132(重新配置的自适应高速缓存行132),如本文中所公开。每一自适应高速缓存行132中包含的硬件高速缓存行122的数量可基于由修改的高速缓存行参数114所规定的CACL或聚合比率(R)。重新配置的自适应高速缓存行132的CACL可不同于如先前配置的自适应高速缓存行132的CACL(例如,可具有第二CACL及/或包含第二数量的硬件高速缓存行122,而先前配置的自适应高速缓存行132具有第一CACL及/或包含第一数量的硬件高速缓存行122)。
在1350,控制器112将工作集的至少一部分重新加载到自适应高速缓存110中。控制器112可经配置以将由在1320处保留的工作集元数据标识的地址范围重新加载到自适应高速缓存行132中,如在1340处重新配置。地址范围的范围可根据重新配置的自适应高速缓存行132的CACL进行调整,其可不同于如先前配置的自适应高速缓存行132的CACL。在自适应高速缓存行132的CACL已增加的情况下,1350可包含扩展选定的地址范围(并且排除其它地址范围)。可根据替换或重新准入策略选择要保留的地址范围,例如FIFO、LIFO、LRU、TLRU、MRU、LFU、随机替换等等。在自适应高速缓存行132的CACL已减少的情况下,1350可包含截断选定的地址范围(及加载额外的地址范围)。可基于截断策略(例如,基于范围内存取特性)截断地址范围。
可选择额外地址范围来替换从选定地址范围截断的地址106。在一些方面中,控制器112可经配置以重新加载地址范围的选定子集。如本文中所公开,地址范围的子集可根据替换或重新准入策略来选择。在一些实施例中,修改的高速缓存行参数114可规定待重新加载的工作集的量(例如,重新加载工作集的20%)。如本文中所公开,在1350处重新加载的工作集的部分可根据重新准入策略来选择(例如,可包含重新加载工作集的20%最频繁存取的地址范围)。在一些方面中,1350可在服务请求111的同时(例如,在后台进程中)并发实施。1350的重新加载可响应于接收到请求111而暂停并且响应于服务请求111而恢复。
对于上文所描述的流程图及作业图,展示及/或描述操作的次序并不打算解释为限制。可以任何次序组合或重新布置任何数目或组合的所描述过程操作,以实施给定方法或替代方法。还可将操作从所描述方法省略或将其添加到所描述方法中。此外,可完全或部分重叠的方式来实施所描述操作。
这些方法的各方面可例如在硬件(例如,固定逻辑电路系统或与存储器结合的处理器)、固件或其某一组合中实施。方法可使用图1到8中所展示的设备或组件中的一或多个来实现,其组件可被进一步划分、组合、重新布置等等。这些图中的装置及组件通常表示固件或其动作;硬件,例如电子装置、封装模块、IC芯片或电路;软件;或其组合。所说明设备包含例如具有可配置高速缓存行的高速缓存(具有自适应高速缓存行132的自适应高速缓存110)。自适应高速缓存110可耦合到请求器101,例如客户端、计算装置、计算系统、主机102、处理器103、高速缓存层(例如,LX高速缓存171)等等。自适应高速缓存110还可耦合到后备存储器109(例如,存储器、初级存储器、主存储器、存储器存储系统150、存储器装置152、RAM154、NV存储器156、主存储器162、高速缓存层173、存储器存储装置、内部存储器存储装置、外部存储器存储装置、远程存储器存储装置、NAS装置等等)。
自适应高速缓存110可包含高速缓存控制器(控制器112)及高速缓存存储器120。高速缓存存储器120可包含多个硬件高速缓存行122(及相关联HCL标签124)。硬件高速缓存行122及HCL标签124可体现在单独结构(例如,单独的存储器元件)内。硬件高速缓存行122(及/或HCL标签124)可被布置到相应硬件组322中。在一些方面中,硬件高速缓存行122及/或HCL标签124可横跨行排列(例如,硬件组322可在相应存储体上体现及/或实施)。控制器112可经配置以根据高速缓存行参数114形成自适应高速缓存行132。控制器112可形成具有所规定容量(所规定CACL)的自适应高速缓存行132,这尤其可确定高速缓存传送119的粒度、自适应高速缓存110的高速缓存行预取等等。当高速缓存行参数114规定小于或等于硬件高速缓存行大小(CHCL)的自适应高速缓存行大小(CACL)时,控制器112可将自适应高速缓存行132横跨相应的数行或数组硬件高速缓存行122交错。当高速缓存行参数114规定大于硬件高速缓存行大小(CHCL)的自适应高速缓存行大小(CACL)时,高速缓存接口214可组合来自多个不同组(行或组)的硬件高速缓冲线122。
高速缓存接口214可经配置以至少部分并行地存取对应于硬件高速缓存行122的ACL容量232。高速缓存行参数114可规定高速缓存行聚合比率(R),其是2的幂倍数(将CACH规定为CHCL的2的幂倍数),并且控制器112可由位于相应R行或组内的硬件高速缓存行122形成自适应高速缓存行132,这可使得高速缓存接口214能够至少部分并行地(横跨R行或组硬件高速缓存行122)存取自适应高速缓存行132的ACL容量232。控制器112可进一步经配置以形成自适应组332并确定组映射方案以将地址106与相应自适应组332相关联,这可包含将地址106划分为标签区域224、组区域226及偏移区域228,如本文中所公开。控制器112可通过以下方式确定地址106是否被高速缓存(导致高速缓存命中):(a)将地址106映射到选定的自适应组332(基于其组区域226),及(b)将地址106与自适应组332的相应路的ACL标签134进行比较。控制器112可响应于修改的高速缓存行参数114重新配置自适应高速缓存110。在一些方面中,控制器112可尤其响应于监视高速缓存度量814,例如自适应高速缓存110上的工作负荷的顺序,来确定修改的高速缓存行参数114。因此,这些图说明能够实施所描述方法的许多可能的系统或设备中的一些。
除非上下文另有规定,否则本文中使用的单词“或”可被视为使用“包含性或”,或允许包含或应用由单词“或”链接的一或多个物项的术语(例如,短语“A或B”可解释为仅允许“A”,仅允许“B”或允许“A”及“B”两者)。同样,如本文中所使用,提及物项列表中的“至少一个”的短语是指那些物项的任何组合,包含单个成员。例如,“以下各项中的至少一个:a、b或c”意欲涵盖:a、b、c、a-b、a-c、b-c及a-b-c以及与多个相同元件的任一组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c及c-c-c或a、b及c的任一其它次序)。此外,在本文中所论述的附图及术语中表示的物项可指示一或多个项目或术语,且因此在本书面描述中可以互换地引用项目及术语的单个或多个形式。
结论
尽管已以特定于某些特征和/或方法的语言描述用于自适应高速缓存(及/或自适应高速缓存行)的实施方案,但所附权利要求书的主题不必限于所描述特定特征或方法。而是,特定特征及方法公开为自适应高速缓存的实例性实施方案。

Claims (15)

1.一种方法,其包括:
接收规定第一容量的参数;及
由相应多组硬件高速缓存行形成高速缓存的多个自适应高速缓存行,所述多组中的每一组包括第一数量的硬件高速缓存行,所述第一数量至少部分地基于规定所述第一容量的所述接收到的参数。
2.根据权利要求1所述的方法,其进一步包括在所述多个自适应高速缓存行内高速缓存后备存储器的数据,且其中在高速缓存传送操作中从所述后备存储器高速缓存的数据量对应于所述第一容量。
3.根据权利要求1或权利要求2所述的方法,其进一步包括:
将来自所述高速缓存的两个或多于两个不同存储体的同一索引处的硬件高速缓存行组合到所述相应多组硬件高速缓存行中,以形成相应自适应高速缓存行;及
至少部分地响应于所述多个硬件高速缓存行被形成为所述多个自适应高速缓存行中的单个自适应高速缓存行,并行存取多个硬件高速缓存行。
4.根据权利要求1到3中任一项所述的方法,其进一步包括将自适应高速缓存行的多个硬件高速缓存行与相同标签相关联。
5.根据权利要求1到4中任一项所述的方法,其进一步包括将包括自适应高速缓存行的多个硬件高速缓存行中的选定一个的标签指定为所述自适应高速缓存行的标签。
6.根据权利要求1到5中任一项所述的方法,其进一步包括:
接收规定不同于所述第一容量的第二容量的另一参数;及
响应于所述另一接收到的参数而重新配置所述多个自适应高速缓存行,所述重新配置的多个自适应高速缓存行由相应重新配置的多组硬件高速缓存行形成,每一重新配置的组包括第二数量的硬件高速缓存行,所述第二数量基于所述第二容量及所述硬件高速缓存行中的每一硬件高速缓存行的固定容量。
7.根据权利要求6所述的方法,其进一步包括在所述重新配置的多个自适应高速缓存行内高速缓存所述后备存储器的数据,且其中在另一高速缓存传送操作中从所述后备存储器高速缓存的另一数据量对应于所述第二容量。
8.根据权利要求6或请求项7所述的方法,其进一步包括:
在响应于接收到所述另一参数而重新配置所述多个自适应高速缓存行之前从所述高速缓存刷新工作集;及
将所述工作集的至少一部分加载到所述重新配置的多个自适应高速缓存行中。
9.根据权利要求8所述的方法,其进一步包括:
监视所述高速缓存上的工作负荷;及
基于所述监视为所述重新配置的多个自适应高速缓存行设置所述第二容量。
10.根据权利要求9所述的方法,其进一步包括:响应于检测到所述工作负荷的顺序性的增加,设置所述第二容量以增加所述重新配置的多个自适应高速缓存行的高速缓存行预取量。
11.根据权利要求9所述的方法,其进一步包括:响应于检测到所述工作负荷的所述顺序性的减少,设置所述第二容量以减少所述重新配置的多个自适应高速缓存行的所述高速缓存行预取量。
12.一种设备,其包括:
存储器阵列,其经配置为多个硬件高速缓存行;及
逻辑,其包括耦合到所述多个硬件高速缓存行的高速缓存控制器,所述高速缓存控制器经配置以执行根据权利要求1到11中任一项所述的方法。
13.一种系统,其包括用于执行根据权利要求1到11中任一项所述的方法的装置。
14.一种计算机可读存储媒体,其包括指令,所述指令在被执行时将逻辑配置为主机装置的高速缓存控制器以执行根据权利要求1到11中任一项所述的方法。
15.一种计算机可读存储媒体,其包括指令,所述指令在被执行时将逻辑配置为存储器装置的高速缓存控制器以执行根据权利要求1到11中任一项所述的方法。
CN202180024950.6A 2020-05-21 2021-05-19 自适应高速缓存 Withdrawn CN115443454A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/880,248 US11294808B2 (en) 2020-05-21 2020-05-21 Adaptive cache
US16/880,248 2020-05-21
PCT/US2021/033210 WO2021236800A1 (en) 2020-05-21 2021-05-19 Adaptive cache

Publications (1)

Publication Number Publication Date
CN115443454A true CN115443454A (zh) 2022-12-06

Family

ID=78608992

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180024950.6A Withdrawn CN115443454A (zh) 2020-05-21 2021-05-19 自适应高速缓存

Country Status (5)

Country Link
US (2) US11294808B2 (zh)
EP (1) EP4154121A1 (zh)
KR (1) KR20220159470A (zh)
CN (1) CN115443454A (zh)
WO (1) WO2021236800A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294808B2 (en) 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11507516B2 (en) 2020-08-19 2022-11-22 Micron Technology, Inc. Adaptive cache partitioning
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
US11573899B1 (en) * 2021-10-21 2023-02-07 International Business Machines Corporation Transparent interleaving of compressed cache lines
US11740816B1 (en) * 2022-03-18 2023-08-29 Dell Products L.P. Initial cache segmentation recommendation engine using customer-specific historical workload analysis
US20240111425A1 (en) * 2022-09-29 2024-04-04 Advanced Micro Devices, Inc. Tag and data configuration for fine-grained cache memory

Family Cites Families (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652858A (en) 1994-06-06 1997-07-29 Hitachi, Ltd. Method for prefetching pointer-type data structure and information processing apparatus therefor
US5721874A (en) * 1995-06-16 1998-02-24 International Business Machines Corporation Configurable cache with variable, dynamically addressable line sizes
US5809566A (en) 1996-08-14 1998-09-15 International Business Machines Corporation Automatic cache prefetch timing with dynamic trigger migration
US6557079B1 (en) 1999-12-20 2003-04-29 Emc Corporation Remote data facility prefetch
JP3812258B2 (ja) 2000-01-13 2006-08-23 株式会社日立製作所 キャッシュ記憶装置
US6728840B1 (en) 2000-10-20 2004-04-27 Emc Corporation Methods and apparatus for providing host controlled caching of data in a storage system
US6584549B2 (en) 2000-12-29 2003-06-24 Intel Corporation System and method for prefetching data into a cache based on miss distance
TWI229290B (en) 2002-09-11 2005-03-11 Sunplus Technology Co Ltd Storage structure and the method capable of storing and forwarding instructions and data
US6983356B2 (en) 2002-12-19 2006-01-03 Intel Corporation High performance memory device-state aware chipset prefetcher
US7177985B1 (en) 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7200719B2 (en) 2003-07-31 2007-04-03 Freescale Semiconductor, Inc. Prefetch control in a data processing system
US7225318B2 (en) 2003-10-08 2007-05-29 Intel Corporation Dynamic prefetch in continuous burst read operation
US7434004B1 (en) 2004-06-17 2008-10-07 Sun Microsystems, Inc. Prefetch prediction
US7380066B2 (en) 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor
US7350029B2 (en) 2005-02-10 2008-03-25 International Business Machines Corporation Data stream prefetching in a microprocessor
US20060248280A1 (en) 2005-05-02 2006-11-02 Al-Sukhni Hassan F Prefetch address generation implementing multiple confidence levels
US20060248279A1 (en) 2005-05-02 2006-11-02 Al-Sukhni Hassan F Prefetching across a page boundary
US7506105B2 (en) 2005-05-02 2009-03-17 Freescale Semiconductor, Inc. Prefetching using hashed program counter
US7350030B2 (en) 2005-06-29 2008-03-25 Intel Corporation High performance chipset prefetcher for interleaved channels
US7793067B2 (en) 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
JP4915774B2 (ja) 2006-03-15 2012-04-11 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US7590800B2 (en) 2006-06-30 2009-09-15 Seagate Technology Llc 2D dynamic adaptive data caching
JP4304676B2 (ja) 2006-10-31 2009-07-29 日本電気株式会社 データ転送装置、データ転送方法、及びコンピュータ装置
US20090006813A1 (en) 2007-06-28 2009-01-01 Abhishek Singhal Data forwarding from system memory-side prefetcher
JP4829191B2 (ja) 2007-08-30 2011-12-07 株式会社東芝 キャッシュシステム
US7873791B1 (en) 2007-09-28 2011-01-18 Emc Corporation Methods and systems for incorporating improved tail cutting in a prefetch stream in TBC mode for data storage having a cache memory
US8122195B2 (en) 2007-12-12 2012-02-21 International Business Machines Corporation Instruction for pre-fetching data and releasing cache lines
US8069311B2 (en) 2007-12-28 2011-11-29 Intel Corporation Methods for prefetching data in a memory storage structure
US8266409B2 (en) * 2009-03-03 2012-09-11 Qualcomm Incorporated Configurable cache and method to configure same
US8180763B2 (en) 2009-05-29 2012-05-15 Microsoft Corporation Cache-friendly B-tree accelerator
US20120278560A1 (en) 2009-10-04 2012-11-01 Infinidat Ltd. Pre-fetching in a storage system that maintains a mapping tree
US8327077B2 (en) 2009-11-13 2012-12-04 International Business Machines Corporation Method and apparatus of parallel computing with simultaneously operating stream prefetching and list prefetching engines
US9081501B2 (en) 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8589627B2 (en) * 2010-08-27 2013-11-19 Advanced Micro Devices, Inc. Partially sectored cache
US8527704B2 (en) * 2010-11-11 2013-09-03 International Business Machines Corporation Method and apparatus for optimal cache sizing and configuration for large memory systems
CN103380417B (zh) * 2011-02-18 2016-08-17 英特尔公司(特拉华州公司) 用于从存储器请求所存储的数据的方法及系统
US20130013867A1 (en) 2011-07-06 2013-01-10 Advanced Micro Devices, Inc. Data prefetcher mechanism with intelligent disabling and enabling of a prefetching function
US9753858B2 (en) * 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US8996840B2 (en) 2011-12-23 2015-03-31 International Business Machines Corporation I/O controller and method for operating an I/O controller
US9026739B2 (en) 2012-03-07 2015-05-05 Advanced Micro Devices, Inc. Multimode prefetcher
US9262328B2 (en) 2012-11-27 2016-02-16 Nvidia Corporation Using cache hit information to manage prefetches
US20140181415A1 (en) 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Prefetching functionality on a logic die stacked with memory
US9280474B2 (en) 2013-01-03 2016-03-08 Intel Corporation Adaptive data prefetching
US9769030B1 (en) 2013-02-11 2017-09-19 Amazon Technologies, Inc. Page prefetching
US9110677B2 (en) 2013-03-14 2015-08-18 Sandisk Technologies Inc. System and method for predicting and improving boot-up sequence
CN104133780B (zh) 2013-05-02 2017-04-05 华为技术有限公司 一种跨页预取方法、装置及系统
US9378021B2 (en) 2014-02-14 2016-06-28 Intel Corporation Instruction and logic for run-time evaluation of multiple prefetchers
KR20150096220A (ko) 2014-02-14 2015-08-24 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9256541B2 (en) 2014-06-04 2016-02-09 Oracle International Corporation Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
US9535842B2 (en) 2014-08-28 2017-01-03 Oracle International Corporation System and method for performing message driven prefetching at the network interface
US10001927B1 (en) 2014-09-30 2018-06-19 EMC IP Holding Company LLC Techniques for optimizing I/O operations
KR102130578B1 (ko) 2014-12-02 2020-07-06 에스케이하이닉스 주식회사 반도체 장치
JP6438777B2 (ja) * 2015-01-30 2018-12-19 ルネサスエレクトロニクス株式会社 画像処理装置および半導体装置
US9563564B2 (en) 2015-04-07 2017-02-07 Intel Corporation Cache allocation with code and data prioritization
US9696931B2 (en) 2015-06-12 2017-07-04 International Business Machines Corporation Region-based storage for volume data and metadata
US10067872B2 (en) 2015-06-22 2018-09-04 Advanced Micro Devices, Inc. Memory speculation for multiple memories
US9934148B2 (en) 2015-06-23 2018-04-03 Advanced Micro Devices, Inc. Memory module with embedded access metadata
US9971694B1 (en) 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
KR102362941B1 (ko) 2015-09-03 2022-02-16 삼성전자 주식회사 적응적으로 캐시를 관리하는 방법 및 장치
US9734070B2 (en) 2015-10-23 2017-08-15 Qualcomm Incorporated System and method for a shared cache with adaptive partitioning
US9767028B2 (en) 2015-10-30 2017-09-19 Advanced Micro Devices, Inc. In-memory interconnect protocol configuration registers
US9832277B2 (en) 2015-11-13 2017-11-28 Western Digital Technologies, Inc. Systems and methods for adaptive partitioning in distributed cache memories
US10387315B2 (en) 2016-01-25 2019-08-20 Advanced Micro Devices, Inc. Region migration cache
US10180905B1 (en) 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US9904624B1 (en) 2016-04-07 2018-02-27 Apple Inc. Prefetch throttling in a multi-core system
JP6627629B2 (ja) 2016-04-14 2020-01-08 富士通株式会社 演算処理装置、および演算処理装置の制御方法
US10796220B2 (en) 2016-05-24 2020-10-06 Marvell Asia Pte, Ltd. Systems and methods for vectorized FFT for multi-dimensional convolution operations
US20180018266A1 (en) 2016-07-18 2018-01-18 Advanced Micro Devices, Inc. Stride prefetcher for inconsistent strides
US10521350B2 (en) 2016-07-20 2019-12-31 International Business Machines Corporation Determining the effectiveness of prefetch instructions
US9886385B1 (en) 2016-08-25 2018-02-06 Apple Inc. Content-directed prefetch circuit with quality filtering
US10866897B2 (en) 2016-09-26 2020-12-15 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer
US10452551B2 (en) 2016-12-12 2019-10-22 Intel Corporation Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register
US10331567B1 (en) 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
US10503652B2 (en) 2017-04-01 2019-12-10 Intel Corporation Sector cache for compression
US10346309B1 (en) 2017-04-26 2019-07-09 Apple Inc. Sequential prefetch boost
US10191845B2 (en) 2017-05-26 2019-01-29 International Business Machines Corporation Prefetch performance
US10248574B2 (en) 2017-05-30 2019-04-02 Intel Corporation Input/output translation lookaside buffer prefetching
US10678692B2 (en) 2017-09-19 2020-06-09 Intel Corporation Method and system for coordinating baseline and secondary prefetchers
US10394717B1 (en) 2018-02-16 2019-08-27 Microsoft Technology Licensing, Llc Central processing unit cache friendly multithreaded allocation
US10963394B2 (en) 2018-04-16 2021-03-30 Samsung Electronics Co., Ltd. System and method for optimizing performance of a solid-state drive using a deep neural network
US10614007B2 (en) 2018-04-20 2020-04-07 Qualcomm Incorporated Providing interrupt service routine (ISR) prefetching in multicore processor-based systems
KR102518095B1 (ko) 2018-09-12 2023-04-04 삼성전자주식회사 스토리지 장치 및 시스템
US11347994B2 (en) 2018-10-15 2022-05-31 Intel Corporation Weight prefetch for in-memory neural network execution
US11656992B2 (en) 2019-05-03 2023-05-23 Western Digital Technologies, Inc. Distributed cache with in-network prefetch
US11163683B2 (en) 2019-08-01 2021-11-02 International Business Machines Corporation Dynamically adjusting prefetch depth
US11301386B2 (en) 2019-08-01 2022-04-12 International Business Machines Corporation Dynamically adjusting prefetch depth
US11023380B2 (en) 2019-09-10 2021-06-01 Western Digital Technologies, Inc. Non-volatile storage system with filtering of data samples for a monitored operational statistic
US11573900B2 (en) 2019-09-11 2023-02-07 Intel Corporation Proactive data prefetch with applied quality of service
US11327891B2 (en) 2019-09-20 2022-05-10 Samsung Electronics Co., Ltd. Prefetching operations in storage devices
US11294808B2 (en) 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US20210390053A1 (en) 2020-06-15 2021-12-16 Micron Technology, Inc. Host-Assisted Memory-Side Prefetcher
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
US11507516B2 (en) 2020-08-19 2022-11-22 Micron Technology, Inc. Adaptive cache partitioning

Also Published As

Publication number Publication date
US20220222180A1 (en) 2022-07-14
US20210365376A1 (en) 2021-11-25
US11693775B2 (en) 2023-07-04
KR20220159470A (ko) 2022-12-02
EP4154121A1 (en) 2023-03-29
WO2021236800A1 (en) 2021-11-25
US11294808B2 (en) 2022-04-05

Similar Documents

Publication Publication Date Title
CN115443454A (zh) 自适应高速缓存
US10282292B2 (en) Cluster-based migration in a multi-level memory hierarchy
US20090070526A1 (en) Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US11507516B2 (en) Adaptive cache partitioning
US20140181402A1 (en) Selective cache memory write-back and replacement policies
US10255191B2 (en) Logical memory address regions
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
US20110276762A1 (en) Coordinated writeback of dirty cachelines
US11281585B2 (en) Forward caching memory systems and methods
US20170177482A1 (en) Computing system having multi-level system memory capable of operating in a single level system memory mode
US20180032429A1 (en) Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators
US20150039836A1 (en) Methods and apparatus related to data processors and caches incorporated in data processors
US20170083444A1 (en) Configuring fast memory as cache for slow memory
US20180095884A1 (en) Mass storage cache in non volatile level of multi-level system memory
US20210056030A1 (en) Multi-level system memory with near memory capable of storing compressed cache lines
US9128856B2 (en) Selective cache fills in response to write misses
US10915453B2 (en) Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures
US11775431B2 (en) Cache memory with randomized eviction
EP3506112A1 (en) Multi-level system memory configurations to operate higher priority users out of a faster memory level
US11526448B2 (en) Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning
US11782830B2 (en) Cache memory with randomized eviction
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof
US20200133884A1 (en) Nvram system memory with memory side cache that favors written to items and/or includes regions with customized temperature induced speed settings
KR101591583B1 (ko) 캐싱 장치 및 방법

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20221206

WW01 Invention patent application withdrawn after publication