CN109564549B - 数据高速缓存区域预取器 - Google Patents

数据高速缓存区域预取器 Download PDF

Info

Publication number
CN109564549B
CN109564549B CN201780050452.2A CN201780050452A CN109564549B CN 109564549 B CN109564549 B CN 109564549B CN 201780050452 A CN201780050452 A CN 201780050452A CN 109564549 B CN109564549 B CN 109564549B
Authority
CN
China
Prior art keywords
region
access
line
prefetcher
data cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780050452.2A
Other languages
English (en)
Other versions
CN109564549A (zh
Inventor
唐纳德·W·麦考利
威廉·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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN109564549A publication Critical patent/CN109564549A/zh
Application granted granted Critical
Publication of CN109564549B publication Critical patent/CN109564549B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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
    • G06F2212/1021Hit rate 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/60Details of cache memory
    • G06F2212/6024History based prefetching
    • 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/6026Prefetching based on access pattern detection, e.g. stride based prefetch

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

当数据高速缓存未命中发生时,数据高速缓存区域预取器创建区域。每个区域包括邻近每个数据高速缓存未命中的预定范围的数据线路,并且用相关联的指令指针寄存器(RIP)标记。所述数据高速缓存区域预取器比较后续存储器请求与每个现有区域的所述预定范围的数据线路。对于每个匹配,所述数据高速缓存区域预取器设置访问位,并且试图基于所述所设置的访问位来识别伪随机访问模式。所述数据高速缓存区域预取器使适当计数器递增或递减以追踪所述伪随机访问模式发生的频率。如果所述伪随机访问模式频繁发生,那么下次使用相同RIP和模式处理存储器请求时,所述数据高速缓存区域预取器针对所述RIP根据所述伪随机访问模式预取所述数据线路。

Description

数据高速缓存区域预取器
相关申请的交叉引用
本申请要求2016年8月19日提交的美国临时申请No.62/377,314、2016年10月13日提交的美国专利申请No.15/292,777和2016年11月25日提交的欧洲申请No.EP16200806.4的权益,所述申请以引用方式并入本文,就像在本文完整阐述一样。
背景技术
许多处理设备利用高速缓存来减少访问存储器中存储的信息所需要的平均时间。高速缓存是存储预期将会相对频繁使用的指令或数据的副本的较小且较快速的存储器。例如,中央处理单元(CPU)是一类使用高速缓存的处理器,它们通常与高速缓存或高速缓存存储器元件的分级结构相关联。诸如图形处理单元的其他处理器也实现高速缓存系统。预期将由CPU使用的指令或数据从(相对较大且较慢的)主存储器移动到高速缓存中。当CPU需要读取或写入主存储器中的位置时,CPU首先检查所要存储器位置的副本是否包括在高速缓存存储器中。如果这个位置包括在高速缓存中(高速缓存命中),那么CPU可对高速缓存位置中的副本执行读取或写入操作。如果这个位置不包括在高速缓存中(高速缓存未命中),那么CPU需要访问主存储器中存储的信息,并且在一些情况下,所述信息可从主存储器复制并添加到高速缓存。高速缓存的适当配置和操作可将存储器访问的平均延迟减少低于主存储器延迟且接近高速缓存延迟的值。
预取器用于高速缓存中线路中的信息被请求之前填充这些线路。预取器监测与处理器上运行的应用程序相关联的存储器请求,并且使用所监测的请求来确定或预测处理器有可能访问存储器区域中特定序列的存储器地址,其中存储器区域中所述特定序列的存储器地址通常称为流。预取器追踪多个流并且针对不同流独立地预取数据。
附图说明
通过以下举例给出的描述结合附图可以得到更详细的理解,附图中:
图1是根据某些具体实施的使用数据高速缓存区域预取器的系统的高阶框图;
图2是根据某些具体实施的数据高速缓存区域预取器的高阶框图;
图3是根据某些具体实施的用于数据高速缓存区域预取器的线路条目表结构中线路条目的框图和流程图;
图4是根据某些具体实施的数据高速缓存区域预取器中区域历史表结构的流程图;
图5A1、5A2和5B是根据某些具体实施的与数据高速缓存区域预取器一起使用的方法的实例流程图;以及
图6是可实现一个或多个公开具体实施的实例设备的框图。
具体实施方式
本文描述一种数据高速缓存区域预取器。数据高速缓存区域预取器组织由程序生成的高速缓存访问模式(例如,响应于加载或存储指令),并且发出预取请求以将数据从主存储器拷贝到预计未来可能请求所述数据的数据高速缓存。具体地,数据高速缓存区域预取器试图检测在给定指令访问数据线路之后初始访问数据线路的预定范围内的其他数据线路随后被访问的模式。包括初始访问数据线路的数据线路的预定范围被称为区域,并且每个区域用指令指针寄存器(RIP)标记。接着,使用与每个区域相关联的模式来通过相同RIP预取数据线路以用于后续访问。
图1是根据某些具体实施的使用数据高速缓存区域预取器160的系统100的高阶框图。处理系统100包括处理器105,所述处理器被配置为访问主存储器110中存储的指令或数据。处理器105包括用于执行指令或操纵数据的至少一个核心115,以及通过将选定指令或数据存储在高速缓存系统117来加速对指令或数据的访问的分级(或多级)高速缓存系统117。所描述的处理系统100为说明性的,并且其他架构和配置可在不偏离本公开的范围的情况下实现。
高速缓存系统117包括二级(L2)高速缓存120,用于存储在主存储器110中存储的指令或数据的副本。在具体实施中,L2高速缓存120与主存储器110是16路相关联的,由此主存储器110中的每线路有可能被拷贝到L2高速缓存120中的特定16线路(传统上称作“路”)或从L2高速缓存120中的特定16线路拷贝。相对于主存储器110,L2高速缓存120是使用较小且较快速的存储器元件来实现。L2高速缓存120在逻辑上或物理上被部署为更靠近核心115(相对于主存储器110),由此信息可在核心115与L2高速缓存120之间较快速地或以较低延迟交换。
高速缓存系统117还包括L1高速缓存125,用于存储在主存储器110或L2高速缓存120中存储的指令或数据的副本。相对于L2高速缓存120,L1高速缓存125是使用较小且较快速的存储器元件来实施,由此在L1高速缓存125的各线路中存储的信息可由处理器105快速地检索。L1高速缓存125可在逻辑上或物理上部署为更靠近核心115(相对于主存储器110和L2高速缓存120),由此信息可在核心115与L1高速缓存125之间较快速地或以较低延迟交换(相对于主存储器110与L2高速缓存120之间的通信)。在具体实施中,使用包括诸如L0高速缓存、L1高速缓存、L2高速缓存、L3高速缓存等元件的不同多级高速缓存。在一些具体实施中,较高级高速缓存包括一个或多个较低级高速缓存,由此较低级高速缓存中的各线路也存储在所包括的较高级高速缓存中。
L1高速缓存125被拆分为用于存储指令和数据的一级(L1)高速缓存,称为L1-I高速缓存130和L1-D高速缓存135。将L1高速缓存125拆分或分区为用于仅存储指令的L1-I高速缓存130和用于仅存储数据的L1-D高速缓存135,允许这些高速缓存部署为分别更靠近有可能请求指令或数据的条目。因此,这种布置减少争用、线材延迟,并且通常降低与指令和数据相关联的延迟。在一个具体实施中,替代策略决定L1-I高速缓存130中的线路用L2高速缓存120中的指令替代,而L1-D高速缓存135中的线路用L2高速缓存120中的数据替代。
处理器105还包括流预取器150和数据高速缓存区域预取器160,所述预取器用于填充高速缓存125、130、135中的一者或多者中的数据线路。尽管流预取器150和数据高速缓存区域预取器160描绘为处理器105内的单独元件,流预取器150和数据高速缓存区域预取器160可实现为其他元件的部分。在具体实施中,流预取器150和数据高速缓存区域预取器160是硬件预取器。在具体实施中,流预取器150和数据高速缓存区域预取器160监测与在核心115中运行的应用程序相关联的存储器请求。例如,流预取器150和数据高速缓存区域预取器160监测存储器请求(例如,数据线路访问),所述存储器请求导致高速缓存命中或未命中,所述未命中记录在未命中地址缓冲器(MAB)145中。尽管流预取器150和数据高速缓存区域预取器160均确定或预测核心115有可能访问主存储器110中存储器地址的特定序列(名义上称为流),每个预取器以不同方式处置访问。
流预取器150检测由核心115执行的两个或更多个邻接且顺序的存储器访问。序列的方向是基于顺序存储器访问的临时序列而确定的,并且核心115使用此方向来通过基于当前或先前顺序存储器访问外推而预测未来存储器访问。接着,流预取器150从主存储器110提取预测位置中的信息,并且将此信息存储在适当的高速缓存中,由此使得在核心115请求所述信息之前所述信息就为可用的。
通常,当数据高速缓存未命中发生时,数据高速缓存区域预取器160创建区域。每个区域包括邻近每个数据高速缓存未命中的预定范围的数据线路,并且用相关联的RIP标记。接着,数据高速缓存区域预取器160比较后续存储器请求与每个现有区域的预定范围的数据线路。对于每个匹配,数据高速缓存区域预取器160设置访问位,并且试图基于所设置的访问位来识别伪随机访问模式。数据高速缓存区域预取器160稍后使适当计数器递增或递减以追踪伪随机访问模式发生的频率。如果伪随机访问模式频繁发生(例如,基于预设阈值),那么下次使用相同RIP处理存储器请求时,数据高速缓存区域预取器160针对所述RIP根据伪随机访问模式预取数据线路。
在具体实施中,流预取器150与数据高速缓存区域预取器160之间存在反馈。所述反馈用于节流流预取器150。例如,标志的启用允许数据高速缓存区域预取器160阻止流预取器150根据待决数据高速缓存区域预取请求作用于新创建的流,如下文所描述。
图2是根据某些具体实施的数据高速缓存区域预取器200的高阶框图。数据高速缓存区域预取器200包括联接到区域历史表210(用训练结构填充的备用结构)的线路条目表205(训练结构)。本文所述的表条目的数量和字段的大小仅为说明性的,并且其他值可在不偏离本公开的范围的情况下实现。
线路条目表205包括预定数量的线路条目215。在具体实施中,线路条目表205包括32个条目。每个线路条目215包括RIP字段220、数据线路的地址字段222、访问位字段224和第二线路访问位字段226。在具体实施中,RIP字段220是20位字段,地址字段222是44位字段,访问位字段224是11位字段,并且第二线路访问位字段226是3位字段。在具体实施中,线路条目表205是使用内容可寻址存储器(CAM)实现的。
区域历史表210包括预定数量的区域历史条目230,所述条目在一个具体实施中使用RIP[19:0]和Addr[5:4](其中后者也称为偏移)的9位散列索引。在具体实施中,区域历史表210包括512个条目。每个区域历史表条目230具有访问位/计数器字段238,其中访问位/计数器字段238中的每一位(位0除外)具有2位计数器。在具体实施中,访问位/计数器字段238是22位二维阵列或数据结构,包括11个条目并且每条目对应一个2位计数器。在具体实施中,2位计数器是递增/递减计数器。
一旦数据高速缓存未命中,来自处理器的存储器请求或数据线路访问就插入至线路条目表205以创建区域。每个区域的RIP字段220和地址字段222用与每个未命中存储器请求相关联的RIP和地址填充。由数据线路的预定范围限定的每个区域邻近未命中数据高速缓存的存储器请求。访问位字段224包括针对数据线路的预定范围内的每个数据线路的一位。访问位字段224中的预定位置或位被命名为主位置或主位。主位是未命中数据高速缓存并创建特定区域的存储器请求。在示出的具体实施中,预定范围为10个数据线路,并且范围为相对于主位的+6数据线路和-4数据线路,其中主位为位0或位置0。比较后续存储器请求(例如使用CAM)以确定后续存储器请求是否在数据线路的预定范围内。针对预定范围内的每个后续存储器请求,在区域的访问位字段224中设置对应位。
在访问位字段224中设置访问位建立区域历史表210用以有可能预取数据线路的伪随机模式。具体地,当线路条目表205中的存储器请求老化并且具有通过设置访问位字段224中的一些位而建立的有效模式时,将存储器请求逐出到区域历史表210,并且填充如上所述的字段。使用第二线路访问位字段226来确定伪随机模式是否指示两个或更多个邻接且顺序的存储器访问(即,非有效模式),在这种情况下所述区域并不移动到区域历史表210并且由流预取器150处置,如图1所示。
区域历史表210追踪具有给定RIP和偏移的存储器请求遵照所建立的模式后跟对周围数据线路的请求的次数。使用访问位/计数器字段238中的2位计数器来保持追踪信息。在具体实施中,当更新区域历史表条目230时,访问位/计数器字段238中的每个单个的2位递增/递减计数器递增(如果线路条目中的对应访问位为1)或递减(如果线路条目中的对应访问位为0)。当递减时,2位递增/递减计数器在0处饱和。当递增时,2位递增/递减计数器在3处饱和。当后续数据高速缓存未命中创建新线路条目时,使用相关联的RIP和偏移在区域历史表210中选择一个条目,那么使用访问位/计数器字段238中的2位计数器来通过与阈值(例如,2)比较确定预取是否适当。如果预取被批准,那么将适当或相关信息发送到区域预取生成单元250以生成预取请求,所述单元又发送预取请求到预取请求先入先出(FIFO)缓冲器(未示出)。
图3是根据某些具体实施的用于数据高速缓存区域预取器的线路条目表结构中线路条目300的框图和流程图。每个线路条目300包括RIP字段305、数据高速缓存未命中的地址字段310、访问位字段315和第二(2nd)线路访问位字段320。在具体实施中,RIP字段305是20位字段,地址字段310是44位字段,访问位字段315是11位字段,并且第二线路访问位字段320是3位字段。在具体实施中,访问位字段315表示数据高速缓存区域预取器的从+6到-4数据线路的范围,其中位0是与数据高速缓存未命中相关联的数据线路或地址(如上所述命名为“主位”)。
使用第二线路访问位字段320来确定是否存在相对于主位的两个或更多个邻接且顺序的存储器访问。即,使用第二线路访问位字段320来区分顺序(步幅=+1或-1高速缓存线路)流与其他非顺序访问模式。如果第二访问是访问下一顺序(+/-1)高速缓存线路,那么顺序流训练对流/区域的第二访问。流预取器处置被排除到区域历史表以外的顺序流。具体地,如果第二线路访问位设置为+1和-1,那么对应流或相关联区域并不移动到区域历史表。如果对区域的第二访问不是访问下一顺序(+/-1)高速缓存线路,那么将第二线路访问位设置为0。第二线路访问位0指示对区域的第二访问不是访问下一顺序(+/-1)高速缓存线路。具有非顺序访问模式的这些线路条目是包括在区域历史表中的候选者。
在操作上,将数据高速缓存(Dc)未命中状态用作线路条目表的输入(步骤350)。不更新现有区域的每个数据高速缓存未命中创建新区域,所述新区域被输入到新线路条目300中并用适当字段填充,如本文论述(步骤352)。根据最近最少使用替换算法逐出旧线路条目300。如果旧线路条目300中的访问位字段315和第二线路访问位字段320中存在有效模式,那么使用旧线路条目300更新区域历史表(步骤354)。
图4是根据某些具体实施的数据高速缓存区域预取器中区域历史表405的流程图400。区域历史表405包括多个区域历史表条目410,所述条目以RIP和偏移编索引。每个区域历史表条目410包括访问位/计数器字段416,所述字段针对访问位/计数器字段416中每一位包括2位计数器。在具体实施中,访问位/计数器字段416是22位二维阵列或数据结构,包括11个条目并且每条目对应一个2位计数器。使用地址偏移414(示为带有地址位5和4的八字偏移)来允许多个不同的线路访问模式存储在区域历史表405中,由此可基于初始数据线路访问(即,主位)位于64字节高速缓存线路内的位置而针对给定RIP预取多个不同数据线路访问模式。如果区域内的初始数据访问靠近数据线路的开头或结尾,那么可能需要预取附加数据线路或数据线路的不同模式。更具体地,区域预取器追踪由程序生成的对系统存储器区域的加载/存储存储器访问的伪随机序列。加载/存储存储器访问通常为4、8或16字节,比通常为64字节的高速缓存线路小得多。区域预取器将所述加载/存储存储器访问映射到创建所述区域的初始存储器访问高速缓存未命中周围的64B高速缓存线路的第二较粗略伪随机模式。所述第二较粗略伪随机模式为线路访问位。
即便假设加载/存储存储器访问的伪随机序列是符合的,不同存储器区域使用相同地址偏移,并且所述4、8或16字节存储器访问到64B高速缓存线路(线路访问位)的映射取决于创建所述区域的初始存储器访问高速缓存未命中是否访问高速缓存线路的开头、中间或结尾而改变。
将初始存储器访问的地址偏移414(Addr[5:4])包括在用于访问区域历史表的索引中,允许多个不同线路访问模式基于系统存储器内的区域相对于64B高速缓存线路边界的对准而存储在相同RIP的区域历史表中。
在操作上,当从线路条目表逐出旧线路条目300时,并且如果旧线路条目300中的访问位字段315和第二线路访问位字段320存在有效模式,那么使用旧线路条目300来更新区域历史表(步骤420)。具体地,将旧线路条目300的给定RIP和地址偏移用作从区域历史表405读出区域历史表条目410的索引。使用访问位/计数器字段416中的2位计数器来追踪给定RIP和地址偏移遵照所建立的模式的次数。检查旧线路条目300中访问位字段315中的每一位。如果线路访问位字段315为1,那么数据高速缓存区域预取器使区域历史线路表410中访问位/计数器字段416中的对应2位计数器递增。如果线路访问位字段315为0,那么数据高速缓存区域预取器使区域历史线路表410中访问位/计数器字段416中的对应2位计数器递减。
当后续数据高速缓存未命中创建新线路条目300时,将与新线路条目300相关联的RIP和地址偏移用作从区域历史表405读出区域历史表条目410的索引。接着,数据高速缓存区域预取器检查访问位/计数器字段416中的每个2位计数器。如果计数器高于阈值(例如,2),那么数据高速缓存区域预取器针对对应高速缓存线路偏移生成区域预取请求(步骤424)。所述高速缓存线路偏移相对于新线路条目300的主地址。将所生成的区域预取请求置于数据高速缓存预取请求队列(步骤426)。
图5A1和5A2是根据某些具体实施的与数据高速缓存区域预取器一起使用的方法的实例流程图500。一旦数据高速缓存未命中,数据高速缓存区域预取器就接收存储器请求(步骤505)。将存储器请求与线路条目表中的全部线路条目比较(步骤510)。如果存在匹配,那么设置线路条目表中的适当位(步骤512)。如果不存在匹配,那么创建新区域并输入到线路条目表中的线路条目(步骤515)。此时出现两个不同的处理分支:1)如图5A1和5A2所述更新区域历史表,和2)如图5B中所述生成区域预取请求(表示为图5A1中的“B”)。仍参考图5A1和5A2,将主位设置为存储器请求的地址,并且将RIP存储在线路条目中(步骤517)。查看后续存储器请求以确定是否在存储器请求的预定范围内(步骤519)。如果后续存储器请求在预定范围内,那么设置特定区域的线路条目中的特定线路访问位(步骤521)。如果后续存储器请求不在预定范围内,那么创建新区域(步骤522)。
在给定时间,随着新线路条目创建,每个线路条目将老化(步骤523)。此时,查看线路访问位以确定存在的模式(步骤525)。如果所检测的模式是邻接且顺序的(例如,存在相对于主位的递增或递减模式),那么丢弃线路条目(步骤527)。在具体实施中,当((第二线路访问位[+1]AND线路访问位[+6:+1](全部设为1))等于1)或((第二线路访问位[-1]AND线路访问位[-1:-4]((全部设为1))等于1)时,数据高速缓存区域预取器丢弃所述线路条目。如果所检测的模式是伪随机的(步骤529)(例如,设置位6、2和3),那么将存储器请求的RIP和地址用作索引,准备好将所述线路条目移动到区域历史表(步骤531)。即,将线路条目的RIP和地址偏移用作从区域历史表读出条目的索引。如果线路条目中的对应访问位设置为1,那么数据高速缓存区域预取器使特定计数器递增(步骤537)。如果线路条目中的对应访问位设置为0,那么数据高速缓存区域预取器使特定计数器递减。如果所检测的模式不是伪随机,那么由其他预取器或模块处置所述线路条目以用于其他处理(步骤532)。
现在参考图5B,使用新条目的RIP和偏移(图4中示为带有地址位5和4的八字偏移)来读取区域历史表(步骤550)。接着,数据高速缓存区域预取器检查区域历史表条目的访问字段中的每个2位计数器(步骤555)。如果计数器高于阈值,那么数据高速缓存区域预取器生成区域预取请求(步骤570)。将所生成的区域预取请求置于数据高速缓存预取请求队列(步骤575)。如果计数器并不高于阈值,那么继续处理(步骤560)。即,此时并不生成区域预取请求。
图6是可实现一个或多个公开实施方案的一个或多个部分的实例设备600的框图。设备600可包括,例如,头戴式设备、服务器、计算机、游戏设备、手持设备、机顶盒、电视、移动电话或平板电脑。设备600包括处理器602、存储器604、存储设备606、一个或多个输入设备608和一个或多个输出设备610。设备600还可任选地包括输入驱动器612和输出驱动器614。应当理解,设备600可以包括图6中未示出的附加部件。
处理器602可以包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU,或一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。存储器604与处理器602可位于同一管芯上,或可与处理器602分开定位。存储器604可以包括易失性存储器或非易失性存储器,例如,随机访问存储器(RAM)、动态RAM或高速缓存。
存储装置606可包括固定存储设备或可移动存储设备,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备608可包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物识别扫描器或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出设备610可包括显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器612与处理器602和输入设备608通信,并且容许处理器602接收来自输入设备608的输入。输出驱动器614与处理器602和输出设备610通信,并且容许处理器602向输出设备610发送输出。应注意,输入驱动器612和输出驱动器614为任选部件,并且在输入驱动器612和输出驱动器614不存在的情况下,设备600将以相同方式操作。
通常,在具体实施中,数据高速缓存区域预取器包括具有多个线路条目的线路条目数据表,其中每个线路条目包括由预定数量的访问位限定的区域,并且其中,如果所述区域内的高速缓存线路被请求,那么设置给定线路条目的访问位。数据高速缓存区域预取器还包括被配置为从线路条目数据表接收逐出的区域历史表。数据高速缓存区域预取器根据可逐出线路条目中的某些访问位确定访问模式,并且排除将具有预定访问模式的线路条目逐出到区域历史表。在具体实施中,数据高速缓存区域预取器将具有伪随机访问模式的线路条目逐出到区域历史表。在具体实施中,使用至少指令指针寄存器(RIP)对区域历史表编索引。在具体实施中,使用偏移对区域历史表进一步编索引,所述偏移针对相同RIP根据对区域的初始访问是在高速缓存线路的开头、结尾还是中间来支持多个伪随机访问模式。在具体实施中,每个区域历史条目包括预定数量的访问位,每个区域历史条目包括针对预定数量的访问位中的某些访问位的计数器,并且取决于可逐出线路条目的所述访问位是否设置,使所述计数器递增或递减。在具体实施中,数据高速缓存区域预取器还包括区域预取生成器,所述区域预取生成器被配置为在与区域历史表中特定区域历史条目中的特定访问位相关联的计数器已达阈值的情况下,从区域历史表接收预取请求。在具体实施中,数据高速缓存区域预取器阻止其他预取器处理待数据高速缓存区域预取器处理的流。在具体实施中,每个线路条目还包括第二访问位,所述第二访问位当后续高速缓存线路请求在主位的预定数量的访问位中的一个访问位内时设置,并且所述第二访问位用于确定被排除逐出到区域历史表的预定访问模式。
在具体实施中,处理系统包括流预取器和数据高速缓存区域预取器。数据高速缓存区域预取器包括具有多个线路条目的线路条目数据表和从线路条目数据表接收逐出的区域历史表。每个线路条目包括由预定数量的访问位限定的区域,并且如果区域内的高速缓存线路被请求,那么设置给定线路条目的访问位。数据高速缓存区域预取器根据可逐出线路条目中的某些访问位确定访问模式,排除将具有预定访问模式的线路条目逐出到区域历史表,并且阻止流预取器处理待数据高速缓存区域预取器处理的流。在具体实施中,数据高速缓存区域预取器将具有伪随机访问模式的线路条目逐出到区域历史表。在具体实施中,使用至少指令指针寄存器(RIP)对区域历史表编索引。在具体实施中,使用偏移对区域历史表进一步编索引,所述偏移针对相同RIP根据对区域的初始访问是在高速缓存线路的开头、结尾还是中间来支持多个伪随机访问模式。在具体实施中,每个区域历史条目包括预定数量的访问位,每个历史条目包括针对预定数量的访问位中的某些访问位的计数器,并且根据相应线路访问位中是否存在所设置的位来使所述计数器递增或递减。在具体实施中,系统包括区域预取生成器,所述区域预取生成器被配置为在与区域历史表中具体区域历史条目中的特定访问位相关联的计数器已达阈值的情况下,从区域历史表接收预取请求。在具体实施中,每个线路条目还包括第二访问位,所述第二访问位当后续高速缓存线路请求在主位的预定数量的访问位中的一个访问位内时设置,并且所述第二访问位用于确定被排除逐出到区域历史表的预定访问模式。
在具体实施中,一种用于数据高速缓存区域预取的方法包括在线路条目表处接收高速缓存线路请求,所述线路条目表具有多个线路条目,其中每个线路条目包括由预定数量的访问位限定的区域。如果高速缓存线路请求在区域内,那么设置给定线路条目的访问位。根据可逐出线路条目中的某些访问位确定访问模式。具有预定访问模式的线路条目被排除逐出到区域历史表,并且具有伪随机访问模式的线路条目被逐出到区域历史表。在具体实施中,使用至少指令指针寄存器(RIP)对区域历史表编索引。在具体实施中,使用RIP和偏移对区域历史表编索引,所述偏移针对相同RIP根据对区域的初始访问是在高速缓存线路的开头、结尾还是中间来支持多个伪随机访问模式。在具体实施中,每个历史线路条目包括针对预定数量的访问位中的某些访问位的计数器,并且根据相应访问位是否被设置来使计数器递增或递减。在具体实施中,在与特定区域历史条目中的特定访问位相关联的计数器满足或超过阈值的情况下,发送预取请求到区域预取生成器。在具体实施中,阻止其他预取器处理待数据高速缓存区域预取器处理的流。在具体实施中,每个线路条目还包括第二访问位,并且当后续高速缓存线路请求在主位的预定数量的访问位中的一个访问位内时设置所述第二访问位,并且使用所述第二访问位来确定被排除逐出到区域历史表的预定访问模式。
通常并且在不限制本文所述实施方案的情况下,计算机可读非暂时性介质包括在处理系统中执行时致使处理系统执行一种用于数据高速缓存区域预取的方法的指令。
应当理解,基于本文中的公开内容,许多变型是可能的。尽管上文以特定组合来描述特征和元件,但是每个特征和元件可在没有其他特征和元件的情况下单独使用,或者可在具有或没有其他特征和元件的情况下以各种组合来使用。
所提供的方法可以在通用计算机、处理器或处理器核心中实现。以举例的方式,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP内核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、其他任何类型的集成电路(IC)和/或状态机。这类处理器可以通过使用处理后的硬件描述语言(HDL)指令和包括网表的其他中间数据(这类指令能够存储在计算机可读介质上)的结果配置制造过程来制造。此类处理的结果可为集成电路光罩,接着所述集成电路光罩用于半导体制造工艺以制造可实现具体实施的方面的处理器。
本文提供的方法或流程图可以在并入非暂时性计算机可读存储介质中的计算机程序、软件或固件中实现,以用于由通用计算机或处理器执行。非暂时性计算机可读存储介质的实例包括只读存储器(ROM)、随机访问存储器(RAM)、寄存器、高速缓存、半导体存储器设备、诸如内部硬盘和可移除磁盘的磁性介质、磁光介质、以及诸如CD-ROM盘和数字通用光盘(DVD)的光学介质。
***

Claims (23)

1.一种数据高速缓存区域预取器,其包括:
线路条目数据表,所述线路条目数据表包括多个线路条目,
其中,每个线路条目包括基于数据高速缓存未命中而创建并且由预定数量的访问位限定的区域,并且如果所述区域内的高速缓存线路被请求,那么设置给定线路条目的访问位,其中所述预定数量的访问位对应于邻近与所述数据高速缓存未命中相关联的数据线路的预定范围的数据线路;以及
区域历史表,所述区域历史表被配置为从所述线路条目数据表接收逐出项,所述区域历史表包括多个区域历史条目;
其中,所述数据高速缓存区域预取器被配置为根据可逐出线路条目中的某些访问位确定访问模式;
其中具有预定非顺序访问模式的可逐出线路条目被移动到所述区域历史表,并且具有顺序访问模式的可逐出线路条目不被移动到所述区域历史表而由流预取器处置;并且
其中每个区域历史条目包括根据对应可逐出线路条目的所述访问位是否被设置来递增或递减的计数器;并且
所述数据高速缓存区域预取器还被配置为在所述计数器已达到阈值的情况下生成预取请求。
2.如权利要求1所述的数据高速缓存区域预取器,其中,所述预定非顺序访问模式是伪随机访问模式。
3.如权利要求1所述的数据高速缓存区域预取器,其中,所述区域历史表使用指令指针寄存器编索引。
4.如权利要求3所述的数据高速缓存区域预取器,其中,所述区域历史表使用偏移进一步编索引,所述偏移针对相同指令指针寄存器根据对区域的初始访问是在高速缓存线路的开头、结尾还是中间来支持多个伪随机访问模式。
5.如权利要求1所述的数据高速缓存区域预取器,其中:
每个区域历史条目包括所述预定数量的访问位,并且
所述计数器针对于所述预定数量的访问位中的某些访问位。
6.如权利要求1所述的数据高速缓存区域预取器,其中所述数据高速缓存区域预取器被配置为在与所述区域历史表中特定区域历史条目中的特定访问位相关联的计数器已达所述阈值的情况下,从所述区域历史表接收预取请求。
7.如权利要求1所述的数据高速缓存区域预取器,其中,所述数据高速缓存区域预取器被配置为阻止其他预取器处理待所述数据高速缓存区域预取器处理的流。
8.如权利要求1所述的数据高速缓存区域预取器,其中,每个线路条目还包括第二访问位,当后续高速缓存线路请求在主位的所述预定数量的访问位中的一个访问位内时设置所述第二访问位,并且所述第二访问位用于确定所述顺序访问模式。
9.一种处理系统,其包括:
流预取器;以及
根据权利要求1所述的数据高速缓存区域预取器,其中所述数据高速缓存区域预取器被配置为阻止所述流预取器处理待所述数据高速缓存区域预取器处理的流。
10.如权利要求9所述的系统,其中,所述预定非顺序访问模式是伪随机访问模式。
11.如权利要求9所述的系统,其中,所述区域历史表使用指令指针寄存器编索引。
12.如权利要求11所述的系统,其中,所述区域历史表使用偏移进一步编索引,所述偏移针对相同指令指针寄存器根据对区域的初始访问是在高速缓存线路的开头、结尾还是中间来支持多个伪随机访问模式。
13.如权利要求9所述的系统,其中:
每个区域历史条目包括所述预定数量的访问位,
所述计数器针对于所述预定数量的访问位中的某些访问位。
14.如权利要求9所述的系统,其中所述数据高速缓存区域预取器被配置为在与所述区域历史表中特定区域历史条目中的特定访问位相关联的计数器已达所述阈值的情况下,从所述区域历史表接收预取请求。
15.如权利要求9所述的系统,其中,每个线路条目还包括第二访问位,当后续高速缓存线路请求在主位的所述预定数量的访问位中的一个访问位内时设置所述第二访问位,并且所述第二访问位用于确定所述顺序访问模式。
16.一种用于数据高速缓存区域预取的方法,所述方法包括:
在线路条目表处接收高速缓存线路请求,所述线路条目表包括多个线路条目,其中每个线路条目包括基于数据高速缓存未命中而创建并且由预定数量的访问位限定的区域,其中所述预定数量的访问位对应于邻近与所述数据高速缓存未命中相关联的数据线路的预定范围的数据线路;
如果所述高速缓存线路请求在所述区域内,那么设置给定线路条目的访问位;
根据可逐出线路条目中的某些访问位确定访问模式;
将具有预定非顺序访问模式的可逐出线路条目移动到区域历史表,所述区域历史表包括多个区域历史条目,其中每个区域历史条目包括根据对应可逐出线路条目的所述访问位是否被设置来递增或递减的计数器;
由流预取器处置具有顺序访问模式的可逐出线路条目,其中具有所述顺序访问模式的所述可逐出线路条目不被移动到所述区域历史表;以及
在所述计数器已达到阈值的情况下生成预取请求。
17.如权利要求16所述的方法,其中所述预定非顺序访问模式是伪随机访问模式。
18.如权利要求16所述的方法,其还包括:
使用指令指针寄存器对区域历史表编索引。
19.如权利要求18所述的方法,其还包括:
使用所述指令指针寄存器和偏移对所述区域历史表编索引,所述偏移针对相同指令指针寄存器根据对区域的初始访问是在高速缓存线路的开头、结尾还是中间来支持多个伪随机访问模式。
20.如权利要求16所述的方法,其中,所述区域历史表包括所述预定数量的访问位,并且所述计数器针对于所述预定数量的访问位中的某些访问位。
21.如权利要求16所述的方法,其还包括:
在与所述区域历史表中特定区域历史条目中的特定访问位相关联的计数器满足或超过所述阈值的情况下,发送预取请求到区域预取生成器。
22.如权利要求16所述的方法,其还包括:
阻止其他预取器处理待数据高速缓存区域预取器处理的流,所述数据高速缓存区域预取器包括所述线路条目表和所述区域历史表。
23.如权利要求16所述的方法,其中,每个线路条目还包括第二访问位,所述方法还包括:
当后续高速缓存线路请求在主位的所述预定数量的访问位中的一个访问位内时,设置所述第二访问位;以及
使用所设置的所述第二访问位来确定所述顺序访问模式。
CN201780050452.2A 2016-08-19 2017-08-08 数据高速缓存区域预取器 Active CN109564549B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662377314P 2016-08-19 2016-08-19
US62/377,314 2016-08-19
US15/292,777 US20180052779A1 (en) 2016-08-19 2016-10-13 Data cache region prefetcher
US15/292,777 2016-10-13
EP16200806.4A EP3285172A1 (en) 2016-08-19 2016-11-25 Data cache region prefetcher
EP16200806.4 2016-11-25
PCT/US2017/045842 WO2018034882A1 (en) 2016-08-19 2017-08-08 Data cache region prefetcher

Publications (2)

Publication Number Publication Date
CN109564549A CN109564549A (zh) 2019-04-02
CN109564549B true CN109564549B (zh) 2024-05-24

Family

ID=57396378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780050452.2A Active CN109564549B (zh) 2016-08-19 2017-08-08 数据高速缓存区域预取器

Country Status (6)

Country Link
US (2) US20180052779A1 (zh)
EP (1) EP3285172A1 (zh)
JP (1) JP7308745B2 (zh)
KR (1) KR102467817B1 (zh)
CN (1) CN109564549B (zh)
WO (1) WO2018034882A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528450B (zh) * 2016-10-27 2019-09-17 上海兆芯集成电路有限公司 数据预先提取方法及使用此方法的装置
US10445241B2 (en) * 2018-03-06 2019-10-15 Arm Limited Prefetching using offset data to access a pointer within a current data element for use in prefetching a subsequent data element
US10713053B2 (en) * 2018-04-06 2020-07-14 Intel Corporation Adaptive spatial access prefetcher apparatus and method
US11281585B2 (en) 2018-08-30 2022-03-22 Micron Technology, Inc. Forward caching memory systems and methods
US10976964B2 (en) * 2019-06-27 2021-04-13 Western Digital Technologies, Inc. Storage system and method for hit-rate-score-based selective prediction of future random read commands
US11416263B1 (en) 2021-02-12 2022-08-16 Western Digital Technologies, Inc. Boosted boot procedure by background re-arrangement of read patterns
US20230058668A1 (en) * 2021-08-18 2023-02-23 Micron Technology, Inc. Selective cache line memory encryption
US20240111677A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Region pattern-matching hardware prefetcher

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1604055A (zh) * 2003-09-30 2005-04-06 国际商业机器公司 利用永久历史页表数据预取数据到高速缓存的装置和方法
CN1849591A (zh) * 2002-11-22 2006-10-18 皇家飞利浦电子股份有限公司 使用高速缓存未命中模式来寻址跨距预测表
CN103218309A (zh) * 2011-12-06 2013-07-24 辉达公司 多级指令高速缓存预取

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3973129B2 (ja) * 2000-07-19 2007-09-12 株式会社日立製作所 キャッシュメモリ装置及びそれを用いた中央演算処理装置
US7234040B2 (en) * 2002-01-24 2007-06-19 University Of Washington Program-directed cache prefetching for media processors
US6961820B2 (en) * 2003-02-13 2005-11-01 International Business Machines Corporation System and method for identifying and accessing streaming data in a locked portion of a cache
US7194582B1 (en) * 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US8356142B1 (en) * 2003-11-12 2013-01-15 Nvidia Corporation Memory controller for non-sequentially prefetching data for a processor of a computer system
US7774578B2 (en) * 2006-06-07 2010-08-10 Advanced Micro Devices, Inc. Apparatus and method of prefetching data in response to a cache miss
US9274965B2 (en) * 2008-12-15 2016-03-01 International Business Machines Corporation Prefetching data
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
US8677049B2 (en) * 2009-04-13 2014-03-18 Advanced Micro Devices, Inc. Region prefetcher and methods thereof
WO2011031796A2 (en) * 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
US8200902B2 (en) * 2010-06-10 2012-06-12 Arm Limited Cache device for coupling to a memory device and a method of operation of such a cache device
US9026739B2 (en) * 2012-03-07 2015-05-05 Advanced Micro Devices, Inc. Multimode prefetcher
US9116815B2 (en) * 2012-06-20 2015-08-25 Advanced Micro Devices, Inc. Data cache prefetch throttle
US9262327B2 (en) * 2012-06-29 2016-02-16 Intel Corporation Signature based hit-predicting cache
US9323695B2 (en) * 2012-11-12 2016-04-26 Facebook, Inc. Predictive cache replacement
US9021210B2 (en) * 2013-02-12 2015-04-28 International Business Machines Corporation Cache prefetching based on non-sequential lagging cache affinity
US9015422B2 (en) * 2013-07-16 2015-04-21 Apple Inc. Access map-pattern match based prefetch unit for a processor
US9575778B2 (en) * 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US9582282B2 (en) * 2014-07-17 2017-02-28 Arm Limited Prefetching using a prefetch lookup table identifying previously accessed cache lines
US10496410B2 (en) * 2014-12-23 2019-12-03 Intel Corporation Instruction and logic for suppression of hardware prefetchers
US10108549B2 (en) * 2015-09-23 2018-10-23 Intel Corporation Method and apparatus for pre-fetching data in a system having a multi-level system memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1849591A (zh) * 2002-11-22 2006-10-18 皇家飞利浦电子股份有限公司 使用高速缓存未命中模式来寻址跨距预测表
CN1604055A (zh) * 2003-09-30 2005-04-06 国际商业机器公司 利用永久历史页表数据预取数据到高速缓存的装置和方法
CN103218309A (zh) * 2011-12-06 2013-07-24 辉达公司 多级指令高速缓存预取

Also Published As

Publication number Publication date
US20220283955A1 (en) 2022-09-08
WO2018034882A1 (en) 2018-02-22
JP2019528532A (ja) 2019-10-10
JP7308745B2 (ja) 2023-07-14
EP3285172A1 (en) 2018-02-21
CN109564549A (zh) 2019-04-02
KR20190038835A (ko) 2019-04-09
US20180052779A1 (en) 2018-02-22
KR102467817B1 (ko) 2022-11-16

Similar Documents

Publication Publication Date Title
CN109564549B (zh) 数据高速缓存区域预取器
CN106537362B (zh) 数据处理装置和在数据处理装置中处理地址转换的方法
US9274959B2 (en) Handling virtual memory address synonyms in a multi-level cache hierarchy structure
US7856532B2 (en) Cache logic, data processing apparatus including cache logic, and a method of operating cache logic
US8140759B2 (en) Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US9563568B2 (en) Hierarchical cache structure and handling thereof
US9501419B2 (en) Apparatus, systems, and methods for providing a memory efficient cache
US9348753B2 (en) Controlling prefetch aggressiveness based on thrash events
JP2017509998A (ja) キャッシュ汚染を低減するために専用キャッシュセットにおける専用プリフェッチポリシーを競合させることに基づいた適応キャッシュプリフェッチング
US20160041914A1 (en) Cache Bypassing Policy Based on Prefetch Streams
KR20240070630A (ko) 의사 lru 보충 에이지 정보로 재참조 간격 예측(rrip)
JP2014115851A (ja) データ処理装置及びその制御方法
US20140281238A1 (en) Systems and methods for accessing cache memory
KR101731006B1 (ko) 공격적 프리페칭에 의해 발생된 프로세서 캐시 오염을 감소시키기 위한 방법 및 장치
US11853220B2 (en) Prefetcher training
US20140136785A1 (en) Enhanced cache coordination in a multilevel cache
KR20230161484A (ko) Dram 캐시 태그 프리페처를 위한 방법 및 장치
US8856444B2 (en) Data caching method
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy
US20240111677A1 (en) Region pattern-matching hardware prefetcher
US20240232090A1 (en) Multi-trained scalable prefetcher, and related methods

Legal Events

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