CN104636270B - 数据处理装置和数据处理方法 - Google Patents

数据处理装置和数据处理方法 Download PDF

Info

Publication number
CN104636270B
CN104636270B CN201410638407.7A CN201410638407A CN104636270B CN 104636270 B CN104636270 B CN 104636270B CN 201410638407 A CN201410638407 A CN 201410638407A CN 104636270 B CN104636270 B CN 104636270B
Authority
CN
China
Prior art keywords
memory
prefetch
data value
processing apparatus
unit
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
CN201410638407.7A
Other languages
English (en)
Other versions
CN104636270A (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.)
ARM Ltd
Original Assignee
ARM Ltd
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 ARM Ltd filed Critical ARM Ltd
Publication of CN104636270A publication Critical patent/CN104636270A/zh
Application granted granted Critical
Publication of CN104636270B publication Critical patent/CN104636270B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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
    • 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/3802Instruction prefetching
    • 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
    • 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
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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)
  • Software Systems (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

数据处理装置和数据处理方法
技术领域
本发明涉及数据处理装置。更特别地,本发明涉及数据处理装置中对数据值的预取。
背景技术
执行一系列程序指令的数据处理装置具有预取器是公知的,该预取器力图在那些数据值被数据处理装置的指令执行单元请求之前,从存储器读取数据值用于存储在指令执行单元本地的缓存中。在这种数据处理装置中与从存储器中读取数据值相关联的存储器延迟可能是显著的,如果不提供这种预取能力,数据处理装置的操作将存在严重的性能障碍。
这种预取器对它提前预取到缓存中的数据值的数量进行动态调整也是公知的。一方面,如果在处理器(指令执行单元)的行动之前预取器不预取足够远,处理器将赶上预取器,并将力图在数据值被从存储器读取之前访问缓存中的数据值,要求处理器在相应的存储器访问完成的同时进行等待。另一方面,如果预取器提前预取数据值过远,在被要求之前数据值将被长时间地存储在缓存中,存在被其间的其它存储器访问请求从缓存中驱逐的风险。取决于所实现的数据处理的本质,这些相互竞争的约束之间的合适的平衡可能不同,因此预取器被配置为动态(即在数据处理装置的操作过程中)调整其预取距离(即在它操作的处理器之前多远)。
发明内容
从第一方面看,本发明提供一种数据处理装置,包括:
指令执行单元,该指令执行单元被配置为执行一系列程序指令,其中对程序指令中的至少一些程序指令的执行发起从存储器读取数据值的存储器访问请求;
缓存单元,该缓存单元被配置为存储从存储器中读取的数据值的副本;以及
预取单元,该预取单元被配置为在数据值被指令执行单元请求之前,通过推断存储器访问请求的当前数据值访问模式以预测将被指令执行单元请求的将来的数据值并预取该将来的数据值,来从存储器预取数据值用于存储在缓存单元中,
其中预取单元被配置为处理错过响应,这包括增加它在存储器访问请求指定等待(pending)数据值(即已经经历预取但还未被存储在缓存单元中的数据值)时预取的将来数据值的数量,
其中预取单元被配置为:响应于禁止条件被满足,而在禁止期暂时禁止错过响应。
根据本技术的预取单元被配置为动态调整其预取距离,即,在那些数据值被由指令执行单元发出的存储器访问实际请求之前,它对其发起预取的那些将来数据值的数量。应当理解本文中术语“数据值”应当被解释为概括地覆盖指令和数据。通过监视从指令执行单元接收到的存储器访问请求以及判定它们是否被已经被预取并被存储在缓存单元中的数据值成功地预期,这种动态调整得以实现。特别地,预取单元被配置为通过处理错过响应来调整预取距离,其中当接收到的存储器访问请求指定已经是预取对象但还未被存储在缓存单元中的数据值时预取单元预取的数据值的数量被增加。也就是说,通常在这种情况下的解释是预取器已经正确地预测该数据值将被由指令执行单元发起的存储器访问请求需要,但还未提前发起对该数据值的足够远的预取使得其到从指令执行单元接收到存储器访问的时候在缓存单元中已经可用。因此,根据该解释,预取单元可以通过增加它预取的数据值的数量来减小将来发生这种情况的可能性,即,增加它的预取距离,使得对预测将被指令执行单元要求的给定数据值的预取在它实际上被指令执行单元要求之前更早被发起。
然而,本技术意识到,每次从指定已经经历预取但还未被存储在缓存中的数据值的指令执行单元接收到存储器访问请求时,预取单元可能并不总是需要增加它的预取距离。例如,本技术意识到,在由数据处理装置实现数据处理活动的过程中,可能发生一些情况,其中增加预取距离并不一定会引起数据处理性能的改善,因此实际上可能是不需要的。因此,本技术规定预取单元可以附加地监视禁止条件,并且当这种禁止条件被满足时,预取单元被配置为在预定禁止期内暂时禁止通常的错过响应(即增加预取距离)。因而,这使得预取单元能够标识那些通过增加预取距离数据将不会改善处理装置的性能的情况,并暂时阻止那种通常响应。
禁止条件可以以多种不同的方式被配置,但是在一个实施例中,禁止条件包括对强制错过条件的标识,其中,当存储器访问请求指定的等待数据值必然未被存储在缓存单元中时,强制错过条件被满足。因此,在等待数据值必然未被存储在缓存中(即预取单元的其他配置也不能避免数据值还未被存储在缓存单元中这一事实)的情况下,则预取单元的配置(特别是它的预取距离)不被改变是有利的。
强制错过条件可能因为许多原因出现,但是在一个实施例中,当存储器访问请求不可预取时,强制错过条件被满足。存储器访问请求不可预取的事实由此提供了一个理由来解释为什么预取单元的配置(特别是它的预取距离)不是问题,即,并不是它造成等待数据值还未被存储在缓存单元中。
在一些实施例中,预取单元被配置为针对每个存储器访问请求执行步幅(stride)检查,其中步幅检查判定存储器访问请求是否确实推断当前的数据值访问模式,并且其中数据处理装置中的存储器地址在存储器页中被管理,并且其中预取单元被配置为:响应于一组与将来数据值数量对应的存储器地址跨越页边界,抑制步幅检查。为了成功地推断指令执行单元发出的存储器访问请求的当前数据值访问模式,预取单元通常可以被配置为针对每个新的存储器访问请求检查相应的新地址是否确实与预测的步幅匹配(即数据值访问模式推断),但是当页边界被跨越时,由于可以合理地预期这种步幅检查无论如何都不会引起匹配,所以可以抑制步幅检查以节省不必要的处理。
在一些实施例中,数据处理装置中的存储器地址在存储器页中被管理,当与将来数据值数量相对应的一组存储器地址跨越页边界时,禁止被满足。当被预取单元预取的那些将来数据值跨越页边界时,这意味着那些数据值的第一子集在一个存储器页中,而那些数据值的第二部分在第二存储器页中。由于一个存储器页的物理地址与第二存储器页的物理地址之间没有关联,这造成预取单元根本不可能成功地预测并预取相应的目标数据值的情况。
在一些实施例中,预取单元被配置使得在将来数据值的数量(即预取距离)被增加之后的预定时期内,禁止条件被满足。已经认识到,由于存储器访问延迟,当预取距离增加时,正经历预取(且与特定的程序指令相对应)的存储器访问请求的数量随后将在缓存单元的内容中已经产生相应的变化之前增加。因此会有一段中间时间,在这段时间中对要禁止的错过响应(即进一步增加预取距离)是有利的。事实上,可以想到这样的正反馈场景:预取距离可能被反复地增加。虽然在更简单的指令执行单元中这通常不是问题,但是在多线程指令执行单元的情况中,指令执行单元将被第一个实例阻塞,因为等待数据值还未被存储在缓存单元中;即,更加可能出现与已经经历预取但还未被存储在缓存单元中的数据值相关的这种反复的存储器访问请求,以及针对这种反复增加预取距离而发生的缓和诉求。
取决于数据处理装置的具体约束,可以以各种方式对禁止期的持续时间进行配置,但是在一个实施例中禁止期是数据处理装置的标准存储器延迟的倍数,存储器延迟代表数据值从存储器中被读取所需要的时间。禁止期从而可以被安排,使得在标准存储器延迟的这个倍数经过之前,预取单元预取的将来值数量(即预取距离)的调整不可以被增加。例如,在由于预取距离最近刚被增加导致预取距离没被增加的情况下,这个禁止期允许缓存单元中的内容有足够的时间来产生期望的增加。
指令执行单元可以采取各种形式,但是在一个实施例中,数据处理装置包括被配置为执行这一系列程序指列的多个指令执行单元。此外,在一些实施例中,指令执行单元被配置为当执行这一系列程序指令时并行地执行多个线程。事实上,在一些这种实施例中,指令执行单元被配置为以单指令多线程方式操作。如上所述,在被配置为以更并行的方式执行指令的数据处理装置中,本技术意识到的问题中的关于响应于缓存行中已经经受预取请求的缓存错过增加预取距离的一些问题可以变得更普遍,多核和/或多线程数据处理装置代表这种设备的示例。
如上所述,虽然预取单元可以被配置为增加其预取距离,但是它也可以具有减小预取距离的机制,在一个实施例中预取单元被配置为周期性地减小它预取的将来数据值的数量。因此,这为由错过响应导致的预取距离的增加提供平衡,因此可以提供一种动态方法,其中,预取距离周期性地减小,并且仅当被要求时增加。这允许系统在一种配置中操作,该配置平衡在指令执行单元需求之前预取器操作充分以及不要提前预取过远从而使用比所需要的更大的存储器带宽的相互矛盾的约束。
在一些实施例中,预取单元被配置为管理与预取表有关的将来数据值的预取,其中预取表中的每个条目由程序计数器值来索引,程序计数器值指示这一系列程序指令中选定的指令,预取表中的每个条目指示选定指令的当前数据值访问模式,其中预取单元被配置为:响应于禁止条件被满足,抑制对预取表中的至少一个条目的修改。预取单元可以在预取表中的每个条目内维持各种参数以使得它能够预测并预取将被指令执行单元需要的数据值,响应于抑制条件,不改变这些参数可能是有利的。也就是说,当禁止条件被满足时,无需改变预取单元对于预取表条目的准确度已经发展的可信度。
从第二方面看,本发明提供一种数据处理装置,包括:
执行装置,用于执行一系列程序指令,其中对所述程序指令中的至少一些程序指令的执行发起从存储器读取数据值的存储器访问请求;
存储装置,用于存储从存储器中读取的数据值的副本;以及
预取装置,在数据值被执行装置请求之前,通过推断存储器访问请求的当前数据值访问模式以预测将被执行装置请求的将来数据值并预取该将来数据值,来从存储器预取数据值用于存储在存储装置中,
其中,预取装置被配置为处理错过响应,包括增加它在存储器访问请求指定等待数据值(已经经历预取但还未被存储在缓存单元中的数据值)时预取的将来数据值的数量,
其中用于预取的装置被配置为:响应于禁止条件被满足,在禁止期暂时禁止错过响应。
从第三方面看,本发明提供一种数据处理的方法,包括以下步骤:
执行一系列程序指令,其中对所述程序指令中的至少一些程序指令的执行发起从存储器读取数据值的存储器访问请求;
将从存储器中读取的数据值的副本存储在缓存中;
在数据值被执行步骤请求之前,通过推断存储器访问请求的当前数据值访问模式以预测将被执行步骤请求的将来数据值并预取该将来数据值,来从存储器预取数据值用于存储在缓存中,
处理错过响应,包括增加它在存储器访问请求指定等待数据值(已经经历预取但还未被存储在缓存单元中的数据值)时预取的将来数据值的数量,
响应于禁止条件被满足,在禁止期暂时禁止错过响应。
附图说明
参考如附图中所示出的实施例,本发明将仅通过示例的方式被进一步描述,附图中:
图1概要的示出一个实施例中的数据处理装置,该数据处理装置中提供了两个多线程的处理器核;
图2概要的示出预取表中的条目响应于已执行的程序指令的发展,以及所产生的等待预取和二级缓存内容;
图3概要的示出虚拟地址页和物理地址页之间的对应关系,以及在页边界上可能出现的预取问题;
图4概要的示出一个实施例中的预取单元;
图5概要的示出一个实施例中的预取单元可以采取的一系列步骤。
具体实施方式
图1概要的示出一个实施例中的数据处理装置10。该数据处理装置是多核设备,包括处理器核11和处理器核12。每个处理器核11、12是能够以单指令多线程(SIMT)方式执行多达256个线程的多线程处理器。每个处理器核11、12具有相关联的翻译后备缓冲器(TLB)13、14,每个处理器核将TLB用作第一参考点来将处理器核内部使用的虚拟存储器地址翻译成由存储器系统使用的物理地址。
数据处理装置10的存储器系统以分层方式被布置,其中1级(L1)缓存15、16与各个处理器核11、12相关联,同时处理器核11、12共享2级(L2)缓存17。L1和L2缓存之外,存储器访问被分发到外部存储器18。与这种存储器分层结构的三个层次中的每一层相关联的存储器延迟存在显著区别。例如,虽然存储器访问请求只需要花费大约一个周期来访问L1缓存15、16,但是被分发到L2缓存17的存储器访问请求通常花费10-20个周期,而没命中任何缓存从而必须被分发到外部存储器18的存储器访问请求通常花费200个周期的数量级来完成。
由于特别是与访问存储器18相关联的显著的存储器延迟,数据处理装置10还具有与L2缓存17相关联的预取单元19。该预取单元19被配置为监视L2缓存17接收到的存储器访问请求,并基于那些存储器访问请求可见的访问模式来产生预取事务,这些预取事务从存储器18读取预计将来被核11、12中的一个要求的数据值。通过使这些数据值被预填充到二级缓存17的缓存行20中,预取单元19力图隐藏与从处理器核11、12访问存储器18相关联的大的存储器延迟。
为了这样做,预取单元19必须通过在核11、12发出相应的存储器访问请求之前发起若干个预取事务来特别地维持与核11、12发出的存储器访问请求相关的“预取距离”,使得在相应的数据值被由处理器核11、12中的一个发出的存储器访问请求要求和请求之前,这些预取事务有时间完成并填充缓存行20。因此,预取单元19具有预取表21,预取表21填充有与观察到被L2缓存17接收的存储器访问请求相对应的条目,并允许预取单元19来开发数据值访问模式,预取单元19可以对数据值访问模式进行推断来判定哪个预取事务应该被发出。表21的更多的细节将在下面参考图2给出。
预取单元19还维持等待预取的列表22,即已经被发出但还未完成的预取事务的记录。也就是说,作为监视L2缓存17的一部分,当预取单元19发出的预取事务完成并且相应的数据被存储在缓存行20中时,等待预取的列表22中的相应的条目可以被删除。等待预取列表22的一个具体用途是使得预取单元19能够适应它维持的、关于其预取表21中的给定条目的预取距离。当预取单元19观察到被L2缓存17接收到的、命中当前正处在被预取的过程中的缓存行20的访问请求(即,在等待预取列表22中具有相应的条目)时,那么预取单元19一般将其作为触发来增加预取表21中的那个条目的预取距离,因为这很可能表明:如果它要在L2缓存17接收到来自处理器核11、12中的一个的预期的访问请求之前完成并填充相应的缓存行20,则该预取单元19需要更早地对预取表21中的这个条目发出预取转换。然而,根据这里的技术,响应于这种情况,预取单元19将不会总是增加预取距离,这将参考下面的附图被详细描述。
图2示出正被执行的一些示例程序指令、预取表21中的产生的条目、相应的等待预取和相应的L2缓存内容。如可在示例程序指令中看到的,这一系列程序指令包括循环,该循环可能依赖于条件COND而被重复执行多次。对本技术有重要意义的两个程序指令是开始的ADD指令以及随后的LOAD指令,ADD指令将存储在寄存器r9中的值增加100,LOAD指令使存储在由寄存器r9的当前内容给出的存储器地址中的数据值被装载到寄存器r1中。因此,应当理解(假定寄存器r9中保持的值在该循环中不被修改)LOAD指令将引起对于存储器地址的存储器访问请求被做出,存储器地址以步长100增加。预取表21是PC索引的,在图中LOAD指令被赋予等于五的示例程序计数器(PC)值。预取单元19因此观察到与该PC值相关联的存储器访问请求针对增量为100的存储器地址而发出,预取表21中的相应的条目的一部分与该PC值相关联地记录最近看到的存储器地址。基于这些存储器地址的模式,预取单元19因此判定形成预取表21中的相应条目的另一部分的“步幅”为100,基于此其可以推断访问模式来针对被看到与该PC值相关联的、被L2缓存17接收的存储器访问请求产生预取事务。对于与该PC值相关联的每个新的存储器访问请求,控制预取单元19被配置为判定是否存在“步幅匹配”,即对使用所存储的步幅值的访问模式的推断是否已经正确地预测该存储器访问请求的存储器地址。在推断不匹配的情况下,预取单元(根据本领域公知的技术)可以修改预取表21中的相应的条目。
预取表21中的条目的最后部分是预取单元为该条目维持的预取距离。该预取距离判定在与该PC值相关联的最近的存储器访问请求之前预取单元19生成了多少事务。例如,如图2中示出的快照,预取表21中与PC值5对应的条目的当前预取距离是4。因此,在与该PC值相关联的最近的存储器访问请求针对的是存储器地址“+300”的情况下,在此之前存在四个等待预取事务(即,“+400”、“+500”、“+600”和“+700”),如等待预取列表22的内容所示出的。此外,L2缓存17已经包含与存储器地址“+0”、“+100”、“+200”和“+300”相关的、之前的存储器访问请求相对应的条目。因此,对存储器地址“+300”的当前的存储器访问请求将命中L2缓存17而不需要被进一步分发到外部存储器18。
为了力图维持预先预取不够远(因此造成处理器核11、12等待与存储器访问请求对应的已预取的事务赶上)以及预先预取过远(其使用了不必要的存储器带宽,并且冒着缓存17中的被预取的条目在它们被处理器核11、12使用之前被驱逐出的风险)之间的优化平衡,预取单元19被配置为动态调整预取距离。作为这种动态调整的一部分,预取单元19通常被配置为判定当前正在被预取的过程中的L2缓存17何时接收了存储器访问请求(即在等待预取列表22中具有对应条目)以及在这种情况下增加预取距离。然而,根据本技术,预取单元19还被配置为在某些指定条件下在预定时间段内暂时禁止这个响应。
图3概要的示出数据处理装置中的存储器使用情况,特别示出了处理器核11、12所用的虚拟地址和在存储器分层结构中更高的层(特别是L2缓存17和预取单元19)所用的物理地址之间的对应关系。数据处理装置10中的存储器地址以页为基础被处理,其中存储器地址以4kB页为单位被处理。尽管存储器地址的4kB页中的在虚拟寻址系统中连续的存储器地址在物理寻址中也是连续的,但是虚拟地址系统中的存储器页的顺序和物理地址系统中的存储器页的顺序之间没有关联。这个事实对于预取单元19有重要意义,因为虽然指示增量(预取单元以该增量值预取预取表21中给定条目的地址)的步幅将通常在存储器页的规格内(意味着预取单元19可以以步幅为间隔向物理地址连续地发出预取事务),但是一旦到达页边界,预取表21中针对该条目的预取事务的下一个增量不能保证仅仅是所用的最后的物理地址的步幅增量。例如,如图3中所示出的,物理地址页2不连续地跟随物理地址页1。因此,可以看出页2中的第一个物理存储器地址是不可预取的,因为该物理地址不能被预取单元19基于物理地址页1中所用的最后的物理地址预测。
图4概要的示出预取单元19的更多的细节。预取单元19在控制单元30的总体控制下操作,控制单元30接收指示L2缓存17可见的存储器访问请求的信息。控制单元30特别地被配置为判定下述条件(本文也称为禁止条件):在这些情形下,当存储器访问请求命中L2缓存17中的、仍处在被预取的过程中的行20时,增加预取距离的正常响应在禁止期被抑制。也就是说,在禁止条件被检测到之后,增加预取距离的通常响应将不会发生,除非存储器访问请求是在由禁止期给定的时间之后才命中正处在被预取过程中的行。禁止期是预取单元19的可配置参数,控制单元30可以从所存储的禁止期值31来确定禁止期。取决于特定的系统配置,该禁止期可以变化,但是可以(例如)被布置为对应于存储器访问延迟的倍数(例如被设为~400周期,其中存储器延迟是~200周期)。此外,虽然控制单元对预取表21的内容的维护进行管理,例如在需要时更新条目,但是响应于禁止条件,这种更新也可以被抑制。此外预取单元19被配置为当判定页边界已经被跨越时抑制上述“步幅检查”,因为物理地址的不连续意味着步幅检查将相应地可能失败(虽然预取表的当前设置没有错误)。
使控制单元30判定禁止条件被满足的一种情况是跨越页边界(如上面参考图3所述)。预取单元19构成数据处理装置10的存储器系统的一部分,因此清楚被使用的页大小以及页边界什么时候被跨越。使控制单元30被配置为判定禁止条件被满足的另一种情况是当预取表21中的给定条目的预取距离实际上最近刚被增加时(其中,“最近”表示少于禁止期31之前)。控制单元30的另一特征是:在管理预取表21的条目时,它被配置为周期性地(取决于从距离减小计时器33接收到的信号)减小与预取表21中的条目相关联的预取距离。这为上述可以导致预取距离被增加的行为提供了平衡。因此,控制单元30由此被配置为周期性地减小与预取表21中的给定条目相关联的预取距离,而当预取单元19的预取性能需要时增加相应的那个条目的预取距离。
图5概要的示出一个实施例中预取单元可能采取的一系列步骤。流程可以被认为开始于步骤50,其中预取单元观察到L2缓存接收到下一个存储器访问请求。随后在步骤51,预取单元判定禁止条件当前是否被满足。在本实施例的这个阶段,这个条件是页边界最近已经被跨越。如果在步骤51判定禁止条件不被满足(即,如果页边界最近没被跨越),则预取单元19根据它的总体配置运转,并且在步骤53判定L2缓存接收到的存储器访问请求中的存储器地址是否与预取表21中相应的条目所示出的模式匹配(即步幅检查被执行)。如果确实正确地匹配,则预取表21的这个条目所保持的信息继续正确地预测存储器地址。然而如果观察到变化,则流程前进到步骤54,其中预取表21中的条目根据通常的预取表管理策略按需被调整。然后(如果页边界最近已经被跨越,则可能直接从步骤51)在步骤55判定L2缓存接收到的这个最近的存储器访问请求是否已经导致错过以及对该存储器地址的预取是否正等待(参考等待预取列表22)。如果不是这样,那么流程前进到步骤56,其中判定距离减小计时器33的周期是否已经到期。如果还未到期,则流程直接前进到步骤58,其中预取单元19继续执行它的预取操作,其后流程返回到步骤50。然而如果在步骤56判定距离减小计时器的周期已经到期,则在步骤57该预取表条目的预取距离被减小,流程然后经由步骤58继续。
返回到步骤55的考虑,如果发现存储器访问请求导致L2缓存的错过并且针对相应的存储器地址的预取事务当前正等待,那么流程前进到步骤59,其中预取单元19的控制单元30判定禁止条件当前是否被满足(注意在本实施例的这个阶段,如图5中的框52所定义的,这指的是页边界最近被跨越或者与步骤50上见到的存储器访问请求相对应的预取表中的条目的预取距离最近被增加)。注意在这里“最近”指的是在当前为预取单元19的操作定义的禁止期31内。如果禁止条件不被满足,那么流程前进到步骤60,其中控制单元30使预取表21中的这个条目的预取距离被增加,然后流程经由步骤58继续。然而如果在步骤59判定禁止条件当前不被满足,那么流程经由步骤61前进,其中控制单元30抑制对这个预取表条目的修改(包括不增加预取距离)。流程随后经由步骤58继续。
虽然本文描述了特定的实施例,但是应当领会本发明不限于这些实施例,在本发明的范围内可以做出许多修改和增加。例如,可以对下面的从属权利要求的特征和独立权利要求的特征做出各种组合而不背离本发明的范围。

Claims (13)

1.一种数据处理装置,包括:
指令执行单元,所述指令执行单元被配置为执行一系列程序指令,其中对所述程序指令中的至少一些程序指令的执行发起从存储器读取数据值的存储器访问请求;
缓存单元,所述缓存单元被配置为存储从所述存储器中读取的所述数据值的副本;以及
预取单元,所述预取单元被配置为在所述数据值被所述指令执行单元请求之前,通过推断所述存储器访问请求的当前数据值访问模式以预测将被所述指令执行单元请求的将来数据值并预取所述将来数据值,来从所述存储器预取所述数据值用于存储在所述缓存单元中,
其中所述预取单元被配置为处理错过响应,包括增加它在所述存储器访问请求指定等待数据值时预取的所述将来数据值的数量,所述等待数据值是已经经历预取但还未被存储在所述缓存单元中的数据值,
其中所述预取单元被配置为:响应于禁止条件被满足,在禁止期暂时禁止所述错过响应,
其中所述禁止条件包括对强制错过条件的标识,其中,当所述存储器访问请求指定的所述等待数据值必然未被存储在所述缓存单元中时,所述强制错过条件被满足。
2.如权利要求1所述的数据处理装置,其中当所述存储器访问请求不可预取时,所述强制错过条件被满足。
3.如权利要求1所述的数据处理装置,其中所述预取单元被配置为针对每个存储器访问请求执行步幅检查,其中所述步幅检查判定所述存储器访问请求是否确实推断所述当前数据值访问模式,其中所述数据处理装置中的存储器地址在存储器页中被管理,其中所述预取单元被配置为:响应于与所述将来数据值的数量相对应的一组存储器地址跨越页边界,抑制步幅检查。
4.如权利要求1所述的数据处理装置,其中所述数据处理装置中的存储器地址在存储器页中被管理,当与所述将来数据值的数量对应的一组存储器地址跨越页边界时,所述禁止条件被满足。
5.如权利要求1所述的数据处理装置,其中所述预取单元被配置以使得:所述将来数据值的数量被增加之后的预定时期内,所述禁止条件被满足。
6.如权利要求1所述的数据处理装置,其中所述禁止期是所述数据处理装置的标准存储器延迟的倍数,所述存储器延迟代表从所述存储器读取数据值花费的时间。
7.如权利要求1所述的数据处理装置,其中所述数据处理装置包括被配置为执行所述一系列程序指令的多个指令执行单元。
8.如权利要求1所述的数据处理装置,其中所述指令执行单元被配置为:当执行所述一系列程序指令时,并行地执行多个线程。
9.如权利要求8所述的数据处理装置,其中所述指令执行单元被配置为以单指令多线程方式操作。
10.如权利要求1所述的数据处理装置,其中所述预取单元被配置为周期性地减小它预取的所述将来数据值的数量。
11.如权利要求1所述的数据处理装置,其中所述预取单元被配置为管理对与预取表有关的所述将来数据值的预取,其中所述预取表中的每个条目由程序计数器值来索引,所述程序计数器值指示了所述一系列程序指令中的选定指令,所述预取表中的每个条目指示所述选定指令的所述当前数据值访问模式,其中所述预取单元被配置为:响应于所述禁止条件被满足,抑制对所述预取表中的至少一个条目的修改。
12.一种数据处理装置,包括:
执行装置,用于执行一系列程序指令,其中对所述程序指令中的至少一些程序指令的执行发起从存储器读取数据值的存储器访问请求;
存储装置,用于存储从所述存储器中读取的所述数据值的副本;以及
预取装置,用于在所述数据值被所述执行装置请求之前,通过推断所述存储器访问请求的当前数据值访问模式以预测将被所述执行装置请求的将来数据值并预取所述将来数据值,来从所述存储器预取所述数据值用于存储在所述存储装置中,
其中,所述预取装置被配置为处理错过响应,包括增加它在所述存储器访问请求指定等待数据值时预取的所述将来数据值的数量,所述等待数据值是已经经历预取但还未被存储在所述存储装置中的数据值,
其中所述预取装置被配置为:响应于禁止条件被满足,在禁止期暂时禁止所述错过响应,
其中所述禁止条件包括对强制错过条件的标识,其中,当所述存储器访问请求指定的所述等待数据值必然未被存储在用于存储所述数据值的副本的所述存储装置中时,所述强制错过条件被满足。
13.一种数据处理方法,包括以下步骤:
执行一系列程序指令,其中对所述程序指令中的至少一些程序指令的执行发起从存储器读取数据值的存储器访问请求;
将从所述存储器中读取的所述数据值的副本存储在缓存中;以及
在所述数据值被所述一系列程序指令的执行请求之前,通过推断所述存储器访问请求的当前数据值访问模式以预测将被所述一系列程序指令的执行请求的将来数据值并预取所述将来数据值,来从所述存储器预取所述数据值用于存储在所述缓存中,
处理错过响应,包括增加它在所述存储器访问请求指定等待数据值时预取的所述将来数据值的数量,所述等待数据值是已经经历预取但还未被存储在所述缓存中的数据值,
响应于禁止条件被满足,在禁止期暂时禁止所述错过响应,
其中所述禁止条件包括对强制错过条件的标识,其中,当所述存储器访问请求指定的所述等待数据值必然未被存储在所述缓存中时,所述强制错过条件被满足。
CN201410638407.7A 2013-11-14 2014-11-06 数据处理装置和数据处理方法 Active CN104636270B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/080,139 US20150134933A1 (en) 2013-11-14 2013-11-14 Adaptive prefetching in a data processing apparatus
US14/080,139 2013-11-14

Publications (2)

Publication Number Publication Date
CN104636270A CN104636270A (zh) 2015-05-20
CN104636270B true CN104636270B (zh) 2021-03-05

Family

ID=51947048

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410638407.7A Active CN104636270B (zh) 2013-11-14 2014-11-06 数据处理装置和数据处理方法

Country Status (4)

Country Link
US (1) US20150134933A1 (zh)
KR (1) KR102369500B1 (zh)
CN (1) CN104636270B (zh)
GB (1) GB2521037B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672154B1 (en) * 2014-01-15 2017-06-06 Marvell International Ltd. Methods and apparatus for determining memory access patterns for cache prefetch in an out-of-order processor
CN104978282B (zh) * 2014-04-04 2019-10-01 上海芯豪微电子有限公司 一种缓存系统和方法
US9256541B2 (en) * 2014-06-04 2016-02-09 Oracle International Corporation Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
WO2017006235A1 (en) * 2015-07-09 2017-01-12 Centipede Semi Ltd. Processor with efficient memory access
US9906590B2 (en) * 2015-08-20 2018-02-27 Verizon Digital Media Services Inc. Intelligent predictive stream caching
CN106776371B (zh) * 2015-12-14 2019-11-26 上海兆芯集成电路有限公司 跨距参考预取器、处理器和将数据预取到处理器的方法
US9542290B1 (en) 2016-01-29 2017-01-10 International Business Machines Corporation Replicating test case data into a cache with non-naturally aligned data boundaries
US10169180B2 (en) 2016-05-11 2019-01-01 International Business Machines Corporation Replicating test code and test data into a cache with non-naturally aligned data boundaries
US10055320B2 (en) * 2016-07-12 2018-08-21 International Business Machines Corporation Replicating test case data into a cache and cache inhibited memory
US10223225B2 (en) 2016-11-07 2019-03-05 International Business Machines Corporation Testing speculative instruction execution with test cases placed in memory segments with non-naturally aligned data boundaries
US10379864B2 (en) 2016-12-26 2019-08-13 Intel Corporation Processor prefetch throttling based on short streams
US11256623B2 (en) * 2017-02-08 2022-02-22 Arm Limited Cache content management
US10261878B2 (en) 2017-03-14 2019-04-16 International Business Machines Corporation Stress testing a processor memory with a link stack
US10416963B2 (en) * 2017-06-19 2019-09-17 Arm Limited Bounds checking
US10635331B2 (en) 2017-07-05 2020-04-28 Western Digital Technologies, Inc. Distribution of logical-to-physical address entries across bank groups
CN109471971B (zh) * 2018-02-06 2021-05-04 华南师范大学 一种面向教育领域资源云存储的语义预取方法及系统
US10713053B2 (en) * 2018-04-06 2020-07-14 Intel Corporation Adaptive spatial access prefetcher apparatus and method
GB2574270B (en) * 2018-06-01 2020-09-09 Advanced Risc Mach Ltd Speculation-restricted memory region type
US10997077B2 (en) * 2018-11-26 2021-05-04 Marvell Asia Pte, Ltd. Increasing the lookahead amount for prefetching
US11327891B2 (en) 2019-09-20 2022-05-10 Samsung Electronics Co., Ltd. Prefetching operations in storage devices
CN112527395B (zh) * 2020-11-20 2023-03-07 海光信息技术股份有限公司 数据预取方法和数据处理装置
US11853227B2 (en) * 2021-04-28 2023-12-26 Arm Limited Data processing apparatus and method for performing address translation
CN114546488B (zh) * 2022-04-25 2022-07-29 超验信息科技(长沙)有限公司 一种向量跨步指令的实现方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233645B1 (en) * 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
CN101390060A (zh) * 2004-05-14 2009-03-18 米克伦技术公司 存储集线器和存储排序的方法
CN102498477A (zh) * 2009-07-13 2012-06-13 苹果公司 Tlb预取
CN102511039A (zh) * 2009-09-25 2012-06-20 惠普发展公司,有限责任合伙企业 将不可预取存储单元映射到存储器映射输入/输出空间中

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6421762B1 (en) * 1999-06-30 2002-07-16 International Business Machines Corporation Cache allocation policy based on speculative request history
US6532521B1 (en) * 1999-06-30 2003-03-11 International Business Machines Corporation Mechanism for high performance transfer of speculative request data between levels of cache hierarchy
US20060168401A1 (en) * 2005-01-26 2006-07-27 International Business Machines Corporation Method and structure for high-performance linear algebra in the presence of limited outstanding miss slots
US7487297B2 (en) * 2006-06-06 2009-02-03 International Business Machines Corporation Dynamically adjusting a pre-fetch distance to enable just-in-time prefetching within a processing system
US7493451B2 (en) * 2006-06-15 2009-02-17 P.A. Semi, Inc. Prefetch unit
EP2115598B1 (en) * 2007-01-25 2011-03-30 Nxp B.V. Hardware triggered data cache line pre-allocation
US7831800B2 (en) * 2007-05-17 2010-11-09 Globalfoundries Inc. Technique for prefetching data based on a stride pattern
US8683133B2 (en) * 2008-01-18 2014-03-25 Texas Instruments Incorporated Termination of prefetch requests in shared memory controller
US7958316B2 (en) * 2008-02-01 2011-06-07 International Business Machines Corporation Dynamic adjustment of prefetch stream priority
CN101634970B (zh) * 2009-08-26 2011-09-07 成都市华为赛门铁克科技有限公司 预取长度调整方法、装置和存储系统
US8291171B2 (en) * 2009-11-30 2012-10-16 Hewlett-Packard Development Company, L.P. Altering prefetch depth based on ready data
US8949579B2 (en) * 2010-10-04 2015-02-03 International Business Machines Corporation Ineffective prefetch determination and latency optimization
CN102023931B (zh) * 2010-12-17 2015-02-04 曙光信息产业(北京)有限公司 一种自适应缓存预取方法
JP2012150529A (ja) * 2011-01-17 2012-08-09 Sony Corp メモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システム
US9348753B2 (en) * 2012-10-10 2016-05-24 Advanced Micro Devices, Inc. Controlling prefetch aggressiveness based on thrash events
US10095526B2 (en) * 2012-10-12 2018-10-09 Nvidia Corporation Technique for improving performance in multi-threaded processing units
US9563562B2 (en) * 2012-11-27 2017-02-07 Nvidia Corporation Page crossing prefetches
US9639471B2 (en) * 2012-11-27 2017-05-02 Nvidia Corporation Prefetching according to attributes of access requests
US9047198B2 (en) * 2012-11-29 2015-06-02 Apple Inc. Prefetching across page boundaries in hierarchically cached processors
US9280474B2 (en) * 2013-01-03 2016-03-08 Intel Corporation Adaptive data prefetching
US10671535B2 (en) * 2013-07-17 2020-06-02 Advanced Micro Devices, Inc. Stride prefetching across memory pages

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233645B1 (en) * 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
CN101390060A (zh) * 2004-05-14 2009-03-18 米克伦技术公司 存储集线器和存储排序的方法
CN102498477A (zh) * 2009-07-13 2012-06-13 苹果公司 Tlb预取
CN102511039A (zh) * 2009-09-25 2012-06-20 惠普发展公司,有限责任合伙企业 将不可预取存储单元映射到存储器映射输入/输出空间中

Also Published As

Publication number Publication date
CN104636270A (zh) 2015-05-20
KR20150056042A (ko) 2015-05-22
GB2521037A (en) 2015-06-10
GB201417802D0 (en) 2014-11-19
GB2521037B (en) 2020-12-30
KR102369500B1 (ko) 2022-03-03
US20150134933A1 (en) 2015-05-14

Similar Documents

Publication Publication Date Title
CN104636270B (zh) 数据处理装置和数据处理方法
US10725992B2 (en) Indexing entries of a storage structure shared between multiple threads
EP3738041B1 (en) Speculative cache storage region
US11321245B2 (en) Selecting cache aging policy for prefetches based on cache test regions
US6678795B1 (en) Method and apparatus for memory prefetching based on intra-page usage history
US7707359B2 (en) Method and apparatus for selectively prefetching based on resource availability
US20070239940A1 (en) Adaptive prefetching
CN111936979A (zh) 在存在推测性读取操作的情况下的缓存控制
KR102478766B1 (ko) 디스크립터 링 관리
US9690707B2 (en) Correlation-based instruction prefetching
US10402203B2 (en) Determining a predicted behaviour for processing of instructions
US8635406B2 (en) Data processing apparatus and method for providing target address information for branch instructions
KR20150047423A (ko) 데이터 처리방법 및 프리페치 장치
US7346741B1 (en) Memory latency of processors with configurable stride based pre-fetching technique
US11036639B2 (en) Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays
KR20190008274A (ko) 업/다운 프리페쳐
US11526356B2 (en) Prefetch mechanism for a cache structure
CN113448879A (zh) 存储器管理
CN110889147B (zh) 一种利用填充缓存抵御Cache边信道攻击的方法
WO2021059198A1 (en) Circuitry and method
CN111198827B (zh) 页表预取方法及装置
EP3239848A1 (en) Selecting cache aging policy for prefetches based on cache test regions

Legal Events

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