CN102521158B - 一种实现数据预取的方法及装置 - Google Patents

一种实现数据预取的方法及装置 Download PDF

Info

Publication number
CN102521158B
CN102521158B CN201110415405.8A CN201110415405A CN102521158B CN 102521158 B CN102521158 B CN 102521158B CN 201110415405 A CN201110415405 A CN 201110415405A CN 102521158 B CN102521158 B CN 102521158B
Authority
CN
China
Prior art keywords
address
prefetch
cache
value
difference
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
CN201110415405.8A
Other languages
English (en)
Other versions
CN102521158A (zh
Inventor
程旭
党向磊
王箫音
佟冬
陆俊林
易江芳
王克义
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.)
Beijing Zhongzhi Core Technology Co Ltd
Original Assignee
BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING
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 BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING filed Critical BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING
Priority to CN201110415405.8A priority Critical patent/CN102521158B/zh
Publication of CN102521158A publication Critical patent/CN102521158A/zh
Application granted granted Critical
Publication of CN102521158B publication Critical patent/CN102521158B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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
    • 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
    • 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

一种实现数据预取的方法及装置
技术领域
本发明涉及现代微处理器访存性能优化的方法,尤其涉及实现数据预取的方法及装置。
背景技术
随着集成电路制造工艺的进步,处理器与存储器的性能不断提高。但由于二者在生产工艺与发展路线上的差异,处理器的性能提升速度明显快于存储器,从而使得处理器与存储器之间的性能差距持续增大。这导致当访存指令发生片上缓存(On-Chip Cache)失效而需访问主存时,整个过程往往耗时上百个甚至几百个时钟周期,形成存储墙(Memory Wall)问题。
基于程序访存局部性原理的高速缓存(Cache)和层次化存储结构(Memory Hierarchy)在填补处理器与存储器之间的性能鸿沟方面发挥了重要作用,但仍然不能有效地解决存储墙问题。对于科学计算等工作集规模很大且存储密集的程序,访存延时仍旧在程序执行时间中占据很大的比例。
虽然超标量处理器可通过乱序执行(Out-of-Order Execution)和非阻塞高速缓存(Non-blocking Cache)等技术,使得访存指令在发生缓存失效并访问主存的过程中后续的与该指令数据无关的指令仍能够继续执行,从而使处理器具备了一定程度的访存延时包容能力;然而,由于失效访存指令仍然会阻塞后续数据相关指令的执行和所有指令的提交,当发生片上缓存失效时,耗时的存储访问仍将导致流水线最终由于指令窗口溢出而停顿,造成处理器性能损失。
随着处理器与存储器之间性能差距的不断增大,访存延时逐渐成为制约处理器性能的关键因素。
数据预取技术是在处理器真正需要某数据之前就预先向主存发出访存请求,以隐藏访存延时。数据预取技术主要可分为软件预取和硬件预取。其中,软件预取通常是由程序员或编译器在代码中插入预取指令实现,因而会引起额外的指令执行开销。硬件预取通过捕获程序动态执行过程中可重复的访存模式(Memory Access Pattern)来预测后续的访存地址,并自动发起预取请求,故能够有效地利用程序运行时刻的动态访存特性来隐藏访存延时。
已有研究提出了很多经典的硬件预取方法。例如,跨距预取器(StridePrefetcher),旨在对规则的跨距访存模式(即相邻访存地址的差值为常数的访存模式)进行预取。差值相关预取器(Delta Correlation Prefetcher)通过记录并捕获由失效地址流生成的差值流(相邻失效地址之差组成的差值流)中的相关性规律来进行预取。其中,差值关联预取器既可以预取规则的跨距访存模式,又可以预取更加复杂的其它访存模式,因此可以获得更好的性能优化效果,并且预取器需要花费的存储开销并不大。
但是,差值相关预取器仍然存在很多优化空间。一方面,差值相关预取器使用循环队列结构的全局历史缓冲器(GHB,Global History Buffer)按时间顺序保存最近发生缓存失效的所有失效地址,对于一个跨距访存模式,虽然使用上一个失效地址和跨距值即可完整表示,但差值相关预取器需使用多个全局历史缓冲器表项来保存该跨距访存模式中最近发生缓存失效的所有失效地址,因而存储利用效率较低。另一方面,差值相关预取器在遇到模式匹配时会按照规则发出多个预取请求,并且无法判断当前的预取地址是否为已预取过的地址,因此会产生大量冗余预取,浪费了处理器访问片上缓存的带宽和功耗。
因此,需要对差值相关预取器的上述两个问题进行优化,通过改善差值相关预取器的存储利用效率以及过滤预取器发出的冗余预取,来提高处理器中预取器的效率。
发明内容
本发明所要解决的技术问题是提供一种实现数据预取的方法及装置,能够改善差值相关预取器的存储利用效率。
为了解决上述技术问题,本发明提供了一种实现数据预取的预取器装置,其特征在于,包括:
访存模式识别单元,用于将全局失效地址流划分为局部失效地址流,按时间顺序将所述局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成相应的预取地址;以及,
全局历史缓冲器,用于按时间顺序保存属于同一局部失效地址流中除了所述最近发生的两个缓存失效的地址以外的其它缓存失效地址序列信息,并链接属于所述同一局部失效地址流的地址信息,以计算生成局部差值流捕获差值相关访存模式并生成相应的预取地址。
其中,所述访存模式识别单元含有全相联或组相联结构的多个表项,每个表项保存一个局部失效地址流的历史访存信息,并通过缓存失效地址的标签位作为索引查找,每一表项包含标签域、最近缓存失效的第一地址索引域、第二地址索引域,状态域,跨距访存模式频度域,局部失效地址序列链接域,
其中,状态域所包括的:
捕获外状态,初始捕获状态,跨距捕获状态以及差值状态中的任意一种,
状态域至少包括捕获外状态、初始捕获状态、跨距捕获状态以及差值状态中的任意一种,还包括为缓存中每个缓存行增加预取标志位,用于在预取回来的数据填入缓存时,置相应缓存行的预取标志位为“已预取数据”的值;当发生缓存命中且命中行的预取标志位为该“已预取数据”的值时,将相应的预取标志位清零,并使用发生缓存命中的访问的地址更新预取器装置;
所述访存模式识别单元中的通过访存模式识别单元按时间顺序将该局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成预取地址,具体用于:
对于每一个缓存失效或缓存命中且命中行的所述预取标志位为所述“已预取数据”的值,若用缓存失效地址的标签位查找所述访存模式识别单元所述表项的标签域命中,则将为该缓存失效地址分配所述访存模式识别单元的一个新表项或根据替换算法选择出的一个旧表项,然后将该表项设置为所述初始捕获状态,并将第二地址索引域的初始值设为该缓存失效地址的行索引,同时设置所述跨距访存模式频度域为初始值0;
在所述初始捕获状态下,如果后续缓存失效地址的标签位与所述访存模式识别单元所述表项的标签域的值相同,则将该表项的第二地址索引域的值赋给第一地址索引域,并将第二地址索引域的值设置为当前缓存失效地址的行索引,然后将该表项的状态转换到所述跨距捕获状态;
在所述跨距捕获状态下,若最新的缓存失效地址的行索引与第二地址索引域两值的差值与第二地址索引域与第一地址索引域两值的差值相同,则将所述跨距访存模式频度域的值加1;在初次捕获到所述跨距访存模式时,根据预取度发出多个预取请求,并使用第二地址索引域与第一地址索引域两值的差值计算预取地址。
进一步地,该装置还包括:
差值缓冲器,用于与全局历史缓冲器和所述访存模式识别单元相配合,计算出两个依序发生的缓存失效的地址差值,并将计算出的地址差值的序列作为局部差值流缓存,以通过比较找到匹配的差值对,生成可重复访存模式的预取地址。
进一步地,该装置还包括:
预取队列单元,用于通过预取队列按时间顺序保存访存模式识别单元或差值缓冲器生成的预取地址;在生成的预取地址被放入预取队列之前,与预取队列中的预取地址逐个比较,若预取队列中没有与该生成的预取地址相同的预取地址,则将该生成的预取地址放入预取队列,并针对队列中的预取地址逐个向存储系统发出预取请求;否则过滤该生成的预取地址。
进一步地,该装置还包括设置有多个表项的预取过滤器,其中:
预取过滤器,预取地址被从预取队列单元中替换出后,若用该预取地址的高位和低位索引命中一个表项,则将该表项的值置为命中值,否则将该表项的值置为非命中值;当通过生成的预取地址的高位和低位索引到一个表项,且该表项的值为命中值,则过滤该新产生的预取地址;否则将该产生的预取地址存入预取队列单元,等待发往存储系统。
为了解决上述技术问题,本发明提供了一种实现数据预取的方法,包括:
通过访存模式识别单元划分全局失效地址流为局部失效地址流,按时间顺序将该局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成预取地址;以及,
通过全局历史缓冲器按时间顺序保存属于同一局部失效地址流中除了最近发生的两个缓存失效的地址以外的其它缓存失效地址序列信息,并链接属于所述同一局部失效地址流的地址信息,以计算生成局部差值流捕获可重复的访存模式并生成预取地址;
其中,所述访存模式识别单元含有全相联或组相联结构的多个表项,每个表项保存一个局部失效地址流的历史访存信息,并通过缓存失效地址的标签位作为索引查找,所述表项包含标签域,最近缓存失效的第一地址索引域、第二地址索引域,状态域,跨距访存模式频度域,局部失效地址序列链接域;其中,
状态域至少包括捕获外状态、初始捕获状态、跨距捕获状态以及差值状态中的任意一种,还包括为缓存中每个缓存行增加预取标志位,用于在预取回来的数据填入缓存时,置相应缓存行的预取标志位为“已预取数据”的值;当发生缓存命中且命中行的预取标志位为该“已预取数据”的值时,将相应的预取标志位清零,并使用发生缓存命中的访问的地址更新预取器装置;
所述通过访存模式识别单元按时间顺序将该局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成预取地址,具体包括:
对于每一个缓存失效或缓存命中且命中行的所述预取标志位为所述“已预取数据”的值,若用缓存失效地址的标签位查找所述访存模式识别单元所述表项的标签域命中,则将为该缓存失效地址分配所述访存模式识别单元的一个新表项或根据替换算法选择出的一个旧表项,然后将该表项设置为所述初始捕获状态,并将第二地址索引域的初始值设为该缓存失效地址的行索引,同时设置所述跨距访存模式频度域为初始值0;
在所述初始捕获状态下,如果后续缓存失效地址的标签位与所述访存模式识别单元所述表项的标签域的值相同,则将该表项的第二地址索引域的值赋给第一地址索引域,并将第二地址索引域的值设置为当前缓存失效地址的行索引,然后将该表项的状态转换到所述跨距捕获状态;
在所述跨距捕获状态下,若最新的缓存失效地址的行索引与第二地址索引域两值的差值与第二地址索引域与第一地址索引域两值的差值相同,则将所述跨距访存模式频度域的值加1;在初次捕获到所述跨距访存模式时,根据预取度发出多个预取请求,并使用第二地址索引域与第一地址索引域两值的差值计算预取地址。
进一步地,通过全局历史缓冲器计算生成局部差值流捕获差值相关访存模式并生成预取地址,具体包括:
计算出两个依序发生的缓存失效的地址差值,并将计算出的地址差值的序列作为局部差值流缓存在一差值缓冲器中;
在所述跨距捕获状态下,若最新的缓存失效地址的行索引与第二地址索引域两个值的差值和第二地址索引域与第一地址索引域两个值的差值不相同,则将第一地址索引域的值保存到全局历史缓冲器中,并使局部失效地址序列链接域的指针指向全局历史缓冲器中保存第一地址索引域的值的表项,同时,将第二地址索引域的值赋给第一地址索引域,并将第二地址索引域的值设置为当前缓存失效地址的行索引,然后将该表项的状态转换到差值状态;
在差值状态下,若最新的缓存失效地址的行索引与访存模式识别单元表项中的第二地址索引域两个值的差值,与该表项中第二地址索引域与第一地址索引域两个值的差值不相同,则保持表项仍处在差值状态,使用最新的缓存失效地址的行索引与第二地址索引域两个值的差值和第二地址索引域与第一地址索引域两个值的差值组成源差值对,将第一地址索引域的值保存到全局历史缓冲器中,并更新相应表项的局部失效地址序列链接域的指针,同时,将第二地址索引域的值赋给第一地址索引域,并将第二地址索引域的值设置为当前缓存失效地址的行索引;随后用缓存失效地址计算得到的源差值对按时间顺序与由访存模式识别单元表项的第二地址索引域、第一地址索引域和所述全局历史缓冲器中保存的局部失效地址序列组成的局部失效地址流计算出来的局部差值流中的目标差值对进行比较,若比较结果相等,则根据预取度发出多个预取请求,并使用差值缓冲器中保存的差值生成预取地址。
进一步地,该方法还包括:
预取器装置通过预取队列按时间顺序缓存生成的预取地址,并逐个向存储系统发出预取请求。
进一步地,预取器装置在将生成的预取地址缓存在预取队列单元之前,还包括:
预取器装置将该生成的预取地址与预取队列中的预取地址逐个比较,若发现预取队列中有与该生成的预取地址相同的预取地址,则过滤生成的预取地址,否则,将该生成的预取地址放入预取队列。
进一步地,该方法还包括:
当预取地址被从预取队列单元中替换出去后,若用该预取地址的高位和低位索引命中一设置多个表项的预取过滤器中的一个表项,则将命中表项的值置为“命中值”,否则将命中表项的值置为“非命中值”。
进一步地,预取器在将生成的预取地址缓存在预取队列单元之前,还包括:
预取器用该生成的预取地址的高位和低位索引命中预取过滤器中的一个表项,且索引到的表项值为“命中值”,则过滤该生成的预取地址;否则将该生成的预取地址存入预取队列单元,等待发往存储系统。
本发明通过改善差值相关预取器的存储利用效率,并通过减少对预取器性能提升没有贡献的冗余预取,使得预取器在相同存储开销的情况下能够获得更好的性能优化效果,同时可有效降低预取器访问片上缓存的带宽需求和功耗开销。
附图说明
图1为本发明的实现数据预取的预取器装置实施例的内部结构示意图;
图2为本发明的实施例的访存模式识别单元的状态机工作示意图。
具体实施方式
以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。应当理解,以下描述的实施例仅用于说明和解释本发明,并不用于限定本发明的技术方案。
如图1所示,表示了本发明的实现数据预取的预取器装置实施例的内部结构,包括访存模式识别单元,其中:
访存模式识别单元,用于将全局失效地址流划分为局部失效地址流,按时间顺序将该局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成预取地址。
上述预取器装置实施例还包括全局历史缓冲器(GHB),其中:
全局历史缓冲器,用于按时间顺序保存属于同一局部失效地址流中除了最近发生的两个缓存失效的地址以外的其它缓存失效地址序列信息,并链接属于同一局部失效地址流的地址信息,以计算生成局部差值流捕获差值相关访存模式并生成预取地址。
在上述预取器装置实施例中,
访存模式识别单元含有全相联或组相联结构的多个表项,每个表项保存一个局部失效地址流(即一个存储区域)的历史访存信息,并通过缓存失效地址的高位(Tag)作为索引查找,每一表项包含如下6个域:
标签域(Tag),用于标识不同的局部失效地址流(即不同的存储区域);
最近缓存失效的第一地址索引域(LastIdx0)、第二地址索引域(LastIdx1),用于按时间顺序保存局部失效地址流中最近发生的两个缓存失效的地址各自的行索引部分,在捕获跨距访存模式时生成跨距值,在捕获非跨距访存模式时与全局历史缓冲器中的局部失效地址序列一起组成失效地址流;
状态域(State),用于标识每一表项所处的状态,包括捕获外状态(INV)、初始捕获状态(INIT)、跨距捕获状态(STRIDE)以及差值状态(DELTA)中的任意一种;
跨距访存模式频度域(Cnt),用于记录被捕获到的跨距访存模式的次数,以判断该跨距访存模式是否被初次捕获;
局部失效地址序列链接域(Ptr),用于作为指向表项所对应的在全局历史缓冲器中局部失效地址序列的指针。
对于每一个局部失效地址流,预取器通过对应的访存模式识别单元表项保存最近的两个缓存失效地址的行索引,更旧的缓存失效地址的行索引则保存在全局历史缓冲器中,由全局历史缓冲器用指针(Ptr)链接起来组成局部失效地址序列,如图1所示;即访存模式识别单元中的行索引和全局历史缓冲器中的局部失效地址序列组成了局部失效地址流。
上述预取器装置实施例还包括:
差值缓冲器,用于与全局历史缓冲器和访存模式识别单元相配合,计算出两个依序发生的缓存失效的地址差值(如图1中的各个小三角所示),并将计算出的地址差值的序列作为局部差值流缓存,以通过差值对比较找到匹配的差值对,从而生成可重复访存模式的预取地址。
对于非跨距访存模式,本发明使用当前的缓存失效地址和访存模式识别单元中保存的两个缓存失效地址一起共三个缓存失效地址计算出来的两个差值(差值对),按时间顺序(从新到旧)与差值缓冲器中缓存的局部差值流中的差值对比较,若比较结果相等,则捕获到相匹配的可重复访存模式,可通过后续的差值和当前的缓存失效地址之和计算生成预取地址。
上述预取器装置实施例还包括:
预取队列单元,用于按时间顺序保存访存模式识别单元或差值缓冲器生成的预取地址;在将新产生的预取地址放入预取队列之前,通过与预取队列中保存的预取地址(包括已发往存储系统的和尚未发往存储系统的)逐个比较,发现有比较结果相同的预取地址,则过滤该新产生的预取地址,否则将该新产生的预取地址放入预取队列,并针对队列中的预取地址逐个向存储系统(本实施例中为L2Cache)发出预取请求。
本发明的预取器装置实施例基于上述预取队列单元实现了精确的冗余预取过滤机制。
上述预取器装置实施例还包括:
预取过滤器,包括多个表项,每一表项保存“命中值”(譬如为1)或“非命中值”(譬如为0),并通过预取地址的高位和低位异或的结果索引;当预取地址被从预取队列单元中替换出去后,若用该预取地址的高位和低位索引命中一个表项,则将命中表项的值置为“命中值”;若用预取器新产生的预取地址的高位和低位索引命中一个表项,并且索引到的表项值为“命中值”,则过滤该预取地址;否则将该预取地址存入预取队列单元,等待发往存储系统;
预取器在将新产生的预取地址与预取队列中的预取地址进行比较的同时,还将新产生的预取地址输出给预取过滤器。预取过滤器用该新产生的预取地址的高位和低位索引命中一个表项;预取器将未过滤掉的预取地址放入预取队列单元中,等待访问存储系统。
本发明可通过三种过滤机制对预取器发出的冗余预取进行识别和过滤,以减少对性能提升没有贡献的冗余预取,从而降低预取器访问片上缓存的带宽需求和功耗开销。
第一种过滤机制,通过访存模式识别单元实现。
当访存模式识别单元初次捕获到一个跨距访存模式时,根据预取度(Prefetch Degree,譬如为4)发出多个预取请求;当再次捕获到该跨距访存模式时,计算出该局部失效地址流中尚未被预取的下一个地址,并以该地址作为预取地址发出一个预取请求。通过上述过程可在预取跨距访存模式的地址时,避免发出冗余预取。
第二种过滤机制,通过预取队列单元实现。
预取器通过预取队列单元按时间顺序保存生成的预取地址,并逐个向存储系统发出预取请求。
预取器在将新产生的预取地址放入预取队列之前,使用新产生的预取地址与预取队列中的预取地址逐个比较,若发现预取队列中有与该新产生的预取地址相同的预取地址,则表明该新产生的预取地址是冗余的,直接将其过滤掉,否则,将新产生的预取地址放入预取队列,等待访问存储系统。
可以看出,上述第二种过滤机制通过与已产生的预取地址逐个进行比较进行过滤,因此,能够实现精确的冗余预取过滤。
第三种过滤机制,通过预取过滤器实现。
由于预取队列单元中的表项数目有限(例如在本发明的实施例中为预取队列单元配置为32个表项),因此,只能过滤与最近的数目有限的预取地址重复的新生成的预取地址。
为了扩大预取队列单元过滤的范围,本发明采用预取过滤器进行非精确的冗余预取过滤。也即预取器通过将预取地址的高位和低位异或的结果索引预取过滤器中的表项,实际上是将预取地址的范围折半,对经过折半范围的预取地址进行过滤,显然是一种非精确的冗余预取过滤,它存在着误判的可能性。
为了减少预取过滤器出现误判的概率,本发明的预取器定期将预取过滤器的所有表项清零。在本发明的上述装置实施例中,为预取过滤器配置1024个表项,且预取器每发出100个预取请求,便将预取过滤器清零。
此外,为了防止对预取回来的缓存行的访问打乱程序原有的失效地址流(某些访问在不进行预取时是失效,而在进行预取时变成了命中),本发明为缓存中每个缓存行增加预取标志位(譬如为1位),用于在预取回来的数据填入缓存时,置相应缓存行的预取标志位为“已预取数据”的值(譬如为1);当发生缓存命中且命中行的预取标志位为该“已预取数据”的值时,将命中行的预取标志位清零,并像发生缓存失效时一样使用该次访问的地址更新预取器。
图2展示了本发明的预取器装置实施例中跨距访存模式过滤单元每一表项的状态机的流程,每个表项被分配到一局部缓存失效地址流(即一个存储区域)到开始进行数据预取的过程中,可能会处于如下四个状态之一:
(1)捕获外状态(INV),表示相应的表项尚未分配给任何存储区域,不参与到访存模式捕获过程中。如图1中所示的INV状态的表项中各个域的值均为空。
(2)初始捕获状态(INIT),表示缓存失效地址进入跨距访存模式的初始捕获。
对于每一个缓存失效或缓存命中且命中行的预取标志位为“已预取数据”的值,使用缓存失效地址的Tag域查找访存模式识别单元,若查找未命中,则该缓存失效地址不属于任何已在预取监测范围的局部缓存失效地址流(存储区域),此时,将为该缓存失效地址分配一个处于INV状态的新表项或根据替换算法选择出来一个旧表项,以对该缓存失效地址所在的存储区域进行监测,然后将该表项设置为初始捕获状态(INIT),并将LastIdx1域的初始值设为该缓存失效地址的行索引,将Cnt的初始值设置为0,表示缓存失效地址进入跨距访存模式的初始捕获。
如图2中所示的3个途径的①,其中一个“首次分配”是分配一个处于INV状态的新表项,另外两个重新分配是据替换算法选择出一个旧表项;无论是分配新表项还是旧表项,都要将其状态更改为INIT状态。
(3)跨距捕获状态(STRIDE),用于捕获跨距访存模式以及使用Cnt域的值控制跨距访存模式的预取地址生成。
在INIT状态下,如果后续缓存失效地址的高位(Tag)与访存模式识别单元表项的Tag域的值相同,说明该缓存失效地址属于该表项,则将表项的LastIdx1域的值赋给LastIdx0域,并将LastIdx1的值设置为当前缓存失效地址的行索引,然后将该表项的状态转换到跨距捕获状态(STRIDE),如图2中所示的②。
在STRIDE状态下,若最新的缓存失效地址的行索引与LastIdx1域两值的差值,与LastIdx1域与LastIdx0域两值的差值相同,表示捕获到一次跨距访存模式,则将Cnt域的值加1。在初次捕获到跨距访存模式(Cnt的值为1)时,根据预取度(Prefetch Degree)发出多个预取请求,并使用LastIdx1域与LastIdx0域两值的差值计算预取地址。随后,每捕获到一次跨距访存模式,表明一个预取的缓存行被处理器消耗,则继续往后预取一个尚未被预取的缓存行。
(4)差值状态(DELTA),用于捕获跨距访存模式或其它可重复的访存模式。
在STRIDE状态下,若最新的缓存失效地址的行索引与LastIdx1域两个值的差值和LastIdx1域与LastIdx0域两个值的差值不相同,表示缓存失效地址流不符合跨距访存模式,则将LastIdx0域的值保存到全局历史缓冲器中,并使Ptr域的指针指向全局历史缓冲器中保存LastIdx0域的值的表项,同时,将LastIdx1域的值赋给LastIdx0域,并将LastIdx1域的值设置为当前缓存失效地址的行索引,然后将该表项的状态转换到差值状态(DELTA),如图2所示的③。
在DELTA状态下,若最新的缓存失效地址的行索引与表项中的LastIdx1域两个值的差值,与表项中LastIdx1域与LastIdx0域两个值的差值相同,表示捕获到一次跨距访存模式,则将表项中Cnt域的值设置为1,根据预取度(Prefetch Degree)发出多个预取请求,并将该表项的状态转换到STRIDE状态,如图2所示的④;否则,表项仍旧保持在DELTA状态,使用最新的缓存失效地址的行索引与LastIdx1域两个值的差值和LastIdx1域与LastIdx0域两个值的差值组成源差值对,并将LastIdx0域的值保存到全局历史缓冲器中,并更新相应表项的Ptr域的指针,同时,将LastIdx1域的值赋给LastIdx0域,并将LastIdx1域的值设置为当前缓存失效地址的行索引;随后使用缓存失效地址计算得到的源差值对按时间顺序(从新到旧)与由访存模式识别单元表项的LastIdx1域、LastIdx0域和全局历史缓冲器中保存的局部失效地址序列组成的局部失效地址流计算出来的局部差值流中的目标差值对进行比较(源差值对与目标差值对比较时,从局部差值流中比源差值对旧的目标差值对开始比较,以避免源差值对与自己进行比较),若比较结果相等,表示找到了相匹配的可重复访存模式,则根据预取度(Prefetch Degree)发出多个预取请求,并使用差值缓冲器中保存的差值生成预取地址。若比较结果不相等,则不发出预取请求。
本发明针对上述预取器装置实施例,相应地还提供了实现数据预取的方法实施例,涉及访存模式识别单元,该方法包括:
通过访存模式识别单元划分全局失效地址流为局部失效地址流,按时间顺序将该局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成预取地址。
上述方法实施例还涉及全局历史缓冲器(GHB),该方法还包括:
通过全局历史缓冲器按时间顺序保存属于同一局部失效地址流中除了最近发生的两个缓存失效的地址以外的其它缓存失效地址序列信息,并链接属于同一局部失效地址流的地址信息,以计算生成局部差值流捕获差值相关访存模式并生成预取地址。
在上述方法实施例中,访存模式识别单元采用全相联或组相联结构的多个表项,每个表项保存一个局部失效地址流的历史访存信息,并通过缓存失效地址的Tag位作为索引查找,每一表项包含如下6个域:
标签域(Tag),用于标识不同的局部失效地址流;
最近缓存失效的第一地址索引域(LastIdx0)、第二地址索引域(LastIdx1),用于按时间顺序保存局部失效地址流中最近发生的两个缓存失效的地址的行索引部分,在捕获跨距访存模式时用以生成跨距值,在捕获非跨距访存模式时与全局历史缓冲器中的局部失效地址序列一起组成失效地址流;
状态域(State),用于标识每一表项所处的状态,包括捕获外状态(INV)、初始捕获状态(INIT)、跨距捕获状态(STRIDE)以及差值状态(DELTA)中的任意一种;
跨距访存模式频度域(Cnt),用于记录被捕获到的跨距访存模式的次数,以判断是否初次捕获跨距访存模式;
局部失效地址序列链接域(Ptr),用于作为指向表项所对应的在全局历史缓冲器中局部失效地址序列的指针。
在上述方法实施例中,状态域(State)所包括的:
捕获外状态,用于表示访存模式识别单元相应的表项尚未分配给任何存储区域,不参与到访存模式捕获过程中;
初始捕获状态,用于表示缓存失效地址进入跨距访存模式的初始捕获;
跨距捕获状态,用于捕获跨距访存模式以及使用Cnt域的值控制跨距访存模式的预取地址生成;
差值状态,用于捕获跨距访存模式或其它可重复的访存模式。
在上述方法实施例中,还包括:
为缓存中每个缓存行增加预取标志位,用于在预取回来的数据填入缓存时,置相应缓存行的预取标志位为“已预取数据”的值;当发生缓存命中且命中行的预取标志位为该“已预取数据”的值时,将相应的预取标志位清零,并使用该次访问的地址更新预取器。
在上述方法实施例中,通过访存模式识别单元按时间顺序将该局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成预取地址,具体包括:
对于每一个缓存失效或缓存命中且命中行的预取标志位为“已预取数据”的值,使用缓存失效地址的标签位查找访存模式识别单元,若查找未命中,则将为该缓存失效地址分配一个新表项或根据替换算法选择出来一个旧表项,以对该缓存失效地址所在的存储区域进行监测,然后将该表项设置为初始捕获状态,并将LastIdx1域的初始值设为该缓存失效地址的行索引,设置Cnt域的值为初始值0;
在初始捕获状态下,如果后续缓存失效地址的Tag位与访存模式识别单元表项的Tag域的值相同,则将表项的LastIdx1域的值赋给LastIdx0域,并将LastIdx1的值设置为当前缓存失效地址的行索引,然后将该表项的状态转换到跨距捕获状态;
在跨距捕获状态下,若最新的缓存失效地址的行索引与LastIdx1域两值的差值,与LastIdx1域与LastIdx0域两值的差值相同,则将Cnt域的值加1;在初次捕获到跨距访存模式(Cnt的值为1)时,根据预取度发出多个预取请求,并使用LastIdx1域与LastIdx0域两值的差值计算预取地址。
随后,每捕获到一次跨距访存模式,表明一个预取的缓存行被处理器消耗,则继续往后预取一个尚未被预取的缓存行。
上述方法实施例还涉及差值缓冲器;通过全局历史缓冲器计算生成局部差值流捕获差值相关访存模式并生成预取地址,具体包括:
计算出两个依序发生的缓存失效的地址差值,并将计算出的地址差值的序列作为局部差值流缓存在差值缓冲器;
在跨距捕获状态下,若最新的缓存失效地址的行索引与LastIdx1域两个值的差值和LastIdx1域与LastIdx0域两个值的差值不相同,则将LastIdx0域的值保存到全局历史缓冲器中,并使Ptr域的指针指向全局历史缓冲器中保存LastIdx0域的值的表项,同时,将LastIdx1域的值赋给LastIdx0域,并将LastIdx1域的值设置为当前缓存失效地址的行索引,然后将该表项的状态转换到差值状态;
在差值状态下,若最新的缓存失效地址的行索引与表项中的LastIdx1域两个值的差值,与表项中LastIdx1域与LastIdx0域两个值的差值不相同,则保持表项仍处在差值状态,使用最新的缓存失效地址的行索引与LastIdx1域两个值的差值和LastIdx1域与LastIdx0域两个值的差值组成源差值对,将LastIdx0域的值保存到全局历史缓冲器中,并更新相应表项的Ptr域的指针,同时,将LastIdx1域的值赋给LastIdx0域,并将LastIdx1域的值设置为当前缓存失效地址的行索引;随后使用缓存失效地址计算得到的源差值对按时间顺序与由访存模式识别单元表项的LastIdx1域、LastIdx0域和全局历史缓冲器中保存的局部失效地址序列组成的局部失效地址流计算出来的局部差值流中的目标差值对进行比较,若比较结果相等,则根据预取度发出多个预取请求,并使用差值缓冲器中保存的差值生成预取地址。
在上述方法实施例中,通过全局历史缓冲器计算生成局部差值流捕获差值相关访存模式并生成预取地址,还包括:
在差值状态下,若最新的缓存失效地址的行索引与表项中的LastIdx1域两个值的差值,与表项中LastIdx1域与LastIdx0域两个值的差值相同,则将表项中Cnt域的值设置为1,根据预取度发出多个预取请求,并将该表项的状态转换到跨距捕获状态。
上述方法实施例还涉及预取队列单元,该方法还包括:
预取器通过预取队列单元按时间顺序缓存生成的预取地址,并逐个向存储系统发出预取请求。
在上述方法实施例中,预取器在将新产生的预取地址缓存在预取队列单元之前,还包括:
预取器将新产生的预取地址与预取队列中的预取地址逐个比较,若发现预取队列中有与该新产生的预取地址相同的预取地址,则过滤新产生的预取地址,否则,将新产生的预取地址放入预取队列。
上述方法实施例还涉及设置多个表项的预取过滤器,该方法还包括:
当预取地址被从预取队列单元中替换出去后,若用该预取地址的高位和低位索引命中该预取过滤器中的一个表项,则将命中表项的值置为“命中值”,否则将命中表项的值置为“非命中值”。
在上述方法实施例中,预取器在将新产生的预取地址缓存在预取队列单元之前,还包括:
预取器用该新产生的预取地址的高位和低位索引命中预取过滤器中的一个表项,且索引到的表项值为“命中值”,则过滤该预取地址;否则将该预取地址存入预取队列单元,等待发往存储系统。
对于本领域的专业人员来说,在了解了本发明内容和原理后,能够在不背离本发明的原理和范围的情况下,根据本发明的方法进行形式和细节上的各种修正和改变,但是这些基于本发明的修正和改变仍在本发明的权利要求保护范围之内。

