CN102156633A - 预执行指导的数据预取方法及系统 - Google Patents

预执行指导的数据预取方法及系统 Download PDF

Info

Publication number
CN102156633A
CN102156633A CN2011100969007A CN201110096900A CN102156633A CN 102156633 A CN102156633 A CN 102156633A CN 2011100969007 A CN2011100969007 A CN 2011100969007A CN 201110096900 A CN201110096900 A CN 201110096900A CN 102156633 A CN102156633 A CN 102156633A
Authority
CN
China
Prior art keywords
span
execution
prefetcher
instruction
inefficacy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2011100969007A
Other languages
English (en)
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.)
BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING
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 CN2011100969007A priority Critical patent/CN102156633A/zh
Publication of CN102156633A publication Critical patent/CN102156633A/zh
Priority to PCT/CN2011/080813 priority patent/WO2012142820A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种数据预取方法及系统,克服现有技术未很好地将预执行和跨距预取融合的不足。该方法包括:跨距预取器监测二级缓存失效访存序列,在捕获到跨距访存模式时触发预取请求;监测到二级缓存访问发生失效时,处理器对当前寄存器状态进行备份,转换到预执行模式,执行发生二级缓存失效的指令的后续指令,对非规则的访存模式进行精确预取,获得预执行结果及其有效状态保存到缓冲器中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早发出预取请求;引发预执行的二级缓存失效指令完成主存访问后,处理器清空流水线,恢复备份的寄存器状态,从引发预执行的访存指令开始继续执行。本发明有效提升处理器的访存延时包容能力。

Description

预执行指导的数据预取方法及系统
技术领域
本发明涉及数据预取技术,尤其涉及一种预执行(Pre-execution)指导的数据预取方法及系统。
背景技术
随着处理器和存储器性能差距的不断扩大,访存延时对处理器性能的影响日益严重,已经成为制约处理器性能提升的主要瓶颈。虽然高速缓存(Cache)的使用可以有效地填补处理器与存储器之间的性能鸿沟,但是高速缓存设计往往采用按需数据取回策略,无法有效处理应用程序中复杂多样的访存地址模式。随着应用程序工作集的不断扩大,即使采用大容量片上缓存也可能难以满足应用程序的数据访问需求。因此,如何有效降低或隐藏访存延时,是高性能处理器设计的关键问题之一。
数据预取技术是一种已经被广泛应用的访存延时包容技术,它在处理器真正需要某数据之前就预测其访存地址并提前发出请求,而不需要等到发生缓存失效后再发起主存访问,从而达到将访存延时隐藏的效果。
预取的实现主要可以分为软件预取和硬件预取两种。
软件预取通常由程序员手动或编译器自动在程序中插入专门的预取指令来触发预取。软件预取指令不仅会占用额外的处理器执行周期,而且会增加代码体积。此外,软件预取往往借助对程序静态访存特性的剖视来插入预取指令,因而无法对程序运行时刻的动态访存特性加以利用,并且,软件预取无法加速各种以二进制可执行文件形式存在的程序。
硬件预取通常由硬件预取器在运行时监测程序执行过程中可重复的访存地址模式并自动发起预取请求。硬件预取能够捕获并利用程序运行时刻的动态访存特性,从而进行准确和及时的预取。硬件预取还可以避免由预取指令带来的执行周期和代码体积的开销,并且不受程序是否可重新编译的限制。
传统的硬件预取技术可主要分为基于相关性的预取(Correlation-based Prefetching)和跨距预取(Stride Prefetching)两类。
基于相关性的预取发掘并记录程序执行过程中特定的相关性规律和事件,并在监测到这些相关性规律和事件重复发生时触发相应的预取请求。该技术需要使用大容量(通常为兆比特(MB)级)的存储结构对相关性历史信息及相应的预取地址进行记录,这会造成不容忽视的复杂度和硬件开销,使其很难被应用到实际的处理器中。
与基于相关性的预取相比,跨距预取是一种复杂度和硬件开销较低的预取技术,目前已被广泛应用于英特尔(Intel)奔腾(Pentium)4和IBM Power6等商用处理器中。跨距预取技术主要基于访存的空间局部性规律进行数据预取,主要适用于规则的访存模式。
预执行技术也是一种简单有效的访存延时包容技术。
为了避免流水线由于长延时的缓存失效(比如二级缓存(L2Cache)失效)而停顿,预执行技术利用处理器的空闲周期预先执行失效访存指令的后续指令,通过对程序中存储级并行的充分发掘以及对访存带宽资源的有效利用,达到将多个主存访问的延时相重叠的效果。通过对发生L2Cache失效指令的后续指令的预先执行,预执行技术能够对任意访存模式进行精确的数据预取。
本发明的发明人经分析后发现:
与预执行相比,跨距预取的优势主要体现在两个方面。
首先,跨距预取可以在任意时刻对符合跨距访存模式的地址进行预取,而预执行只在L2Cache失效引发处理器进入预执行模式后才进行预取。
其次,预执行发起预取的提前时间不够长,可能导致在处理器需要某数据时,对该数据的预取请求尚未完成,而跨距预取能够较早地发起预取请求,从而保证预取数据在处理器需要之前及时返回。
与跨距预取相比,预执行的优势主要体现在两个方面。
首先,预执行能够通过对真实指令片段的提前执行进行精确的预取,而跨距预取则是使用预测的访存地址进行预取。
其次,预执行能够对非规则的访存模式进行预取,而跨距预取只能对规则的访存模式进行预取。
由以上分析可以看出,跨距预取与预执行有着各自的特点和优势,因此,可以考虑将两者的优势进行有效结合,使各自都能发挥更大效用,从而进一步改善处理器的性能。
发明内容
本发明所要解决的技术问题是需要提供一种预执行指导的数据预取技术,克服现有技术没有很好地将预执行和跨距预取这两种数据预取技术融合的不足。
为了解决上述技术问题,本发明提供了一种预执行指导的数据预取方法,该方法包括:
跨距预取器监测二级缓存失效访存序列,并在捕获到跨距访存模式时自动触发预取请求;
在监测到二级缓存访问发生失效时,处理器对当前的寄存器状态进行备份,转换到预执行模式;
在预执行模式下,该处理器继续执行发生二级缓存失效的指令的后续指令,对非规则的访存模式进行精确的预取,获得预执行结果及其有效状态保存到指令与结果缓冲器中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早地发出该预取请求;
当引发预执行的二级缓存失效指令完成主存访问后,该处理器清空流水线,恢复备份的寄存器状态,从引发预执行的访存指令开始继续执行。
优选地,该跨距预取器监测该二级缓存失效访存序列及捕获该跨距访存模式的步骤,包括:
该跨距预取器向前或向后进行预取,并使用存储区域划分方法来划分流。
优选地,该跨距预取器监测到同一个流中连续两次二级缓存失效符合该跨距访存模式时,初次发起该预取请求。
优选地,该跨距预取器将预取数据存放在该二级缓存中。
优选地,当主要L2失效发生时,该处理器为该主要L2失效分配一空闲的失效状态处理寄存器,并初始化该失效状态处理寄存器的过滤位;当次要L2失效发生时,一更新过滤器读出该失效行对应的失效状态处理寄存器中的过滤位并判断引发该次要L2失效的原因;对于由预执行引发的该次要L2失效,过滤掉对跨距预取器的更新;对于由跨距预取器引发的该次要L2失效,更新跨距预取器及该过滤位;
其中,需访问的行已经由跨距预取器或预执行指令发起主存访问且尚未完成的二级缓存失效称为该次要L2失效,其余二级缓存失效为该主要L2失效。
优选地,该处理器继续执行发生二级缓存失效的指令的后续指令时,不更新体系结构状态。
优选地,该处理器从引发预执行的访存指令开始继续执行的步骤,包括:
该处理器从引发预执行的访存指令开始,将保存在该指令与结果缓冲器中的预执行结果合并到体系结构状态,将计算结果无效的预执行指令重新发射到流水线中执行并提交执行结果。
本发明还提供了一种预执行指导的数据预取系统,包括:
跨距预取器,用于监测二级缓存失效访存序列,并在捕获到跨距访存模式时自动触发预取请求;
处理器,用于监测到二级缓存访问发生失效时,对当前的寄存器状态进行备份,转换到预执行模式;在预执行模式下,用于继续执行发生二级缓存失效的指令的后续指令,对非规则的访存模式进行精确的预取,获得预执行结果及其有效状态保存到指令与结果缓冲器中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早地发出该预取请求;还用于当引发预执行的二级缓存失效指令完成主存访问后,清空流水线,恢复备份的寄存器状态,从引发预执行的访存指令开始继续执行。
优选地,该跨距预取器在监测该二级缓存失效访存序列及捕获该跨距访存模式时,用于向前或向后进行预取,并使用存储区域划分方法来划分流。
优选地,该跨距预取器用于监测到同一个流中连续两次二级缓存失效符合该跨距访存模式时,初次发起该预取请求。
优选地,该跨距预取器用于将预取数据存放在该二级缓存中。
优选地,更新过滤器,用于当次要L2失效发生时,读出该次要L2失效行对应的失效状态处理寄存器中的过滤位并判断引发该次要L2失效的原因;对于由预执行引发的该次要L2失效,用于过滤掉对跨距预取器的更新;对于由跨距预取器引发的该次要L2失效,用于更新跨距预取器及该过滤位;
其中,该处理器用于主要L2失效发生时,为该主要L2失效分配一空闲的失效状态处理寄存器并初始化该失效状态处理寄存器的过滤位;
需访问的行已经由跨距预取器或预执行指令发起主存访问且尚未完成的二级缓存失效称为该次要L2失效,其余二级缓存失效为该主要L2失效。
优选地,该处理器用于继续执行发生二级缓存失效的指令的后续指令时,不更新体系结构状态。
优选地,该处理器从引发预执行的访存指令开始继续执行时,用于从引发预执行的访存指令开始,将保存在该指令与结果缓冲器中的预执行结果合并到体系结构状态,以及将计算结果无效的预执行指令重新发射到流水线中执行并提交执行结果。
与现有技术相比,本发明提供的技术方案,使用预执行(Pre-execution)和跨距预取(Stride Prefetching)分别处理不同的访存模式,使用预执行期间的访存信息指导跨距预取器(Stride Prefetcher)的预取过程和使用更新过滤器(Update Filter)对预执行的指导过程进行优化。在正常模式下,处理器使用跨距预取器对规则的访存模式进行预取;当发生L2Cache失效时,处理器进入到预执行模式,在预执行模式下预先执行后续指令以对非规则的访存模式进行精确的预取,利用预执行过程中提前捕获到的真实访存信息来指导跨距预取器的预取过程,从而有效提升处理器的访存延时包容能力。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。在附图中:
图1所示为本实施例的预执行指导的数据预取方法的流程示意图;
图2是本发明技术方案与现有的跨距预取和预执行的性能分析示意图;
图3是本发明两种Secondary L2Miss对跨距预取器的更新产生的效果示意图;
图4是本发明采用预执行指导的数据预取机制的处理器状态转换示意图;
图5是本发明带有更新过滤器的跨距预取器结构示意图;
图6是本发明更新过滤器的工作流程示意图;
图7是本发明采用预执行指导的数据预取机制的处理器结构示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。
首先,如果不冲突,本发明实施例以及实施例中的各个特征在不相冲突前提下的相互结合,均在本发明的保护范围之内。另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一、预执行指导的数据预取方法
图1所示为本实施例的预执行指导的数据预取机制的工作原理及主要流程。
步骤S110,在初始时刻,处理器处于正常执行模式(与预执行模式相区别,表示没有使用本发明方法时处理器正常执行并提交指令的模式),正常执行并提交指令。
步骤S120,跨距预取器负责监测L2Cache失效访存序列,并在捕获到跨距访存模式时自动触发预取请求。
步骤S130,当监测到L2Cache访问发生失效时,处理器对当前的寄存器状态进行备份(Checkpoint),然后立即转换到预执行模式。
步骤S140,处理器运行于预执行模式,继续执行发生L2Cache失效的指令(L2Cache访问发生失效所对应的指令)的后续指令,对非规则的访存模式进行精确的预取,将预执行指令产生的预执行结果及其有效状态保存到指令与结果缓冲器(Instruction and Result Buffer,IRB)中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早地发出该预取请求;但是并不更新体系结构状态(一般指令提交时才更新体系结构状态,以保存执行结果或改变处理器状态,推测式执行或预执行时并不更新体系结构状态,会单独使用一些部件保存中间结果)。
本发明提供一个存储数据高速缓存(Store Cache),用于保存存储(Store)指令的存储数据,并将其前递给后续的载入(Load)指令访问和使用。对与发生L2Cache失效指令数据无关的指令所进行的预执行,可以产生精确的数据预取和有效的计算结果;与发生L2Cache失效指令数据相关的指令则被直接移出流水线,并将其目标寄存器标记为无效(INV)。
在预执行过程中,处理器将预执行指令产生的预执行结果及其有效状态保存到指令与结果缓冲器(Instruction and Result Buffer,IRB)中,以加快指令正常执行的速度。同时,预执行过程中的真实访存信息被用来指导跨距预取器的预取过程。
本发明还提供了一个更新过滤器,从捕获的真实访存信息中提取出有用信息(其余信息可以称之为有害信息),其中,有用信息用于指导跨距预取器及早地发出预取请求,其余的有害信息则直接过滤掉。
步骤S150,当引发预执行的L2Cache失效指令完成主存访问后,处理器清空流水线,恢复备份的寄存器状态,并转换到一合并结果模式。
步骤S160,在合并结果模式下,处理器从引发预执行的访存指令(即引发预执行的L2Cache失效指令)开始继续执行,包括将保存在IRB中的有效的预执行结果直接合并到体系结构状态,将计算结果无效的预执行指令重新发射到流水线中执行并提交相应的执行结果。在此期间,如果监测到L2Cache访问发生失效,处理器将再次转换到预执行模式。
步骤S170,当所有预执行的指令都完成提交后,处理器返回正常执行模式。
跨距预取器监测L2Cache失效序列和捕获该跨距访存模式时,可以向前或向后这两个方向进行预取,使用存储区域划分方法来划分流,每个流负责预取4KB或者其他数据量的存储区域。
当监测到同一个流中连续两次L2Cache失效符合跨距访存模式时,初次发起对后续地址的预取请求。对于每一个流,初次发起的预取请求将相对于本次失效访存地址向前或向后预取2个连续的L2Cache行(本实施例的预取距离为2,其他实施例中也可以是其他的预取距离);以后,每当一个已预取的L2Cache行被处理器消耗时,跨距预取器继续向前或向后预取1个L2Cache行,从而维持预取距离(Prefetch Distance)为2。
为了减少面积开销及额外的数据一致性维护代价,并避免对一级缓存(L1Cache)造成污染,跨距预取器将预取数据直接存放在L2Cache中。
跨距预取与预执行均能够在程序实际需要某数据之前,就提前向主存发起访问请求。
在程序执行的过程中,如果有访存指令发生L2Cache失效,并且需访问的行已经由跨距预取器或预执行指令发起主存访问且尚未完成,则将该L2Cache失效称为次要L2失效(Secondary L2Miss),将其它的L2Cache失效称为主要L2失效(Primary L2Miss)。
而根据需访问的行是由跨距预取器还是由预执行指令提前发起主存访问,可将Secondary L2Miss划分为跨距预取器引发的Secondary L2Miss(可以称之为第一类Secondary L2Miss)和预执行引发的Secondary L2Miss(可以称之为第二类Secondary L2Miss)这两类。
上述两类Secondary L2Miss在指导跨距预取器捕获正确访存模式方面具有不同的影响。如果Secondary L2Miss是由跨距预取器引发,表明实际发生的访存模式符合跨距预取器的预期和预取行为,因此,使用其信息更新跨距预取器以继续触发对后续数据的预取,有利于提高预取的准确率从而提高处理器性能。如果Secondary L2Miss是预执行所引发,表明之前已经有相同地址的访存指令发生L2Cache失效(Primary L2Miss)且更新过跨距预取器,如果此时再次更新跨距预取器,将有可能对跨距预取器的访存模式捕获过程造成负面影响,从而降低数据预取的准确率。
本发明提供的更新过滤器,可以有效识别并去除预执行引发的SecondaryL2Miss对跨距预取器的更新,从而有效提高预取的准确率。
更新过滤器可以通过在L2Cache的每个失效状态处理寄存器(Miss Status Handling Register,MSHR)中添加一位的过滤位实现。
当一个L2Cache失效发生时,处理器将该失效地址与MSHR中的地址进行全相联比较。若存在地址相同的MSHR,则表明该失效为Secondary L2Miss,否则该失效为Primary L2Miss。
当Primary L2Miss发生时,处理器为其分配一个空闲的MSHR,并且初始化相应的过滤位:如果该Primary L2Miss是由跨距预取器的预取请求引发的,则其过滤位被初始化为0;否则,其过滤位被初始化为1。之后,当Secondary L2Miss发生时,更新过滤器将该失效行对应的MSHR中的过滤位读出并对引发该Secondary L2Miss的原因进行检查和判断:若过滤位为1,则表明该Secondary L2Miss是由预执行引发的,所以将其对跨距预取器的更新过滤掉;如果过滤位为0,则表明该Secondary L2Miss是由跨距预取器引发的,允许其更新跨距预取器以及早发出预取请求,同时,将相应MSHR的过滤位设置为1,以避免后续该行的Secondary L2Miss再次更新跨距预取器。当对L2Cache失效行的主存访问完成时,其对应的过滤位随MSHR一起被释放。
与跨距预取和预执行相比,本发明技术方案提出的预执行指导的数据预取对预取效果的改善主要体现在预取覆盖率、预取及时性和预取准确率三个方面。
第一,跨距预取可以一直对规则的访存模式进行预取,预执行可以在L2Cache失效引发处理器进入预执行模式后对非规则的访存模式进行预取,这样就可以结合跨距预取与预执行在捕获访存模式方面的优势,提高预取的覆盖率。
第二,在预执行期间的真实访存信息的指导下,跨距预取还可以对预执行和跨距预取均能够产生的地址更早地发起预取请求,改善预取的及时性。
第三,更新过滤器通过有效去除预执行指导过程中对跨距预取器的有害更新,能够提高预取的准确率。
图2展示了本发明相比于跨距预取和预执行的性能优势分析,具体如下:
访存指令序列在按序执行处理器中执行情况如图2中的情形(a)所示,当处理器在执行访存指令A、B、C、D和E时均发生L2Cache失效,流水线停顿并等待失效处理完成。访存指令A、B、D和E的行地址是连续的,分别为L、L+1、L+2和L+3。访存指令C的行地址为S。
跨距预取的优化效果如图2中的情形(b)所示,当访存指令A和B导致连续的L2Cache行,即第L行和第L+1行均发生失效时,跨距预取器捕获到跨距访存模式,于是发出对第L+2行和第L+3行的预取请求。因此,在执行访存指令D和E时将发生L2Cache命中。但是,由于行S不符合跨距访存模式,执行访存指令C时仍会发生L2Cache失效。
预执行的优化效果如图2中的情形(c)所示,在访存指令A进行主存访问的过程中,处理器预先执行访存指令B、C和D(在图中用b’、c’和d’表示),并提前对访存地址L+1、S和L+2发起主存访问。当处理器返回正常执行时,访存指令B和C将发生L2Cache命中。正常执行阶段会复用预执行产生的有效计算结果,使得访存指令C和D之间的执行间隔变短。因此,在访存指令D执行时,对地址L+2的预取请求尚未完成,导致其仍然发生L2Cache失效。此外,预执行期间未能覆盖到访存指令E,使得执行访存指令E时仍然会发生L2Cache失效。
本发明技术方案的优化效果如图2中的情形(d)所示,在访存指令A进行主存访问的过程中,处理器预先执行访存指令B和C(在图中用b’和c’表示),并提前对访存地址L+1和S发起主存访问。在对访存指令B的预执行(b’)发生L2Cache失效时,跨距预取器捕获到跨距访存模式(第L行和第L+1行均发生失效),于是发出对第L+2行和第L+3行的预取请求。这不仅能够产生对访存指令E的预取(第L+3行),而且能够更早地发起对访存指令D的预取(第L+2行,早于对访存指令D的预执行,在图中用d’表示)。当处理器返回正常执行时,访存指令B、C、D和E均发生L2Cache命中,使得本发明获得比跨距预取和预执行更好的优化效果。可以看出,本发明改善了预取的覆盖率和及时性。
图3展示了两种Secondary L2Miss对跨距预取器的更新产生的不同效果,具体说明如下:
访存指令①发生L2Cache失效并导致处理器转换到预执行模式。在预执行模式,访存指令②至⑥均发生L2Cache失效。
预执行的具体过程如下。
在监测到访存指令①和②均发生失效(第L和L+1行)时,跨距预取器捕获到跨距访存模式,并发出对第L+2行和第L+3行的预取。接下来,访存指令③(第L行)和访存指令⑤(第L+1行)均发生了Secondary L2Miss,且两者均由预执行所引发。类似地,访存指令④(第L+2行)和访存指令⑥(第L+3行)也都发生了Secondary L2Miss,但是由跨距预取器所引发。
上述失效访存序列对跨距预取器的预取准确率的影响分析如下。
如果所有Secondary L2Miss均更新跨距预取器,当跨距预取器监测到访存失效③时,将由于模式匹配失败而停止对后续数据的预取,然后重新设置预取模式并返回到训练阶段。访存指令④和⑤的执行使得连续的L+2和L+1行均发生失效,此时,新的预取模式训练完成并触发对第L和L-1行的预取(此例中为无用的预取)。如果禁止预执行引发的Secondary L2Miss(即访存失效③和⑤)对跨距预取器进行更新,而只使用跨距预取器引发的Secondary L2Miss(即访存失效④和⑥)更新跨距预取器,则不仅可以避免访存失效③对预取模式的破坏以及后续对第L和L-1行的无用预取,而且当跨距预取器监测到访存失效④时,将由于模式匹配成功而继续发出对第L+4行的预取请求,从而为访存指令⑦进行了正确的数据预取。这样,当访存指令⑦执行时,其访存延时能够完全消除或部分隐藏。
根据上述分析,对于跨距预取器引发的Secondary L2Miss,如果使用其信息对跨距预取器进行更新和训练,将有利于提高预取的准确率,从而将更多程序执行所需的数据提前从主存中取回。而对于预执行引发的SecondaryL2Miss,如果使用其信息对跨距预取器进行更新和训练,将有可能会破坏预取跨距预取器对正确访存模式的捕获。为了使跨距预取器的预取效果在预执行处理器中得到充分发挥,本发明设计了更新过滤器,可以在运行时刻有效识别并过滤预执行引发的Secondary L2Miss,从而避免其对跨距预取器的破坏性更新与训练,改善预取的准确率。
图4为采用预执行指导的数据预取机制的处理器状态转换示意图,具体的处理器执行过程如下:
在初始时刻,处理器处于正常执行模式。跨距预取器负责监测L2Cache失效访存序列,并在捕获到跨距访存模式时自动触发预取请求。当监测到L2Cache访问发生失效时,处理器对当前的寄存器状态进行备份,然后立即转换到预执行模式。
在预执行模式,处理器继续执行发生L2Cache失效指令的后续指令,但是并不更新体系结构状态。数据无关的指令的预执行,不仅可以进行精确的数据预取,而且能够产生有效的计算结果。同时,预执行过程中的真实访存信息被用来指导跨距预取器的预取过程。更新过滤器将捕获的真实访存信息划分成有用信息和有害信息。其中,有用信息被用于指导跨距预取器及早地发出预取请求,有害信息则被直接过滤掉。当引发预执行的L2Cache失效指令完成主存访问后,处理器清空流水线,恢复备份的寄存器状态,并转换到合并结果模式。
在合并结果模式,处理器从引发预执行的访存指令开始重新执行并提交相应的执行结果。保存在IRB中的有效的预执行结果被直接合并到体系结构状态;结果无效的预执行指令被重新发射到流水线中执行。在此期间,如果再次监测到L2Cache访问发生失效,处理器将再次转换到预执行模式。当所有预执行的指令都完成提交后,处理器返回正常执行模式。
图5展示了带有更新过滤器的跨距预取器结构示意图,详细描述如下:
更新过滤器会对L2Cache失效信息进行筛选和过滤,只使用有用信息更新跨距预取器,无用的信息则被直接过滤掉。
跨距预取器的硬件结构主要由Stream Table及其他相关逻辑组成。StreamTable为8表项全相联结构,采用伪最近最少使用(LRU)替换算法,每个表项包含以下六个域:
Tag域:物理地址的高20位,用于标识流的预取存储区域,使用20位表示每个流的预取存储区域为4KB(本发明实施例将存储区域大小设置为4KB,其他实施例也适用于其它存储区域大小);
Valid域:用于标识流是否有效;
Direction域:用于标识流的预取方向,0表示向后预取,1表示向前预取;
Stride域:用于标识该流中访存地址的跨距;
Last Index域:用于记录最近一次发生失效的L2Cache行的索引;
State域:用于标识流当前所处的阶段,可以是训练阶段或预取阶段。
其他逻辑主要包括流命中判断逻辑、模式匹配判断逻辑和预取地址生成逻辑这三部分。流命中判断逻辑使用L2Cache访问地址的Tag对Stream Table进行相联查找,若存在Tag域与其相匹配的表项则表明发生流命中。当发生流命中时,模式匹配判断逻辑根据命中表项Direction域,使用Stride域的数值与L2Cache访问地址的Index和Last Index的差值进行比较,若相等则表明模式匹配成功,否则表明模式匹配不成功。在发生流命中且模式匹配成功时,预取地址生成逻辑根据L2Cache访问地址的Tag和Index、预取距离(本发明实施例设置为2)以及命中表项Direction域和Stride域的数值,计算得到预取地址。
图6展示了更新过滤器的工作流程示意图,其详细的工作流程如下:
当一个L2Cache失效发生时,处理器将该失效地址与MSHR中的地址进行全相联比较。若存在地址相同的MSHR,则表明该失效为Secondary L2Miss,否则该失效为Primary L2Miss。当Primary L2Miss发生时,处理器为其分配一个空闲的MSHR,并且初始化相应的过滤位:如果该Primary L2Miss是由跨距预取器的预取请求引发的,则其过滤位被初始化为0;否则,其过滤位被初始化为1。之后,当Secondary L2Miss发生时,更新过滤器将该失效行对应的MSHR中的过滤位读出并进行检查:若过滤位为1,则表明该Secondary L2Miss是由预执行引发的,所以将其对跨距预取器的更新过滤掉;如果过滤位为0,则表明该Secondary L2Miss是由跨距预取器引发的,允许其更新跨距预取器以及早发出预取请求,同时,将相应MSHR的过滤位设置为1,以避免后续该行的Secondary L2Miss再次更新跨距预取器。
图7展示了采用预执行指导的数据预取机制的处理器结构示意图,新增加的结构详细描述如下:
Checkpoint用于在处理器进入预执行模式时备份体系结构寄存器堆;
INV用于在预执行模式标识无效的寄存器;
Store Cache用于在预执行模式保存Store指令的存储数据,并将其前递给后续的Load指令访问和使用;
指令与结果缓冲器(IRB)用于保存预执行指令的计算结果及其有效状态;
跨距预取器(Stride Prefetcher)用于对L2Cache访问中规则的访存模式进行预取;
更新过滤器(Update Filter)用于对L2Cache失效信息进行筛选,过滤掉有害信息,只使用有用信息更新跨距预取器。
实施例二、一种预执行指导的数据预取系统
本实施例的数据预取系统,主要包括:
跨距预取器,用于监测二级缓存失效访存序列,并在捕获到跨距访存模式时自动触发预取请求;
处理器,用于监测到二级缓存访问发生失效时,对当前的寄存器状态进行备份,转换到预执行模式;在预执行模式下,用于继续执行发生二级缓存失效的指令的后续指令,对非规则的访存模式进行精确的预取,获得预执行结果及其有效状态保存到指令与结果缓冲器中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早地发出该预取请求;还用于当引发预执行的二级缓存失效指令完成主存访问后,清空流水线,恢复备份的寄存器状态,从引发预执行的访存指令开始继续执行。
其中,该跨距预取器在监测该二级缓存失效访存序列及捕获该跨距访存模式时,用于向前或向后进行预取,并使用存储区域划分方法来划分流。
其中,该跨距预取器用于监测到同一个流中连续两次二级缓存失效符合该跨距访存模式时,初次发起该预取请求。
其中,该跨距预取器用于将预取数据存放在该二级缓存中。
其中,该系统还可以包括:
更新过滤器,用于当次要L2失效发生时,读出该次要L2失效行对应的失效状态处理寄存器中的过滤位并判断引发该次要L2失效的原因;对于由预执行引发的该次要L2失效,用于过滤掉对跨距预取器的更新;对于由跨距预取器引发的该次要L2失效,用于更新跨距预取器及该过滤位;
其中,该处理器用于主要L2失效发生时,为该主要L2失效分配一空闲的失效状态处理寄存器并初始化该失效状态处理寄存器的过滤位;需访问的行已经由跨距预取器或预执行指令发起主存访问且尚未完成的二级缓存失效称为该次要L2失效,其余二级缓存失效为该主要L2失效。
其中,该处理器用于继续执行发生二级缓存失效的指令的后续指令时,不更新体系结构状态。
其中,该处理器从引发预执行的访存指令开始继续执行时,用于从引发预执行的访存指令开始,将保存在该指令与结果缓冲器中的预执行结果合并到体系结构状态,以及将计算结果无效的预执行指令重新发射到流水线中执行并提交相应的执行结果。
本领域的技术人员应该明白,上述的本发明所提供的系统类的实施例中各组成部分,以及方法类的实施例中各步骤,可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (14)

