在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测的制作方法

文档序号:15884272发布日期:2018-11-09 18:33阅读:135来源:国知局
本申请案要求在2016年3月31日申请且题为“在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测(providingloadaddresspredictionsusingaddresspredictiontablesbasedonloadpathhistoryinprocessor-basedsystems)”的第15/087,069号美国专利申请案的优先权,所述申请案全文据此以引用方式并入本文中。本发明的技术大体上涉及在通过基于处理器的系统执行计算机程序期间改进负载指令的执行时延,且详言之涉及加速处理器中负载指令及负载依赖型指令的执行。本发明的技术大体上涉及在通过基于处理器的系统执行计算机程序期间改进负载指令的执行时延,且详言来说涉及加速处理器中负载指令及负载依赖型指令的执行。
背景技术
:常规的处理器能够在每个处理器时钟循环期间提取及执行若干程序指令。为保证程序指令的正确执行,处理器监视、检测且尝试满足程序指令间的地址与数据相依性。举例来说,处理器可确定生产方与消耗方关系存在于负载指令与后续存储指令之间,且因此可试图确保在允许执行存储指令之前,由负载指令产生的结果可用。确保满足数据相依性对于负载指令尤其关键,这是因为负载指令可表示由处理器执行的程序指令的总数目的相当大的部分。然而,满足用于负载指令的数据相依性可能不利地影响此些负载指令的执行时延。负载指令的执行速度可常常视所搜索的数据在基于处理器的系统的存储器阶层(例如,在层级1(l1)高速缓存存储器、层级2(l2)高速缓存存储器及/或系统存储器中,作为非限制性实例)中的位置而变化。作为一般原理,数据愈接近处理器存储,要求所述数据的负载指令可愈早执行。因此,数据存取时间的此变化性可能不利地影响依赖型负载指令(即,消耗由先前负载指令产生的数据值的指令)的执行时延,这是因为依赖型负载指令必须等待,直到先前负载指令被执行为止。归因于此数据存取时延变化性,常规的处理器优化已集中于(例如,经由数据预取)加速负载指令的执行及/或(例如,经由数据值预测)加速依赖型负载指令的执行。数据预取涉及将被预期或预测为将由负载指令参考的数据值检索到更高高速缓存存储器层级(例如,l1高速缓存存储器),以使得负载指令能够以更及时的方式执行。数据值预测是尝试通过预测将由先前负载指令产生的数据值来加速依赖型负载指令的执行且使得依赖型负载指令使用所预测的数据值进行执行的一种技术。当进行负载指令的后续执行时,所预测的数据值可经确认为有效的,或经取消确认为错误预测的。如果所预测的数据值经确定为错误预测的,那么执行恢复动作,包含清空及使用错误预测的数据值重新执行指令。数据预取及/或数据值预测及其它优化的使用可产生大量的性能增益,但可能需要提供进一步改进此些优化的性能的机构。技术实现要素:详细描述中所公开的方面包含在基于处理器的系统中基于负载路径历史使用地址预测表以提供负载地址预测。作为非限制性实例,此些基于处理器的系统可包含基于超标量处理器的系统。就此来说,在一个示范性方面中,提供负载地址预测引擎用于预测存储器地址,所述存储器地址可为处理器的执行管线的前端指令管线中所检测到的负载指令的目标。负载地址预测引擎包含含有多个负载地址预测表项的负载地址预测表。负载地址预测表项中的每一者对应于所检测到的负载指令,且包含预测子标记字段及存储器地址字段。当接收负载指令时,负载地址预测引擎基于用于负载指令的识别符(例如,程序计数器)及用于负载指令的负载路径历史两者产生表索引及预测子标记。表索引用于查找负载地址预测表中对应的负载地址预测表项。如果预测子标记匹配对应于表索引的负载地址预测表项的预测子标记字段,那么负载地址预测表项的存储器地址字段被提供作为用于负载指令的所预测的存储器地址。以此方式,负载地址预测引擎可通过提供用于负载指令的存储器地址预测来改进处理器性能。在一些方面中,所预测的存储器地址可用于存取系统数据高速缓存存储器。如果在系统数据高速缓存存储器上产生高速缓存命中,那么用于所预测的存储器地址的数据值可从系统数据高速缓存存储器读取且用于执行数据值预测,因此得到经改进的处理器性能。一些方面也可提供可将所预测的存储器地址提供到处理器的执行管线的后端指令管线以辅助存储器歧义消除。相应地,以此方式,负载地址预测引擎可提高常规的处理器优化的效果。一些方面也可提供负载地址预测表中的每一负载地址预测表项包含表示高速缓存通路的高速缓存通路指示符,在所述高速缓存通路中,预期对应于所预测的存储器地址的存储器块存在于系统数据高速缓存存储器内。通过提供高速缓存通路指示符,避免了存取系统数据高速缓存存储器内所有高速缓存通路的需要,因此减少了系统功率消耗。在一些方面中,负载地址预测表中的每一负载地址预测表项也可包含信赖值字段。信赖值字段可表示相对于由负载地址预测引擎提供的信赖阈值字段(表示用于对应负载指令的所预测的存储器地址为正确的)的信赖等级。当用于负载指令的所预测的存储器地址经确认为正确时可递增信赖值字段。如果用于负载指令的所预测的存储器地址经确定为不正确,或如果负载地址预测表上出现未命中且用于负载指令的现有负载地址预测表项的信赖值为高的,那么可递减信赖值字段。在另一方面中,提供负载地址预测引擎。负载地址预测引擎包括负载地址预测表,所述负载地址预测表经配置以存储各自包括预测子标记字段及存储器地址字段的多个负载地址预测表项。负载地址预测引擎经配置以接收负载指令。负载地址预测引擎进一步经配置以基于用于负载指令的识别符及负载路径历史指示符产生表索引及预测子标记。负载地址预测引擎也经配置以确定预测子标记是否存在于多个负载地址预测表项中的对应于表索引的负载地址预测表项的预测子标记字段中。负载地址预测引擎另外经配置以响应于确定预测子标记存在于多个负载地址预测表项中的对应于表索引的负载地址预测表项的预测子标记字段中而提供来自负载地址预测表项的存储器地址字段的存储器地址作为用于负载指令的所预测的存储器地址。在另一方面中,提供处理器的负载地址预测引擎。负载地址预测引擎包括用于接收负载指令的装置。负载地址预测引擎进一步包括用于基于用于负载指令的识别符及负载路径历史指示符产生表索引及预测子标记的装置。负载地址预测引擎也包括用于确定预测子标记是否存在于负载地址预测引擎的负载地址预测表的多个负载地址预测表项中的对应于表索引的负载地址预测表项的预测子标记字段中的装置。负载地址预测引擎另外包括用于响应于确定预测子标记存在于负载地址预测引擎的负载地址预测表的多个负载地址预测表项中的对应于表索引的负载地址预测表项的预测子标记字段中而提供来自负载地址预测表项的存储器地址字段的存储器地址作为用于负载指令的所预测的存储器地址的装置。在另一方面中,提供用于提供负载地址预测的方法。方法包括通过处理器的负载地址预测引擎接收负载指令。方法进一步包括基于用于负载指令的识别符及负载路径历史指示符产生表索引及预测子标记。方法也包括确定预测子标记是否存在于负载地址预测引擎的负载地址预测表的多个负载地址预测表项中的对应于表索引的负载地址预测表项的预测子标记字段中。方法另外包括响应于确定预测子标记存在于多个负载地址预测表项中的对应于表索引的负载地址预测表项的预测子标记字段中而提供来自负载地址预测表项的存储器地址字段的存储器地址作为用于负载指令的所预测的存储器地址。在另一方面中,提供其上存储有计算机可执行指令的非暂时性计算机可读媒体。计算机可执行指令在由处理器执行时使得处理器接收负载指令。计算机可执行指令进一步使得处理器基于用于负载指令的识别符及负载路径历史指示符产生表索引及预测子标记。计算机可执行指令也使得处理器确定预测子标记是否存在于负载地址预测表的多个负载地址预测表项中的对应于表索引的负载地址预测表项的预测子标记字段中。计算机可执行指令另外使得处理器响应于确定预测子标记存在于多个负载地址预测表项中的对应于表索引的负载地址预测表项的预测子标记字段中而提供来自负载地址预测表项的存储器地址字段的存储器地址作为用于负载指令的所预测的存储器地址。附图说明图1为包含用于提供负载地址预测的负载地址预测引擎的示范性处理器的框图;图2为说明图1的负载地址预测引擎的示范性负载地址预测表的内容的框图;图3a到3c为说明用于检测传入负载指令且提供负载地址预测以实现数据值预测、数据值预取及/或存储器歧义消除的图1的负载地址预测引擎的示范性通信流的图式;图4a到4c为说明用于检测传入负载指令且提供负载地址预测且用于通过图1的负载地址预测引擎训练负载地址预测表的示范性过程的流程图;且图5为可包含图1的负载地址预测引擎的示范性基于处理器的系统的框图。具体实施方式现在参看图式,描述本发明的若干示范性方面。词“示范性”在本文中用以意谓“充当实例、例子或说明”。不必将本文中描述为“示范性”的任何方面解释为比其它方面更优选或更有利。实施方式中所公开的方面包含在基于处理器的系统中基于负载路径历史使用地址预测表以提供负载地址预测。提供负载地址预测引擎用于预测可由处理器的执行管线的前端指令管线中所检测到的给定负载指令参考的存储器地址。表索引及预测子标记由负载地址预测引擎基于用于负载指令的识别符(例如,程序计数器)及用于负载指令的负载路径历史两者而产生。负载地址预测引擎接着确定负载地址预测表中的对应于表索引的负载地址预测表项是否含有预测子标记。如果如此,那么提供负载地址预测表项的存储器地址字段作为用于负载指令的所预测的存储器地址。如下文更详细地论述,可利用用于负载指令的所预测的存储器地址增强处理器优化(例如,数据值预测、数据值预取及存储器歧义消除)的有效性。一些方面可通过使用负载地址预测表的负载地址预测表项中的信赖值字段提供进一步性能优化。在一些方面中,功率优化也可经由负载地址预测表的负载地址预测表项中的任选高速缓存通路字段的使用而实现。就此来说,如本文所公开,图1为包含提供负载地址预测的负载地址预测引擎102的示范性处理器100的框图。处理器100包含存储器接口104,经由所述存储器接口可存取系统存储器106。在一些方面中,作为非限制性实例,系统存储器106可包括双速率动态随机存取存储器(dram)(ddr)。处理器100进一步包含指令高速缓存存储器108及系统数据高速缓存存储器110。在一些方面中,系统数据高速缓存存储器110可包括层级1(l1)数据高速缓存存储器。处理器100可涵盖已知数字逻辑元件、半导体电路、处理核心及/或存储器结构以及其它元件或其组合中的任一者。本文中所描述的方面并不限于任何特定的元件的布置,且所公开的技法可容易地延伸到半导体裸片或封装上的各种结构及布局。处理器100进一步包括执行管线112,所述执行管线可再分为前端指令管线114及后端指令管线116。如本文中所使用,“前端指令管线114”可指常规地位于执行管线112的“开头”处且提供提取、解码及/或指令队列功能的管线级。就此来说,图1的前端指令管线114包含一或多个提取/解码管线级118及一或多个指令队列级120。作为非限制性实例,一或多个提取/解码管线级118可包含f1、f2及/或f3提取/解码级(未图示)。本文中“后端指令管线116”是指执行管线112的后续管线级,其用于发布用于执行的指令,用于实行指令的实际执行,及/或用于加载及/或存储指令执行所需或所产生的数据。在图1的实例中,后端指令管线116包括重命名级122、寄存器存取级124、保留级126、一或多个分派级128,及一或多个执行级130。应理解,图1中所展示的前端指令管线114的级118、120及后端指令管线116的级122、124、126、128、130仅出于说明的目的予以提供,且处理器100的其它方面可含有除本文中所说明的管线级外的额外管线级或比本文中所说明的管线级更少的管线级。处理器100另外包含寄存器文件132,所述寄存器文件为多个寄存器134(0)到134(x)提供物理存储。在一些方面中,寄存器134(0)到134(x)可包括一或多个通用寄存器(gpr)、程序计数器(未图示)及/或链接寄存器(未图示)。在由处理器100执行计算机程序期间,可通过使用寄存器映射表138将寄存器134(0)到134(x)映射到一或多个架构寄存器136。在示范性操作中,执行管线112的前端指令管线114从指令高速缓存存储器108提取程序指令(未图示)。可通过前端指令管线114的一或多个提取/解码管线级118对程序指令进一步解码且将所述程序指令传送到一或多个指令队列级120以待发布到后端指令管线116。在程序指令经发布到后端指令管线116之后,后端指令管线116的级(例如,执行级130)接着执行经发布的程序指令,且引退经执行的程序指令。如上文所提及,处理器100的一个重要功能通过确保程序指令(特定来说,负载指令)中数据相依性的满足来防止危险。由于负载指令的数据存取时间的变化可能不利地影响此些负载指令的执行时延,因此常规的处理器已提供优化(例如,数据预取、数据值预测及存储器歧义消除)以便加速负载指令的执行。然而,可能需要提供可进一步改进此些优化的额外机构。就此来说,处理器100包含负载地址预测引擎102,以提供用于负载指令的负载地址预测。虽然为了清楚起见将负载地址预测引擎102说明为不同于前端指令管线114及后端指令管线116的元件,但应理解,负载地址预测引擎102可集成于前端指令管线114的级118、120中的一或多者及/或后端指令管线116的级122、124、126、128、130中的一或多者中。负载地址预测引擎102包括负载地址预测表140,所述负载地址预测表含有用于存储所预测的存储器地址(可为所检测到的负载指令的目标)的一或多个负载地址预测表项(未图示)。如箭头142及箭头144所指示,负载地址预测引擎102以通信方式分别耦合到执行管线112的前端指令管线114及后端指令管线116。类似地,如双向箭头146所指示,负载地址预测引擎102以通信方式耦合到系统数据高速缓存存储器110。在示范性操作中,负载地址预测引擎102从前端指令管线114接收传入负载指令(未图示)。负载地址预测引擎102基于用于负载指令的识别符(例如,程序计数器)产生表索引(未图示)及预测子标记(未图示)。用于负载指令的表索引及预测子标记也基于负载路径历史,所述负载路径历史表示产生当前负载指令的先前负载指令的序列。将负载路径历史并入到用于负载指令的表索引及预测子标记中提供用于负载指令的额外历史背景,从而可产生用于给定负载指令的所产生的更唯一的值。作为非限制性实例,在一些方面中,负载路径历史可通过产生负载指令自身的程序计数器的多个低阶位以及负载指令之前的最近的指令(例如,一或多个最新的分支指令)的程序计数器的多个位的杂凑而并入到表索引及预测子标记中。表索引及预测子标记接着可从产生的杂凑值导出。表索引供负载地址预测引擎102使用以存取负载地址预测表140内的负载存取预测表。接着将由负载地址预测引擎102产生的预测子标记与对应于表索引的负载存取预测表项的预测子标记值的内容进行比较。如果预测子标记匹配负载地址预测表项的预测子标记值,那么存储器地址值(未图示)被从负载地址预测表项读取且由负载地址预测引擎102提供作为用于负载指令的所预测的存储器地址。作为非限制性实例,所预测的存储器地址接着可用于促进例如数据值预测、数据预取及/或存储器歧义消除的负载指令优化。参照图3a到3c,在下文中更详细地论述促进负载指令优化的负载地址预测引擎102的示范性方面的操作。为说明在一些方面中可对应于图1的负载地址预测表140的示范性负载地址预测表200,提供图2。为了清楚起见,在描述图2时引用图1的元件。如图2中所见,负载地址预测引擎102提供包含多个负载地址预测表项202(0)到202(y)的负载地址预测表200。负载地址预测表项202(0)到202(y)中的每一者可与图1的前端指令管线114中的负载地址预测引擎102所检测到的负载指令(未图示)相关联。根据一些方面,为了消除或减少关于负载地址预测表项202(0)到202(y)的任何混淆问题,负载地址预测表200可包括经直接映射的标记表。负载地址预测表项202(0)到202(y)中的每一者包含预测子标记字段204,所述预测子标记字段存储由负载地址预测引擎102产生用于对应的负载指令的预测子标记(未图示)。如上文所提及,每一预测子标记字段204的内容可由负载地址预测引擎102基于用于负载指令的识别符(例如,pc)以及用于负载指令的负载路径历史而产生。在一些方面中,预测子标记可进一步并有分支方向历史(未图示)及/或分支路径历史(未图示),以为对应的负载指令提供进一步历史背景。每一负载地址预测表项202(0)到202(y)也包含存储器地址字段206。存储器地址字段206在负载地址预测表200的训练期间填入,且表示先前由对应于负载地址预测表项202(0)到202(y)的负载指令参考的存储器地址。当在负载地址预测表200中命中时,负载地址预测引擎102可将存储器地址字段206的内容提供作为用于负载指令的所预测的存储器地址,以用于数据值预测、数据值预取及/或存储器歧义消除优化程序。为提供进一步性能优化,在一些方面中负载地址预测表200的负载地址预测表项202(0)到202(y)中的每一者也可提供信赖值字段208。负载地址预测引擎102可进一步提供经默认以指示最小信赖阈值的信赖阈值字段210。用于负载地址预测表项202(0)到202(y)的信赖值字段208可与信赖阈值字段210比较,以确定负载地址预测表项202(0)到202(y)是否可视为足够可靠以用于负载地址预测。以此方式,信赖值字段208连同信赖阈值字段210可被用作饱和计数器,以指示用于负载指令的所预测的存储器地址的信赖等级。作为非限制性实例,当负载地址预测表项202(0)到202(y)中的一者(例如,负载地址预测表项202(0))的初始化时,信赖值字段208可设定为零(0)。当后续命中时,可递增信赖值字段208,但可不提供由存储器地址字段206所指示的所预测的存储器地址,直到信赖值字段208超出信赖阈值字段210为止。相反,如果提供用于负载指令的所预测的存储器地址,但随后确定所述所预测的存储器地址为错误预测,那么可递减信赖值字段208或将信赖值字段208复位为零(0)。负载地址预测表200的一些方面可通过包含负载地址预测表项202(0)到202(y)中的每一者中的任选高速缓存通路字段212来提供额外功率优化。高速缓存通路字段212可指示其中定位有对应于存储器地址字段206的数据的系统数据高速缓存存储器110内的通路。将来自存储器地址字段206的所预测的存储器地址用于数据值预测的情况下,可提供高速缓存通路字段212以更有效地从系统数据高速缓存存储器110内的特定通路检索用于所预测的存储器地址的数据,而非需要在系统数据高速缓存存储器110内读取多个集合。应理解,一些方面可提供负载地址预测表200的负载地址预测表项202(0)到202(y)可包含除图2中所说明的字段204、206、208及212之外的其它字段。应进一步理解,在一些方面中,负载地址预测表200可实施为根据所属领域中已知的结合性及替换原则所配置的高速缓存存储器。在图2的实例中,将负载地址预测表200说明为单一数据结构。然而,在一些方面中,负载地址预测表200也可包括超过一(1)个数据结构或高速缓存存储器。为说明用于检测传入负载指令且提供负载地址预测的图1的负载地址预测引擎102的示范性通信流,提供图3a到3c。图3a说明用于检测负载指令,产生用于负载指令的表索引及预测子标记的示范性通信流。图3b说明用于在图1的负载地址预测表140中执行查找且基于负载地址预测表140中的命中提供数据值预测的示范性通信流。图3c说明基于系统数据高速缓存存储器110中的未命中执行数据值预取及/或提供用于存储器歧义消除的所预测的存储器地址的示范性通信流。应理解,出于说明的目的,假定图3a到3c的负载地址预测表140已进行训练,如下文参照图4c更详细地描述。为了清楚起见,描述图3a到3c时引用图1及2的元件。在图3a中,负载地址预测引擎102从前端指令管线114接收负载指令300,如箭头302所指示。作为非限制性实例,负载指令300包含识别符304,所述识别符可包括程序计数器。负载指令300也包含被称作“实际存储器地址306”的参考符号,所述实际存储器地址306为经计算为指令300打算存取的地址的存储器地址。由于实际存储器地址306于在执行管线112中很久之后才可确定地确定,因此将负载地址预测引擎102用于产生所预测的存储器地址(未图示),以尝试优化系统性能及功率消耗。在接收负载指令300之后,负载地址预测引擎102产生表索引308及预测子标记310。负载地址预测引擎102使表索引308及预测子标记310基于负载指令300的识别符304及负载路径历史312,如箭头314、316及箭头318、320所指示。在一些方面中,额外历史背景可经由使用分支方向历史322(如箭头324及326所指示)及/或分支路径历史328(如箭头330及332所指示)而并入到表索引308及预测子标记310中。当表索引308及预测子标记310已产生时,继续图3b的操作。在图3b中,负载地址预测引擎102使用表索引308作为到负载地址预测表140的索引,如箭头334所指示。在此实例中,表索引308对应于负载地址预测表项202(0)。负载地址预测引擎102接着比较预测子标记310与负载地址预测表项202(0)的预测子标记字段204的内容,如箭头336所指示。如果预测子标记310不匹配预测子标记字段204的内容(即,负载地址预测表140上未命中),那么负载地址预测表140不含有用于负载指令300的所预测的存储器地址,且负载指令300的处理按常规进行。如参照图4c在下文中所描述,在负载指令300的执行之后,负载地址预测表140可基于执行负载指令300的结果更新。如果预测子标记310的确匹配预测子标记字段204的内容,那么负载地址预测引擎102使用负载地址预测表项202(0)的存储器地址字段206以提供用于负载指令300的所预测的存储器地址338。如上文所提及,在负载地址预测表140采用信赖值字段208以及信赖阈值字段210的方面中,仅当信赖值字段208超出信赖阈值字段210时,负载地址预测引擎102才可提供所预测的存储器地址338。在一些方面中,所预测的存储器地址338可用于确定用于所预测的存储器地址338的数据是否存在于系统数据高速缓存存储器110中,如箭头340所指示。如果用于所预测的存储器地址338的系统数据高速缓存存储器110上出现命中,那么从系统数据高速缓存存储器110读取对应于所预测的存储器地址338的所检索的数据342。所检索的数据342作为数据值预测被提供到前端指令管线114,如箭头344所指示。现参看图3c,如果用于所预测的存储器地址338的系统数据高速缓存存储器110中出现未命中,那么负载地址预测引擎102可促进用于所预测的存储器地址338的数据值预取。为执行此操作,可从系统存储器106读取对应于所预测的存储器地址338的预取数据346,如箭头348所指示。接着将预取数据346连同所预测的存储器地址338存储于系统数据高速缓存存储器110,如箭头350及352所指示。以此方式,在未来系统数据高速缓存存储器110中的所预测的存储器地址338上出现命中的情况下,预取数据346在系统数据高速缓存存储器110中可用。在一些方面中,也可将所预测的存储器地址338提供到与现有机构一起使用来改进存储器歧义消除的后端指令管线116。在存储器歧义消除中,根据更早的存储指令(未图示)的经计算的地址检查负载指令(例如,负载指令300)的经计算的地址。如果负载指令300的地址匹配先前的存储指令的地址,那么负载指令300必须等待存储指令的数据变为可供使用,而非探测系统数据高速缓存存储器110。当使用负载指令300的地址训练负载地址预测表140时,在计算负载或存储地址之前可使用负载地址预测表帮助预测负载或存储地址。此举继而可实现负载指令的更高效的执行。图4a到4c为说明用于检测传入负载指令且提供负载地址预测且用于通过图1的负载地址预测引擎102训练负载地址预测表140的示范性过程的流程图。为了清楚起见,描述图4a到4c时参考图1、2及3a到3c的元件。图4a中操作开始于处理器100的负载地址预测引擎102接收负载指令300(例如,从处理器100的执行管线112的前端指令管线114)(框400)。就此来说,负载地址预测引擎102在本文中可被称作“用于接收负载指令的装置”。负载地址预测引擎102基于用于负载指令300的识别符304及负载路径历史312产生表索引308及预测子标记310(框402)。相应地,负载地址预测引擎102在本文中可被称作“用于基于用于负载指令的识别符及负载路径历史指示符产生表索引及预测子标记的装置”。在一些方面中,用于产生表索引308及预测子标记310的框402的操作可进一步基于负载指令300的分支方向历史322及/或分支路径历史328(框404)。负载地址预测引擎102接着确定预测子标记310是否存在于负载地址预测引擎102的负载地址预测表140的多个负载地址预测表项202(0)到202(y)中的对应于表索引308的负载地址预测表项202(0)的预测子标记字段204中(框406)。负载地址预测引擎102在本文中可因此被称作“用于确定预测子标记是否存在于负载地址预测引擎的负载地址预测表的多个负载地址预测表项中的对应于表索引的负载地址预测表项的预测子标记字段中的装置”。如果预测子标记310不存在于对应于表索引308的负载地址预测表项202(0)的预测子标记字段204中,那么继续负载指令300的处理(框408)。处理接着在图4c的框410处恢复。然而,如果在决策框406处负载地址预测引擎102确定预测子标记310存在于对应于表索引308的负载地址预测表项202(0)的预测子标记字段204中,那么在一些方面中,负载地址预测引擎102可进一步确定负载地址预测表项202(0)的信赖值字段208是否超出负载地址预测引擎102的信赖阈值字段210(框412)。如果负载地址预测表项202(0)的信赖值字段208超出负载地址预测引擎102的信赖阈值字段210(或如果负载地址预测引擎102的方面不利用信赖值字段208及信赖阈值字段210),那么处理在图4b的框414处恢复。如果在框412处负载地址预测引擎102确定信赖值字段208不超出信赖阈值字段210,那么继续负载指令300的处理(框408)。处理接着在图4c的框410处恢复。现参看图4b,负载地址预测引擎102提供来自负载地址预测表项202(0)的存储器地址字段206的所预测的存储器地址338作为用于负载指令300的所预测的存储器地址338(框414)。就此来说,负载地址预测引擎102在本文中可被称作“用于响应于确定预测子标记存在于负载地址预测引擎的负载地址预测表的多个负载地址预测表项中的对应于表索引的负载地址预测表项的预测子标记字段中而提供来自负载地址预测表项的存储器地址字段作为用于负载指令的所预测的存储器地址的装置”。一些方面可提供负载地址预测引擎102随后确定用于负载指令300的所预测的存储器地址338是否存在于处理器100的系统数据高速缓存存储器110中(框416)。在负载地址预测表项202(0)包含任选高速缓存通路字段212的方面中,在决策框416中做出的确定可部分基于对应于表索引308的负载地址预测表项202(0)的高速缓存通路字段212。如果所预测的存储器地址338存在于系统数据高速缓存存储器110中,那么负载地址预测引擎102从系统数据高速缓存存储器110检索用于所预测的存储器地址338的数据342(框418)。所检索的数据342接着作为数据值预测提供到处理器100的执行管线112的后端指令管线116(框420)。处理可接着在图4b的框422处恢复。如果在图4b的决策框416处负载地址预测引擎102确定用于负载指令300的所预测的存储器地址338不存在于处理器100的系统数据高速缓存存储器110中,那么负载地址预测引擎102可从处理器100的系统存储器106预取对应于所预测的存储器地址338的数据346(框424)。接着将所预取的数据346存储于处理器100的系统数据高速缓存存储器110中(框426)。处理接着在图4b的框422处恢复。继续参看图4b,在一些方面中,负载地址预测引擎102也可将负载地址预测表项202(0)的存储器地址字段206的存储器地址338作为用于负载指令300的所预测的存储器地址338提供到处理器100的执行管线112的后端指令管线116,以用于存储器歧义消除(框422)。处理接着在图4c的框410处继续。现转而参看图4c,在负载指令300的执行之后负载地址预测引擎102实行训练负载地址预测表140的操作。在负载指令300的执行之后,负载地址预测引擎102首先确定预测子标记310是否存在于多个负载地址预测表项202(0)到202(y)中的对应于表索引308的负载地址预测表项202(0)的预测子标记字段204中(框410)。如果预测子标记310存在于多个负载地址预测表项202(0)到202(y)中的对应于表索引308的负载地址预测表项202(0)的预测子标记字段204中,那么存在用于负载指令300的负载地址预测表项202(0),且负载地址预测表项202(0)应基于负载指令300的执行的结果进行更新。相应地,负载地址预测引擎102随后确定负载指令300的实际存储器地址306(即,经计算的地址)是否匹配用于负载指令300的所预测的存储器地址338(框428)。在一些方面中,负载地址预测引擎102也可将实际存储器地址306的通路与高速缓存通路字段212比较。如果实际存储器地址306匹配所预测的存储器地址338(且(任选地)如果高速缓存通路字段212为正确的),那么负载地址预测引擎102可递增对应于表索引308的负载地址预测表项202(0)的信赖值字段208(框430)。然而,如果实际存储器地址306不匹配所预测的存储器地址338,那么负载地址预测引擎102复位对应于表索引308的负载地址预测表项202(0)的信赖值字段208(框432)。应注意在不太可能的情况下,即实际存储器地址306匹配所预测的存储器地址338但高速缓存通路字段212为不正确的,负载地址预测引擎102对高速缓存通路字段212进行更新。如果在决策框410处负载地址预测引擎102确定预测子标记310不存在于多个负载地址预测表项202(0)到202(y)中的对应于表索引308的负载地址预测表项202(0)的预测子标记字段204中,那么似乎不存在用于负载指令300的负载地址预测表项202(0)。负载地址预测引擎102随后确定对应于表索引308的负载地址预测表项202(0)的信赖值字段208是否为非零(框434)。如果确定对应于表索引308的负载地址预测表项202(0)的信赖值字段208为非零,那么预测子标记310的失配可能为暂时的情况,因此负载地址预测引擎102递减对应于表索引308的负载地址预测表项202(0)的信赖值字段208(框436)。如果在决策框434处负载地址预测引擎102确定对应于表索引308的负载地址预测表项202(0)的信赖值字段208为零(0),那么负载地址预测引擎102使用用于负载指令300的预测子标记310及实际存储器地址306初始化对应于表索引308的负载地址预测表项202(0)(框438)。根据本文中所公开的方面在基于处理器的系统中基于负载路径历史使用地址预测表提供负载地址预测可提供于或集成到任何基于处理器的装置中。实例包含(但不限于)机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、智能型手机、平板计算机、平板手机、服务器、计算机、便携式计算机、台式计算机、个人数字助理(pda)、监视器、计算机监视器、电视、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(dvd)播放器、便携式数字视频播放器及汽车。就此来说,图5说明可采用图1的负载地址预测引擎(lape)102的基于处理器的系统500的实例。在此实例中,基于处理器的系统500可对应于图1的处理器100,且包含一或多个cpu502,每一cpu包含一或多个处理器504。cpu502可具有耦合到处理器504的高速缓存存储器506,以供快速存取临时存储的数据。cpu502经耦合到系统总线508且可互相耦合包含于基于处理器的系统500中的装置。如所熟知,cpu502通过经由系统总线508交换地址、控制及数据信息而与此些其它装置通信。举例来说,cpu502可将总线异动请求传达到作为从属装置的实例的存储器控制器510。尽管图5中未说明,但可提供多个系统总线508。其它装置可连接到系统总线508。如图5中所说明,作为实例,此些装置可包含存储器系统512、一或多个输入装置514、一或多个输出装置516、一或多个网络接口装置518及一或多个显示器控制器520。输入装置514可包含任何类型的输入装置,包含(但不限于)输入键、开关、语音处理器等。输出装置516可包含任何类型的输出装置,包含(但不限于)音频、视频、其它视觉指示器等。网络接口装置518可为经配置以允许到及从网络522的数据的交换的任何装置。网络522可为任何类型的网络,包含(但不限于)有线或无线网络、私用或公用网络、局域网(lan)、广域网、无线局域网、bluetooth(bt)及因特网。网络接口装置518可经配置以支持所要的任何类型的通信协议。存储器系统512可包含一或多个存储器单元524(0)到524(n)。cpu502也可经配置以经由系统总线508存取显示控制器520,以控制发送到一或多个显示器526的信息。显示控制器520将信息经由一或多个视频处理器528发送到显示器526进行显示,所述视频处理器将待显示的信息处理成适合于显示器526的格式。显示器526可包含任何类型的显示器,包含(但不限于)阴极射线管(crt)、液晶显示器(lcd)、发光二极管(led)显示器、等离子体显示器等。作为实例,可在任何电路、硬件组件、集成电路(ic)或ic芯片中采用本文中所描述的装置。本文中所公开的存储器可为任何类型及大小的存储器,且可经配置以存储所要的任何类型的信息。为了清楚地说明此可互换性,上文已大体上关于功能性描述了各种说明性组件、块、模块、电路及步骤。如何实施此功能性视特定应用、设计选择及/或强加于整个系统的设计约束而定。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但所述实施决策不应解译为引起对本发明的范围的偏离。可通过处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或经设计以执行本文中所描述功能的其它可编程逻辑装置、离散闸或晶体管逻辑、离散硬件组件,或其任何组合来实施或执行结合本文中所公开的方面而描述的各种说明性逻辑块、模块及电路。处理器可为微处理器,但在替代例中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器也可实施为计算装置的组合,例如,dsp与微处理器的组合、多个微处理器、一或多个微处理器结合dsp核心或任何其它此配置。也应注意,描述本文中的示范性方面中的任一者中所描述的操作步骤以提供实例及论述。可以除了所说明的序列以外的众多不同序列来执行所描述的操作。此外,描述于单一操作步骤中的操作可实际上以数个不同步骤执行。另外,可组合示范性方面中所论述的一或多个操作步骤。应理解,如所属领域的技术人员将容易地显而易见,流程图图式中所说明的操作步骤可经受众多不同修改。所属领域的技术人员也将理解,可使用任何多种不同技术与技法表示信息及信号。举例来说,可由电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子或其任何组合表示遍及以上描述可能参考的数据、指令、命令、信息、信号、位、符号及码片。提供对本发明的先前描述以使得任何所属领域的技术人员能够进行或使用本发明。对本发明的各种修改对于所属领域的技术人员来说将为显而易见的,且本文中所定义的一般原理在不脱离本发明的精神或范围的情况下可适用于其它变体。因此,本发明不打算限于本文中所描述的实例及设计,而应符合与本文中所公开的原理及新颖特征相一致的最广泛范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1