CN108463808B - 事件触发的可编程预取器 - Google Patents

事件触发的可编程预取器 Download PDF

Info

Publication number
CN108463808B
CN108463808B CN201680066818.0A CN201680066818A CN108463808B CN 108463808 B CN108463808 B CN 108463808B CN 201680066818 A CN201680066818 A CN 201680066818A CN 108463808 B CN108463808 B CN 108463808B
Authority
CN
China
Prior art keywords
cache
data
memory
event
main processor
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
CN201680066818.0A
Other languages
English (en)
Other versions
CN108463808A (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
University of Cambridge
Original Assignee
ARM Ltd
University of Cambridge
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, University of Cambridge filed Critical ARM Ltd
Publication of CN108463808A publication Critical patent/CN108463808A/zh
Application granted granted Critical
Publication of CN108463808B publication Critical patent/CN108463808B/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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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, 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • 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/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/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Abstract

主处理器4执行主程序并且具有相关联的高速缓存6。事件检测电路12检测由主程序的执行导致、并指示将由主处理器处理的数据的事件。一个或多个可编程的其他处理器16、18由事件检测电路12检测到的事件触发执行其他程序。预取电路28响应于由一个或多个可编程的其他处理器执行其他程序,而触发把将由主处理器使用的数据预取到高速缓存。

Description

事件触发的可编程预取器
技术领域
本公开涉及数据处理系统领域。更具体地,本公开涉及向高速缓存预取数据(将被操控的值和/或程序指令)。
背景技术
提供预取电路来基于识别存储器中的常规存取方式(例如,跨步存取)而预取数据是已知的。但是,这种预取电路对于在很多工作负荷(例如,指针跟踪、压缩稀疏度量)中发现的非常规存取方式不好用。为了实现对于这些工作负荷的更好的预取性能,一种方法是在正被执行的程序中嵌入预加载指令。但是,在实际中,这些预加载指令可能会由于程序的执行环境的巨大差异而无效,这些差异可以由例如,程序在不同的硬件平台上被执行、硬件平台改变状态(例如,在不同的DVFS操作点操作)、硬件平台在不同模式下操作(例如,当前在英国剑桥的ARM有限公司设计的big.LITTLE系统中使用的大核还是小核)、缓存架构中的各种元件的延迟、数据是否已经存在于缓存架构中的其他缓存中、以及可以根据后面的特定执行路径执行的指令的数目不同导致。由于这些因素在不同系统之间不同,甚至在运行时由于系统在给定时刻的特定状态而不同,所以编码到将被执行的程序中的预加载指令具有非常有限的可用性。预加载指令可以在给定环境下很快地预取数据而不需要占用缓存容量,或者可以很慢地预取数据而导致延迟执行。另外,这些预加载指令在被执行之前需要完全计算出目标负载的地址,这使得对于包括多个查找表的数据的存取通常会导致管道停滞从而限制这些机制的功效。
发明内容
本公开的至少一些实施例提供了一种用于处理数据的装置,包括:
主处理器,该主处理器执行主程序;
高速缓存,该高速缓存耦合到所述主处理器;
事件检测电路,该事件检测电路检测由所述主处理器执行所述主程序导致、指示将由所述主处理器使用的数据的事件;
其他处理器,该其他处理器响应于所述事件检测电路检测到所述事件中的一个或多个事件而触发其他程序由所述其他处理器执行;以及
预取电路,该预取电路响应于所述其他程序而触发把将由所述主处理器使用的所述数据预取到所述高速缓存;
其中,所述事件检测电路包括可编程过滤电路,该可编程过滤电路检测匹配可编程过滤特性的存储器操作;并且
所述可编程过滤特性包括针对一个或多个可编程存储器地址范围中的存储器地址的存储器操作。
本公开的至少一些实施例提供了一种装置,包括:
主处理器装置,用于执行主程序;
高速缓存装置,用于存储数据并耦合到所述主处理器装置;
事件检测装置,用于检测由所述主处理器装置执行所述主程序导致、指示将由所述主处理器装置使用的数据的事件;
其他处理器装置,响应于所述事件检测装置检测到所述事件中的一个或多个事件而用于触发其他程序由所述其他处理器装置执行;以及
预取电路装置,响应于所述其他程序而用于触发把将由所述主处理器装置使用的所述数据预取到所述高速缓存装置;
其中,所述事件检测电路包括可编程过滤电路,该可编程过滤电路检测匹配可编程过滤特性的存储器操作;并且
所述可编程过滤特性包括针对一个或多个可编程存储器地址范围中的存储器地址的存储器操作。
本公开的至少要一些实施例提供了一种控制数据预取的方法,包括:
利用主处理器执行主程序;
将数据存储在耦合到所述主处理器的高速缓存中;
检测由所述主处理器执行所述主程序导致、指示将由所述主处理器使用的数据的事件,所述事件包括针对一个或多个可编程存储器地址范围中的存储器地址的存储器操作;
响应于检测到所述事件中的一个或多个事件,触发其他程序由其他处理器执行;以及
响应于所述其他程序,触发把将由所述主处理器装置使用的所述数据预取到所述高速缓存。
附图说明
现在将参考附图,仅通过示例描述示例实施例,其中:
图1示意性地示出了包括主处理器和由多个事件驱动的其他处理器控制的预取电路的集成电路;
图2示意性地示出了相干共享存储器系统;
图3是示意性地示出事件检测的流程图;
图4是示意性地示出其他程序调度的流程图;
图5是示意性地示出预取触发的流程图;以及
图6A和6B示意性地示出了在主处理器执行指针跟踪主程序期间的预取。
具体实施方式
图1示意性地示出了包括用于执行主程序的主处理器4的集成电路2的一部分。主处理器4耦合到等级1数据缓存6和等级1指令缓存8(它们可以被提供以转换查找缓冲器(未示出)),该等级1数据缓存和该等级1指令缓存提供对于将被操控的值以及将被执行的程序指令的低延迟存取。等级1数据缓存6和等级1指令缓存8是(统一地)耦合到等级2高速缓存并进一步耦合到主存储器的存储器架构的一部分,它们可以形成在同一个集成电路2上也可以不形成在同一个集成电路2上。
分支预测电路10生成用于控制主处理器4对程序指令的推测性的无序执行的预测分支行为信号。主处理器4是相对高性能且高功耗的处理器。事件检测电路12用于检测由主处理器4执行主程序导致的事件。事件检测电路12可经由配置寄存器14编程,以用作检测例如,匹配预定过滤特性的存储器操作的可编程过滤电路,该存储器操作至少包括针对一个或多个可编程存储器地址范围中的存储器地址的存储器操作。事件检测电路12还可以用来检测附加类型的事件。在所示出的示例中,事件检测电路12连接到等级1数据缓存6并且检测可以包括以下一个或多个事件的缓存事件:发起将数据获取到等级1数据缓存6的缓存获取事件、将所获取的数据加载到等级1数据缓存6中的缓存填充事件、缓存逐出事件、缓存命中事件、以及缓存未命中事件。事件检测电路所使用的可编程过滤特性还可以采取在特定情况中有用的其他形式,例如,检测以下各项中的一项或多项:存储器操作是否与从存储器(主存储器)读取数据有关、存储器操作是否与向存储器存储数据有关、存储器操作的数据大小、与存储器操作相关联的安全许可、和/或存储器操作是否是缓存提示操作。在一些实施例中,发送到存储器以获取数据的存储器事务可以被标记(可以重复使用已经提供用于互连的事务标记),然后在使用匹配(在发起事务时存储的)预定标记值的标记识别返回数据时生成事件。与事件检测电路12可以响应的等级1数据缓存6相关联的其他类型的事件包括对等级1数据缓存6的相干窥探,该相干窥探在等级1数据缓存6为共享相干存储器系统的一部分时和/或预取数据本身可以与使用配置寄存器14配置的可编程过滤器匹配时进行。以上仅代表可以被事件检测电路12检测到的事件的一些示例。例如,可以被检测到的其他示例包括来自分支预测电路10的预测分支行为信号、中断信号、来自整个系统中的其他位置的系统事件(例如,指示对于相关联的图形处理单元的动作的系统事件)、以及系统作为整体的其他状态。
可以选择由事件检测电路检测到的事件来指示主处理器4在执行主程序时将使用的数据。检测出的事件与将使用的数据之间的关联可以是间接的并且可以不是完全准确的,例如,由于主处理器4的行为/工作负荷的需要有限时间量的改变,以使预取机制可以适应这些改变。检测出的事件和主处理器将使用的数据之间的间接关联是为什么难以使用静态的硬件预取机制(例如,步幅预测)来提供能够适应执行环境和运行时间改变的灵活标量方式的有效预取。
在图1所示的示例中,事件检测和预取与等级1数据缓存6相关联,其中,将由主处理器4执行的程序指令操控的值被预取到等级1数据缓存6。但是,本公开的技术可以替代地、另外地、或者等同地用于缓存在等级1指令缓存8中的程序指令的预取。本技术覆盖这些可能。
由事件检测电路12检测出的事件可以被用来触发由多个可编程的其他处理器16、18之一执行其他程序,其中,这些可编程的其他处理器可以在多个特权等级中的例如,与主处理器4相同的特权等级进行操作,即,它们同时并以相同方式在特权等级之间移动。但是,并不是检测到的所有事件都可以被用来触发这样的其他程序的执行。检测到的一些事件可以被用于使用统计分析电路20来确定一个或多个统计值的目的。统计分析电路20还可以响应于来自由可编程的其他处理器16、18执行的一个或多个其他程序的一个或多个输入。计算出的统计值可以采用各种不同的形式,这些形式包括指数加权的移动平均值、最小值、和/或最大值。也可以计算其他统计值。可以利用可编程的配置寄存器(未示出)以类似于事件检测电路12的方式来配置统计分析电路20。取决于所应用的配置,统计分析电路20可以计算期望的统计值。例如,统计分析电路20可以用于确定指示从主存储器向等级1数据缓存6获取数据所花费的时间的存储器延迟值。该存储器延迟值根据其他程序所使用的特定预取控制技术,可以具有指数加权的移动平均值、最小值、或者最大值的形式。由其他处理器16、18执行的一个或多个其他程序能够在执行其他程序时读取和/或写入由统计分析电路20确定的统计值,从而根据这些读取值来控制所触发的预取。
由事件检测电路12检测出的一些事件可以单独或者组合用于触发可编程的其他处理器16/18执行一个或多个其他程序。当检测到这样的触发事件时,进入队列电路22以识别这些事件(可选的,可以利用由随后触发的一个或多个其他程序读取并使用的元数据)。调度电路24从队列电路22读取排队的事件,并且发起由可用的可编程的其他处理器16、18执行适当的其他程序。如果所有可编程的其他处理器16、18都处于活跃状态(非空闲),则调度电路24在使用队列电路22中的下一记录触发其他程序的执行的其他实例之前等待可编程的其他处理器16、18之一变为不活跃状态。在队列电路22中排队的事件可以被发送给可编程的其他处理器16、18中的任意一个,因此可编程的其他处理器16、18都应该能执行相同的一个或多个其他程序。在一些实施例中,单个其他程序可以被提供,并用于分析其所响应的事件的性质并相应地改变其处理。在其他实施例中,可以根据与队列电路22中排队的事件相关联的参数来触发由调度电路24调度供执行的不同的其他程序(与使用中断向量触发一个或多个中断处理例程类似)。
其他高速缓存26经由转换查找缓冲器耦合到可编程的其他处理器16、18,并且用于存储将由可编程的其他处理器16、18执行的一个或多个其他程序和/或将由可编程的其他处理器16、18操控的数据值中的一者的至少一部分。当可编程的其他处理器16、18响应于检测到的一个或多个事件完成其他程序的执行时,它们返回到空闲状态直到它们下一次被调度电路24调度执行其他程序。系统中存在的可编程的其他处理器16、18的数目可以根据处理预取控制所需要的容量而缩放,这又取决于预计的控制预取的困难和/或强度等级。
由可编程的其他处理器16、18执行的其他程序对检测到的事件进行分析,并触发预取电路28将预计将被主处理器4使用的数据预取到等级1数据缓存6中。所需要的从虚拟地址到物理地址的任意数据转换由预取电路28和等级1数据缓存6之间的路径中的数据转换查找缓冲器30执行。由可编程的其他处理器16、18执行的其他程序可以相对较短,但是仍然能够提供难以利用纯粹基于硬件的预取机制实现的灵活且精细的控制预取的方式。
其他程序可以与主处理器4执行的程序完全分开,这使得它们操作的方式有更大的可缩放性和灵活性。当其他程序完成触发预取或其他操作时,其返回到其可用于进行其他工作的空闲状态。相反,对主程序的动作进行镜像的辅助程序将暂停并等待其下一个数据项,而不可用于其他用途。这种事件驱动的架构还使得其他程序的性能能够随着可编程的其他处理器16和18的数目而基本线性地缩放。这是因为,触发其他程序的事件相互独立,因此其他程序的执行可以由多个其他处理器并行进行。通过这种事件驱动的方法使能的多个其他程序(或者程序的部分)还允许更稳健地以不同特性(例如,延迟)对多个同时的数据流的预取进行控制。
其他程序能够检测并响应于系统的当前状态,以改变它们控制预取行为的方式,例如,可以使用由统计分析电路20确定的当前估计的存储器延迟,以经由预取电路28触发“刚刚准时”到达等级1数据缓存6的数据的预取,供主处理器4使用(这有助于避免由于数据缺失导致的主处理器4的暂停,并且过快地获取预取数据不一定消耗等级1数据缓存6的容量)。其他程序可以控制预取方式的其他示例包括指针跟踪从而使得一旦数据被返回到等级1数据缓存6就可以被事件检测电路12检测到,然后可以在无需主处理器4或主程序达到任意特定状态的情况下发起与下一指针相关联的下一数据的预取。
如前所述,主处理器4可以是高性能且高功耗的处理器,例如,超标量无序处理器。相反,可编程的其他处理器16和18可以是相对低性能且低功耗的处理器,因为它们需要执行专门用于发起预取电路28进行适当的预取操作的任务的相对简单的其他程序。在与提供主处理器4相关联的开销的背景下,与提供其他处理器16和18相关联的开销较小。
如前所述,可以被事件检测电路12检测出的事件类型之一是相干窥探。相干窥探出现在共享相干存储器(例如,图2示意性地示出的系统的共享相干存储器)的操作背景中。图2示出了分别具有相关联的等级1高速缓存40、42、44、46的多个处理器32、34、36、38,其中,这些等级1高速缓存能够在本地存储数据或程序指令。处理器32、34、36、38连接到共享等级2高速缓存48和共享主存储器系统。相应的等级1高速缓存40、42、44、46可以保存来自存储器系统中的给定存储器地址的数据的副本。如果另一处理器随后希望例如,修改数据值,则必须使保存该数据值的原始高速缓存中保存的该数据值的副本无效,然后将该数据值的副本获取到希望修改该数据值的处理器的等级1高速缓存。该行为是使用相干控制电路50来控制的,该相干控制电路经由窥探总线52来交换窥探消息。事件检测电路12可以观察这些窥探消息,以便给出可以与事件检测电路12相关联的系统部分中需要的预取行为有关的行为的指示。
图3是示意性地示出事件检测电路12执行事件检测的流程图。在步骤54,处理等到匹配配置寄存器14配置的过滤条件为止。当匹配这样的过滤条件时,处理进行到步骤56。在步骤56,将事件(以及可选的表征该事件的相关元数据)写入队列电路22,以使得其可以后续触发可编程的其他处理器16和18之一执行其他程序。处理随后返回到步骤54。队列电路22具有有限的容量,并且在其有限的容量已满时,可以通过删除老事件释放空间来存储新事件。预取不影响执行的正确性,仅影响性能。
图4是示意性地示出调度电路24在触发可编程的其他处理器16和18执行一个或多个其他程序时的操作的流程图。在步骤58,在队列电路22保持为空的同时处理等待。当队列电路22不为空(至少有一个事件排队)时,处理进行到步骤60。在步骤60,处理等到可编程的其他处理器16和18之一可用于响应于事件被调度而执行一个或多个其他程序(即,可编程的其他处理器16和18之一变为空闲或者已经空闲)为止。当在步骤60检测出可编程的其他处理器16和18之一可用时,步骤62用于选择队列电路22中排队的最老的事件并且将其发送给下一个可用的可编程的其他处理器16和18,其触发相关联的其他程序的执行。
图5示意性地示出了由可编程的其他处理器16和18执行的其他程序进行预取触发。在步骤64,可编程的其他处理器16和18被初始化到空闲状态。然后,在步骤66,在从调度电路24接收到事件之前,处理一直等待。这样的事件可以通过可编程的其他处理器16和18的“唤醒”信号的断言或适当的中断信号的断言接收到。当接收到事件时,步骤68唤醒可编程的其他处理器16和18,以使得其退出空闲状态并开始执行其他程序。该其他程序可以对通知给其的事件进行分析(可选地,对相关元数据进行分析),以便确定将触发的适当预取动作。将触发的预取动作可以通过各种不同方式改变,例如,将进行预取的存储器地址,将进行预取的时间,预取的块大小等。该其他程序还将数据写入统计分析电路20,以记录随后在其他预取控制中将使用的状态数据。当步骤68的处理确定了将被触发的任意预取操作(或预取事件可以触发一个、很多个预取操作或者不触发任何预取操作)的性质时,步骤70通过预取电路28触发该预取操作,以使得相关数据被从等级1高速缓存(或主存储器)预取回等级1数据缓存6。
图6A示意性地示出了指针跟踪数据结构,其中的数据块在每个节点处被处理直到到达块的结尾并且针对下一数据块的指针被读取或计算出来为止。主处理器4处理块所花费的时间可以改变(所以主处理器4处理负荷之间的时间可以改变),并且主处理器4本身在至少接收到当前块之前不能确定到下一块的指针。
图6B示意性地示出了主处理器4执行指针跟踪数据处理和可编程的其他处理器16和18执行预取的动作。在预取后从主存储器返回数据所花费的时间可以改变,但是该数据在相应的没有暂停的主处理器4需要其时将仍然可用。数据的预取块由通知给可编程的其他处理器16和18之一并且对应于在先块的数据到达的数据到达事件触发。块的预取在主处理器4仍然在处理指针跟踪序列中的更早的块的同时发生。不存在确定可编程的其他处理器16和18执行它们的预取之前的时间长度的直接耦合,因为这是由运行时行为和统计值确定的。
尽管这里已经参考附图描述了说明性实施例,但是将理解的是,权利要求不限于这些精确的实施例,并且本领域技术人员可以在不偏离所附权利要求的范围和精神的条件下想出各种修改、添加、以及变形。例如,从属权利要求的特征可以与独立权利要求的特征进行各种组合。

Claims (20)

1.一种用于处理数据的装置,包括:
主处理器,该主处理器执行主程序;
高速缓存,该高速缓存耦合到所述主处理器;
事件检测电路,该事件检测电路检测由所述主处理器执行所述主程序导致、并指示将由所述主处理器使用的数据的事件,所述事件包括针对一个或多个可编程地址范围中的存储器地址的存储器操作,所述事件检测电路包括可编程过滤电路,该可编程过滤电路检测匹配可编程过滤特性的所述存储器操作,所述可编程过滤特性包括所述存储器操作;
其他处理器,该其他处理器响应于所述事件检测电路检测到所述存储器操作而触发其他程序由所述其他处理器执行;以及
预取电路,该预取电路响应于所述其他程序而触发把将由所述主处理器使用的所述数据预取到所述高速缓存。
2.如权利要求1所述的装置,其中,所述事件检测电路进一步包括缓存事件检测电路,该缓存事件检测电路检测与所述高速缓存的操作相关联的缓存事件,其中,所述缓存事件包括以下事件中的一个或多个事件:
发起将数据获取到所述高速缓存的缓存获取事件;
将所获取的数据加载到所述高速缓存的缓存填充事件;
缓存逐出事件;
缓存命中事件;以及
缓存未命中事件。
3.如权利要求1和2中任一项所述的装置,其中,所述可编程过滤特性进一步包括以下特性中的一项或多项:
所述存储器操作是将数据返回到所述高速缓存,作为包括匹配预定标记值的标记值的存储器事务的部分;
所述存储器操作是否与从存储器读取数据有关;
所述存储器操作是否与向存储器存储数据有关;
所述存储器操作的大小;
与所述存储器操作相关联的安全许可;以及
所述存储器操作是否是缓存提示操作。
4.如权利要求1所述的装置,其中,所述事件检测电路进一步包括统计分析电路,该统计分析电路根据以下各项中的至少一项生成一个或多个统计值:
所述事件;以及
来自所述其他程序的一个或多个输入。
5.如权利要求4所述的装置,其中,所述其他处理器读取所述一个或多个统计值,作为对于所述其他程序的输入。
6.如权利要求4和5中任一项所述的装置,其中,所述一个或多个统计值包括指示从主存储器向所述高速缓存获取数据所花费的时间的存储器延迟值。
7.如权利要求4和5中任一项所述的装置,其中,所述一个或多个统计值包括以下各项中的一项或多项:
移动平均值;
指数加权的移动平均值;
最小值;以及
最大值。
8.如权利要求1所述的装置,其中,所述事件检测电路进一步包括检测以下各项中的一项或多项的电路:
由分支预测电路预测的分支行为;
相干共享存储器系统中的存储器窥探请求;
系统事件信号;以及
中断信号。
9.如权利要求1所述的装置,包括队列电路,该队列电路对指示由所述事件检测电路检测到的事件的事件数据进行排队。
10.如权利要求9所述的装置,包括调度电路,该调度电路从所述队列电路读取所述事件数据并调度所述其他处理器执行所述其他程序。
11.如权利要求1所述的装置,包括其他高速缓存,该其他高速缓存耦合到所述其他处理器并存储由所述其他处理器操控的数据值和所述其他程序中的至少一者。
12.如权利要求1所述的装置,其中,所述主处理器能够处理比所述其他处理器更高的指令吞吐量。
13.如权利要求1所述的装置,其中,所述主处理器可切换以在具有相应的不同性能特性的多个不同模式下进行操作。
14.如权利要求1所述的装置,其中,所述其他处理器执行根据所述事件中的所述一个或多个事件选择的多个其他程序之一。
15.如权利要求1所述的装置,包括多个其他处理器,当所述事件检测电路检测到所述事件中的相应的一个或多个事件时,所述多个其他处理器被所述事件检测电路触发执行相应的其他程序。
16.如权利要求15所述的装置,其中,相应的不同其他处理器在被所述事件中的相同的所述一个或多个事件触发时执行相同的其他程序。
17.如权利要求1所述的装置,其中,所述主处理器、所述高速缓存、所述事件检测电路、所述其他处理器、以及所述预取电路被形成在一起,作为集成电路的一部分。
18.如权利要求1所述的装置,其中,所述主处理器和所述其他处理器在多个特权等级中的相同特权等级操作。
19.一种用于处理数据的装置,包括:
主处理器装置,用于执行主程序;
高速缓存装置,用于存储数据并耦合到所述主处理器装置;
事件检测装置,用于检测由所述主处理器装置执行所述主程序导致、指示将由所述主处理器装置使用的数据的事件,所述事件检测装置包括可编程过滤装置,该可编程过滤装置检测匹配可编程过滤特性的存储器操作,所述可编程过滤特性包括所述存储器操作;
其他处理器装置,响应于所述事件检测装置检测到所述存储器操作而用于触发其他程序由所述其他处理器装置执行;
预取电路装置,响应于所述其他程序而用于触发把将由所述主处理器装置使用的所述数据预取到所述高速缓存。
20.一种控制数据预取的方法,包括:
利用主处理器执行主程序;
将数据存储在耦合到所述主处理器的高速缓存中;
检测由所述主处理器执行所述主程序导致、指示将由所述主处理器使用的数据的事件,所述事件包括针对一个或多个可编程存储器地址范围中的存储器地址的存储器操作,所述检测包括使用可编程过滤器检测匹配可编程过滤特性的所述存储器操作,所述可编程过滤特性包括所述存储器操作;
响应于检测到所述存储器操作,触发其他程序由其他处理器执行;以及
响应于所述其他程序,触发把将由所述主处理器装置使用的所述数据预取到所述高速缓存。
CN201680066818.0A 2015-11-16 2016-10-18 事件触发的可编程预取器 Active CN108463808B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1520145.2 2015-11-16
GB1520145.2A GB2544474B (en) 2015-11-16 2015-11-16 Event triggered programmable prefetcher
PCT/GB2016/053216 WO2017085450A1 (en) 2015-11-16 2016-10-18 Event triggered programmable prefetcher

Publications (2)

Publication Number Publication Date
CN108463808A CN108463808A (zh) 2018-08-28
CN108463808B true CN108463808B (zh) 2022-08-05

Family

ID=55132824

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680066818.0A Active CN108463808B (zh) 2015-11-16 2016-10-18 事件触发的可编程预取器

Country Status (5)

Country Link
US (1) US10831494B2 (zh)
KR (1) KR20180090284A (zh)
CN (1) CN108463808B (zh)
GB (1) GB2544474B (zh)
WO (1) WO2017085450A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
DK201770427A1 (en) 2017-05-12 2018-12-20 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
US10713053B2 (en) * 2018-04-06 2020-07-14 Intel Corporation Adaptive spatial access prefetcher apparatus and method
WO2021066687A1 (en) * 2019-10-02 2021-04-08 Telefonaktiebolaget Lm Ericsson (Publ) Entities, system and methods performed therein for handling memory operations of an application in a computer environment
US11011215B1 (en) * 2019-12-19 2021-05-18 Micron Technology, Inc. Apparatus with an internal-operation management mechanism
KR20220104829A (ko) 2019-12-23 2022-07-26 마이크론 테크놀로지, 인크. 라인 캐시 실패의 효과적인 방지
GB2612344B (en) * 2021-10-29 2023-11-15 Advanced Risc Mach Ltd Apparatus and method using hint capability for controlling micro-architectural control function
US11756548B1 (en) * 2022-06-03 2023-09-12 Apple Inc. Ambiguity resolution for application integration

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1342934A (zh) * 2000-08-23 2002-04-03 任天堂株式会社 在音频存储器中预缓存数据的方法和装置
US7457923B1 (en) * 2005-05-11 2008-11-25 Sun Microsystems, Inc. Method and structure for correlation-based prefetching
GB2506902A (en) * 2012-10-12 2014-04-16 Ibm Jump position and frame shifting in list based prefetching
WO2014136003A1 (en) * 2013-03-05 2014-09-12 International Business Machines Corporation Prefetching for parent core in multi-core chip

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080133844A1 (en) * 2006-12-01 2008-06-05 Srinivasan Ramani Method and apparatus for extending local caches in a multiprocessor system
US7917701B2 (en) * 2007-03-12 2011-03-29 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
US8032709B2 (en) * 2008-02-22 2011-10-04 International Business Machines Corporation System, method and computer program product for handling shared cache lines in a multi-processor environment
US8265607B2 (en) * 2008-08-07 2012-09-11 Research In Motion Limited System and method for providing an interactive content portal on a mobile device
US9442824B2 (en) * 2012-03-16 2016-09-13 International Business Machines Corporation Transformation of a program-event-recording event into a run-time instrumentation event
US9141550B2 (en) * 2013-03-05 2015-09-22 International Business Machines Corporation Specific prefetch algorithm for a chip having a parent core and a scout core
CN104809080B (zh) * 2014-05-27 2019-09-17 威盛电子股份有限公司 相互节流的通信预取器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1342934A (zh) * 2000-08-23 2002-04-03 任天堂株式会社 在音频存储器中预缓存数据的方法和装置
US7457923B1 (en) * 2005-05-11 2008-11-25 Sun Microsystems, Inc. Method and structure for correlation-based prefetching
GB2506902A (en) * 2012-10-12 2014-04-16 Ibm Jump position and frame shifting in list based prefetching
WO2014136003A1 (en) * 2013-03-05 2014-09-12 International Business Machines Corporation Prefetching for parent core in multi-core chip

Also Published As

Publication number Publication date
US10831494B2 (en) 2020-11-10
KR20180090284A (ko) 2018-08-10
GB2544474B (en) 2020-02-26
GB201520145D0 (en) 2015-12-30
GB2544474A (en) 2017-05-24
WO2017085450A1 (en) 2017-05-26
US20180314526A1 (en) 2018-11-01
CN108463808A (zh) 2018-08-28

Similar Documents

Publication Publication Date Title
CN108463808B (zh) 事件触发的可编程预取器
JP5615927B2 (ja) データストリームのためのストアアウェアプリフェッチ
US9940132B2 (en) Load-monitor mwait
US5983325A (en) Dataless touch to open a memory page
US6681295B1 (en) Fast lane prefetching
US9208096B2 (en) Cache pre-fetching responsive to data availability
US7840761B2 (en) Apparatus and method for supporting execution of prefetch threads
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
KR100277818B1 (ko) 컴퓨터 시스템의 데이터 처리 속도를 증가시키는 방법
US8806141B2 (en) List based prefetch
EP0457403A2 (en) Multilevel instruction cache, method for using said cache, method for compiling instructions for said cache and micro computer system using such a cache
TWI780217B (zh) 硬件預取器之基於利用率節流
US20140310479A1 (en) Communicating prefetchers that throttle one another
JPH11328019A (ja) コンピュ―タメモリシステムにおいて空間的及び時間的サンプリングを行う装置
CN111052095A (zh) 使用动态预取深度的多行数据预取
JPH11316711A (ja) メモリシステムトランザクションの特性の統計値を推定する方法
JP2007207246A (ja) 命令ラインのための自己プリフェッチl2キャッシュ機構
US20080140934A1 (en) Store-Through L2 Cache Mode
US20090249352A1 (en) Resource Utilization Monitor
KR102464788B1 (ko) 업/다운 프리페쳐
US20220058025A1 (en) Throttling while managing upstream resources
EP3332329A1 (en) Device and method for prefetching content to a cache memory
KR100282225B1 (ko) 데이타 캐쉬 메모리의 제어장치
EP3258381A1 (en) Up/down prefetcher
GB2454809A (en) Pre-fetching data when it has been transferred into system memory

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