1.一种预执行指导的数据预取方法,该方法包括:
跨距预取器监测二级缓存失效访存序列,并在捕获到跨距访存模式时自动触发预取请求;
在监测到二级缓存访问发生失效时,处理器对当前的寄存器状态进行备份,转换到预执行模式;
在预执行模式下,该处理器继续执行发生二级缓存失效的指令的后续指令,对非规则的访存模式进行精确的预取,获得预执行结果及其有效状态保存到指令与结果缓冲器中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早地发出该预取请求;
当引发预执行的二级缓存失效指令完成主存访问后,该处理器清空流水线,恢复备份的寄存器状态,从引发预执行的访存指令开始继续执行。
2.根据权利要求1所述的方法,其中,该跨距预取器监测该二级缓存失效访存序列及捕获该跨距访存模式的步骤,包括:
该跨距预取器向前或向后进行预取,并使用存储区域划分方法来划分流。
3.根据权利要求2所述的方法,其中:
该跨距预取器监测到同一个流中连续两次二级缓存失效符合该跨距访存模式时,初次发起该预取请求。
4.根据权利要求1所述的方法,其中:
该跨距预取器将预取数据存放在该二级缓存中。
5.根据权利要求1所述的方法,其中:
当主要L2失效发生时,该处理器为该主要L2失效分配一空闲的失效状态处理寄存器,并初始化该失效状态处理寄存器的过滤位;
当次要L2失效发生时,一更新过滤器读出该失效行对应的失效状态处理寄存器中的过滤位并判断引发该次要L2失效的原因;对于由预执行引发的该次要L2失效,过滤掉对跨距预取器的更新;对于由跨距预取器引发的该次要L2失效,更新跨距预取器及该过滤位;
其中,需访问的行已经由跨距预取器或预执行指令发起主存访问且尚未完成的二级缓存失效称为该次要L2失效,其余二级缓存失效为该主要L2失效。
6.根据权利要求1所述的方法,其中:
该处理器继续执行发生二级缓存失效的指令的后续指令时,不更新体系结构状态。
7.根据权利要求1所述的方法,其中,该处理器从引发预执行的访存指令开始继续执行的步骤,包括:
该处理器从引发预执行的访存指令开始,将保存在该指令与结果缓冲器中的预执行结果合并到体系结构状态,将计算结果无效的预执行指令重新发射到流水线中执行并提交执行结果。
8.一种预执行指导的数据预取系统,包括:
跨距预取器,用于监测二级缓存失效访存序列,并在捕获到跨距访存模式时自动触发预取请求;
处理器,用于监测到二级缓存访问发生失效时,对当前的寄存器状态进行备份,转换到预执行模式;在预执行模式下,用于继续执行发生二级缓存失效的指令的后续指令,对非规则的访存模式进行精确的预取,获得预执行结果及其有效状态保存到指令与结果缓冲器中,并从捕获的真实访存信息中提取出有用信息指导跨距预取器及早地发出该预取请求;还用于当引发预执行的二级缓存失效指令完成主存访问后,清空流水线,恢复备份的寄存器状态,从引发预执行的访存指令开始继续执行。
9.根据权利要求8所述的系统,其中:
该跨距预取器在监测该二级缓存失效访存序列及捕获该跨距访存模式时,用于向前或向后进行预取,并使用存储区域划分方法来划分流。
10.根据权利要求9所述的系统,其中:
该跨距预取器用于监测到同一个流中连续两次二级缓存失效符合该跨距访存模式时,初次发起该预取请求。
11.根据权利要求8所述的系统,其中:
该跨距预取器用于将预取数据存放在该二级缓存中。
12.根据权利要求8所述的系统,包括:
更新过滤器,用于当次要L2失效发生时,读出该次要L2失效行对应的失效状态处理寄存器中的过滤位并判断引发该次要L2失效的原因;对于由预执行引发的该次要L2失效,用于过滤掉对跨距预取器的更新;对于由跨距预取器引发的该次要L2失效,用于更新跨距预取器及该过滤位;
其中,该处理器用于主要L2失效发生时,为该主要L2失效分配一空闲的失效状态处理寄存器并初始化该失效状态处理寄存器的过滤位;
需访问的行已经由跨距预取器或预执行指令发起主存访问且尚未完成的二级缓存失效称为该次要L2失效,其余二级缓存失效为该主要L2失效。
13.根据权利要求8所述的系统,其中:
该处理器用于继续执行发生二级缓存失效的指令的后续指令时,不更新体系结构状态。
14.根据权利要求8所述的系统,其中:
该处理器从引发预执行的访存指令开始继续执行时,用于从引发预执行的访存指令开始,将保存在该指令与结果缓冲器中的预执行结果合并到体系结构状态,以及将计算结果无效的预执行指令重新发射到流水线中执行并提交执行结果。
CN2011100969007A 2011-04-18 2011-04-18 预执行指导的数据预取方法及系统 Pending CN102156633A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN2011100969007A CN102156633A (zh) 2011-04-18 2011-04-18 预执行指导的数据预取方法及系统
PCT/CN2011/080813 WO2012142820A1 (zh) 2011-04-18 2011-10-14 预执行指导的数据预取方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011100969007A CN102156633A (zh) 2011-04-18 2011-04-18 预执行指导的数据预取方法及系统

