相互节流的通信预取器的制造方法

文档序号:8487746阅读:235来源:国知局
相互节流的通信预取器的制造方法
【专利说明】相互节流的通信预取器
[0001]相关申请的交叉引用
[0002]本申请是于2013年03月11号提交的、序列号为13/792,428的美国非临时申请的部分继续案(CIP),在此通过引用将该美国非临时申请全部并入。本申请要求基于2014年5月27日提交的、序列号为62/003,461的美国临时申请的优先权,在此通过引用将该美国临时申请全部并入。
技术领域
[0003]本发明涉及相互节流的通信预取器。
【背景技术】
[0004]当高速缓存失效(cache miss)时,微处理器将存取系统存储器取代存取高速缓存,而此时需要的时间将比存取高速缓存、预取缓冲器或在微处理器本身内部的其它存储元件需要的时间多一或两个数量级。因此,为了减小它们的存取延迟,微处理器整合了可检查最近的数据存取模式且尝试预测程序下一步将存取哪个数据的预取技术。
[0005]预取的好处是众所周知的。然而,预取亦可能存有不好的效应。例如,每个预取请求会占用总线和存储器的可能已经拥塞的带宽,所述的预取请求进行在处理器总线至存储器之间。另外,预取请求可能延迟针对更迫切需要的数据的另一请求。再比如,如果数据被预取到高速缓存,则此预取的数据会使用一高速缓存线,如此将引起高速缓存存储器中的另一尚速缓存线的驱逐(Evict1n)。如果尚速缓存线的被驱逐频率尚于尚速缓存线的被预取的频率,则所述的预取很可能对整体性能是有害的而非有利。因此,需要的是改善的数据预取机制。

【发明内容】

[0006]在一个方面中,本发明提供一种微处理器。该微处理器包括根据第一算法将数据预取到微处理器的第一硬件数据预取器。该微处理器还包括根据第二算法将数据预取到微处理器的第二硬件数据预取器,其中第一算法与第二算法不同。第二预取器检测到其正在以超过第一预定速率的速率根据第二算法将数据预取到微处理器,并且作为响应,向第一预取器发送节流指示。第一预取器响应于从第二预取器接收到节流指示而以低于第二预定速率的速率根据第一算法将数据预取到微处理器。
[0007]在另一方面中,本发明提供一种方法。该方法包括:由第一硬件数据预取器根据第一算法将数据预取到微处理器。该方法还包括由第二硬件数据预取器根据第二算法将数据预取到微处理器,其中第一算法与第二算法不同。该方法还包括由第二预取器检测到其正在以超过第一预定速率的速率根据第二算法将数据预取到微处理器,并且作为响应,向第一预取器发送节流指示。该方法还包括由第一预取器响应于从第二预取器接收到节流指示而以低于第二预定速率的速率根据第一算法将数据预取到微处理器。
[0008]在又一方面中,本发明提供一种在供与计算设备一起使用的至少一个非瞬时计算机可用介质中编码的计算机程序产品,该计算机程序产品包括在所述介质中具体实现的计算机可用程序代码,用于指定微处理器。该计算机可用程序代码包括第一程序代码,用于指定根据第一算法将数据预取到微处理器的第一硬件数据预取器。该计算机可用程序代码还包括第二程序代码,用于指定根据第二算法将数据预取到微处理器的第二硬件数据预取器,其中第一算法与第二算法不同。第二预取器检测到其正在以超过第一预定速率的速率根据第二算法将数据预取到微处理器,并且作为响应,向第一预取器发送节流指示。第一预取器响应于从第二预取器接收到节流指示而以低于第二预定速率的速率根据第一算法将数据预取到微处理器。
【附图说明】
[0009]图1是图示出微处理器的方框图。
[0010]图2是图示出图1的微处理器中第一预取器和第二预取器的通信操作的流程图。
[0011]图3是图示出图1的微处理器的操作的流程图,更具体地,图示第一预取器和第二预取器的通信操作的流程图。
【具体实施方式】
[0012]现在参照图1,显示了示出微处理器100的方框图。微处理器100包括阶段的管线,其包括各种功能单元。管线包括指令高速缓存(Instruct1n Cache) 102,指令高速缓存102親合到指令译码器(Instruct1n Decoder) 104,指令译码器104親合到寄存器别名表(Register Alias Table, RAT) 106,寄存器别名表(RAT) 106f禹合到保留站 108 (Reservat1nstat1n),保留站108親合到执行单元112,执行单元112親合到回退单元(Retireunit) 114。指令译码器104可以包括指令翻译器,其将(如,x86架构的)宏指令翻译成微处理器100的类似RISC的微架构的微指令集。保留站108将指令发布给执行单元112用于不按程序顺序的执行。回退单元114包括重新排序缓冲器,以程序顺序执行指令的回退(retirement)。执行单元112包括加载/存储单元134和其它执行单元132,比如整数单元、浮点单元、分支单元或单指令多重资料数据(SIMD)单元。加载/存储单元134从级别-1 (LI)数据高速缓存116读取数据且存储单元134将数据写入LI数据高速缓存116。级别-2(L2)高速缓存118支援(back) LI数据高速缓存116和指令高速缓存102。L2高速缓存118经由总线接口单元122读取和写入系统存储器,所述总线接口单元122将微处理器100接口连接到系统存储器(未示出)所耦合的总线148,比如局部总线或存储总线。微处理器100还包括预取单元124,其将数据从系统存储器预取到如这里详细描述的L2高速缓存118和/或LI数据高速缓存116中。
[0013]预取单元124包括第一预取器142和第二预取器144。数据预取器,比如第一预取器142和第二预取器144,是将数据预取到微处理器的装置。将数据预取到微处理器意味着检查微处理器正在执行的程序所产生的存储器的存取流,基于检查到的存取流预测在不久的将来程序将要存取的数据的一个或多个位置,并将数据从预测的一个或多个位置预取到微处理器(希望在程序请求该数据之前)。存储器的存取流可以是读取或写入数据的两个或多个请求,其中两个或多个请求中的每个请求会指定在存储器中的存储地址,此存储地址为可识别数据的位置。值得一提的是,第一预取器142和第二预取器144经由通信信号146相互通信以便潜在地改善预取单元124的预取有效性以及所伴随的包括微处理器100和系统存储器的系统的整体性能。特别地,在第一预取器142和第二预取器144之间的通信可以导致处理器总线148和/或系统存储器以及高速缓存存储器116/118的带宽更有效的利用。
[0014]数据预取器,比如第一预取器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使用不同的预取算法。
[0015]通信的预取器停止/恢复
[0016]现在参照图2,显示了示出图1的微处理器100、更特别的是,第一预取器142和第二预取器144的通信操作的流程图。流程以方框202和204开始。
[0017]在方框202,第一预取器142根据第一
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1