用于取消对循环的数据预取请求的方法和设备的制造方法

文档序号:9355152阅读:283来源:国知局
用于取消对循环的数据预取请求的方法和设备的制造方法
【技术领域】
[0001]本发明大体上涉及处理系统的方面,且明确地说,涉及用于减少由数据预取引起的高速缓存污染的方法和设备。
【背景技术】
[0002]例如蜂窝式电话、膝上型计算机、个人数据助理(PDA)和其类似者的许多便携式产品利用执行例如通信和多媒体程序的程序的处理系统。用于这些产品的处理系统可包含多个处理器、包含用于存储指令和数据的多阶高速缓冲存储器的复杂存储器系统、控制器、例如通信接口的外围装置,和配置(例如)于单一芯片上的固定功能逻辑块。同时,便携式产品具有呈电池形式的有限能量源,所述电池常常为支持由处理系统进行的高性能操作所需的。为了增加电池寿命,需要尽可能高效地执行这些操作。许多个人计算机也经开发而具有高效设计以在总能量消耗减少的情况下操作。
[0003]为在执行程序时提供高性能,可使用基于存储器参考的空间区域性的概念且通常用以改善处理器性能的数据预取。通过从高速缓冲存储器预取在接近已提取数据元素或通过步幅地址差量或间接指标相关且可能用于未来存取中的地址处的多个数据元素,可减小高速缓存未命中率。高速缓存设计通常通过针对个别数据元素提取而提取数据的高速缓存行来实施一种形式的预取。硬件预取器可通过以推测方式预取数据的一或多个额外高速缓存行来扩充此操作,其中预取定址可基于顺序、步幅或指标信息而形成。用于存储器密集型工作负载(例如,处理大数据阵列)的此硬件预取器操作可显著减少存储器延时。然而,数据预取并非不具有其缺点。例如,在用于处理数据阵列的软件循环中,数据预取器电路预取待用于循环的未来反复中的数据,所述未来反复包含循环的最后反复。然而,将不使用为循环的最后反复而预取的数据,且由于在高速缓冲存储器中存储将不被使用的此数据而发生高速缓存污染。当展开循环时,高速缓存污染问题会加重。

【发明内容】

