掌桥专利:专业的专利平台
掌桥专利
首页

用于自适应混合硬件预取的系统和方法

文献发布时间:2023-06-19 18:35:48


用于自适应混合硬件预取的系统和方法

相关申请的交叉引用

本申请要求2020年5月30日提交的美国临时专利申请第63/032,592号的权益。

技术领域

本公开内容总体上涉及在计算系统中的缓存中预取数据。

背景技术

计算系统可以使用缓存存储器来提高计算性能。例如,计算系统可以将其需要更频繁访问的数据存储在更小、更快的缓存存储器中,而不是将该数据存储在更慢、更大的存储器(例如,主存储器单元)中。因此,计算系统能够更快地访问数据,这可以减少存储器访问的等待时间。

计算系统可以具有以本文中所称的缓存级进行排序的缓存层级。通常,从最高级缓存到最低级缓存对缓存级进行编号。在缓存层级中可以有两级、三级、四级或甚至更多级的缓存。在本文中,使用惯例以最小的编号指代最高级缓存,其中逐渐降低的缓存级接收逐渐增大的编号。例如,层级中的最高级缓存可以被称为缓存级1(L1)。此处,较低级的缓存级可以被称为L2、L3、L4等。缓存级1(L1)通常是处理器附近的小型快速缓存。最低级缓存通常被称为末级缓存(LLC)。

当处理器需要数据(称为目标数据)时,处理器通常向最高级缓存(例如,L1)请求目标数据。如果目标数据不在缓存中,则这被称为缓存未命中。在缓存未命中的情况下,通常检查下一级缓存以确定目标数据是否在下一级缓存处。此过程通常被重复进行,直到最高级缓存对目标数据进行了搜索为止。如果没有一个缓存具有目标数据,则从主存储器访问目标数据。

发明内容

根据本公开内容的一个方面,提供了一种装置,该装置包括:处理器核;存储器层级结构,其包括主存储器以及主存储器与处理器核之间的一个或更多个缓存;以及耦合至存储器层级结构的多个硬件预取器。耦合至多个硬件预取器的预取控制电路被配置成:测量一个或更多个缓存性能度量在两个或更多个采样间隔内的改变,以及响应于一个或更多个性能度量在连续采样间隔之间的改变来控制多个硬件预取器的操作。

可选地,在前述方面的任一方面中,一个或更多个性能度量的改变包括预取准确度在至少第一采样间隔与第二采样间隔之间的改变。

可选地,在前述方面的任一方面中,预取控制电路被配置成响应于预取准确度从第一采样间隔到第二采样间隔的降低而减小硬件预取器的侵略性。

可选地,在前述方面的任一方面中,预取控制电路还被配置成响应于检测到的系统利用率水平来控制多个硬件预取器的操作,预取控制电路被配置成响应于高系统利用率而减小硬件预取器的侵略性。

可选地,在前述方面的任一方面中,预取控制电路被配置成通过减小由硬件预取器使用的程度或距离中的至少一个来减小硬件预取器的侵略性。

可选地,在前述方面的任一方面中,多个硬件预取器包括第一硬件预取器、第二硬件预取器和第三硬件预取器,每个硬件预取器被连接成从预取控制电路接收单独的控制信号。

可选地,在前述方面的任一方面中,第一硬件预取器是多偏移预取器(MOP),所述第二硬件预取器是空间存储器流(SMS)预取器,并且所述第三硬件预取器是增强型下一行预取器(ENP)。

可选地,在前述方面的任一方面中,第一采样间隔和第二采样间隔分别由相应的缓存中的预定数目的驱逐来定义。

可选地,在前述方面的任一方面中,主存储器与处理器核之间的一个或更多个缓存包括一级(L1)缓存和二级(L2)缓存,多个硬件预取器中的每一个根据单独的性能度量和单独的采样间隔对L1缓存和L2缓存单独操作。

根据本公开内容的另一方面,提供了一种方法,该方法包括:操作多个硬件预取器以预取存储器层级结构中的数据,存储器层级结构包括主存储器以及主存储器与处理器核之间的一个或更多个缓存;计算一个或更多个性能度量在两个或更多个采样间隔内的改变;以及响应于一个或更多个性能度量在至少第一采样间隔与第二采样间隔之间的改变来控制多个硬件预取器。

可选地,在前述方面的任一方面中,一个或更多个性能度量的改变包括预取准确度在至少第一采样间隔与第二采样间隔之间的改变。

可选地,在前述方面的任一方面中,响应于一个或更多个性能度量的改变来控制多个硬件预取器包括:响应于预取准确度从第一采样间隔到第二采样间隔的降低来减小硬件预取器的侵略性。

可选地,在前述方面的任一方面中,该方法还包括:响应于检测到的系统利用率水平来控制多个硬件预取器,包括响应于高系统利用率来减小硬件预取器的侵略性。

可选地,在前述方面的任一方面中,减小硬件预取器的侵略性包括减小由硬件预取器使用的程度或距离中的至少一个。

可选地,在前述方面的任一方面中,该方法还包括:向多个硬件预取器中的第一硬件预取器发送第一控制信号;向多个硬件预取器中的第二硬件预取器发送第二控制信号;以及向多个硬件预取器中的第三硬件预取器发送第三控制信号。

可选地,在前述方面的任一方面中,第一硬件预取器是多偏移预取器(MOP),第二硬件预取器是空间存储器流(SMS)预取器,并且第三硬件预取器是增强型下一行预取器(ENP)。

可选地,在前述方面的任一方面中,该方法还包括对来自存储器层级结构的缓存的驱逐进行计数,第一采样间隔和第二采样间隔由来自缓存的预定数目的驱逐来定义。

可选地,在前述方面的任一方面中,主存储器与处理器核之间的一个或更多个缓存包括一级(L1)缓存和二级(L2)缓存,并且计算一个或更多个性能度量的改变包括:计算L1缓存的性能度量的第一改变以及计算L2缓存的性能度量的第二改变。

根据本公开内容的又一方面,提供了一种计算机系统,包括:处理器核;存储器层级结构,其包括主存储器以及在主存储器与处理器核之间的至少第一缓存和第二缓存;耦合至存储器层级结构的多个硬件预取器,多个硬件预取器至少包括多偏移预取器(MOP)、空间存储器流(SMS)预取器和增强型下一行预取器(ENP);以及耦合至多个硬件预取器的预取控制电路,预取控制电路被配置成:比较第一缓存和第二缓存的预取准确度在两个或更多个采样间隔内的改变,以及响应于相应的缓存的预取准确度在相应的缓存的至少第一采样间隔与第二采样间隔之间的改变来控制多个硬件预取器的侵略性。

可选地,在前述方面的任一方面中,预取控制电路被配置成响应于预取准确度从第一采样间隔到第二采样间隔的降低而减小硬件预取器的侵略性,并且被配置成响应于硬件预取器的预取准确度从第一采样间隔到第二采样间隔的增加而增加硬件预取器的侵略性。

可选地,在前述方面的任一方面中,预取控制电路还被配置成响应于检测到的系统利用率水平来控制多个硬件预取器的操作,预取控制电路被配置成响应于高系统利用率来减小硬件预取器的侵略性。

可选地,在前述方面的任一方面中,预取控制电路被配置成通过减小由硬件预取器使用的程度或距离中的至少一个来减小硬件预取器的侵略性。

可选地,在前述方面的任一方面中,第一缓存的第一采样间隔和第二采样间隔由来自第一缓存的第一预定数目的驱逐来定义,并且第二缓存的第一采样间隔和第二采样间隔由来自第二缓存的第二预定数目的驱逐来定义。