Publications (1)

Publication Number Publication Date
CN102156633A true CN102156633A (zh) 2011-08-17

Family

ID=44438141

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011100969007A Pending CN102156633A (zh) 2011-04-18 2011-04-18 预执行指导的数据预取方法及系统

Country Status (2)

Country Link
CN (1) CN102156633A (zh)
WO (1) WO2012142820A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102385622A (zh) * 2011-10-25 2012-03-21 曙光信息产业(北京)有限公司 一种文件系统stride访问模式的预读方法
CN102521158A (zh) * 2011-12-13 2012-06-27 北京北大众志微系统科技有限责任公司 一种实现数据预取的方法及装置
WO2012142820A1 (zh) * 2011-04-18 2012-10-26 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统
CN103019657A (zh) * 2012-12-31 2013-04-03 东南大学 支持数据预取与重用的可重构系统
CN104750696A (zh) * 2013-12-26 2015-07-01 华为技术有限公司 一种数据预取方法及装置
CN106776371A (zh) * 2015-12-14 2017-05-31 上海兆芯集成电路有限公司 跨距参考预取器、处理器和将数据预取到处理器的方法
CN109799897A (zh) * 2019-01-29 2019-05-24 吉林大学 一种减少gpu二级缓存能耗的控制方法及装置
WO2023236355A1 (zh) * 2022-06-10 2023-12-14 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10609174B2 (en) 2017-04-11 2020-03-31 Microsoft Technology Licensing, Llc Parallel prefetching log/meta stream sub-portions to recreate partition states in a distributed computing system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020055964A1 (en) * 2000-04-19 2002-05-09 Chi-Keung Luk Software controlled pre-execution in a multithreaded processor
CN1813246A (zh) * 2003-07-31 2006-08-02 飞思卡尔半导体公司 数据处理系统中的预取控制
CN101467135A (zh) * 2006-06-07 2009-06-24 先进微装置公司 预取数据的设备及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156633A (zh) * 2011-04-18 2011-08-17 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020055964A1 (en) * 2000-04-19 2002-05-09 Chi-Keung Luk Software controlled pre-execution in a multithreaded processor
CN1813246A (zh) * 2003-07-31 2006-08-02 飞思卡尔半导体公司 数据处理系统中的预取控制
CN101467135A (zh) * 2006-06-07 2009-06-24 先进微装置公司 预取数据的设备及方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012142820A1 (zh) * 2011-04-18 2012-10-26 北京北大众志微系统科技有限责任公司 预执行指导的数据预取方法及系统
CN102385622B (zh) * 2011-10-25 2013-03-13 曙光信息产业(北京)有限公司 一种文件系统stride访问模式的预读方法
CN102385622A (zh) * 2011-10-25 2012-03-21 曙光信息产业(北京)有限公司 一种文件系统stride访问模式的预读方法
CN102521158A (zh) * 2011-12-13 2012-06-27 北京北大众志微系统科技有限责任公司 一种实现数据预取的方法及装置
CN102521158B (zh) * 2011-12-13 2014-09-24 北京北大众志微系统科技有限责任公司 一种实现数据预取的方法及装置
CN103019657B (zh) * 2012-12-31 2015-09-16 东南大学 支持数据预取与重用的可重构系统
CN103019657A (zh) * 2012-12-31 2013-04-03 东南大学 支持数据预取与重用的可重构系统
CN104750696A (zh) * 2013-12-26 2015-07-01 华为技术有限公司 一种数据预取方法及装置
CN104750696B (zh) * 2013-12-26 2018-07-20 华为技术有限公司 一种数据预取方法及装置
CN106776371A (zh) * 2015-12-14 2017-05-31 上海兆芯集成电路有限公司 跨距参考预取器、处理器和将数据预取到处理器的方法
CN106776371B (zh) * 2015-12-14 2019-11-26 上海兆芯集成电路有限公司 跨距参考预取器、处理器和将数据预取到处理器的方法
CN109799897A (zh) * 2019-01-29 2019-05-24 吉林大学 一种减少gpu二级缓存能耗的控制方法及装置
CN109799897B (zh) * 2019-01-29 2019-11-26 吉林大学 一种减少gpu二级缓存能耗的控制方法及装置
WO2023236355A1 (zh) * 2022-06-10 2023-12-14 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备

