CN100501739C - 利用流预取历史来改进数据预取性能的方法和系统 - Google Patents
利用流预取历史来改进数据预取性能的方法和系统 Download PDFInfo
- Publication number
- CN100501739C CN100501739C CNB2007100082726A CN200710008272A CN100501739C CN 100501739 C CN100501739 C CN 100501739C CN B2007100082726 A CNB2007100082726 A CN B2007100082726A CN 200710008272 A CN200710008272 A CN 200710008272A CN 100501739 C CN100501739 C CN 100501739C
- Authority
- CN
- China
- Prior art keywords
- data stream
- attribute information
- stream
- write down
- data
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
Abstract
公开了一种用于在数据处理系统中预取数据的计算机实现的方法、系统和计算机程序产品。在数据处理系统中预取数据的计算机实现的方法包括:通过将每个先前数据流的属性与导致数据流分配的存储访问指令相关联而产生先前数据流的属性信息;然后记录所产生的属性信息。访问所记录的属性信息;以及利用所访问的记录的属性信息来修改新数据流的行为。
Description
技术领域
本发明一般涉及数据处理领域,更具体来说,涉及用于在数据处理系统中预取数据的计算机实现的方法、系统和计算机程序产品。
背景技术
在现代数据处理系统中已采用了硬件数据预取器,以在从较低级别的高速缓存和其他数据存储介质中取回数据时预测并减少大量的等待时间。该等待时间是从数据存储介质中取回数据所需要的处理器周期的总数,其已经有了快速的增加,这是因为处理器频率提高但在访问数据存储介质所需要的时间方面没有相应的改进。
针对在等待时间方面的快速增加,已采用流硬件数据预取器来检测数据流(以单调上升或单调下降方式引用邻近的高速缓存块集合的存储引用的任何序列)并开始将数据预取到预定深度,即处理系统当前加载的数据之前的预定数量的高速缓存块。流的检测要求对于相继行的至少两个高速缓存丢失(miss);并且为了避免预取那些可能不需要的高速缓存行,对于新近检测到的流进行的预取通常适当地开始,并且预取的深度逐渐上升直至达到指定深度为止。
现代流预取器可以通过使用多个流寄存器来同时跟踪和预取多个流,其中每个流寄存器包含标识当前数据流状态的地址以及其它信息,例如流的方向、从流开始起消耗的行的数量、以及已产生但尚未经调度的预取。
尽管以上描述的预取方法至今仍然工作良好,但启动损失(两个初始丢失)和上升阶段(其中预取深度可能不足以确保将数据按时递送到应用)具有相关联的性能损失,该性能损失随着存储器等待时间的增加而增加。旨在缩短媒体流长度的应用仅略微受益于数据预取器,或者因为启动损失所致而根本没有受益。对于这种情况,期望尽可能地减少启动损失。
数据流预取器保持一些如前所述当前定义在其流寄存器的任何一个中的关于数据流的历史信息,即当前数据地址、方向、待预取的下一行以及已产生但尚未发送的未决预取。然而,当新的流替代当前流的时候,该信息在这些字段被新的流分配覆盖时丢失。
在应用代码的连续迭代中保存这些历史信息中的一些(例如启动数据地址)以在下一次检测到相同数据流时使用将有助于实现降低启动损失的目的。然而,对于典型应用,这将需要很大的表格来有效地应对在典型应用期间所产生的大量数据流。例如,一个双重嵌套(double-nested)或三层嵌套循环结构单独就能很容易地产生成千个流。
该问题的一种解决方案是允许编译器在目标代码中插入特定指令,以引导硬件预取引擎在指定地址开始一个流并且迅速上升至期望深度。然而,该方法要求对应用进行重新编译,并且局限于编译器在编译时间所具有的关于流以及其高速缓存的特性的不完备知识(因为阵列大小通常是随运行时间变化的变量)。
因此,希望提供一种机制来改进数据处理系统中的预取性能,其对于没有利用流预取指令进行编译过的现有二进制很有效,从而在该数据处理系统中实现数据预取硬件更好的一般性使用。
发明内容
本发明提供一种用于在数据处理系统中预取数据的计算机实现的方法、系统和计算机程序产品。用于在数据处理系统中预取数据的计算机实现的方法包括:通过将每个先前数据流的属性与引起该数据流分配的存储器访问指令相关联而产生先前数据流的属性信息,然后记录所产生的属性信息。访问所记录的属性信息,并且利用所访问的记录的属性信息来修改新数据流的特性。
附图说明
在所附权利要求中对确信为本发明特有的新颖特征进行了阐述。然而,当结合附图进行阅读时,参考示意性实施方式的下列详细描述将可以更好地理解本发明自身以及使用的优选模式、进一步的目的及其优点,附图中:
图1示出了可以在其中实现本发明若干方面的数据处理系统的网络的示意图;
图2是可以在其中实现本发明若干方面的数据处理系统的框图;
图3示意性示出了根据本发明示例性实施方式的数据流预取器的框图;
图4是示意性示出了根据本发明示例性实施方式的图3中数据流历史表中每个索引处所存储的信息的图;
图5示出了对于二维网格的Jacobi解算器的一般实现,以帮助解释本发明的若干方面;以及
图6是示出了根据本发明示例性实施方式的用于在数据处理系统中预取数据的计算机实现的方法的流程图。
具体实施方式
现在参考附图特别是参考图1-2,提供了在其中可以实现本发明实施方式的数据处理环境的示例图。应当理解,图1-2仅为示例性的,其不意在声明或暗示对在其中可以实现本发明的若干方面或实施方式的环境的任何限定。在不脱离本发明的实质和范围的情况下,可以对所示出的环境进行很多种修改。
现在参考附图,图1示出了可以在其中实现本发明若干方面的数据处理系统网络的图示表述。网络数据处理系统100是一种计算机网络,在该网络中可以实现本发明的若干实施方式。网络数据处理系统100包含网络102,其是用于在网络数据处理系统100内彼此连接的各种装置和计算机之间提供通信链路的介质。网络102可以包括诸如有线、无线通信链路或光缆之类的连接。
在所示出的例子中,服务器104和服务器106以及存储单元108连接至网络102。此外,客户机110、112和114连接至网络102。这些客户机110、112和114可以是例如个人计算机或网络计算机。在所示出的例子中,服务器104向客户机110、112和114提供诸如引导文件、操作系统镜像以及应用之类的数据。在此例中,客户机110、112和114是服务器104的客户机。网络数据处理系统100可以包括未示出的附加的服务器、客户机以及其他装置。
在所示出的例子中,网络数据处理系统100是因特网,其中网络102表示的是利用传输控制协议/网际协议(TCP/IP)协议组进行彼此间通信的网络和网关的世界范围的集合。在因特网的核心处是在主节点或主机(包括成千的对数据和消息进行路由的商业、政府、教育和其他计算机系统)之间的高速数据通信线路的骨干网。当然,网络数据处理系统100还可以实现为若干不同类型的网络,例如内联网、局域网(LAN)或广域网(WAN)。图1只意在进行示例,而不意在对本发明的不同实施方式进行结构性限制。
现在参考图2,示出了可以在其中实现本发明若干方面的数据处理系统的框图。数据处理系统200是计算机的例子,例如图1中的服务器104或客户机110,实现针对本发明实施方式的处理的计算机可用代码或指令可以位于该数据处理系统200中。
在所示出的例子中,数据处理系统200采用集线器体系结构,该集线器体系结构包括北桥接器和存储器控制器集线器(NB/MCH)202,以及南桥接器和输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器208以及图形处理器210连接至NB/MCH202。图形处理器210可以通过加速图形端口(AGP)连接至NB/MCH202。
在所示出的例子中,局域网(LAN)适配器212连接至SB/ICH204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口和其他通信端口232,以及PCI/PCIe设备234通过总线238和总线240连接至SB/ICH 204。PCI/PCIe设备可以包括例如以太网适配器、附加卡以及用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用。ROM 224可以是例如快闪二进制输入/输出系统(BIOS)。
HDD 226和CD-ROM驱动器230通过总线240连接至SB/ICH204。HDD 226和CD-ROM驱动器230可以使用例如电子集成驱动器(IDE)接口或串行高级技术附件(SATA)接口。超级I/O(SIO)装置236可以连接至SB/ICH 204。
操作系统在处理单元206上运行,协调并提供对图2中数据处理系统200内各种部件的控制。作为客户机,操作系统可以是商业上可获得的操作系统,例如 XP(M icrosoft和Windows是微软公司在美国和/或其他国家的商标)。面向对象的编程系统(例如JavaTM编程系统)可以结合该操作系统运行,并且从在数据处理系统200上执行的JavaTM程序或应用向操作系统提供调用(Java是SunMicrosystems公司在美国和/或其他国家的商标)。
作为服务器,数据处理系统200可以是例如 eServerTM 计算机系统,其运行高级交互执行操作系统或操作系统(eServer、pSeries和AIX是国际商业机器公司在美国和/或其他国家的商标,而LINUX是Linus Torvalds在美国和/或其他国家的商标)。数据处理系统200可以是对称多处理器(SMP)系统,其在处理单元206中包括多个处理器。可选地,可以使用单独的处理器系统。
用于操作系统、面向对象的编程系统和应用或程序的指令位于诸如HDD 226的存储装置中,可以加载到主存储器208中以由处理单元206来执行。处理单元206利用计算机可用程序代码来执行针对本发明实施方式的处理,其中所述计算机可用程序代码可位于诸如主存储器208、ROM 224之类的存储器中,或位于一个或多个外围装置226和230中。
本领域普通技术人员将可以理解的是,图1-2中的硬件可以根据实现的不同而发生改变。其他内部硬件或外围装置,例如闪存、等同的非易失性存储器或光盘驱动器等,可以附加地被使用或替代图1-2中示出的硬件。而且,本发明的处理可以应用到多处理器数据处理系统中。
在某些示意性实例中,数据处理系统200可以是个人数字助理(PIDA),其配备有闪存以提供用于存储操作系统文件和/或用户生成数据的非易失性存储器。
总线系统可以包括一个或多个总线,例如如图2所示的总线238或总线240。当然,可以利用任何类型的通信构造或体系结构来实现该总线系统,用以在连接于该构造或体系结构的不同部件或装置之间提供数据传送。通信单元可以包括一个或多个用于传送和接收数据的装置,例如图2的调制解调器222或网络适配器212。存储器可以是例如图2中的主存储器208、ROM 224或诸如通过NB/MCH 202找到的高速缓存。图1-2中所示出的实例和上述实例不意在暗示任何结构性限制。例如,数据处理系统200还可以是除PDA形式之外的平板计算机、膝上型计算机或者电话装置。
本发明提供一种在数据处理系统中预取数据的计算机实现方法、系统和计算机程序产品。根据本发明,数据流的简要历史信息保存在数据流历史表(DSHT)中,并用于在一般的数据处理设置中极大地提高数据流预取器的效率。更具体来说,本发明在数据流历史表中记录由一个或多个指令产生的数据流的特定属性。通过使得流进行分配的存储访问指令的地址来对该表中的信息加索引,或者更一般地,通过地址的散列(hash)来对该表中的信息加索引。每当流预取器例示出新的数据流时,通过访问并使用DSHT中的信息来改善该流预取器的响应。
DSHT中的信息通过指示所述流可能的方向和长度以及针对当前指令块的临时流的可能数量来修改新流的启动和稳态特性。然后,较后的信息可用于调节每个流的预取深度,从而使性能最大化,同时使可能不消耗(需要)的行的预取最小化。然后,当程序消耗流的时候,数据流预取器利用最近的信息来更新DSHT。本发明因此为数据流预取器提供了一种自适应能力,其改进了未经重编译的应用的性能使其包括软件数据预取控制指令。除了引导预取器的现有软件提示之外,还提供了一种强大的能力,其中可以使用编译器和应用编码器来优化应用的性能。
图3是示意性示出根据本发明示例性实施方式的数据流预取器的框图。预取器整体上由参考数字300来表示,该预取器包括具有深度控制的流预取器,例如,如2005年2月10日提交的共同未决以及共同转让的美国专利申请序列号No.11/054,889(代理人卷号No.AUS920041083US1)和11/054,871(代理人卷号No.AUS920041084US1)所述,其公开在此通过参考引入。
在图3中通过流寄存器和预取表302以及流控制逻辑块304来表示流预取硬件,该流预取硬件基于数据操作数加载地址306以及相关高速缓存丢失信息308和与数据操作数的高速缓存行有关的加载丢失队列(LMQ)信息310来获取和预取数据流。
根据本发明,数据流历史表(DSHT)312以及相关的控制逻辑整体上由参考数字314来表示,其包括在预取器300中。DSHT 312保存与指令范围相对应的一个或多个流的简明特征,并通过316所表示的该指令范围的地址散列来加索引。
在本发明的示例式实施方式中,该散列包括指令地址位42至55。在此情况中,256B指令块(例如32个四字节指令)中所有加载指令将由DSHT 312中的一个条目来表示,并且该表将用16384个条目唯一地覆盖达4MB大小的程序。需要注意的是,较大的程序在表中将没有唯一的映射,但即使在发生混淆这种很稀少的情况下,对程序也没有功能上的副作用;唯一的结果是涉及应用的性能。以此方式,其与分支历史表相似。具有较少数量条目(例如4096个条目)的表将仍然为大量的工作量提供正面结果,因此可以对照平均性能改进而权衡所述表的大小。
图4是示意性示出根据本发明示例性实施方式的DSHT 312中每个索引所存储的信息的图。该索引通常由参考数字400来表示,并且包括流方向字段402、每个流的饱和行计数字段404以及饱和并发流计数字段406。后两个字段的宽度将取决于实现细节,但通常可以分别是至少4比特宽和3比特宽。
当流预取分配逻辑304确定应当在流寄存器302中建立新的流条目时,那么除了其正常的动作之外,将指令地址散列316用于在DSHT312中加索引以访问对下述预取流的方式进行修改的信息。DSHT访问被保存在DSHT输出缓冲器318中直至出现了对不同指令块的表访问为止。如果在遇到另一个指令块之前在同一指令块中启动了多个流(对于循环结构来说通常是这样的情况),那么利用并发流逻辑320对此块中流的数量进行计数。在此情况中,DSHT输出缓冲器318保护与该指令范围相对应的先前信息使其免受由最近创建的流所导致的任何更新。随着应用的进展以及流的消耗,利用当前流长度(高速缓存行)、方向以及并发流计数来更新DSHT 312,如326所示。
根据包含启动流的加载指令的代码块来识别流是非常有效的,因为大多数流自身以循环结构(应用代码中的for、while、或do结构)出现。对于很多应用来说,相对较少的循环集合在应用执行时产生大量的流实例;即使每次应用执行循环嵌套时流的开始数据地址和特定特征可能发生改变,经常的情况是循环中流的关键特征与最后一次执行时相似。换言之,流的方向、长度和消耗速率的最佳预测是最为接近的过去。因此,如果保存了诸如流方向、长度和并发流的数量(其影响消耗速率)之类的关键特征,那么它们可以非常有效地推测性地用于下一次循环调用。
为了解释起见,现在参考图5,其示出了对二维网格的Jacobi(雅可比)解算机的一般实现,以帮助解释本发明的若干方面。尽管图5中示出的代码是整个应用的一小部分代码,但大部分的计算时间将花费在该进程中。
具体来说,在do while循环中有两个关键的嵌套循环集合;第一嵌套的do j=1,m和do i=1,n仅将阵列从阵列u复制到阵列uold。第二循环(也是计算上更复杂的循环)利用阵列uold中的旧求解以及阵列f中的值在网格上执行Jacobi迭代。需要注意的是,内部i循环的每次迭代具有开始于阵列中不同位置的数据流,但其具有相同的方向(上升)和长度(n)。而且,第一循环集合最多具有一个流,而第二循环集合具有与阵列f和uold相关联的多个流。
对于第一循环,基于DSHT中一个的并发流计数,流分配逻辑将进行更深的预取(即在当前被加载的行之前预取更多的行),以避免由于存储器等待时间而导致的拖延。第二循环中流的确切数量将是阵列大小和机器高速缓存大小的函数,但是对于程序的给定实例而言,并发流的数量对于代码进入的大多数次数来说是保持相同的。例如,如果机器高速缓存的大小不足以包含在阵列的4个列(uold(:,j-1),uold(:,j),uold(:,j+1),f(:,j),其中冒号表示i从1到n)中的数据,那么在内部循环i的每次迭代中就有四个流有效。在此情况中,流分配逻辑对每个流的预取深度将减小,从而结合的来自所有四个流的预取将使等待时间与存储器匹配。没有此信息的话,硬件将使用相同深度来预取所有的流,这将导致数量无效的预取请求或使得性能折衷。需要注意的是,对于频繁地遇到仅跨越几个高速缓存行的系列加载的应用而言,DSHT将把应用到这些初生流上的预取配置文件调节到最小或零。
图6是示出了根据本发明示例性实施方式的用于在数据处理系统中预取数据的计算机实现的方法的流程图。该方法整体上由参考数字600来表示,其描述了程序的执行过程。
该方法开始于获取并解码指令(步骤602),并且确定是否为加载(步骤604)。如果其不是加载(步骤604的输出为否),那么该方法返回步骤602。如果其是加载(步骤604的输出为是),那么将加载指令的地址位的子集随同实际数据地址一起发送至流预取单元(步骤606)。
作为流预取器正常动作的一部分,针对每个流寄存器中的所有当前流数据地址来运行加载数据地址,并且确定是否存在匹配(步骤608)。如果存在匹配(在步骤608的输出为是),那么流的状态是前进的并且产生预取(步骤610),并且利用当前流属性以及并发流计数信息来更新所述DSHT(步骤624)。
在不存在匹配的情况下(在步骤608的输出为否),确定加载地址是否进一步满足命中(hit)/丢失信息(步骤612),并且在丢失的情况下(在步骤612的输出为否),针对加载丢失队列(LMQ)中的当前地址进行比较(步骤614)。如果所述地址对应于不是当前流一部分的行并且没有使L1高速缓存或LMQ丢失(在步骤612或614的输出为是),那么该方法返回步骤602。如果该地址对应于不是当前流一部分的行并且已使L1数据高速缓存和LMQ丢失(在步骤614的输出为否),那么例示出新的流,并且进行检查以查看对应于加载指令的指令地址散列是否与在其之前的那个相同(步骤616)。如果不相同(在步骤616的输出为否),那么利用指令地址位作为索引来访问DSHT,以读出从早期执行这些指令起就已经对应于这些指令块的先前流的信息,并且清除并发流计数(步骤618)。
如果指令散列与先前的那个匹配(在步骤616的输出为是),那么从缓存器中获取期望的信息,其中该缓存器包含对DSHT的最新访问以及指示在对应于该指令块的DSHT中增加的针对该条目的流的数量的字段(步骤620)。来自缓存器的信息用于开始(或者可能抑制)对流的预取。在启动了流或更新现存流之后,分配流(步骤622),在对应于启动加载指令的指令散列的位置处更新DSHT(步骤624)并且该方法返回步骤602。
本发明因此提供了一种在数据处理系统中预取数据的计算机实现的方法、系统和计算机程序产品。用于在数据处理系统中预取数据的计算机实现的方法包括:通过将每个先前数据流的属性与导致数据流分配的存储访问指令相关联而产生先前数据流的属性信息,然后记录所产生的属性信息。访问所记录的属性信息,并且利用所访问的记录的属性信息来修改新数据流的特性。
本发明可以采用完全硬件形式的实施方式、完全软件形式的实施方式或包含硬件和软件单元二者的实施方式。在优选的实施方式中,本发明以软件来实现,其包括但不限于固件、驻留软件、微代码等等。
而且,本发明可以采用计算机程序产品的形式,可以从提供程序代码的计算机可用或计算机可读介质来存取该计算机程序产品,其中该程序代码可以由计算机或任何指令执行系统使用或与之相联系。为了说明起见,计算机可用或计算机可读介质可以是任何能够包含、存储、通信、传播或传送由指令执行系统、设备或装置使用或与之相联系的程序的有形设备。
该介质可以是电子、磁性、光学、电磁、红外或半导体系统(或设备或装置)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。光盘的当前例子包括压缩盘-只读存储器(CD-ROM)压缩盘-读/写存储器(CD-R/W)和DVD。
适用于存储和/或执行程序代码的数据处理系统将包括至少一个通过系统总线直接或间接耦合至存储器单元的处理器。该存储器单元可以包括程序代码实际执行期间所使用的本地存储器、海量存储器以及为至少某些程序代码提供临时存储的高速缓存存储器,以减少在执行期间必须从海量存储器中获取代码的次数。
输入/输出或I/O装置(包括但不限于键盘、显示器、定位装置等)可以直接或通过介入I/O控制器来耦合至系统。
网络适配器也可以耦合至该系统,以使得数据处理系统能够通过介入私用或公共网络而耦合至其他数据处理系统或远程打印机或存储装置。调制解调器、电缆调制解调器以及以太网卡仅是当前可用类型的网络适配器中的一些。
为了示意和描述的目的而呈现了本发明的描述,并不意在穷尽或以所公开的方式来限制本发明。很多改动和变化对于本领域技术人员来说都是显而易见的。选择并描述这些实施方式是为了最好地解释本发明的原理、实际应用,并使得其他本领域技术人员能够,其实施方式具有适用于所构思的特定使用的各种变化。
Claims (11)
1.一种用于在数据处理系统中预取数据的计算机实现的方法,该方法包括:
通过将每个先前数据流的属性与导致所述先前数据流的分配的数据存储访问指令相关联而产生所述先前数据流的属性信息,所述属性信息包括数据流的方向、长度和并发流数量,其中,根据不重叠的邻近指令组对先前数据流的数据流属性进行分组,该不重叠的邻近指令组包含导致所述先前数据流的分配的所述数据存储访问指令;将每个指令组中流的数量相加以找到针对每个指令组的先前数据流的并发流数量,用于指示针对处于执行状态的应用的临时流的可能数量;
记录所述产生的属性信息;
访问所述已记录的属性信息;以及
利用所述访问的已记录的属性信息来修改新数据流的特性;
所述新数据流的特性包括新数据流的启动、稳定和预取深度特性。
2.根据权利要求1所述的计算机实现的方法,其中,利用所述访问的已记录的属性信息来修改新数据流的特性包括:
基于临时流的可能长度和可能数量来调节对所述新数据流进行预取的深度。
3.根据权利要求1所述的计算机实现的方法,其中,利用所述访问的已记录的属性信息来修改新数据流的特性包括:
通过指示所述新数据流的可能方向和可能长度来修改所述新数据流的启动和稳态特性。
4.根据权利要求1所述的计算机实现的方法,进一步包括:
当消耗了新的数据流时利用最近的信息来更新所述已记录的属性信息。
5.根据权利要求1所述的计算机实现的方法,其中,记录所述产生的属性信息包括:
在数据流历史表中记录至少一个先前数据流的属性信息,该至少一个先前数据流由指令组产生。
6.根据权利要求5所述的计算机实现的方法,进一步包括:
通过在首次分配所述至少一个先前数据流时的相关指令组的地址散列来在所述数据流历史表中对所述已记录的属性信息加索引,并且其中,访问所述已记录的属性信息包括:
利用所述索引来访问所述已记录的属性信息。
7.根据权利要求6所述的计算机实现的方法,其中,所述索引包括流方向字段、每个流的饱和行计数字段以及饱和并发流计数字段。
8.一种用于在数据处理系统中预取数据的数据预取器,包括:
属性产生机构,用于通过将每个先前数据流的属性与导致所述先前数据流的分配的数据存储访问指令相关联而产生所述先前数据流的属性信息,所述属性信息包括数据流的方向、长度和并发流数量,其中,所述属性产生机构包括:
分组机构,用于根据不重叠的邻近指令组对先前数据流的数据流属性进行分组,其中该不重叠的邻近指令组包含导致所述先前数据流的分配的所述数据存储访问指令;
求和机构,用于将每个指令组中流的数量相加以找到针对每个指令组的先前数据流的并发流数量,用于指示针对处于执行状态的应用的临时流的可能数量;
数据流历史表,用于记录所述产生的属性信息;
访问机构,用于访问所述数据流历史表中的所述已记录的属性信息;以及
修改机构,用于利用所述访问的已记录的属性信息来修改新数据流的特性;
所述新数据流的特性包括新数据流的启动、稳定和预取深度特性。
9.根据权利要求8所述的数据预取器,其中,所述修改机构包括:
用于基于临时流的可能长度和可能数量来调节对新数据流进行预取的深度的机构。
10.根据权利要求8所述的数据预取器,进一步包括:
更新机构,用于当消耗了新的数据流时利用最近的信息来更新所述已记录的属性信息。
11.根据权利要求8所述的数据预取器,进一步包括:
索引机构,用于通过在首次分配至少一个先前数据流时的相关指令组的地址散列来在所述数据流历史表中对所述已记录的属性信息加索引,其中,所述访问机构利用所述索引来访问所述已记录的属性信息,并且其中,所述索引包括流方向字段、每个流的饱和行计数字段以及饱和并发流计数字段。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/364,620 | 2006-02-28 | ||
US11/364,620 US7516279B2 (en) | 2006-02-28 | 2006-02-28 | Method using stream prefetching history to improve data prefetching performance. |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101030215A CN101030215A (zh) | 2007-09-05 |
CN100501739C true CN100501739C (zh) | 2009-06-17 |
Family
ID=38445392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100082726A Expired - Fee Related CN100501739C (zh) | 2006-02-28 | 2007-01-26 | 利用流预取历史来改进数据预取性能的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7516279B2 (zh) |
CN (1) | CN100501739C (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070239939A1 (en) * | 2006-04-06 | 2007-10-11 | Goodman Benjiman L | Apparatus for Performing Stream Prefetch within a Multiprocessor System |
US8051249B2 (en) * | 2006-05-29 | 2011-11-01 | Sandisk Il Ltd. | Method for preloading data to improve data-retrieval times |
US7493451B2 (en) * | 2006-06-15 | 2009-02-17 | P.A. Semi, Inc. | Prefetch unit |
US10002000B2 (en) * | 2007-04-09 | 2018-06-19 | Open Invention Network, Llc | Trace-assisted startup optimization from a virtual disk |
US9311085B2 (en) * | 2007-12-30 | 2016-04-12 | Intel Corporation | Compiler assisted low power and high performance load handling based on load types |
US8719593B2 (en) * | 2009-05-20 | 2014-05-06 | Harris Corporation | Secure processing device with keystream cache and related methods |
US8307164B2 (en) | 2009-12-15 | 2012-11-06 | International Business Machines Corporation | Automatic determination of read-ahead amount |
CN101945045B (zh) * | 2010-09-14 | 2013-01-02 | 北京星网锐捷网络技术有限公司 | 一种更新数据流状态信息的方法、系统及设备 |
CA3098038C (en) * | 2011-11-15 | 2022-11-29 | Ab Initio Technology Llc | Data clustering, segmentation, and parallelization |
EP2954494A4 (en) * | 2013-02-06 | 2016-07-27 | Square Enix Holdings Co Ltd | IMAGE PROCESSING DEVICE, METHOD FOR CONTROLLING THEREOF, AND PROGRAM AND STORAGE MEDIUM |
CN104156321B (zh) * | 2014-07-23 | 2017-06-09 | 华为技术有限公司 | 一种数据预取的方法以及装置 |
US9465744B2 (en) | 2014-07-29 | 2016-10-11 | International Business Machines Corporation | Data prefetch ramp implemenation based on memory utilization |
US10013357B2 (en) | 2016-05-09 | 2018-07-03 | Cavium, Inc. | Managing memory access requests with prefetch for streams |
US10387207B2 (en) * | 2016-12-06 | 2019-08-20 | International Business Machines Corporation | Data processing |
US10467141B1 (en) * | 2018-06-18 | 2019-11-05 | International Business Machines Corporation | Process data caching through iterative feedback |
US10956133B2 (en) * | 2018-11-28 | 2021-03-23 | International Business Machines Corporation | Static optimization of production code for dynamic profiling |
US11429616B2 (en) * | 2019-04-02 | 2022-08-30 | Keysight Technologies, Inc. | Data recording and analysis system |
KR20210065605A (ko) * | 2019-11-27 | 2021-06-04 | 한국전자통신연구원 | 선인출 정보를 이용한 메모리 제어 방법 및 장치 |
US11442864B2 (en) | 2020-06-29 | 2022-09-13 | Marvell Asia Pte, Ltd. | Managing prefetch requests based on stream information for previously recognized streams |
US11740906B2 (en) * | 2021-02-25 | 2023-08-29 | Huawei Technologies Co., Ltd. | Methods and systems for nested stream prefetching for general purpose central processing units |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586294A (en) * | 1993-03-26 | 1996-12-17 | Digital Equipment Corporation | Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer |
US5761706A (en) * | 1994-11-01 | 1998-06-02 | Cray Research, Inc. | Stream buffers for high-performance computer memory system |
US5737565A (en) * | 1995-08-24 | 1998-04-07 | International Business Machines Corporation | System and method for diallocating stream from a stream buffer |
US5829028A (en) * | 1996-05-06 | 1998-10-27 | Advanced Micro Devices, Inc. | Data cache configured to store data in a use-once manner |
US5958040A (en) * | 1997-05-28 | 1999-09-28 | Digital Equipment Corporation | Adaptive stream buffers |
US5941981A (en) * | 1997-11-03 | 1999-08-24 | Advanced Micro Devices, Inc. | System for using a data history table to select among multiple data prefetch algorithms |
US6499116B1 (en) * | 1999-03-31 | 2002-12-24 | International Business Machines Corp. | Performance of data stream touch events |
US6535962B1 (en) * | 1999-11-08 | 2003-03-18 | International Business Machines Corporation | System and method for prefetching data using a hardware prefetch mechanism |
US6574712B1 (en) * | 1999-11-08 | 2003-06-03 | International Business Machines Corporation | Software prefetch system and method for predetermining amount of streamed data |
US7506105B2 (en) * | 2005-05-02 | 2009-03-17 | Freescale Semiconductor, Inc. | Prefetching using hashed program counter |
US7444526B2 (en) * | 2005-06-16 | 2008-10-28 | International Business Machines Corporation | Performance conserving method for reducing power consumption in a server system |
-
2006
- 2006-02-28 US US11/364,620 patent/US7516279B2/en not_active Expired - Fee Related
-
2007
- 2007-01-26 CN CNB2007100082726A patent/CN100501739C/zh not_active Expired - Fee Related
-
2009
- 2009-03-09 US US12/400,052 patent/US7689775B2/en not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
An Effective On-Chip Preloading Scheme To Reduce DataAccess Penalty. Jean-Loup Baer,Tien-Fu Chen.ACM 0-89791-459-7/91/0176. 1991 |
An Effective On-Chip Preloading Scheme To Reduce DataAccess Penalty. Jean-Loup Baer,Tien-Fu Chen.ACM 0-89791-459-7/91/0176. 1991 * |
Also Published As
Publication number | Publication date |
---|---|
CN101030215A (zh) | 2007-09-05 |
US7689775B2 (en) | 2010-03-30 |
US7516279B2 (en) | 2009-04-07 |
US20070204108A1 (en) | 2007-08-30 |
US20090164509A1 (en) | 2009-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100501739C (zh) | 利用流预取历史来改进数据预取性能的方法和系统 | |
CN101727313B (zh) | 执行存储器消歧的方法 | |
CN102498477B (zh) | Tlb预取 | |
CN100573477C (zh) | 管理锁定的高速缓冲存储器中的组替换的系统和方法 | |
CN100437523C (zh) | 用于程序员控制的超高速缓冲存储器线回收策略的方法 | |
CN105493053A (zh) | 多核处理器中的高速缓存划分 | |
CN102483720A (zh) | 读写感知的高速缓存 | |
KR101757098B1 (ko) | 메모리 액세스에 의한 효용성 기반 공격성 레벨 프리패칭 | |
CN105183663A (zh) | 预取单元和数据预取方法 | |
JP2021527892A (ja) | 分岐命令のタイプに基づく先行分岐予測の選択的実行 | |
CN102591621B (zh) | 使用计算历史进行预测 | |
CN101652759B (zh) | 可编程数据预取的方法和系统 | |
US8127079B2 (en) | Intelligent cache injection | |
Yang et al. | {CacheSack}: Admission Optimization for Google Datacenter Flash Caches | |
Musleh et al. | Automatic sharing classification and timely push for cache-coherent systems | |
US11194575B2 (en) | Instruction address based data prediction and prefetching | |
Gawanmeh et al. | Enhanced Not Recently Used Algorithm for Cache Memory Systems in Mobile Computing | |
US11048637B2 (en) | High-frequency and low-power L1 cache and associated access technique | |
Feng et al. | LAMA: Link-aware hybrid management for memory accesses in emerging CPU-FPGA platforms | |
US8484423B2 (en) | Method and apparatus for controlling cache using transaction flags | |
Lira et al. | The migration prefetcher: Anticipating data promotion in dynamic nuca caches | |
Kim et al. | History table-based linear analysis method for DRAM-PCM hybrid memory system | |
US11630765B2 (en) | Flash translation layer design using reinforcement learning | |
Zheng et al. | Research on optimizing last level cache performance for hybrid main memory | |
Lotfi-Kamran et al. | 2.1 Example |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090617 Termination date: 20190126 |