CN114450668A - 电路和方法 - Google Patents

电路和方法 Download PDF

Info

Publication number
CN114450668A
CN114450668A CN202080067494.9A CN202080067494A CN114450668A CN 114450668 A CN114450668 A CN 114450668A CN 202080067494 A CN202080067494 A CN 202080067494A CN 114450668 A CN114450668 A CN 114450668A
Authority
CN
China
Prior art keywords
circuitry
program instructions
prefetch
cache
program
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.)
Granted
Application number
CN202080067494.9A
Other languages
English (en)
Other versions
CN114450668B (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 Technology China Co Ltd
Original Assignee
ARM Technology China Co 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 Technology China Co Ltd filed Critical ARM Technology China Co Ltd
Publication of CN114450668A publication Critical patent/CN114450668A/zh
Application granted granted Critical
Publication of CN114450668B publication Critical patent/CN114450668B/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • 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/6028Prefetching based on hints or prefetch instructions

Landscapes

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

Abstract

一种电路,包括:用于处理由存储电路存储的程序指令的处理电路,并且处理电路包括被配置成执行程序指令的就地执行处理电路;用于存储由处理电路执行的程序指令的预取缓冲器;预取电路,其用于控制将程序指令预取到预取缓冲器以及选择供预取的下一指令;以及替换电路,其用于控制从预取缓冲器删除指令以为新预取的程序指令提供存储空间;其中,预取电路和替换电路中的一者或两者被配置成使得预取电路的对供预取的下一程序指令的选择操作和替换电路从预取缓冲器删除指令的删除操作中的一者或两者取决于先前执行的程序指令和对将要执行的后续程序指令的预测。

Description

电路和方法
相关申请的交叉引用
本申请要求2019年9月27日递交的美国申请No.16/585,387的权益和优先权,该美国申请的全部内容通过引用并入本文。
技术领域
本发明涉及电路和方法。
背景技术
所谓的“就地执行”(“XIP”)操作可以指处理电路(诸如微处理器)领域的一种技术,其中从程序指令在主存储器中的位置执行这些程序指令,主存储器例如为非易失性存储器或其他存储器(诸如磁盘存储器)或更一般地为需要不小的(non-trivial)延迟和/或功率来存取的内存或存储电路。这可以避免需要将整个程序从主存储器复制到工作存储器(诸如随机存取存储器(RAM))。
为了减小上面提到的延迟和/或功率需求,可以利用所谓的XIP预取缓冲器。根据预测接下来可能需要哪些地址来执行程序指令,具有相关联的预取电路的XIP预取缓冲器提供主存储器的内容的子集的中间存储器。
发明内容
在一示例布置中,提供了一种电路,包括:
处理电路,所述处理电路用于处理程序指令,其中程序指令由存储电路存储并且处理电路包括被配置成执行存储电路中的程序指令的就地执行处理电路;
预取缓冲器,所述预取缓冲器用于存储由处理电路执行的程序指令;
预取电路,所述预取电路用于控制将程序指令预取到预取缓冲器以及选择供预取的下一指令;以及
替换电路,所述替换电路用于控制从预取缓冲器删除指令以为新预取的程序指令提供存储空间;
其中,预取电路和替换电路中的一者或两者被配置成使得预取电路的对预取的下一程序指令的选择操作和替换电路从预取缓冲器删除指令的删除操作中的一者或两者取决于先前执行的程序指令和对将要执行的后续程序指令的预测。
在另一示例布置中,提供了一种电路,包括:
处理电路,所述处理电路用于处理程序指令,其中程序指令由存储电路存储并且处理电路包括被配置成执行存储电路中的程序指令的就地执行处理电路;
预取缓冲器,所述预取缓冲器用于存储由处理电路执行的程序指令;
预取电路,所述预取电路用于控制将程序指令预取到预取缓冲器;以及
替换电路,所述替换电路用于控制从预取缓冲器删除指令以为新预取的程序指令提供存储空间;
其中:
处理电路包括高速缓存内存;
预取电路被配置成从处理电路接收高速缓存操作信息,该高速缓存操作信息至少指示高速缓存内存的操作的子集;以及
预取电路和替换电路中的一者或两者被配置成使得预取电路的对供预取的下一程序指令的选择操作和替换电路从预取缓冲器删除指令的删除操作中的一者或两者取决于高速缓存操作信息。
在另一示例布置中,提供了一种方法,包括:
处理程序指令,其中程序指令由存储电路存储并且该处理步骤包括就地执行存储电路中的程序指令;
在预取缓冲器中存储由处理步骤执行的程序指令;
将程序指令预取到预取缓冲器,该预取步骤包括选择供预取的下一指令;以及
从预取缓冲器中删除指令以为新预取的程序指令提供存储空间;
其中,选择步骤和删除步骤中的一者或两者取决于先前执行的程序指令和对将要执行的后续程序指令的预测。
在另一示例布置中,提供了一种方法,包括:
处理程序指令,其中程序指令由存储电路存储,并且该处理步骤包括就地执行存储电路中的程序指令以及将用于执行的程序指令存储在高速缓存内存中;
在预取缓冲器中存储由处理步骤执行的程序指令;
将程序指令预取到预取缓冲器,该预取步骤包括选择性地控制从一个或多个地址的集合中预取程序指令;以及
从预取缓冲器中删除指令以为新预取的程序指令提供存储空间;
其中:
预取步骤包括接收至少指示高速缓存内存的操作的子集的高速缓存操作信息;以及
预取步骤和删除步骤中的一者或两者取决于高速缓存操作信息。
本技术的其他各个方面和特征由所附权利要求限定。
附图说明
将仅以示例方式参考如附图所示的本技术的实施方式进一步描述本技术,附图中:
图1至图3示意性地示出了电路的示例;
图4和图5示意性地示出了图3的电路的操作的方面;以及
图6和图7是示出了相应的方法的示意性流程图。
具体实施方式
在参考附图讨论实施方式之前,提供以下对实施方式的描述。
一示例实施方式提供了一种电路,包括:
用于处理程序指令的处理电路,其中程序指令由存储电路存储并且处理电路包括被配置成执行存储电路中的程序指令的就地执行处理电路;
用于存储由处理电路执行的程序指令的预取缓冲器;
预取电路,其用于控制将程序指令预取到预取缓冲器以及选择供预取的下一指令;以及
替换电路,其用于控制从预取缓冲器删除指令以为新预取的程序指令提供存储空间;
其中,预取电路和替换电路中的一者或两者被配置成使得预取电路的对预取的下一程序指令的选择操作和替换电路从预取缓冲器删除指令的删除操作中的一者或两者取决于先前执行的程序指令和对将要执行的后续程序指令的预测。
示例实施方式可以提供一种在处理电路的XIP操作的情况下的预取布置,其中先前执行的程序指令和对将要执行的后续程序指令的预测用于影响、改变或以其他方式影响以下选择中的一者或两者:选择要预取哪些指令(或更一般地哪些存储地址);以及选择删除哪些先前预取的指令(或更一般地,地址)以产生可用于下一预取的指令或内存地址的空间。在一些示例中,这些操作特征中的两者都可以取决于先前执行的程序指令和对将要执行的后续程序指令的预测。
在示例布置中,这可以导致以下中的一者或多者:通过潜在更准确地预测预取哪些地址而获得更节能的XIP缓冲器和/或更准确地再利用先前预取的信息,和/或通过提高预取的信息中的命中率而获得更高性能的XIP缓冲器。在电路设计中可以容易地采用示例实施方式的技术。
在一些示例中,预取电路被配置成从处理电路接收程序流程预测信息,该程序流程预测信息至少指示预测的下一指令地址(诸如指示预测的转移目标或目的地的转移预测);预取电路被配置成选择性地控制从开始于预测的下一指令地址的一个或多个地址的集合中预取程序指令。这通过影响XIP预取器的操作进一步有效地利用预测信息。例如,如上所述,程序流程预测信息包括以下信息中的一者或多者:
指示转移目标地址的转移预测信息;以及
指示一个或多个接下来的连续程序指令的程序计数器信息。
在一些示例实施方式中,处理电路包括高速缓存内存;预取电路被配置成从处理电路接收高速缓存操作信息,该高速缓存操作信息至少指示高速缓存内存的操作的子集;预取电路被配置成根据高速缓存操作信息选择性地控制从一个或多个地址的集合中预取程序指令。本发明认识到,当被应用于控制或影响XIP预取器的操作时,各种类型的高速缓存信息可以是有用的。例如,高速缓存操作信息可以指示以下项中的至少一者:
处理电路的未成功高速缓存检索操作;
用于驱逐高速缓存内存的当前存储内容的高速缓存驱逐操作;
处理电路的成功高速缓存检索操作;以及
高速缓存替换控制状态。
在示例实施方式中,预取电路可以被配置成为至少以下程序指令中的每一者生成相应的权重:(i)用于基于程序流程预测信息进行预取的第一候选下一程序指令;和(ii)用于基于高速缓存操作信息进行预取的第二候选下一程序指令,以及根据相应的权重选择性地控制取决于供预取的第一候选下一程序指令和第二候选下一程序指令中的一者的预取。
示例实施方式采用作为区域控制器的电路(诸如可以被称为所谓的“局部分析器”的电路)根据以下信息中的一者或两者来生成当前地址区域(其可被称为“局部范围”),该当前地址区域至少具有包含一个或多个下一程序指令的阈值概率:
高速缓存操作信息;以及
程序流程信息。
当前地址区域或局部范围然后可以方便地用于控制XIP预取器的操作。例如,区域控制器可以被配置成生成第一概率值(或“流动性”),该第一概率值指示当前地址区域响应于给定预取操作而改变的概率;并且区域控制器可以被配置成根据第一概率值来改变与供预取的第一候选下一程序指令和第二候选下一程序指令相关联的相应权重。在示例布置中,区域控制器被配置成响应于程序流程预测信息和高速缓存操作信息的当前实例而调节适用于下一预取操作的第一概率值。在其他(或重叠)示例中,区域控制器被配置成生成第二概率值(或“粘性”),该第二概率值指示新预取的程序指令和从高速缓存中驱逐的程序指令中的一者或两者位于当前地址区域内的概率;并且区域控制器被配置成根据第二概率值来改变与供预取的第一候选下一程序指令和第二候选下一程序指令相关联的相应权重。该信息的示例用途是,区域控制器可以被配置成响应于程序流程预测信息和高速缓存操作信息的当前实例而调节适用于下一预取操作的第二概率值。
尽管可以基于一个指令接着一个指令地进行高速缓存操作,但是在示例实施方式中,高速缓存内存被配置成将程序指令作为程序指令组(例如,地址连续的组或其绝大部分地址为共同地址的组,例如所谓的“高速缓存行”)进行存储和驱逐;并且预取电路被配置成预取作为程序指令组的程序指令。
所谓的流动性和/或粘性度量的另一用途是,在示例实施方式中,区域控制器被配置成将第一概率值和第二概率值中的一者或两者提供给高速缓存内存;并且高速缓存内存被配置成响应于接收到的第一概率值和第二概率值中的一者或两者而改变其操作。作为该特征的示例,在示例中,对于至少为阈值概率的第二概率值,高速缓存内存被配置成不在当前地址区域中缓存程序指令。在附加的或替选的示例布置中,高速缓存内存被配置成响应于第一概率值而改变用于控制存储在高速缓存内存中的程序指令的替换的替换算法。
通常,存储器可以是需要不小的延迟和/或功率来存取的内存或存储电路。例如,存储电路可以是非易失性存储电路。
另一示例实施方式提供了一种电路,包括:
用于处理程序指令的处理电路,其中程序指令由存储电路存储并且处理电路包括被配置成执行存储电路中的程序指令的就地执行处理电路;
用于存储用于由处理电路执行的程序指令的预取缓冲器;
预取电路,其用于控制将程序指令预取到预取缓冲器;以及
替换电路,其用于控制从预取缓冲器删除指令以为新预取的程序指令提供存储空间;
其中:
处理电路包括高速缓存内存;
预取电路被配置成从处理电路接收高速缓存操作信息,该高速缓存操作信息至少指示高速缓存内存的操作的子集;以及
预取电路和替换电路中的一者或两者被配置成使得预取电路的对供预取的下一程序指令的选择操作和替换电路从预取缓冲器删除指令的删除操作中的一者或两者取决于高速缓存操作信息。
另一示例实施方式提供了一种方法,包括:
处理程序指令,其中程序指令由存储电路存储并且该处理步骤包括就地执行存储电路中的程序指令;
在预取缓冲器中存储由处理步骤执行的程序指令;
将程序指令预取到预取缓冲器,该预取步骤包括选择供预取的下一指令;以及
从预取缓冲器中删除指令以为新预取的程序指令提供存储空间;
其中,选择步骤和删除步骤中的一者或两者取决于先前执行的程序指令和对将要执行的后续程序指令的预测。
另一示例实施方式提供了一种方法,包括:
处理程序指令,其中程序指令由存储电路存储,并且该处理步骤包括就地执行存储电路中的程序指令以及将用于执行的程序指令存储在高速缓存内存中;
在预取缓冲器中存储由处理步骤执行的程序指令;
将程序指令预取到预取缓冲器,该预取步骤包括选择性地控制从一个或多个地址的集合中预取程序指令;以及
从预取缓冲器中删除指令以为新预取的程序指令提供存储空间;
其中:
预取步骤包括接收至少指示高速缓存内存的操作的子集的高速缓存操作信息;以及
预取步骤和删除步骤中的一者或两者取决于高速缓存操作信息。
现在参考附图,图1示意性地示出了包括处理电路100的电路,处理电路100具有处理器内核105和处理器高速缓存110。处理电路100被布置成处理程序指令,其中程序指令由存储电路120存储,处理电路100包括用于执行存储电路120中的程序指令的就地执行(“XIP”)处理电路,也就是说,不需要将程序指令复制或移动到中间存储器(诸如随机存取存储器(RAM))来执行。
存储电路120可以是例如非易失性存储电路(诸如闪存)或基于磁盘的存储电路,但通常为了讨论的目的,存储电路120具有与存取由存储电路120存储的信息相关联的不可忽视的延迟和/或功率成本。
图1的电路还包括所谓的XIP预取器130,XIP预取器130用于从存储电路120预取诸如程序指令的信息,以准备好由处理电路100执行。XIP预取器130旨在预取接下来将需要用于执行的适当指令,从而避免在执行期间当系统尝试从存储电路120检索下一指令时的延迟问题。XIP预取器130包括:用于存储由处理电路执行的程序指令的预取缓冲器135;用于控制将程序指令预取到预取缓冲器并且作为其一部分而选择供预取的下一指令的预取电路140;用于控制从预取缓冲器135删除指令以为新预取的程序指令提供存储空间的替换电路145。
在操作中,预取电路(以及在图1的示例中的替换电路)被配置成从处理电路(例如,从处理器高速缓存110)接收高速缓存操作信息150,高速缓存操作信息至少指示高速缓存内存或处理器高速缓存110的操作的子集。预取电路被配置成根据高速缓存操作信息来选择性地控制从一个或多个地址的集合(在存储电路120处)中预取程序指令。
要注意的是,处理器高速缓存可以被配置成将程序指令作为程序指令组进行存储和驱逐,预取电路可以被配置成预取作为程序指令组的程序指令。这样的组可以表示所谓的高速缓存行(例如,其绝大部分地址为共同地址的地址组)。
高速缓存操作信息的示例包括指示以下至少一者的信息:
处理电路的未成功高速缓存检索操作(换言之,高速缓存失效155);
用于驱逐高速缓存内存的当前存储内容的高速缓存驱逐操作(例如,标识所谓的用于驱逐的牺牲行160的信息);
处理电路的成功高速缓存检索操作;以及
高速缓存替换控制状态。
后两种类型的高速缓存操作信息在图5中示意性地示出为信息165。
XIP预取器130可以被布置成动态引导预取电路140和/或替换电路145,以实现或至少更可能实现牺牲(victim)预取或高速缓存失效预取。这里,牺牲预取是基于信息160的预取动作,其中信息160指示关于牺牲行的信息(诸如牺牲行地址或属性)。高速缓存失效预取是基于高速缓存失效信息155(诸如失效的地址或属性)的预取动作。
换句话说,XIP预取器130可以执行如下操作中的一者或两者:(a)在预取缓冲器135中获得或保留已经由处理器内核105从处理器高速缓存110处请求、但从处理器高速缓存中失效的程序指令;以及(b)在预取缓冲器135中获得或保留已经从处理器高速缓存110中删除的程序指令。
要注意的是,提供从预取缓冲器135到处理器高速缓存110的数据路径170,使得处理器高速缓存110可以从预取缓冲器135获得(由预取缓冲器135保持的)程序指令。
以这种方式,图1的电路、特别是XIP预取器120(与下面将要描述的其他实施例相同)试图预取后续将要存取的数据并将有用数据保存尽量长的时间。
关于高速缓存失效,为了减小高速缓存失效延迟(其为就地执行技术的重要特征),图1的电路的目的在于预测潜在失效行并适时将潜在失效行预取到预取缓冲器135中。要注意的是,高速缓存失效可以分成不同的种类。所谓的冷失效涉及对于高速缓存行的第一时间基准并且可以在本装置中通过按顺序预取连续的程序指令来减少。高速缓存容量失效发生在高速缓存大小小于其需要存储以用于执行当前代码的信息量时。高速缓存冲突失效可以发生在多个高速缓存行出现在与集合关联的高速缓存结构内时。下面将要描述的实施方式可以试图识别高速缓存失效的类型及其与程序流程的关联,以引导更多的指令的预取。
图2中示意性地示出了另一示例。在这里,附加信息175被从处理器内核105提供到XIP预取器130’内的预取电路140’和替换电路145’。信息175被称为来自处理电路100的程序流程信息并且可以被体现为例如先前执行的程序指令的指示和对将要执行的后续程序指令的预测。因此,程序流程信息可以至少指示预测的下一指令地址,并且预取电路140’可以被配置成选择性地控制从一个或多个地址的集合(例如,所谓的高速缓存行)中预取程序指令,该一个或多个地址的集合开始于预测的下一指令地址的或者替选地包括预测的下一指令地址。可以和替换电路145一样,预取电路140’本身可以存储与先前执行的程序指令有关的信息,使得预取电路140’和替换电路145’中的一者或两者可以被配置成使得预取电路140’的对供预取的下一程序指令的选择操作和替换电路145’从预取缓冲器135删除指令的删除操作中的一者或两者取决于先前执行的程序指令和对将要执行的后续程序指令的预测。
通常,信息175可以包括转移(branch)预测信息和程序计数器(programcounter,PC)信息中的一者或多者,其中转移预测信息指示转移目标地址,PC信息指示接下来执行的一个或多个连续程序指令。
在关于图2的这些技术的示例中,预取电路140’可以使用来自处理器内核105的基于行的转移预测,例如包括转移发生预测器、方向预测器、目标预测器和(当该信息变为可用时的)预测结果。在没有检测到或预测到转移的情况下,默认可以是按顺序向前的程序流程的预测。
如果预测概率至少为阈值概率(例如,在转移预测器中为“坚决发生”或“坚决不会发生”)并且如果预取电路预测的预测转移目标行将在处理器高速缓存110处失效,则可以预取预测转移目标行。例如,如果前一转移目标在处理器高速缓存处失效,则可以预测按顺序的下一行也将在高速缓存处失效。在另一示例中,预测的向后转移发生行可以被预期为在处理器高速缓存110处的命中(hit)。基于寄存器的无条件转移可以被预期为高速缓存处失效。
现在参考图3,将描述关于所谓的局部分析(profiling)的技术。在这里,在XIP预取器130”具有预取电路140”、替换电路145”等的情况下,提供了也可以称为所谓的局部分析器的区域控制器300。区域控制器300生成当前地址区域(其也可以称为“局部范围”)以及指示局部趋势的各种概率值。
局部范围可以限定为程序执行空间的假想边界,某一时间段内的程序执行的一大部分落入该程序执行空间中。局部范围可以由上述各种信息150、175,可选地连同来自处理器内核105的执行追踪信息310、高速缓存替换信息和高速缓存查找信息以及XIP预取器130”内的预取缓冲器替换信息315和预取缓冲器查找信息320一起来导出。
在操作中,区域控制器根据以上提及的高速缓存操作信息和以上提及的程序流程信息中的一者或两者来生成当前地址区域(局部范围),该当前地址区域至少具有包含一个或多个下一程序指令的阈值概率。
也由区域控制器生成的局部趋势信息可以包括:第一概率值、即局部流动性,其表示局部范围随着预取请求在地址空间内移位的概率;以及第二概率值、即局部粘性,其为局部范围粘性地包含由XIP预取器供应的高速缓存行或从处理器高速缓存110驱逐的高速缓存行的概率(在一些示例中,其可以实际上由两个相应的粘性指数来表示)。
换句话说,局部流动性可以表示为第一概率值,其指示当前地址区域响应于给定预取操作而改变的概率,局部粘性可以表示为第二概率值,其指示新预取的程序指令和从高速缓存中驱逐的程序指令中的一者或两者位于当前地址区域内的概率。可以使用这些概率值的方式首先是生成加权布置。在这里,预取电路140”被配置成为至少以下程序指令中的每一者生成相应的权重:(i)用于基于程序流程信息进行预取的第一候选下一程序指令;和(ii)用于基于高速缓存操作信息进行预取的第二候选下一程序指令。预取电路140”根据相应的权重选择性地控制取决于用于预取的第一候选下一程序指令和第二候选下一程序指令中的一者的预取。
预取电路140”还可以(可选地)生成第三结果的权重,其在该预取周期根本不用于预取指令。
区域控制器300被配置成根据第一概率值和/或根据第二概率值来改变与用于预取的第一候选下一程序指令和第二候选下一程序指令相关联的相应权重(和/或实际上可选的第三结果的权重)。
图4示意性地示出了一示例技术,通过该示例技术,区域控制器300被配置成响应于程序流程信息和高速缓存操作信息的当前实例而调节适用于下一预取操作的第一概率值(“流动性”)。在这里,各个列指示作为程序流程信息的示例的转移预测信息、作为高速缓存操作信息的示例的高速缓存查找信息、预取缓冲器查找信息320、当前流动性值(其不需要在该表中指定,因为在命名为“下一流动性”的最后一列中指示了相对变化)。
参照行400,对于强转移预测和高速缓存失效以及预取缓冲器失效,下一流动性高于当前流动性。在行410中,对于弱转移预测和高速缓存失效,下一流动性相对于当前流动性不变。参照行420,对于强转移预测和高速缓存命中,下一流动性低于当前流动性。最后,针对行430,对于强转移预测和高速缓存失效以及预取缓冲器命中,下一流动性不变。
类似地,参考图5,区域控制器可以响应于程序流程信息和高速缓存操作信息的当前实例而调节适用于下一预取操作的第二概率值(粘性)。
因此,流动性和粘性中的一者或两者可以取决于高速缓存信息和程序流程信息,从而预取操作和/或用于预取缓冲器的驱逐(替换)操作可以取决于流动性和粘性。
参照行500,对于指示预测命中的执行追踪310、高速缓存失效、预取缓冲器命中和高速缓存驱逐,对于下一预取操作将粘性调节到更高。
针对行510,其中指示追踪信息310指示预测失效,高速缓存失效但预取缓冲器命中并且存在高速缓存驱逐,下一粘性不变。
在行520中,其中高速缓存失效以及预取缓冲器失效并且存在高速缓存驱逐,下一粘性更低。
最后,在行530中,其中高速缓存失效且预取缓冲器失效但不存在高速缓存驱逐,下一粘性更高。
在进一步的示例布置中,由区域控制器300导出的局部信息可以通过数据路径330被提供回到处理器高速缓存110。例如,可以将局部流动性和粘性提供给与供应高速缓存行相关联的处理器高速缓存。使用这种信息的示例可以是高速缓存内存被配置成响应于接收到的第一概率值和第二概率值中的一者或两者而改变其操作。例如,可以响应于第一概率值和第二概率值而改变处理器高速缓存110控制器的状态或算法。在另一示例中,为了减轻来自处理器高速缓存的集合的所谓的抖动,针对至少为阈值概率的第二概率值(粘性),高速缓存内存110可以被配置成不在当前地址区域中缓存程序指令。换句话说,抖动行在预取缓冲器中通常具有高的局部粘性,使得在处理器高速缓存110处的分配策略可以响应于该高的局部粘性而改变为“不分配”。
在其他示例中,高速缓存内存110可以被配置成响应于第一概率值(流动性)而改变用于控制存储在高速缓存内存中的程序指令的替换的替换算法。在这里,高速缓存替换还可以被视为对从处理器高速缓存本身移位的局部范围的预测,使得可以利用流动性值来加权替换控制状态,以得到潜在更好的准确度。
图6为示出了一种方法的示意性流程图,该方法包括:
处理(在步骤600)程序指令,其中程序指令由存储电路存储并且该处理步骤包括就地执行存储电路中的程序指令;
在预取缓冲器中存储(在步骤610)由处理步骤执行的程序指令;
将程序指令预取(在步骤620)到预取缓冲器,该预取步骤包括选择(在步骤630)预取的下一指令;以及
从预取缓冲器中删除(在步骤640)指令以为新预取的程序指令提供存储空间;
其中,选择步骤和删除步骤中的一者或两者取决于先前执行的程序指令和对将要执行的后续程序指令的预测。
图7是示出了一种方法的示意性流程图,该方法包括:
处理(在步骤700)程序指令,其中程序指令由存储电路存储,并且该处理步骤包括从存储电路就地执行程序指令以及将用于执行的程序指令存储在高速缓存内存中;
在预取缓冲器中存储(在步骤710)由处理步骤执行的程序指令;
将程序指令预取(在步骤720)到预取缓冲器,该预取步骤包括选择性地控制从一个或多个地址的集合中预取程序指令;以及
从预取缓冲器中删除(在步骤730)指令以为新预取的程序指令提供存储空间;
其中:
预取步骤包括接收至少指示高速缓存内存的操作的子集的高速缓存操作信息;以及
预取步骤和删除步骤中的一者或两者取决于高速缓存操作信息。
通过示例的方式,预取电路和替换电路中的一者或两者可以被配置成使得预取电路的对预取的下一程序指令的选择操作和替换电路从预取缓冲器删除指令的删除操作中的一者或两者取决于高速缓存操作信息。
在本申请中,表述“被配置成……”用于表示装置的元件具有能够执行所限定的操作的配置。在这种情况下,“配置”意味着硬件或软件的互连的布置或方式。例如,装置可以具有提供所限定的操作的专用硬件,或者处理器或其他处理设备可以被编程为执行该功能。“被配置成”不意味着需要以任一方式改变装置元件以提供所限定的操作。
尽管本文已经参考附图详细描述了本发明的说明性实施方式,但应理解,本发明不限于这些精确实施方式,并且在不脱离本发明的如所附权利要求所限定的范围和精神的情况下,本领域技术人员能够在这些实施方式中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,可以将从属权利要求的特征与独立权利要求的特征进行各种组合。

Claims (19)

1.一种电路,包括:
处理电路,所述处理电路用于处理程序指令,其中所述程序指令由存储电路存储并且所述处理电路包括被配置成执行所述存储电路中的所述程序指令的就地执行处理电路;
预取缓冲器,所述预取缓冲器用于存储由所述处理电路执行的程序指令;
预取电路,所述预取电路用于控制将程序指令预取到所述预取缓冲器以及选择供预取的下一指令;以及
替换电路,所述替换电路用于控制从所述预取缓冲器删除指令以为新预取的程序指令提供存储空间;
其中,所述预取电路和所述替换电路中的一者或两者被配置成使得所述预取电路的对供预取的下一程序指令的选择操作和所述替换电路从所述预取缓冲器删除指令的删除操作中的一者或两者取决于先前执行的程序指令和对将要执行的后续程序指令的预测。
2.根据权利要求1所述的电路,其中:
所述预取电路被配置成从所述处理电路接收程序流程预测信息,所述程序流程预测信息至少指示预测的下一指令地址;以及
所述预取电路被配置成选择性地控制从开始于所述预测的下一指令地址的一个或多个地址的集合中预取程序指令。
3.根据权利要求2所述的电路,其中,所述程序流程预测信息包括以下信息中的一者或多者:
指示转移目标地址的转移预测信息;以及
指示一个或多个接下来的连续程序指令的程序计数器信息。
4.根据权利要求2所述的电路,其中:
所述处理电路包括高速缓存内存;
所述预取电路被配置成从所述处理电路接收高速缓存操作信息,所述高速缓存操作信息至少指示所述高速缓存内存的操作的子集;以及
所述预取电路被配置成根据所述高速缓存操作信息选择性地控制从一个或多个地址的集合中预取程序指令。
5.根据权利要求4所述的电路,其中,所述高速缓存操作信息指示以下项中的至少一者:
所述处理电路的未成功高速缓存检索操作;
用于驱逐所述高速缓存内存的当前存储内容的高速缓存驱逐操作;
所述处理电路的成功高速缓存检索操作;以及
高速缓存替换控制状态。
6.根据权利要求5所述的电路,其中,所述预取电路被配置成为至少以下程序指令中的每一者生成相应的权重:(i)用于基于所述程序流程预测信息进行预取的第一候选下一程序指令;和(ii)用于基于所述高速缓存操作信息进行预取的第二候选下一程序指令,以及根据所述相应的权重选择性地控制取决于供预取的所述第一候选下一程序指令和所述第二候选下一程序指令中的一者的预取。
7.根据权利要求6所述的电路,包括:
区域控制器,所述区域控制器用于根据以下信息中的一者或两者来生成当前地址区域,所述当前地址区域至少具有包含一个或多个下一程序指令的阈值概率:
所述高速缓存操作信息;以及
所述程序流程信息。
8.根据权利要求7所述的电路,其中:
所述区域控制器被配置成生成第一概率值,所述第一概率值指示所述当前地址区域响应于给定预取操作而改变的概率;以及
所述区域控制器被配置成根据所述第一概率值来改变与供预取的所述第一候选下一程序指令和所述第二候选下一程序指令相关联的相应权重。
9.根据权利要求8所述的电路,其中,所述区域控制器被配置成响应于所述程序流程预测信息和所述高速缓存操作信息的当前实例而调节适用于下一预取操作的所述第一概率值。
10.根据权利要求7所述的电路,其中:
所述区域控制器被配置成生成第二概率值,所述第二概率值指示新预取的程序指令和从高速缓存中驱逐的程序指令中的一者或两者位于所述当前地址区域内的概率;以及
所述区域控制器被配置成根据所述第二概率值来改变与供预取的所述第一候选下一程序指令和所述第二候选下一程序指令相关联的相应权重。
11.根据权利要求10所述的电路,其中,所述区域控制器被配置成响应于所述程序流程预测信息和所述高速缓存操作信息的当前实例而调节适用于下一预取操作的所述第二概率值。
12.根据权利要求4所述的电路,其中:
所述高速缓存内存被配置成将程序指令作为程序指令组进行存储和驱逐;以及
所述预取电路被配置成预取作为程序指令组的程序指令。
13.根据权利要求7所述的电路,其中,所述区域控制器被配置成将所述第一概率值和所述第二概率值中的一者或两者提供给所述高速缓存内存;以及
所述高速缓存内存被配置成响应于接收到的所述第一概率值和所述第二概率值中的一者或两者而改变其操作。
14.根据权利要求13所述的电路,其中,对于至少为阈值概率的第二概率值,所述高速缓存内存被配置成不在所述当前地址区域中缓存程序指令。
15.根据权利要求13所述的电路,其中,所述高速缓存内存被配置成响应于所述第一概率值而改变用于控制存储在所述高速缓存内存中的程序指令的替换的替换算法。
16.根据权利要求1所述的电路,其中,所述存储电路是非易失性存储电路。
17.一种电路,包括:
处理电路,所述处理电路用于处理程序指令,其中所述程序指令由存储电路存储并且所述处理电路包括被配置成执行所述存储电路中的所述程序指令的就地执行处理电路;
预取缓冲器,所述预取缓冲器用于存储由所述处理电路执行的程序指令;
预取电路,所述预取电路用于控制将程序指令预取到所述预取缓冲器;以及
替换电路,所述替换电路用于控制从所述预取缓冲器删除指令以为新预取的程序指令提供存储空间;
其中:
所述处理电路包括高速缓存内存;
所述预取电路被配置成从所述处理电路接收高速缓存操作信息,所述高速缓存操作信息至少指示所述高速缓存内存的操作的子集;以及
所述预取电路和所述替换电路中的一者或两者被配置成使得所述预取电路的对供预取的下一程序指令的选择操作和所述替换电路从所述预取缓冲器删除指令的删除操作中的一者或两者取决于所述高速缓存操作信息。
18.一种方法,包括:
处理程序指令,其中所述程序指令由存储电路存储并且该处理步骤包括就地执行所述存储电路中的所述程序指令;
在预取缓冲器中存储由所述处理步骤执行的程序指令;
将程序指令预取到所述预取缓冲器,该预取步骤包括选择供预取的下一指令;以及
从所述预取缓冲器中删除指令以为新预取的程序指令提供存储空间;
其中,选择步骤和删除步骤中的一者或两者取决于先前执行的程序指令和对将要执行的后续程序指令的预测。
19.一种方法,包括:
处理程序指令,其中所述程序指令由存储电路存储,并且该处理步骤包括就地执行所述存储电路中的所述程序指令以及将用于执行的程序指令存储在高速缓存内存中;
在预取缓冲器中存储由所述处理步骤执行的程序指令;
将程序指令预取到所述预取缓冲器,该预取步骤包括选择性地控制从一个或多个地址的集合中预取程序指令;以及
从所述预取缓冲器中删除指令以为新预取的程序指令提供存储空间;
其中:
预取步骤包括接收至少指示所述高速缓存内存的操作的子集的高速缓存操作信息;以及
所述预取步骤和删除步骤中的一者或两者取决于所述高速缓存操作信息。
CN202080067494.9A 2019-09-27 2020-09-24 电路和方法 Active CN114450668B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/585,387 2019-09-27
US16/585,387 US11461101B2 (en) 2019-09-27 2019-09-27 Circuitry and method for selectively controlling prefetching of program instructions
PCT/IB2020/058954 WO2021059198A1 (en) 2019-09-27 2020-09-24 Circuitry and method

Publications (2)

Publication Number Publication Date
CN114450668A true CN114450668A (zh) 2022-05-06
CN114450668B CN114450668B (zh) 2023-10-31

Family

ID=75161997

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080067494.9A Active CN114450668B (zh) 2019-09-27 2020-09-24 电路和方法

Country Status (4)

Country Link
US (1) US11461101B2 (zh)
EP (1) EP4034995A4 (zh)
CN (1) CN114450668B (zh)
WO (1) WO2021059198A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667558A (zh) * 2019-10-15 2021-04-16 瑞昱半导体股份有限公司 处理系统与芯片内执行控制方法

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1306246A (zh) * 1999-12-10 2001-08-01 国际商业机器公司 预取由转移历史引导的指令/数据
CN1484157A (zh) * 2002-09-20 2004-03-24 联发科技股份有限公司 嵌入式系统及其指令预取装置和方法
CN1556950A (zh) * 2000-01-14 2004-12-22 �Ƚ�΢װ�ù�˾ 通过储存在序列存取内存中的激活码的计算机系统起始
CN101147127A (zh) * 2005-02-03 2008-03-19 高通股份有限公司 指令预取机构
US20080229070A1 (en) * 2007-03-12 2008-09-18 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data
CN101630291A (zh) * 2009-08-03 2010-01-20 中国科学院计算技术研究所 虚拟存储系统和方法
US20100262750A1 (en) * 2009-04-13 2010-10-14 Advanced Micro Devices, Inc. Region prefetcher and methods thereof
US20120131311A1 (en) * 2010-11-23 2012-05-24 Oracle International Corporation Correlation-based instruction prefetching
US20150089149A1 (en) * 2013-09-20 2015-03-26 Fujitsu Limited Arithmetic processing device and control method for arithmetic processing device
CN104572479A (zh) * 2013-10-24 2015-04-29 Arm有限公司 预取策略控制
CN104932876A (zh) * 2014-03-20 2015-09-23 株式会社巨晶片 半导体装置及读取指令的控制方法
GB2548871A (en) * 2016-03-31 2017-10-04 Advanced Risc Mach Ltd Instruction prefetching
CN109313555A (zh) * 2016-06-24 2019-02-05 高通股份有限公司 使用初始高预提取预测置信度状态以节制基于处理器的系统中的下一行预提取的下一行预提取器
US20190065377A1 (en) * 2017-08-30 2019-02-28 Oracle International Corporation Multi-line data prefetching using dynamic prefetch depth

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100493884B1 (ko) 2003-01-09 2005-06-10 삼성전자주식회사 시리얼 플래시 메모리에서의 현지 실행을 위한 제어 장치및 그 방법, 이를 이용한 플래시 메모리 칩
US20060294356A1 (en) 2005-06-27 2006-12-28 Xipkey, Inc. Apparatus and method of an executable-in-place flash device
US8214599B2 (en) * 2008-11-04 2012-07-03 Gridiron Systems, Inc. Storage device prefetch system using directed graph clusters
US8583894B2 (en) * 2010-09-09 2013-11-12 Advanced Micro Devices Hybrid prefetch method and apparatus
US9058278B2 (en) * 2012-12-19 2015-06-16 Advanced Micro Devices, Inc. Tracking prefetcher accuracy and coverage
US9122613B2 (en) 2013-03-07 2015-09-01 Arm Limited Prefetching of data and instructions in a data processing apparatus
US10719321B2 (en) * 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10866896B2 (en) * 2015-09-30 2020-12-15 Arm Limited Apparatus and method for prefetching access request addresses in an adjacent region of memory
US10296463B2 (en) * 2016-01-07 2019-05-21 Samsung Electronics Co., Ltd. Instruction prefetcher dynamically controlled by readily available prefetcher accuracy
US10540287B2 (en) * 2017-05-12 2020-01-21 Samsung Electronics Co., Ltd Spatial memory streaming confidence mechanism

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1306246A (zh) * 1999-12-10 2001-08-01 国际商业机器公司 预取由转移历史引导的指令/数据
CN1556950A (zh) * 2000-01-14 2004-12-22 �Ƚ�΢װ�ù�˾ 通过储存在序列存取内存中的激活码的计算机系统起始
CN1484157A (zh) * 2002-09-20 2004-03-24 联发科技股份有限公司 嵌入式系统及其指令预取装置和方法
CN101147127A (zh) * 2005-02-03 2008-03-19 高通股份有限公司 指令预取机构
US20080229070A1 (en) * 2007-03-12 2008-09-18 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data
US20100262750A1 (en) * 2009-04-13 2010-10-14 Advanced Micro Devices, Inc. Region prefetcher and methods thereof
CN101630291A (zh) * 2009-08-03 2010-01-20 中国科学院计算技术研究所 虚拟存储系统和方法
US20120131311A1 (en) * 2010-11-23 2012-05-24 Oracle International Corporation Correlation-based instruction prefetching
US20150089149A1 (en) * 2013-09-20 2015-03-26 Fujitsu Limited Arithmetic processing device and control method for arithmetic processing device
CN104572479A (zh) * 2013-10-24 2015-04-29 Arm有限公司 预取策略控制
CN104932876A (zh) * 2014-03-20 2015-09-23 株式会社巨晶片 半导体装置及读取指令的控制方法
GB2548871A (en) * 2016-03-31 2017-10-04 Advanced Risc Mach Ltd Instruction prefetching
CN109313555A (zh) * 2016-06-24 2019-02-05 高通股份有限公司 使用初始高预提取预测置信度状态以节制基于处理器的系统中的下一行预提取的下一行预提取器
US20190065377A1 (en) * 2017-08-30 2019-02-28 Oracle International Corporation Multi-line data prefetching using dynamic prefetch depth

Also Published As

Publication number Publication date
CN114450668B (zh) 2023-10-31
EP4034995A1 (en) 2022-08-03
EP4034995A4 (en) 2023-10-25
US11461101B2 (en) 2022-10-04
WO2021059198A1 (en) 2021-04-01
US20210096868A1 (en) 2021-04-01

Similar Documents

Publication Publication Date Title
KR102369500B1 (ko) 데이터 처리장치에서의 적응형 예비 인출
US8041897B2 (en) Cache management within a data processing apparatus
US8140759B2 (en) Specifying an access hint for prefetching partial cache block data in a cache hierarchy
CN109478165B (zh) 一种基于缓存测试区针对预取数据选择缓存转移策略的方法和一种处理器
US20180300258A1 (en) Access rank aware cache replacement policy
US9582282B2 (en) Prefetching using a prefetch lookup table identifying previously accessed cache lines
US10725923B1 (en) Cache access detection and prediction
US20100217937A1 (en) Data processing apparatus and method
US20220075736A1 (en) Dynamic application of software data caching hints based on cache test regions
KR20060130120A (ko) 캐시 메모리 및 그 제어 방법
US11163691B2 (en) Apparatus and method for performing address translation using buffered address translation data
US6668307B1 (en) System and method for a software controlled cache
US20210182214A1 (en) Prefetch level demotion
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
US11010306B2 (en) Apparatus and method for managing a cache hierarchy
CN114450668B (zh) 电路和方法
CN117609110A (zh) 一种缓存方法、高速缓存、电子设备及可读存储介质
US11853220B2 (en) Prefetcher training
US20230315627A1 (en) Cache line compression prediction and adaptive compression
US11663132B2 (en) Prefetching
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy
US20120215983A1 (en) Data caching method
US11675702B1 (en) Replacement policy information for training table used by prefetch circuitry
JPH0477344B2 (zh)
Ryu et al. FlashPage: A read cache for low-latency SSDs in web proxy servers

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