根据本公开内容的又一方面,提供了一种计算机系统,包括:处理器核;主存储器;处理器核与主存储器之间的第一级(L1)缓存;L1缓存与主存储器之间的第二级(L1)缓存;耦合至L1缓存和L2缓存的多偏移硬件预取器;耦合至L2缓存的空间存储器流硬件预取器;耦合至L1缓存的增强型下一行硬件预取器;以及预取控制电路,其耦合至多偏移硬件预取器、空间存储器流硬件预取器和增强型下一行硬件预取器,预取控制电路被配置成:从L1缓存和L2缓存获得预取准确度度量;根据预取准确度在L1缓存和L2缓存的两个采样间隔之间的改变,改变L1缓存和L2缓存中的至少一个中的多偏移硬件预取器的程度和距离中的至少一个;根据预取准确度在L1缓存的两个采样间隔之间的改变,改变L1缓存中的增强型下一行硬件预取器的程度和距离中的至少一个;以及根据预取准确度在L2缓存的两个采样间隔之间的改变,改变L2缓存中的空间存储器流硬件预取器的程度和距离中的至少一个。

提供该发明内容以便以简化形式介绍将在以下具体实施方式中进一步描述的一系列构思。本发明内容不旨在识别所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。所要求保护的主题不限于解决背景技术中提到的任何或所有缺点的实现方式。

附图说明

本公开内容的各方面通过示例来说明,并且不受附图(figure,FIG)的限制,附图中相同的附图标记指示相同的元件。

图1A至图1C描绘了存储器系统的示例。

图2描绘了具有硬件预取电路的存储器系统的一个实施方式。

图3描绘了包括连接至多级缓存存储装置的预取控制电路和硬件预取器的一个实施方式。

图4描绘了预取控制电路的一个实施方式。

图5描绘了包括程序自适应电路和系统自适应电路的预取控制电路的一个实施方式。

图6描绘了包括硬件预取器和预取控制电路的存储器系统的一个实施方式。

图7描绘了硬件预取器的一个实施方式。

图8描绘了系统自适应电路的一个实施方式。

具体实施方式

现在将参照附图(figure,FIG)来描述本公开内容,这些附图总体上涉及缓存预取。可以以存储器块为单位对数据进行缓存,并且从缓存中检索数据。存储器块是存储器层级结构中的基本存储单元。存储器块也可以被称为缓存块或缓存行。在本文中,“缓存预取”被定义为:在处理器核对存储器块的需求之前,将一个或更多个存储器块从其在存储器层级结构中的当前位置提取到存储器层级结构中的更高级别处的缓存中。为了简洁起见,本文中可以使用术语“预取”代替“缓存预取”。存储器层级结构中的当前位置是指存储器层级结构中存储器块当前驻留的最高级别(其中较高表示更靠近处理器核,而较低表示更远离处理器核)。

图1A是连接至存储器层级结构106的处理器核102的示例的概念性图示。存储器层级结构106包括连接至主存储器120的三级缓存,即一级(L1)缓存108、二级(L2)缓存110和三级(L3)缓存112。在存储器层级结构中可以使用包括不同数目的缓存(例如,一个或两个缓存,或多于三个的缓存)的其他缓存配置。通常,更靠近处理器核的缓存比更靠近主存储器的缓存更小且更快被访问。例如,L1缓存108比L2缓存110小且更快,L2缓存110比L3缓存112小且更快,L3缓存112比主存储器120小且更快。诸如存储器层级结构106的存储器层级结构中的任何缓存可以保存预取的数据。可以将不同的标准应用于不同缓存中的预取。

缓存预取器可以预取数据或指令。数据预取可以通过观察加载和存储指令的加载和存储流量并且使数据在其未来需求之前更接近处理器核来预测未来地址请求的数据。

可以基于将存在自处理器核对存储器地址的即将到来的需求或需要的可能性来进行硬件数据预取。与存储器块仍然在主存储器中或者在存储器层级结构的较低级处的情况相比,如果接收到对存储块的请求,则可以从缓存中更快地访问存储器块。然而,处理器核可能不需要预取的存储块,这意味着较高级缓存中的空间未被有效使用。预取存储器块可能会导致从缓存存储装置中驱逐受害者存储器块。如果需要受害者存储块而不需要预取的存储器块,则性能可能降低。此外,预取请求使用存储器层级结构中的带宽。因此,不导向对预取的存储器块的需求的预取请求可能浪费资源(包括存储器层级结构中的缓存容量和带宽),并且可能影响存储器系统的性能。

本技术的各方面使用多个硬件预取器来预取存储器层级结构中的数据。不同的硬件预取器可以被配置成应用不同的预取方案,使得可以获得多个方案的益处。可以根据存储器层级结构中的缓存的变化的性能度量来控制硬件预取器,使得预取动态地调整。例如,可以在多个采样间隔内获得诸如缓存中的预取准确度的性能度量,并且可以使用该性能度量从一个采样间隔到下一个采样间隔的变化来确定如何改变预取(例如,是增加还是降低侵略性(aggressiveness))。在性能度量的变化指示预取性能改善(例如预取准确度增加)的情况下,可以控制一个或更多个硬件预取器以增加侵略性(例如增加程度和/或距离),并且当性能度量的变化指示预取性能下降(例如预取准确度下降)时,可以控制一个或更多个硬件预取器以降低侵略性(例如降低程度和/或距离)。还可以根据系统利用率(系统压力)来控制预取器,使得预取不会使用过多的资源(例如,通过在系统利用率高时对预取进行节流)。适当的预取控制电路可以控制并行操作的多个硬件预取器,使得预取动态地适应存储器的访问模式变化,同时确保预取不过度。

应当理解,本公开内容的当前实施方式可以以许多不同的形式实现,并且权利要求范围不应当被解释为限于本文阐述的实施方式。相反,提供这些实施方式是为了使本公开内容将透彻和完整,并且将本发明实施方式构思充分传达给本领域技术人员。实际上,本公开内容旨在涵盖包括在由所附权利要求书限定的本公开内容的范围和精神内的这些实施方式的替选、修改和等同物。此外,在本公开内容的当前实施方式的以下详细描述中,阐述了许多具体细节以提供透彻理解。然而,对于本领域普通技术人员而言将清楚的是,可以在没有这样的具体细节的情况下实践本公开内容的实施方式。

图1B描绘了系统(或装置)100的一个实施方式,该系统100包括耦合至处理器核102的存储器系统105。存储器系统105包括存储器层级结构106和存储器控制器122。处理器核102也可以称为中央处理单元(central processing unit,CPU)。存储器层级结构106可以存储数据和/或程序指令,所述数据和/或程序指令响应于来自处理器核102的需求或请求而被提供给处理器核102,处理器核102可以执行从存储器层级结构106获得的程序指令。“程序指令”可以被定义为在处理器(例如,微处理器或CPU)上可执行的指令。处理器核102可以具有程序计数器(program counter,PC),该程序计数器包含唯一地定义程序指令的值。例如,在程序指令的顺序执行期间,程序计数器可以随着每个程序指令的执行而递增一。如本领域普通技术人员充分理解,程序指令可能非顺序地执行(例如分支指令)。因此,程序计数器中的值可以以多于一的方式来增大或减小。

存储器层级结构106可以包括主存储器以及一个或更多个缓存(例如,如先前在图1A中所示的)。存储器控制器122包括控制电路,该控制电路被配置成在处理器核102与存储器层级结构106之间传送数据(例如,执行读/写、加载/存储或其他存储器访问操作)并且被配置成操作存储器层级结构106,包括预取存储器层级结构106中的数据。存储器控制器122可以被实现为专用控制电路(例如,在专用控制电路或ASIC中)、可编程逻辑电路,使用由固件配置的处理器来执行存储器控制器功能等。

图1C示意性地示出了系统100的实现方式,其示出该实施方式中的存储器系统105的附加细节(注意,该示意图中的方框的位置不一定对应于其实现为电路时的物理位置)。存储器系统105包括多级缓存存储装置126、主存储器120和存储器控制器122。多级缓存存储装置126包括多个缓存级。例如,多级缓存存储装置126可以包括一级(L1)缓存、二级(L2)缓存和末级缓存(last level cache,LLC)。存储器控制器122被配置成控制对多级缓存存储装置126和主存储器120的访问。加载存储单元130和/或加载存储单元131负责执行所有加载和存储指令。加载存储单元可以实现在处理器核中(例如,加载存储单元131)或外部地实现(例如,如加载存储装置130所示的在存储器系统中)或者以某种组合来实现(例如,部分地在处理器核中实现且部分地由处理器核外部的部件实现的)。本技术不限于任何特定的加载存储位置或配置。加载存储单元130(和/或加载存储单元131)提供了在存储器层级结构106中的存储装置(例如,多级缓存存储装置126、主存储器120)与处理器核102中的寄存器之间的数据传送。硬件预取电路150可以观察加载存储单元130与处理器核102之间的该流量并且可以将该流量用于训练一个或更多个硬件预取器。在一个实施方式中,存在用于每个缓存级的缓存控制器。每个缓存控制器可以负责管理多级缓存存储装置126中的缓存。例如,当缓存控制器接收到对缓存行的请求时,该缓存控制器检查缓存行的地址以确定缓存行是否在缓存中。如果缓存行在缓存中,可以从缓存中读取缓存行。如果缓存行不在缓存中(称为缓存未命中),则缓存控制器向较低级缓存(即,更靠近主存储器120的缓存)发送请求,或者在不存在更靠近主存储器120的缓存的情况下向主存储器发送请求。缓存控制器可以使用专用硬件、使用由固件配置的一个或更多个处理器、或专用硬件和固件的组合来实现。

在一个实施方式中,处理器核102向存储器层级结构106发送对目标存储器块的需求(请求)。这些需求可以响应于处理器核102执行程序指令(例如但不限于加载指令)而发生。在一个实施方式中,需求被发送到加载存储单元(load store unit,LSU)130。可以在多级缓存存储装置126的逐渐降低的级别中搜索目标存储器块。如果在多级缓存存储装置126的任何级别处都没有找到目标存储器块,则搜索主存储器120。如果在存储器层级结构106中没有找到目标存储器块,则可以在诸如固态驱动器(或硬盘驱动器)的另一存储器中搜索目标存储器块。向处理器核102提供存储器块所花费的时间量随着所搜索的每一个进一步的级别而大大增加。在一个实施方式中,目标存储器块一旦被定位,就被缓存在多级缓存存储装置126的最高级(例如L1缓存)处,因为通常在不久的将来可能再次需要处理器核102所需要的存储器块。然而,由于最高级缓存中的有限空间,如果在最高级缓存中没有用于目标存储器块的可用空间,则将现有存储器块选择为“受害者”,并且然后将该现有存储器块从最高级缓存中逐出以为目标存储器块留出空间。在一个实施方式中,驱逐和替换受害者存储器块以及缓存目标存储器块的过程基于替换算法。在某些情况下,存储器块被预取到最高级别以外的级别(例如L2缓存)。与目标存储器块在主存储器120中的情况下相比,如果在多级缓存存储装置126中找到目标存储器块,则处理器核102经历更小的延迟。如果目标存储器块在非常接近处理器核102的缓存级中,则延迟可以仅是一个周期执行时间。

硬件预取电路150和/或硬件预取电路151被配置成实现数据的预取。硬件预取电路可以在处理器核中实现(例如,硬件预取器电路151)或在处理器核外部实现(例如,硬件预取电路150)或以某种组合实现(例如,部分地在处理器核中实现,并且部分地由处理器核外部的部件实现)。本技术不限于硬件预取电路的任何特定位置或配置。在一些实施方式中,硬件预取电路包括控制逻辑、算术逻辑和存储装置。算术逻辑可以用于例如确定下一预取地址的操作。存储装置可以用于存储关于预取请求的一个或更多个统计数据。控制逻辑可以用于跟踪统计数据,存储统计数据和从存储装置访问统计数据,以及控制算术逻辑。硬件预取电路150包括以硬件实现的硬件预取器,并且可以包括与可以以硬件或固件实现的硬件预取器相关联的附加控制电路。在一个实施方式中,硬件预取电路150包括多个硬件预取器。在一个实施方式中,使用分立电路实现硬件预取电路。例如,硬件预取电路可以使用分立逻辑来实现,分立逻辑可以包括但不限于NAND门和/或NOR门。硬件预取电路150可以显著地减少通过预取存储器块来提供目标存储器块时的延迟。预取是处理器核102实现对存储器块的需求的附加操作。虽然图1C示出了与LSU 130分离的硬件预取电路150,但是在一些示例中,硬件预取电路的一些部分可以在LSU 130和/或存储器控制器122的其他部件中实现,并且硬件预取电路150使用的数据可以存储在多级缓存存储装置中(例如,一个或更多个表可以存储在缓存中)。

在一个时间点与给定程序指令相关联的每个预取请求针对不同的存储器块。作为一个示例,如果从处理器核102接收到对存储器地址X处的存储器块的请求,则硬件预取电路150可以发出对存储器地址X+α处的存储器块的预取请求。项α可以是任何整数(正或负)并且可以被称为步幅或偏移(可以在多偏移预取器或MOP中使用两个或更多个这样的偏移)。在该示例中,存在后续请求将用于如由这些存储器地址指示的后续存储器块的可能性。由预取逻辑104发出的这样的预取请求的数目被称为预取的程度(或“预取度”)。预取一般预取地址在当前地址之前的数据,并且距离是指在预取的数据的地址与当前地址之间的地址的数目(即,提前多远执行预取)。术语“侵略性”可以用于指缓存在诸如程度和/或距离的参数方面的操作方式。增加侵略性可以指增加程度和/或距离。降低侵略性可以指降低程度和/或距离。控制侵略性可以指控制程度和/或距离。

图2示出了根据实施方式的与预取相关联的存储器系统105的某些部件。图2示出了包括多个缓存的多级缓存存储装置126,所述多个缓存包括一级(L1)缓存214、二级(L2)缓存216、末级缓存(last level cache,LLC)218和主存储器120。可以有其他级别的缓存。例如,在二级缓存216与LLC 218之间可以有附加的缓存。在一个实施方式中,L1缓存214被划分成用于缓存程序指令的指令缓存和用于缓存程序数据的数据缓存。

在一个实施方式中,一级缓存214与处理器核102在同一半导体管芯(例如,芯片)上。在一个实施方式中,一级缓存214和二级缓存两者都与处理器核102在同一半导体管芯(例如,芯片)上。与处理器核102在同一半导体管芯(例如,芯片)上的缓存可以被称为内部缓存。替选地,L2缓存216可以在包含处理器核102的半导体管芯的外部。