Claims (10)

1.一种实现数据预取的预取器装置,其特征在于,包括:
访存模式识别单元,用于将全局失效地址流划分为局部失效地址流,按时间顺序将所述局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成相应的预取地址;以及,
全局历史缓冲器,用于按时间顺序保存属于同一局部失效地址流中除了所述最近发生的两个缓存失效的地址以外的其它缓存失效地址序列信息,并链接属于所述同一局部失效地址流的地址信息,以计算生成局部差值流捕获可重复的访存模式并生成预取地址;
其中,所述访存模式识别单元含有全相联或组相联结构的多个表项,每个表项保存一个局部失效地址流的历史访存信息,并通过缓存失效地址的标签位作为索引查找,所述表项包含标签域,最近缓存失效的第一地址索引域、第二地址索引域,状态域,跨距访存模式频度域,局部失效地址序列链接域;其中,
所述状态域至少包括捕获外状态、初始捕获状态、跨距捕获状态以及差值状态中的任意一种,还包括为缓存中每个缓存行增加预取标志位,用于在预取回来的数据填入缓存时,置相应缓存行的预取标志位为“已预取数据”的值;当发生缓存命中且命中行的预取标志位为该“已预取数据”的值时,将相应的预取标志位清零,并使用发生缓存命中的访问的地址更新预取器装置;
所述访存模式识别单元中的通过访存模式识别单元按时间顺序将该局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成预取地址,具体用于:
对于每一个缓存失效或缓存命中且命中行的所述预取标志位为所述“已预取数据”的值,若用缓存失效地址的标签位查找所述访存模式识别单元所述表项的标签域命中,则将为该缓存失效地址分配所述访存模式识别单元的一个新表项或根据替换算法选择出的一个旧表项,然后将该表项设置为所述初始捕获状态,并将第二地址索引域的初始值设为该缓存失效地址的行索引,同时设置所述跨距访存模式频度域为初始值0;
在所述初始捕获状态下,如果后续缓存失效地址的标签位与所述访存模式识别单元所述表项的标签域的值相同,则将该表项的第二地址索引域的值赋给第一地址索引域,并将第二地址索引域的值设置为当前缓存失效地址的行索引,然后将该表项的状态转换到所述跨距捕获状态;
在所述跨距捕获状态下,若最新的缓存失效地址的行索引与第二地址索引域两值的差值与第二地址索引域与第一地址索引域两值的差值相同,则将所述跨距访存模式频度域的值加1;在初次捕获到所述跨距访存模式时,根据预取度发出多个预取请求,并使用第二地址索引域与第一地址索引域两值的差值计算预取地址。
2.按照权利要求1所述的预取器装置,其特征在于,还包括:
差值缓冲器,用于与所述全局历史缓冲器和所述访存模式识别单元相配合,计算出两个依序发生的缓存失效的地址差值,并将计算出的地址差值的序列作为局部差值流缓存,以通过比较找到匹配的差值对,生成所述可重复访存模式的预取地址。
3.按照权利要求2所述的预取器装置,其特征在于,还包括:
预取队列单元,用于通过预取队列按时间顺序保存所述访存模式识别单元或所述差值缓冲器生成的预取地址;在生成的预取地址被放入所述预取队列之前,与所述预取队列中的预取地址逐个比较,若所述预取队列中没有与该生成的预取地址相同的预取地址,则将该生成的预取地址放入所述预取队列,并针对队列中的预取地址逐个向存储系统发出预取请求;否则过滤该生成的预取地址。
4.按照权利要求3所述的预取器装置,其特征在于,还包括设置有多个表项的预取过滤器,其中:
预取过滤器,所述预取地址被从所述预取队列单元中替换出后,若用该预取地址的高位和低位索引命中一个表项,则将该表项的值置为命中值,否则将该表项的值置为非命中值;当通过所述生成的预取地址的高位和低位索引到一个表项,且该表项的值为所述命中值,则过滤该生成的预取地址;否则将该所述生成的预取地址存入预取队列单元,等待发往存储系统。
5.一种实现数据预取的方法,其特征在于,包括:
通过访存模式识别单元划分全局失效地址流为局部失效地址流,按时间顺序将该局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成预取地址;以及,
通过全局历史缓冲器按时间顺序保存属于同一局部失效地址流中除了所述最近发生的两个缓存失效的地址以外的其它缓存失效地址序列信息,并链接属于所述同一局部失效地址流的地址信息,以计算生成局部差值流捕获可重复的访存模式并生成预取地址;
其中,所述访存模式识别单元含有全相联或组相联结构的多个表项,每个表项保存一个局部失效地址流的历史访存信息,并通过缓存失效地址的标签位作为索引查找,所述表项包含标签域,最近缓存失效的第一地址索引域、第二地址索引域,状态域,跨距访存模式频度域,局部失效地址序列链接域;其中,
所述状态域至少包括捕获外状态、初始捕获状态、跨距捕获状态以及差值状态中的任意一种,还包括为缓存中每个缓存行增加预取标志位,用于在预取回来的数据填入缓存时,置相应缓存行的预取标志位为“已预取数据”的值;当发生缓存命中且命中行的预取标志位为该“已预取数据”的值时,将相应的预取标志位清零,并使用发生缓存命中的访问的地址更新预取器装置;
所述通过访存模式识别单元按时间顺序将该局部失效地址流中最近发生的两个缓存失效的地址信息记录为历史访存信息,并根据该记录捕获跨距访存模式并生成预取地址,具体包括:
对于每一个缓存失效或缓存命中且命中行的所述预取标志位为所述“已预取数据”的值,若用缓存失效地址的标签位查找所述访存模式识别单元所述表项的标签域命中,则将为该缓存失效地址分配所述访存模式识别单元的一个新表项或根据替换算法选择出的一个旧表项,然后将该表项设置为所述初始捕获状态,并将第二地址索引域的初始值设为该缓存失效地址的行索引,同时设置所述跨距访存模式频度域为初始值0;
在所述初始捕获状态下,如果后续缓存失效地址的标签位与所述访存模式识别单元所述表项的标签域的值相同,则将该表项的第二地址索引域的值赋给第一地址索引域,并将第二地址索引域的值设置为当前缓存失效地址的行索引,然后将该表项的状态转换到所述跨距捕获状态;
在所述跨距捕获状态下,若最新的缓存失效地址的行索引与第二地址索引域两值的差值与第二地址索引域与第一地址索引域两值的差值相同,则将所述跨距访存模式频度域的值加1;在初次捕获到所述跨距访存模式时,根据预取度发出多个预取请求,并使用第二地址索引域与第一地址索引域两值的差值计算预取地址。
6.按照权利要求5所述的方法,其特征在于,所述通过全局历史缓冲器计算生成局部差值流捕获差值相关访存模式并生成预取地址,具体包括:
计算出两个依序发生的缓存失效的地址差值,并将计算出的地址差值的序列作为局部差值流缓存在一差值缓冲器中;
在所述跨距捕获状态下,若最新的缓存失效地址的行索引与第二地址索引域两个值的差值和第二地址索引域与第一地址索引域两个值的差值不相同,则将第一地址索引域的值保存到所述全局历史缓冲器中,并使所述局部失效地址序列链接域的指针指向所述全局历史缓冲器中保存第一地址索引域的值的表项,同时,将第二地址索引域的值赋给第一地址索引域,并将第二地址索引域的值设置为当前缓存失效地址的行索引,然后将该表项的状态转换到所述差值状态;
在所述差值状态下,若最新的缓存失效地址的行索引与所述访存模式识别单元所述表项中的第二地址索引域两个值的差值与该表项中第二地址索引域与第一地址索引域两个值的差值不相同,则保持表项仍处在差值状态,使用最新的缓存失效地址的行索引与第二地址索引域两个值的差值和第二地址索引域与第一地址索引域两个值的差值组成源差值对,将第一地址索引域的值保存到所述全局历史缓冲器中,并更新相应表项的所述局部失效地址序列链接域的指针,同时,将第二地址索引域的值赋给第一地址索引域,并将第二地址索引域的值设置为当前缓存失效地址的行索引;随后用缓存失效地址计算得到的源差值对按时间顺序与由所述访存模式识别单元表项的第二地址索引域、第一地址索引域和所述全局历史缓冲器中保存的局部失效地址序列组成的局部失效地址流计算出来的局部差值流中的目标差值对进行比较,若比较结果相等,则根据预取度发出多个预取请求,并使用差值缓冲器中保存的差值生成预取地址。
7.按照权利要求6所述的方法,其特征在于,还包括:
预取器装置通过预取队列按时间顺序缓存生成的预取地址,并逐个向存储系统发出预取请求。
8.按照权利要求7所述的方法,其特征在于,所述预取器装置在将生成的预取地址缓存在预取队列单元之前,还包括:
所述预取器装置将该生成的预取地址与预取队列中的预取地址逐个比较,若发现预取队列中有与该生成的预取地址相同的预取地址,则过滤生成的预取地址,否则,将该生成的预取地址放入所述预取队列。
9.按照权利要求8所述的方法,其特征在于,还包括:
当预取地址被从预取队列单元中替换出去后,若用该预取地址的高位和低位索引命中一设置多个表项的预取过滤器中的一个表项,则将命中表项的值置为“命中值”,否则将命中表项的值置为“非命中值”。
10.按照权利要求9所述的方法,其特征在于,所述预取器装置在将生成的预取地址缓存在预取队列单元之前,还包括:
所述预取器装置用该生成的预取地址的高位和低位索引命中预取过滤器中的一个表项,且索引到的表项值为所述“命中值”,则过滤该生成的预取地址;否则将该生成的预取地址存入预取队列单元,等待发往存储系统。
CN201110415405.8A 2011-12-13 2011-12-13 一种实现数据预取的方法及装置 Active CN102521158B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110415405.8A CN102521158B (zh) 2011-12-13 2011-12-13 一种实现数据预取的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110415405.8A CN102521158B (zh) 2011-12-13 2011-12-13 一种实现数据预取的方法及装置