[0004]在本发明的若干方面当中,本发明认识到,提供用于预取的更高效方法和设备可改善处理器系统中的性能且降低其中的功率要求。为这些目的,本发明的一实施例提出一种用于取消预取请求的方法。基于程序流信息的评估来识别循环退出情形。响应于识别到的循环退出情形而取消未决高速缓存预取请求。
[0005]另一实施例提出一种用于取消预取请求的方法。根据被呼叫函数而以推测方式预取数据。响应于从被呼叫函数的函数退出而取消未决数据预取请求。
[0006]另一实施例提出一种用于取消预取请求的设备。循环数据地址监视器经配置以基于程序循环中的存储器存取指令的重复执行而确定数据存取步幅。数据预取逻辑经配置以根据数据存取步幅而以推测方式发出预取请求。停止预取电路经配置以响应于识别到的循环退出而取消未决预取请求。
[0007]另一实施例提出一种编码有计算机可读程序数据和代码的计算机可读非暂时性媒体。基于程序流信息的评估来识别循环退出情形。响应于识别到的循环退出情形而取消未决高速缓存预取请求。
[0008]另一实施例提出一种用于取消预取请求的设备。利用用于基于程序循环中的存储器存取指令的重复执行而确定数据存取步幅的装置。利用用于根据数据存取步幅而以推测方式发出预取请求的装置。也利用用于响应于识别到的循环退出而取消未决预取请求的装置。
[0009]应理解,对于所属领域的技术人员来说,本发明的其它实施例将从以下详细描述而变得容易显而易见,在以下详细描述中,以说明的方式来展示和描述本发明的各种实施例。应认识到,本发明能够实践其它和不同实施例且其若干细节能够在其它各方面加以修改,以上所有皆不脱离本发明的精神和范围。因此,应将图式和详细描述视为本质上说明性而非限制性的。
【附图说明】
[0010]借助于实例(且并非限制)来说明本发明的各种方面,在随附图式中,其中:
[0011]图1说明可有利地使用本发明的一实施例的示范性处理器系统;
[0012]图2A说明用于在检测到循环结束分支后即取消未决非必要数据预取请求的过程;和
[0013]图2B说明用于在检测到函数返回后即取消未决非必要数据预取请求的过程;和
[0014]图3说明具有处理器复合体的便携式装置的特定实施例,所述处理器复合体经配置以取消选定未决数据预取请求以减少高速缓存污染。
【具体实施方式】
[0015]下文结合随附图式所阐述的详细描述希望作为对本发明的各种示范性实施例的描述,且不希望表示可实践本发明的仅有实施例。所述详细描述包含出于提供对本发明的透彻理解的目的的特定细节。然而,对于所属领域的技术人员将显而易见,本发明可在无这些特定细节的情况下实践。在一些例子中,以框图形式来展示众所周知的结构和组件,以便避免使本发明的概念模糊。
[0016]图1说明有利地使用本发明的一实施例的示范性处理器系统100。所述处理器系统100包含处理器110、高速缓冲存储器系统112、系统存储器114以及输入和输出(I/O)系统116。例如,高速缓冲存储器系统112包括I阶指令高速缓冲存储器(Icache) 124、存储器控制器126和I阶数据高速缓冲存储器(Dcache) 128。高速缓冲存储器系统112也可包含2阶统一高速缓冲存储器(未图示)或特定实施方案环境所需要的其它高速缓冲存储器组件。系统存储器114提供对未见于Icache 124或Dcache 128中的指令和数据的存取。注意到,高速缓冲存储器系统112可与处理器110集成,且也可包含呈阶层架构组织形式的多阶高速缓冲存储器。I/O系统116包括与处理器110介接的多个I/O装置,例如I/O装置140 和 142。
[0017]本发明的实施例可合适地用于具有条件分支指令的处理器中。例如,处理器110包括指令管线120、数据预取逻辑121、预测逻辑122和堆迭逻辑电路123。指令管线120由一系列级构成,例如,提取和预取级130、解码级131、指令发出级132、操作数提取级133、执行级134(例如,用于执行加载(Ld)和存储(St)指令),和完成级135。所属领域的技术人员将认识到,取决于处理器的操作频率和每一级中所需的操作的复杂性,指令管线120中的每一级130到135可包括数个额外管线级。例如,执行级134可包含一或多个管线级,所述一或多个管线级对应于一或多个指令执行级电路,例如,加法器、乘法器、逻辑运算、加载和存储操作、移位和旋转操作,和具有更大或更小复杂性的其它功能电路。例如,当执行加载指令时,其向Dcache 128请求数据,且如果所请求的数据不存在于Dcache中,那么将提取请求发出到下一阶高速缓冲存储器或系统存储器。将此提取请求视为必要请求,这是因为在加载指令的状况下所述请求直接响应于指令的执行。
[0018]预取请求为响应于例如对程序循环的检测的程序流信息而产生的请求,所述程序循环在循环中具有一或多个加载指令且加载地址基于(例如)步幅。数据预取逻辑121利用可基于经检测循环的数个反复的此程序流信息,以在发出预取请求之前更准确地识别加载指令的操作数地址的必要使用模式。当检测模式时,插入填充请求。处理器110可操作以通过使用与在处理器管线中追踪的请求相关联的额外旗标来区分必要请求与预取请求。此旗标也可随请求传播到每一未处理高速缓存行填充可识别为预取填充抑或必要填充的高速缓冲存储器。管线级中的每一者可在不脱离本文中所描述的预取请求取消方法和设备的情况下具有变化的实施方案。
[0019]为了最小化可能在程序所需的数据不在相关联的I阶Dcache 128中的情况下发生的延迟,提取和预取级130记录与在经检测程序循环中执行的一或多个存储器存取指令相关联的程序流信息。程序信息可包含来自解码级131的如下指示:已接收加载指令,且在执行之前用于加载指令的操作数地址信息可在管线级(例如,操作数提取级133或执行级134)处可用。数据预取逻辑121在加载地址变得可用于检测模式时监视所述加载地址。在(例如)通过在循环的三个或三个以上反复期间监视加载指令来确定具有可接受可信度的模式之后,在于循环中再次遇到加载指令时之前,发出对预期数据的预取请求。此推测性预取请求确保在执行级134需要时,所需数据在I阶Dcache中可用。加载和存储执行级134接着更有可能直接从I阶Dcache存取所需数据,而无须等待从存储器阶层架构中的较高阶层存取数据。
[0020]数据预取逻辑121也可包含数据高速缓存循环数据地址监视器以确定数据存取步幅。数据预取逻辑121接着以推测方式发出具有根据数据
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1