在一个实施方式中,LLC 218是外部缓存,这意味着该缓存在包含处理器核102的半导体管芯的外部。在一个实施方式中,LLC 218使用eDRAM来实现。可以有多于一个的外部缓存。例如,可以有三级(L3)缓存和四级(L4)缓存。

缓存中的一些或全部可以是专用缓存,这意味着缓存仅能够由处理器核102访问。在一个实施方式中,L1缓存214是专用缓存。在一个实施方式中,L1缓存214和L2缓存216都是专用缓存。LLC 218在一些情况下可以是专用缓存。替选地,缓存中的一些或全部可以是共享缓存,这意味着缓存由处理器核102和另一处理器核共享。例如,LLC 218可以是共享缓存。

图1C中描绘的缓存控制器140可以包含单独的缓存控制器,每个缓存控制器被配置成控制多级缓存存储装置126中的不同级别。例如,缓存控制器140可以包括L1缓存控制器、L2缓存控制器、LLC缓存控制器和主存储器控制器。因此,缓存控制器140可以包含分布在多级缓存存储装置126上的单独的缓存控制器。存储器控制器122的部分可以位于包含处理器核102的同一半导体管芯上,而存储器控制器122的其他部分可以在包含处理器核102的半导体管芯的外部。例如,加载存储单元130可以位于包含处理器核102的半导体管芯上,而LLC缓存控制器可以在半导体管芯外部。类似地,硬件预取电路150可以位于包含处理器核102的同一半导体管芯上,位于包含处理器核102的半导体管芯的外部,或者位于芯片上和位于外部电路的某一组合。

图2示出了包括硬件预取器252的硬件预取电路150,硬件预取器252包括n个硬件预取器:硬件预取器1(hardware pre-fetcher 1,HWPF 1)、硬件预取器2(hardware pre-fetcher 2,HWPF 2)…硬件预取器n(hardware pre-fetcher n,HWPF n),其中n可以是大于2的任何数。硬件预取器HWPF 1到HWPF n中的每一个可以应用不同的预取方案,所述预取方案可以适应处理器核的不同访问模式并且可以在不同时间具有不同的准确度水平。通过以动态方式将这样的不同的硬件预取器应用于多级缓存存储装置126,可以结合不同的预取方案的优点,并且可以增强整体存储器系统性能。

硬件预取电路150包括预取控制电路254,该预取控制电路254可以控制硬件预取器252以通过实现高性能的方式(例如,通过实现高缓存命中率而不过度使用存储器系统资源)来实现预取。硬件预取电路150连接至存储器层级结构106,并且可以接收关于存储器层级结构106的信息,包括关于多级缓存存储装置126的缓存的信息(例如,与缓存有关的性能度量),可以使用这些信息,以根据多级缓存存储装置126中的不同条件动态地改变由硬件预取器252实现的预取。

图3示出了从多级缓存存储装置126的缓存214、216、218发送到预取控制电路254的多个信号360的示例。可从多级缓存存储装置126中的任何附加缓存发送附加信号。信号360可以传达关于多级缓存存储装置126中的条件的信息。例如,可以为多级缓存存储装置126中的一个或更多个缓存发送诸如预取准确度的缓存性能度量,或者可以从中计算预取准确度的数目(例如,发送的预取的数目和好的预取的数目)。附加度量可以反映系统利用率或压力。

在一个实施方式中,可以基于采样间隔来生成性能度量。例如,可以每采样间隔一次地生成值,以反映该间隔的特定性能度量。可以在每个采样间隔从多级缓存存储装置126中的缓存将性能度量值发送至预取控制电路254。多级缓存存储装置126中的每个缓存可以根据其自身的采样间隔进行操作,并且采样间隔对于不同的缓存可以是不同的。例如,L1缓存214的采样间隔可以不同于L2缓存216的采样间隔。在示例中,缓存的采样间隔由从缓存驱逐的预定次数的来定义,并且针对不同的缓存可以使用不同的预定次数(例如,以反映不同的缓存容量)。例如,L2缓存的采样间隔可以延长到其中相对大次数的驱逐(例如,约500次驱逐)发生的时间段,而L1缓存的采样间隔可以延长到其中相对小次数的驱逐(例如,少于100次驱逐)发生的时间段。可以针对多级缓存储存装置126中的每个缓存维持驱逐计数,并且可以使用驱逐计数来识别采样间隔的结束(例如,当驱逐计数达到预定值时,采样间隔结束)。

预取控制电路254可以使用从多级缓存存储装置126接收的性能度量来识别预取中的适当改变并相应地生成控制信号362。控制信号362由预取控制电路254发送至硬件预取器252。每个硬件预取器可以接收单独的控制信号,该单独的控制信号可以传达要由相应的硬件预取器实现的不同改变。例如,每个硬件预取器的侵略性可以由相应的控制信号单独控制。在示例中,预取控制电路向硬件预取器指示程度和距离,以使其调整这些预取参数并且从而适应改变的条件。

图4示出了被配置成生成控制信号362的预取控制电路254的示例实现方式,控制信号362控制硬件预取器252。预取控制电路254包括L1程序自适应电路470,该L1程序自适应电路470被连接成从L1缓存214接收包括L1缓存214的一个或更多个性能度量的信号360a。例如,信号360a可以指示预取准确度的值,或者可以针对L1缓存214的每个采样间隔从其计算预取准确度的值(例如,发送的预取的数目和好的预取的数目)。代替预取准确度或除了预取准确度之外,信号360a可以包括诸如覆盖、迟延、预取引起的缓存污染等其他性能度量。L1程序自适应电路470被配置成基于由信号360a提供的来自L1缓存214的数据来确定对预取的适当改变。例如,L1程序自适应电路470可以被配置成接收L1缓存214的连续采样间隔的预取准确度值,并且被配置成比较这些值以计算预取准确度的任何改变(例如,通过计算第一采样间隔中的预取准确度与第二采样间隔中的预取准确度之间的差来计算准确度增益)。因此,可以将当前预取准确度值与先前预取准确度进行比较,以计算对L1缓存的连续采样间隔之间的预取准确度的改变进行量化的值。可以类似地在采样间隔之间比较其他性能度量,以提供用于预取的动态度量。采样时间段之间的性能度量的改变可以用于识别将由硬件预取器应用的预取方案的适当改变。例如,可以使用表或其他存储的关系来根据一个或更多个性能度量的改变来识别预取参数的适当改变,然后可以将该改变包括在输出信号471中。

预取控制电路254包括L2程序自适应电路472,该L2程序自适应电路472被连接成从L2缓存216接收包括L2缓存216的一个或更多个性能度量的信号360b。例如,信号360b可以指示预取准确度的值,或者可以针对L2缓存216的每个采样间隔从其计算预取准确度的值(例如,发送的预取的数目和好的预取的数目)。代替预取准确度或除了预取准确度之外,信号360b可以包括诸如覆盖、迟延、预取引起的缓存污染等其他性能度量。L2程序自适应电路472被配置成基于由信号360b提供的来自L2缓存216的数据来确定对预取的适当改变。例如,L2程序自适应电路472可以被配置成接收L2缓存216的连续采样间隔的预取准确度值,并且被配置成比较这些值以计算预取准确度的任何改变(例如,计算准确度增益)。因此,可以将当前预取准确度值与先前预取准确度进行比较,以计算对L2缓存的连续采样间隔之间的预取准确度的改变进行量化的值。可以类似地在采样间隔之间比较其他性能度量,以提供预取成功的动态指示。采样时间段之间的性能度量的改变可以用于识别将由硬件预取器应用的预取方案的适当改变。例如,可以使用表或其他存储的关系来根据一个或更多个性能度量的改变来识别预取参数的适当改变,然后可以将该改变包括在输出信号473中。

预取控制电路254包括LLC(末级缓存)程序自适应电路474,该程序自适应电路474被连接成从LLC 218接收包括LLC 218的一个或更多个性能度量的信号360c。例如,信号360c可以指示预取准确度的值,或者可以针对LLC 218的每个采样间隔从其计算预取准确度的值(例如,发送的预取的数目和好的预取的数目)。代替预取准确度或除了预取准确度之外,信号360c可以包括诸如覆盖、迟延、预取引起的缓存污染等其他性能度量。LLC程序自适应电路474被配置成基于由信号360c提供的来自LLC 218的数据来确定对预取的适当改变。例如,LLC程序自适应电路474可以被配置成接收LLC 218的连续采样间隔的预取准确度值,并且被配置成比较这些值以计算预取准确度的任何改变(例如,计算准确度增益)。因此,可以将当前预取准确度值与先前预取准确度进行比较,以计算对LLC缓存的连续采样间隔之间的预取准确度的改变进行量化的值。可以类似地在采样间隔之间比较其他性能度量,以提供预取成功的动态指示。采样时间段之间的性能度量的改变可以用于识别将由硬件预取器应用的预取方案的适当改变。例如,可以使用表或其他存储的关系来根据一个或更多个性能度量的改变来识别预取参数的适当改变,然后可以将该改变包括在输出信号475中。在L2缓存216与LLC 218之间提供附加缓存的情况下,提供对应的附加程序自适应电路以从这样的附加缓存接收性能度量并且生成对应的输出信号以指示预取参数的适当改变。

预取控制电路254包括系统自适应电路478,系统自适应电路478被连接成从多级缓存存储装置126接收包括指示多级缓存存储装置126的资源利用率的一个或更多个性能度量的信号360d。例如,信号360d可以指示与系统利用率有关的一个或更多个值。这样的值可以包括一个或更多个缓存和/或缓冲器的占用率、多级缓存存储装置的部件之间的一条或更多条总线上的流量、或者多级缓存存储装置126中的其他资源的利用率,包括多级缓存存储装置126与主存储器120之间的流量(例如,如由控制主存储器120与多级缓存存储装置126之间的总线的DDR控制器的控制器指示的)。系统自适应电路478被配置成基于与系统利用率有关的值来确定要由硬件预取器应用的预取方案的适当改变(例如,如果系统利用率高,则具有较小侵略性的预取可能是适当的)。例如,可以使用表或其他存储的关系来根据一个或更多个系统利用率值来识别预取参数的适当改变。然后可以将这些改变包括在输出信号479中。

输出信号471、473、475和479被提供给仲裁器482,仲裁器482在由输出信号471、473、475和479中的不同输出信号指示的不同改变之间进行仲裁,以确定硬件预取器252的适当改变,并且相应地生成控制信号362。例如,仲裁器482可以在由系统自适应电路478(例如,基于系统利用率)指示的不同改变与由一个或更多个程序自适应电路(例如,基于预取准确度)指示的改变之间进行仲裁。

图5示出了包括程序自适应电路(L1程序自适应电路470)和系统自适应电路478的预取控制电路254的示例实现方式。其他程序自适应电路(例如,L2程序自适应电路472和LLC程序自适应电路474)可以类似于L1程序自适应电路470来配置,并且未在图5中详细示出。

L1程序自适应电路470被连接成从L1缓存214接收包括L1缓存214的一个或更多个性能度量的信号360a。信号360a可以指示:预取准确度的值;或者可以针对L1缓存214的每个采样间隔从其计算预取准确度的值(例如,发送的预取的数目和好的预取的数目);和/或代替预取准确度或除了预取准确度之外的诸如覆盖、迟延、预取引起的缓存污染的其他性能度量。不同的硬件预取器(例如硬件预取器HWPF 1到HWPF n)根据不同的预取方案在L1缓存214上操作,并且L1程序自适应电路470包括用于每个这样的硬件预取器的策略设置电路。策略1设置电路586为相应的硬件预取器HWPF 1设置策略(例如,通过增加距离和/或程度来设置增加预取侵略性的策略)。策略2设置电路588为相应的硬件预取器HWPF 2设置策略(例如,设置通过增加距离和/或程度来增加预取侵略性的策略)。策略n设置电路570为相应的硬件预取器HWPF n设置策略(例如,设置通过增加距离和/或程度来增加预取侵略性的策略)。根据作用于L1缓存214的硬件预取器的数目,可以在策略2设置电路588与策略n设置电路570之间提供附加策略设置电路。虽然策略设置电路586、588、570都被示为接收信号360a,但是不同的策略设置电路可以使用不同的缓存信息(例如,不同的性能度量)来确定相应的策略。根据选择的策略生成输出信号471a至471n,并且将输出信号471a至471n发送至仲裁器482中的相应的选择器590a、590b…590n。输出信号471a、471b、471n可以包括指示相应硬件预取器的缓存策略的改变(例如,距离和/或程度的改变)的值或以其他方式指示相应硬件预取器的侵略性或其他参数的改变,以应用于L1缓存214。

系统自适应电路478将输出信号479a、479b……479n分别提供给仲裁器482中的选择器590a、590b……590n。输出信号479a、479b……479n可以是相同的(例如,基于多级缓存存储装置126中的总利用率来指示侵略性或其他参数的系统范围的改变),或者可以专用于各个硬件预取器(例如,基于特定预取方案的特性和/或特定资源的利用率)。选择器590a将来自策略1设置电路的输出信号471a与来自系统自适应电路478的输出信号479a进行比较,并且选择这些输出信号之一作为输出362a,输出362a被发送至硬件预取器HWPF 1。

通常,因为L1程序自适应电路470和系统自适应电路478聚焦于不同的度量(例如预取准确度和系统利用率),它们可以分别在输出信号471和479中指示不同的缓存策略(例如不同的侵略性改变)。仲裁器482通过选择适当的缓存策略来解决这些差异。在该示例中,选择器590a、590b……590n从由L1程序自适应电路470和系统自适应电路478提供的值中为每个策略(为每个相应的硬件预取器)选择最小值(例如,选择侵略性较低和/或最小距离和/或程度的那个,或者策略改变较小的那个)。在其他示例中,可以不同地组合不同的策略(例如,通过平均、加权平均或应用某一其他组合)。因此,在该示例中,选择器590b将来自策略2设置电路的输出信号471b与来自系统自适应电路478的输出信号479b进行比较,并且生成输出362b,输出362b被发送至硬件预取器HWPF 2。选择器590n将来自策略n设置电路的输出信号471n与来自系统自适应电路478的输出信号479n进行比较,并且生成输出362n,输出362n被发送至硬件预取器HWPF n。来自选择器590a、590b……590n的输出362a至362n形成控制信号362,信号362被发送至硬件预取器252(如图4所示)。因此,每个硬件预取器HWPF 1至HWPF n接收指示L1缓存的相应预取策略(或策略的改变)的信号,该预取策略基于预取准确度(或其他预取度量)和系统利用率两者。可以类似地动态地更新用于其他缓存的预取策略。

根据本技术的示例实现方式,可以使用三个硬件预取器来将三个不同的预取方案应用于多级缓存存储装置126(例如,在图3至图5中n=3)。虽然可以使用任何数目的硬件预取器,并且硬件预取器可以应用任何预取方案,但是此处描述的三个预取方案可以在不过度复杂的情况下提供不同预取方案的益处(例如,对一些列不同访问模式的适应性)。在其他示例中,可以使用其他预取方案,并且可以使用具有不同方案的不同数目的预取器。

第一硬件预取器(例如HWPF 1)可以是多偏移预取器(Multi-Offset Pre-fetcher,MOP),并且第一预取方案可以是具有由策略1设置电路586设置的预取策略的MOP方案(策略1设置电路586可以改变要由HWPF 1实现的MOP策略)。MOP(例如本例中的HWPF 1)学习各个加载和存储地址的存储器访问模式。例如,当存储器引用源自环路内的加载或存储时,来自该加载或存储的地址可以遵循简单/规则的增大或减小模式。这种模式将具有固定的存储器步幅,其中步幅是对同一加载或存储指令的当前存储器访问请求与先前存储器访问请求之间的差。

MOP预取器检测具有这样的模式的加载和存储指令。一旦通过观察该行为建立了足够的置信度,则预测未来可能被请求的地址位置。MOP通过对其看到具有相同步幅值的同一加载/存储指令的次数进行计数来建立置信度。

MOP可以具有称为模式历史表(Pattern History Table,PHT)的结构,以保持对各个加载或存储的跟踪。每个加载或存储可以索引到PHT中,对照先前的步幅检查其步幅值,并且如果匹配则使其置信度计数器递增。当输入请求不匹配任何当前跟踪时,它将分配新的条目或替换现有的条目。

“模式”可以被定义为给定的步幅和置信度计数器对。在示例中,每个PHT条目可以记录多达两个步幅计数器对(在其他示例中多于两对),因此称为“多偏移”。两个偏移或步幅对应于全局和局部步幅值。最后全局地址是当MOP尝试查找PHT条目时所看到的最后地址,并且其与当前地址的差是全局步幅/增量。每个PHT条目保存有最后地址。PHT条目的当前地址与先前地址之间的差是局部步幅/增量。局部步幅可以是按程序顺序的加载/存储地址之间的差。

当PHT条目中的置信度计数器已经达到阈值时,PHT条目被读出并且被传送到1条目MOP模式生成表(Pattern Generation Table,PGT),该1条目MOP模式生成表然后将在模式中捕获的步幅值加到用于加载/存储的当前存储器地址并且创建新的推测存储器地址。该推测存储器地址是硬件预取地址,并且它被排队到预取缓冲器(Pre-Fetch Buffer,PFB)。一旦该推测存储器地址到达PFB的头部,该推测存储器地址就与来自请求记分板(Request ScoreBoard,RSB)的需求请求进行仲裁。MOP可以最大程度地生成对不同缓存级别的预取请求。

第二硬件预取器(例如HWPF 2)可以是空间存储器流(Spatial MemoryStreaming,SMS)预取器,并且第二预取方案可以是具有由策略2设置电路588设置的预取策略的SMS方案(策略2设置电路588可以改变要由HWPF 2实现的SMS策略)。虽然MOP利用具有加载或存储指令的固定步幅的简单流,但是SMS利用由存储空间的固定大小部分内的空间相关性产生的更复杂的模式。

源自加载/存储的存储器引用可能不具有相对于先前存储器引用的固定步幅或地址偏移。然而,当随时间观察时,源自加载/存储的存储器引用可以与对其他附近存储器位置的引用高度相关。对于硬件预取引擎中的给定加载或存储指令,SMS使用模式训练表(Pattern Training Table,PTT)捕获跨越1KB大小的窗口或感兴趣的“区域”的存储器引用的空间位置。每个需求可以通过散列PC或该区域的物理地址来访问PTT。PTT跟踪多达预定数目的条目(例如,8个条目),其中每个条目跟踪例如1KB区域(64B缓存行)内的16个缓存行访问。如果已被跟踪的加载或存储步进到新区域中,其可以被上传到4条目SMS PGT。除了具有至少一个缓存未命中之外,该PGT可能需要要在1KB区域内访问的最少数目的行以接受上传。SMS预取器可以生成对新区域的预取请求,这些预取请求具有与旧区域中的第一访问相同的相对偏移。

第三硬件预取器(例如,HWPF n)可以是增强型下一行预取器(Enhanced Next-line Pre-fetcher,ENP),并且第三预取方案可以是具有由策略n设置电路570设置的预取策略的ENP方案(策略n设置电路570可以改变要由HWPF n实现的ENP策略)。HWPF n可以被配置成预取多于一个前面的缓存行(例如,在一个示例中被增强成预取多达三个前面的缓存行,在其他示例中多于三行)。其程度可以由输出362n发送的L1自适应策略控制。ENP可以不需要任何训练(例如,可以不需要像MOP和SMS那样的训练)。ENP将来自加载指令的需求未命中的预取请求发送到缓存(例如,L1缓存)中。侵略性可以基于预取器准确度。当将预取器准确度设置为0时,可以禁用ENP。在该示例中,每个周期可以将多达2个条目分配到ENP PGT中。如果ENP PGT条目跨越分配该条目的加载的页面边界,则它可以停止并解除分配。当ENPPGT没有可用的时隙时,它可以丢弃上传,而当它有一个可用的时隙时,可以上传最新的地址。如果是相同的加载未命中地址,则ENP PGT可以消除第二次上传,以避免重复的预取请求。

所有预取发生器可以同时激活(MOP、SMS、ENP)。ENP PGT可以具有最高优先级,随后是SMS PGT与MOP PGT之间的循环仲裁。每个周期最多两个不同的PGT可以排队到PFB。

图6示出了包括预取控制电路254和硬件预取器252与存储器系统105的其他部件的连接的示例实现方式。加载存储单元(Load store unit,LSU)130被连接成接收输入601,在该示例中,输入601包括用于执行的需求(例如,来自处理器核102或处理器核102的某个部件)。在一些示例中,LSU 130可以部分地或全部地在处理器核102中实现,使得这样的请求可以来自处理器核102的另一部件。除了将请求发送至请求记分板(RequestScoreBoard,RSB)602以发送至仲裁器606之外,LSU 130还经由需求查找输出610发送请求以训练硬件预取器252。来自硬件预取器252的请求(例如预取地址)经由输出614被发送至预取缓冲器(pre-fetch buffer,PFB)604。仲裁器606在RSB 602中的请求与PFB 604中的请求之间进行仲裁,并且发送用于执行的请求(例如,向多级缓存存储装置126的缓存发送请求)。在硬件预取器252与PFB 604之间可以有过滤器(未示出),以避免从不同的硬件预取器向PFB 604发送相同的预取请求。为了进一步减少冗余,PFB 604中的条目和RSB 602中的条目可以在发送至仲裁器606之前被交叉检查。

根据本技术,可以基于一个或更多个性能度量的改变以不同的方式调整不同的预取方案。在实施方式中,程度和距离由策略设置电路单独调整。缓存可以在每一行存储指示它是否是预取的行的一个或更多个比特。如果设置了预取比特,则意味着已经预取了相应的行,并且访问了缓存行(在移位之前),预取是好的/有用的并且“良好计数器”可以递增,随后进行预取比特复位。如果在设置预取比特的同时行被移位/逐出,则预取是无用的/不良的,并且“不良预取计数器”可以递增。良好/不良预取计数是当改变预取策略时可以使用的性能度量之一。另一计数器是由每个预取器发送的总预取。可以按照预取器类型来收集和维护缓存预取相关计数器。用于调整程度的性能度量可以包括如以下式中定义的准确度(accuracy)和平衡准确度(accuracy_based):