Publications (2)

Publication Number Publication Date
CN102521158A CN102521158A (zh) 2012-06-27
CN102521158B true CN102521158B (zh) 2014-09-24

Family

ID=46292087

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110415405.8A Active CN102521158B (zh) 2011-12-13 2011-12-13 一种实现数据预取的方法及装置

Country Status (1)

Country Link
CN (1) CN102521158B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9483308B2 (en) * 2012-06-29 2016-11-01 Intel Corporation Performance of predicted actions
CN102999443B (zh) * 2012-11-16 2015-09-09 广州优倍达信息科技有限公司 一种计算机缓存系统的管理方法
CN104702507B (zh) * 2015-03-24 2018-09-14 深圳中兴网信科技有限公司 表项动态更新方法及系统
CN105069011A (zh) * 2015-07-07 2015-11-18 安一恒通(北京)科技有限公司 用于管理网页收藏夹的方法、装置及系统
CN108958802B (zh) * 2017-05-17 2020-12-15 华为技术有限公司 一种线程预操作方法、装置和存储介质
US20210303470A1 (en) * 2020-03-27 2021-09-30 Micron Technology, Inc. Sequential prefetching through a linking array
CN113656332B (zh) * 2021-08-20 2023-05-26 中国科学院上海高等研究院 基于合并地址差值序列的cpu缓存数据预取方法
CN114218132B (zh) * 2021-12-14 2023-03-24 海光信息技术股份有限公司 信息预取方法、处理器、电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156633A (zh) * 2011-04-18 2011-08-17 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统
CN102163144A (zh) * 2011-05-05 2011-08-24 浙江大学 嵌入式处理器的硬件数据预取方法
CN102214146A (zh) * 2011-07-28 2011-10-12 中国人民解放军国防科学技术大学 步长自适应的Cache预取方法及其系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917702B2 (en) * 2007-07-10 2011-03-29 Qualcomm Incorporated Data prefetch throttle

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156633A (zh) * 2011-04-18 2011-08-17 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统
CN102163144A (zh) * 2011-05-05 2011-08-24 浙江大学 嵌入式处理器的硬件数据预取方法
CN102214146A (zh) * 2011-07-28 2011-10-12 中国人民解放军国防科学技术大学 步长自适应的Cache预取方法及其系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A Comprehensive Study of Executing ahead Mechanism for In-Order Microprocessors;王箫音等;《北京大学学报(自然科学版)》;20110120;第47卷(第1期);全文 *
王箫音等.A Comprehensive Study of Executing ahead Mechanism for In-Order Microprocessors.《北京大学学报(自然科学版)》.2011,第47卷(第1期),全文.
王箫音等.一种高能效的面向单发射按序处理器的预执行机制.《电子学报》.2011,第39卷(第2期),全文. *