Also Published As

Publication number Publication date
WO2012142820A1 (zh) 2012-10-26

Similar Documents

Publication Publication Date Title
CN102156633A (zh) 预执行指导的数据预取方法及系统
Yan et al. Invisispec: Making speculative execution invisible in the cache hierarchy
Lupon et al. A dynamically adaptable hardware transactional memory
Ros et al. Complexity-effective multicore coherence
CN1682181B (zh) 用于处理数据的设备和方法
TWI470425B (zh) 硬體及軟體系統用之將程式自動分解為多重平行緒之系統,裝置及方法
JP2541771B2 (ja) 原子的メモリ参照方法及びシステム
US11163576B2 (en) Systems and methods for invisible speculative execution
Brown et al. Fast thread migration via cache working set prediction
CN102184127B (zh) 一种实现处理器预执行的方法及相应的装置
CN101558390B (zh) 用于微处理器的可配置高速缓冲存储器
US20130332705A1 (en) Profiling asynchronous events resulting from the execution of software at code region granularity
CN102971716A (zh) 具有电力恢复后重新加载能力的高速缓存
CN101446923A (zh) 一种响应于指令而清洗高速缓冲存储器线的装置和方法
WO2008125534A1 (en) Checkpointed tag prefetching
CN111241010B (zh) 一种基于缓存划分及回滚的处理器瞬态攻击防御方法
Titos-Gil et al. Zebra: A data-centric, hybrid-policy hardware transactional memory design
Negi et al. π-TM: Pessimistic invalidation for scalable lazy hardware transactional memory
CN107330323B (zh) 一种基于Pin工具的ROP及其变种攻击的动态检测方法
CN101604283B (zh) 一种基于Linux内核页表替换的内存访问模型追踪方法
CN104461758A (zh) 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
CN102521158A (zh) 一种实现数据预取的方法及装置
CN111274584B (zh) 一种基于缓存回滚以防御处理器瞬态攻击的装置
Bruening et al. Maintaining consistency and bounding capacity of software code caches
CN101501635B (zh) 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20110817

C20 Patent right or utility model deemed to be abandoned or is abandoned