式1:

式2:

在示例中,在每个采样间隔中,除了程度之外,还可以评估和调整距离。PFB 604存储硬件预取请求以允许RSB处理需求请求。如果不存在到相同地址的现有PFB条目,则预取请求被排队到PFB中以等待仲裁进入缓存(例如,L2缓存)中。预取请求具有比任何其他请求低的优先级,并且仅当没有其他需求请求等待时才选择预取请求。当被选择时,预取请求将与RSB中的飞行请求进行比较,并且如果已经请求了该行,则该预取请求将被丢弃。在RSB中命中的预取需求与总需求计数的比率可以保存在计数器中,并且针对每个预取器单独进行评估。该比率可以在不同时间针对不同预取器获得(例如,当将预取请求发送至L1时针对ENP,以及将预取请求发送至L2时针对MOP和SMS)。表1A和表1B示出了根据增益分数(例如,所测量的采样间隔之间的性能度量的改变)分别在L1缓存和L2缓存中的自适应节流或侵略性的改变(包括程度和距离)。

表1A(L1)

表1B(L2)

MOP和SMS可以用于调整距离的其他计数器是在L2中命中和未命中的预取请求,其作为预取请求被发送至L1或L2(并且被称为pfl2_hit12和pfl2_miss12)。如果命中L2的L2预取的数目大于L2未命中的数目,则这意味着迟到的预取请求的数目正在增加,并且增加距离可能是有帮助的。

MOP或SMS的总L2距离分数可以具有以下分量。

·命中RSB的需求与总需求的比率。(目标可能是减小该值。)

·在L2中命中的预取请求与在L2中未命中的预取请求的比率。

·如果预取程度正在降低,则分配自动负分数。

如果总距离分数为负,则该距离将减小,而如果该分数为正,则该距离将增加,直到它达到最大值。

可以通过为每个预取方案的性能度量分配程度分数来评估预取器性能(例如,MOP、SMS和ENP性能)。分数函数的输入可以是计数器和度量的当前值和先前值。输出可以是基于观察到的增益的度量分数(表2是分数函数的示例)。每个性能度量的分数范围为-4,-2,-1,0,1,2和4。如果使用多于一个的性能度量,则最终分数将是所有度量的分数之和。分数符号指示每个预取器的程度节流方向。

表2

表3总结了可以由L1和L2自适应函数控制的预取器。注意,在该示例中,MOP是向L1、L2和L3缓存发送请求的唯一预取器。在该示例中,ENP仅对L1缓存进行预取,并且SMS仅请求对L2缓存进行预取。

表3

MOP和ENP可以生成对L1缓存的预取,并且MOP和ENP中的每一个都可以具有在L1缓存自适应间隔结束时将确定每个预取器的侵略性状态(程度和距离)的策略。

三个统计计数器可以用于ENP预取。一个计数器用于良好预取计数,一个计数器用于不良预取计数(被带入L1缓存并在被访问之前被逐出的行)。该度量被定义为良好预取与不良预取的比率。另一计数器是发送的预取请求的总数。第二度量被定义为良好预取计数与发送的总预取请求的比率或准确度。监测ENP准确度,并且如果其接近零,则启动等待计数器并且ENP程度增加(例如,递增1)。分数函数可以采用两个度量的先前值和当前值,并且基于增益分配分数。总分数可以是两个单独分数之和。表1A示出了可以如何调整ENP程度。当程度增加时,只有当命中RSB的预取请求的数目大于预定阈值(例如40)时,才可以增加距离,在这种情况下,距离变为距离+2。如果程度正在降低或命中RSB的预取请求小于阈值,则距离将除以2。

可以使用计数器来跟踪ENP对于L1缓存不活动并且PFB不接受其任何预取请求的时间长度。这可以防止ENP停滞并且可以重新激活ENP以避免停滞。

上述式2可以用作MOP的性能度量,并且在一些示例中可以是唯一的性能度量。当调整程度时,可以在节流方向之后,向当前程度加(例如1+/-分数)。

MOP和SMS预取器可以生成对L2缓存的预取请求,并且使用准确度(例如式1)作为用于改变程度的性能度量。可以用于L2缓存的分数函数可以类似于表1B中所示出的内容。然而,距离调节(throttling)可以使用3个不同的距离度量,例如命中RSB的预取、在L2缓存中命中或未命中的预取、程度是增加还是降低以及降低时的距离分数。总距离分数可以是3个分数之和,并且基于分数符号,为SMS和MOP二者进行距离调节。作为快速参考,表4总结了程度和距离的同时调整。

表4

图7示出了如前所述实现的硬件预取器252的示例,其中HWPF 1被配置为MOP、HWPF2被配置为SMS预取器并且HWPF n被配置为ENP,以捕获不同的存储器访问模式。硬件预取器252可以观察从LSU 130加载和存储需求请求流水线到可缓存存储器(例如,如来自LSU 130的需求查找输出610所示在LSU 130与RSB 602之间)的地址流量,并且可以被训练以预测将来的请求。被配置为MOP的HWPF 1使用模式历史表或PHT 720捕获每个模式一个增量。被配置为SMS预取器的HWPF 2跟踪其模式训练表或PTT 724中的一个或更多个区域(例如1KB区域),并且流传输预取请求。被配置为ENP的HWPF n仅仅发送对后续行的预取请求,并且与MOP或SMS不同,HWPF n不需要任何训练或单独的表,因此在该配置中,HWPF n的表728可能未被使用。硬件预取器可以被重新配置成应用不同的预取方案,因此例如如果HWPF n被重新配置为MOP,则表728可以被配置为PHT。

可以为每个硬件预取引擎HWPF 1至HWPF n维持置信度水平,并且可以基于对硬件预取引擎如何有效地预取数据所进行的测量来动态地调整置信度水平。使缓存命中的有效预取请求提高了置信度,而无效预取请求降低了置信度。高置信度转化为引擎的更多预取活动。低置信度可能意味着引擎已经放弃预取正在进行的模式并且正在启动新的模式。一旦已经建立了足够的置信度并且已经“学习”了地址模式,就将该模式上传到模式生成表(Pattern Generation Table,PGT),该模式生成表可以存储在适当的位置(例如,存储在L2缓存中)。PGT向相应的缓存生成对未来加载和存储需求请求可能需要的地址的一系列请求。如果在较高级别缓存(例如L1缓存或L2缓存)中存在未命中,则可以从较低级别缓存(例如L3缓存)或主存储器中检索数据并且将该数据分配在较高级别缓存中(例如在L2缓存中或者在L1缓存和L2缓存两者中)。

每个硬件预取器包括相应的PGT。HWPF 1包括MOP PGT 772,HWPF 2包括SMS PGT726,并且HWPF n包括ENP PGT 730。PGT可以驻留在L2C中,并且可以生成被发送至仲裁器732的预取请求。HWPF n的ENP PGT可以在仲裁器732处具有优先级,并且其他两个预取器可以以循环方式发出请求。注意,在预取控制电路254中设置每个预取器可以发出多少预取请求或者预取器可以提前多远预取的限制。