Also Published As

Publication number Publication date
CN102521158A (zh) 2012-06-27

Similar Documents

Publication Publication Date Title
CN102521158B (zh) 一种实现数据预取的方法及装置
Kim et al. Path confidence based lookahead prefetching
Shevgoor et al. Efficiently prefetching complex address patterns
US7584327B2 (en) Method and system for proximity caching in a multiple-core system
Chaudhuri et al. Introducing hierarchy-awareness in replacement and bypass algorithms for last-level caches
US6662272B2 (en) Dynamic cache partitioning
US9348752B1 (en) Cached data replication for cache recovery
US9684601B2 (en) Data processing apparatus having cache and translation lookaside buffer
JP6218971B2 (ja) アドレス・タグ・ビットに基づく動的キャッシュ置換ウェイ選択
US7380047B2 (en) Apparatus and method for filtering unused sub-blocks in cache memories
US9229869B1 (en) Multi-lock caches
US6629210B1 (en) Intelligent cache management mechanism via processor access sequence analysis
WO2016097795A1 (en) Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or subset or tis ways depending on mode
CN109461113B (zh) 一种面向数据结构的图形处理器数据预取方法及装置
CN114579479A (zh) 基于指令流混合模式学习的低污染缓存预取系统及方法
CN113986774A (zh) 一种基于指令流和访存模式学习的缓存替换系统及方法
US8694732B2 (en) Enhanced coherency tracking with implementation of region victim hash for region coherence arrays
Wang et al. Acic: Admission-controlled instruction cache
Khan et al. A Computationally Efficient P-LRU based Optimal Cache Heap Object Replacement Policy
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
US9734071B2 (en) Method and apparatus for history-based snooping of last level caches
CN118568012B (zh) 一种访存请求的处理方法、装置、电子设备及存储介质
Myung et al. Competition-Based Adaptive Caching for Out-of-core Graph Processing
Ros et al. An efficient cache design for scalable glueless shared-memory multiprocessors
US20230205699A1 (en) Region aware delta prefetcher

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160330

Address after: 100080 Beijing City, Haidian District Zhongguancun No. 151 North Street Yanyuan resources building room 1107

Patentee after: Beijing Zhongzhi core technology Co. Ltd.

Address before: 100080, Beijing Haidian District Zhongguancun 151 North Street, building 11, resources

Patentee before: Beida Zhongzhi Microsystem Science and Technology Co., Ltd., Beijing