CN104809080A - 相互节流的通信预取器 - Google Patents

相互节流的通信预取器 Download PDF

Info

Publication number
CN104809080A
CN104809080A CN201510278099.6A CN201510278099A CN104809080A CN 104809080 A CN104809080 A CN 104809080A CN 201510278099 A CN201510278099 A CN 201510278099A CN 104809080 A CN104809080 A CN 104809080A
Authority
CN
China
Prior art keywords
prefetcher
microprocessor
algorithm
data
set rate
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
CN201510278099.6A
Other languages
English (en)
Other versions
CN104809080B (zh
Inventor
罗德尼.E.虎克
约翰.M.吉尔
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.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
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
Priority claimed from US14/315,064 external-priority patent/US9483406B2/en
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN104809080A publication Critical patent/CN104809080A/zh
Application granted granted Critical
Publication of CN104809080B publication Critical patent/CN104809080B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及一种相互节流的通信预取器。一种微处理器包括根据第一算法将数据预取到微处理器的第一硬件数据预取器。该微处理器还包括根据第二算法将数据预取到微处理器的第二硬件数据预取器,其中第一算法与第二算法不同。第二预取器检测到其正在以超过第一预定速率的速率根据第二算法将数据预取到微处理器,并且作为响应,向第一预取器发送节流指示。第一预取器响应于从第二预取器接收到节流指示而以低于第二预定速率的速率根据第一算法将数据预取到微处理器。

Description

相互节流的通信预取器
相关申请的交叉引用
本申请是于2013年03月11号提交的、序列号为13/792,428的美国非临时申请的部分继续案(CIP),在此通过引用将该美国非临时申请全部并入。本申请要求基于2014年5月27日提交的、序列号为62/003,461的美国临时申请的优先权,在此通过引用将该美国临时申请全部并入。
技术领域
本发明涉及相互节流的通信预取器。
背景技术
当高速缓存失效(cache miss)时,微处理器将存取系统存储器取代存取高速缓存,而此时需要的时间将比存取高速缓存、预取缓冲器或在微处理器本身内部的其它存储元件需要的时间多一或两个数量级。因此,为了减小它们的存取延迟,微处理器整合了可检查最近的数据存取模式且尝试预测程序下一步将存取哪个数据的预取技术。
预取的好处是众所周知的。然而,预取亦可能存有不好的效应。例如,每个预取请求会占用总线和存储器的可能已经拥塞的带宽,所述的预取请求进行在处理器总线至存储器之间。另外,预取请求可能延迟针对更迫切需要的数据的另一请求。再比如,如果数据被预取到高速缓存,则此预取的数据会使用一高速缓存线,如此将引起高速缓存存储器中的另一高速缓存线的驱逐(Eviction)。如果高速缓存线的被驱逐频率高于高速缓存线的被预取的频率,则所述的预取很可能对整体性能是有害的而非有利。因此,需要的是改善的数据预取机制。
发明内容
在一个方面中,本发明提供一种微处理器。该微处理器包括根据第一算法将数据预取到微处理器的第一硬件数据预取器。该微处理器还包括根据第二算法将数据预取到微处理器的第二硬件数据预取器,其中第一算法与第二算法不同。第二预取器检测到其正在以超过第一预定速率的速率根据第二算法将数据预取到微处理器,并且作为响应,向第一预取器发送节流指示。第一预取器响应于从第二预取器接收到节流指示而以低于第二预定速率的速率根据第一算法将数据预取到微处理器。
在另一方面中,本发明提供一种方法。该方法包括:由第一硬件数据预取器根据第一算法将数据预取到微处理器。该方法还包括由第二硬件数据预取器根据第二算法将数据预取到微处理器,其中第一算法与第二算法不同。该方法还包括由第二预取器检测到其正在以超过第一预定速率的速率根据第二算法将数据预取到微处理器,并且作为响应,向第一预取器发送节流指示。该方法还包括由第一预取器响应于从第二预取器接收到节流指示而以低于第二预定速率的速率根据第一算法将数据预取到微处理器。
在又一方面中,本发明提供一种在供与计算设备一起使用的至少一个非瞬时计算机可用介质中编码的计算机程序产品,该计算机程序产品包括在所述介质中具体实现的计算机可用程序代码,用于指定微处理器。该计算机可用程序代码包括第一程序代码,用于指定根据第一算法将数据预取到微处理器的第一硬件数据预取器。该计算机可用程序代码还包括第二程序代码,用于指定根据第二算法将数据预取到微处理器的第二硬件数据预取器,其中第一算法与第二算法不同。第二预取器检测到其正在以超过第一预定速率的速率根据第二算法将数据预取到微处理器,并且作为响应,向第一预取器发送节流指示。第一预取器响应于从第二预取器接收到节流指示而以低于第二预定速率的速率根据第一算法将数据预取到微处理器。
附图说明
图1是图示出微处理器的方框图。
图2是图示出图1的微处理器中第一预取器和第二预取器的通信操作的流程图。
图3是图示出图1的微处理器的操作的流程图,更具体地,图示第一预取器和第二预取器的通信操作的流程图。
具体实施方式
现在参照图1,显示了示出微处理器100的方框图。微处理器100包括阶段的管线,其包括各种功能单元。管线包括指令高速缓存(InstructionCache)102,指令高速缓存102耦合到指令译码器(Instruction Decoder)104,指令译码器104耦合到寄存器别名表(Register Alias Table,RAT)106,寄存器别名表(RAT)106耦合到保留站108(Reservation station),保留站108耦合到执行单元112,执行单元112耦合到回退单元(Retire unit)114。指令译码器104可以包括指令翻译器,其将(如,x86架构的)宏指令翻译成微处理器100的类似RISC的微架构的微指令集。保留站108将指令发布给执行单元112用于不按程序顺序的执行。回退单元114包括重新排序缓冲器,以程序顺序执行指令的回退(retirement)。执行单元112包括加载/存储单元134和其它执行单元132,比如整数单元、浮点单元、分支单元或单指令多重资料数据(SIMD)单元。加载/存储单元134从级别-1(L1)数据高速缓存116读取数据且存储单元134将数据写入L1数据高速缓存116。级别-2(L2)高速缓存118支援(back)L1数据高速缓存116和指令高速缓存102。L2高速缓存118经由总线接口单元122读取和写入系统存储器,所述总线接口单元122将微处理器100接口连接到系统存储器(未示出)所耦合的总线148,比如局部总线或存储总线。微处理器100还包括预取单元124,其将数据从系统存储器预取到如这里详细描述的L2高速缓存118和/或L1数据高速缓存116中。
预取单元124包括第一预取器142和第二预取器144。数据预取器,比如第一预取器142和第二预取器144,是将数据预取到微处理器的装置。将数据预取到微处理器意味着检查微处理器正在执行的程序所产生的存储器的存取流,基于检查到的存取流预测在不久的将来程序将要存取的数据的一个或多个位置,并将数据从预测的一个或多个位置预取到微处理器(希望在程序请求该数据之前)。存储器的存取流可以是读取或写入数据的两个或多个请求,其中两个或多个请求中的每个请求会指定在存储器中的存储地址,此存储地址为可识别数据的位置。值得一提的是,第一预取器142和第二预取器144经由通信信号146相互通信以便潜在地改善预取单元124的预取有效性以及所伴随的包括微处理器100和系统存储器的系统的整体性能。特别地,在第一预取器142和第二预取器144之间的通信可以导致处理器总线148和/或系统存储器以及高速缓存存储器116/118的带宽更有效的利用。
数据预取器,比如第一预取器142和第二预取器144,可根据一算法来进行预取,该算法是用来预测预备预取的数据的一个或多个位置。例如,简单的算法是下一个顺序的算法,该算法根据预取器检查程序流中存储器存取的位置,并预测程序将从下一个顺序的位置存取数据。(一般来说,整个高速缓存线会被预取到微处理器的高速缓存存储器中。因此,预取器预备预取的数据其存储位置,会与程序存取指定的数据的存储位置相邻。)下一个顺序的高速缓存线可以处于在存储器中从程序流存取的位置其向上方向或向下方向。预取器可以查看程序流中两个相邻的存取以确定向上或向下的方向。再如,根据步幅检测算法,预取器可以检测在时间上,相邻的存储器的存取流之间的步幅模式,并基于步幅模式进行预测。也就是说,预取器寻找在时间上相邻的存储器存取之间的间隔距离,且预测后面的程序存取将来自彼此的距离为该间隔距离的位置。例如,预取器可以看到存取位置4、8和12的存取流,并检测为4的间隔距离以及预测下一个存取将在位置16。使用更复杂的步幅算法的预取器可以检测出现在一个模式中具有不同间隔距离的流。例如,预取器可以看到存取位置4、8、10、14和16的存取流,并检测为4的第一间隔距离和为2的第二间隔距离以及预测下两个存取将在位置20和22。再比如,可以使用预取器用来检测在存储块内的、相对独立于存取发生的时间顺序的存储器存取模式的算法。在实际上根据2011年2月24日提交的美国专利申请第13/033,765号描述的“边界框预取器”中使用这样的算法的例子,该美国专利申请要求美国临时申请第61/318,594号的优先权且在2011年9月29日被公布,美国专利公开号为2011/0238922,这里通过引用将其全部公开内容结合于此。第一预取器142和第二预取器144使用不同的预取算法。
      通信的预取器停止/恢复
现在参照图2,显示了示出图1的微处理器100、更特别的是,第一预取器142和第二预取器144的通信操作的流程图。流程以方框202和204开始。
在方框202,第一预取器142根据第一算法预取数据。例如,第一预取器142检查加载/存储单元134、L1数据高速缓存116和/或L2高速缓存118产生的存储器的存取流,并根据第一算法将数据从系统存储器预取到微处理器100。较佳的是,第一存取器142产生到总线接口单元122的请求,以将数据从系统存储器读取到L1数据高速缓存116、L2高速缓存118或预取缓冲器(未示出)。流程进入方框204。
在方框204,第二预取器144预取数据,与在方框202的第一预取器142类似;然而,第二预取器144根据与第一预取器142使用的第一算法不同的第二算法进行预取。较佳的是,第二预取器144使用的第二算法比第一预取器142使用的第一算法更复杂且因此能够预测更复杂的存储器存取模式。例如,第二预取器144可以使用与在上述美国专利申请第13/033,765号中描述的算法类似的预取算法。第二预取器144检测在存储区域内的存储器存取模式,并且第二预取器144根据第二算法从存储区域预取数据。在一个实施例中,存储区域是如微处理器的虚拟存储能力(virtual memory capability)定义的存储页面(memory page)。通过存储页面的尺寸以及存储页面与其尺寸对齐的事实来描述存储页面。例如,一实施例为考虑存储页面的尺寸是4KB且对齐4KB地址边界上,然而,亦可以使用其它页面尺寸于其他实施例中。此外,第二算法除了存储页面之外还可以使用存储区域(memory region)。应该理解虽然方框202和204在图2中以相继次序出现,但第一预取器142和第二预取器144较佳的是分别根据它们的第一算法和第二算法同时地操作以从系统存储器预取数据。也应该理解第二预取器144检查的存储器的存取流可以与第一预取器142检查的存取流不同。此外,第一预取器对应的第一存取流和第二预取器对应的第二存取流可以是相同。另外,第一存取流和第二存取流中的每个存储器存取指定虚拟存储地址。流程进入方框206。
在206,第二预取器144将方框204的存储区域的描述符(descriptor)提供给第一预取器142。发送存储区域描述符作为给第一预取器142的通知以停止从存储区域预取。较佳的是,存储器描述符包括存储地址。在一个实施例中,存储区域描述符还可以包括存储区域的尺寸,而在其它实施例中,尺寸是预定的,如,预定的尺寸是虚拟存储系统支持的最小存储页面的尺寸。预定的尺寸可以是可编程的,如,通过BIOS、操作系统或其它软件,如,经由微处理器100的可编程寄存器(如,模型特定的寄存器),或者通过专注于这样的目的的微处理器100的熔化的熔丝。流程进入方框208。
在方框208,第一预取器142接收在方框206第二预取器144提供的存储区域描述符并停止从存储区域预取。第一预取器142包括存储元件以及逻辑,所述存储元件用于对存储区域描述符进行存储,所述的逻辑确定第一算法所预测的数据其应该从其中被预取的存储位置是否在存储区域内。在一个实施例中,第二预取器144能够使用同时用于多个存储区域的第二预取算法并且能够将多个存储区域描述符发送给第一预取器142,所述第一预取器142包括存储多个存储区域描述符的多个存储元件和关联的逻辑。较佳的是,即使当第一预取器142被阻止在存储区域中预取时,第一预取器142仍继续监控存储器存取,使得如果第二预取器144告诉它再次开始从存储区域预取(如下面参照方框214所述的)时,它可以基于最新的存储器存取历史记录这样做。流程进入方框212。
在方框212,第二预取器144在预测程序在存储区域中所形成的存储器存取模式的结果上失去可信度,而告诉第一预取器142重新开始从存储区域预取。在一个实施例中,如果第二预取器144已经在方框204检测到在存储区域中的存储器存取模式,但第二预取器144检测到接下来在存储区域中的存取流的存储器存取模式不是预料的模式,则第二预取器144失去预测可信度。在一个实施例中,在第二预取器144失去预测可信度之前,第二预取器后来检测到,到存储区域的存储器存取其预定数量不处于所述的存储器存取模式。与关于方框206的上述方式类似,所述预定数量可以是可编程的。较佳的是,当存取流已经离开原本预测的存储区域时,(例如,存取流已经成为了预定的、优选地可编程的多个不在存储区域内的存取时),第二预取器就告诉第一预取器142重新开始从存储区域预取。流程进入方框214。
在方框214,第一预取器142响应于在方框212从第二预取器144接收通信,根据第一算法重新开始从存储区域预取。流程在方框214结束。
      通信的预取器节流
已经描述了第二预取器144告诉第一预取器142停止从存储区域预取并恢复从存储区域预取的实施例。现在将描述第二预取器144告诉第一预取器142对其预取请求产生速率进行节流而不是告诉第一预取器142完全停止预取的实施例。第二预取器144可以在其检测到其正在以高速产生预取请求并且因此例如消费相对较大量的存储器带宽,并且不想预取器142/144组合起来压垮存储器子系统时这样做。
现在参考图3,示出了图示出图1的微处理器100中的操作的流程图,更具体地,图示第一预取器142和第二预取器144的通信操作的流程图。流程以方框302和304开始。
在方框302,第一预取器142根据第一算法预取数据,例如,如上面关于图2所述的。流程进入框304。
在方框304,第二预取器144预取数据,与在方框302的第一预取器142类似;然而,第二预取器144根据与第一预取器142使用的第一算法不同的第二算法进行预取,例如,如上面关于图2所述的。应该理解虽然方框302和304在图3中以相继次序出现,但第一预取器142和第二预取器144较佳的是分别根据它们各自的第一算法和第二算法同时地操作以从系统存储器预取数据。也应该理解第二预取器144检查的存储器的存取流可以与第一预取器142检查的存取流不同。流程进入方框306。
在方框306,第二预取器144检测到其正在以超过阈值速率X的速率进行预取。在一个实施例中,阈值速率X(以及阈值速率Z,其用途在下面论述)是第二预取器144在第二预取器144的时钟信号的每M个周期进行的预取请求的数量,并且其中M是预定值(如,64)。一般而言,通过第二预取器144的超过速率X的预取速率指示第二预取器144可能正在消耗总线148的相对较大量的带宽并且因此可以是这样的指示:第二预取器144应该告诉第一预取器142对自己进行节流以避免消耗过量的总线148的带宽。流程进入方框308。
在方框308,响应于在方框306的检测,第二预取器144向第一预取器142提供指示以告诉第一预取器142对自己进行节流。流程进入方框312。
在方框312,第一预取器142接收第二预取器144在方框308提供的节流指示,并且将其预取节流回到低于阈值速率Y。在一个实施例中,阈值速率Y是第一预取器142在第二预取器144的时钟信号的每P个周期进行的预取请求的数量,并且其中P是预定值(如,64)。流程进入方框314。
在方框314,第二预取器144最终检测到其正在以低于阈值速率Z的速率进行预取。在一个实施例中,阈值速率Z等于阈值速率X。然而,在其它实施例中,阈值速率Z小于阈值速率X,阈值速率Z用于在节流机制中提供一些滞后。流程进入方框316。
在方框316,第二预取器144响应于在方框314的检测,告诉第一预取器142不再对自己进行节流。流程进入方框318。
在方框318中,第一预取器142响应于在方框316从第二预取器144接收到通信,停止在预取上对自己节流。流程在方框318结束。
在一个实施例中,阈值速率X、Y和/或Z可以是可编程的,如,通过BIOS、操作系统或其它软件,如,经由微处理器100的可编程寄存器(如,模型特定的寄存器),或者通过专注于这样的目的的微处理器100的熔化的熔丝。在一个实施例中,阈值速率X、Y和/或Z可以基于各种因素来确定的。
在一个实施例中,微处理器100的制造商和/或用户在特定程序的执行实例之前进行分析,所述特定程序的性能是特别期望被优化的,并且从分析中确定提供较好性能的阈值速率。在一个实施例中,较好的执行阈值速率响应于系统检测到当前运行的程序是被分析的程序之一而被编程到微处理器100中,阈值速率已经针对该被分析的程序之一通过之前的分析确定。在另一个实施例中,通过分析确定的阈值速率与识别被分析的程序的信息一起在初始化时间(如,通过BIOS或者操作系统)被编程到微处理器100中,并且微处理器100自己使用程序识别信息来检测被分析的程序之一当前正在运行并且使得第一预取器142和/或第二预取器144使用与被识别的程序相关联的阈值。
在另一个实施例中,阈值是由微处理器100基于对总线148的利用率来动态确定的。在一个实施例中,总线148利用率被测量为在最近N个总线148的时钟周期中总线事务的数量,其中,N是可编程值。在另一个实施例中,总线148利用率被测量为等待请求访问总线148(如在总线接口单元122中的队列中)的总线事务的数量。额外地,总线148利用率可以基于总线148的时钟速率和/或第一预取器142和第二预取器144的时钟速率来计算。
虽然已经描述了第二预取器144对第一预取器142进行节流的实施例,但是设想到了预取器142/144中的任一个可以对另一个进行节流的其它实施例。类似的,设想到了预取器142/144中的任一个可以额外地告诉预取器142/144中的另一个停止从存储区域预取的其他实施例。另外,虽然已经描述了微处理器100包括单个处理核心(如,指令高速缓存102、指令译码器104、RAT 106、保留站108、执行单元112、回退单元114、L1数据高速缓存116)的实施例,但是仍设想到了多核实施例。
尽管这里已经描述了本发明的各种实施例,但应该理解它们是作为例子而非作为限制被展示的。对于相关计算机领域的技术人员来说很明显,在不脱离本发明的范围的情况下,可以在其中做出形式和细节上的各种变化。例如,软件可以使能这里描述的装置和方法的例如函数、构造、建模、仿真、描述和/或测试。这可以通过利用一般的编程语言(如,C,C++)、包括VerilogHDL、VHDL等等的硬件描述语言(HDL)或其它可用的程序实现。这样的软件可以安排在任何已知的计算机可用的介质中,如磁带、半导体、磁盘或光盘(如,CD-ROM、DVD-ROM、等)、网络、导线或其它通信介质。这里描述的装置和方法的实施例可以被包括在半导体知识产权核心中,如微处理器核心(如,以HDL具体实现或被指定)并被转变成在集成电路的生产中的硬件。另外,这里描述的装置和方法可以具体实现为硬件和软件的结合。因此,本发明不应该受限于这里描述的任何示例实施例,但应该仅依照下述权利要求及它们的等价物来被定义。特别地,本发明能在通用计算机中可以使用的微处理器设备内执行。最后,本领域技术人员应该理解在不脱离所附的权利要求书所定义的本发明的范围的情况下,他们可以容易地使用该公开的构思和特定的实施例作为设计或修改完成本发明的同样目的的其它结构的基础。

Claims (20)

1.一种微处理器,包括:
一第一硬件数据预取器,其被配置为根据一第一算法将数据预取到该微处理器;以及
一第二硬件数据预取器,其被配置为根据一第二算法将数据预取到该微处理器,其中该第一算法与该第二算法不同;
其中,该第二预取器被配置为检测到其正在以一超过第一预定速率的速率根据该第二算法将数据预取到微处理器,并且作为响应,向该第一预取器发送节流指示;并且
其中,第一预取器被配置为响应于从该第二预取器接收到该节流指示而以一低于第二预定速率的速率根据该第一算法将数据预取到微处理器。
2.如权利要求1所述的微处理器,其中,该第二预取器还被配置为向该第一预取器提供恢复指示,其中,该第一预取器还被配置为响应于从该第二预取器接收到该恢复指示而与该第二预定速率无关地根据该第一算法将数据预取到微处理器。
3.如权利要求2所述的微处理器,其中,该第二预取器还被配置为在该第二预取器连续检测到其不再以一超过第三预定速率的速率根据该第二算法将数据预取到微处理器时,向该第一预取器提供恢复指示。
4.如权利要求1所述的微处理器,其中,该第一和/或第二预定速率包括每个微处理器的时钟周期的预取请求的分别的第一和/或第二预定数量。
5.如权利要求1所述的微处理器,其中,该第一和/或第二预定速率是可经由微处理器的熔丝编程的。
6.如权利要求1所述的微处理器,其中,该第一和/或第二预定速率是可经由微处理器可执行的指令来编程的。
7.如权利要求1所述的微处理器,其中,该第一和/或第二预定速率是与当前在微处理器上执行的程序相关联的,其中,该第一和/或第二预定速率是基于对在该程序的当前执行实例之前的该程序的之前执行实例的分析来确定的。
8.如权利要求1所述的微处理器,其中,该第一和/或第二预定速率基于对将微处理器接口到一系统存储器的总线的利用率来动态确定,该第一硬件数据预取器和第二硬件数据预取器从该系统存储器将数据预取到微处理器。
9.如权利要求8所述的微处理器,其中,该利用率基于在该总线上未解决的事务的数量来确定。
10.如权利要求8所述的微处理器,其中,该利用率基于等待在该总线上启动的事务的队列的深度来确定。
11.如权利要求8所述的微处理器,其中,该利用率基于该总线的时钟速率与该第一数据预取器和第二数据预取器的时钟速率的比率来确定。
12.一种方法,包括:
由一第一硬件数据预取器根据一第一算法将数据预取到微处理器;
由一第二硬件数据预取器根据一第二算法将数据预取到微处理器,其中该第一算法与该第二算法不同;
由该第二预取器检测到其正在以一超过第一预定速率的速率根据该第二算法将数据预取到微处理器,并且作为响应,向该第一预取器发送节流指示;以及
由该第一预取器响应于从该第二预取器接收到该节流指示而以一低于第二预定速率的速率根据该第一算法将数据预取到微处理器。
13.如权利要求12所述的方法,还包括:
由该第二预取器向该第一预取器提供恢复指示;以及
由该第一预取器响应于从该第二预取器接收到该恢复指示而与该第二预定速率无关地根据该第一算法将数据预取到微处理器。
14.如权利要求12所述的方法,其中,该第一和/或第二预定速率包括每个微处理器的时钟周期的预取请求的分别的第一和/或第二预定数量。
15.如权利要求12所述的方法,其中,该第一和/或第二预定速率可经由微处理器的熔丝编程。
16.如权利要求12所述的方法,其中,该第一和/或第二预定速率可经由微处理器可执行的指令来编程。
17.如权利要求12所述的方法,其中,该第一和/或第二预定速率与当前在微处理器上执行的程序相关联,其中,该第一和/或第二预定速率基于对在该程序的当前执行实例之前的该程序的之前执行实例的分析来确定。
18.如权利要求12所述的方法,其中,该第一和/或第二预定速率基于对将微处理器接口到一系统存储器的总线的利用率而动态确定,该第一硬件数据预取器和第二硬件数据预取器从该系统存储器将数据预取到微处理器。
19.一种在供与计算设备一起使用的至少一个非瞬时计算机可用介质中编码的计算机程序产品,该计算机程序产品包括:
在所述介质中具体实现的计算机可用程序代码,用于指定微处理器,该计算机可用程序代码包括:
一第一程序代码,用于指定一第一硬件数据预取器,其被配置为根据一第一算法将数据预取到微处理器;以及
一第二程序代码,用于指定第二硬件数据预取器,其被配置为根据一第二算法将数据预取到微处理器的,其中第一算法与第二算法不同;
其中,该第二预取器被配置为检测到其正在以一超过第一预定速率的速率根据该第二算法将数据预取到微处理器,并且作为响应,向该第一预取器发送节流指示;并且
其中,该第一预取器被配置为响应于从该第二预取器接收到该节流指示而以一低于第二预定速率的速率根据该第一算法将数据预取到微处理器。
20.如权利要求19所述的计算机程序产品,其中,该至少一个非瞬时计算机可用介质从以下各项的集合中选择:盘、带、或者其它磁、光、电存储介质以及网络或有线通信介质。
CN201510278099.6A 2014-05-27 2015-05-27 相互节流的通信预取器 Active CN104809080B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462003461P 2014-05-27 2014-05-27
US62/003,461 2014-05-27
US14/315,064 US9483406B2 (en) 2013-03-11 2014-06-25 Communicating prefetchers that throttle one another
US14/315,064 2014-06-25

Publications (2)

Publication Number Publication Date
CN104809080A true CN104809080A (zh) 2015-07-29
CN104809080B CN104809080B (zh) 2019-09-17

Family

ID=53693918

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510278099.6A Active CN104809080B (zh) 2014-05-27 2015-05-27 相互节流的通信预取器

Country Status (1)

Country Link
CN (1) CN104809080B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108463808A (zh) * 2015-11-16 2018-08-28 Arm有限公司 事件触发的可编程预取器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148470A1 (en) * 2003-01-29 2004-07-29 Jurgen Schulz System including a memory controller configured to perform pre-fetch operations including dynamic pre-fetch control
US20120066455A1 (en) * 2010-09-09 2012-03-15 Swamy Punyamurtula Hybrid prefetch method and apparatus
US20130254485A1 (en) * 2012-03-20 2013-09-26 Hari S. Kannan Coordinated prefetching in hierarchically cached processors
CN103399728A (zh) * 2013-03-11 2013-11-20 威盛电子股份有限公司 在微处理器中的通信预取器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148470A1 (en) * 2003-01-29 2004-07-29 Jurgen Schulz System including a memory controller configured to perform pre-fetch operations including dynamic pre-fetch control
US20120066455A1 (en) * 2010-09-09 2012-03-15 Swamy Punyamurtula Hybrid prefetch method and apparatus
US20130254485A1 (en) * 2012-03-20 2013-09-26 Hari S. Kannan Coordinated prefetching in hierarchically cached processors
CN103399728A (zh) * 2013-03-11 2013-11-20 威盛电子股份有限公司 在微处理器中的通信预取器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108463808A (zh) * 2015-11-16 2018-08-28 Arm有限公司 事件触发的可编程预取器

Also Published As

Publication number Publication date
CN104809080B (zh) 2019-09-17

Similar Documents

Publication Publication Date Title
CN103399728A (zh) 在微处理器中的通信预取器
JP6105742B2 (ja) バッファ占有率に基づくキャッシュへのプリフェッチ
US11379234B2 (en) Store-to-load forwarding
US9483406B2 (en) Communicating prefetchers that throttle one another
US9710276B2 (en) Execution of instruction loops using an instruction buffer
US9223705B2 (en) Cache access arbitration for prefetch requests
US20140108740A1 (en) Prefetch throttling
CN102169429A (zh) 预取单元、数据预取方法以及微处理器
US9135005B2 (en) History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
KR20150008484A (ko) 명령 프로세싱 회로들, 및 관련 프로세서 시스템들, 방법들 및 컴퓨터―판독 가능 매체들에서 반대 컨디션들을 갖는 조건부 기록 명령들의 융합
CN104484158A (zh) 微处理器以及微处理器操作方法
US20080208558A1 (en) System and method for simulating a multiprocessor system
US9256544B2 (en) Way preparation for accessing a cache
CN105074655A (zh) 用于取消对循环的数据预取请求的方法和设备
US20160231933A1 (en) Memory page access detection
JP2022526057A (ja) メモリ順序付け違反チェックバッファの排出遅延を許容するための投機的命令ウェイクアップ
US9058277B2 (en) Dynamic evaluation and reconfiguration of a data prefetcher
CN104809080A (zh) 相互节流的通信预取器
US20160378667A1 (en) Independent between-module prefetching for processor memory modules
US20140115257A1 (en) Prefetching using branch information from an instruction cache
CN105706049A (zh) 操作系统例行程序的预测历程储存器的部分使用
JPH0651982A (ja) 演算処理装置
Gouk et al. Breaking Barriers: Expanding GPU Memory with Sub-Two Digit Nanosecond Latency CXL Controller
Castro et al. A load-store queue design based on predictive state filtering

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