图8示出了被配置成针对三个预取方案(例如,如前所述,其中HWPF 1被配置为MOP、HWPF 2被配置为SMS预取器并且HWPF n被配置为ENP以捕获不同的存储器访问模式)实现系统自适应的系统自适应电路478的示例。系统自适应电路478包括对应于由这三个硬件预取器实现的三个预取方案的三个系统自适应单元850、852、854(在其他示例中,可以例如以与预取器一一对应的关系提供不同数目的系统自适应单元)。系统自适应单元850被配置成生成输出信号479a,该输出信号479a由选择器590a与输出信号471a组合以生成到硬件预取器HWPF 1(例如,被配置为MOP)的输出362a(如先前所示)。系统自适应单元850被配置成基于从信号360d获得的利用率参数来生成输出信号479a以指示用于相应硬件预取器的适当策略(或策略改变)(例如,用于HWPF 1的MOP策略或策略改变)。可以从信号360d中提取不同的参数(在其他示例中,可以为不同的参数提供专用信号),并且可以分别对这些参数进行评估以获得合适的策略。评估单元856可以针对例如L2缓存参数(例如占用率)的第一参数,并且可以从信号360d中提取L2缓存数据,并且基于这样的参数或参数的改变,可以生成合适的预取策略的指示(例如,随着L2缓存占用率降低或增加,将MOP策略改变为更具有侵略性或更不具有侵略性)。评估单元858可以针对例如L3缓存参数的第二参数,并且可以从信号360d中提取L3缓存数据,并且基于这些参数或参数的改变,可以生成合适的预取策略的指示(例如,随着L3缓存占用降低或增加,将MOP策略改变为更具有侵略性或更不具有侵略性)。评估单元860可以针对例如与总线(例如DDR总线)和/或总线控制器(例如DDR总线控制器)相关联的总线参数的第三参数,并且基于这样的参数或参数的改变,可以生成合适的预取策略的指示(例如,随着总线和/或总线控制器利用率降低或增加,将MOP策略改变为更具有侵略性或更不具有侵略性)。来自评估单元856、858、860的指示被发送至选择器862,选择器862选择指示以设置在输出信号479a中。例如,选择器862可以选择三个指示中的表示最小侵略性或最小侵略性改变的指示。在其他示例中,可以基于不同的参数提供多于三个的不同指示。可以使用其他选择来选择输出信号479a的指示(例如,平均、加权平均、或某一其他组合)。

系统自适应单元852和854可以配置有与系统自适应单元850的评估单元类似的评估单元。可以评估不同的参数,并且可以根据相应的预取策略在不同的系统自适应单元中使用不同的评估标准。系统自适应单元的数目可以等于硬件预取器的数目(例如,图5的示例中的n),或者可以不同(例如,一个系统自适应单元可以为多于一个硬件预取器生成侵略性指示)。

应当理解,上述示例用于说明,并且本技术的各方面可以以许多不同的方式来实现。例如,可以使用各种性能度量来评估预取。除了预取准确度之外,或者代替使用预取准确度,可以使用一个或更多个其他性能度量,并且分配相应的分数。例如,可以使用诸如预取覆盖、预取迟延(prefetch lateness)、需求命中率或需求命中预取率的一个或更多个性能度量来代替预取准确度,或者可以使用两个或更多个性能度量的组合。总体性能分数可以是基于不同性能度量的各个分数之和(或者可以是从组合各个性能度量获得的平均值、均值、中值或者其他值)。性能度量及其定义的示例在式3至式6中提供:

式3:

式4:

式5:

式6:

在示例中,可以使用不同的硬件预取器。例如,可以通过适当的硬件预取器来执行对诸如简单增量模式、区域预取和下一行预取的常见应用模式的检测。可以通过简单地利用MOP的现有硬件结构来添加支持多个增量模式的复杂多偏移预取器。这可以减少用于添加完全不同的预取器的额外硬件成本,并且可以增加预取引擎的更多覆盖范围。可以修改MOP以保持对附加的简单流的跟踪。这对于附加的检测覆盖可能需要最小的硬件改变。两个或更多个这样的流(例如来自两个或更多个模式生成器或PGEN)之间的仲裁可以是循环的。另外,诸如顺序预取器或多步幅预取器的其他预取器可以被添加或替换上述一个或更多个预取器。预取控制电路与硬件预取器之间的通信信道可以保持相同。相应的性能度量仍然可以被传送到预取控制电路,以用于确定侵略性水平。

在示例中,可以使用包含关于性能度量计数器的历史的更多信息的度量。例如,当开始对新的采样间隔进行计数时,可以保持来自一个或更多个较早的采样间隔的值的一部分,而不是重置计数器。

本文描述的技术可以使用硬件、软件或者硬件与软件两者的组合来实现。所使用的软件存储在上述处理器可读存储设备中的一个或更多个上,以对处理器中的一个或更多个进行编程来执行本文描述的功能。处理器可读存储设备可以包括计算机可读介质,例如易失性介质和非易失性介质、可移除介质和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机可读存储介质和通信介质。计算机可读存储介质可以以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术来实现。计算机可读存储介质的示例包括RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字多功能盘(digital versatile disk,DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或者可以用于存储所需信息并可以由计算机访问的任何其他介质。计算机可读介质不包括传播的、调制的或瞬时的信号。

通信介质通常在诸如载波或其他传输机制的传播、调制或瞬态数据信号中实现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传递介质。术语“调制数据信号”是指以在信号中编码信息的方式设置或改变其一个或更多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接的有线介质,以及诸如RF和其他无线介质的无线介质。上述任何组合也包括在计算机可读介质的范围内。

在替选实施方式中,软件中的一些或全部可以由专用硬件逻辑部件代替。例如但不限于,可以使用的硬件逻辑部件的说明性类型包括现场可编程门阵列(Field-programmable Gate Array,FPGA)、专用集成电路(Application-specific IntegratedCircuit,ASIC)、专用标准产品(Application-specific Standard Product,ASSP)、片上系统的系统(System-on-a-chip system,SOC)、复杂可编程逻辑器件(Complex ProgrammableLogic Device,CPLD)、专用计算机等。在一个实施方式中,实现一个或更多个实施方式的软件(存储在存储设备上)用于对一个或更多个处理器进行编程。一个或更多个处理器可以与一个或更多个计算机可读介质/存储设备、外围设备和/或通信接口通信。

应当理解,本主题可以以许多不同的形式实施,并且不应当被解释为限于本文阐述的实施方式。相反,提供这些实施方式使得本主题将是彻底和完整的,并且将向本领域技术人员充分传达本公开内容。实际上,本主题旨在涵盖这些实施方式的替选方式、修改和等同物,这些替选方式、修改和等同物包括在由所附权利要求限定的本主题的范围和精神内。此外,在本主题的以下详细描述中,阐述了许多具体细节以提供对本主题的透彻理解。然而,本领域普通技术人员将清楚,可以在没有这样的特定细节的情况下实践本主题。

本文参考根据本公开内容的实施方式的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本公开内容的各方面。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程指令执行装置的处理器执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的机构。

已出于说明和描述的目的呈现了本公开内容的描述,但本公开内容的描述并不旨在穷举或将本公开内容限制为所公开的形式。在不脱离本公开内容的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是明显的。为了最好地解释本公开内容的原理和实际应用,并且为了使本领域的其他普通技术人员能够理解具有适合于预期的特定用途的各种修改的本公内容,选择并描述了本公开内容的各方面。

对于本文而言,与所公开的技术相关联的每个过程可以由一个或更多个计算设备连续地执行。过程中的每个步骤可以由与其他步骤中使用的计算设备相同或不同的计算设备来执行,并且每个步骤不必由单个计算设备来执行。

虽然已经用结构特征和/或方法动作专用的语言描述了本主题,但是应当理解,所附权利要求中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式而公开的。

技术分类

06120115627311