CN111381869B - 使用预测分配的微操作高速缓存 - Google Patents
使用预测分配的微操作高速缓存 Download PDFInfo
- Publication number
- CN111381869B CN111381869B CN201911376497.6A CN201911376497A CN111381869B CN 111381869 B CN111381869 B CN 111381869B CN 201911376497 A CN201911376497 A CN 201911376497A CN 111381869 B CN111381869 B CN 111381869B
- Authority
- CN
- China
- Prior art keywords
- micro
- mode
- instruction
- fetch
- core
- 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.)
- Active
Links
- 230000007704 transition Effects 0.000 claims 5
- 238000000034 method Methods 0.000 description 22
- 238000005516 engineering process Methods 0.000 description 21
- 238000010276 construction Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000007943 implant Substances 0.000 description 2
- 238000002513 implantation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 239000003826 tablet Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 235000012773 waffles Nutrition 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/453—Microcode or microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6032—Way prediction in set-associative cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
Abstract
根据一个总的方面,一种设备可以包括配置为从存储器检索指令的指令取出单元电路。该设备可以包括配置为将指令转换为提供给运行单元电路的一个或多个微操作的指令解码单元电路。该设备还可以包括配置为存储一个或多个微操作的微操作高速缓存。该设备可以进一步包括分支预测电路,配置为:确定何时指令的内核重复,在微操作高速缓存内存储内核的至少部分,和在没有指令解码单元电路的进一步帮助的情况下,将内核的存储的部分提供到运行单元电路。
Description
技术领域
本描述涉及取出用于处理器的指令,且更具体地涉及使用预测分配的微操作高速缓存。
背景技术
在计算机处理单元中,微操作(微op、μop或者uop)通常是用于某些设计以实现复杂的机器指令(有时在该上下文中称为宏指令)的具体的低级指令。通常,微操作对于一个或多个寄存器中存储的数据执行基本操作,包括在寄存器之间或者在寄存器和中央处理单元(CPU)的外部总线之间传送数据,和对于寄存器执行算术或者逻辑操作。在典型的取出-解码-运行周期中,在宏指令的运行期间分解其每个步骤,所以处理器可以确定和步进执行(step through)一系列微操作。在处理器的控制单元的控制下执行微操作的运行,处理器的控制单元在执行比如重新排序、融合和高速缓存的各种优化的同时决定微操作的运行。
指令周期(也称为取出-解码-运行周期或者取出-运行周期)通常是计算机系统的基本操作处理。其是如下的处理:计算机通过其从计算机的存储器检索程序指令,确定指令描述什么动作,且然后进行那些动作的处理。该周期从启动直到计算机关闭由计算机的中央处理单元(CPU)连续地重复。
处理器,特别是移动处理器,通常以两个主要方式受功耗的限制:为处理器供电的移动装置的电池寿命,和由于热限制的性能扼制。因此在CPU微架构的进展中寻求无性能恶化的功耗的大幅降低。
发明内容
技术问题
本公开致力于使用预测分配的微操作高速缓存。
解决方案
根据一个一般方面,一种设备可以包括配置为从存储器检索指令的指令取出单元电路。该设备可以包括配置为将指令转换为提供给运行单元电路的一个或多个微操作的指令解码单元电路。该设备还可以包括配置为存储一个或多个微操作的微操作高速缓存。该设备可以进一步包括分支预测电路,其配置为:确定何时指令的内核重复,在微操作高速缓存内存储内核的至少部分,和在没有指令解码单元电路的进一步帮助的情况下将内核的存储的部分提供到运行单元电路。
根据另一一般方面,一种系统可以包括配置为存储指令的指令高速缓存。该系统可以包括指令取出和解码电路,其配置为:从指令高速缓存检索指令,和将指令转换为提供给运行单元电路的一个或多个微操作。该系统可以包括配置为存储一个或多个微操作的微操作高速缓存。该系统可以包括分支预测电路,其配置为:确定何时指令的内核重复,在微操作高速缓存内存储内核的至少部分,和在没有指令高速缓存的进一步帮助的情况下将内核的存储的部分提供到运行单元电路。
根据另一一般方面,一种设备可以包括存储指令的指令高速缓存。该设备可以包括指令取出流水线电路,其配置为将指令从指令高速缓存提供到运行单元电路。指令取出流水线电路可以包括第一指令路径和第二指令路径。第一指令路径可以包括配置为从指令高速缓存检索指令的取出电路,和配置为将指令转换为一个或多个微操作并将一个或多个微操作供应到运行单元电路的解码电路。第二指令路径可以包括配置为存储一个或多个微操作的微操作高速缓存,和分支预测电路。分支预测电路可以配置为:确定何时指令的内核重复,在微操作高速缓存内存储内核的至少部分,和当第一指令路径处于低功率模式时将内核的存储的部分提供到运行单元电路。
在以下的附图和说明书中提出一个或多个实现的细节。其他特征根据说明书和附图,且根据权利要求书是明显的。
基本上如附图中的至少一个所示和/或关于附图中的至少一个所描述的,一种用于取出用于处理器的指令的系统和/或方法,且更具体地一种使用预测分配的微操作高速缓存如在权利要求书中更完全地提出。
技术效果
根据本发明的实施例,提供了一种设备和具有该设备的系统,其确定何时指令的内核重复,在微操作高速缓存内存储内核的至少部分和将内核的存储的部分提供到运行单元电路。
附图说明
图1是根据公开的主题的系统的示例实施例的框图。
图2是根据公开的主题的技术的示例实施例的流程图。
图3是根据公开的主题的技术的示例实施例的流程图。
图4是可以包括根据公开的主题的原理形成的装置的信息处理系统的示意性框图。
各个图中相同的附图标记指示相同的元件。
具体实施方式
在下文中将参考附图更全面地描述各种示例实施例,在附图中示出了一些示例实施例。但是,本公开的主题可以具体表现为许多不同形式且不应该被看作是限于在这里提出的示例实施例。而是,提供这些示例实施例以使得本公开将是彻底的和完整的,且将向本领域技术人员完全地传达本公开的主题的范围。在图中,层和区域的大小和相对大小可以为了清晰而被放大。
将理解当元件或层被称为“在”另一元件或层“上”、“连接到”或者“耦合到”另一元件或层时,其可以直接在另一元件或者层上、直接连接到或者耦合到另一元件或者层,或者也可以存在介于其间的元件或者层。相反地,当元件或者层被称为“直接在”另一元件或者层“上”,“直接连接到”或者“直接耦合到”另一元件或者层时,不存在介于其间的元件或者层。相同的附图标记在全文中指相同的元件。如在此使用的,术语“和/或”包括关联的列出的项的一个或多个的任意和所有组合。
将理解,虽然在这里可以使用术语第一、第二、第三等以描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应该由这些术语限制。这些术语仅用于区分一个元件、组件、区域、层或者部分与另一元件、组件、区域、层或者部分。因此,以下讨论的第一元件、组件、区域、层或者部分可以被称为第二元件、组件、区域、层或者部分而不脱离本公开的主题的教导。
空间相对的术语,比如“之下”、“以下”、“下部”、“之上”、“上部”等在这里可以为了描述的方便而用于描述如在图中图示的一个元件或者特征与另外的一个或多个元件或者特征的关系。将理解空间相对的术语意在除在图中所示的方位之外还包括使用或操作中的装置的不同方位。例如,如果在图中的装置翻转,则描述为在其它元件或者特征“之下”或者“以下”的元件的方位将定位于其它元件或者特征“以上”。因此,示例性术语“以下”可以包含以上和以下两者的方位。装置可以以别的方式定位(旋转90度或者在其它方位),且在这里使用的空间相对的描述词相应地解释。
同样地,电术语,比如“高”、“低”、“拉高”、“拉低”、“1”、“0”等在这里可以为了描述的方便而用于描述相对于其它电压电平或者如在图中所示的另一个或多个元件或者特征的电压电平或者电流。将理解,电相对术语意在除在图中示出的电压或者电流之外还包括在使用或者操作中的装置的不同基准电压。例如如果在图中装置或者信号反转或者使用其它基准电压、电流或者电荷,描述为“高”或者“拉高”的元件与新基准电压或者电流相比将是“低”或者“拉低”。因此,示例性术语“高”可以包括相对低或者高的电压或者电流两者。该装置可以另外基于不同的电参照系和在这里使用的电相对描述词相应地解释。
在这里使用的术语仅用于描述特定的示例实施例的目的而不意在限制本公开的主题。如在此使用的,单数形式“一”、“一个”和“该”意在也包括复数形式,除非上下文清楚地另外指示。将进一步理解术语“包括”和/或“包含”当在该说明书中使用时指定所述的特征、整数、步骤、操作、元件或其组件的存在,而不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其组的存在或者增加。
在这里参考作为理想化的示例实施例(和中间结构)的示意性图示的截面图示描述示例实施例。因而,要预期例如作为制造技术和/或容差的结果的与图示的形状的变化。因此,示例实施例不应该被看作是限于在这里图示的区域的特定形状而是包括例如由制造导致的在形状上的偏差。例如,图示为矩形的注入区域将典型地具有倒圆或者弯曲的特征和/或在它的边缘具有注入浓度的梯度,而不是注入到非注入区域的二元变化。类似的,通过注入形成的掩埋区域可以导致在掩埋区域和通过其发生注入的表面之间的区域中的一些嵌入。因此,在图中图示的区域本质上是示意性的,且它们的形状不意在图示装置的区域的实际形状且不意在限制本公开的主题的范围。
除非另外限定,在这里使用的所有术语(包括技术和科学术语)具有与本公开的主题属于的领域中的一般技术人员通常理解的相同的含义。将进一步理解比如在通常使用的词典中限定的术语的术语应该解释为具有与它们在有关技术的上下文中的含义一致的含义,且将不以理想化或者过度形式化的意义解释,除非在这里明确地这样限定。
在下文中,将参考附图详细说明示例实施例。
图1是根据公开的主题的系统100的示例实施例的框图。在各种实施例中,系统100可以是处理器(例如,中央处理单元(CPU)、图形处理单元(GPU)、片上系统(SoC)、专用控制器、专用处理器等)的部分或者任何流水线架构。在各种实施例中,系统100可以包括在计算装置中(诸如例如膝上型电脑、台式电脑、工作站、个人数字助理、智能电话、平板电脑和其他适当的计算机)或者虚拟机或者其虚拟计算装置。
在各种实施例中,系统100可以图示流水线架构(例如,传统的五级简化指令集计算机(RISC)架构)的开始的部分。在图示的实施例中,系统100可以包括从系统存储器(未示出)或者指令高速缓存133检索或者取出指令的指令取出级。系统100然后可以解码指令,确定哪个运行单元(未示出)执行指令,和将较大的指令转换为一个或多个微操作。这些微操作然后可以转送到用于处理的运行单元。
在图示的实施例中,指令取出级可以主要由指令取出单元电路(IFU)122执行。解码级可以主要由指令解码单元电路(IDU)124形成。要理解上述仅是几个说明的示例,公开的主题不限于此。
在图示的实施例中,系统100可以包括uop内核电路104。在各种实施例中,可以作为IFU 122的部分、IDU 124、或者两者的部分包括uop内核电路104。在这种实施例中,uop内核电路104可以配置为存储uop,将uop提供到运行单元,和当IFU 122和IDU 124处于低功率模式时执行那些电路(的部分)的职责。
在这种实施例中,uop内核电路104可以包括uop高速缓存114。uop高速缓存(UOC)114可以配置为存储uop以用于进一步使用。这些uop最初可以由IDU 124提供。
在图示的实施例中,uop内核电路104还可以包括配置为存储与在UOC114中存储的uop相关联的标签和元数据的UOC标签电路115。uop内核电路104可以包括配置为维持要添加到UOC 114的uop的顺序的UOC地址队列电路116。uop内核电路104可以进一步包括配置为确定UOC 114是否具有用于附加uop的空间和分配uop的空间(例如,如有必要经由逐出)的UOC分配电路113。
在图示的实施例中,uop内核电路104可以包括分支预测单元或电路112。在各种实施例中,分支预测单元112可以配置为预测哪个指令是接下来将运行的。在各种实施例中,分支预测单元112可以包括分支图、边缘图、分支边缘图或者甚至链接的列表预测器。在一个特定实施例中,分支预测单元112可以包括类似于HIGH PERFORMANCE ZERO BUBBLECONDITIONAL BRANCH PREDICTION USING MICRO BRANCH TARGET BUFFER(US公开No.2017/0068539A1且通过引用并入于此)中描述的分支预测单元。该或者其他分支图预测器可以配置为通过采取(TAKEN)和未采取(NOT TAKEN)预测两者学习链接或者边缘。它们可以包括可以与UOC 114中的有限资源的可使用比率或者量度相互关联的有限资源,且还可以包括确定是否遍及链接存在完全内核和完全内核是否是可预测的和可重复的电路装置。要理解上述仅是一个说明性的示例,公开的主题不限于此。
在图示的实施例中,系统100可以接收顺序指令182或者预测指令184。选择器电路110(例如,复用器(MUX))可以在两个指令之间选择。所选的指令可以输入到分支预测单元或电路112中。分支预测单元112可以配置为猜测或者预测要由处理器运行什么下一指令。
在正常操作期间,分支预测单元112可以将预测指令184提供到IFU122。IFU 122可以从指令高速缓存(i高速缓存)133检索指令。指令然后可以由IDU 124处理,IDU 124从UOC114检索期望的uop或者从微代码存储装置(比如只读存储器(ROM)或者另一源)获取期望的uop。
选择器电路106(例如,复用器(MUX))可以在两个uop之间选择。选择器电路106然后将所选的uop转送到运行单元(未示出)。
在图示的实施例中,分支预测单元112可以配置为监控指令和确定何时一系列指令重复或者循环。程序频繁地循环或者执行可重复的操作。如果这样的话,分支预测单元112可以开始在UOC 114中存储来自指令的循环或者内核的uop。当在UOC 114中存储了足够量(例如,大多数或者全部)的内核时,uop内核电路104或者分支预测单元112可以将IFU122、IDU 124和/或i高速缓存133(统称电路102)全部或者部分地置于低功率模式。在图示的实施例中,分支预测单元112可以至少部分地控制断电或者功率模式电路装置134。在这种实施例中,系统100可以通过禁用系统100的电路装置的部分(例如,电路102)来节省功率。
在这种实施例中,如果程序或者指令流脱离高速缓存的内核(例如,UOC114中的高速缓存未命中(cache miss)),电路102可以被唤醒或者从低功率模式移除。电路102然后可以将需要的uop提供到选择器电路106。在各种实施例中,系统100可以在指令的可预测内核的时段期间将电路102断电,唤醒电路102以提供新的指令,和处置不可预测的指令流或者非常大的内核(例如,其在UOC 114内不适配)。要理解上述仅是几个说明性的示例,公开的主题不限于此。
在各种实施例中,分支预测单元112可以包括一个或多个计数器132或者标志。
图2是根据公开的主题的技术200的示例实施例的流程图。在各种实施例中,技术200可以由分支预测单元或者系统(例如,如图1所示)实现或者执行。
在图示的实施例中,分支预测单元可以(除其传统的分支预测职责之外)处于三个操作模式:过滤模式202、构造模式204和取出模式206。在过滤模式202中,分支预测单元可以配置为确定指令的当前内核是否可以足够地存储在IFU和IDU电路装置(或者其部分)可以被断电的uop高速缓存(UOC)中。在构造模式204下,分支预测单元可以配置为在UOC内存储内核。当充分地或者完整地存储内核时,分支预测单元和系统可以移动到取出模式206,在取出模式206下IFU和IDU电路装置(或者其部分)可以被断电且可以从UOC向外供应内核。在这种实施例中,如果UOC未命中发生,则IFU等可以被唤醒且分支预测单元可以返回到过滤模式202。
在图示的实施例中,三个模式通常由三列动作表示。每列对应于在列的顶部标记的模式内的动作。
在正常操作期间,系统或者分支预测单元可以处于过滤模式202。IFU等可以被上电并将指令和uop提供到运行单元。在一个实施例中,UOC在过滤模式202期间可以不是活动的或者可以仅由IDU使用。
块212图示在一个实施例中,分支预测单元可以确定当前边缘是否是可预测的。在图示的实施例中,用于使用UOC作为uop的源的量度可以是内核可预测性,不是指令的频率。在该上下文中,“边缘”定义为在可预测的分支和其TAKEN和NOT TAKEN分支后代之间的学习的链接。在该上下文中,“边缘图”定义为已知边缘的图(graph)或者地图(map)和它们的互连性。在这种实施例中,完整的边缘图可以指示完全发现的重复内核,其可以是用于从UOC服务的好的候选。
块214图示在一个实施例中,分支预测单元可以确定是否已经看到完全内核。块216图示在一个实施例中,可以关于内核是否可以在UOC中适配做出确定。如果对这三个问题中的任意问题的回答是“否”,则分支预测单元可以保持在过滤模式202,且可以从正常的IFU/IDU流水线服务uop。
但是,如果已经找到用于UOC使用的好的候选(例如,小的可预测内核),则分支预测单元可以进入构造模式204。在这种实施例中,在构造模式204期间,分支预测单元可以配置为在UOC内分配与预测边缘对应的uop的基本块的流。
如上所述,分支预测单元可以包括多个计数器。这些计数器可以包括超时计数器(例如,构造计时器(BuildTimer))以强制在微操作高速缓存内取出和存储内核的最小时间量。计数器可以包括已存储量计数器(例如,取出边缘(FetchEdge))以指示在微操作高速缓存中存储了内核中的多少。计数器可以包括待存储量计数器(例如,构造边缘(BuildEdge))以指示在微操作高速缓存中还未或者需要存储内核中的多少。要理解上述仅是几个说明性的示例,公开的主题不限于此。
块222图示在一个实施例中,对于每个周期或者取出的指令,可以增大超时计数器(或者取决于实施例减小)。在这种实施例中,这可以提供最小周期时间因为某些循环比其它的循环与链接/边缘交叉不频繁,且可以被给予更多或者更少的待存储时间。超时计数器最终可以与阈值比较(如果计数器递减则可以是零)。
块224图示在一个实施例中,可以关于边缘和所有有关uop是否已经存储在UOC中做出确定。在各种实施例中,内核或者循环可以不是直接的循环圈(circle)。在这种实施例中,内核可以包括更复杂的指令的重复。在各种实施例中,确定可以包括检查UOC的标记或者其他元数据。
块226图示在一个实施例中,如果uop还未存储在UOC中,其可以从IDU取出和置于UOC中。要提醒的是在构造模式204期间,IFU/IDU上电且正常地操作(也就是,从它们的流水线供应指令/uop)。构造模式204的目的是在将IFU/IDU电路关闭或者断电之前适当地加载UOC。另外,待存储量计数器(例如,构造边缘(BuildEdge))可以递增。
块227图示在一个实施例中,如果uop已经存储在UOC中,已存储量计数器(例如,取出边缘(FetchEdge))可以递增。在各种实施例中,已存储量计数器(例如,取出边缘(FetchEdge))和待存储量计数器(例如,构造边缘(BuildEdge))可以是同一计数器且可以相应地递增和递减。
块228图示在一个实施例中,可以关于分支预测单元是否应该保持在构造模式204或者移动到取出模式做出确定。在一个实施例中,构造条件可以包括(1)确定超时计数器(例如,构造计时器(BuildTimer))是否已经满足期望阈值(也就是,已经在构造模式204下花费的足够时间?),和(2)已存储量计数器(例如,取出边缘(FetchEdge))与待存储量计数器(例如,构造边缘(BuildEdge))的比率足够高或者满足阈值(就是,已经存储足够的uop以允许取出模式206在UOC未命中发生之前继续足够量的时间?)。在各种实施例中,该比率可以是已存储的uop对“需要被存储”的uop的比率的两倍。如以下描述的,进入取出模式206的定额可以大于需要退出取出模式206的定额。要理解上述仅是一个说明性的示例,公开的主题不限于此。
在图示的实施例中,取出模式206可以是IFU等(例如,指令高速缓存,IDU或者其部分)被置于低功率模式和从UOC向运行单元供应操作。在这种实施例中,这可以继续直到发生终止事件。在各种实施例中,这种终止事件可以包括遇到未命中的链接或者边缘,或者直到当前内核或者预测器迁移到新代码。如果软件移动到不同领域(realm)的情况下,新分配的预测器链接将指示“待存储”计数器(例如,构造边缘(BuildEdge))超过已存储计数器(例如,取出边缘(FetchEdge)),且因此希望分支预测器将新部分或者内核构造到UOC中。
块234图示在一个实施例中,当遇到边缘时,可以关于与边缘或者内核的部分相关联的uop是否存储在UOC中做出确定。如果是,则已存储计数器(例如,取出边缘(FetchEdge))可以递增(块237)。如果否,则“待存储”计数器(例如,构造边缘(BuildEdge))可以递增(块236)。
块238图示在一个实施例中,可以关于是否满足内核取出条件做出确定。块239图示在一个实施例中,可以关于是否发生UOC未命中(也就是,期望的uop不在UOC内任何地方且需要从其它地方提供)做出确定。如果满足这些条件中的任何一个,则分支预测单元可以退出取出模式206,返回(在一个实施例中)到过滤模式202。作为其的部分,超时计数器(例如,构造计时器(BuildTimer))可以复位为默认值(块229)。
在各种实施例中,如果系统感到已经发生UOC中的较少或者可管理的遗漏而不是软件已经完全地移动到另一内核,系统可以从取出模式206退出到构造模式204。要理解上述仅是一个说明性的示例,公开的主题不限于此。
在各种实施例中,块238的内核取出条件可以再次包括已存储量计数器(例如,取出边缘(FetchEdge))与待存储量计数器(例如,构造边缘(BuildEdge))的比率。在这种实施例中,如果比率不够高,则可能不满足内核取出条件,且系统可以退出取出模式206。
在一些实施例中,用于内核取出条件的比率可以是1,或者另外地低于内核构造条件的比率阈值(块228)。在这种实施例中,系统可以采用滞后效应以在取出模式之中和之外切换。在这种实施例中,可以防止系统在取出模式之中和之外剧烈摇摆,且因此对IFU等断电/上电。在这种实施例中,滞后宽度越大,对于切换模式的缓冲越大。在一些实施例中,UOC未命中可能导致从取出模式206退出而无论已存储量计数器(例如,取出边缘(FetchEdge))与待存储量计数器(例如,构造边缘(BuildEdge))的比率如何。
在图示的实施例中,可以继续更新已存储量计数器(例如,取出边缘(FetchEdge))和待存储量计数器(例如,构造边缘(BuildEdge))。在另一实施例中,可以复位计数器(例如,当进入构造模式204时)。
图3是根据公开的主题的技术300的示例实施例的流程图。在图示的实施例中,技术300建立于并修改如上所述的图2的技术200。在各种实施例中,技术300可以由分支预测单元或者系统(例如,如图1所示)实现或者执行。
在图示的实施例中,系统或者分支预测单元可以包括第四模式或者第三模式(取出模式)的变型。在优选实施例中,UOC将尝试存储完全内核,目标是不必脱离取出模式直到软件已经移动到指令的不同内核或者流。但是,这可能是不可能的。例如,在各种实施例中,内核可能过大而不能适配到UOC中,或者可能太不可预测的或者太复杂而不能完全地映射。在这种实施例中,技术300允许内核的部分高速缓存,同时减小分支预测单元会进入/退出取出模式的时间量。
在图示的实施例中,由于空间限制,过滤模式299由单个圆形表示。在这种实施例中,过滤模式299的扩展的版本可以基本上类似于图2中所示的。在过滤模式299中,分支预测单元可以配置为确定指令的当前内核是否可以充分地存储在IFU和IDU电路装置(或者其部分)可以被断电的uop高速缓存(UOC)中。
同样地,虽然完全地显示,构造模式204的操作也可以基本上类似于关于图2描述的操作。再次,在构造模式204中,分支预测单元可以配置为在UOC内存储内核。当充分地或者完全地存储内核时,分支预测单元和系统可以移动到取出模式206,在取出模式206下,IFU和IDU电路装置(或者其部分)可以被断电且可以从UOC向外供应内核。
在各种实施例中,取出/部分模式306可以被认为是独立于但是类似于图2的取出模式206的新模式,或者在另一实施例中,可以被认为是第三模式(即取出模式)的变型。在这种实施例中,可以改变UOC分配和取出流以允许部分内核,该部分内核可重复的,但是缺乏足够资源从UOC完全地取出,或者在多次尝试捕获整个内核的循环之后是无能力的。
在这种实施例中,如果内核连续地或者频繁地在构造和取出模式之间迭代(例如,由于uop高速缓存未命中),部分循环模式可能导致系统或者分支预测单元开始跟踪当前系统和方法的构造进程。在对于相同内核的后续取出模式迭代上,如果适当的计数器(以下描述的)指示,则可以设置标志或者位以防止将来的UOC标签未命中退出取出模式。虽然,UOC未命中仍然将从低功率模式移除IFU等,因为必须供应需要的uop,但是在已经完成高速缓存未命中之后,系统将返回以使用构造部分内核。该部分循环模式可以允许从UOC取出未完成的内核的大部分,但是可能不提供相比图2中描述的完全内核技术的节能(或者较低节省的功率量)。
在图示的实施例中,块234、236和237可以如上所述发生。块237a图示在一个实施例中,当在取出/部分模式306中时,成功的取出计数器(例如,活动取出(ActiveFetch))可以用于跟踪实际上发生了多少次成功的UOC取出。
在图示的实施例中,块238和239可以执行与如上所述相同的检查。但是,它们的退出点或者下一步骤在取出/部分模式306中可以不同。块349图示如果满足内核取出条件(块238),意味着存储的内核太少而不能保证保持在取出/部分模式306中,各种部分模式306计数器和标志(例如,活动取出(ActiveFetch),部分内核(PartialKernel)等)可以在返回到过滤模式299之前复位为默认值。
块331图示在一个实施例中,如果系统将由于UOC未命中而正常地退出取出/部分模式306(块239),则可以关于系统处于(图3的)取出/部分模式306或者(图2的)完全取出模式做出检查。在这种实施例中,可以设置/清除部分模式标志或者位(例如,部分内核(PartialKernel))以表示系统是否处于取出/部分模式306(或者仅取出模式206)的状态。如果系统处于取出/部分模式306,则可以经由IFU/IDU流水线检索UOC未命中,但是代替返回到过滤模式299,系统可以保持在取出/部分模式306中。
相反地,如果部分模式标志或者位(例如,部分内核(PartialKernel))指示系统不处于取出/部分模式306,则系统可以退出取出/部分模式306并返回到过滤模式299。在这种实施例中,成功的取出计数器(例如,活动取出(ActiveFetch))可以复位为默认值(例如,零)。
另外,系统还可以尝试确定它是否应该进入取出/部分模式306。块308图示在一个实施例中,系统可以预先形成和监视UOC动作以准备或者执行关于部分模式计数器和标志的簿记(bookkeeping)。
块341图示在一个实施例中,可以关于是否期望取出/部分模式306做出确定。在一个实施例中,这包括检测(1)系统是否处于取出模式206,(2)系统是否不处于取出/部分模式306(也就是,未设置部分模式标志或者位(例如,部分内核(PartialKernel)),和(3)是否已经发生UOC未命中。如果没有满足该条件,则系统可以循环返回并不执行进一步的操作(节省计算资源)。但是,如果满足该条件,则系统可以继续它的簿记操作。
块342图示在一个实施例中,可以关于是否通过保持在取出/部分模式306正在做出进展或者正在获得益处来做出确定。在一个实施例中,这可以通过比较成功的取出计数器(例如,活动取出(ActiveFetch))的当前值与在最后UOC未命中期间具有的成功的取出计数器(例如,最后活动取出(LastActiveFetch))的值来进行。可以理解上述仅是一个说明性的示例,公开的主题不限于此。
块344图示在一个实施例中,如果已经做出进展或者改进,则各种计数器和标志可以复位。在这种实施例中,指示在最后UOC未命中期间具有的成功的取出计数器的(例如,最后活动取出(LastActiveFetch))的值的计数器或者存储器可以替换为成功的取出计数器(例如,活动取出(ActiveFetch))的当前值。此外,可以清除位的缺乏进展标志(例如,无进展(NoProgress))。
块345和346图示在一个实施例中,如果还未做出进展或者改进,则各种计数器和标志可以递增且然后与阈值比较。在图示的实施例中,位的缺乏进展标志(例如,无进展(NoProgress))可以递增并与阈值比较。在各种实施例中,阈值可以指示何时系统已经实质上放弃内核可以完全地存储在UOC中的希望,且已经确定部分内核足够好。
块347图示在一个实施例中,然后可以设置部分模式标志或者位(例如,部分内核(PartialKernel))。如上所述,部分模式标志可以防止系统关于UOC标签未命中退出取出模式206或者取出/部分模式306。代替地它将切换出UOC,取出正常的IFU/IDU路径,然后为了部分内核的剩余部分回跳到UOC中。在该情况下,仅构造边缘(BuildEdge)比率增加(块238)将导致系统退出取出/部分模式306,因为其指示内核已经移动到新阶段。
图4是可以包括根据公开的主题的原理形成的半导体装置的信息处理系统400的示意性框图。
参考图4,信息处理系统400可以包括根据公开的主题的原理构造的一个或多个装置。在另一实施例中,信息处理系统400可以采用或者运行根据公开的主题的原理的一个或多个技术。
在各种实施例中,信息处理系统400可以包括在例如膝上型电脑、台式电脑、工作站、服务器、刀片服务器、个人数字助理、智能电话、平板电脑等计算装置,和及其他适当的计算机或者虚拟机或者其虚拟计算装置。在各种实施例中,信息处理系统400可以由用户(未示出)使用。
根据公开的主题的信息处理系统400可以进一步包括中央处理单元(CPU)、逻辑和/或者处理器410。在一些实施例中,处理器410可以包括一个或多个功能单元块(FUB)或者组合逻辑块(CLB)415。在这种实施例中,组合逻辑块可以包括各种布尔逻辑操作(例如,NAND、NOR、NOT、XOR)器件、稳定逻辑器件(例如,触发器、锁存器)、其他逻辑器件或者其组合。这些组合逻辑操作可以以简单或者复杂的方式配置以处理输入信号来达成期望结果。要理解虽然描述了同步组合逻辑操作的几个说明性示例,但是公开的主题不受限制且可以包括异步操作或者其混合。在一个实施例中,组合逻辑操作可以包括多个互补金属氧化物半导体(CMOS)晶体管。在各种实施例中,这些CMOS晶体管可以布置为执行逻辑操作的门,但是要理解可以使用其他技术且其他技术也在公开的主题的范围内。
根据公开的主题的信息处理系统400可以进一步包括易失性存储器420(例如,随机存取存储器(RAM))。根据公开的主题的信息处理系统400可以进一步包括非易失性存储器430(例如,硬盘驱动器、光存储器、NAND或者闪存存储器)。在一些实施例中,易失性存储器420、非易失性存储器430或者其组合或者部分可以被称为“存储介质”。在各种实施例中,易失性存储器420和/或非易失性存储器430可以配置为以半永久性或者基本上永久的形式存储数据。
在各种实施例中,信息处理系统400可以包括一个或多个网络接口440,其配置为允许信息处理系统400成为通信网络的部分和经由通信网络通信。Wi-Fi协议的示例可以包括,但不限于,电气与电子工程师协会(IEEE)802.11g、IEEE 802.11n。蜂窝协议的示例可以包括,但不限于:先进IEEE802.16m(又称为无线MAN(城域网))、先进长期演进(LTE)、用于GSM(全球移动通信系统)演进的增强数据速率(EDGE)、演进的高速分组访问(HSPA+)。有线协议的示例可以包括,但不限于IEEE 802.3(又称为以太网)、光纤信道、电力线通信(例如,HomePlug(家庭插接)、IEEE 1901)。要理解上述仅是几个说明性的示例,公开的主题不限于此。
根据公开的主题的信息处理系统400可以进一步包括用户接口单元450(例如,显示适配器、触觉接口、人机接口装置)。在各种实施例中,该用户接口单元450可以配置为从用户接收输入和/或提供输出给用户。其它种类的装置也可以用于提供与用户的交互;例如,提供给用户的反馈可以任何形式的传感反馈,例如,视觉反馈、听觉反馈或者触觉反馈;且来自用户的输入可以以任意形式接收,包括声学的、语音、或者触觉输入。
在各种实施例中,信息处理系统400可以包括一个或多个其他装置或者硬件组件460(例如,显示器或者监视器、键盘、鼠标、相机、指纹读取器、视频处理器)。要理解上述仅是几个说明性的示例,公开的主题不限于此。
根据公开的主题的信息处理系统400可以进一步包括一个或多个系统总线405。在这种实施例中,系统总线405可以配置为通信地耦合处理器410、易失性存储器420、非易失性存储器430、网络接口440、用户接口单元450和一个或多个硬件组件460。由处理器410处理的数据或者从非易失性存储器430的外部输入的数据可以存储在非易失性存储器430或者易失性存储器420中。
在各种实施例中,信息处理系统400可以包括或者运行一个或多个软件组件470。在一些实施例中,软件组件470可以包括操作系统(OS)和/或应用。在一些实施例中,OS可以配置为向应用提供一个或多个服务和管理或者用作信息处理系统400的应用和各种硬件组件(例如,处理器410、网络接口440)之间的中介。在这种实施例中,信息处理系统400可以包括一个或多个本机应用,其可以本地安装(例如,在非易失性存储器430内)且配置为直接由处理器410运行和直接与OS交互。在这种实施例中,本地应用可以包括预先编译的机器可执行代码。在一些实施例中,本机应用可以包括配置为将源或者目标代码转化为之后由处理器410运行的可运行代码的脚本解释器(例如,C shell(csh)、AppleScript、AutoHotkey)或者虚拟机(VM)(例如,Java虚拟机、微软公共语言运行间)。
如上所述的半导体装置可以使用各种封装技术封装。例如,根据公开的主题的原理构造的半导体装置可以使用以下的任何一个封装:层叠封装(POP)技术、球栅阵列(BGA)技术、芯片级封装(CSP)技术,带引线的塑料芯片载体(PLCC)技术、塑料双列直插式封装(PDIP)技术、窝伏尔组件中芯片封装(Die in Waffle Pack)技术、晶圆形式芯片(Die inWafer Form)技术、板上芯片封装(COB)技术、陶瓷双列直插式封装(CERDIP)技术、公制塑料四方扁平封装(PMQFP)技术、塑料四方扁平封装(PQFP)技术、小外型集成电路封装(SOIC)技术、窄节距小外形封装(SSOP)技术、薄小外型封装(TSOP)技术、薄型四方扁平封装(TQFP)技术、系统级封装(SIP)技术、多芯片封装(MCP)技术、晶圆级制造封装(WFP)技术、晶圆级处理堆叠封装(WSP)技术或者本领域技术人员将已知的其他技术。
方法步骤可以由一个或多个可编程处理器执行,该一个或多个可编程处理器运行计算机程序以通过对于输入数据进行操作和生成输出来执行功能。方法步骤还可以由专用逻辑电路装置(例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路))执行,且设备可以实现为专用逻辑电路装置。
在各种实施例中,计算机可读介质可以包括当被运行时使得装置执行方法步骤的至少部分的指令。在一些实施例中,计算机可读介质可以包括在磁介质、光介质、其他介质或者其组合(例如,CD-ROM、硬盘驱动器、只读存储器、闪存驱动器)中。在这种实施例中,计算机可读介质可以是可有形和非瞬时体现的制品。
虽然已经参考示示例施例描述了公开的主题的原理,但是对本领域技术人员显然可以对其做出各种改变和修改而不脱离公开的概念的精神和范围。因此,应当理解上述实施例不是限制性的,而仅是说明性的。因此,公开的概念的范围要由以下权利要求及其等效的最宽的可允许解释来确定,而不应该由前述说明限制或者约束。因此,要理解所附权利要求意在覆盖所有这种落入实施例的范围内的修改和改变。
Claims (18)
1.一种用于取出指令的设备,包括:
指令取出单元电路,配置为从存储器检索指令;
指令解码单元电路,配置为将指令转换为提供给运行单元电路的一个或多个微操作;
微操作高速缓存,配置为存储一个或多个微操作;和
分支预测电路,配置为:
确定何时指令的内核重复,
在所述微操作高速缓存内存储内核的至少部分,和
在没有所述指令解码单元电路的进一步帮助的情况下,将内核的存储的部分提供给所述运行单元电路;
其中,响应于内核的大部分被存储在所述微操作高速缓存中,将所述指令解码单元电路至少部分地断电。
2.如权利要求1所述的设备,其中,所述分支预测电路配置为以包括以下的至少三个模式操作:
过滤模式,其中做出关于何时指令的内核重复的确定;
构造模式,其中内核的超过阈值的部分被存储;和
取出模式,其中将内核从所述微操作高速缓存提供到所述运行单元电路。
3.如权利要求2所述的设备,其中,所述分支预测电路配置为采用滞后形式在取出模式和另一模式之间切换。
4.如权利要求2所述的设备,其中,所述分支预测电路配置为如果对所述微操作高速缓存的未命中发生,则从取出模式转换到过滤模式。
5.如权利要求2所述的设备,其中,所述取出模式包括部分内核模式;和
其中,所述部分内核模式配置为防止由于高速缓存未命中转换到取出模式之外,并且使得设备经由所述指令解码单元电路取出未命中的微操作,然后对于后续微操作,将内核的存储的部分从所述微操作高速缓存提供到所述运行单元电路。
6.如权利要求5所述的设备,其中,如果所述分支预测电路在构造模式和取出模式之间转换多于阈值次数,则所述分支预测电路进入部分内核模式。
7.如权利要求1所述的设备,其中,所述分支预测电路包括:
超时计数器,强制在所述微操作高速缓存内取出和存储内核的最小时间量;和
已存储量计数器,指示在所述微操作高速缓存中存储了内核中的多少。
8.如权利要求1所述的设备,其中,所述分支预测电路配置为如果对所述微操作高速缓存的未命中发生,则使得由所述指令解码单元电路提供关联的微操作。
9.一种用于取出指令的系统,包括:
指令高速缓存,配置为存储指令;
指令取出和解码电路,配置为:
从所述指令高速缓存检索指令,和
将指令转换为提供给运行单元电路的一个或多个微操作;
微操作高速缓存,配置为存储一个或多个微操作;和
分支预测电路,配置为:
确定何时指令的内核重复,
在所述微操作高速缓存内存储内核的至少部分,和
在没有所述指令高速缓存的进一步帮助的情况下,将内核的存储的部分提供给所述运行单元电路;
其中,响应于内核的大部分被存储在所述微操作高速缓存中,将所述指令高速缓存至少部分地断电。
10.如权利要求9所述的系统,其中,所述分支预测电路配置为以包括以下的至少三个模式操作:
过滤模式,其中做出关于何时指令的内核重复的确定;
构造模式,其中内核的超过阈值的部分被存储;和
取出模式,其中将内核从所述微操作高速缓存提供到所述运行单元电路。
11.如权利要求10所述的系统,其中,所述分支预测电路配置为采用滞后形式在取出模式和另一模式之间切换。
12.如权利要求10所述的系统,其中,所述分支预测电路配置为如果对所述微操作高速缓存的未命中发生,则从取出模式转换到过滤模式。
13.如权利要求10所述的系统,其中,所述取出模式包括完全内核模式和部分内核模式;
其中,如果当以完全内核模式操作时遇到微操作高速缓存未命中,则所述分支预测电路从取出模式转换到过滤模式;
其中,如果当以部分内核模式操作时遇到微操作高速缓存未命中,则所述分支预测电路保持在取出模式。
14.如权利要求13所述的系统,其中,在部分内核模式期间,如果所述微操作高速缓存未命中发生,则系统经由所述指令取出和解码电路取出未命中的微操作,然后对于后续微操作,将内核的存储的超过阈值的部分从所述微操作高速缓存提供到所述运行单元电路。
15.如权利要求9所述的系统,其中,所述分支预测电路包括:
超时计数器,强制在所述微操作高速缓存内取出和存储内核的最小时间量;和
已存储量计数器,指示在所述微操作高速缓存中存储了内核中的多少。
16.如权利要求9所述的系统,其中,所述分支预测电路配置为如果对所述微操作高速缓存的未命中发生,则使得由所述指令取出和解码电路提供关联的微操作。
17.一种用于取出指令的设备,包括:
指令高速缓存,存储指令;和
指令取出流水线电路,配置为将指令从所述指令高速缓存提供到运行单元电路,其中,所述指令取出流水线电路包括:
第一指令路径,包括:
取出电路,配置为从所述指令高速缓存检索指令,和
解码电路,配置为将指令转换为一个或多个微操作并将一个或多个微操作供应到所述运行单元电路,和
第二指令路径,包括:
微操作高速缓存,配置为存储一个或多个微操作,和
分支预测电路,配置为:
确定何时指令的内核重复,
在所述微操作高速缓存内存储内核的至少部分,和
响应于在所述微操作高速缓存内存储了内核的大部分,当第一指令路径处于低功率模式时,将内核的存储的部分提供到所述运行单元电路。
18.如权利要求17所述的设备,其中,所述分支预测电路包括分支图预测器,其采用分支边缘检测器电路来确定内核是否在所述微操作高速缓存中驻留。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862786324P | 2018-12-28 | 2018-12-28 | |
US62/786,324 | 2018-12-28 | ||
US16/374,743 US11169810B2 (en) | 2018-12-28 | 2019-04-03 | Micro-operation cache using predictive allocation |
US16/374,743 | 2019-04-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111381869A CN111381869A (zh) | 2020-07-07 |
CN111381869B true CN111381869B (zh) | 2024-05-17 |
Family
ID=71122955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911376497.6A Active CN111381869B (zh) | 2018-12-28 | 2019-12-27 | 使用预测分配的微操作高速缓存 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11169810B2 (zh) |
KR (1) | KR20200083221A (zh) |
CN (1) | CN111381869B (zh) |
TW (1) | TWI834779B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10884751B2 (en) | 2018-07-13 | 2021-01-05 | Advanced Micro Devices, Inc. | Method and apparatus for virtualizing the micro-op cache |
US11392382B2 (en) * | 2019-05-21 | 2022-07-19 | Samsung Electronics Co., Ltd. | Using a graph based micro-BTB and inverted basic block queue to efficiently identify program kernels that will fit in a micro-op cache |
US20230297381A1 (en) * | 2022-03-21 | 2023-09-21 | Advanced Micro Devices, Inc. | Load Dependent Branch Prediction |
US12050916B2 (en) | 2022-03-25 | 2024-07-30 | Advanced Micro Devices, Inc. | Array of pointers prefetching |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104335168A (zh) * | 2012-06-14 | 2015-02-04 | 国际商业机器公司 | 分支预测预加载 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6167536A (en) | 1997-04-08 | 2000-12-26 | Advanced Micro Devices, Inc. | Trace cache for a microprocessor-based device |
US6185675B1 (en) | 1997-10-24 | 2001-02-06 | Advanced Micro Devices, Inc. | Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks |
US6073213A (en) | 1997-12-01 | 2000-06-06 | Intel Corporation | Method and apparatus for caching trace segments with multiple entry points |
KR100347865B1 (ko) | 1999-11-15 | 2002-08-09 | 삼성전자 주식회사 | 어드레스 트레이스를 이용한 분기 예측 방법 |
US6950903B2 (en) * | 2001-06-28 | 2005-09-27 | Intel Corporation | Power reduction for processor front-end by caching decoded instructions |
US7519799B2 (en) | 2003-11-18 | 2009-04-14 | Intel Corporation | Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof |
KR20050095107A (ko) | 2004-03-25 | 2005-09-29 | 삼성전자주식회사 | 저전력 캐쉬장치 및 캐시 제어방법 |
US7606975B1 (en) | 2005-09-28 | 2009-10-20 | Sun Microsystems, Inc. | Trace cache for efficient self-modifying code processing |
US8103831B2 (en) * | 2008-03-31 | 2012-01-24 | Intel Corporation | Efficient method and apparatus for employing a micro-op cache in a processor |
US8127085B2 (en) | 2008-12-02 | 2012-02-28 | Intel Corporation | Method and apparatus for pipeline inclusion and instruction restarts in a micro-op cache of a processor |
JP2011150422A (ja) | 2010-01-19 | 2011-08-04 | Renesas Electronics Corp | データ処理装置 |
US20120151232A1 (en) | 2010-12-12 | 2012-06-14 | Fish Iii Russell Hamilton | CPU in Memory Cache Architecture |
US9600418B2 (en) | 2012-11-19 | 2017-03-21 | Florida State University Research Foundation, Inc. | Systems and methods for improving processor efficiency through caching |
CN103853307A (zh) | 2012-12-04 | 2014-06-11 | 鸿富锦精密工业(深圳)有限公司 | 电子装置及降低处理器系统功耗的方法 |
US20150248295A1 (en) | 2014-03-03 | 2015-09-03 | Qualcomm Incorporated | Numerical stall analysis of cpu performance |
US10402200B2 (en) | 2015-06-26 | 2019-09-03 | Samsung Electronics Co., Ltd. | High performance zero bubble conditional branch prediction using micro branch target buffer |
US9830152B2 (en) * | 2015-12-22 | 2017-11-28 | Qualcomm Incorporated | Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor |
US20170293556A1 (en) | 2016-04-07 | 2017-10-12 | Imagination Technologies Limited | Read discards in a processor system with write-back caches |
US10817298B2 (en) * | 2016-10-27 | 2020-10-27 | Arm Limited | Shortcut path for a branch target buffer |
US10606599B2 (en) * | 2016-12-09 | 2020-03-31 | Advanced Micro Devices, Inc. | Operation cache |
-
2019
- 2019-04-03 US US16/374,743 patent/US11169810B2/en active Active
- 2019-12-03 KR KR1020190159418A patent/KR20200083221A/ko active Search and Examination
- 2019-12-11 TW TW108145241A patent/TWI834779B/zh active
- 2019-12-27 CN CN201911376497.6A patent/CN111381869B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104335168A (zh) * | 2012-06-14 | 2015-02-04 | 国际商业机器公司 | 分支预测预加载 |
Non-Patent Citations (1)
Title |
---|
基于循环的指令高速缓存访问预测方法;梁静;陈志坚;孟建熠;;计算机应用研究(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20200210190A1 (en) | 2020-07-02 |
KR20200083221A (ko) | 2020-07-08 |
TW202044044A (zh) | 2020-12-01 |
US11169810B2 (en) | 2021-11-09 |
CN111381869A (zh) | 2020-07-07 |
TWI834779B (zh) | 2024-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111381869B (zh) | 使用预测分配的微操作高速缓存 | |
KR101109029B1 (ko) | 연산 장치 | |
CN204945992U (zh) | 一种处理器 | |
US20140019723A1 (en) | Binary translation in asymmetric multiprocessor system | |
US20130268742A1 (en) | Core switching acceleration in asymmetric multiprocessor system | |
US9329666B2 (en) | Power throttling queue | |
CN105511838A (zh) | 处理器及其执行方法 | |
TW201437912A (zh) | 具有原生切換機制之非對稱多核心處理器 | |
CN106951217B (zh) | 由易于得到的预取器准确性动态控制的指令预取器 | |
EP2838019A1 (en) | Multiple threads execution processor and operating method thereof | |
US20190102197A1 (en) | System and method for merging divide and multiply-subtract operations | |
US20150186285A1 (en) | Method and apparatus for handling processor read-after-write hazards with cache misses | |
TW202105177A (zh) | 控制階層分支預測器使用的裝置以及系統 | |
CN114201219B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
TWI810450B (zh) | 經由跳過無分歧的快取線改善分歧預測通量的設備及系統 | |
CN114168202B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
KR20190092245A (ko) | 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법 | |
US11216278B2 (en) | Multi-thread processing | |
KR20180105060A (ko) | 메모리 로드 및 산술 로드 유닛 융합 | |
CN109753444B (zh) | 用以避免负载填充冲突的设备以及系统 | |
JP5233078B2 (ja) | プロセッサ及びその処理方法 | |
CN111984325A (zh) | 提高分支预测吞吐量的装置及系统 | |
CN114356416B (zh) | 处理器及其控制方法、装置、电子设备和存储介质 | |
US10430197B2 (en) | Banking register renaming to reduce power | |
JP4194953B2 (ja) | 多重命令発行プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |