CN107924310A - 使用避免转出表(pat)预测计算机处理器中的存储器指令转出 - Google Patents
使用避免转出表(pat)预测计算机处理器中的存储器指令转出 Download PDFInfo
- Publication number
- CN107924310A CN107924310A CN201680046129.3A CN201680046129A CN107924310A CN 107924310 A CN107924310 A CN 107924310A CN 201680046129 A CN201680046129 A CN 201680046129A CN 107924310 A CN107924310 A CN 107924310A
- Authority
- CN
- China
- Prior art keywords
- memory
- instruction
- memory instructions
- detected
- entry
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 431
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000008569 process Effects 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims description 33
- 238000003860 storage Methods 0.000 claims description 31
- 230000006399 behavior Effects 0.000 claims description 4
- 230000005611 electricity Effects 0.000 claims description 3
- 238000007689 inspection Methods 0.000 claims description 3
- 230000001413 cellular effect Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 15
- 239000000284 extract Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011017 operating method Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000004080 punching Methods 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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
-
- 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/3834—Maintaining memory consistency
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Abstract
公开使用避免转出表PAT预测计算机处理器中的存储器指令转出。在一个方面中,指令处理电路访问含有条目的PAT,每个条目包括存储器指令的地址。在检测指令流中的存储器指令之后,所述指令处理电路确定所述PAT是否含有具有所述存储器指令的地址的条目。如果是,则所述指令处理电路防止所述检测到的存储器指令在比所述检测到的存储器指令早的至少一个待决存储器指令之前生效,以抢占存储器指令转出。在一些方面中,所述指令处理电路可确定在执行待决存储器指令之后,是否已发生与所述检测到的存储器指令相关联的冲突。如果是,则在所述PAT中产生所述检测到的存储器指令的条目。
Description
优先权要求
本申请案主张2015年8月14日提交的标题为“使用避免转出表(PAT)预测计算机处理器中的存储器指令转出(PREDICTING MEMORY INSTRUCTION PUNTS IN A COMPUTERPROCESSOR USING A PUNT AVOIDANCE TABLE(PAT))”的第62/205,400号美国临时专利申请案的优先权,所述申请案的内容通过引用以其全文并入本文中。
本申请案还主张2015年9月24日提交的标题为“使用避免转出表(PAT)预测计算机处理器中的存储器指令转出(PREDICTING MEMORY INSTRUCTION PUNTS IN A COMPUTERPROCESSOR USING A PUNT AVOIDANCE TABLE(PAT))”的第14/863,612号美国专利申请案的优先权,所述申请案的内容通过引用以其全文并入本文中。
技术领域
本发明的技术大体上涉及处理无序(OOO)计算机处理器中的存储器指令,且具体来说,涉及避免由于冲突而重新提取及重新执行指令。
背景技术
无序(OOO)处理器是能够不管计算机程序中的指令的出现次序如何,按由每个指令的输入操作数的可用性确定的次序执行计算机程序指令的计算机处理器。通过无序地执行指令,OOO处理器可能够完全利用原本会在OOO处理器等待数据访问操作完成时浪费的处理器时钟循环。举例来说,当检索输入数据以便获得较早程序指令时,OOO处理器可继续执行能够立即执行的最近提取的指令,而不是不得不“故意拖延”(即,有意引入处理延迟)。以此方式,处理器时钟循环可由OOO处理器更高效地利用,从而导致每处理器时钟循环OOO处理器能够处理的指令的数目增加。
然而,存储器指令的无序执行可导致“转出”的发生。转出是由于检测到的冲突必须重新提取及重新执行一或多个存储器指令的情形。举例来说,转出可由写后读(RAW)冲突、读后读(RAR)冲突,及/或资源限制冲突(例如,作为非限制性实例,缺少可用的加载队列条目或存储队列条目)的发生而引起。存储器指令的重新提取及重新执行可降低处理器性能并产生更大功率消耗。
发明内容
在详细描述中所公开的方面包含使用避免转出表(PAT)预测计算机处理器中的存储器指令转出。就此而言,在一个方面中,计算机处理器中的指令处理电路访问用于预测及抢占存储器指令转出的PAT。如本文所使用的“转出”是指响应于由存储器指令的无序执行产生的冲突条件,重新提取及重新执行计算机处理器中的存储器指令及一或多个较早存储器指令的过程。PAT含有一或多个条目,每个条目包括先前无序执行及引起存储器指令转出的存储器指令的地址。在计算机程序的执行期间,指令处理电路检测指令流中的存储器指令,及确定PAT是否含有具有对应于所述存储器指令的地址的条目。如果PAT含有具有对应于存储器指令的地址的条目,则指令处理电路可通过防止检测到的存储器指令在比检测到的存储器指令早的至少一个待决存储器指令之前生效来抢占转出。作为非限制性实例,指令处理电路在一些方面中可执行比检测到的存储器指令早的至少一个待决存储器指令的有序分派,或可防止在完成比检测到的存储器指令早的至少一个待决存储器指令之前,检测到的存储器指令提前返回数据。以此方式,指令处理电路可减少存储器指令转出的发生,因此提供改进的处理器性能。
此外,在指令处理电路所遇到的冲突是写后读(RAW)冲突的一些示例性方面中,指令处理电路可防止检测到的存储器指令在比检测到的存储器指令早的任何待决存储器存储指令之前生效。作为另一示例性方面,当指令处理电路所遇到的冲突是读后读(RAR)冲突时,指令处理电路可防止检测到的存储器指令在比检测到的存储器指令早的任何待决存储器加载指令之前生效。对于冲突是资源限制冲突的方面,指令处理电路可防止检测到的存储器指令在比检测到的存储器指令早的任何待决存储器指令之前生效。
在另一方面中,提供一种在OOO计算机处理器中的指令处理电路。指令处理电路以通信方式耦合到执行管线的前端电路,并且包括提供多个条目的PAT。指令处理电路经配置以响应于确定检测到的存储器指令的地址存在于PAT的多个条目中的条目中,防止检测到的存储器指令在比检测到的存储器指令早的至少一个待决存储器指令之前生效以抢占存储器指令转出。
在另一方面中,指令处理电路提供于OOO计算机处理器中。指令处理电路包括用于提供PAT中的多个条目的装置。指令处理电路还包括用于响应于确定检测到的存储器指令的地址存在于PAT的多个条目中的条目中,防止检测到的存储器指令在比检测到的存储器指令早的至少一个待决存储器指令之前生效以抢占存储器指令转出的装置。
在另一方面中,提供一种用于预测存储器指令转出的方法。所述方法包括在指令流中检测存储器指令。所述方法进一步包括确定检测到的存储器指令的地址是否存在于PAT的条目中。所述方法还包括:响应于确定检测到的存储器指令的地址存在于条目中,防止检测到的存储器指令在比检测到的存储器指令早的至少一个待决存储器指令之前生效以抢占存储器指令转出。
在另一方面中,提供一种非暂时性计算机可读媒体,其具有存储于其上的计算机可执行指令,所述计算机可执行指令在由处理器执行时致使所述处理器在指令流中检测存储器指令。存储于其上的计算机可执行指令此外致使处理器确定检测到的存储器指令的地址是否存在于PAT的条目中。存储于其上的计算机可执行指令还致使处理器响应于确定检测到的存储器指令的地址存在于条目中,防止检测到的存储器指令在比检测到的存储器指令早的至少一个待决存储器指令之前生效以抢占存储器指令转出。
附图说明
图1是包含经配置以使用避免转出表(PAT)预测存储器指令转出的指令处理电路的示例性无序(OOO)计算机处理器的框图;
图2是说明图1的指令处理电路的示例性PAT的条目的框图;
图3A到3C说明用于建立图1的PAT中的条目,及随后响应于检测存储器指令而抢占存储器指令转出的图1中的指令处理电路的示例性通信流;
图4A到4C是说明使用指令处理电路的PAT预测存储器指令转出的图1中的指令处理电路的示例性操作的流程图;及
图5是可包含经配置以使用PAT预测存储器指令转出的图1的指令处理电路的示例性基于处理器的系统的框图。
具体实施方式
现参考图式,描述本发明的若干个示例性方面。词语“示例性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示例性”的任何方面不必解释为比其它方面优选或有利。
在详细描述中所公开的方面包含使用避免转出表(PAT)预测计算机处理器中的存储器指令转出。就此而言,图1是提供指令的无序处理以增加指令处理并行性的示例性无序(OOO)计算机处理器100的框图。如下文更详细地论述,OOO计算机处理器100包含访问用于预测存储器指令转出的PAT 104的指令处理电路102。作为非限制性实例,如本文使用的术语“存储器指令”一般指存储器加载指令及/或存储器存储指令。OOO计算机处理器100可涵盖已知数字逻辑元件、半导体电路、处理核心及/或存储器结构以及其它元件中的任一者,或其组合。本文中所描述的各方面并不限于任何特定元件布置,且所公开的技术可容易地扩展到半导体裸片或封装上的不同结构或布局。
OOO计算机处理器100包含存储器接口电路106、指令高速缓冲存储器108及加载/存储单元110,所述加载/存储单元包括数据高速缓冲存储器112及加载/存储队列114。在一些方面中,作为非限制性实例,数据高速缓冲存储器112可包括芯片上1级(L1)数据高速缓冲存储器。OOO计算机处理器100进一步包括执行管线116,所述执行管线包含指令处理电路102。指令处理电路102提供前端电路118、执行单元120及完成单元122。OOO计算机处理器100另外包含寄存器124,所述寄存器包括一或多个通用寄存器(GPR)126、程序计数器128及链路寄存器130。在(例如)采用 ARM7TM架构的一些方面中,链路寄存器130是GPR126中的一者,如图1中所示。或者,例如利用 架构的一些方面可提供以下情形:链路寄存器130与GPR 126分开(未展示)。
在示例性操作中,执行管线116的前端电路118从指令高速缓冲存储器108提取指令(未展示),在一些方面中,作为非限制性实例,所述指令高速缓冲存储器可为芯片上1级(L1)高速缓冲存储器。所提取的指令由前端电路118解码并发布到执行单元120。执行单元120执行所发布的指令,且完成单元122收回已执行的指令。在一些方面中,完成单元122可包括将执行结果存储在寄存器124中的一或多者中的写回机制(未展示)。应理解,执行单元120及/或完成单元122可各自包括一或多个依序管线级。在图1的实例中,前端电路118包括能使多个指令同时被提取及解码的一或多个提取/解码管线级132。用于保存等待分派到执行单元120的所提取指令的指令队列134以通信方式耦合到提取/解码管线级132中的一或多者。
当在执行管线116中处理指令时,指令处理电路102可按与提取指令的程序次序不同的次序执行存储器指令,例如,存储器加载指令及/或存储器存储指令。因此,在一些情形下,存储器指令的无序执行可引起存储器指令“转出”的发生,其中由于检测到的冲突必须重新提取及重新执行存储器指令及一个或多个较早存储器指令。举例来说,进入同一存储器地址的在较早存储器存储指令之前执行的较新存储器加载指令可产生RAW冲突,由此需要重新提取及重新执行存储器加载指令及存储器存储指令。类似地,进入同一存储器地址的在较早存储器加载指令之前执行的较新存储器加载指令可引起发生RAR冲突,从而迫使重新提取及重新执行两个存储器加载指令。在一些方面中,较新存储器加载指令可消耗所有可用资源(例如,作为非限制性实例,加载队列条目(未展示)或存储队列条目(未展示)),从而防止执行较早存储器指令,由此需要重新提取及重新执行所有待决存储器指令。在这些情形中的每一者中,存储器指令的重新提取及重新执行可不利地影响处理器性能并可引起更大功率消耗。
就此而言,图1的指令处理电路102包含用于预测存储器指令转出的PAT 104。指令处理电路102经配置以检测在执行管线116内处理的指令流(未展示)中的存储器指令(未展示)。在通过指令处理电路102的前端电路118提取存储器指令时,指令处理电路102咨询PAT104。PAT 104含有一或多个条目(未展示)。PAT 104的每个条目可包含先前检测到的存储器指令的地址,所述先前检测到的存储器指令的分派及执行导致冲突及后续的存储器指令转出。
指令处理电路102确定所提取的存储器指令的地址是否存在于PAT 104的条目中。如果在PAT 104的条目中找到存储器指令的地址(即,“命中”),则可推断出存储器指令的前一个无序执行导致转出并且很可能再次这样。为了抢先排除转出的可能性,指令处理电路102防止检测到的存储器指令在比检测到的存储器指令早的至少一个待决存储器指令之前生效(即,作为非限制性实例,防止被无序分派及/或防止提供数据的提前返回)。作为非限制性实例,指令处理电路102在一些方面中可执行比检测到的存储器指令早的至少一个待决存储器指令的有序分派,或可防止在完成比检测到的存储器指令早的至少一个待决存储器指令之前,检测到的存储器指令提前返回数据。根据一些方面,指令处理电路102可通过将一或多个属性(未展示)添加到检测到的存储器指令来防止检测到的存储器指令提前返回数据。这些属性可指示阻止检测到的存储器指令的数目的提前返回(例如,从数据高速缓冲存储器112),并且检测到的存储器指令应替代地等待解决所有较早的存储器操作冲突。
如上所述,取决于与PAT 104的条目相关联的冲突的类型,用于防止检测到的存储器指令在比检测到的存储器指令早的至少一个待决存储器指令之前生效的不同操作可应用于不同类型的存储器指令。作为非限制性实例,如果存储器指令的前一个无序执行导致RAW冲突,则指令处理电路102可防止检测到的存储器指令在比检测到的存储器指令早的任何待决存储器存储指令之前生效。如果RAR冲突由存储器指令的前一个无序执行产生,则指令处理电路102可防止检测到的存储器指令在比检测到的存储器指令早的任何待决存储器加载指令之前生效。对于冲突是资源限制冲突的方面,指令处理电路102可防止检测到的存储器指令在比检测到的存储器指令早的任何待决存储器指令之前生效。
根据本文所公开的一些方面,如果指令处理电路102检测到存储器指令,但未在PAT104的条目中找到存储器指令的地址,则发生“未命中”。在这种情况下,指令处理电路102可继续处理存储器指令。如果在执行比存储器指令早的待决存储器指令之后,随后发生与检测到的存储器指令相关联的冲突,则可在PAT 104中产生含有存储器指令的地址的条目。随后,可重新提取及重新执行存储器指令及待决存储器指令。
为了说明在一些方面中可对应于图1的PAT 104的示例性PAT 200,提供图2。为清楚起见,在描述图2时参考图1的元件。如图2中所见,PAT 200包含多个条目202(0)到202(Y),所述条目中的每一者可存储与检测到的存储器指令(未展示)相关联的数据。条目202(0)到202(Y)中的每一者包含用于存储相关联存储器指令的地址,例如地址206的地址字段204。响应于发生由位于地址206处的存储器指令的无序执行产生的冲突,可由指令处理电路102产生条目,例如条目202(0)。
根据一些方面,PAT 200的每个条目202(0)到202(Y)还可包含用于存储冲突指示符,例如冲突指示符210的任选的冲突指示符字段208。在一些方面中,冲突指示符210可包括一或多个位,所述一或多个位提供对应于相关联存储器指令的冲突类型(例如,作为非限制性实例,RAW冲突、RAR冲突或资源限制冲突)的指示。在确定抢占存储器指令转出所采取的合适措施时,指令处理电路102可采用冲突指示符210。在不包含冲突指示符字段208的PAT 200的一些方面中,PAT 200可专用于追踪单个类型的冲突。举例来说,作为非限制性实例,PAT 200可专用于仅追踪RAW冲突。一些方面可提供以下情况:提供多个PAT 200,每个PAT追踪不同冲突类型。
一些方面还可提供以下情况:PAT 200的条目202(0)到202(Y)中的每一者进一步包含存储偏置计数器值214的偏置计数器字段212。PAT 200的条目202(0)到202(Y)还可包含存储偏置阈值218的偏置阈值字段216。偏置计数器值214及偏置阈值218可由指令处理电路102用于判断由于相关联存储器指令的无序执行发生存储器指令转出的相对可能性。指令处理电路102随后可基于偏置计数器值214及偏置阈值218来确定是抢占存储器指令转出,还是继续存储器指令的常规处理。举例来说,在每次发生与对应于条目202(0)的存储器指令相关联的冲突之后,偏置计数器值214可递增。如果同样在指令流中检测到存储器指令,则仅当偏置计数器值214超过偏置阈值218时,指令处理电路102才可防止存储器指令在比存储器指令早的待决存储器指令之前生效。一些方面可提供以下情况:代替存储在偏置阈值字段216中,偏置阈值218可存储在与PAT 200分离的位置中,例如图1的寄存器124中的一者中,或可由指令处理电路102进行硬编码。
应理解,一些方面可提供以下情况:PAT 200的条目202(0)到202(Y)可包含除了图2中所说明的字段204、208、212及216之外的其它字段。此外应理解,在一些方面中,PAT 200可被实施为根据本领域中已知的关联性及替换策略配置的高速缓冲存储器。在图2的实例中,PAT 200被说明为单个数据结构。然而,在一些方面中,PAT 200还可包括多于一个数据结构或高速缓冲存储器。
为了更好地说明图1的指令处理电路102与加载/存储单元110之间的示例性通信流,提供图3A到3C。图3A说明用于存储器指令的无序执行的示例性通信流,而图3B展示用于建立PAT 104中的条目的示例性通信流。图3C说明在预测后续的存储器指令转出期间的示例性通信流。
如图3A到3C中所示,指令处理电路102处理指令流300,所述指令流包括三个指令:存储器存储指令(ST)302(0)及两个存储器加载指令(LD)302(1)及302(2)。存储器存储指令302(0)及存储器加载指令302(1)、302(2)在本文中还统称为“存储器指令302(0)到302(2)”。在此实例中,存储器存储指令302(0)引导OOO计算机处理器100将值存储在存储器位置M(未展示)中,而存储器加载指令302(1)、302(2)各自引导OOO计算机处理器100从存储器位置M读取值。在图3A到3C的实例中,就程序次序而言,存储器存储指令302(0)是最早的,而存储器加载指令302(1)是第二早的且存储器加载指令302(2)是最新的。存储器加载指令302(2)与地址304相关联,在此实例中,所述地址是十六进制值0x414。应理解,在一些方面中,可从例如图1的程序计数器128检索地址304。
图3A到3C中所说明的PAT 104包含多个条目306(0)到306(X)。为了促进存储器指令转出的预测,PAT 104的每个条目306(0)到306(x)包含对应于图2的地址字段204的地址字段308。如上所述,每个条目306(0)到306(X)的地址字段308可用于存储由指令处理电路102检测到的存储器加载指令302(2)的地址304。尽管在图3A的实例中未展示,但是在一些方面中,PAT 104的条目306(0)到306(X)还可包含对应于图2的冲突指示符字段208、偏置计数器字段212及/或偏置阈值字段216的字段。
现参考图3A,在此实例中,指令处理电路102选择在已执行较早存储器存储指令302(0)及较早存储器加载指令302(1)之前,无序执行存储器加载指令302(2)。如通过箭头310所指示,指令处理电路102首先检查PAT 104以确定是否可在条目306(0)到306(X)中的任一者中找到存储器加载指令302(2)的地址304(即,十六进制值0x414)。指令处理电路102无法在条目306(0)到306(X)中找到地址304,因此响应于“未命中”,继续存储器加载指令302(2)的常规处理。存储器加载指令302(2)因此读取数据高速缓冲存储器112,并且返回存储在存储器位置M处的数据,如通过箭头312及314所指示。
在图3B中,指令处理电路102接下来选择执行存储器存储指令302(0),如通过箭头316所指示。如上所述,存储器存储指令302(0)比存储器加载指令302(2)早,并且将值存储在通过存储器加载指令302(2)读取的同一存储器位置M中。因此,指令处理电路102尝试执行存储器存储指令302(0)会引起检测冲突318(在这种情况下,RAW冲突)。响应于检测到冲突318,指令处理电路102在PAT 104中产生条目306(0),并且将存储器加载指令302(2)的地址304存储在条目306(0)的地址字段308中,如通过箭头320所指示。指令处理电路102随后致使存储器存储指令302(0)及存储器加载指令302(2)进行重新提取及重新执行(未展示),由此导致存储器指令转出。
转向图3C,在重新提取存储器存储指令302(0)及存储器加载指令302(2)之后,指令处理电路102同样选择在已执行较早存储器存储指令302(0)及存储器加载指令302(1)之前,无序执行存储器加载指令302(2)。如通过箭头322所指示,指令处理电路102检查PAT104以确定在条目306(0)到306(X)中的任一者中是否找到存储器加载指令302(2)的地址304,并且此时间定位条目306(0)。作为响应,指令处理电路102防止存储器加载指令302(2)在比存储器加载指令302(2)早的待决存储器指令302(0)到302(1)中的一或多者之前生效。在此实例中,出于清楚起见,PAT 104不包含任选的冲突指示符字段,因此假设PAT 104仅与追踪RAW冲突相关联。指令处理电路102因此防止存储器加载指令302(2)在待决存储器存储指令302(0)之前生效。如图3C中所见,通过在存储器加载指令302(2)之前执行存储器存储指令302(0)的有序分派,指令处理电路102防止存储器加载指令302(2)在待决存储器存储指令302(0)之前生效,如通过箭头324所指示。一些方面可提供以下情况:通过防止存储器加载指令302(2)提前返回数据,指令处理电路102可防止存储器加载指令302(2)在待决存储器存储指令302(0)之前生效。
应理解,在冲突318是RAR冲突的一些方面中,指令处理电路102可防止存储器加载指令302(2)在待决存储器加载指令302(1)之前生效。根据冲突318是资源限制冲突的各方面,指令处理电路102可防止存储器加载指令302(2)在比存储器加载指令302(2)早的待决存储器指令302(0)到302(1)中的任一者之前生效。一些方面可提供以下情况:可基于冲突指示符,例如图2的冲突指示符210确定冲突318的类型。在一些方面中,指令处理电路102可基于偏置计数器值,例如,将图2的偏置计数器值214及偏置阈值216相比较来确定是否防止存储器加载指令302(2)在待决存储器指令302(0)到302(1)之前生效。
为了说明用于使用图1的PAT 104预测存储器指令转出的示例性操作,提供图4A到4C。为清楚起见,在描述图4A到4C时参考图1、2及3A到3C的元件。图4A中的操作开始于图1的指令处理电路102在指令流300中检测存储器指令,例如,存储器加载指令302(2)(块400)。指令处理电路102接下来确定检测到的存储器指令302(2)的地址304是否存在于PAT 104的条目306(0)(块402)中。如果不是,则存储器指令302(2)不与前一个存储器指令转出相关联,因此指令处理电路102持续处理指令流300(块404)。处理随后在图4C的块418处恢复。
如果在决策块402处,确定存在检测到的存储器指令302(2)的地址304,则在一些方面中,指令处理电路102此外可确定PAT 104的条目306(0)的偏置计数器字段212中的偏置计数器值214是否超过偏置阈值218(块406)。如果不是,则指令处理电路102可推断出存储器指令转出的可能性相对较低。在这种情况下,指令处理电路102继续指令流300的常规处理(块404)。如果指令处理电路102不利用任选的偏置计数器值214,或如果指令处理电路102在任选的决策块406处确定偏置计数器值214超过偏置阈值218,在处理在图4B的块408处恢复。
现在参考图4B,指令处理电路102防止检测到的存储器指令302(2)在比检测到的存储器指令302(2)早的至少一个待决存储器指令302(0)到302(1)之前生效,以抢占存储器指令转出(块408)。在一些方面中,用于防止检测到的存储器指令302(2)在至少一个待决存储器指令302(0)到302(1)之前生效的块408的操作可包括执行比检测到的存储器指令302(2)早的至少一个待决存储器指令302(0)到302(1)的有序分派(块409)。一些方面可提供以下情况:用于防止检测到的存储器指令302(2)在至少一个待决存储器指令302(0)到302(1)之前生效的块408的操作可包括防止在完成比检测到的存储器指令302(2)早的至少一个待决存储器指令302(0)到302(1)之前,检测到的存储器指令302(2)提前返回数据(块410)。
在一些方面中,用于防止检测到的存储器指令302(2)在至少一个待决存储器指令302(0)到302(1)之前生效的块408的操作可通过指令处理电路102首先确定与PAT 104的条目306(0)相关联的冲突的类型来实现(块411)。一些方面可提供以下情况:可使用冲突指示符,例如图2的冲突指示符210确定冲突的类型。根据一些方面,可提供多个PAT104,每个PAT与特定冲突类型相关联。
如果PAT 104的条目306(0)在决策块411处确定为与RAW冲突相关联,则指令处理电路102可防止检测到的存储器指令302(2)在比检测到的存储器指令302(2)早的任何待决存储器存储指令302(0)之前生效(块412)。如果在决策块411处确定PAT 104的条目306(0)与RAR冲突相关联,则指令处理电路102可防止检测到的存储器指令302(2)在比检测到的存储器指令302(2)早的所有待决存储器加载指令302(1)之前生效(块414)。如果PAT 104的条目306(0)与资源限制冲突相关联,则指令处理电路102可防止检测到的存储器指令302(2)在比检测到的存储器指令302(2)早的所有待决存储器指令302(0)到302(1)之前生效(块416)。处理随后在图4C的块418处恢复。
在图4C中,在一些方面中,指令处理电路102此外可确定在执行比检测到的存储器指令302(2)早的至少一个待决存储器指令302(0)到302(1)中的待决存储器指令302(0)之后,是否发生与检测到的存储器指令302(2)相关联的冲突318(块418)。如果不是,则指令处理电路102继续处理指令流300(块420)。然而,如果在决策块418处确定发生冲突318,则根据采用任选的偏置计数器值214的一些方面,指令处理电路102可确定检测到的存储器指令302(2)的地址304是否存在于PAT 104的条目306(0)中(块422)。如果是,则指令处理电路102可使偏置计数器值214递增(块424)。指令处理102随后重新执行检测到的存储器指令302(2)及至少一个待决存储器指令302(0)(块426)。
如果指令处理电路102在决策块422处确定不存在地址304,或如果指令处理电路102不使用任选的偏置计数器值214,则指令处理电路102可在PAT 104中产生条目306(0),所述条目306(0)包括检测到的存储器指令302(2)的地址304(块428)。指令处理电路102接下来重新执行检测到的存储器指令302(2)及至少一个待决存储器指令302(0)(块426)。指令处理电路102随后继续处理指令流300(块420)。
根据本文所公开的各方面的使用PAT预测存储器指令转出可提供于或集成到任何基于处理器的装置中。实例包含(但不限于)机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、桌上型计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(DVD)播放器及便携式数字视频播放器。
就此而言,图5说明可采用图1所说明的指令处理电路102的基于处理器的系统500的实例。在此实例中,基于处理器的系统500包含一或多个中央处理单元(CPU)502,每一中央处理单元包含一或多个处理器504。一或多个处理器504可包含图1的指令处理电路(IPC)102,并且可执行图4A到4C中所说明的操作。CPU 502可为主装置。CPU 502可具有耦合到处理器504以快速访问临时存储的数据的高速缓冲存储器506。CPU 502耦合到系统总线508,且可将基于处理器的系统500中所包含的主装置与从装置互相耦合。众所周知,CPU 502通过在系统总线508上交换地址、控制及数据信息而与这些其它装置通信。举例来说,CPU 502可将总线事务请求传送到存储器控制器510(作为从装置的实例)。
其它主装置及从装置可连接到系统总线508。如图5中所说明,作为实例,这些装置可包含存储器系统512、一或多个输入装置514、一或多个输出装置516、一或多个网络接口装置518,及一或多个显示器控制器520。输入装置514可包含任何类型的输入装置,包含但不限于输入按键、开关、语音处理器等。输出装置516可包含任何类型的输出装置,包含但不限于音频、视频、其它视觉指示符等。网络接口装置518可为经配置以允许将数据交换到网络522并交换来自所述网络的数据的任何装置。网络522可为任何类型的网络,包含但不限于有线或无线网络、私用或公共网络、局域网(LAN)、广域网(WLAN)及因特网。网络接口装置518可经配置以支持所要的任何类型的通信协议。存储器系统512可包含一或多个存储器单元524(0到N)。
CPU 502还可经配置以通过系统总线508访问显示器控制器520,以控制发送到一或多个显示器526的信息。显示器控制器520将信息发送到显示器526,以通过一或多个视频处理器528显示,所述视频处理器处理将显示成适合于显示器526的格式的信息。显示器526可包含任何类型的显示器,包含但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
本领域技术人员将进一步了解,结合本文中所公开的各方面所描述的各种说明性逻辑块、模块、电路及算法可被实施为电子硬件、存储于存储器中或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或此两者的组合。作为实例,本文中所描述的主装置及从装置可用于任何电路、硬件组件、集成电路(IC)或IC芯片中。本文所公开的存储器可为任何类型及大小的存储器,并且可经配置以存储所希望的任何类型的信息。为了清楚说明此可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路及步骤。如何实施此功能性取决于特定应用、设计选项及/或强加于整个系统的设计约束。本领域技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为引起对本发明的范围的偏离。
可用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其经设计以执行本文所描述的功能的任何组合来实施或执行结合本文中所公开的方面而描述的各种说明性逻辑块、模块及电路。处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一或多个微处理器与DSP核心的结合,或任何其它此种配置。
本文中所公开的方面可以硬件及存储于硬件中的指令来体现,且可驻留于(例如)随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可装卸式磁盘、CD-ROM或本领域中已知的任何其它形式的计算机可读媒体中。示例性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可集成到处理器。处理器及存储媒体可驻留在ASIC中。ASIC可驻留于远程站中。在替代方案中,处理器及存储媒体可作为离散组件驻留在远程站、基站或服务器中。
还应注意,描述本文中的示例性方面中的任一者中所描述的操作步骤是为了提供实例及论述。所描述的操作可按除所说明的序列之外的大量不同序列来执行。此外,单个操作步骤中所描述的操作实际上可在许多不同步骤中执行。另外,可组合在示例性方面中所论述的一或多个操作步骤。应理解,本领域的技术人员将易于显而易见,流程图中所说明的操作步骤可经受众多不同修改。本领域技术人员还将理解,可使用多种不同技术及技艺中的任一者来表示信息及信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号及芯片。
提供本发明的先前描述以使本领域技术人员能够制造或使用本发明。本领域技术人员将易于显而易见对本发明的各种修改,且本文中所定义的一般原理可应用于其它变化形式而不会脱离本发明的精神或范围。因此,本发明并不希望限于本文中所描述的实例及设计,而应被赋予与本文中所公开的原理及新颖特征相一致的最广范围。
Claims (29)
1.一种无序OOO计算机处理器中的指令处理电路;
所述指令处理电路以通信方式耦合到执行管线的前端电路,并且包括提供多个条目的避免转出表PAT;
所述指令处理电路经配置以响应于确定检测到的存储器指令的地址存在于所述PAT的所述多个条目中的条目中,防止所述检测到的存储器指令在比所述检测到的存储器指令早的至少一个待决存储器指令之前生效以抢占存储器指令转出。
2.根据权利要求1所述的指令处理电路,其中所述指令处理电路经配置以通过经配置以执行比所述检测到的存储器指令早的所述至少一个待决存储器指令的有序分派,防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效。
3.根据权利要求1所述的指令处理电路,其中所述指令处理电路经配置以通过经配置以防止在完成比所述检测到的存储器指令早的所述至少一个待决存储器指令之前所述检测到的存储器指令提前返回数据,防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效。
4.根据权利要求1所述的指令处理电路,其进一步经配置以基于所述PAT的所述条目的冲突指示符来确定与所述检测到的存储器指令相关联的冲突类型,所述冲突类型选自由以下各项组成的群组:写后读RAW冲突、读后读RAR冲突,及资源限制冲突。
5.根据权利要求1所述的指令处理电路,其进一步经配置以通过经配置以执行以下操作来防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效:
确定所述PAT的所述条目是否与RAW冲突相关联;及
响应于确定所述PAT的所述条目与所述RAW冲突相关联,防止所述检测到的存储器指令在比所述检测到的存储器指令早的任何待决存储器存储指令之前生效。
6.根据权利要求1所述的指令处理电路,其进一步经配置以通过经配置以执行以下操作来防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效:
确定所述PAT的所述条目是否与RAR冲突相关联;及
响应于确定所述PAT的所述条目与所述RAR冲突相关联,防止所述检测到的存储器指令在比所述检测到的存储器指令早的任何待决存储器加载指令之前生效。
7.根据权利要求1所述的指令处理电路,其进一步经配置以通过经配置以执行以下操作来防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效:
确定所述PAT的所述条目是否与资源限制冲突相关联;及
响应于确定所述PAT的所述条目与所述资源限制冲突相关联,防止所述检测到的存储器指令在比所述检测到的存储器指令早的任何待决存储器指令之前生效。
8.根据权利要求1所述的指令处理电路,其进一步经配置以:
确定在执行比所述检测到的存储器指令早的所述至少一个待决存储器指令中的待决存储器指令之后,是否发生与所述检测到的存储器指令相关联的冲突;及
响应于确定发生与所述检测到的存储器指令相关联的所述冲突:
在所述PAT中产生所述条目,所述条目包括所述检测到的存储器指令的所述地址;及
重新执行所述检测到的存储器指令及所述至少一个待决存储器指令。
9.根据权利要求8所述的指令处理电路,其进一步经配置以:
在于所述PAT中产生所述条目之前:
确定所述检测到的存储器指令的所述地址是否存在于所述PAT的条目中;及
响应于确定所述检测到的存储器指令的所述地址存在于所述条目中,使所述条目的偏置计数器字段的偏置计数器值递增;及
在防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效之前,确定所述PAT的所述条目的所述偏置计数器字段的所述偏置计数器值是否超过偏置阈值;
其中所述指令处理电路经配置以:
响应于确定所述检测到的存储器指令的所述地址不存在于所述PAT的所述条目中,在所述PAT中产生所述条目;及
响应于确定所述偏置计数器值超过所述偏置阈值,防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效。
10.根据权利要求1所述的指令处理电路,其集成到集成电路IC中。
11.根据权利要求1所述的指令处理电路,其集成到选自由以下各项组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;移动电话;蜂窝式电话;计算机;便携式计算机;桌上型计算机;个人数字助理PDA;监视器;计算机监视器;电视机;调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;
数字视频光盘DVD播放器,及便携式数字视频播放器。
12.一种无序OOO计算机处理器中的指令处理电路,其包括:
用于提供避免转出表PAT中的多个条目的装置;及
用于响应于确定检测到的存储器指令的地址存在于所述PAT的所述多个条目中的条目中,防止所述检测到的存储器指令在比所述检测到的存储器指令早的至少一个待决存储器指令之前生效以抢占存储器指令转出的装置。
13.一种用于预测存储器指令转出的方法,其包括:
在指令流中检测存储器指令;
确定所述检测到的存储器指令的地址是否存在于避免转出表PAT的条目中;及响应于确定所述检测到的存储器指令的所述地址存在于所述条目中,防止所述检测到的存储器指令在比所述检测到的存储器指令早的至少一个待决存储器指令之前生效。
14.根据权利要求13所述的方法,其中防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效包括:执行比所述检测到的存储器指令早的所述至少一个待决存储器指令的有序分派。
15.根据权利要求13所述的方法,其中防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效包括:防止在完成比所述检测到的存储器指令早的所述至少一个待决存储器指令之前,所述检测到的存储器指令提前返回数据。
16.根据权利要求13所述的方法,其中防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效是基于与所述检测到的存储器指令相关联的冲突类型,所述冲突类型选自由以下各项组成的群组:写后读RAW冲突、读后读RAR冲突,及资源限制冲突。
17.根据权利要求13所述的方法,其中防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效包括:
确定所述PAT的所述条目是否与RAW冲突相关联;及
响应于确定所述PAT的所述条目与所述RAW冲突相关联,防止所述检测到的存储器指令在比所述检测到的存储器指令早的任何待决存储器存储指令之前生效。
18.根据权利要求13所述的方法,其中防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效包括:
确定所述PAT的所述条目是否与RAR冲突相关联;及
响应于确定所述PAT的所述条目与所述RAR冲突相关联,防止所述检测到的存储器指令在比所述检测到的存储器指令早的任何待决存储器加载指令之前生效。
19.根据权利要求13所述的方法,其中防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效包括:
确定所述PAT的所述条目是否与资源限制冲突相关联;及
响应于确定所述PAT的所述条目与所述资源限制冲突相关联,防止所述检测到的存储器指令在比所述检测到的存储器指令早的任何待决存储器指令之前生效。
20.根据权利要求13所述的方法,其进一步包括:
确定在分派比所述检测到的存储器指令早的所述至少一个待决存储器指令中的待决存储器指令之后,是否发生与所述检测到的存储器指令相关联的冲突;及
响应于确定发生与所述检测到的存储器指令相关联的所述冲突:
在所述PAT中产生所述条目,所述条目包括所述检测到的存储器指令的所述地址;及
重新执行所述检测到的存储器指令及所述至少一个待决存储器指令。
21.根据权利要求20所述的方法,其进一步包括:
在于所述PAT中产生所述条目之前:
确定所述检测到的存储器指令的所述地址是否存在于所述PAT的条目中;及响应于确定所述检测到的存储器指令的所述地址存在于所述条目中,使所述条目的偏置计数器字段的偏置计数器值递增;及
在防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效之前,确定所述PAT的所述条目的所述偏置计数器字段的所述偏置计数器值是否超过偏置阈值;
其中:
响应于确定所述检测到的存储器指令的所述地址不存在于所述PAT的所述条目中,在所述PAT中产生所述条目;及
响应于确定所述偏置计数器值超过所述偏置阈值,防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效。
22.一种其上存储有计算机可执行指令的非暂时性计算机可读媒体,所述计算机可执行指令在由处理器执行时致使所述处理器:
在指令流中检测存储器指令;
确定所述检测到的存储器指令的地址是否存在于避免转出表PAT的条目中;及响应于确定所述检测到的存储器指令的所述地址存在于所述条目中,防止所述检测到的存储器指令在比所述检测到的存储器指令早的至少一个待决存储器指令之前生效以抢占存储器指令转出。
23.根据权利要求22所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,
所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器:通过执行比所述检测到的存储器指令早的所述至少一个待决存储器指令的有序分派,防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效。
24.根据权利要求22所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,
所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器:通过防止在完成比所述检测到的存储器指令早的所述至少一个待决存储器指令之前所述检测到的存储器指令提前返回数据,防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效。
25.根据权利要求22所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,
所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器:通过以下操作防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效:
确定所述PAT的所述条目是否与写后读冲突RAW相关联;及
响应于确定所述PAT的所述条目与所述RAW冲突相关联,防止所述检测到的存储器指令在比所述检测到的存储器指令早的任何待决存储器存储指令之前生效。
26.根据权利要求22所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,
所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器:通过以下操作防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效:
确定所述PAT的所述条目是否与读后读冲突RAR相关联;及
响应于确定所述PAT的所述条目与所述RAR冲突相关联,防止所述检测到的存储器指令在比所述检测到的存储器指令早的任何待决存储器加载指令之前生效。
27.根据权利要求22所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,
所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器:通过以下操作防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效:
确定所述PAT的所述条目是否与资源限制冲突相关联;及
响应于确定所述PAT的所述条目与所述资源限制冲突相关联,防止所述检测到的存储器指令在比所述检测到的存储器指令早的任何待决存储器指令之前生效。
28.根据权利要求22所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,
所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器:
确定在执行比所述检测到的存储器指令早的所述至少一个待决存储器指令中的待决存储器指令之后,是否发生与所述检测到的存储器指令相关联的冲突;及
响应于确定发生与所述检测到的存储器指令相关联的所述冲突:
在所述PAT中产生所述条目,所述条目包括所述检测到的存储器指令的所述地址;及
重新执行所述检测到的存储器指令及所述至少一个待决存储器指令。
29.根据权利要求28所述的非暂时性计算机可读媒体,其上存储有计算机可执行指令,
所述计算机可执行指令在由所述处理器执行时进一步致使所述处理器:
在于所述PAT中产生所述条目之前:
确定所述检测到的存储器指令的所述地址是否存在于所述PAT的条目中;及
响应于确定所述检测到的存储器指令的所述地址存在于所述条目中,使所述条目的偏置计数器字段的偏置计数器值递增;
在防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效之前,确定所述PAT的所述条目的所述偏置计数器字段的所述偏置计数器值是否超过偏置阈值;
响应于确定所述检测到的存储器指令的所述地址不存在于所述PAT的所述条目中,在所述PAT中产生所述条目;及
响应于确定所述偏置计数器值超过所述偏置阈值,防止所述检测到的存储器指令在比所述检测到的存储器指令早的所述至少一个待决存储器指令之前生效。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562205400P | 2015-08-14 | 2015-08-14 | |
US62/205,400 | 2015-08-14 | ||
US14/863,612 US20170046167A1 (en) | 2015-08-14 | 2015-09-24 | Predicting memory instruction punts in a computer processor using a punt avoidance table (pat) |
US14/863,612 | 2015-09-24 | ||
PCT/US2016/042234 WO2017030691A1 (en) | 2015-08-14 | 2016-07-14 | Predicting memory instruction punts in a computer processor using a punt avoidance table (pat) |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107924310A true CN107924310A (zh) | 2018-04-17 |
Family
ID=57995472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680046129.3A Pending CN107924310A (zh) | 2015-08-14 | 2016-07-14 | 使用避免转出表(pat)预测计算机处理器中的存储器指令转出 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20170046167A1 (zh) |
EP (1) | EP3335111B1 (zh) |
JP (1) | JP2018523241A (zh) |
KR (1) | KR20180037980A (zh) |
CN (1) | CN107924310A (zh) |
WO (1) | WO2017030691A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10324727B2 (en) * | 2016-08-17 | 2019-06-18 | Arm Limited | Memory dependence prediction |
US10776125B2 (en) * | 2018-12-05 | 2020-09-15 | Apple Inc. | Coprocessor memory ordering table |
GB2585202B (en) * | 2019-07-01 | 2021-11-24 | Advanced Risc Mach Ltd | An apparatus and method for speculatively vectorising program code |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050091460A1 (en) * | 2003-10-22 | 2005-04-28 | Rotithor Hemant G. | Method and apparatus for out of order memory scheduling |
CN101620526A (zh) * | 2009-07-03 | 2010-01-06 | 中国人民解放军国防科学技术大学 | 一种减少流处理器片上指令存储器资源消耗的方法 |
CN102012872A (zh) * | 2010-11-24 | 2011-04-13 | 烽火通信科技股份有限公司 | 一种用于嵌入式系统的二级缓存控制方法及装置 |
CN102341794A (zh) * | 2009-03-03 | 2012-02-01 | 高通股份有限公司 | 可配置高速缓冲存储器及其配置方法 |
US20130318330A1 (en) * | 2009-12-22 | 2013-11-28 | International Business Machines Corporation | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5958041A (en) * | 1997-06-26 | 1999-09-28 | Sun Microsystems, Inc. | Latency prediction in a pipelined microarchitecture |
US8285947B2 (en) * | 2009-02-06 | 2012-10-09 | Apple Inc. | Store hit load predictor |
US20130173886A1 (en) * | 2012-01-04 | 2013-07-04 | Qualcomm Incorporated | Processor with Hazard Tracking Employing Register Range Compares |
US8954678B2 (en) * | 2012-06-15 | 2015-02-10 | International Business Machines Corporation | Automatic pattern-based operand prefetching |
US9235521B2 (en) * | 2013-07-22 | 2016-01-12 | Avago Technologies General Ip (Singapore) Pte Ltd | Cache system for managing various cache line conditions |
US9880849B2 (en) * | 2013-12-09 | 2018-01-30 | Macom Connectivity Solutions, Llc | Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard |
US10209995B2 (en) * | 2014-10-24 | 2019-02-19 | International Business Machines Corporation | Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions |
US9606805B1 (en) * | 2015-10-19 | 2017-03-28 | International Business Machines Corporation | Accuracy of operand store compare prediction using confidence counter |
US20170329607A1 (en) * | 2016-05-16 | 2017-11-16 | International Business Machines Corporation | Hazard avoidance in a multi-slice processor |
-
2015
- 2015-09-24 US US14/863,612 patent/US20170046167A1/en not_active Abandoned
-
2016
- 2016-07-14 KR KR1020187004118A patent/KR20180037980A/ko unknown
- 2016-07-14 JP JP2018506269A patent/JP2018523241A/ja active Pending
- 2016-07-14 CN CN201680046129.3A patent/CN107924310A/zh active Pending
- 2016-07-14 EP EP16745934.6A patent/EP3335111B1/en active Active
- 2016-07-14 WO PCT/US2016/042234 patent/WO2017030691A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050091460A1 (en) * | 2003-10-22 | 2005-04-28 | Rotithor Hemant G. | Method and apparatus for out of order memory scheduling |
CN102341794A (zh) * | 2009-03-03 | 2012-02-01 | 高通股份有限公司 | 可配置高速缓冲存储器及其配置方法 |
CN101620526A (zh) * | 2009-07-03 | 2010-01-06 | 中国人民解放军国防科学技术大学 | 一种减少流处理器片上指令存储器资源消耗的方法 |
US20130318330A1 (en) * | 2009-12-22 | 2013-11-28 | International Business Machines Corporation | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors |
CN102012872A (zh) * | 2010-11-24 | 2011-04-13 | 烽火通信科技股份有限公司 | 一种用于嵌入式系统的二级缓存控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3335111B1 (en) | 2019-08-21 |
EP3335111A1 (en) | 2018-06-20 |
US20170046167A1 (en) | 2017-02-16 |
WO2017030691A1 (en) | 2017-02-23 |
KR20180037980A (ko) | 2018-04-13 |
JP2018523241A (ja) | 2018-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3436930B1 (en) | Providing load address predictions using address prediction tables based on load path history in processor-based systems | |
US9195466B2 (en) | Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
TWI536165B (zh) | 用於快取佔有率判定與指令排程之方法及設備 | |
US20110066830A1 (en) | Cache prefill on thread migration | |
EP2972787B1 (en) | Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
TW200405201A (en) | Scheduler for use in a microprocessor that supports data-speculative execution | |
US20210026639A1 (en) | Latency-based instruction reservation clustering in a scheduler circuit in a processor | |
JP2018534675A (ja) | 再マッピング同期によるタスクサブグラフの加速化 | |
CN105683905A (zh) | 在多核心处理器中并行功能的高效率硬件分派及相关的处理器系统、方法及计算机可读媒体 | |
US20180081691A1 (en) | REPLAYING SPECULATIVELY DISPATCHED LOAD-DEPENDENT INSTRUCTIONS IN RESPONSE TO A CACHE MISS FOR A PRODUCING LOAD INSTRUCTION IN AN OUT-OF-ORDER PROCESSOR (OoP) | |
CN104603747B (zh) | 响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法 | |
WO2019019719A1 (zh) | 分支预测方法及装置 | |
US9697127B2 (en) | Semiconductor device for controlling prefetch operation | |
CN106575220A (zh) | 多个经集群极长指令字处理核心 | |
CN107924310A (zh) | 使用避免转出表(pat)预测计算机处理器中的存储器指令转出 | |
CN107077335A (zh) | 使用所预测值表来提供循环不变值预测,以及相关设备、方法和计算机可读媒体 | |
WO2014025815A1 (en) | Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
EP2856304B1 (en) | Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media | |
CN106605207A (zh) | 使用文字加载预测表预测文字加载值,以及相关电路、方法和计算机可读媒体 | |
CN114281413A (zh) | 流水线冲突处理方法、数据处理装置、电子设备和介质 | |
US11928474B2 (en) | Selectively updating branch predictors for loops executed from loop buffers in a processor | |
WO2024102118A1 (en) | Two-level reservation station | |
TW202416125A (zh) | 提供用於儲存主幹分支元資料及葉分支元資料的擴展分支目標緩衝(btb)項目 | |
CN108255745A (zh) | 处理器以及无效指令缓存的方法 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180417 |
|
WD01 | Invention patent application deemed withdrawn after publication |