CN108780398A - 在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测 - Google Patents
在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测 Download PDFInfo
- Publication number
- CN108780398A CN108780398A CN201780016881.8A CN201780016881A CN108780398A CN 108780398 A CN108780398 A CN 108780398A CN 201780016881 A CN201780016881 A CN 201780016881A CN 108780398 A CN108780398 A CN 108780398A
- Authority
- CN
- China
- Prior art keywords
- load
- address
- prediction
- list item
- load address
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims description 82
- 230000004044 response Effects 0.000 claims description 35
- 238000000034 method Methods 0.000 claims description 20
- 238000004891 communication Methods 0.000 claims description 8
- 230000001413 cellular effect Effects 0.000 claims description 2
- 230000010387 memory retrieval Effects 0.000 claims 3
- 238000005457 optimization Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 10
- 230000001419 dependent effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000011017 operating method Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
实施方式中所公开的方面包含在基于处理器的系统中基于负载路径历史使用地址预测表以提供负载地址预测。在一个方面中,负载地址预测引擎提供含有多个负载地址预测表项的负载地址预测表。每一负载地址预测表项包含用于负载指令的预测子标记字段及存储器地址字段。所述负载地址预测引擎基于用于所检测到的负载指令的识别符及负载路径历史产生表索引及预测子标记。所述表索引用于查找对应的负载地址预测表项。如果所述预测子标记匹配对应于所述表索引的所述负载地址预测表项的所述预测子标记字段,那么所述负载地址预测表项的所述存储器地址字段被提供作为用于所述负载指令的所预测的存储器地址。
Description
优先权要求
本申请案要求在2016年3月31日申请且题为“在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测(PROVIDING LOAD ADDRESS PREDICTIONS USINGADDRESS PREDICTION TABLES BASED ON LOAD PATH HISTORY IN PROCESSOR-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,且包含一或多个CPU 502,每一CPU包含一或多个处理器504。CPU 502可具有耦合到处理器504的高速缓存存储器506,以供快速存取临时存储的数据。CPU 502经耦合到系统总线508且可互相耦合包含于基于处理器的系统500中的装置。如所熟知,CPU 502通过经由系统总线508交换地址、控制及数据信息而与此些其它装置通信。举例来说,CPU 502可将总线异动请求传达到作为从属装置的实例的存储器控制器510。尽管图5中未说明,但可提供多个系统总线508。
其它装置可连接到系统总线508。如图5中所说明,作为实例,此些装置可包含存储器系统512、一或多个输入装置514、一或多个输出装置516、一或多个网络接口装置518及一或多个显示器控制器520。输入装置514可包含任何类型的输入装置,包含(但不限于)输入键、开关、语音处理器等。输出装置516可包含任何类型的输出装置,包含(但不限于)音频、视频、其它视觉指示器等。网络接口装置518可为经配置以允许到及从网络522的数据的交换的任何装置。网络522可为任何类型的网络,包含(但不限于)有线或无线网络、私用或公用网络、局域网(LAN)、广域网、无线局域网、BLUETOOTH(BT)及因特网。网络接口装置518可经配置以支持所要的任何类型的通信协议。存储器系统512可包含一或多个存储器单元524(0)到524(N)。
CPU 502也可经配置以经由系统总线508存取显示控制器520,以控制发送到一或多个显示器526的信息。显示控制器520将信息经由一或多个视频处理器528发送到显示器526进行显示,所述视频处理器将待显示的信息处理成适合于显示器526的格式。显示器526可包含任何类型的显示器,包含(但不限于)阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)显示器、等离子体显示器等。
作为实例,可在任何电路、硬件组件、集成电路(IC)或IC芯片中采用本文中所描述的装置。本文中所公开的存储器可为任何类型及大小的存储器,且可经配置以存储所要的任何类型的信息。为了清楚地说明此可互换性,上文已大体上关于功能性描述了各种说明性组件、块、模块、电路及步骤。如何实施此功能性视特定应用、设计选择及/或强加于整个系统的设计约束而定。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但所述实施决策不应解译为引起对本发明的范围的偏离。
可通过处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或经设计以执行本文中所描述功能的其它可编程逻辑装置、离散闸或晶体管逻辑、离散硬件组件,或其任何组合来实施或执行结合本文中所公开的方面而描述的各种说明性逻辑块、模块及电路。处理器可为微处理器,但在替代例中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器也可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、一或多个微处理器结合DSP核心或任何其它此配置。
也应注意,描述本文中的示范性方面中的任一者中所描述的操作步骤以提供实例及论述。可以除了所说明的序列以外的众多不同序列来执行所描述的操作。此外,描述于单一操作步骤中的操作可实际上以数个不同步骤执行。另外,可组合示范性方面中所论述的一或多个操作步骤。应理解,如所属领域的技术人员将容易地显而易见,流程图图式中所说明的操作步骤可经受众多不同修改。所属领域的技术人员也将理解,可使用任何多种不同技术与技法表示信息及信号。举例来说,可由电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子或其任何组合表示遍及以上描述可能参考的数据、指令、命令、信息、信号、位、符号及码片。
提供对本发明的先前描述以使得任何所属领域的技术人员能够进行或使用本发明。对本发明的各种修改对于所属领域的技术人员来说将为显而易见的,且本文中所定义的一般原理在不脱离本发明的精神或范围的情况下可适用于其它变体。因此,本发明不打算限于本文中所描述的实例及设计,而应符合与本文中所公开的原理及新颖特征相一致的最广泛范围。
Claims (24)
1.一种负载地址预测引擎,其包括负载地址预测表,所述负载地址预测表经配置以存储各自包括预测子标记字段及存储器地址字段的多个负载地址预测表项,且经配置以:
接收负载指令;
基于用于所述负载指令的识别符及负载路径历史指示符产生表索引及预测子标记;
确定所述预测子标记是否存在于所述多个负载地址预测表项中的对应于所述表索引的负载地址预测表项的预测子标记字段中;且
响应于确定所述预测子标记存在于所述多个负载地址预测表项中的对应于所述表索引的负载地址预测表项的预测子标记字段中,提供来自所述负载地址预测表项的存储器地址字段的存储器地址作为用于所述负载指令的所预测的存储器地址。
2.根据权利要求1所述的负载地址预测引擎,其进一步经配置以基于分支方向历史或分支路径历史或其组合产生所述表索引及所述预测子标记。
3.根据权利要求1所述的负载地址预测引擎,其进一步经配置以:
确定用于所述负载指令的所述所预测的存储器地址是否存在于处理器的系统数据高速缓存存储器中;
响应于确定用于所述负载指令的所述所预测的存储器地址存在于所述处理器的系统数据高速缓存存储器中:
从所述系统数据高速缓存存储器检索用于所述所预测的存储器地址的数据;且
将所述所检索的数据作为数据值预测提供到所述处理器的执行管线的后端指令管线;且
响应于确定用于所述负载指令的所述所预测的存储器地址不存在于所述处理器的系统数据高速缓存存储器中:
从所述处理器的系统存储器预取对应于所述所预测的存储器地址的数据;且将所述所预取的数据存储于所述处理器的所述系统数据高速缓存存储器中。
4.根据权利要求3所述的负载地址预测引擎,其中:
所述多个负载地址预测表项的每一负载地址预测表项进一步包括信赖值字段;且
所述负载地址预测引擎经配置以进一步响应于所述负载地址预测表项的所述信赖值字段超出所述负载地址预测引擎的信赖阈值字段而提供所述负载地址预测表项的所述存储器地址字段的所述存储器地址作为用于所述负载指令的所述所预测的存储器地址。
5.根据权利要求4所述的负载地址预测引擎,其进一步经配置以在所述负载指令的执行之后执行以下操作:
响应于确定所述预测子标记存在于所述多个负载地址预测表项中的对应于所述表索引的负载地址预测表项的所述预测子标记字段中:
确定所述负载指令的实际存储器地址是否匹配用于所述负载指令的所述所预测的存储器地址;
响应于确定所述负载指令的实际存储器地址匹配用于所述负载指令的所述所预测的存储器地址,递增对应于所述表索引的所述负载地址预测表项的所述信赖值字段;且
响应于确定所述负载指令的实际存储器地址不匹配用于所述负载指令的所述所预测的存储器地址,复位对应于所述表索引的所述负载地址预测表项的所述信赖值字段;且
响应于确定所述预测子标记不存在于所述多个负载地址预测表项中的对应于所述表索引的所述负载地址预测表项的所述预测子标记字段中:
确定对应于所述表索引的所述负载地址预测表项的所述信赖值字段是否为非零;
响应于确定对应于所述表索引的所述负载地址预测表项的所述信赖值字段为非零,递减对应于所述表索引的所述负载地址预测表项的所述信赖值字段;且
响应于确定对应于所述表索引的所述负载地址预测表项的所述信赖值字段为零(0),以用于所述负载指令的所述预测子标记及所述实际存储器地址初始化对应于所述表索引的所述负载地址预测表项。
6.根据权利要求3所述的负载地址预测引擎,其中:
所述多个负载地址预测表项的每一负载地址预测表项进一步包括高速缓存通路字段;且
所述负载地址预测引擎经配置以基于所述多个负载地址预测表项中的对应于所述表索引的所述负载地址预测表项的所述高速缓存通路字段确定用于所述负载指令的所述所预测的存储器地址是否存在于所述处理器的所述系统数据高速缓存存储器中。
7.根据权利要求1所述的负载地址预测引擎,其经配置以将所述负载地址预测表项的所述存储器地址字段的所述存储器地址作为用于所述负载指令的所述所预测的存储器地址提供到处理器的后端指令管线,以用于存储器歧义消除。
8.根据权利要求1所述的负载地址预测引擎,其集成到集成电路IC中。
9.根据权利要求1所述的负载地址预测引擎,其集成到选自由以下各者组成的群的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;移动电话;蜂窝式电话;智能型电话;平板计算机;平板手机;计算机;
便携式计算机;台式计算机;个人数字助理PDA;监视器;计算机监视器;电视;
调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;
数字视频播放器;视频播放器;数字视频光盘DVD播放器;便携式数字视频播放器;及汽车。
10.一种处理器的负载地址预测引擎,所述负载地址预测引擎包括:
用于接收负载指令的装置;
用于基于用于所述负载指令的识别符及负载路径历史指示符产生表索引及预测子标记的装置;
用于确定所述预测子标记是否存在于所述负载地址预测引擎的负载地址预测表的多个负载地址预测表项中的对应于所述表索引的负载地址预测表项的预测子标记字段中的装置;及
用于响应于确定所述预测子标记存在于所述负载地址预测引擎的所述负载地址预测表的所述多个负载地址预测表项中的对应于所述表索引的所述负载地址预测表项的所述预测子标记字段中而提供来自所述负载地址预测表项的存储器地址字段的存储器地址作为用于所述负载指令的所预测的存储器地址的装置。
11.一种用于提供负载地址预测的方法,其包括:
通过处理器的负载地址预测引擎接收负载指令;
基于用于所述负载指令的识别符及负载路径历史指示符产生表索引及预测子标记;
确定所述预测子标记是否存在于所述负载地址预测引擎的负载地址预测表的多个负载地址预测表项中的对应于所述表索引的负载地址预测表项的预测子标记字段中;且
响应于确定所述预测子标记存在于所述多个负载地址预测表项中的对应于所述表索引的负载地址预测表项的预测子标记字段中,提供来自所述负载地址预测表项的存储器地址字段的存储器地址作为用于所述负载指令的所预测的存储器地址。
12.根据权利要求11所述的方法,其中进一步基于分支方向历史或分支路径历史或其组合产生所述表索引及所述预测子标记。
13.根据权利要求11所述的方法,其进一步包括:
确定用于所述负载指令的所述所预测的存储器地址是否存在于所述处理器的系统数据高速缓存存储器中;
响应于确定用于所述负载指令的所述所预测的存储器地址存在于所述处理器的系统数据高速缓存存储器中:
从所述系统数据高速缓存存储器检索用于所述所预测的存储器地址的数据;且
将所述所检索的数据作为数据值预测提供到所述处理器的执行管线的后端指令管线;且
响应于确定用于所述负载指令的所述所预测的存储器地址不存在于所述处理器的系统数据高速缓存存储器中:
从所述处理器的系统存储器预取对应于所述所预测的存储器地址的数据;且
将所述所预取的数据存储于所述处理器的所述系统数据高速缓存存储器中。
14.根据权利要求13所述的方法,其中
所述多个负载地址预测表项的每一负载地址预测表项进一步包括信赖值字段;且提供所述负载地址预测表项的所述存储器地址字段的所述存储器地址作为用于所述负载指令的所述所预测的存储器地址进一步响应于所述负载地址预测表项的所述信赖值字段超出所述负载地址预测引擎的信赖阈值字段。
15.根据权利要求14所述的方法,其进一步包括,在所述负载指令的执行之后执行以下操作:
响应于确定所述预测子标记存在于所述多个负载地址预测表项中的对应于所述表索引的负载地址预测表项的所述预测子标记字段中:
确定所述负载指令的实际存储器地址是否匹配用于所述负载指令的所述所预测的存储器地址;
响应于确定所述负载指令的实际存储器地址匹配用于所述负载指令的所述所预测的存储器地址,递增对应于所述表索引的所述负载地址预测表项的所述信赖值字段;且
响应于确定所述负载指令的所述实际存储器地址不匹配用于所述负载指令的所述所预测的存储器地址,复位对应于所述表索引的所述负载地址预测表项的所述信赖值字段;且
响应于确定所述预测子标记不存在于所述多个负载地址预测表项中的对应于所述表索引的所述负载地址预测表项的所述预测子标记字段中:
确定对应于所述表索引的所述负载地址预测表项的信赖值字段是否为非零;
响应于确定对应于所述表索引的所述负载地址预测表项的所述信赖值字段为非零,递减对应于所述表索引的所述负载地址预测表项的所述信赖值字段;且
响应于确定对应于所述表索引的所述负载地址预测表项的所述信赖值字段为零(0),初始化对应于用于所述负载指令的所述表索引的所述负载地址预测表项。
16.根据权利要求13所述的方法,其中:
所述多个负载地址预测表项的每一负载地址预测表项进一步包括高速缓存通路字段;且
确定用于所述负载指令的所述所预测的存储器地址是否存在于所述处理器的所述系统数据高速缓存存储器中是基于所述多个负载地址预测表项中的对应于所述表索引的所述负载地址预测表项的所述高速缓存通路字段。
17.根据权利要求11所述的方法,其包括将所述负载地址预测表项的所述存储器地址字段的所述存储器地址作为用于所述负载指令的所述所预测的存储器地址提供到所述处理器的后端指令管线,以用于存储器歧义消除。
18.一种非暂时性计算机可读媒体,其上存储有当由处理器执行时使得所述处理器执行以下操作的计算机可执行指令:
接收负载指令;
基于用于所述负载指令的识别符及负载路径历史指示符产生表索引及预测子标记;
确定所述预测子标记是否存在于负载地址预测表的多个负载地址预测表项中的对应于所述表索引的负载地址预测表项的预测子标记字段中;且
响应于确定所述预测子标记存在于所述多个负载地址预测表项中的对应于所述表索引的负载地址预测表项的预测子标记字段中,提供来自所述负载地址预测表项的存储器地址字段的存储器地址作为用于所述负载指令的所预测的存储器地址。
19.根据权利要求18所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由所述处理器执行时,进一步使得所述处理器基于分支方向历史或分支路径历史或其组合产生所述表索引及所述预测子标记。
20.根据权利要求18所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,进一步使得所述处理器执行以下操作:
确定用于所述负载指令的所述所预测的存储器地址是否存在于所述处理器的系统数据高速缓存存储器中;
响应于确定用于所述负载指令的所述所预测的存储器地址存在于所述处理器的系统数据高速缓存存储器中:
从所述系统数据高速缓存存储器检索用于所述所预测的存储器地址的数据;且将所述所检索的数据作为数据值预测提供到所述处理器的执行管线的后端指令管线;且
响应于确定用于所述负载指令的所述所预测的存储器地址不存在于所述处理器的系统数据高速缓存存储器中:
从所述处理器的系统存储器预取对应于所述所预测的存储器地址的数据;且将所述所预取的数据存储于所述处理器的所述系统数据高速缓存存储器中。
21.根据权利要求20所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,进一步使得所述处理器响应于所述负载地址预测表项的信赖值字段超出所述负载地址预测引擎的信赖阈值字段而提供所述负载地址预测表项的所述存储器地址字段的所述存储器地址作为用于所述负载指令的所述所预测的存储器地址。
22.根据权利要求21所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,进一步使得所述处理器在所述负载指令的执行之后执行以下操作:
响应于确定所述预测子标记存在于所述多个负载地址预测表项中的对应于所述表索引的负载地址预测表项的所述预测子标记字段中:
确定所述负载指令的实际存储器地址是否匹配用于所述负载指令的所述所预测的存储器地址;
响应于确定所述负载指令的实际存储器地址匹配用于所述负载指令的所述所预测的存储器地址,递增对应于所述表索引的所述负载地址预测表项的所述信赖值字段;且
响应于确定所述负载指令的所述实际存储器地址不匹配用于所述负载指令的所述所预测的存储器地址,复位对应于所述表索引的所述负载地址预测表项的所述信赖值字段;且
响应于确定所述预测子标记不存在于所述多个负载地址预测表项中的对应于所述表索引的所述负载地址预测表项的所述预测子标记字段中:
确定对应于所述表索引的所述负载地址预测表项的信赖值字段是否为非零;
响应于确定对应于所述表索引的所述负载地址预测表项的信赖值字段为非零,递减对应于所述表索引的所述负载地址预测表项的所述信赖值字段;且
响应于确定对应于所述表索引的所述负载地址预测表项的所述信赖值字段为零(0),以用于所述负载指令的所述预测子标记及所述实际存储器地址初始化对应于所述表索引的所述负载地址预测表项。
23.根据权利要求20所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,进一步使得所述处理器基于所述多个负载地址预测表项中的对应于所述表索引的所述负载地址预测表项的高速缓存通路字段确定用于所述负载指令的所述所预测的存储器地址是否存在于所述处理器的所述系统数据高速缓存存储器中。
24.根据权利要求18所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,进一步使得所述处理器将所述负载地址预测表项的所述存储器地址字段的所述存储器地址作为用于所述负载指令的所述所预测的存储器地址提供到所述处理器的后端指令管线,以用于存储器歧义消除。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/087,069 | 2016-03-31 | ||
US15/087,069 US11709679B2 (en) | 2016-03-31 | 2016-03-31 | Providing load address predictions using address prediction tables based on load path history in processor-based systems |
PCT/US2017/020357 WO2017172232A1 (en) | 2016-03-31 | 2017-03-02 | Providing load address predictions using address prediction tables based on load path history in processor-based systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108780398A true CN108780398A (zh) | 2018-11-09 |
CN108780398B CN108780398B (zh) | 2022-06-07 |
Family
ID=58358898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780016881.8A Active CN108780398B (zh) | 2016-03-31 | 2017-03-02 | 在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11709679B2 (zh) |
EP (1) | EP3436930B1 (zh) |
JP (1) | JP6744423B2 (zh) |
KR (1) | KR20180127379A (zh) |
CN (1) | CN108780398B (zh) |
BR (1) | BR112018069818A2 (zh) |
CA (1) | CA3016029A1 (zh) |
TW (1) | TW201737068A (zh) |
WO (1) | WO2017172232A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936713B2 (en) | 2015-12-17 | 2021-03-02 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
US10235176B2 (en) | 2015-12-17 | 2019-03-19 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
US11281586B2 (en) * | 2017-05-09 | 2022-03-22 | Andes Technology Corporation | Processor and way prediction method thereof |
US10645133B2 (en) * | 2017-07-12 | 2020-05-05 | Loon Llc | Method and system for delivering content over transient access networks |
US10503648B2 (en) * | 2017-12-12 | 2019-12-10 | Advanced Micro Devices, Inc. | Cache to cache data transfer acceleration techniques |
US20210042100A1 (en) | 2018-02-02 | 2021-02-11 | Dover Microsystems, Inc. | System and method for translating mapping policy into code |
EP3746925A1 (en) | 2018-02-02 | 2020-12-09 | The Charles Stark Draper Laboratory Inc. | Systems and methods for policy execution processing |
WO2019213061A1 (en) | 2018-04-30 | 2019-11-07 | Dover Microsystems, Inc. | Systems and methods for checking safety properties |
US10838731B2 (en) * | 2018-09-19 | 2020-11-17 | Qualcomm Incorporated | Branch prediction based on load-path history |
WO2020097179A1 (en) | 2018-11-06 | 2020-05-14 | Dover Microsystems, Inc. | Systems and methods for stalling host processor |
WO2020132012A1 (en) | 2018-12-18 | 2020-06-25 | Dover Microsystems, Inc. | Systems and methods for data lifecycle protection |
US10929142B2 (en) * | 2019-03-20 | 2021-02-23 | International Business Machines Corporation | Making precise operand-store-compare predictions to avoid false dependencies |
US11243774B2 (en) | 2019-03-20 | 2022-02-08 | International Business Machines Corporation | Dynamic selection of OSC hazard avoidance mechanism |
US11829763B2 (en) | 2019-08-13 | 2023-11-28 | Apple Inc. | Early load execution via constant address and stride prediction |
US10896041B1 (en) * | 2019-09-25 | 2021-01-19 | Microsoft Technology Licensing, Llc | Enabling early execution of move-immediate instructions having variable immediate value sizes in processor-based devices |
US11204771B2 (en) * | 2019-10-24 | 2021-12-21 | Arm Limited | Methods and apparatus for handling processor load instructions |
US11194575B2 (en) * | 2019-11-07 | 2021-12-07 | International Business Machines Corporation | Instruction address based data prediction and prefetching |
GB2592661B (en) | 2020-03-05 | 2022-05-11 | Advanced Risc Mach Ltd | An apparatus and method for performing branch prediction |
TWI768547B (zh) * | 2020-11-18 | 2022-06-21 | 瑞昱半導體股份有限公司 | 管線式電腦系統與指令處理方法 |
US11630670B2 (en) | 2021-07-21 | 2023-04-18 | Apple Inc. | Multi-table signature prefetch |
US12045170B2 (en) * | 2021-12-08 | 2024-07-23 | Arm Limited | Replacement control for candidate producer-consumer relationships trained for prefetch generation |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
US6108775A (en) * | 1996-12-30 | 2000-08-22 | Texas Instruments Incorporated | Dynamically loadable pattern history tables in a multi-task microprocessor |
US6230260B1 (en) * | 1998-09-01 | 2001-05-08 | International Business Machines Corporation | Circuit arrangement and method of speculative instruction execution utilizing instruction history caching |
US6438673B1 (en) * | 1999-12-30 | 2002-08-20 | Intel Corporation | Correlated address prediction |
US20020124156A1 (en) * | 2000-12-29 | 2002-09-05 | Adi Yoaz | Using "silent store" information to advance loads |
US20080034187A1 (en) * | 2006-08-02 | 2008-02-07 | Brian Michael Stempel | Method and Apparatus for Prefetching Non-Sequential Instruction Addresses |
US20100049912A1 (en) * | 2008-08-20 | 2010-02-25 | Mips Technologies, Inc. | Data cache way prediction |
TW201106261A (en) * | 2009-08-12 | 2011-02-16 | Via Tech Inc | Microprocessors and storing methods using the same |
CN104335168A (zh) * | 2012-06-14 | 2015-02-04 | 国际商业机器公司 | 分支预测预加载 |
CN104903851A (zh) * | 2013-01-15 | 2015-09-09 | 高通股份有限公司 | 数据高速缓存通路预测 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10260834A (ja) | 1997-03-18 | 1998-09-29 | Fujitsu Ltd | ロードアドレス予測装置および並列処理装置およびそのロードアドレス予測方法 |
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 |
DE10121792C2 (de) * | 2000-05-26 | 2003-09-25 | Ibm | Universelle Ladeadresse/Wertevorhersageschema |
US6868491B1 (en) | 2000-06-22 | 2005-03-15 | International Business Machines Corporation | Processor and method of executing load instructions out-of-order having reduced hazard penalty |
US6907520B2 (en) | 2001-01-11 | 2005-06-14 | Sun Microsystems, Inc. | Threshold-based load address prediction and new thread identification in a multithreaded microprocessor |
JP3594081B2 (ja) | 2001-01-23 | 2004-11-24 | 日本電気株式会社 | 情報処理装置 |
JP4030314B2 (ja) | 2002-01-29 | 2008-01-09 | 富士通株式会社 | 演算処理装置 |
US6976147B1 (en) | 2003-01-21 | 2005-12-13 | Advanced Micro Devices, Inc. | Stride-based prefetch mechanism using a prediction confidence value |
US7430650B1 (en) | 2004-06-17 | 2008-09-30 | Richard Ross | Generating a set of pre-fetch address candidates based on popular sets of address and data offset counters |
US7856548B1 (en) * | 2006-12-26 | 2010-12-21 | Oracle America, Inc. | Prediction of data values read from memory by a microprocessor using a dynamic confidence threshold |
US7640420B2 (en) | 2007-04-02 | 2009-12-29 | Intel Corporation | Pre-fetch apparatus |
US9189432B2 (en) * | 2010-11-15 | 2015-11-17 | Arm Limited | Apparatus and method for predicting target storage unit |
US20140173294A1 (en) | 2012-12-14 | 2014-06-19 | Broadcom Corporation | Techniques for emulating an eeprom device |
GB2506462B (en) | 2013-03-13 | 2014-08-13 | Imagination Tech Ltd | Indirect branch prediction |
US9244827B2 (en) | 2013-09-25 | 2016-01-26 | Intel Corporation | Store address prediction for memory disambiguation in a processing device |
US9606805B1 (en) | 2015-10-19 | 2017-03-28 | International Business Machines Corporation | Accuracy of operand store compare prediction using confidence counter |
US10437595B1 (en) | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
US10353819B2 (en) * | 2016-06-24 | 2019-07-16 | Qualcomm Incorporated | Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system |
-
2016
- 2016-03-31 US US15/087,069 patent/US11709679B2/en active Active
-
2017
- 2017-03-02 CA CA3016029A patent/CA3016029A1/en not_active Abandoned
- 2017-03-02 WO PCT/US2017/020357 patent/WO2017172232A1/en active Application Filing
- 2017-03-02 TW TW106106784A patent/TW201737068A/zh unknown
- 2017-03-02 EP EP17711898.1A patent/EP3436930B1/en active Active
- 2017-03-02 BR BR112018069818A patent/BR112018069818A2/pt not_active IP Right Cessation
- 2017-03-02 KR KR1020187028217A patent/KR20180127379A/ko active IP Right Grant
- 2017-03-02 JP JP2018550596A patent/JP6744423B2/ja not_active Expired - Fee Related
- 2017-03-02 CN CN201780016881.8A patent/CN108780398B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
US6108775A (en) * | 1996-12-30 | 2000-08-22 | Texas Instruments Incorporated | Dynamically loadable pattern history tables in a multi-task microprocessor |
US6230260B1 (en) * | 1998-09-01 | 2001-05-08 | International Business Machines Corporation | Circuit arrangement and method of speculative instruction execution utilizing instruction history caching |
US6438673B1 (en) * | 1999-12-30 | 2002-08-20 | Intel Corporation | Correlated address prediction |
US20020124156A1 (en) * | 2000-12-29 | 2002-09-05 | Adi Yoaz | Using "silent store" information to advance loads |
US20080034187A1 (en) * | 2006-08-02 | 2008-02-07 | Brian Michael Stempel | Method and Apparatus for Prefetching Non-Sequential Instruction Addresses |
US20100049912A1 (en) * | 2008-08-20 | 2010-02-25 | Mips Technologies, Inc. | Data cache way prediction |
TW201106261A (en) * | 2009-08-12 | 2011-02-16 | Via Tech Inc | Microprocessors and storing methods using the same |
CN104335168A (zh) * | 2012-06-14 | 2015-02-04 | 国际商业机器公司 | 分支预测预加载 |
CN104903851A (zh) * | 2013-01-15 | 2015-09-09 | 高通股份有限公司 | 数据高速缓存通路预测 |
Also Published As
Publication number | Publication date |
---|---|
TW201737068A (zh) | 2017-10-16 |
EP3436930B1 (en) | 2020-05-20 |
CN108780398B (zh) | 2022-06-07 |
BR112018069818A2 (pt) | 2019-01-29 |
US20170286119A1 (en) | 2017-10-05 |
WO2017172232A1 (en) | 2017-10-05 |
US11709679B2 (en) | 2023-07-25 |
JP6744423B2 (ja) | 2020-08-19 |
KR20180127379A (ko) | 2018-11-28 |
JP2019514110A (ja) | 2019-05-30 |
CA3016029A1 (en) | 2017-10-05 |
EP3436930A1 (en) | 2019-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108780398A (zh) | 在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测 | |
US10353819B2 (en) | Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system | |
US10209993B2 (en) | Branch predictor that uses multiple byte offsets in hash of instruction block fetch address and branch pattern to generate conditional branch predictor indexes | |
US9710268B2 (en) | Reducing latency for pointer chasing loads | |
TWI545435B (zh) | 於階層式快取處理器中之協調預取 | |
US8370575B2 (en) | Optimized software cache lookup for SIMD architectures | |
JP2018523242A (ja) | 命令オペランドのための狭い生成値をアウトオブオーダプロセッサ内のレジスタマップ内に直接記憶すること | |
US9886385B1 (en) | Content-directed prefetch circuit with quality filtering | |
JP2000222205A (ja) | セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置 | |
US10684857B2 (en) | Data prefetching that stores memory addresses in a first table and responsive to the occurrence of loads corresponding to the memory addresses stores the memory addresses in a second table | |
US9940139B2 (en) | Split-level history buffer in a computer processing unit | |
US20150100762A1 (en) | Instruction cache with way prediction | |
US20170090936A1 (en) | Method and apparatus for dynamically tuning speculative optimizations based on instruction signature | |
US9384131B2 (en) | Systems and methods for accessing cache memory | |
JP2017537408A (ja) | アウトオブオーダー(ooo)プロセッサにおける早期命令実行を提供すること、ならびに関連する装置、方法、およびコンピュータ可読媒体 | |
US20160139933A1 (en) | Providing loop-invariant value prediction using a predicted values table, and related apparatuses, methods, and computer-readable media | |
US9223714B2 (en) | Instruction boundary prediction for variable length instruction set | |
KR20230023801A (ko) | 명령어 재인출을 감소시키기 위해 프로세서에서의 해저드에 응답하여 명령어 파이프라인 플러시 후 인출되고 플러시된 명령어들을 재사용하기 | |
CN106605207A (zh) | 使用文字加载预测表预测文字加载值,以及相关电路、方法和计算机可读媒体 | |
US20210271480A1 (en) | Delivering immediate values by using program counter (pc)-relative load instructions to fetch literal data in processor-based devices | |
US20160092232A1 (en) | Propagating constant values using a computed constants table, and related apparatuses and methods | |
US20160124859A1 (en) | Computing system with tiered fetch mechanism and method of operation thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |