CN103793205A - 在超前运行期间对数据的选择性毒化 - Google Patents
在超前运行期间对数据的选择性毒化 Download PDFInfo
- Publication number
- CN103793205A CN103793205A CN201310492729.0A CN201310492729A CN103793205A CN 103793205 A CN103793205 A CN 103793205A CN 201310492729 A CN201310492729 A CN 201310492729A CN 103793205 A CN103793205 A CN 103793205A
- Authority
- CN
- China
- Prior art keywords
- poisonous substance
- strategy
- leading
- leading operation
- microprocessor
- 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
- 231100000572 poisoning Toxicity 0.000 title description 15
- 230000000607 poisoning effect Effects 0.000 title description 15
- 231100000614 poison Toxicity 0.000 claims abstract description 247
- 238000000034 method Methods 0.000 claims abstract description 94
- 238000001514 detection method Methods 0.000 claims abstract description 5
- 230000007096 poisonous effect Effects 0.000 claims description 207
- 239000000126 substance Substances 0.000 claims description 207
- 230000004044 response Effects 0.000 claims description 6
- 239000002574 poison Substances 0.000 abstract description 40
- 239000007924 injection Substances 0.000 abstract description 5
- 238000002347 injection Methods 0.000 abstract description 5
- 238000005070 sampling Methods 0.000 description 32
- 208000005374 Poisoning Diseases 0.000 description 14
- 230000008859 change Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008034 disappearance Effects 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005728 strengthening Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 240000004859 Gamochaeta purpurea Species 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000011217 control strategy Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- 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
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Microcomputers (AREA)
Abstract
提供关于在微处理器操作期间从多个超前运行毒物策略中选择超前运行毒物策略的实施例。示范性的方法包括根据对超前运行事件的检测使微处理器进入超前运行并且在超前运行期间实现从操作为管理超前运行毒物注入的多个超前运行毒物策略中所选择的第一超前运行毒物策略。示范性的方法还包括在微处理器操作期间,选择操作为与第一超前运行毒物策略不同地管理超前运行毒物注入的第二超前运行毒物策略。
Description
技术领域
本发明涉及操作微处理器的方法和微处理器。
背景技术
微处理器中的指令有时停顿,即停止前进直到停顿被解决。因为揭露随后的指令之中的其他独立停顿是有帮助的,所以微处理器可以实施配置为在初始停顿正在被解决的同时检测其他停顿的超前运行(runahead)操作。虽然超前运行可以揭露其他潜在的停顿,但是利用缺失的或无效的数据的继续执行可能污染高速缓存。
发明内容
本发明提供一种用于操作微处理器的方法。所述方法包括:根据对超前运行事件的检测,使所述微处理器进入超前运行;在超前运行期间,实现从操作为管理超前运行毒物注入的多个超前运行毒物策略中所选择的第一超前运行毒物策略;以及在微处理器操作期间,选择并且实现与所述第一超前运行毒物策略不同地管理超前运行毒物注入的第二超前运行毒物策略。
附图说明
图1描绘了根据本公开实施例的、在微处理器操作期间从多个超前运行毒物策略中选择超前运行毒物策略的示范性方法。
图2描绘了根据本公开实施例的、在微处理器操作期间从多个超前运行毒物策略中选择超前运行毒物策略的另一个示范性方法。
图3描绘了根据本公开实施例的、在微处理器操作期间从多个超前运行毒物策略中选择超前运行毒物策略的又一个示范性方法。
图4描绘了根据本公开实施例的、在微处理器操作期间从多个超前运行毒物策略中选择超前运行毒物策略的再一个示范性方法。
图5示意性地示出了根据本公开实施例的、操作为在运行时期间选择性地实现多个超前运行毒物策略中的任何一个的示范性微处理器。
具体实施方式
在现代微处理器中,指令经常在管线中执行。这类指令可以单独地或作为微操作束被发出到管线中的各执行机制。不管指令当被发出用于执行时的形式,当指令被发出时,可能在分派时不知道在指令的执行期间是否将发生未命中或异常。可以花费一些时间在微处理器能够对随后的指令取得进展之前解决一些未命中/异常。这样,微处理器可以在尝试解决长延迟事件的根本原因的同时停顿。
一些微处理器可以配置为在停顿的根本原因正在被解决的同时前瞻性地执行指令。前瞻性的执行典型地针对发现其他潜在的停顿,使得微处理器也可以开始解决那些停顿,潜在地节约处理时间。在一些设定中,在初始停顿事件被解决和正常操作恢复之前揭露尽可能多的潜在停顿是可取的。这样,微处理器的一个目标可以是前瞻性地处理尽可能多的指令。然而,因为微处理器操作在所生成的一些结果可能将无效的制度中,所以可能在前瞻性操作结束之后可能导致高速缓存污染的存储器请求中引用一个或多个无效结果。
可能在指令的执行期间出现的常见的管线执行停顿是加载未命中。换句话说,停顿可以由加载请求产生,其中所请求的数据不存在于高速缓存存储器中的特定位置处,造成在从另一个位置(例如在较高高速缓存级别下)检索数据时的长延迟事件。这类加载未命中可以触发进入操作的超前运行(runahead)模式(后文称为“超前运行”),该超前运行配置为:在解决初始加载未命中的同时,检测例如其他高速缓存未命中(例如存储未命中和/或加载未命中)、指令获取未命中、转译后备缓冲区(例如用于指令或数据)中的未命中和/或分支误预测。
如本文所使用的,超前运行描述在触发微处理器中的未解决状态的长延迟事件期间所实施的任何合适的前瞻性执行方案。应该理解这类长延迟事件的性质和标识可以改变。长延迟事件的其他非限制性示例包括存储未命中和一些长延迟浮点操作(例如非正规平方根操作)。一旦检测到超前运行触发事件,就可以为微处理器的状态(例如寄存器和其他合适的状态)设置检查点(checkpoint),使得微处理器可以在超前运行之后返回到该状态。之后微处理器在超前运行期间继续执行在工作状态。在解决初始的长延迟事件之后,微处理器退出超前运行并且正常操作恢复。
因为超前运行操作是前瞻性的执行方案并且经常由于某数据不可用而被发起,所以在超前运行期间所使用和/或所生成的数据中的至少一些将是无效的。虽然超前运行可以提供揭露其他未命中或长延迟事件的好处,但是缺失的或无效的数据的使用可能污染处理器寄存器和/或存储器系统的一部分。一些过去的方法在超前运行期间利用毒物位(poison bit)扩充寄存器,使得无效数据可以在超前运行操作期间被追踪。如果指令使用经毒化的寄存器作为来源(例如输入寄存器),则微处理器设置用于目的寄存器的毒物位以指示相关联的目的寄存器包括无效信息。在一些实例中,当覆写寄存器的内容时,微处理器可以清除经毒化的目的寄存器。例如,如果指令使用未经毒化的输入寄存器作为来源,则微处理器可以清除相关联的目的寄存器处的毒物位。
不管在超前运行期间如何引入、传播和/或清除毒物,在先系统中的毒化方案在于微处理器被制造并且开始运行之前发生的设计阶段期间被预定。因此,所挑选的毒化方案可以在某些情况下增强微处理器操作,但是在一些其他情况下减慢执行。与快速引入毒物的毒化方案相比,延迟毒物注入的毒化方案可以引入较少的毒物。转而,较少的毒物可以增大系统提出将在未来导致命中的请求的机会。然而,相对于较快起效的毒化方案,延迟毒物注入可以减少在超前运行期间可观察到的指令的数目。因此,因为毒物注入被延迟到相对较晚的时间,所以可以暴露较少的潜在停顿。
因此,本文所描述的实施例涉及配置为在微处理器操作期间从多个超前运行毒物策略中选择超前运行毒物策略的方法、硬件和/或软件。例如,操作微处理器的方法的一个实施例包括:在超前运行期间,实现从操作为管理超前运行毒物注入的多个超前运行毒物策略中所选择的第一超前运行毒物策略。示范性的方法还包括:在微处理器操作期间的稍后点,选择操作为与第一超前运行毒物策略不同地管理超前运行毒物注入的第二超前运行毒物策略。
图1示出了用于在微处理器操作期间从多个超前运行毒物策略中选择超前运行毒物策略的方法100的实施例的流程图。方法100包括,在102,使微处理器进入超前运行。在104,方法100包括在超前运行期间实现从操作为管理超前运行毒物注入的多个超前运行毒物策略中所选择的第一超前运行毒物策略。在106,方法100包括选择操作为与第一超前运行毒物策略不同地管理超前运行毒物注入的第二超前运行毒物策略。可以关于任何合适的硬件和/或软件配置实施所描绘的方法,应该理解可以根据本文所示出和描述的方法和硬件对这些步骤做出修改、增加和改进。
在一些实施例中,可以根据所选择的高速缓存级别中的命中对未命中的相对比率来为应用选择特定的超前运行毒物策略。例如,在应用经历L1高速缓存中的超前运行触发的未命中的情况下,L2高速缓存中的命中对未命中的相对比率可以用来在微处理器操作期间挑选超前运行毒物策略。在L2高速缓存的未命中率比命中率高的场景下,可以选择根据L1未命中立即注入毒物的超前运行毒物策略,这潜在地增强超前运行期间的指令吞吐量。在该场景下,可能存在毒物将在某点被注入的高可能性。相对于基于指令是否还在L2高速缓存中未命中来等待注入毒物的毒化方案,立即毒化可以允许微处理器遍历更多的指令。
因为微处理器中的操作条件可以随时间改变,所以在某点,L1高速缓存中的未命中将导致L2高速缓存中的命中的可能性比不导致的更高。早毒化(例如在L1未命中的检测之后立即注入毒物或注入毒物的另一个激进方法)可能是不可取的,因为所添加的毒物将导致错过发送进一步未命中请求的机会,否则如果L2高速缓存返回命中,则其可能不会发生。在该上下文中,将延迟插入超前运行操作可能是更可取的,因为立即的延迟可以避免可能由指针追逐(pointer chasing)产生的一个或多个未来的延迟(例如其中经毒化的寄存器位置变为用于随后指令的输入寄存器位置,这造成系统内的级联延迟)。这样,在L2高速缓存的命中率比未命中率高的场景下,可以选择根据对L2未命中的检测等待注入毒物的超前运行毒物策略。该方法可以通过降低系统内的总体的毒物级别、潜在地降低随后的停顿事件来增强操作,因为延迟允许从L2高速缓存获得数据。
在运行时,实施超前运行毒物策略选择。在微处理器操作期间选择超前运行毒物策略可以允许微处理器适应操作情况,如以上所描述的,其可以随时间改变。因此,可以根据特定的操作条件选择一个超前运行毒物策略。如果操作条件改变,则可以选择可替换的超前运行毒物策略,如果该策略可能导致相对增强的操作性能的话。
在一些实施例中,可以基于在微处理器处的操作上下文中的改变选择不同的超前运行毒物策略。例如,可以响应于由在微处理器处执行的代码所触发的上下文改变选择不同的超前运行毒物策略。在这类实施例的一些中,可以预定上下文改变(例如在运行时之前的设计阶段期间),使得特定的超前运行毒物策略将被选择以伴随代码的所选择的部分或上下文类型,因为该特定策略可以帮助微处理器达到相对于另一个策略的增强的性能。
附加地或可替换地,在一些实施例中,即使在操作上下文或应用中不存在伴随的改变,也可以在操作期间动态地选择不同的超前运行毒物策略。这样,超前运行毒物策略选择可以响应于在微处理器操作期间不断变化的环境,即使这类环境在设计阶段是不可预见的。
图2示意性地示出了在微处理器操作期间从多个超前运行毒物策略中选择超前运行毒物策略的示范性方法200的示例。如图2所示,在采样间隔期间瞬间地和/或相对于采样间隔地对微处理器的一个或多个性能信息进行采样以查明微处理器性能。如本文所使用的,采样间隔涉及在其期间观察到/测量到使用特定的超前运行毒物策略的微处理器性能的间隔。在一些实施例中,采样间隔可以配置为预定的时间间隔、预定数目的指令或超前运行实例的跨度或在其期间可以监视使用特定的超前运行毒物策略的微处理器性能的任何合适的观察窗。优选地,采样间隔配置为使得其包括超前运行实例的至少一部分,使得采样间隔观察操作中的超前运行毒物策略。在一些实施例中,采样间隔可以在1000至1000000时钟周期的范围内。
可以在采样间隔期间对任何合适的微处理器性能信息进行采样。在一些实施例中,微处理器性能信息可以包括微处理器的可观察的/可测量的属性。微处理器性能信息的非限制性示例包括表明指令吞吐量的信息,诸如每时钟周期指令的计数(例如较高的每时钟周期指令计数指示较大的指令吞吐量)和/或每预选择数目的指令的时钟周期的计数(例如处理预选择数目的指令的时钟周期的较低计数指示较大的指令吞吐量);以及表明在高速缓存的各级别下的命中率的信息(例如(高速缓存级别下的命中的数目)/(该高速缓存级别下的命中+未命中的数目)和/或配置为指示高速缓存中的命中或未命中的各计数器。
在一些实施例中,微处理器性能信息可以包括关于源自可测量的/可观察的微处理器属性的微处理器性能的信息。例如,应用或微处理器上下文标识信息或与当获得微处理器性能信息时正在执行的指令相关联的任何其他信息可以包括在微处理器性能信息中。可替换地或附加地,在一些实施例中,这类相关联的信息可能是根据微处理器性能信息(例如根据时间戳(stamp)、时间顺序或存储顺序等)可获得的。
可以采用获得微处理器性能信息的任何合适的方式而不脱离本公开的范围。例如,可以通过在采样间隔期间测量一个或多个微处理器性能值来获得微处理器性能信息。一旦被获得,性能信息就可以被存储用于稍后参考。存储与第二超前运行毒物策略相关联的性能信息可以允许与随后所收集的、与相同或其他超前运行毒物策略相关联的性能信息作比较。例如,与第一超前运行毒物策略相关联的、用于指令吞吐量的性能信息(例如每单位时间所处理的指令或每时钟周期所处理的指令)可以稍后与和相同或不同毒物策略相关联的吞吐量信息作比较。
一旦被表征,微处理器性能信息就可以用来选择多个超前运行毒物策略中的一个。应该理解,在微处理器操作期间,特定的超前运行毒物策略的选择可以在任何合适的时间发生。例如,选择可以在超前运行和/或正常操作期间发生。
以上所描述的性能表征可以消耗一些微处理器资源(例如计算和/或存储资源)。因此,在一些实施例中,可以提供可选的非采样间隔以留下两个或两个以上的采样间隔,使得采样间歇地发生。利用相对较长的持续时间的非采样间隔来分开采样间隔可以分散计算开销。如果包括非采样间隔,则可以为其制定大小,使得微处理器可以在下一个采样间隔发生之前经历普通的操作(例如正常的计算)和超前运行操作的一个或多个实例。在一些实施例中,非采样间隔可以配置为预定的时间间隔、预定数目的指令的跨度或预定数目的超前运行实例。在一些实施例中,非采样间隔可以在100000-10000000时钟周期的范围内。因此,在非采样间隔期间可以发生的任何超前运行实例经历当前所应用的超前运行毒物策略。
虽然图2所示的非采样间隔被示出为具有接近相同的持续时间,但是应该理解在一些实施例中,非采样间隔的持续时间可以随实例的不同而变化。例如,在一些实施例中,非采样间隔可以根据应用标识或任何其他合适的因素而变化。同样地,应该理解采样间隔也可以随实例的不同而变化。在一些示例中,可以响应于应用标识或任何其他合适的因素来调节采样间隔。
图3示出了在微处理器操作期间从多个超前运行毒物策略中选择超前运行毒物策略的示范性方法300的流程图。应该理解可以由任何合适的硬件和软件实施方法300的实施例,包括本文所描述的硬件和软件。应该理解方法300和本文其他方法中所描述的过程的一部分可以被省略、重新排序、同时并行地实施和/或增补,而不脱离本公开的范围。
如图3所示,方法300包括,在302,选择第一超前运行毒物策略。在一些实施例中,在302选择第一超前运行毒物策略可以包括将毒化控制位设置为与第一超前运行毒物策略相关联的值。毒化控制位可以用来追踪和/或应用特定的超前运行毒物策略。在一些实施例中,如以下所更详细描述的,毒化控制位可以包括在毒化控制逻辑中。简单地说,在一些实施例中,毒化控制逻辑可以在超前运行和/或正常操作期间评估微处理器性能并且据此选择超前运行毒物策略。在这类实施例中,毒化控制逻辑可以设置用于毒化控制位的值和/或读/响应于毒化控制位的值。在一些实施例中,可以从配置为存储多个超前运行毒物策略的策略缓冲区中选择第一超前运行毒物策略。
在304,方法300包括使用第一超前运行毒物策略在采样间隔期间获得微处理器性能信息。可以以任何合适的方式、以任何合适的采样间隔获得微处理器性能信息,包括以上在方法200中所描述的那些。在一些实施例中,可以存储所获得的性能信息(在一些实施例中,和相关的微处理器/应用信息)用于稍后的参考。
在306,方法300包括确定使用所选择的超前运行毒物策略是否已经增强了性能。可以做出关于任何合适的性能指标的确定。不管什么指标用来判断性能或如何获得指标,在运行时选择由微处理器所使用的超前运行毒物策略。偶尔可以选择不同的超前运行毒物策略以确定使用不同的超前运行毒物策略是否可能相对地增强性能。
在一些实施例中,可以将性能信息与在任何合适的较早时间所收集的、和相同或不同的超前运行毒物策略相关联的性能相关信息作比较。例如,使用当前所选择的超前运行毒物策略的指令吞吐量可以与使用当前所选择的超前运行毒物策略或不同的超前运行毒物策略的、在较早时间的指令吞吐量相比较。在一些实施例中,比较可以在连续的超前运行毒物策略之间(例如与第一超前运行毒物策略相关的性能信息和与在第一毒物策略之后所立即选择的第二超前运行毒物策略相关的性能信息之间的比较)。在这类实施例的一些中,比较因此可以在用于各自的超前运行毒物策略的最近的性能信息之间做出。
在一些实施例中,可以基于在任何合适的时间所获得的微处理器性能信息和预选择的参考信息的比较做出这类确定。在这类实施例的一些中,可以由预定的历史性信息子集内或所有可用的历史性性能信息的历史性性能信息更新预选择的参考信息。这样,可以基于可随时间被更新的移动平均值、极值等做出确定。
在图3所示的示例中,如果使用所选择的超前运行毒物策略增强性能,则在308保持所选择的超前运行毒物策略。之后方法300继续到310,包括在非采样间隔期间执行指令。这样,方法300根据用于该非采样间隔的持续时间的第二超前运行毒物策略继续操作。可以采用任何合适的非采样间隔而不脱离本公开,包括以上在方法200中所描述的非采样间隔。然而,因为在微处理器内条件可以改变,其可以使所选择的超前运行毒物策略相对于另一个超前运行毒物策略相对更低效,方法300包括,在312,选择不同的超前运行毒物策略并且之后返回到304,使得使用不同的超前运行毒物策略的性能信息可以被获得并且新的性能确定被做出。
在一些实施例中,在312选择不同的超前运行毒物策略可以包括将毒化控制位设置为与不同的超前运行毒物策略相关联的不同值。例如,毒化控制位的值可以从与第一超前运行毒物策略相关联的值翻转为与第二超前运行毒物策略相关联的值。反过来,微处理器可以停止应用第一超前运行毒物策略并且开始应用第二超前运行毒物策略。在一些实施例中,所选择的超前运行毒物策略可以从配置为存储多个超前运行毒物策略的策略缓冲区中挑选。
如果使用所选择的超前运行毒物策略性能没有增强,则方法300跳到314,其中选择不同的超前运行毒物策略。因为微处理器操作条件可以在不断的变化状态中,所以不同的超前运行毒物策略的选择可以导致相对于较早选择的超前运行毒物策略的性能/操作增强。在一些实施例中,方法300可以包括,在316,使用新选择的不同的超前运行毒物策略在非采样间隔期间执行指令。可替换地,在一些其他的实施例中,根据对不同的超前运行毒物策略的选择,方法300可以立即返回到304,使得新选择的超前运行毒物策略的性能可以被估计。应该理解在一些设定中,新选择的超前运行毒物策略的立即估计可以允许微处理器识别(并且在一些设定中优化)适合于瞬间的微处理器操作条件、代码等的超前运行毒物策略。可替换地,在一些设定中,非采样间隔的包括可以减少如以上所描述的计算开销。
虽然以上所描述的方法300的实施例涉及微处理器性能在当前的超前运行毒物策略和最近的在先的超前运行毒物策略之间进行比较的情况下的示例,但是应该理解可以采用与任何合适的过去和/或现在的超前运行毒物策略相关的任何合适的微处理器性能信息的比较,而不脱离本公开的范围。此外,虽然以上所论述的方法300的实施例涉及在两个超前运行毒物策略之间交替的示例,但是应该理解可以采用任何合适数目的超前运行毒物策略,而不脱离本公开的范围。例如,在一些实施例中,方法300可以与两个或两个以上的超前运行毒物策略一起使用。
可以基于在超前运行期间增大指令吞吐量并且减小毒物内容的目标来管理超前运行毒物策略选择。在一些设定中,这些目标可以取决于高速缓存级别之中的相对命中率。例如,如果在L1高速缓存中的对应未命中之后指令在L2高速缓存中具有高的未命中率,则很可能毒物将包括在系统中,而不管毒物是早或晚注入。因为减小毒物内容的机会相应地是低的,所以支持早毒物注入的超前运行毒物策略可以至少促进在超前运行中增大指令吞吐量的目标,使得其他潜在的停顿可以被揭露。可替换地,如果在L1高速缓存中的对应未命中之后指令在L2高速缓存中具有高的命中率,则如果实现支持晚毒物注入的超前运行毒物策略的话,可以降低毒物内容。如以上介绍的,在一些实施例中,选择可以基于在运行时期间所遭遇的特定上下文/程序/应用和/或基于在运行时期间所动态进行的性能观察。例如,特定的应用可以具有L1和L2高速缓存中未命中的高可能性,使得根据L1未命中注入毒物的超前运行毒物策略可以被应用,同时不同的应用可以具有跟随在L1未命中之后的L2高速缓存中的命中的高可能性,使得相反在注入毒物之前等待来自L2高速缓存的命中/未命中响应的超前运行毒物策略可以被应用。
因此,在一些实施例中,超前运行毒物策略的选择可以至少部分地基于在层级高速缓存/高速缓存层级的所选择的高速缓存级别中的命中对未命中的相对比率。例如,在一些实施例中,可以根据较高级别高速缓存(例如L2高速缓存)中的未命中率相对于较低级别高速缓存(例如L1高速缓存)中的未命中率选择超前运行毒物策略。不希望由理论所束缚,在这类实施例的一些中,在L1高速缓存中可能未命中、在L2高速缓存中可能也未命中的情况下,立即注入毒物可能是更有效率的,而不是延迟以确定是否L2高速缓存将未命中,如以上所提供的示例中所解释的。
例如,图4示出了用于在微处理器操作期间从多个超前运行毒物策略中选择超前运行毒物策略的方法400的流程图。应该理解,可以由任何合适的硬件和软件实施方法400的实施例,包括本文所描述的硬件和软件。在一些实施例中,方法400可以配置为重新开始用于超前运行操作的单独实例。在一些其他实施例中,方法400可以配置为经过相对较长的持续时间操作,使得方法400的实例可以包括多个超前运行操作实例。应该理解方法400中所描述的过程的一部分可以被省略、重新排序和/或增补,而不脱离本公开的范围。方法400中所描述的计数器方案是用于比较命中率的方法的示例。应该理解可以采用用于比较命中率的任何合适的方案,而不脱离本公开的范围。
在402,方法400包括清除计数器并且选择第一超前运行毒物策略。例如,在一些实施例中,方法400可以选择超前运行毒物策略,其中根据检测L1高速缓存中的未命中,微处理器延迟处理随后的指令直到确定L2高速缓存中发生命中或未命中为止。方法400包括,在404,检测L1未命中,并且在406,确定L2未命中是否也被检测到。如果没有检测到L2高速缓存中的未命中,例如,因为在L2高速缓存中检测到命中,则方法400继续到408。
在408,方法400包括减小计数器值。在一些实施例中,计数器值可以以整数减小,但是应该理解计数器可以减小任何合适的值,而不脱离本公开的范围。在410,确定计数器值是否小于第一阈值。如果计数器值不小于第一阈值,则方法400返回到404。如果计数器值小于第一阈值,则方法400继续到412,其中选择第一超前运行毒物策略。在该示例中,方法400可以选择超前运行毒物策略,其中在检测到L2高速缓存中的未命中时,微处理器根据第一超前运行毒物策略延迟处理随后的指令直到确定L2高速缓存中发生命中或未命中。一旦第一超前运行毒物策略被选择,之后方法400就返回到404。
返回到406,如果确定检测到L2未命中,则方法400继续到414,其中计数器值被增大。在一些实施例中,计数器值可以以整数增大,但是应该理解计数器可以增大任何合适的值,而不脱离本公开的范围。在416,方法400确定计数器值是否大于第二阈值。如果计数器值不大于第二阈值,则方法400返回到404。如果计数器值小于第二阈值,则方法400继续到418,其中第二超前运行毒物策略被选择。在该示例中,方法400可以选择超前运行毒物策略,其中在检测到L1高速缓存中的未命中时,根据第二超前运行毒物策略,微处理器立即注入毒物并且不延迟处理随后的指令直到确定L2高速缓存中发生命中或未命中。一旦第二超前运行毒物策略被选择,之后方法400就返回到404。
应该理解第一和第二阈值可以设置为任何合适的值,而不脱离本公开的范围。在一些实施例中,第一和第二阈值可以具有不同的值以引入滞后,潜在地避免可能由超前运行毒物策略中的频繁改变产生的不稳定性。在图4所示的实施例中,小于第一阈值的计数器值触发第一超前运行毒物策略的选择,而大于第二阈值的计数器值触发第二超前运行毒物策略的选择。
虽然以上所论述的方法400的实施例涉及在两个超前运行毒物策略之间交替的示例,但是应该理解可以采用任何合适数目的超前运行毒物策略,而不脱离本公开的范围。例如,在一些实施例中,方法400可以为了适应于高速缓存层级的附加级别而与三个或三个以上的超前运行毒物策略一起使用。
应该理解可以由任何合适的微处理器实施本文所公开的方法。例如,图5示意性地描绘了可以结合本文所描述的系统和方法被采用的微处理器500的实施例。图5中所示出的微处理器500的实施例描绘超前运行控制逻辑502。超前运行控制逻辑502控制进入和退出用于微处理器500的超前运行模式。在一些实施例中,超前运行控制逻辑502还可以控制与进入和退出超前运行相关的存储器操作。例如,在进入超前运行时,可以为微处理器500的一部分设置检查点,以保存微处理器500的状态,而未设检查点的工作状态版本的微处理器500在超前运行期间前瞻性地执行指令。在这类实施例的一些中,超前运行控制逻辑502可以在退出超前运行时将微处理器500还原到经设置检查点的状态。
微处理器500还包括一个或多个处理器寄存器504。在一些实施例中,寄存器504可以包括在通用寄存器堆中或以其他方式适当地分布在微处理器500内。寄存器504存储在操作期间所使用的数据和/或指令。例如,管线级可以从输入寄存器获得数据、使用所获得的数据实施指定的操作并且之后在目的寄存器处存储结果。应该理解标签“目的寄存器”和“输入寄存器”是相对的术语。例如,用于第一操作的目的寄存器可以充当用于另一个操作的输入寄存器;同样地,用于一个操作的输入寄存器可以已经用作用于在先操作的目的寄存器等。
在图5所示的实施例中,利用毒物位506扩充每个寄存器504。每个毒物位506配置为使得它的值可以指示寄存器504中的相关联的位置的可信度。每个毒物位506配置为在超前运行操作期间指示包括在相关联的寄存器504中的数据和指令的有效性/无效性。
图5中所示出的微处理器500的实施例还包括毒化控制逻辑508,操作为确定目的寄存器是否可能潜在地包含无效信息(例如基于经毒化的输入寄存器、无效的计算结果,诸如除以零等)。如果确定目的寄存器将潜在地包含无效信息,则毒化控制逻辑508将毒物应用到目的寄存器。
毒化控制逻辑508还配置为在微处理器操作期间从多个超前运行毒物策略中选择。例如,毒化控制逻辑508可以选择操作为在检测到L1高速缓存中的未命中时立即注入毒物的超前运行毒物策略,并且稍后选择操作为等待注入毒物直到确定L1未命中中的未命中还将导致L2高速缓存中的未命中为止的另一个超前运行毒物策略。毒化控制逻辑508可以配置为在超前运行和/或正常操作期间作为超前运行毒物策略的选择和/或应用的一部分评估微处理器性能。
在5中所示出的实施例中,毒化控制逻辑508包括毒化控制位509。毒化控制位509可以用来追踪和/或应用特定的超前运行毒物策略。例如,将毒化控制位509设置为第一值可以使毒化控制逻辑508应用第一超前运行毒物策略。将毒化控制位509更改为另一个值可以使毒化控制逻辑508选择和/或应用不同的超前运行毒物控制策略。
虽然为了清楚,图5中所示出的实施例将毒化控制逻辑508作为与微处理器500的其他部分分开的整体进行描绘,但是应该理解毒化控制逻辑508的一些或全部功能可以分布在微处理器500的合适部分之中。例如,在一些实施例中,毒化控制逻辑508可以分布在调度逻辑的部分之中和/或在执行逻辑的部分之中。例如,在一些实施例中,毒化控制逻辑508可以包括自包含的硬件单元,其包括毒化控制位509、用于在超前运行期间测量微处理器性能的逻辑和/或软件。在一些其他的实施例中,毒化控制逻辑508可以包括毒化控制位509和用于从多个超前运行毒物策略中进行选择的合适的毒物控制算法,并且可以操作为接收来自微处理器500的其他方面的处理器性能信息。在又一些其他实施例中,毒化控制逻辑508可以包括毒化控制位509并且可以使用毒物控制软件控制超前运行毒物策略的选择,该毒化控制软件在应用软件、操作系统软件和/或在操作系统可见的软件层(例如固件或转译架构的转译层中)中实现。
图5中所描绘的微处理器500的实施例还包括存储器层级510,其可以包括L1处理器高速缓存510A、L2处理器高速缓存510B、L3处理器高速缓存510C、主存储器510D(例如一个或多个DRAM芯片)、二级存储510E(例如磁性和/或光学存储单元)和/或三级存储510F(例如磁带群)。应该理解示范性的存储器/存储部件以访问时间和容量增大的顺序列出,尽管存在可能的例外。
存储器控制器510G可以用来处理协议并提供主存储器510D所需的信号接口,以及调度存储器访问。存储器控制器可实现在处理器裸片(die)上或分开的裸片上。应该理解以上所提供的存储器层级是非限制性的并且可以使用其他存储器层级而不脱离本公开的范围。
微处理器500还包括管线,其以简化的形式在图5中示出为管线512。管线化可允许多于一个指令并发地处于检索和执行的不同级。换句话说,指令集可传递通过管线512中所包括的各个级,与此同时从存储器检索另一指令和/或数据。因此,在上游检索机制正在等待存储器返回指令和/或数据的同时可以利用级,其衔接各种结构诸如高速缓存和分支预测器以使得可以潜在地发现其他高速缓存未命中和/或分支误预测。相对于以单独的、串行的方式检索和执行指令和/或数据的方法,该方法可以潜在地加速由微处理进行的指令和数据处理。
如图5所示,管线512包括获取逻辑514、解码逻辑516、调度器逻辑518、执行逻辑520和回写逻辑522。应该理解图5中所示出的管线112的实施例中所显示的逻辑部分被提供仅用于示例性的目的并且可以以任何合适的方式安排以下所更详细描述的功能性。例如,管线512的一些实施例可以包括执行单元中的一个或多个内的单独管线化的部分(例如获取逻辑514、解码逻辑516等中的一个或多个可以包括单独管线部分),而一些实施例可以将两个或两个以上逻辑部分的部分组合单个管线执行单元内。
获取逻辑514从存储器层级510检索指令,典型地是从主存储器和L2-L3高速缓存所支持的统一或专用L1高速缓存检索指令。解码逻辑516例如通过解析操作码、操作数和寻址模式来解码指令。一旦被解析,指令就随后由调度器逻辑518所调度用于由执行逻辑520执行。
在一些实施例中,调度逻辑518可以配置为调度指令用于以指令集架构(ISA)指令的形式执行。附加地或可替代地,在一些实施例中,调度逻辑518可以配置为调度微操作束用于执行,其中每个微操作与一个或多个ISA指令或ISA指令的部分相对应。应该理解可以采用任何合适的安排用于在微操作束中调度指令,而不脱离本公开的范围。例如,在一些实施例中,单个指令可在多个微操作束中调度,而在一些实施例中单个指令可调度为微操作束。在又一些其他实施例中,多个指令可调度为微操作束。在另一些其他实施例中,调度逻辑518可以调度单独的指令或微操作,例如根本不包括束的指令或微操作。
如图5所示,管线512的所描绘的实施例包括执行逻辑520,该执行逻辑520可以包括配置为执行由调度逻辑518所发出的指令的一个或多个执行级。任何合适数目和类型的执行级可以包括在执行逻辑520内。一旦由执行逻辑520所处理,就可以存储已完成的指令以准备由回写逻辑522提交。回写逻辑522通过将已完成的指令提交到存储器来更改微处理器500的架构状态。换句话说,回写逻辑522实施用于微处理器500的提交功能性。
应该理解上述在管线512中所示的级是典型RISC实现方案的示例而非意在限制。例如,在一些实施例中,可以在管线的上游提供获取逻辑和调度逻辑功能,诸如编译VLIW指令或指令集转译。在一些其他实施例中,调度逻辑可以包括在微处理器的获取逻辑和/或解码逻辑中。更一般地,微处理器可以包括获取、解码和执行逻辑,其中的每一个可以包括一个或多个级,而由执行逻辑实行存储(mem)和回写功能。本公开同样适用于这些和其他微处理器实现方案,包括可使用VLIW指令和/或其他逻辑指令的混合实现方案。
在所描述的示例中,可以每次一个地获取和执行指令,这可能需要多个时钟周期。在此期间,数据路径的重要部分可能未被使用。补充或取代单个指令获取,可使用预获取方法和多发出方法(例如超标量(superscalar)方法)来增强性能并避免与读和存储操作(例如,读取指令以及将这类指令加载到处理器寄存器和/或执行队列中)相关联的延迟瓶颈。因此,应该理解可以使用任何合适的获取、调度和分派指令的方式而不脱离本公开的范围。
应该理解本文所描述的方法仅出于示例性的目的而提供而非意在限制。因此,应该理解在一些实施例中本文所描述的方法可以包括附加的或替代的过程,而在一些实施例中本文所描述的方法可以包括一些可以被重新排序或省略的过程,而不脱离本公开的范围。进一步地,应该理解可以使用包括本文所描述硬件的任何合适硬件来实施本文所描述的方法。
本书面描述使用示例来公开本发明,包括最佳模式,并且还使相关领域的普通技术人员能够实践本发明,包括制造和使用任何设备或系统以及实施任何所包含的方法。本发明的可专利范围由权利要求所定义,并且可以包括本领域普通技术人员所理解的其他示例。这类其他示例旨在处于权利要求的范围内。
Claims (10)
1.一种用于操作微处理器的方法,所述方法包括:
根据对超前运行事件的检测,使所述微处理器进入超前运行;
在超前运行期间,实现从操作为管理超前运行毒物注入的多个超前运行毒物策略中所选择的第一超前运行毒物策略;以及
在微处理器操作期间,选择并且实现与所述第一超前运行毒物策略不同地管理超前运行毒物注入的第二超前运行毒物策略。
2.如权利要求1所述的方法,其中选择所述第二超前运行毒物策略包括基于微处理器性能选择所述第二超前运行毒物策略。
3.如权利要求2所述的方法,进一步包括在选择所述第二超前运行毒物策略之前评估微处理器性能,通过:
在第一时间间隔期间生成第一性能信息并且在第二时间间隔期间生成第二性能信息;以及
将所述第一性能信息与所述第二性能信息作比较。
4.如权利要求3所述的方法,其中将所述第一性能信息与所述第二性能信息作比较包括将最近的第一性能信息与最近的第二性能信息作比较。
5.如权利要求1所述的方法,其中选择所述第二超前运行毒物策略包括基于高速缓存层级的所选择的高速缓存级别中的命中对未命中的相对比率来选择所述第二超前运行毒物策略。
6.如权利要求5所述的方法,进一步包括:
将用于所述所选择的高速缓存级别的高速缓存命中计数与用于所述所选择的高速缓存级别的高速缓存未命中计数作比较;以及
响应于将所述高速缓存命中计数与所述高速缓存未命中计数作比较,选择超前运行毒物策略用于在超前运行操作期间实现。
7.如权利要求1所述的方法,其中所述第一超前运行毒物策略操作为根据确定高速缓存层级中的特定高速缓存级别中的未命中使所述微处理器注入毒物并且其中所述第二超前运行毒物策略操作为使所述微处理器等待注入毒物直到确定高于那个高速缓存级别的高速缓存级别中的未命中。
8.如权利要求7所述的方法,进一步包括如果所述高速缓存层级的所选择的高速缓存级别中的未命中率超过所述所选择的高速缓存级别中的命中率,则选择所述第一超前运行毒物策略;以及如果所述所选择的高速缓存级别中的所述命中率超过所述所选择的高速缓存级别中的所述未命中率,则选择所述第二超前运行毒物策略。
9.一种微处理器,包括:
高速缓存层级;
超前运行控制逻辑,操作为响应于所述高速缓存层级中的未命中而使所述微处理器进入超前运行;以及
毒物控制逻辑,操作为在超前运行期间动态地实现操作为管理超前运行毒物注入的多个超前运行毒物策略中的一个。
10.如权利要求9所述的微处理器,其中所述高速缓存层级包括第一高速缓存级别和第二高速缓存级别,所述第一高速缓存级别按层级低于所述第二高速缓存级别,并且其中所述多个超前运行毒物策略包括第一超前运行毒物策略,所述第一超前运行毒物策略操作为在超前运行期间根据确定所述第一高速缓存级别中的未命中使所述微处理器注入超前运行毒物,并且其中所述第二超前运行毒物策略操作为在超前运行期间使所述微处理器等待注入毒物直到确定所述第二高速缓存级别中的未命中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/662,171 | 2012-10-26 | ||
US13/662,171 US10001996B2 (en) | 2012-10-26 | 2012-10-26 | Selective poisoning of data during runahead |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103793205A true CN103793205A (zh) | 2014-05-14 |
Family
ID=50479874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310492729.0A Pending CN103793205A (zh) | 2012-10-26 | 2013-10-18 | 在超前运行期间对数据的选择性毒化 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10001996B2 (zh) |
CN (1) | CN103793205A (zh) |
DE (1) | DE102013219859A1 (zh) |
TW (1) | TW201433979A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870241A (zh) * | 2012-12-07 | 2014-06-18 | 辉达公司 | 用于微处理器的惰性超前运行操作 |
US9582280B2 (en) | 2013-07-18 | 2017-02-28 | Nvidia Corporation | Branching to alternate code based on runahead determination |
US9740553B2 (en) | 2012-11-14 | 2017-08-22 | Nvidia Corporation | Managing potentially invalid results during runahead |
US9875105B2 (en) | 2012-05-03 | 2018-01-23 | Nvidia Corporation | Checkpointed buffer for re-entry from runahead |
US10001996B2 (en) | 2012-10-26 | 2018-06-19 | Nvidia Corporation | Selective poisoning of data during runahead |
CN109669881A (zh) * | 2018-12-11 | 2019-04-23 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于Cache空间预约算法的计算方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9569214B2 (en) | 2012-12-27 | 2017-02-14 | Nvidia Corporation | Execution pipeline data forwarding |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040128448A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Apparatus for memory communication during runahead execution |
US20060174228A1 (en) * | 2005-01-28 | 2006-08-03 | Dell Products L.P. | Adaptive pre-fetch policy |
CN1971506A (zh) * | 2005-11-24 | 2007-05-30 | 矽统科技股份有限公司 | 避免长延迟事件发生的方法 |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956753A (en) | 1993-12-30 | 1999-09-21 | Intel Corporation | Method and apparatus for handling speculative memory access operations |
SG47981A1 (en) | 1994-03-01 | 1998-04-17 | Intel Corp | Pipeline process of instructions in a computer system |
JPH0877347A (ja) | 1994-03-08 | 1996-03-22 | Texas Instr Inc <Ti> | 画像/グラフィックス処理用のデータ処理装置およびその操作方法 |
US5487146A (en) | 1994-03-08 | 1996-01-23 | Texas Instruments Incorporated | Plural memory access address generation employing guide table entries forming linked list |
JP2763499B2 (ja) | 1994-11-30 | 1998-06-11 | 株式会社ナムコ | 画像合成装置及び画像合成方法 |
US6665792B1 (en) | 1996-11-13 | 2003-12-16 | Intel Corporation | Interface to a memory system for a processor having a replay system |
US5864692A (en) | 1996-12-16 | 1999-01-26 | Hewlett-Packard Company | Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions |
US5870582A (en) | 1997-03-31 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched |
US6668291B1 (en) | 1998-09-09 | 2003-12-23 | Microsoft Corporation | Non-blocking concurrent queues with direct node access by threads |
US6862635B1 (en) | 1998-11-13 | 2005-03-01 | Cray Inc. | Synchronization techniques in a multithreaded environment |
US6519694B2 (en) | 1999-02-04 | 2003-02-11 | Sun Microsystems, Inc. | System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity |
US6535905B1 (en) | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6484254B1 (en) | 1999-12-30 | 2002-11-19 | Intel Corporation | Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses |
US6950925B1 (en) | 2002-08-28 | 2005-09-27 | Advanced Micro Devices, Inc. | Scheduler for use in a microprocessor that supports data-speculative execution |
US6981083B2 (en) | 2002-12-05 | 2005-12-27 | International Business Machines Corporation | Processor virtualization mechanism via an enhanced restoration of hard architected states |
US7139876B2 (en) | 2003-01-16 | 2006-11-21 | Ip-First, Llc | Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache |
US7587584B2 (en) | 2003-02-19 | 2009-09-08 | Intel Corporation | Mechanism to exploit synchronization overhead to improve multithreaded performance |
US7225299B1 (en) | 2003-07-16 | 2007-05-29 | Transmeta Corporation | Supporting speculative modification in a data cache |
US7062631B1 (en) | 2003-07-17 | 2006-06-13 | Transmeta Corporation | Method and system for enforcing consistent per-physical page cacheability attributes |
US7075541B2 (en) | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
US7010648B2 (en) | 2003-09-08 | 2006-03-07 | Sun Microsystems, Inc. | Method and apparatus for avoiding cache pollution due to speculative memory load operations in a microprocessor |
US7293161B1 (en) | 2003-10-14 | 2007-11-06 | Sun Microsystems, Inc. | Deferring loads and stores when a load buffer or store buffer fills during execute-ahead mode |
US7496732B2 (en) | 2003-12-17 | 2009-02-24 | Intel Corporation | Method and apparatus for results speculation under run-ahead execution |
US7310722B2 (en) | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US7340565B2 (en) | 2004-01-13 | 2008-03-04 | Hewlett-Packard Development Company, L.P. | Source request arbitration |
US8190863B2 (en) | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
US7257699B2 (en) | 2004-07-08 | 2007-08-14 | Sun Microsystems, Inc. | Selective execution of deferred instructions in a processor that supports speculative execution |
US7194604B2 (en) | 2004-08-26 | 2007-03-20 | International Business Machines Corporation | Address generation interlock resolution under runahead execution |
US7890735B2 (en) | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US7421567B2 (en) | 2004-12-17 | 2008-09-02 | International Business Machines Corporation | Using a modified value GPR to enhance lookahead prefetch |
US20060149931A1 (en) | 2004-12-28 | 2006-07-06 | Akkary Haitham | Runahead execution in a central processing unit |
US7752627B2 (en) | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7613904B2 (en) | 2005-02-04 | 2009-11-03 | Mips Technologies, Inc. | Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler |
US7571304B2 (en) | 2005-03-18 | 2009-08-04 | Sun Microsystems, Inc. | Generation of multiple checkpoints in a processor that supports speculative execution |
US20060277398A1 (en) * | 2005-06-03 | 2006-12-07 | Intel Corporation | Method and apparatus for instruction latency tolerant execution in an out-of-order pipeline |
US7747841B2 (en) | 2005-09-26 | 2010-06-29 | Cornell Research Foundation, Inc. | Method and apparatus for early load retirement in a processor system |
US7730263B2 (en) | 2006-01-20 | 2010-06-01 | Cornell Research Foundation, Inc. | Future execution prefetching technique and architecture |
US20070186081A1 (en) | 2006-02-06 | 2007-08-09 | Shailender Chaudhry | Supporting out-of-order issue in an execute-ahead processor |
US8621120B2 (en) | 2006-04-17 | 2013-12-31 | International Business Machines Corporation | Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism |
US8035648B1 (en) * | 2006-05-19 | 2011-10-11 | Nvidia Corporation | Runahead execution for graphics processing units |
US8707011B1 (en) | 2006-10-24 | 2014-04-22 | Nvidia Corporation | Memory access techniques utilizing a set-associative translation lookaside buffer |
US7895421B2 (en) | 2007-07-12 | 2011-02-22 | Globalfoundries Inc. | Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement |
US20090327661A1 (en) | 2008-06-30 | 2009-12-31 | Zeev Sperber | Mechanisms to handle free physical register identifiers for smt out-of-order processors |
US9155014B2 (en) | 2008-11-17 | 2015-10-06 | Qualcomm Incorporated | Conditional access terminal initiation of delayed handover |
US8639886B2 (en) | 2009-02-03 | 2014-01-28 | International Business Machines Corporation | Store-to-load forwarding mechanism for processor runahead mode operation |
US8635437B2 (en) | 2009-02-12 | 2014-01-21 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static exception state |
TWI428918B (zh) | 2009-09-29 | 2014-03-01 | Silicon Motion Inc | 記憶裝置以及記憶裝置之資料存取方法 |
US9086889B2 (en) | 2010-04-27 | 2015-07-21 | Oracle International Corporation | Reducing pipeline restart penalty |
US8719625B2 (en) | 2010-07-22 | 2014-05-06 | International Business Machines Corporation | Method, apparatus and computer program for processing invalid data |
US8627044B2 (en) | 2010-10-06 | 2014-01-07 | Oracle International Corporation | Issuing instructions with unresolved data dependencies |
CN102184127B (zh) | 2011-05-20 | 2013-11-06 | 北京北大众志微系统科技有限责任公司 | 一种实现处理器预执行的方法及相应的装置 |
US9009449B2 (en) | 2011-11-10 | 2015-04-14 | Oracle International Corporation | Reducing power consumption and resource utilization during miss lookahead |
US9645929B2 (en) | 2012-09-14 | 2017-05-09 | Nvidia Corporation | Speculative permission acquisition for shared memory |
US10001996B2 (en) | 2012-10-26 | 2018-06-19 | Nvidia Corporation | Selective poisoning of data during runahead |
US9740553B2 (en) | 2012-11-14 | 2017-08-22 | Nvidia Corporation | Managing potentially invalid results during runahead |
US20140164738A1 (en) | 2012-12-07 | 2014-06-12 | Nvidia Corporation | Instruction categorization for runahead operation |
US9632976B2 (en) | 2012-12-07 | 2017-04-25 | Nvidia Corporation | Lazy runahead operation for a microprocessor |
US9547602B2 (en) | 2013-03-14 | 2017-01-17 | Nvidia Corporation | Translation lookaside buffer entry systems and methods |
US9582280B2 (en) | 2013-07-18 | 2017-02-28 | Nvidia Corporation | Branching to alternate code based on runahead determination |
-
2012
- 2012-10-26 US US13/662,171 patent/US10001996B2/en active Active
-
2013
- 2013-10-01 DE DE102013219859.0A patent/DE102013219859A1/de active Pending
- 2013-10-16 TW TW102137264A patent/TW201433979A/zh unknown
- 2013-10-18 CN CN201310492729.0A patent/CN103793205A/zh active Pending
-
2018
- 2018-04-02 US US15/943,509 patent/US10628160B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040128448A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Apparatus for memory communication during runahead execution |
US20060174228A1 (en) * | 2005-01-28 | 2006-08-03 | Dell Products L.P. | Adaptive pre-fetch policy |
CN1971506A (zh) * | 2005-11-24 | 2007-05-30 | 矽统科技股份有限公司 | 避免长延迟事件发生的方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875105B2 (en) | 2012-05-03 | 2018-01-23 | Nvidia Corporation | Checkpointed buffer for re-entry from runahead |
US10001996B2 (en) | 2012-10-26 | 2018-06-19 | Nvidia Corporation | Selective poisoning of data during runahead |
US10628160B2 (en) | 2012-10-26 | 2020-04-21 | Nvidia Corporation | Selective poisoning of data during runahead |
US9740553B2 (en) | 2012-11-14 | 2017-08-22 | Nvidia Corporation | Managing potentially invalid results during runahead |
CN103870241A (zh) * | 2012-12-07 | 2014-06-18 | 辉达公司 | 用于微处理器的惰性超前运行操作 |
US9632976B2 (en) | 2012-12-07 | 2017-04-25 | Nvidia Corporation | Lazy runahead operation for a microprocessor |
US9891972B2 (en) | 2012-12-07 | 2018-02-13 | Nvidia Corporation | Lazy runahead operation for a microprocessor |
US9582280B2 (en) | 2013-07-18 | 2017-02-28 | Nvidia Corporation | Branching to alternate code based on runahead determination |
US9804854B2 (en) | 2013-07-18 | 2017-10-31 | Nvidia Corporation | Branching to alternate code based on runahead determination |
CN109669881A (zh) * | 2018-12-11 | 2019-04-23 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于Cache空间预约算法的计算方法 |
CN109669881B (zh) * | 2018-12-11 | 2023-04-14 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于Cache空间预约算法的计算方法 |
Also Published As
Publication number | Publication date |
---|---|
US20140122805A1 (en) | 2014-05-01 |
DE102013219859A1 (de) | 2014-04-30 |
US20180225121A1 (en) | 2018-08-09 |
TW201433979A (zh) | 2014-09-01 |
US10001996B2 (en) | 2018-06-19 |
US10628160B2 (en) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103793205A (zh) | 在超前运行期间对数据的选择性毒化 | |
CN101278265B (zh) | 用于收集剖析信息的方法和用于优化代码段的系统 | |
CN100407147C (zh) | 为记录事件提供前置与后置处理程序的方法 | |
US9063804B2 (en) | System to profile and optimize user software in a managed run-time environment | |
CN103809935A (zh) | 在超前运行期间管理潜在无效结果 | |
KR100390610B1 (ko) | 추론적인 프로세서에서 비-추론적인 이벤트들을카운트하기 위한 방법, 및 시스템 | |
US8935698B2 (en) | Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors | |
CN102736897B (zh) | 多线程处理的线程选择 | |
CN103383642A (zh) | 用于从超前运行重新进入的设检查点的缓冲区 | |
WO2013101111A1 (en) | Machine check summary register | |
US20090044198A1 (en) | Method and Apparatus for Call Stack Sampling in a Data Processing System | |
KR20180105169A (ko) | 어드레스 변환 대기시간의 측정 | |
US9971603B2 (en) | Causing an interrupt based on event count | |
US9575766B2 (en) | Causing an interrupt based on event count | |
CN103810035A (zh) | 智能上下文管理 | |
US6530042B1 (en) | Method and apparatus for monitoring the performance of internal queues in a microprocessor | |
CN101561778B (zh) | 一种检测多任务操作系统任务死循环的方法 | |
US6550002B1 (en) | Method and system for detecting a flush of an instruction without a flush indicator | |
CN110109705A (zh) | 一种支持嵌入式边缘计算的超标量处理器分支预测方法 | |
CN114020441A (zh) | 一种多线程处理器的指令预测方法及相关装置 | |
WO2020061765A1 (zh) | 一种处理器性能的监测方法及装置 | |
US20220308882A1 (en) | Methods, systems, and apparatuses for precise last branch record event logging | |
CN104361183A (zh) | 基于模拟器的微处理器微体系结构参数优化方法 | |
JP2005215816A (ja) | ハードウェアモニタを用いた性能プロファイリング方法 | |
US7971190B2 (en) | Machine learning performance analysis tool |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140514 |