CN116339489A - 处理器中微操作的扼制融合的系统、装置和方法 - Google Patents
处理器中微操作的扼制融合的系统、装置和方法 Download PDFInfo
- Publication number
- CN116339489A CN116339489A CN202211512393.5A CN202211512393A CN116339489A CN 116339489 A CN116339489 A CN 116339489A CN 202211512393 A CN202211512393 A CN 202211512393A CN 116339489 A CN116339489 A CN 116339489A
- Authority
- CN
- China
- Prior art keywords
- micro
- fusion
- circuit
- fused
- execution
- 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
- 230000004927 fusion Effects 0.000 title claims abstract description 119
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000015654 memory Effects 0.000 claims description 68
- 238000009826 distribution Methods 0.000 claims description 19
- 238000004519 manufacturing process Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 13
- 238000003860 storage Methods 0.000 description 10
- 238000007667 floating Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 229910003460 diamond Inorganic materials 0.000 description 6
- 239000010432 diamond Substances 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000007499 fusion processing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- 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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- 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
- 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
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5014—Reservation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本公开涉及处理器中微操作的扼制融合的系统、装置和方法。在一个实施例中,一种装置包括:多个执行电路,用于执行并指示微操作(μop),其中多个执行电路的子集能够执行融合微操作;融合电路,至少耦合到多个执行电路的子集,其中融合电路用于将生产者‑消费者微操作的至少一些对融合成融合微操作;以及融合扼制电路,耦合到融合电路,其中融合扼制电路用于至少部分基于与第一微操作相关联的历史信息来防止第一微操作与另一个微操作融合。描述并要求保护其他实施例。
Description
背景技术
许多现代处理器,包括宽且深的乱序处理器,通常受到其最大频率的限制。因此,许多工作负荷受到频率的限制,并且可导致性能与具有更多频率净空的较小宽度处理器相比不堪一击。虽然存在各种解决方案来提高工作负荷性能,但一些优化实际上可以降低性能,并以额外的功耗为代价。
附图说明
图1是根据实施例的方法的流程图。
图2是根据另一实施例的方法的流程图。
图3是根据实施例的处理器的框图。
图4A和图4B图示更具体的示例性有序核心体系结构的框图。
图5是根据本发明的实施例的处理器的框图。
图6是根据本发明的实施例的第一更具体示例性系统的框图。
图7是根据本发明的实施例的SoC的框图。
图8是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在各种实施例中,处理器可以被配置成用于通过寻求把具有生产者-消费者关系的某些指令融合在一起来提高性能。更具体地,在将宏指令解码为微操作(μop)后,处理器电路系统可以标识某些有资格融合的指令对。这种融合技术可以通过将生产者微操作与其消费者微操作融合并在特殊执行单元上一起执行来动态创建新的微操作。例如,进行ADD操作的生产者微操作可以与其消费者微操作(其也可以是ADD操作)一起在以同一个周期一起执行两个ADD的特殊执行单元上执行。这减少了依赖性链的等待时间并提高了性能。
在一个或多个示例中,这种融合技术使用特殊的执行单元,这些单元可以有效地执行具有两个以上源操作对象的微操作。因此,每个特殊的算术单元为额外的物理寄存器堆(physical register file,PRF)和旁路读取端口支付额外成本。支持特殊的算术单元在所有执行端口处执行微操作融合可能非常昂贵。此外,在所有情况下执行融合微操作都可导致功率问题。
因此,处理器可以被配置为常规执行单元和所谓的融合执行单元的混合。根据实施例,可以通过了解生产者-消费者对之间的相对调度时间来实现微操作融合的智能扼制。在这样做时,不从融合中获益的消费者微操作可能被扼制(通过被融合)。换句话说,这种扼制是在分配时作出的基于硬件的确定,例如,基于与特定微操作相关联的历史信息,来确定该微操作是否是与另一个微操作融合的合适候选者。通过这种方式,微操作融合的好处可以通过更少的融合端口(从而更少的PRF读取端口)来实现。
实施例可以利用这样的了解,即进行融合是为了打破生产者与消费者之间的链,从而从融合中受益,消费者被调度在生产者之前或处于与生产者同一周期中。进一步地,只有当与错误的生产者发生融合时,生产者和消费者的调遣时间才有可能出现差异。当该消费者有其他依赖性在生产者的依赖性完成后完成时,可能发生这种情况。在这种情况下,微操作融合不会提高性能。同样,由于缺乏执行端口,这些执行端口本可能被某一其他较旧的微操作采用,因此消费者可能无法及时与生产者一起调遣。在这种情况下,微操作融合不会产生好处。
在一个或多个实施例中,可以标识诸如如上所述的某些场景。然后,与其相关联(或更早)的生产者微操作没有以同一周期调度的消费者微操作被阻止融合。通过这种方式,实施例可以减轻有限数量的融合端口上的压力,特别是在融合潜力很大的地方。
为了执行本文所述的融合扼制,可以标识没有从融合中受益的指令。在一个或多个示例中,有关这些指令的历史信息可以被存储在处理器存储器中。例如,信息可以被存储在线性指令指针(linear instruction pointer,LIP)程序计数器(program counter,PC)标记的缓存中。每当执行的指令(微操作)的融合没有用时,指令LIP都被添加到缓存中。这种有用性确定可基于指令是否可在常规端口上调度,而不会对性能产生任何影响。在一个示例中,一些端口重试可以用作性能影响的代理。置信度计数器可以基于重试计数进行更新,该计数器可用于确定是否融合微操作。
一般来说,微操作融合可用于无法从处理器的增加的宽度中受益的工作负荷。这些工作负荷具有依赖性的链,因此可以通过融合实现收益。例如,假设如下:A←B←C←D。在这个依赖性的链中,D依赖于C,而C进而依赖于B,B依赖于A。微操作融合操作采用B的源和与B相对应的指令,并将其添加到C中。因此,当A完成时,C可以独立于B而调遣。同样,D可以采用C的生产者并独立调遣。这种方法需要B和C的双重执行,因此分别对C和D使用特殊的(融合)端口。
融合每一个微操作都可能导致功耗增加,并且在某些情况下可能无法提高性能。因此,在某些情况下,可以通过执行更少的融合来降低功耗,同时达到相同的性能水平(例如,执行指令集的周期数)。
例如,使用具有A→B→C→D→E→F→G的依赖性链,单纯地融合所有微操作导致创建B’、C’、D’、E’、F’、G’。然而,A没有完成,C’就无法调度,同样,没有C,E’就无法执行,没有E,G’就无法执行。通过不融合备用微操作打破链来创建B’、D’、F’。现在,未融合的微操作(A、C、E)仍将与其融合的对应微操作以同一周期进行调度。然而,由于没有使用融合端口,这些微操作以减少双重执行的形式节省了功率。
现在,假设只有一个可用的融合端口(另一个端口可能正在被单独的依赖性链使用)。因此,在这种情况下,打破链的表现优于融合所有微操作。
然而,假设由于某种原因,融合端口在1个周期内不可用,在此期间A和B’本可以一起启动(launch)。然后,B’被推到下一个周期,由于有2个融合端口,B’和C'可以在同一个周期中融合。现在,在这种情况下,打破链可能会失去性能。
根据这些情况,对于优化的微操作融合,生产者-消费者对可以在同一周期中进行期望的调遣。此外,融合每一个微操作并不总是最好的行动方案,因为它会消耗不必要的功率和成本性能。此外,如果不仔细选择要融合的对,非关键路径可能被加速,这不会导致性能的提高。因此,技术可用于确定正确的微操作对,以融合并一起启动(launch)它们。
现在参考图1,示出了根据实施例的方法的流程图。更具体地,如图1所示,方法100是一种确定是否针对给定的消费者微操作执行融合操作的方法。在实施例中,方法100可以通过分配硬件电路系统(诸如可包括融合电路或耦合到融合电路的分配电路)来执行。融合电路可包括融合扼制电路或耦合到融合扼制电路。在其他情况下,方法100可以通过硬件电路系统结合固件和/或软件来执行。方法100可以至少部分基于与微操作相关联的历史信息来标识微操作融合是否适合给定的消费者微操作。
方法100从在分配电路内接收消费者微操作开始(框110)。接下来,可以在菱形框120处确定消费者微操作是否能够融合。这种确定可基于一些考虑因素,诸如它是否是简单的算术逻辑单元(arithmetic logic unit,ALU)/地址生成单元(address generationunit,AGU)(加载/存储)操作,以及它是否可以在允许的执行时间内与其源一起执行。如果确定消费者微操作不是融合的合适候选者,则控制传递到框130,在框130处融合过程可以停止,并且在框140处消费者微操作可以被分配到选择的(非融合)端口。因此,此消费者微操作可以放置在预留站或其他结构中,以等待调度到选择的端口上。
仍然参考图1,替代地如果确定消费者微操作是融合的候选者,则控制传递到框150,在框150处,可以例如使用微操作的指令指针或其他标识符来访问阻止列表缓存或其他结构。基于被访问的条目,在菱形框160处确定条目中的置信度值或其他值是否超过阈值。如果是,则控制传回到框130,该消费者微操作的融合操作可被停止。
否则,如果置信度值不超过阈值,控制传递到框170,在框170处消费者微操作可以与其生产者微操作融合成融合微操作。此后,控制传递到框180,在框180处该融合微操作可以被分配给选择的融合端口。因此,此融合微操作可以放置在预留站或其他结构中,以等待调度到选择的融合端口上。尽管在图1的实施例中以该高级别示出,但是许多变型和替代方案是可能的。
现在参考图2,示出的是根据另一实施例的方法的流程图。更具体地,如图2所示,方法200是根据实施例的对融合扼制电路执行训练的方法。在实施例中,方法200可以通过调遣硬件电路系统(诸如调遣或调度器电路)执行,以基于调度条件等来更新与融合微操作相关联的历史信息。在其他情况下,方法200可以通过硬件电路系统结合固件和/或软件来执行。
如图所示,方法200开始于:在调遣电路内接收融合微操作(框210)。在菱形框220处,可以确定分配此融合微操作的融合端口是否可用。如果否,此融合微操作的端口重试数量可能递增(框225),并且控制传递回菱形框220。
如果确定端口可用,则控制传递到菱形框230,以确定重试次数是否超过阈值。如果否,则控制传递回到如下所述的框250。如果确定重试次数超过阈值,则可以针对此融合微操作在阻止列表缓存内添加条目,并将此条目的置信度值增加(例如,从零增加到1)。注意,如果阻止列表缓存中已经存在此融合微操作的条目,则不添加附加条目,并且该条目的置信度值只会增加。
仍然参考图2,控制接下来传递到框250,在框250处此融合微操作的标识可以被添加到周期列表中。周期列表是本周期中已被调度到可用融合端口上的所有融合微操作的列表。另请注意,在框250处,此融合微操作可被调遣到可用的融合端口。然后在框260处,在周期的结束处,确定是否有任何空闲(可用)的融合端口。如果是,如菱形框270所确定的,此周期列表中的任何微操作都可以从阻止列表缓存中删除(框280)。这是因为鉴于可用的空闲融合端口,此类微操作不会影响性能。注意,如果没有可用的空闲端口,训练可能会就此周期结束。尽管在图2的实施例中以该高级别示出,但是许多变型和替代方案是可能的。
现在参考图3,示出的是根据实施例的处理器的部分的框图。在图3中,处理器300处于高级别,并且更具体地示出处理核心或其他处理引擎的执行指令解码、调度、执行等的部分。
在所示的高级别上,传入指令被提供到解码器310。解码器310可以接收传入指令,这些指令可以是宏指令的形式,并将每个指令解码为一个或多个微操作以供执行。进而,微操作可以被传递给寄存器重命名器320,该寄存器重命名器320可将数量有限的体系结构寄存器重命名为物理寄存器堆的更多数量的可用寄存器。
然后微操作被提供给分配电路330。分配电路330可以执行分配操作,以将特定微操作分配到选择的端口,其中每个端口可与一个或多个执行单元相关联。在图3所示的实施例中,分配电路330包括融合电路335。在本文的实施例中,融合电路335可以被配置成用于标识微操作的生产者-消费者对的存在,并执行融合操作,以生成消费者微操作的融合微操作。该融合微操作是生产者微操作和消费者微操作的串接,因此融合微操作有两个以上的源操作对象,并且可以执行不止一个操作。据了解,生产者微操作仍然继续通过管线,而融合微操作取代了消费者微操作。
根据本文的实施例,融合电路335可以在其融合处理期间查阅融合扼制电路340中包括的阻止列表缓存345,以确定是否对给定微操作执行融合。虽然示出为单独的电路,但在一些实施例中,融合扼制电路340可被包括在分配电路330中(例如,在融合电路335中)。如本文所述,在确定是否执行融合时,可以考虑与融合微操作(和/或消费者微操作)相关联的历史信息。在所示的实施例中,融合扼制电路340包括控制电路348,其可以响应于分配时来自融合电路335的请求而访问阻止列表缓存345。如图所示,阻止列表缓存345包括具有多个条目的数组346,其中每个条目可以存储融合微操作的标识符(例如,经由标签部分)、与融合微操作相关联的相对应置信度值以及有效比特。这个置信度值是用于确定是允许还是扼制给定微操作的融合的历史信息。在实施例中,此置信度值可以被实现为饱和计数器,例如2比特计数器。在这种情况下,当饱和时,阈值被超过并且不发生融合。
控制电路348除了在分配时代表融合电路335执行对阻止列表缓存345的访问外,还可以响应于来自调度器电路360的信息在调度时对阻止列表缓存345执行训练和更新。如上关于图2所述,此类训练/更新可发生。
仍然参考图3,来自分配电路330的分配微操作输出可以被存储在预留站350中。进而,在给定周期期间,调度器电路360可以标识一个或多个具有所有可用源的微操作,并将其调度在执行电路系统370中执行。如图所示,预留站350经由多个端口(包括融合端口和非融合端口)耦合至执行电路系统370。在一个或多个示例中,可能总共有2N个端口,其中融合端口和常规端口的数量基本相等。在其他情况下,可能有比融合端口更多的常规端口。无论如何,当给定的微操作被调度以供执行时,它通过其选择的端口传递到多个执行单元中的一个。如图所示,这些执行单元(本文也称为“执行电路”)可包括常规执行单元3720-N和融合执行单元3740-N。一般来说,执行单元372可以是给定处理器的常规执行单元,诸如算术逻辑单元、乘法器等。在给定的微体系结构中,每个执行单元372可以接收给定数量的源操作对象,并对其执行一个或多个操作以生成结果。在许多情况下,执行单元372可以接收两个源操作对象,并对其执行操作。在这些实现方式中,相对应的融合执行单元374可以接收三个源操作对象,并对其执行一个或多个操作。一般来说,执行单元372可以被配置成用于接收M个源操作对象,而融合执行单元374可以被配置成用于接收M+1个源操作对象。执行后,给定的结果被写回,例如,写回到物理寄存器堆(不显示在图3中以方便说明)。应理解,虽然在图3的实施例中以该高级别示出,但是许多变型和替换方案是可能的。
表1
现在参考表1,示出的是分别使用具有2个融合端口和4个融合端口的处理器的模拟实施例的示例性能增益(按每个周期指令百分比(IPC%)和融合微操作百分比(融合百分比,%Fusion))。如图所示,在2个端口例子中,融合增加的单纯例子导致性能损失,而根据实施例,性能提升,同时减少融合数量。而对于4个端口例子,性能提高约5%,并且融合百分比(即,融合的微操作总数与分配的微操作总数)减少三分之一。功率代价也有明显减少。实施例可能适用于低指令级并行性(instruction level parallelism,ILP)工作负荷,诸如指针追赶应用。
根据生产者-消费者对之间的关系,可以使用一个或多个示例来扼制融合微操作。这项技术不仅提高了性能,还减少了融合微操作的数量。在有限数量的融合端口的处理器中,实施例可智能地将微操作融合限制在仅几个端口(从而节省面积)。此外,本文所述的扼制微操作融合不会给PRF读取端口增加压力,并且更适合整体功率,特别是在执行和重命名阶段。并且通过减少融合的总数,将融合端口释放出来用于其他微操作,并通过加速这些其他微操作,性能被提高。
图4A是图示根据本发明的各实施例的示例性有序管线和示例性的寄存器重命名的乱序发出/执行管线的框图。图4B是示出根据本发明的各实施例的要包括在处理器中的有序体系结构核心的示例性实施例和示例性的寄存器重命名的乱序发出/执行体系结构核心的框图。图4A和图4B中的实线框图示有序管线和有序核心,而虚线框的可选增加图示寄存器重命名的、乱序发出/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。注意,如本文所述,在给定实施例中,核心可包括多个处理管线(诸如管线400)。并且对于实施例,包括TMA L1事件的微体系结构事件可至少部分地使用PMU的固定计数器来计数,如本文所述。
在图4A中,处理器管线400包括取得(fetch)阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也被称为调遣或发出)阶段412、寄存器读取/存储器读取阶段414、执行阶段416、写回/存储器写入阶段418、异常处置阶段422和提交阶段424。注意,如本文所述,在给定实施例中,核心可包括多个处理管线(诸如管线400)。
图4B示出处理器核心490,该处理器核心490包括前端单元430,该前端单元430耦合到执行引擎单元450,并且前端单元430和执行引擎单元450两者都耦合到存储器单元470。核心490可以是精简指令集计算(reduced instruciton set computing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(verylong instruction word,VLIW)核心、或混合或替代性核心类型。作为又一选项,核心490可以是专用核心,诸如例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元430包括分支预测单元432,该分支预测单元432耦合到指令缓存单元434,该指令缓存单元434耦合到指令转译后备缓冲器(translation loodaside buffer,TLB)436,该指令转译后备缓冲器436耦合到指令取得单元438,该指令取得单元438耦合到解码单元440。解码单元440(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元440可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(programmable logicarray,PLA)、微代码只读存储器(read only memory,ROM)等。在一个实施例中,核心490包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元440中,或以其他方式在前端单元430内)。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括重命名/分配器单元452,该重命名/分配器单元452耦合到引退单元454和一个或多个调度器单元的集合456。(一个或多个)调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗等。(一个或多个)调度器单元456耦合到(一个或多个)物理寄存器堆单元458。(一个或多个)物理寄存器堆单元458中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一个指令的地址的指令指针)等等。在一个实施例中,(一个或多个)物理寄存器堆单元458包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供体系结构向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器堆单元458由引退单元454重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)未来的堆、(一个或多个)历史缓冲器、(一个或多个)引退寄存器堆;使用寄存器图谱和寄存器池,等等)。引退单元454和(一个或多个)物理寄存器堆单元458耦合到(一个或多个)执行集群460。(一个或多个)执行集群460包括一个或多个执行单元的集合462以及一个或多个存储器访问单元的集合464。执行单元462可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(一个或多个)调度器单元456、(一个或多个)物理寄存器堆单元458和(一个或多个)执行集群460示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线,和/或各自具有其自身的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群的存储器访问管线——并且在分开的存储器访问管线的情况下,实现其中仅该管线的执行集群具有(一个或多个)存储器访问单元464的某些实施例)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,并且其余管线可以是有序的。
存储器访问单元的集合464耦合到存储器单元470,该存储器单元470包括数据TLB单元472,该数据TLB单元472耦合到数据缓存单元474,该数据缓存单元474耦合到第二级(L2)缓存单元476。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元470中的数据TLB单元472。指令缓存单元434还耦合到存储器单元470中的第二级(L2)缓存单元476。L2缓存单元476耦合到一个或多个其他级别的缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发出/执行核心体系结构可如下所述地实现管线400:1)指令取得438执行取得阶段402和长度解码阶段404;2)解码单元440执行解码阶段406;3)重命名/分配器单元452执行分配阶段408(包括如本文所描述的融合和融合扼制电路)和重命名阶段410;4)(一个或多个)调度器单元456执行调度阶段412(并且提供融合扼制训练的反馈,如本文所描述);5)(一个或多个)物理寄存器堆单元458和存储器单元470执行寄存器读取/存储器读取阶段414;执行集群460执行执行阶段416;6)存储器单元470和(一个或多个)物理寄存器堆单元458执行写回/存储器写入阶段418;7)各单元可牵涉到异常处置阶段422;以及8)引退单元454和(一个或多个)物理寄存器堆单元458执行提交阶段424。
核心490可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的可选的附加扩展)),其中包括本文中描述的(一个或多个)指令。在一个实施例中,核心490包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核心可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核心为物理核心正在同时多线程化的线程中的每一个线程提供逻辑核心)、或其组合(例如,时分取得和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序体系结构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据缓存单元434/474以及共享的L2缓存单元476,但是替代实施例可以具有用于指令和数据两者的单个内部缓存,诸如例如,第一级(L1)内部缓存或多个级别的内部缓存。在一些实施例中,该系统可包括内部缓存和在核心和/或处理器外部的外部缓存的组合。或者,所有缓存都可以在核心和/或处理器的外部。
图5是根据本发明的实施例的可具有多于一个的核心、可具有集成存储器控制器、以及可具有集成图形器件和融合电路系统和融合扼制电路系统的处理器500的框图。图5中的实线框图示具有单个核心502A、系统代理510、一个或多个总线控制器单元的集合516的处理器500,而虚线框的可选增加图示具有多个核心502A-N、系统代理单元510中的一个或多个集成存储器控制器单元的集合以及专用逻辑508的替代处理器500。
因此,处理器500的不同实现可包括:1)CPU,其中专用逻辑508是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心),并且核心502A-N是一个或多个通用核心(例如,通用有序核心、通用乱序核心、这两者的组合);2)协处理器,其中核心502A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核心;以及3)协处理器,其中核心502A-N是大量通用有序核心。因此,处理器500可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(general purpose graphics processingunit,通用图形处理单元)、高吞吐量的集成众核(many integrated core,MIC)协处理器(包括30个或更多核心)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器500可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次体系包括核心内的一个或多个级别的缓存单元504A-N、一个或多个共享缓存单元的集合506、以及耦合到集成存储器控制器单元的集合514的外部存储器(未示出)。共享缓存单元的集合506可包括一个或多个中间级别的缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的缓存、最后一级缓存(last level cache,LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元512将专用逻辑508、共享缓存单元的集合506以及系统代理单元510/(一个或多个)集成存储器控制器单元514互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个缓存单元506与核心502A-N之间维持一致性。
系统单元510包括协调和操作核心502A-N的那些组件。系统代理单元510可包括例如功率控制单元(power control unit,PCU)和显示单元。PCU可以是对核心502A-N以及专用逻辑508的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核心502A-N在体系结构指令集方面可以是同构的或异构的;即,核心502A-N中的两个或更多个核心可能能够执行相同的指令集,而其他核心可能能够执行该指令集的仅仅子集或不同的指令集。
图6-7是示例性计算机体系结构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参见图6,所示出的是根据本发明的实施例的第一更具体的示例性系统600的框图。如图6中所示,多处理器系统600是点到点互连系统,并且包括经由点到点互连650耦合的第一处理器670和第二处理器680。处理器670和680中的每一个都可以是处理器的某一版本。
处理器670和680示出为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元672和682。处理器670还包括作为其总线控制器单元的一部分的点到点(point-to-point,P-P)接口676和678;类似地,第二处理器680包括P-P接口686和688。处理器670、680可以经由使用点到点(P-P)接口电路678、688的P-P接口650来交换信息。如图6中所示,IMC 672和682将处理器耦合到相应的存储器,即存储器632和存储器634,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器670、680可各自经由使用点到点接口电路676、694、686、698的各个P-P接口652、654来与芯片组690交换信息。芯片组690可以可选地经由高性能接口639来与协处理器638交换信息。在一个实施例中,协处理器638是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地缓存信息可被存储在共享缓存中。
芯片组690可以经由接口696耦合到第一总线616。在一个实施例中,第一总线616可以是外围组件互连(Peripheral Component Interconnect,PCI)总线或诸如PCI快速(PCI Express)总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图6中所示,各种I/O设备614可连同总线桥618一起耦合到第一总线616,该总线桥618将第一总线616耦合到第二总线620。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器615耦合到第一总线616。在一个实施例中,第二总线620可以是低引脚数(low pin count,LPC)总线。在一个实施例中,各种设备可耦合到第二总线620,这些设备包括例如键盘和/或鼠标622、通信设备627以及存储单元628,该存储单元628诸如可包括指令/代码和数据630的盘驱动器或者其他大容量存储设备。此外,音频I/O 624可以被耦合到第二总线620。注意,其他体系结构是可能的。例如,代替图6的点到点体系结构,系统可以实现多分支总线或其他此类体系结构。
现在参考图7,示出的是根据本发明的实施例的SoC 700的框图。虚线框是更先进的SoC上的可选的特征。在图7中,(一个或多个)互连单元702被耦合到:应用处理器710,其包括一个或多个核心的集合702A-N(包括组成缓存单元704A-N)的集合以及(一个或多个)共享缓存单元706;系统代理单元710;(一个或多个)总线控制器单元716;(一个或多个)集成存储器控制器单元714;一个或多个协处理器的集合720,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(static random access memory,SRAM)单元730;直接存储器访问(direct memory access,DMA)单元732;以及用于耦合到一个或多个外部显示器的显示单元740。在一个实施例中,(一个或多个)协处理器720包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图6中图示的代码630)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核心”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可重写致密盘(compack diskrewritable,CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(dynamic random access memory,DRAM)和静态随机存取存储器(static randomaccess memory,SRAM)的随机存取存储器(random access memory,RAM)、可擦除可编程只读存储器(erasable programmable read-only memories,EPROM)、闪存、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM);相变存储器(phase change memory,PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(Hardware Description Language,HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令转译(例如,使用静态二进制转译、包括动态编译的动态二进制转译)、变形、仿真或以其他方式转换成要由核心处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图8是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图8示出可使用x86编译器804来编译高级语言802形式的程序,以生成可由具有至少一个x86指令集核心的处理器816原生执行的x86二进制代码806。具有至少一个x86指令集核心的处理器816表示通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核心的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核心的指令集的实质部分,或2)目标为在具有至少一个x86指令集核心的英特尔处理器上运行以便取得与具有至少一个x86指令集核心的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器804表示可操作用于生成x86二进制代码806(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核心的处理器816上执行。类似地,图8示出可以使用替代性指令集编译器808来编译高级语言802形式的程序,以生成可以由没有至少一个x86指令集核心的处理器814(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核心的处理器)原生执行的替代性指令集二进制代码810。指令转换器812用于将x86二进制代码806转换成可以由没有x86指令集核心的处理器814原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码810相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器812通过仿真、模拟或任何其他过程来表示允许没有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码806的软件、固件、硬件或其组合。
以下示例涉及进一步的实施例。
在一个示例中,一种装置包括:多个执行电路,用于执行微操作,其中多个执行电路的子集能够执行融合微操作;融合电路,至少耦合到多个执行电路的子集,其中融合电路用于将生产者-消费者微操作的一个或多个对融合成融合微操作;以及融合扼制电路,耦合到融合电路,其中融合扼制电路用于至少部分基于与第一微操作相关联的历史信息来防止第一微操作与另一个微操作融合。
在示例中,融合扼制电路包括存储器,用于存储多个条目,多个条目中的每个条目存储融合微操作的标识符,以及包括置信度值的历史信息。
在示例中,融合扼制电路用于基于存储器中与第一微操作相关联的条目的置信度值与阈值之间的比较来防止第一微操作与另一个微操作融合。
在示例中,融合扼制电路用于当尝试调遣第一融合微操作的次数超过第二阈值时更新存储器中与第一融合微操作相关联的第一条目的置信度值。
在示例中,融合扼制电路用于当融合微操作以其中多个执行电路的子集中的至少一个是空闲的周期被调遣时,从存储器中删除与融合微操作相关联的条目。
在示例中,该装置进一步包括分配电路,该分配电路包括融合电路,其中分配电路用于查阅融合扼制电路,并用于至少部分基于与第二微操作相关联的历史信息将第二微操作与第三微操作融合以形成第二融合微操作。
在示例中,该装置进一步包括预留站,该预留站耦合到分配电路,其中分配电路用于向预留站提供第二融合微操作。
在示例中,该装置进一步包括调度器电路,该调度器电路耦合到预留站,该调度器电路用于在第一周期内将第二融合微操作调度到多个执行电路的子集中的一个。
在示例中,调度器电路用于在第一周期内将第三微操作调度到多个执行电路中的另一个,第三微操作是生产者微操作而第二微操作是消费者微操作。
在示例中,多个执行电路的子集中的至少一个用于接收两个以上的源操作对象,并在单个周期内对两个以上的源操作对象执行操作。
在另一示例中,一种方法包括:在处理器的分配电路中接收第一微操作和第二微操作,第二微操作是消费者微操作而第一微操作是生产者微操作;访问与第二微操作相关联的历史信息;以及至少部分基于历史信息来防止第一微操作与第二微操作融合,并将第一微操作和第二微操作独立地分配和调遣到一个或多个执行电路。
在示例中,方法进一步包括访问历史信息,包括存储在缓存存储器的与第二微操作相关联的条目中的置信度值。
在示例中,方法进一步包括当置信度值超过阈值时防止融合。
在示例中,方法进一步包括响应于第二微操作的另一个迭代而更新缓存存储器的条目,其中第二微操作的另一个迭代包括由第一微操作和第二微操作形成的融合微操作。
在示例中,方法进一步包括:在分配电路中接收第三微操作和第四微操作,第四微操作是消费者微操作而第三微操作是生产者微操作;访问与第四微操作相关联的历史信息;以及至少部分基于历史信息来将第三微操作与第四微操作融合成第四融合微操作,并将第四融合微操作调遣到融合执行电路。
在另一示例中,包括指令的计算机可读介质用于执行如以上示例中的任一项所述的方法。
在进一步的示例中,包括数据的计算机可读介质用于由至少一个机器使用以制造至少一个集成电路来执行如以上示例中的任一项的方法。
在更进一步的示例中,设备包括用于执行如以上示例中的任一项的方法的装置。
在另一个示例中,处理器包括:分配电路,用于将微操作分配给与执行单元耦合的执行端口;调度器电路,耦合到分配电路,其中调度器电路用于将微操作调度到分配的执行端口;以及执行单元,耦合到调度器电路,用于执行调度的微操作,其中执行单元的子集能够执行融合微操作。分配电路可以在生产者-消费者微操作的至少一对在同一周期内被调度时,将该至少一对融合成融合微操作,并且至少部分基于与第一消费者微操作相关联的历史信息而不会将第一消费者微操作与第一生产者微操作融合。
在示例中,处理器进一步包括存储器,用于存储多个条目,多个条目中的每个条目存储融合微操作的标识符,以及包括置信度值的历史信息。
在示例中,分配电路用于基于存储器中与第一消费者微操作相关联的条目的置信度值与阈值之间的比较来防止第一消费者微操作与第一生产者微操作融合。
在示例中,调度器电路用于当尝试调度第一融合微操作的次数超过第二阈值时更新存储器中与第一融合微操作相关联的第一条目的置信度值。
在示例中,执行单元的子集用于接收M+1个源操作对象,并且执行单元的其他子集用于接收M个源操作对象。
应理解,以上示例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文中可互换地使用。如本文中所使用,这些术语以及术语“逻辑”用来单独地或以任何组合指代模拟电路系统、数字电路系统、硬连线电路系统、可编程电路系统、处理器电路系统、微控制器电路系统、硬件逻辑电路系统、状态机电路系统和/或任何其他类型的物理硬件组件。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置为用于执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置、或者一种或多种机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备执行本文中所描述的方法与技术中的一者或多者。
实施例可被实现在代码中,并且可被存储在非暂态存储介质上,该非暂态存储介质具有存储于其上的指令,这些指令可以被用于将系统编程为用于执行这些指令。实施例还可被实现在数据中,并且可被存储在非暂态存储介质上,该非暂态存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可以在包括信息的计算机可读存储介质中实现,该计算机可读存储介质当被制造在SoC或其他处理器中时将SoC或其他处理器配置为执行一个或多个操作。该存储介质可包括但不限于:任何类型的盘,包括软盘、光盘、固态驱动器(solid state drive,SSD)、致密盘只读存储器(compact disk read-only memory,CD-ROM)、致密盘可重写(compactdisk rewritable,CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(read-only memory,ROM)、诸如动态随机存取存储器(dynamic random access memory,DRAM)与静态随机存取存储器(static random access memory,SRAM)之类的随机存取存储器(random accessmemory,RAM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、闪存、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
尽管已参考有限数量的实现方式描述了本公开,但是受益于本公开的本领域技术人员将从其中理解众多修改和变型。所附权利要求书旨在涵盖所有此类修改和变型。
Claims (25)
1.一种装置,包括:
多个执行电路,用于执行微操作μop,其中所述多个执行电路的子集能够执行融合微操作;
融合电路,至少耦合到所述多个执行电路的所述子集,其中所述融合电路用于将生产者-消费者微操作的一个或多个对融合成融合微操作;以及
融合扼制电路,耦合到所述融合电路,其中所述融合扼制电路用于至少部分基于与第一微操作相关联的历史信息来防止所述第一微操作与另一个微操作融合。
2.如权利要求1所述的装置,其特征在于,所述融合扼制电路包括:存储器,用于存储多个条目,所述多个条目中的每个条目存储融合微操作的标识符,以及包括置信度值的所述历史信息。
3.如权利要求2所述的装置,其特征在于,所述融合扼制电路用于基于所述存储器中与所述第一微操作相关联的条目的置信度值与阈值之间的比较来防止所述第一微操作与所述另一个微操作融合。
4.如权利要求2所述的装置,其特征在于,所述融合扼制电路用于当尝试调遣第一融合微操作的次数超过第二阈值时更新所述存储器中与所述第一融合微操作相关联的第一条目的置信度值。
5.如权利要求2所述的装置,其特征在于,所述融合扼制电路用于当融合微操作以其中所述多个执行电路的所述子集中的至少一个是空闲的周期被调遣时,从所述存储器中删除与所述融合微操作相关联的条目。
6.如权利要求1所述的装置,进一步包括分配电路,所述分配电路包括所述融合电路,其中所述分配电路用于查阅所述融合扼制电路,并用于至少部分基于与第二微操作相关联的历史信息,将所述第二微操作与第三微操作融合以形成第二融合微操作。
7.如权利要求6所述的装置,进一步包括预留站,所述预留站耦合到所述分配电路,其中所述分配电路用于向所述预留站提供所述第二融合微操作。
8.如权利要求7所述的装置,进一步包括调度器电路,所述调度器电路耦合到所述预留站,所述调度器电路用于以第一周期将所述第二融合微操作调度到所述多个执行电路的所述子集中的一个。
9.如权利要求8所述的装置,其特征在于,所述调度器电路用于以所述第一周期将所述第三微操作调度到所述多个执行电路中的另一个,所述第三微操作是生产者微操作而所述第二微操作是消费者微操作。
10.如权利要求1-9中任一项所述的装置,其特征在于,所述多个执行电路的所述子集中的至少一个用于接收两个以上的源操作对象,并以单个周期对所述两个以上的源操作对象执行操作。
11.一种方法,包括:
在处理器的分配电路中接收第一微操作μop和第二微操作,所述第二微操作是消费者微操作而所述第一微操作是生产微操作;
访问与所述第二微操作相关联的历史信息;以及
至少部分基于所述历史信息来防止所述第一微操作与所述第二微操作融合,并将所述第一微操作和所述第二微操作独立地分配和调遣到一个或多个执行电路。
12.如权利要求11所述的方法,进一步包括访问所述历史信息,所述历史信息包括存储在缓存存储器的与所述第二微操作相关联的条目中的置信度值。
13.如权利要求12所述的方法,进一步包括当所述置信度值超过阈值时防止融合。
14.如权利要求12所述的方法,进一步包括响应于所述第二微操作的另一个迭代而更新所述缓存存储器的所述条目,其中所述第二微操作的所述另一个迭代包括由所述第一微操作和所述第二微操作形成的融合微操作。
15.如权利要求11所述的方法,进一步包括:
在所述分配电路中接收第三微操作和第四微操作,所述第四微操作是消费者微操作而所述第三微操作是生产者微操作;
访问与所述第四微操作相关联的历史信息;以及
至少部分基于所述历史信息来将所述第三微操作与所述第四微操作融合成第四融合微操作,并将所述第四融合微操作调遣到融合执行电路。
16.一种计算机程序产品,包括指令,所述指令当由处理器执行时,使所述处理器执行如权利要求11-15中任一项所述的方法。
17.一种处理器,包括:
分配电路,用于将微操作μop分配给与执行单元耦合的执行端口;
调度器电路,耦合到所述分配电路,其中所述调度器电路用于将所述微操作调度到分配的执行端口;以及
执行单元,耦合到所述调度器电路,用于执行调度的微操作,其中所述执行单元的子集能够执行融合微操作;
其中所述分配电路用于当生产者-消费者微操作的至少一对在同一周期内被调度时,将所述至少一对融合成融合微操作,并且用于至少部分基于与第一消费者微操作相关联的历史信息而不将所述第一消费者微操作与第一生产者微操作融合。
18.如权利要求17所述的处理器,进一步包括存储器,用于存储多个条目,所述多个条目中的每个条目存储融合微操作的标识符,以及包括置信度值的所述历史信息。
19.如权利要求18所述的处理器,其特征在于,所述分配电路用于基于所述存储器中与所述第一消费者微操作相关联的条目的置信度值与阈值之间的比较来防止所述第一消费者微操作与所述第一生产者微操作融合。
20.如权利要求18所述的处理器,其特征在于,所述调度器电路用于当尝试调度第一融合微操作的次数超过第二阈值时更新所述存储器中与所述第一融合微操作相关联的第一条目的置信度值。
21.如权利要求17-20中任一项所述的处理器,其特征在于,所述执行单元的所述子集用于接收M+1个源操作对象,并且所述执行单元的其他子集用于接收M个源操作对象。
22.一种设备,包括:
用于接收第一微操作μop和第二微操作的装置,所述第二微操作是消费者微操作而所述第一微操作是生产微操作;
用于访问与所述第二微操作相关联的历史信息的装置;
用于至少部分基于所述历史信息来防止所述第一微操作与所述第二微操作融合的装置;以及
用于将所述第一微操作和所述第二微操作独立地分配和调遣到一个或多个执行装置的装置。
23.如权利要求22所述的设备,进一步包括用于访问所述历史信息的装置,所述历史信息包括存储在缓存存储器装置的与所述第二微操作相关联的条目中的置信度值。
24.如权利要求23所述的设备,进一步包括用于当所述置信度值超过阈值时防止融合的装置。
25.如权利要求23所述的设备,进一步包括用于响应于所述第二微操作的另一个迭代而更新所述缓存存储器装置的条目的装置,其中所述第二微操作的所述另一个迭代包括由所述第一微操作和所述第二微操作形成的融合微操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/558,978 US20230195456A1 (en) | 2021-12-22 | 2021-12-22 | System, apparatus and method for throttling fusion of micro-operations in a processor |
US17/558,978 | 2021-12-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116339489A true CN116339489A (zh) | 2023-06-27 |
Family
ID=84361286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211512393.5A Pending CN116339489A (zh) | 2021-12-22 | 2022-11-29 | 处理器中微操作的扼制融合的系统、装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230195456A1 (zh) |
EP (1) | EP4202664B1 (zh) |
CN (1) | CN116339489A (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180129498A1 (en) * | 2016-11-06 | 2018-05-10 | Centipede Semi Ltd. | Micro-op fusion for non-adjacent instructions |
US11294685B2 (en) * | 2019-06-04 | 2022-04-05 | International Business Machines Corporation | Instruction fusion using dependence analysis |
US10956167B2 (en) * | 2019-06-06 | 2021-03-23 | International Business Machines Corporation | Mechanism for instruction fusion using tags |
-
2021
- 2021-12-22 US US17/558,978 patent/US20230195456A1/en active Pending
-
2022
- 2022-11-22 EP EP22208772.8A patent/EP4202664B1/en active Active
- 2022-11-29 CN CN202211512393.5A patent/CN116339489A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230195456A1 (en) | 2023-06-22 |
EP4202664B1 (en) | 2024-06-26 |
EP4202664A1 (en) | 2023-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10338927B2 (en) | Method and apparatus for implementing a dynamic out-of-order processor pipeline | |
US10061593B2 (en) | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions | |
CN107810480B (zh) | 根据性能度量的指令块分配 | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
US9122475B2 (en) | Instruction for shifting bits left with pulling ones into less significant bits | |
TW201712544A (zh) | 驗證分支目標 | |
JP2016207232A (ja) | 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム | |
US20220206793A1 (en) | Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor | |
CN111752616A (zh) | 用于符号存储地址生成的系统、装置和方法 | |
US20160283247A1 (en) | Apparatuses and methods to selectively execute a commit instruction | |
US10437590B2 (en) | Inter-cluster communication of live-in register values | |
US20150277910A1 (en) | Method and apparatus for executing instructions using a predicate register | |
US11126438B2 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
US12039329B2 (en) | Methods, systems, and apparatuses to optimize partial flag updating instructions via dynamic two-pass execution in a processor | |
US20220100569A1 (en) | Methods, systems, and apparatuses for scalable port-binding for asymmetric execution ports and allocation widths of a processor | |
EP4202664B1 (en) | System, apparatus and method for throttling fusion of micro-operations in a processor | |
WO2024065850A1 (en) | Providing bytecode-level parallelism in a processor using concurrent interval execution | |
CN116339969A (zh) | 微操作的自适应动态分派 | |
CN115858022A (zh) | 集群化解码管线的可缩放切换点控制电路系统 | |
US20160378497A1 (en) | Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |