CN107077335A - 使用所预测值表来提供循环不变值预测,以及相关设备、方法和计算机可读媒体 - Google Patents
使用所预测值表来提供循环不变值预测,以及相关设备、方法和计算机可读媒体 Download PDFInfo
- Publication number
- CN107077335A CN107077335A CN201580057273.2A CN201580057273A CN107077335A CN 107077335 A CN107077335 A CN 107077335A CN 201580057273 A CN201580057273 A CN 201580057273A CN 107077335 A CN107077335 A CN 107077335A
- Authority
- CN
- China
- Prior art keywords
- instruction
- institute
- value
- entry
- predicted value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000001419 dependent effect Effects 0.000 claims abstract description 37
- 230000004044 response Effects 0.000 claims abstract description 35
- 238000001514 detection method Methods 0.000 claims abstract description 10
- 230000002596 correlated effect Effects 0.000 claims description 18
- 238000004519 manufacturing process Methods 0.000 claims description 4
- 230000001934 delay Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000005611 electricity Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000011017 operating method Methods 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001447 compensatory effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000006870 function 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
- 238000013507 mapping Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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
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)
Abstract
本发明揭示使用所预测值表提供循环不变值预测,以及相关设备、方法和计算机可读媒体。在一个方面中,提供一种包括指令处理电路的设备。所述指令处理电路经配置以检测指令流中的循环主体,且检测所述循环主体内的值产生指令。所述指令处理电路确定所述值产生指令的属性是否与所预测值表的条目匹配。如果确定所述值产生指令的所述属性将存在于所述所预测值表的所述条目中,那么所述指令处理电路进一步确定所述条目的计数器是否超过迭代阈值。响应于确定所述条目的所述计数器超过所述迭代阈值,所述指令处理电路提供所述所预测值表的所述条目中的所预测值,以用于至少一个相依指令的执行。
Description
优先权申请案
本申请案主张2014年11月18日申请且标题为“使用所预测值表来提供循环不变值预测,以及相关设备、方法和计算机可读媒体(PROVIDING LOOP-INVARIANT VALUEPREDICTION USING A PREDICTED VALUES TABLE,AND RELATED APPARATUSES,METHODS,ANDCOMPUTER-READABLE MEDIA)”的第14/546,243美国专利申请案的优先权,其以全文引用的方式并入本文中。
技术领域
本发明的技术大体上涉及处理器对计算机程序的乱序处理执行。
背景技术
许多常规计算机处理器核心能够通过执行被称作“乱序”(OOO)处理的处理来优化性能。在OOO处理器中,用于相依指令的输入一可用,就可执行依赖于由产生器指令产生作为输入的值的相依指令,不管所述相依指令的实际程序次序如何。OOO处理器因此可实现较大等级的并行指令执行,从而产生较大的指令通过量和较大的处理器性能。
然而,OOO处理器的性能可不利地受具有长等待时间的产生器指令(即,其消耗过量的处理器循环,以便产生用于相依指令的输入)影响。在此类情况下,可阻止相依指令执行,从而导致处理器资源的低效利用。如果产生器和相依指令位于循环的主体内,那么负面影响可加剧。一些OOO处理器可尝试通过使用使相依指令能够与产生器指令的执行并行调度的值预测机制来减轻长等待时间产生器指令的影响。但是,此类机制的误预测可导致相对较高的性能代偿(例如需要冲洗或选择性地重放所有最近取到的指令),这随着长等待时间产生器指令的等待时间而增加。此外,常规值预测机制可具有非常受限的覆盖度,因为它们可仅相对于特定指令类型来操作。
发明内容
详细描述中所揭示的方面包含使用所预测值表来提供循环不变值预测。还揭示相关设备、方法和计算机可读媒体。在这点上,在一个方面中,提供一种指令处理电路,以在计算机程序指令的运行时间实现循环不变值预测功能性。所述指令处理电路可提供所预测值表,以用于高速缓存将在指令之间传播的所预测值。所述指令处理电路可经配置以检测指令流中的循环主体。在一些方面,可通过将程序计数器(PC)相关分支指令定位到在PC相关分支指令的地址前面的目标地址来检测循环主体。在此些方面中,PC相关分支指令表示循环主体的结束,而目标地址经分支来表示所述循环主体的开头。在检测所述循环主体之后,指令处理电路检测所述循环主体内的值产生指令。所述指令处理电路接着确定所述值产生指令的属性(地址,作为非限制性实例)是否与所述所预测值表的条目匹配。如果值产生指令的属性与所预测值表的条目匹配,那么可通过指令处理电路将所述条目的计数器与迭代阈值进行比较。如果所述条目的计数器超过所述迭代阈值,那么可假定值产生指令是“循环不变”指令,其所预测值可在所述循环的迭代过程中改变极少或根本不改变。所述指令处理电路因此提供存储在所预测值表的条目中的所预测值,以用于至少一个相依指令的执行。以此方式,可将所预测值传播到相依指令,而不需要值产生指令的再执行,从而产生改进的处理器性能。在一些方面,如果值产生指令的属性与所预测值表的条目匹配,但所述条目的计数器并不超过迭代阈值,当通过值产生指令的执行产生的实际值与所述条目的所预测值匹配时,所述计数器可递增。
在另一方面,提供一种包括指令处理电路的设备。所述指令处理电路经配置以检测指令流中的循环主体。所述指令处理电路进一步经配置以检测所述循环主体内的值产生指令。所述指令处理电路还经配置以确定值产生指令的属性是否与所预测值表的条目匹配。所述指令处理电路另外经配置以响应于确定值产生指令的属性与所预测值表的条目匹配,确定所述条目的计数器是否超过迭代阈值。所述指令处理电路还经配置以响应于确定条目的计数器超过迭代阈值,提供所预测值表的条目中的所预测值,以用于执行至少一个相依指令。
在另一方面,提供一种包括指令处理电路的设备。所述指令处理电路包括用于检测指令流中的循环主体的装置。所述指令处理电路进一步包括用于检测所述循环主体内的值产生指令的装置。所述指令处理电路还包括用于确定值产生指令的属性是否与所预测值表的条目匹配的装置。所述指令处理电路另外包括用于响应于确定值产生指令的属性与所预测值表的条目匹配来确定所述条目的计数器是否超过迭代阈值的装置。所述指令处理电路进一步包括用于响应于确定所述条目的计数器超过迭代阈值来提供所预测值表的条目中的所预测值以用于执行至少一个相依指令的装置。
在另一方面,提供一种用于提供循环不变值预测的方法。所述方法包括检测指令流中的循环主体。所述方法进一步包括检测所述循环主体内的值产生指令。所述方法还包括确定值产生指令的属性是否与所预测值表的条目匹配。所述方法另外包括响应于确定值产生指令的属性与所预测值表的条目匹配,确定所述条目的计数器是否超过迭代阈值。所述方法进一步包括响应于确定所述条目的计数器超过迭代阈值,提供所述所预测值表的条目中的所预测值,以用于执行至少一个相依指令。
在另一方面,提供一种上面存储有计算机可执行指令的非暂时性计算机可读媒体。所述计算机可执行指令致使处理器检测指令流中的循环主体。所述计算机可执行指令进一步致使所述处理器检测所述循环主体内的值产生指令。所述计算机可执行指令还致使所述处理器确定值产生指令的属性是否与所预测值表的条目匹配。所述计算机可执行指令另外致使所述处理器响应于确定值产生指令的属性与所预测值表的条目匹配,确定所述条目的计数器是否超过迭代阈值。所述计算机可执行指令进一步致使所述处理器响应于确定条目的计数器超过迭代阈值,提供所预测值表的条目中的所预测值,以用于执行至少一个相依指令。
附图说明
图1是包含用于使用所预测值表提供循环不变值预测的指令处理电路的示范性计算机处理器的框图;
图2是说明图1的所预测值表的示范性元素的图;
图3A到3F说明用于检测循环主体,产生图1的所预测值表中的条目,使所述条目的计数器递增,且通过图1的指令处理电路将所述条目的所预测值提供给相依指令的示范性通信流;
图4A到4C是说明用于使用图1的指令处理电路的所预测值表来提供循环不变值预测的示范性操作的流程图;以及
图5是可包含图1的指令处理电路的示范性基于处理器的系统的框图。
具体实施方式
现参考各图,描述本发明的若干示范性方面。词语“示范性”在本文中用于表示“充当实例、例子或说明”。本文中描述为“示范性”的任何方面未必理解为比其它方面优选或有利。
详细描述中所揭示的方面包含使用所预测值表来提供循环不变值预测。还揭示相关设备、方法和计算机可读媒体。在这点上,在一个方面中,提供一种指令处理电路,以在计算机程序指令的运行时间实现循环不变值预测功能性。所述指令处理电路可提供所预测值表,以用于高速缓存将在指令之间传播的所预测值。所述指令处理电路可经配置以检测指令流中的循环主体。在一些方面,可通过将程序计数器(PC)相关条件性分支指令定位到在PC相关条件性分支指令的地址前面的目标地址来检测循环主体。在此些方面中,PC相关条件性分支指令表示循环主体的结束,而目标地址经分支来表示所述循环主体的开头。在检测所述循环主体之后,指令处理电路检测所述循环主体内的值产生指令。所述指令处理电路接着确定所述值产生指令的属性(地址,作为非限制性实例)是否与所述所预测值表的条目匹配。如果值产生指令的属性与所预测值表的条目匹配,那么可通过指令处理电路将所述条目的计数器与迭代阈值进行比较。如果所述条目的计数器超过所述迭代阈值,那么可假定值产生指令是“循环不变”指令,其所预测值可在所述循环的迭代过程中改变极少或根本不改变。所述指令处理电路因此提供存储在所预测值表的条目中的所预测值,以用于至少一个相依指令的执行。以此方式,可将所预测值传播到相依指令,而不需要值产生指令的再执行,从而产生改进的处理器性能。在一些方面,如果值产生指令的属性与所预测值表的条目匹配,但所述条目的计数器并不超过迭代阈值,当通过值产生指令的执行产生的实际值与所述条目的所预测值匹配时,所述计数器可递增。
在这点上,图1是示范性计算机处理器100的框图。计算机处理器100包含指令处理电路102,其提供用于提供循环不变值预测的所预测值表104,本文所揭示。计算机处理器100可包含已知数字逻辑元件、半导体电路、处理核心和/或存储器结构中的任一者,以及其它元件或其组合。本文中所描述的各方面并不限于任何特定元件布置,且所揭示的技术可容易地扩展到半导体裸片或封装上的各种结构和布局。
计算机处理器100包含输入/输出电路106、指令高速缓冲存储器108和数据高速缓冲存储器110。计算机处理器100进一步包括执行管线112,所述执行管线包含前端电路114、执行单元116和完成单元118。计算机处理器100另外包含寄存器120,所述寄存器包括一或多个通用寄存器(GPR)122、程序计数器124和链接寄存器126。在(例如)使用ARM7TM架构的一些方面,链接寄存器126是GPR 122中的一者,如图1中所示。替代地,例如利用架构的一些方面可假定链接寄存器126与GPR 122分开。
在示范性操作中,执行管线112的前端电路114从指令高速缓冲存储器108提取指令(未图示);在一些方面中,所述指令缓存可为芯片上1级(L1)高速缓冲存储器(作为非限制性实例)。所提取的指令由前端电路114解码并发布到执行单元116。执行单元116执行所发布的指令,且完成单元118收回已执行的指令。在一些方面,完成单元118可包括写回机制(未图示),其将指令执行的结果存储在寄存器120中的一或多者中。应理解,执行单元116和/或完成单元118可各自包括一或多个循序管线级。在图1的实例中,前端电路114包括能使多个指令同时被提取和解码的一或多个提取/解码管线级128。用于保持等待调度到执行单元116的所提取的指令的指令队列130以通信方式耦合到一或多个提取/解码管线级128中的一或多者。
图1的计算机处理器100的一些方面可提供任选的常数高速缓冲存储器132,其以通信方式耦合到执行管线112的一或多个元件。常数高速缓冲存储器132可提供快速存取机制,通过所述快速存取机制,先前存储在寄存器120中的一者中的值可提供给将所述值用作输入操作数的指令。常数高速缓冲存储器132可因此通过比寄存器120更快速地提供对所存储的值的存取来改进计算机处理器100的性能。
计算机处理器100可提供指令的乱序(OOO)处理,以增加指令处理并行度。然而,如上所述,OOO处理性能可不利地受长等待时间产生器指令影响,这可消耗过量的处理器循环,以便产生用于相依指令的输入。这可使所述相依指令的执行延迟,且可导致计算机处理器100的负面性能影响,尤其在产生器和相依指令位于循环主体内的情况下。
在这点上,图1的指令处理电路102提供所预测值表104,以用于在计算机程序指令的运行时间将循环不变值预测提供到相依指令。指令处理电路102经配置以检测在执行管线112内处理的指令流(未图示)内的循环主体(未图示)。在一些方面,指令处理电路102可通过检测到在PC相关条件性分支指令的地址前面的目标地址(未图示)的程序计数器(PC)相关条件性分支指令(未图示)来检测循环主体。如果预测将采取PC相关条件性分支指令,那么可假定所述PC相关条件性分支指令表示循环主体的结束,且目标地址表示所述循环主体的开头。在一些方面,指令处理电路102可使用任选的循环主体指示符134来跟踪正处理的指令是否在循环主体内。下文相对于图3A到3F更详细地论述使用循环主体指示符134的示范性操作。
在检测到所述循环主体之后,指令处理电路102可检测在执行管线112内处理的循环主体内的值产生指令(未图示)。在一些方面,指令处理电路102可经配置以检测产生或检索值的任何指令,作为“值产生指令”。当指令处理电路102的前端电路114提取每一值产生指令时,指令处理电路102查阅所预测值表104。所预测值表104含有一或多个条目(未图示)。每一条目可包含先前检测到的值产生指令的属性,以及先前由值产生指令产生的对应于所述属性的所预测值。一些方面可假定所述属性包括值产生指令的地址和/或值产生指令的索引,作为非限制性实例。每一条目还可包含计数器,其指示循环迭代的数目,其中所预测值已与值产生指令所产生的实际值匹配。因此,在一些方面,计数器值越大,值产生指令是循环不变指令的置信度越大,其所产生的值在所述循环主体内可变化极少或根本不变化。下文相对于图2更详细地论述所预测值表104的示范性元素。
指令处理电路102确定正提取的值产生指令的属性是否与所预测值表104的条目匹配。根据本文所揭示的一些方面,指令处理电路102可经配置以进一步确定所述条目的计数器值是否超过指令处理电路102所跟踪的迭代阈值136。如果是(即,“命中”),那么指令处理电路102将来自所述条目的所预测值提供到至少一个相依指令。在其中计算机处理器100包含任选的常数高速缓冲存储器132的方面,指令处理电路102可经由常数高速缓冲存储器132将所预测值提供到至少一个相依指令(例如将所预测值写入到常数高速缓冲存储器132)。以此方式,指令处理电路102可利用常数高速缓冲存储器132的现有功能性,以将所预测值提供到至少一个相依指令,因此避免实施额外通信路径的需要。所述至少一个相依指令可因此获得值产生指令的所预测值,而不要求再执行值产生指令。
在一些方面,指令处理电路102可确定值产生指令的属性与所预测值表104的条目匹配,但所述条目的计数器并不超过迭代阈值136。在此些方面中,指令处理电路102可确定值产生指令的执行所产生的实际值是否与所述条目的所预测值匹配。如果是,那么用于值产生指令的所述条目的计数器可递增。如果值产生指令的执行所产生的实际值并不与所述条目的所预测值匹配,那么指令处理电路102可使所述条目失效。
根据本文所揭示的一些方面,如果指令处理电路102检测到值产生指令,但并未在所预测值表104的条目中找到值产生指令的属性,那么发生“未中”。在此情况下,指令处理电路102可在执行值产生指令后,即刻产生所预测值表104中对应于值产生指令的条目。所产生的条目包含值产生指令的属性,并存储由值产生指令产生的实际值,作为所述条目的所预测值。在一些方面,可使用于所产生的条目的计数器初始化(例如初始化到值零)。如果且当指令处理电路102再次检测到值产生指令时,那么所预测值表104中可出现“命中”。
图2说明可表示图1的所预测值表104的方面的示范性所预测值表200。为描述图2的清楚起见,参考图1的元素。如图2中所见,所预测值表200包含多个条目202(0)到202(X)。每一条目202(0)到202(X)包含程序计数器(PC)字段204,其表示图1的指令处理电路102先前检测到的值产生指令的属性。在一些方面,PC字段204可存储包括值产生指令的物理地址的属性,而一些方面可提供存储包括值产生指令的虚拟地址的属性的PC字段204。在后一种情况下,指令处理电路102可包含额外逻辑(未图示),以便在虚拟地址到物理地址的映射改变时,使条目202(0)到202(X)中的一或多者失效。根据本文所揭示的一些方面,PC字段204可仅存储构成值产生指令的属性的位的子集。一些方面可假定值产生指令的属性包括值产生指令的物理寄存器编号和/或值产生指令的序号。
条目202(0)到202(X)中的每一者还包含值字段206。值字段206存储在值产生指令的执行后即刻产生的实际值。在值产生指令的后续检测后,指令处理电路102可即刻向相依指令提供值字段206的内容作为所预测值。在一些方面,值字段206的大小可小于计算机处理器100所支持的常数值的最大大小,以节约处理器面积。作为非限制性实例,计算机处理器100可支持64位常数,而值字段206可仅存储所预测值的下部32个位。在其中大多数所预测值由32个或较少的有效位组成的方面中,较小值字段206的使用可提供空间和/或电力节省,对所预测值表200的功能性具有极少影响到无影响。
所预测值表200的条目202(0)到202(X)中的每一者还包含计数器208。在一些方面,当图1的指令处理电路102产生对应条目202(0)到202(X)时,计数器208可初始化(例如设定成值零)。当检测和执行与条目202(0)到202(X)中的每一者相关联的值产生指令时,每当值产生指令所产生的实际值与条目202(0)到202(X)的值字段206匹配时,对应计数器208可递增。如果计数器208的值超过图1的迭代阈值136,那么指令处理电路102接着可在值字段206中提供所预测值,作为值产生指令的所预测值。
应理解,一些方面可假定除图2中所说明的字段204、206和208之外,所预测值表200的条目202(0)到202(X)可包含其它字段。作为非限制性实例,条目202(0)到202(X)可包含一或多个有效位(未图示),其指示条目202(0)到202(X)和/或其构成元素的有效性。将进一步理解,在一些方面中,所预测值表200可实施为根据此项技术中已知的关联性和替换策略来配置的高速缓冲存储器。在图2的实例中,将所预测值表200说明为单个数据结构。然而,在一些方面,所预测值表200还可包括多于一个数据结构或高速缓冲存储器。
为了更好地说明,提供指令处理电路102与图1、图3A到3F的所预测值表104之间的示范性通信流。图3A提供指令处理电路300的元件的概述,其对应于图1的指令处理电路102的一个方面。图3B到3F接着说明用于检测循环主体,产生所预测值表条目、使所预测值表条目的计数器递增,且提供相依指令的所预测值的示范性通信流。为清楚起见,在描述图3A到3F时参考图1的元件。
如图3A中所见,指令处理电路300包含所预测值表302。在此实例中,指令处理电路300处理指令流304,其包括指令306、308、310、312、314和316。为了说明起见,下文再现指令306、308、310、312、314和316,其中关于各自的操作的简要备注为:
LDR R0,#x1234 (306;将十六进制值1234加载到寄存器R0中)
LDR R1,#x8 (308;将十六进制值8加载到寄存器R1中)
… (任选的介入指令)
A:LDR R3,R0 (310;在地址A,将R0的值加载到寄存器R3中)
添加R4、R4、R3 (312;将R3的值添加到寄存器R4,并存储在R4中)
… (任选的介入指令)
SUBS R1,R1,#x1 (314;使R1中的值递减)
BNE A (316;如果R1不是零,那么分支返回到地址A)
如图3A中所见,指令310、312、314和316因此包含于循环主体318中。循环执行总共八次,如寄存器R1中的值所确定,且反复地用来自寄存器R0的值来加载寄存器R3,并将来自寄存器R3的值添加到寄存器R4。注意,在示出的指令306、308、310、312、314和316中,加载到寄存器R3中的值在循环的主体内并不改变。因为指令310产生将存储在寄存器R3中的值,所以指令310在本文中可被称作“值产生指令310”。类似地,因为指令312使用指令310所产生的值作为输入,所以指令312可被称为“相依指令312”。指令316包括PC相关条件性分支指令,且因此可在本文中被称作“PC相关条件性分支指令316”。
图3A中说明的所预测值表302包含条目320(0)到320(3)。为了促进所预测值的传播,所预测值表302的每一条目320(0)到320(3)包含程序计数器(PC)字段322、值字段324和计数器326。可使用每一条目320(0)到320(3)的PC字段322来存储包括有指令处理电路300检测到的值产生指令的地址的属性。值字段324可将值产生指令所产生的与所述属性相关联的所预测值存储在PC字段322中。同样地,计数器326可存储反映与PC字段322中的属性相关联的值产生指令已产生存储在值字段324中的所预测值的次数的循环迭代计数器值。应理解,尽管图3A的所预测值表302包含四个条目320(0)到320(3),在一些方面中,所预测值表302可包含较多或较少条目。
指令处理电路300还包含循环主体指示符328和迭代阈值330。在一些方面,循环主体指示符328可由指令处理电路300用来确定当前正提取的指令是否在循环主体318内。迭代阈值330可反映指示多少循环迭代的阈值,在所述循环迭代中,可需要值产生指令来在被视为循环不变之前产生相同的值。在图3A的实例中,清空循环主体指示符328,且将迭代阈值330设定成值一(1)。
如图3A中所见,数据高速缓冲存储器110(对应于图1的数据高速缓冲存储器110)由条目332(0)到332(Y)组成,其各自包括地址字段334和值字段336。条目332(0)到332(Y)中的每一者对应于值产生指令的先前执行期间产生的值。在这点上,地址字段334存储先前所产生的值的地址,而值字段336存储所述值的副本。
图3A中所示的常数高速缓冲存储器132(对应于图1的任选的常数高速缓冲存储器132)包括条目338(0)到338(Z)。条目338(0)到338(Z)中的每一者包含寄存器字段340和值字段342。每一条目338(0)到338(Z)的寄存器字段340指示图1的与条目338(0)到338(Z)相关联的寄存器120中的一者,而值字段342指示最近存储在对应寄存器120中的所预测值。如上文所论述,常数高速缓冲存储器132可提供快速存取机制,其与直接从寄存器120加载所述值相比,提供对高速缓存的值的较快存取。应理解,指令处理电路300的一些方面可配置有不同通信路径,以提供来自所预测值表302的所预测值,且在此些方面中,可不使用常数高速缓冲存储器132。
现参看图3B,说明在一些方面中用于检测图3A中的循环主体318的通信流。指令处理电路300第一次处理指令流304,且继续通过循环的第一迭代344。指令处理电路300检测到指令流304中的指令316是PC相关条件性分支指令,并且进一步目标地址346是指令316的地址347(“B”)前面的地址A,如由箭头348指示。因此,已检测到图3A的循环主体318,且指令处理电路300设定循环主体指示符328,如由箭头350指示。
在图3C中,指令处理电路300继续通过图3A的循环主体318的第二迭代352。检测值产生指令310,其具有包括地址A的属性354。因为先前已设定循环主体指示符328,所以指令处理电路300知道循环主体318正被处理。因此,指令处理电路300检查所预测值表302,以确定是否可在条目320(0)到320(3)的任一者中找到值产生指令310的属性354(即,地址A),如由箭头355指示。指令处理电路300在条目320(0)到320(3)中未找到属性354,且因此响应于所述“未中”而继续进行值产生指令310的常规处理。
在执行值产生指令310后,用值产生指令310所加载的实际值356(此处,十六进制值1234)来填充数据高速缓冲存储器110的条目332(0)。如箭头358所指示,指令处理电路300存取数据高速缓冲存储器110的条目332(0),且获得实际值356。指令处理电路300接下来基于实际值356产生所预测值表302中的条目320(0),如由箭头360指示。值产生指令310的属性354将存储在条目320(0)的PC字段322中,而实际值356将作为所预测值存储在条目320(0)的值字段324中。条目320(0)的计数器326递增到值一(1)。接着使用常规机制(未图示),将值产生指令310所产生的实际值356转发到相依指令312。
图3D现在说明指令处理电路300执行图3A的循环主体318的第三迭代361。在检测到值产生指令310后,指令处理电路300即刻检查预测值表302,以确定是否在条目320(0)到320(3)的任一者中找到属性354,如由箭头362指示。此时,指令处理电路300定位条目320(0)。指令处理电路300接着将条目320(0)的计数器326中的值与迭代阈值330进行比较,如由箭头364指示,以确定计数器326是否超过迭代阈值330。因为计数器326的值(在图3D的实例中,此时为1)并不超过迭代阈值330的值(也是1),所以指令处理电路300继续值产生指令310的常规处理,如上文相对于图3C详述。当值产生指令310产生相同十六进制值1234时,指令处理电路300使条目320(0)的计数器326递增到值二(2)。
现在转向图3E,指令处理电路300进行图3A的循环主体318的第四迭代366。如由箭头368指示,指令处理电路300检查预测值表302,以确定是否在条目320(0)到320(3)的任一者中找到值产生指令310的属性354。指令处理电路300定位条目320(0),且接着将条目320(0)的计数器326中的值与迭代阈值330进行比较,如由箭头370指示,以确定计数器326是否超过迭代阈值330。在图3E中,计数器326的值(即,2)超过迭代阈值的值(即,1)。作为响应,指令处理电路300向相依指令312提供条目320(0)的值字段324作为所预测值372。在图3E的实例中,常数高速缓冲存储器132提供借此向相依指令312提供所预测值372的通道。如由箭头374指示,将所预测值372复制到常数高速缓冲存储器132的条目338(Z)的值字段342,其与寄存器R3相关联。常数高速缓冲存储器132接着可直接向相依指令312提供所预测值372,如由箭头376指示。
在执行值产生指令310之后,指令处理电路300可检查以确保值产生指令310所产生的实际值与存储在所预测值表302中的所预测值匹配。在这点上,提供图3F。在图3F中,假定图3A的循环主体318内的指令修改了寄存器R0中的值。因此,在循环主体318的第五迭代378中,值产生指令310产生与先前迭代中不同的结果(此处,十六进制值5678)。指令处理电路300定位所预测值表302的条目320(0)中的所预测值380,并将其提供给相依指令312,如上文所描述。然而,在执行值产生指令310后,实际值382即刻存储在数据高速缓冲存储器110中。指令处理电路300接着将实际值382与所预测值380进行比较,如由箭头384指示。因为值382、384不同,所以指令处理电路300使所预测值表302中的条目320(0)无效。
为了说明用于提供根据图1的指令处理电路102和所预测值表104的一些方面的循环不变值预测的示范性操作,提供图4A到4C。图4A是说明用于检测循环主体的示范性操作的流程图,而图4B是说明用于提供所预测值和/或产生所预测值表中的新条目的示范性操作的流程图。图4C说明用于使所预测值表中的条目递增和/或无效的示范性操作。为清楚起见,在描述图4A到4C时引用图1和图3A到3F的元件。
在图4A中,操作以指令处理电路300检测指令流304中的循环主体318开始(框400)。在一些方面,检测循环主体318可包含指令处理电路300检测去往在PC相关条件性分支指令316的地址347前面的目标地址346的PC相关条件性分支指令316(框402)。指令处理电路300可确定是否预测将采取PC相关条件性分支指令316(框404)。如果是,那么指令处理电路300可设定循环主体指示符328(框406)。否则,指令处理300可清空循环主体指示符328(框408)。指令处理电路300接着可确定是否设定循环主体指示符328(框410)。如果在框410处确定不设定循环主体指示符328,那么处理可在框402处恢复。如果设定循环主体指示符328,那么处理在图4B的框412处恢复。
现参看图4B,指令处理电路300检测循环主体318内的值产生指令310(框412)。指令处理电路300接下来确定值产生指令310的属性354是否与所预测值表302的条目320(0)匹配(框414)。如果否,那么指令处理电路300在值产生指令310的执行后即刻产生所预测值表302中的条目320(0)(框416)。在一些方面,产生条目320(0)可包含将值产生指令310的属性354和值产生指令310的执行所产生的实际值356存储在条目320(0)中。指令处理电路300接着可继续处理指令流304(框418)。
如果指令处理电路300在决策框414处确定值产生指令310的属性354与条目320(0)匹配,那么指令处理电路300接着确定条目320(0)的计数器326是否超过迭代阈值330(框420)。如果否,那么指令处理电路300尚未达到所需的置信级来向相依指令提供所预测值。处理因此可在图4C的框422处恢复。然而,如果指令处理电路300在框420处确定条目320(0)的计数器326超过迭代阈值330,那么指令处理电路300提供所预测值表302的条目320(0)中的所预测值372,来用于至少一个相依指令312的执行(框424)。指令处理电路300的一些方面可经由常数高速缓冲存储器132提供所预测值372(框426)。处理接着可在图4C的框422处恢复。
现在转向图4C,指令处理电路300可接下来确定在执行值产生指令310后即刻产生的实际值356是否与所预测值372匹配(框422)。如果实际值356与所预测值372匹配,那么指令处理电路300使条目320(0)的计数器326递增(框428)。以此方式,计数器326可充当值产生指令310循环不变的置信度的标记。如果指令处理电路300在决策框422处确定实际值356与所预测值372并不匹配,那么指令处理电路300可使条目320(0)失效(框430)。指令处理电路300接着继续处理指令流304,如上文所描述(框432)。
使用根据本文所揭示的各方面的所预测值表来提供循环不变值预测可提供于任何基于处理器的装置中或集成到其中。实例包含(但不限于)机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、桌上型计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字影音光盘(DVD)播放器和便携式数字视频播放器。
在这点上,图5说明可使用图1的指令处理电路102的基于处理器的系统500的实例。在本实例中,基于处理器的系统500包含一或多个中央处理单元(CPU)502,每一中央处理单元包含一或多个处理器504。一或多个处理器504可包含图1和图3A到3G的指令处理电路(IPC)102、300。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可包含存储器控制器510以及一或多个存储器单元524(0到N)。
CPU 502还可经配置以经由系统总线508来接入显示器控制器520,以控制发送到一或多个显示器526的信息。显示器控制器520经由一或多个视频处理器528将信息发送到显示器526以进行显示,所述一或多个视频处理器528将待显示的信息处理成适合于显示器526的格式。显示器526可包含任何类型的显示器,包含但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
所属领域的技术人员将进一步了解,结合本文中所揭示的方面所描述的各种说明性逻辑块、模块、电路和算法可被实施为电子硬件、存储于存储器或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或此两者的组合。作为实例,本文中所描述的主装置和从装置可用于任何电路、硬件组件、集成电路(IC)或IC芯片中。本文所揭示的存储器可为任何类型和大小的存储器,并且可经配置以存储所要的任何类型的信息。为清楚地说明这种可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。如何实施此功能性取决于特定应用、设计选项和/或强加于整个系统的设计约束。熟练的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为引起偏离本发明的范围。
结合本文中所揭示的各方面所描述的各种说明性逻辑块、模块和电路可用以下各项来实施或执行:处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或经设计以执行本文中所描述的功能的其任何组合。处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一或多个微处理器结合DSP核心,或任何其它此类配置。
本文中所揭示的方面可以硬件和存储于硬件中的指令来体现,且可驻留于(例如)随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可装卸式磁盘、CD-ROM或所属领域中已知的任何其它形式的计算机可读媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻存于ASIC中。ASIC可驻存于远程站中。在替代方案中,处理器和存储媒体可作为离散组件驻存于远程站、基站或服务器中。
还应注意,描述本文中的示范性方面中的任一者中所描述的操作步骤以提供实例和论述。可用除了所说明的序列之外的大量不同序列执行所描述的操作。另外,单个操作步骤中所描述的操作实际上可在许多不同步骤中执行。另外,可组合在示范性方面中所论述的一或多个操作步骤。应理解,如所属领域的技术人员将容易显而易见,流程图中所说明的操作步骤可以经受众多不同修改。所属领域的技术人员还将理解,可使用多种不同技术和技法中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
提供本发明的前述描述是为了使所属领域的技术人员能够制造或使用本发明。所属领域的技术人员将容易显而易见对本发明的各种修改,且本文中界定的一般原理可应用于其它变化而不脱离本发明的精神或范围。因此,本发明并不希望限于本文中所描述的实例和设计,而是应被赋予与本文中所揭示的原理和新颖特征相一致的最广范围。
Claims (20)
1.一种包括指令处理电路的设备,其经配置以:
检测指令流中的循环主体;
检测所述循环主体内的值产生指令;
确定所述值产生指令的属性是否与所预测值表的条目匹配;以及
响应于确定所述值产生指令的所述属性与所述所预测值表的所述条目匹配:
确定所述条目的计数器是否超过迭代阈值;以及
响应于确定所述条目的所述计数器超过所述迭代阈值,提供所述所预测值表的所述条目中的所预测值,以用于至少一个相依指令的执行。
2.根据权利要求1所述的设备,其中所述指令处理电路经配置以通过以下步骤来检测所述循环主体:
检测去往程序计数器PC相关分支指令的地址前面的目标地址的所述PC相关分支指令;
确定是否预测将采取所述PC相关分支指令;
响应于确定预测将采取所述PC相关分支指令,设定循环主体指示符;以及
响应于确定预测将不采取所述PC相关分支指令,清空所述循环主体指示符;
所述指令处理电路经配置以响应于所述循环主体指示符正被设定而检测所述值产生指令。
3.根据权利要求1所述的设备,其中所述指令处理电路进一步经配置以响应于确定所述条目的所述计数器不超过所述迭代阈值:
在执行所述值产生指令后,即刻确定所述值产生指令所产生的实际值是否与所述所预测值匹配;
响应于确定所述实际值与所述所预测值匹配,使所述条目的所述计数器递增;以及
响应于确定所述实际值与所述所预测值不匹配,使所述条目失效。
4.根据权利要求1所述的设备,其中所述指令处理电路进一步经配置以响应于确定所述值产生指令的所述属性与所述所预测值表的所述条目不匹配,通过将所述值产生指令的所述属性和所述值产生指令的执行所产生的实际值存储在所述条目中,来在执行所述值产生指令后即刻产生所述所预测值表中的所述条目。
5.根据权利要求1所述的设备,其中所述指令处理电路以通信方式耦合到常数高速缓冲存储器;且
所述指令处理电路经配置以经由所述常数高速缓冲存储器提供所述所预测值表的所述条目中的所述所预测值。
6.根据权利要求1所述的设备,其中所述值产生指令的所述属性包括所述值产生指令的地址。
7.根据权利要求1所述的设备,其集成到集成电路IC中。
8.根据权利要求1所述的设备,其集成到选自由以下各项组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;移动电话;蜂窝式电话;计算机;便携式计算机;桌上型计算机;个人数字助理PDA;
监视器;计算机监视器;电视机;调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;数字视频光盘DVD播放器;以及便携式数字视频播放器。
9.一种包括指令处理电路的设备,其包括:
用于检测指令流中的循环主体的装置;
用于检测所述循环主体内的值产生指令的装置;
用于确定所述值产生指令的属性是否与所预测值表的条目匹配的装置;
用于响应于确定所述值产生指令的所述属性与所述所预测值表的所述条目匹配来确定所述条目的计数器是否超过迭代阈值的装置;以及
用于响应于确定所述条目的所述计数器超过所述迭代阈值而提供所述所预测值表的所述条目中的所预测值以用于至少一个相依指令的执行的装置。
10.一种提供循环不变值预测的方法,其包括:
检测指令流中的循环主体;
检测所述循环主体内的值产生指令;
确定所述值产生指令的属性是否与所预测值表的条目匹配;以及
响应于确定所述值产生指令的所述属性与所述所预测值表的所述条目匹配:
确定所述条目的计数器是否超过迭代阈值;以及
响应于确定所述条目的所述计数器超过所述迭代阈值,提供所述所预测值表的所述条目中的所预测值,以用于至少一个相依指令的执行。
11.根据权利要求10所述的方法,其中检测所述循环主体包括:
检测去往程序计数器PC相关条件性分支指令的地址前面的目标地址的PC相关分支指令;
确定是否预测将采取所述PC相关分支指令;
响应于确定预测将采取所述PC相关分支指令,设定循环主体指示符;以及
响应于确定预测将不采取所述PC相关分支指令,清空所述循环主体指示符;
所述方法包括响应于所述循环主体指示符正被设定而检测所述值产生指令。
12.根据权利要求10所述的方法,其进一步包括响应于确定所述条目的所述计数器不超过所述迭代阈值:
在执行所述值产生指令后,即刻确定所述值产生指令所产生的实际值是否与所述所预测值匹配;
响应于确定所述实际值与所述所预测值匹配,使所述条目的所述计数器递增;以及
响应于确定所述实际值与所述所预测值不匹配,使所述条目失效。
13.根据权利要求10所述的方法,其进一步经配置以响应于确定所述值产生指令的所述属性与所述所预测值表的所述条目不匹配,通过将所述值产生指令的所述属性和所述值产生指令的执行所产生的实际值存储在所述条目中,来在所述值产生指令的执行后即刻产生所述所预测值表中的所述条目。
14.根据权利要求10所述的方法,其中提供所述所预测值表的所述条目中的所述所预测值包括经由常数高速缓冲存储器提供所述所预测值。
15.根据权利要求10所述的方法,其中所述值产生指令的所述属性包括所述值产生指令的地址。
16.一种非暂时性计算机可读媒体,其上存储有计算机可执行指令,所述指令在由处理器执行时致使所述处理器:
检测指令流中的循环主体;
检测所述循环主体内的值产生指令;
确定所述值产生指令的属性是否与所预测值表的条目匹配;以及
响应于确定所述值产生指令的所述属性与所述所预测值表的所述条目匹配:
确定所述条目的计数器是否超过迭代阈值;以及
响应于确定所述条目的所述计数器超过所述迭代阈值,提供所述所预测值表的所述条目中的所预测值,以用于至少一个相依指令的执行。
17.根据权利要求16所述的非暂时性计算机可读媒体,在其上储存有计算机可执行指令,所述指令在由所述处理器执行时,进一步致使所述处理器:
通过以下步骤来检测所述循环主体:
检测去往程序计数器PC相关条件性分支指令的地址前面的目标地址的所述PC相关条件性分支指令;
确定是否预测将采取所述PC相关条件性分支指令;
响应于确定预测将采取所述PC相关条件性分支指令,设定循环主体指示符;
以及
响应于确定预测不采取所述PC相关条件性分支指令,清空所述循环主体指示符;以及
响应于所述循环主体指示符正被设定,检测所述值产生指令。
18.根据权利要求16所述的非暂时性计算机可读媒体,在其上储存有计算机可执行指令,所述指令在由所述处理器执行时,进一步致使所述处理器响应于确定所述条目的所述计数器不超过所述迭代阈值:
在执行所述值产生指令后,即刻确定所述值产生指令所产生的实际值是否与所述所预测值匹配;
响应于确定所述实际值与所述所预测值匹配,使所述条目的所述计数器递增;以及
响应于确定所述实际值与所述所预测值不匹配,使所述条目失效。
19.根据权利要求16所述的非暂时性计算机可读媒体,在其上储存有计算机可执行指令,所述指令在由所述处理器执行时,进一步致使所述处理器响应于确定所述值产生指令的所述属性与所述所预测值表的所述条目不匹配,通过将所述值产生指令的所述属性和所述值产生指令的执行所产生的实际值存储在所述条目中,来在所述值产生指令的执行后即刻产生所述所预测值表中的所述条目。
20.根据权利要求16所述的非暂时性计算机可读媒体,在其上储存有计算机可执行指令,所述指令在由所述处理器执行时,进一步致使所述处理器通过经由常数高速缓冲存储器提供所述所预测值,来提供所述所预测值表的所述条目中的所述所预测值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/546,243 | 2014-11-18 | ||
US14/546,243 US20160139933A1 (en) | 2014-11-18 | 2014-11-18 | Providing loop-invariant value prediction using a predicted values table, and related apparatuses, methods, and computer-readable media |
PCT/US2015/057473 WO2016081163A1 (en) | 2014-11-18 | 2015-10-27 | Providing loop-invariant value prediction using a predicted values table, and related apparatuses, methods, and computer-readable media |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107077335A true CN107077335A (zh) | 2017-08-18 |
Family
ID=54540199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580057273.2A Pending CN107077335A (zh) | 2014-11-18 | 2015-10-27 | 使用所预测值表来提供循环不变值预测,以及相关设备、方法和计算机可读媒体 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160139933A1 (zh) |
EP (1) | EP3221784B1 (zh) |
CN (1) | CN107077335A (zh) |
WO (1) | WO2016081163A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10620961B2 (en) | 2018-03-30 | 2020-04-14 | Intel Corporation | Apparatus and method for speculative conditional move operation |
GB2577502B (en) * | 2018-09-26 | 2021-09-08 | Advanced Risc Mach Ltd | An apparatus and method for processing instructions |
CN112540794A (zh) * | 2019-09-20 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 处理器核、处理器、装置和指令处理方法 |
US11327763B2 (en) | 2020-06-11 | 2022-05-10 | Microsoft Technology Licensing, Llc | Opportunistic consumer instruction steering based on producer instruction value prediction in a multi-cluster processor |
US11816488B2 (en) * | 2021-11-10 | 2023-11-14 | Huawei Technologies Co., Ltd. | Method and apparatus for dynamically simplifying processor instructions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070116059A1 (en) * | 2003-12-09 | 2007-05-24 | Imre Hipp | Circuit and method for synchronization |
CN101815984A (zh) * | 2007-10-05 | 2010-08-25 | 高通股份有限公司 | 错误的推测性更新的链接栈修复 |
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 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050144604A1 (en) * | 2003-12-30 | 2005-06-30 | Li Xiao F. | Methods and apparatus for software value prediction |
US20080022080A1 (en) * | 2006-07-20 | 2008-01-24 | Arm Limited | Data access handling in a data processing system |
US9389860B2 (en) * | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
-
2014
- 2014-11-18 US US14/546,243 patent/US20160139933A1/en not_active Abandoned
-
2015
- 2015-10-27 CN CN201580057273.2A patent/CN107077335A/zh active Pending
- 2015-10-27 WO PCT/US2015/057473 patent/WO2016081163A1/en active Application Filing
- 2015-10-27 EP EP15793971.1A patent/EP3221784B1/en not_active Not-in-force
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070116059A1 (en) * | 2003-12-09 | 2007-05-24 | Imre Hipp | Circuit and method for synchronization |
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 |
CN101815984A (zh) * | 2007-10-05 | 2010-08-25 | 高通股份有限公司 | 错误的推测性更新的链接栈修复 |
Non-Patent Citations (1)
Title |
---|
PO-JEN CHUANG ET AL.: "An Efficient Value Predictor Dynamically Using Loop and Locality Properties", 《JOURNAL OF SUPERCOMPUTING》 * |
Also Published As
Publication number | Publication date |
---|---|
EP3221784B1 (en) | 2018-08-22 |
EP3221784A1 (en) | 2017-09-27 |
WO2016081163A1 (en) | 2016-05-26 |
US20160139933A1 (en) | 2016-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9710268B2 (en) | Reducing latency for pointer chasing loads | |
CN107077335A (zh) | 使用所预测值表来提供循环不变值预测,以及相关设备、方法和计算机可读媒体 | |
TWI610184B (zh) | 有效地執行散列運算的方法及設備 | |
TWI503744B (zh) | 用於封裝迴圈中多個反覆之裝置、處理器及方法 | |
US9946549B2 (en) | Register renaming in block-based instruction set architecture | |
TW201737068A (zh) | 在基於處理器系統中基於負載路徑歷史使用位址預測表以提供負載位址預測 | |
TWI692213B (zh) | 用以執行資料壓縮的處理裝置和方法以及系統單晶片(SoC) | |
TW201346556A (zh) | 於階層式快取處理器中之協調預取 | |
CN107368450A (zh) | 实现维护被拒指令的加载/存储单元的多片处理器的操作 | |
CN108351811A (zh) | 调度高度并行的应用 | |
CN107209664B (zh) | 用于扇出生产指令的结果的方法和设备及计算机可读媒体 | |
CN108369517A (zh) | 聚合分散指令 | |
CN104854556B (zh) | 建立分支目标指令高速缓冲存储器条目的方法和系统 | |
US20140047221A1 (en) | Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
TWI701590B (zh) | 管線重組態電路、基於失序(ooo)處理器之系統及重組態一執行管線之方法 | |
US20160019060A1 (en) | ENFORCING LOOP-CARRIED DEPENDENCY (LCD) DURING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA | |
CN106104466B (zh) | 在超越控制分支预测器中的推测历史转递以及相关电路、方法和计算机可读媒体 | |
US20160077836A1 (en) | Predicting literal load values using a literal load prediction table, and related circuits, methods, and computer-readable media | |
US11467844B2 (en) | Storing multiple instructions in a single reordering buffer entry | |
JP2018523241A (ja) | パント回避テーブル(pat)を使用したコンピュータプロセッサ内のメモリ命令パントの予測 | |
US20160092219A1 (en) | Accelerating constant value generation using a computed constants table, and related circuits, methods, and computer-readable media | |
US20160291981A1 (en) | Removing invalid literal load values, and related circuits, methods, and computer-readable media | |
US20160092232A1 (en) | Propagating constant values using a computed constants table, and related apparatuses and methods | |
TW201732609A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170818 |