经由多级保留站结构的发射指令分派方法与流程

文档序号:17609621发布日期:2019-05-07 20:59阅读:248来源:国知局

技术领域
:本发明概括而言涉及在微处理器中发射和分派指令的过程,更具体而言涉及更高效地分派指令来供微处理器执行的融合保留站(fusedreservationstations)模块,并且改善了性能。
背景技术
::许多现代微处理器是超标量的,其中它们包括多个执行单元并且在单个时钟周期中能够分派多个指令到这些执行单元。许多现代微处理器也运行乱序(out-of-order,O-O-O)执行。也就是说,微处理器可不按软件程序的指令指定的顺序执行指令。超标量乱序执行微处理器通常尝试维持未完成指令的相对大的池以便它们可利用更大量的指令并行度。微处理器执行相应指令集架构的指令,例如x86指令集架构等等。在许多这种微处理器中,经常被称为宏指令的指令集架构的指令首先被翻译成被发射到保留站模块的微指令(或者微操作或“μop”),保留站模块进而将指令分派到执行单元。微指令在这里被更概括地简称为指令。指令也被发射到重排序缓冲器(reorderbuffer,ROB),其确保指令的按序引退(retirement)。保留站(reservationstation,RS)包括一个或多个有序队列。当有多个指令准备好从RS队列分派时,意味着指令满足了被分派到执行单元的条件,则准备就绪的指令中的一个或多个被分派到相应的执行单元。当执行单元可用,并且指令执行所必要的任何操作数也可用时,则意味着该指令准备好被分派。随着微处理器设计变得越来越复杂,RS的效率和性能都需要改善。希望通过使RS更小并且更高效来改善RS的时序和吞吐量。RS也应当提供更大的进入效率以及增大的执行单元支持。传统的RS配置并不满足所有这些设计改善目标。技术实现要素:根据一个实施例的经由多级保留站(RS)结构的发射指令分派方法包括:藉由主RS存储接收的发射指令至至少一个主RS队列。藉由主RS将至少一个主RS队列中存储的发射指令推送到次RS。藉由主RS分派至少一个主RS队列中存储的发射指令中的准备好被分派的至少一个发射指令。藉由次RS存储从主RS接收的发射指令至至少一个次RS队列。藉由次RS分派至少一个次RS队列中存储的发射指令中的准备好被分派的至少一个发射指令。藉由绕过系统在次RS所分派的发射指令和主RS所推送的发射指令之间进行选择来分派发射指令。附图说明参考随后的描述和附图将更好地理解本发明的益处、特征和优点,附图中:图1是包括根据本发明的一个实施例实现的融合保留站(RS)模块的超标量流水线微处理器的简化框图;图2是根据一个实施例的图1的融合RS模块的更详细框图;图3是根据一个实施例的图1的融合RS模块的框图,其具有实现主RS的统一RSQ和实现次RS的多重分派RS;图4是根据另一实施例的图1的融合RS模块的简化框图,其中次RS是利用分割RS实现的;图5是根据另外一个实施例的图1的融合RS模块的简化框图,其中次RS是利用集群RS实现的;图6是包括传统RS结构的流水线的简化框图;图7是包括根据本发明的一个实施例的融合RS结构的流水线的简化框图;图8是图示出根据一个实施例被配置为具有移位特征的RSQ的图2的主RS的操作的一对简化图;并且图9是图示出根据一个实施例的具有总共12个条目并且假定每次推送出4个指令的图8的RSQ的移位特征的简化图。具体实施方式发明人认识到了传统的保留站结构的效率低下和更低的性能。他们因此开发出了一种具有改善的效率和性能的融合保留站结构。融合保留站(RS)结构包括一种多级或堆叠式保留站结构,其中包括主RS和次RS。主RS提供前端溢出缓冲器功能,用于缓冲发射的指令以减少转变到造成微处理器的流水线延迟的重发射模式的发生。融合结构因为改善的缓冲功能可减少前端时序气泡。主RS和次RS结构都可以更小,从而整体时序可得到改善。另外,当次RS不能分派给定类型的至少一个指令时,那么当主RS内的任何一个或多个指令准备好被直接分派到处理器的执行单元时,次RS可被绕过。图1是包括根据本发明的一个实施例实现的融合保留站(RS)模块108的超标量流水线微处理器100的简化框图。微处理器100包括指令高速缓存102,其缓存某个指令集架构的宏指令130,例如x86指令集架构等等。其它的或替换的指令集架构也是可以预期的。微处理器100包括指令翻译器104,其接收宏指令130并将宏指令130翻译成微指令132。微指令132随后被提供到寄存器别名表(registeraliastable,RAT)106(亦称为“重命名”表),RAT106生成微指令132的微指令的相关性(dependency)并且将微指令132按程序顺序发射到融合RS模块108和重排序缓冲器(ROB)110。ROB110对于从RAT106发射的每个微指令存储一条目。融合RS模块108将微指令分派到多个执行单元112中的适当的一个。从RAT106发射的微指令(ISSUE)通常可被称为微指令,但在这里被更概括地简称为“指令”。融合RS模块108在其已满或者因其他原因不能够从RAT106接收额外的指令时声明一个满指示信号,示为RS_FULL。ROB110通常具有更大的结构,在融合RS模块108已满之后可继续接收指令。最终,融合RS模块108能够将指令分派到执行单元112以使得其能够接收更多的指令。在融合RS模块108指示出其不再满之后(例如当信号RS_FULL被取消声明时),指令从ROB110临时性地被重发射(REISSUE)到融合RS模块108。当ROB110跟上了RAT106时,再次从RAT106发射指令。如本文进一步描述的,融合RS模块108具有更多数量的乱序(O-O-O)窗口,从而不会那么经常地变满。融合RS模块108更小并且具有更高效的设计,从而具有改善的时序。融合RS模块108表现出增大的吞吐量并从而表现出更高的性能。融合RS模块108可减少重播并且可减少其确实变满时的惩罚。融合RS模块108可减少会插入流水线延迟的前端空间或“气泡”。图2是根据一个实施例的融合RS模块108的更详细框图,该融合RS模块108耦合在RAT106和ROB110与执行单元112之间。RAT106具有被提供到ROB110的输入的输出。复用器(MUX)202具有与RAT106的输出耦合的第一输入,具有与ROB110的输出耦合的第二输入,并且具有与融合RS模块108内的主RS204的输入耦合的输出。主RS204具有与次RS208的输入耦合的推送输出206。次RS208具有被提供到绕过系统212的输入的分派输出210,绕过系统212具有与寄存器模块216的输入耦合的分派输出214。如本文进一步描述的,主RS204还包括被提供到绕过系统212的输入的绕过输出230,并且次RS208向绕过系统提供信号S_NONDIS。寄存器模块216被示为介于融合RS模块108与执行单元112之间,用于提供相应的指令操作数和指令操作码。寄存器模块216可包括微处理器100的任何寄存器,例如物理寄存器文件(physicalregisterfile,PRF)、ROB110的寄存器文件、通用寄存器(generalpurposeregister,GPR)等等,并且还包括用于收集指令的信息来提交给执行单元112的电路和逻辑。在一个实施例中,融合RS模块108只处理或操作个体指令的“标签”而不是指令本身。这使得能够减小实现融合RS模块108的电路的大小,因为其存储并处理减少量的信息。寄存器模块216使用每个指令的标签来收集指令信息,包括指令操作数和指令操作码等等,并且将收集的指令信息提供给执行单元112。由于每个标签代表相应的指令,所以该信息在这里被简称为“指令”。在操作中,主RS204把从RAT106或ROB110接收的发射指令推送到次RS208。当次RS208已满并且不能接收从主RS204推送的更多指令时,其向主RS204声明S_RSFULL信号。S_RSFULL信号是融合RS模块108内部的并且是与RS_FULL信号(图1)不同的信号。当S_RSFULL信号被声明时,主RS204作为溢出缓冲器操作来接收并存储额外的发射指令。当次RS208从满变成未满时,其取消声明S_RSFULL并且主RS204将其内存储的任何发射指令推送到次RS208。如果当主RS204也变满时次RS208仍然为满,则RS模块108向ROB110声明RS_FULL信号以表明其不能接收另一发射指令。在该情况下,指令仅被从RAT106发射到ROB110,但不被提供给RS模块108。最终,当信号RS_FULL被取消声明时(由主RS204或次RS208的一些分派操作引起),融合RS模块108切换到重发射模式,其中指令被从ROB110重发射(REISSUE)到融合RS模块108。从RS_FULL信号被取消声明直到来自ROB110的重发射指令到达为止,期间会有多个时钟周期的延迟。在该延迟期间,主RS204可在来自ROB108的重发射指令到达之前推送存储的发射指令来喂给次RS208。这样,隐藏了从重发射流水线引入的气泡。绕过系统212监视次RS208的操作来判定何时采用绕过功能。如果次RS208在当前周期期间没有指令要分派,则绕过系统212选择主RS204的绕过输出230,而如果主RS204在当前周期期间有一个或多个指令准备好被分派,则这些指令可被直接分派到执行单元112。绕过系统212根据信号S_NONDIS判定次RS208在当前周期期间是否有指令要分派,信号S_NONDIS指示出次RS208中存储的指令在上个周期期间没有一个准备好。绕过功能可以是部分的,意思是即使次RS208在给定周期中分派指令,但没有分派一个或多个类型的任何指令(缺失类型),则主RS204可经由绕过输出230在该周期中分派(一个或多个)缺失类型的一个或多个指令。如本文进一步描述的,绕过功能提供了额外的O-O-O窗口来改善整体RS吞吐量和性能。注意,通过微处理器100的流水线传达发射和分派的指令的每个输入和输出可包括用于每次传达多个指令或每个时钟周期传达多个指令的多个输入或输出路径。在图示的实施例中,例如,RAT106和ROB110各自向融合RS模块108输出最多“N”个指令,其中“N”是正整数。注意,本文使用的短语“最多”打算包括任何给定时钟周期期间的少于指示数目的指令,包括零(0)个指令。如本文进一步描述,基于操作是在普通模式(发射)还是重发射模式中来控制MUX202,并且MUX202将所选择的N个指令提供给主RS204。注意,临时存储在融合RS模块108中的指令即使被从ROB110重发射也是“发射”的指令。主RS204接收最多N个发射指令并且可向次RS208推送最多“P”个发射指令。次RS208接收最多P个发射指令并且可向绕过系统212分派最多“Q”个指令。主RS204或者可以经由绕过输出230直接向绕过系统212分派最多“M”个指令。绕过系统212向寄存器模块216分派最多Q个指令,寄存器模块216向执行单元112分派该最多Q个指令。数字“M”、“P”和“Q”也是正整数。融合RS模块108的分派输出214以及寄存器模块216的输出都是根据个体执行单元112的每一者的数目和类型来配置的。如图所示,执行单元112包括Q个执行单元EU1218,EU2220,…,EUQ222。每个执行单元可根据用于处理相应指令类型的若干类型中的任何一种来实现,例如用于处理浮点指令的浮点(floatingpoint,FP)单元、用于处理加载指令的加载(load,LD)单元、用于操作存储指令的存储(store,ST)单元、用于操作包括加载或存储指令在内的“存储器型”指令的组合的加载/存储(load/store,LS)单元以及用于处理整数指令的整数(integer,IN)单元。执行单元112可包括任何数目的每种类型。例如,一个配置包括2个FP单元、2个LS单元和2个IN单元。要理解,个体执行单元112的类型和数目可根据特定实现方式而变化。每个FP执行单元可实现为单指令多数据(single-instruction-multiple-data,SIMD)执行单元,例如MMX或SSE单元等等。一个或多个LS执行单元可被包含在存储器顺序缓冲器(memoryorderbuffer,MOB)(未示出)等内,包括加载/存储执行流水线或者独立的加载和存储执行流水线。MOB一般操作到外部系统存储器(未示出)的存储器型指令。外部系统存储器可经由数据高速缓存(例如,L2数据高速缓存,未示出)和总线接口单元(BIU,未示出)与微处理器100(和MOB)接口。每个IN执行单元可包括至少一个整数算术/逻辑单元(arithmetic/logicunit,ALU)等等。如图1所示,执行单元112可将其结果提供给ROB110,ROB110确保指令的按序引退。数字N、M、P和Q的每一者的实际值取决于微处理器100的特定配置。在一个实施例中,例如,取决于RAT106和ROB110的配置和操作,N可以是3或者N可以是4。在一个实施例中,M可以是3,用于分派每种类型的指令(FP、LS、IU)的至多一个,或者M可以是6,用于分派每种类型的指令的至多两个,虽然设想到了替换数字。数字P和Q取决于主RS204和次RS208的类型和配置以及执行单元112的数目和类型。主RS204和次RS208各自实现有至少一种类型的RS结构,其中每个RS结构包括至少一个RS队列(RSQ)。每个RSQ是用于临时存储发射的指令以便最终分派到执行单元112的缓冲器之类的。每个RSQ具有用于存储发射的指令的多个条目,其中每个RSQ中存储的指令的类型取决于RS结构的类型。有许多不同类型的RS结构可用于主RS204和次RS208。主RS204和次RS208可各自包括不同类型的RS结构的组合。统一RS结构只包括一个统一RSQ,该统一RSQ可存储任何指令类型的多个指令。基本上,指令被按顺序接收并存储在统一RSQ的条目中,虽然指令可被乱序地从统一RSQ“弹出”或以其他方式移除。由于只有一个存储任何类型的指令的RSQ,所以统一RSQ与其他RS结构相比具有发射指令的优秀进入效率和良好的吞吐量。然而,当单独使用统一RSQ来实现微处理器的RS功能时,用统一RSQ难以实现整体时序。另外,当单独使用统一RSQ时,从统一RSQ的分派功能是有点复杂的。统一RSQ的分派逻辑必须判定哪些指令准备好分派,必须判定哪些执行单元准备好接收指令,并且必须区分不同类型的指令来分派到适当的执行单元。当在微处理器100中有许多执行单元时,这些因素变得更加困难。当用作融合RS模块108的主RS204时,统一RS结构的优秀进入效率可以被非常有利地使用。另外,分派逻辑可被简化,因为大多数存储的指令不被分派到执行单元,而只是被推送到次RS208。分派逻辑还可判定哪些指令准备好分派,并且这些指令在次RS208在给定时钟周期中没有指令要分派时可被绕过系统212选择来经由绕过输出230分派。分割RS结构包括多个单独的分割RSQ,其中每一者对应于执行单元112中的至少一者。因此,每个分割RSQ只存储特定类型的发射指令。例如,分割RS结构包括一个或多个IN分割RSQ、一个或多个FPRSQ以及一个或多个存储器型(LD、ST、LS)分割RSQ。分割RS结构的分派逻辑更简单。因此,分割RS结构具有不良的进入效率,但具有良好的时序并且可以用简单的逻辑实现。当用作多个执行单元的唯一RS结构时,进入逻辑是复杂的,这会降低吞吐量效率。集群RS结构包括多个集群RSQ,其中每个集群RSQ存储多个指令类型并且对应于多个类型的执行单元112。集群RSQ的数目与执行单元的重复数目相对应。集群RS结构具有良好的进入效率,但由于路径延迟在转发路径上具有惩罚。多重分派RS结构具有多个RSQ,每个RSQ只存储一种类型的指令并且每个RSQ对应于同一类型的多个执行单元。从而,多重分派RS结构的每个RSQ被配置为每次输出多个指令。取决于选择标准,有若干种类型的多重分派RS结构。例如,第一最旧—第二最旧(第一/第二最旧)多重分派RS结构具有选择功能,其中在给定周期中对于每个多重分派RSQ选择第一最旧指令和第二最旧指令中的一者或两者来输出。第一/第二最旧多重分派RS结构具有公平的效率,但当被单独使用来实现RS功能时一般具有更复杂的逻辑并且具有非最优的时序。对于硬件来说,确定准备好分派的第一最旧指令是相对简单的事。然而,对于硬件来说,在满足时序要求的同时确定准备好分派的第二最旧指令是更困难的,因为此确定是序列化的。尤其,首先确定第一最旧就绪指令,然后才能确定第二最旧就绪指令。另一种多重分派RS结构例如是奇-偶多重分派RS结构,例如标题为“ParallelizedMultipleDispatchSystemAndMethodForOrderedQueueArbitration”的美国专利申请14/643,051号中描述的那种,该美国申请被全部并入在此。奇-偶多重分派RS结构具有选择功能,其中在每个内部RSQ内将指令是划分成单独的奇队列和偶队列,从而在任何给定周期中对于每个内部RSQ选择偶指令和奇指令的两者来输出。奇-偶多重分派RS结构提供了充分的效率,良好的时序和吞吐量,并且可以用相对简单的逻辑电路实现。当单独用作处理器的RS结构时,奇-偶多重分派RS结构比第一/第二最旧多重分派RS结构提供更好的性能。如本文进一步描述的,奇-偶多重分派RS结构包括多个RSQ,每个在内部被细分为两组,用于在每个时钟周期中分派至多两个指令(奇/偶)。在更一般的情况中,每个内部RS队列可按更大的数字来细分,例如细分为3或4或更多部分,用于在每个时钟周期中分派甚至更多数量的指令。如图2所示,融合RS模块108包括多个(或两个)RS级,这些RS级被堆叠或顺序地排序来存储和分派发射的指令。融合RS模块108提供重大益处,其中某些RS结构的优点可被增强,而缺点可被减小或者以其他方式最小化。前端主RS204与次RS208的组合与单独使用任何RS结构相比提供了改善的整体性能。主RS204可提供前端溢出缓冲器功能,用于缓冲额外的发射指令来减少当次RS208已满(例如,次RS208的一个RSQ已满)时转变到重发射模式的发生。如本文进一步描述的,融合(多级或堆叠式)结构可减少重播、重发射和RS满惩罚。融合结构因为改善的缓冲功能可减少前端时序气泡。可以改善整体时序,因为可以用更简单的逻辑使主RS204和次RS208两者更小。另外,当次RS208变满或因其他原因不能够符合时序时,那么当主RS204内的任何一个或多个指令准备好被直接分派到执行单元112时,次RS208可经由绕过输出230被绕过。主RS204和次RS208可各自以任何上述RS结构实现,或者以甚至这种RS结构的组合实现。统一RS结构与其他RS结构相比可具有优秀的进入效率,因此其是实现主RS204的良好选择。集群RS结构与其余RS结构相比也具有更好的进入效率,因此其也可用作主RS204。虽然可以使用统一和集群RS结构的组合,但这样可增大复杂度,从而可能降低整体优点。次RS208可利用其他RS结构中的任何一个或多个来实现,包括利用其他RS结构的组合来实现。图3是根据一个实施例的融合RS模块108的框图,其具有实现主RS204的统一RSQ302和实现次RS208的多重分派RS301。多重分派RS301包括用于FP指令的第一RSQ304、用于存储器(加载和存储)指令(LS)的第二RSQ306和用于整数指令(IN)的第三RSQ308。统一RSQ302接收至多N个指令并且在任何给定周期中推送最多P个指令,其中RSQ304、306和308(304–308)总地具有P个输入用于每次接收最多P个指令。在任何给定周期中,从统一RSQ302推送的最多P个指令可全都被提供给RSQ304–308中的任何一者,或者可依据被推送的指令的类型按任何方式来分发。如图2所示,次RS208具有Q个输出,用于对Q个执行单元112中的每一者分派最多一个指令。在图3的图示实施例中,有六个执行单元(EU)322、324、326、328、330、332(322–332),每种类型(FP、LS、IN)包括两个,其中要理解可包括不同数目的执行单元112和不同类型。在此情况中,Q=6,并且每个RSQ304–308被配置为每次分派给定类型的最多2个指令。注意,在替换配置中,每个RSQ304–308可被实现为每次分派多于两个指令。绕过系统212被示为由六个MUX310、312、314、316、318和320(310–320)实现,用于向执行单元112每次分派最多6个指令(对于Q=6)。RSQ304的第一输出被提供到MUX310的第一输入,并且RSQ304的第二输出被提供到MUX312的第一输入。以类似的方式,RSQ306的第一输出被提供到MUX314的第一输入,RSQ306的第二输出被提供到MUX316的第一输入,RSQ308的第一输出被提供到MUX318的第一输入,并且RSQ308的第二输出被提供到MUX320的第一输入。RSQ304–308的每一者的每个输出包括控制信号,用于控制MUX310–312中的相应一个来在RSQ304–308的相应输出和相应的绕过输出230之间作出选择。MUX310的输出向FP执行单元322提供最多一个指令(经由寄存器模块216),MUX312的输出向FP执行单元324提供最多一个指令(经由寄存器模块216),MUX314的输出向LS执行单元326提供最多一个指令(经由寄存器模块216),MUX316的输出向LS执行单元328提供最多一个指令(经由寄存器模块216),MUX318的输出向IN执行单元330提供最多一个指令(经由寄存器模块216),并且MUX320的输出向IN执行单元332提供最多一个指令(经由寄存器模块216)。统一RSQ302具有3个绕过输出(M=3)334、336和338(334–338),用于每次提供3种类型的最多3个绕过指令,其中第一绕过输出334耦合到MUX310和312的每一者的第二输入,用于分派FP类型的绕过指令,第二绕过输出336被提供到MUX314和316的每一者的第二输入,用于分派LS类型的绕过指令,并且第三绕过输出338被提供到MUX318和320的每一者的第二输入,用于分派IN类型的绕过指令。从而,统一RSQ302在任何给定周期中可直接分派每种类型的指令(FP、LS、IN)的最多一个。当多重分派RS301不能从给定的RSQ提供输出时(例如,当一个或多个RSQ为空时)——这可以从该给定的RSQ的分派输出检测出来,并且当统一RSQ302有至少一个指令准备好执行时,MUX310–320可被控制(例如由绕过系统212控制)来选择绕过输出334–338中的一个或多个以使得统一RSQ302可直接将准备好的指令提供给执行单元112中相应的那些执行单元。在M=6的替换实施例中,每个绕过输出334–338可各自包括两个输出,到MUX310–320的每一者有一个绕过输出。这样,统一RSQ302可输出每类指令的最多两个。在一个实施例中,多重分派RS301是根据奇-偶多重分派RS结构实现的。统一RSQ302和带有奇-偶选择的多重分派RS301的组合结构维持了统一RS和奇-偶多重分派RS结构的每一者的基本上所有优点并且减少或以其他方式最小化了它们的缺点。统一RSQ302如前所述充当前端溢出缓冲器功能。另外,融合结构可减少重播、重发射和RS满惩罚。融合结构可减少前端时序气泡,并且整体时序大幅改善,因为可以使每个RS结构更小。另外,当统一RSQ302内的任何一个或多个指令准备好直接分派到执行单元112时,用RSQ304–308实现的多重分派RS301可被绕过。在另一实施例中,多重分派RS301是根据第一/第二最旧多重分派RS结构实现的。图4是根据另一实施例的融合RS模块108的简化框图,其中包括主RS204和实现次RS208的分割RS402。主RS204可实现为与图3所示类似的统一RSQ,或者由如前所述的任何其他RS结构实现。为了清晰从图4中省略了存在的若干细节,例如寄存器模块216。执行单元112是按类似方式配置的,包括一对FPEU322和324、一对LSEU326和328以及一对INEU330和332。绕过系统212是以类似的方式用MUX310–320实现的,只不过MUX310的输出被耦合来向FPEU322提供指令,MUX312的输出被耦合来向LSEU326提供指令,MUX314的输出被耦合来向INEU330提供指令,MUX316的输出被耦合来向INEU324提供指令,MUX318的输出被耦合来向LSEU328提供指令,并且MUX332的输出被耦合来向INEU332提供指令。分割RS402对于每个执行单元包括单独的RSQ,包括具有耦合到MUX310的一个输入的输出的FP1RSQ(包括提供到MUX310的控制输入的控制信号),具有耦合到MUX312的一个输入的输出的LS1RSQ(包括提供到MUX312的控制输入的控制信号),具有耦合到MUX314的一个输入的输出的IN1RSQ(包括提供到MUX314的控制输入的控制信号),具有耦合到MUX316的一个输入的输出的FP2RSQ(包括提供到MUX316的控制输入的控制信号),具有耦合到MUX318的一个输入的输出的LS2RSQ(包括提供到MUX318的控制输入的控制信号),以及具有耦合到MUX320的一个输入的输出的IN2RSQ(包括提供到MUX320的控制输入的控制信号)。主RS204的推送输出206被提供到分割RS402的每个RSQ的输入。主RS204的绕过输出230被分布在MUX310–320的其他输入之间。主输出和绕过输出206和230的具体数目和配置可基于特定实现方式而变化。图5是根据另外一个实施例的融合RS模块108的简化框图,其中包括主RS204和实现次RS208的集群RS502。主RS204可实现为与图3所示类似的统一RSQ结构,或者由如前所述的任何其他RS结构实现。为了清晰从图5中省略了存在的若干细节,例如寄存器模块216。绕过系统212和执行单元112的配置方式与图4中对于分割RS情况所示的基本类似。集群RS502包括两个RS队列CL1RSQ和CL2RSQ,每个具有从主RS204的推送输出206接收指令的输入,用于从主RS204接收每种类型的一个或多个指令。CL1RSQ和CL2RSQ各自具有多个输出,其中每一个通过绕过系统212向执行单元112中相应的那些执行单元输出每类指令的最多一个,并且每个RSQ输出提供控制信号来控制相应的MUX。主RS204的绕过输出230以类似的方式被分布在MUX310–320的其他输入之间。推送输出和绕过输出206和230的具体数目和配置可基于特定实现方式而变化。虽然次RS208被示为用这里描述的RS结构中的选定一种(例如,多重分派、分割、集群)来实现,但次RS208也可用这些结构的组合来实现。图6是包括被示为RSQ602的传统RS结构的流水线600的简化框图。RSQ602表示单独用作唯一RS结构的已知RS结构中的任何一种。在图6中以单数形式示出和描述了信号路径,其中要理解通过流水线600可处理多个指令。例如,微处理器流水线在给定的时钟周期中发射最多四个指令并且分派最多六个指令是常见的。RAT106的输出向MUX202的一个输入并且向ROB110的一个输入发射指令。ROB110具有一个重发射输出,向锁存级606的输入提供重发射指令,锁存级606的输出被提供到MUX202的另一输入。包括锁存级606在内的每个锁存级包括被一同步时钟信号控制的多个锁存器,用以同步数据吞吐量。ROB110的输出响应于时钟通过锁存级606被锁存到MUX202。垂直虚线标示流水线600的同步级之间的边界。例如,与锁存级606和RAT106对齐的垂直虚线608表示RAT106和锁存级606的输出是彼此同步的并且是在同一时钟周期中提供的。RAT106和ROB110具有内部锁存级(未示出),用于提供与时钟信号同步的发射/重发射指令。对于MUX202,ROB110的输出落后RAT106的输出一个时钟周期。MUX202的输出被提供到另一锁存级610的输入,锁存级610的输出耦合到RSQ602的输入并且耦合到RSFULL逻辑612的输入。锁存级610同步被提供到RSQ602的发射/重发射指令并且确保流水线600的适当时序。RSFULL逻辑612从RSQ602接收RSQ602中的空条目的数目并且从锁存级610接收在当前周期期间要被存储到RSQ602中的指令的数目,从而确定并输出RS_FULL信号到另一锁存级614的输入。锁存级614的输出耦合到重发射指针计算器616的输入,重发射指针计算器616通过另一锁存级618向ROB110的另一输入提供重发射指针RPT。RSQ602的输出向寄存器模块216分派指令。至少与重发射模式相关的流水线级被分别标记为RI_E(锁存级618位于其中)、RI_A(锁存级618的输出)、RI_B(ROB110的输出)、RI_C(锁存级606的输出)和RI_D(RSFULL逻辑612位于其中,并且在锁存级610的输出处)。在普通操作期间,MUX202选择RAT106的输出,RAT106向RSQ602并且向ROB110发射指令(或指令标签)。RSQ602经由寄存器模块216将接收到的指令分派到执行单元112。如果RSQ602中的指令没有一个准备好被分派(例如,指令的操作数尚未准备好),则它们可累积在RSQ602中直到其变满为止。当RSQ602已满并且不能够接收更多指令时,RSQFULL逻辑612声明RS_FULL信号。当RS_FULL被声明时,MUX202被禁用并且不输出额外的指令。从RAT106发射的额外的指令会继续累积在ROB110内,如果RSQ602在充分数量的周期仍旧保持为满,则ROB110可变满。当RS_FULL信号被取消声明时(例如,在RS_FULL信号被声明后的一个周期后),流水线转换到重发射模式,其中MUX202改为经由锁存级606选择ROB110的输出。MUX202可不立即被切换,而是最终被切换用于重发射模式,如本文进一步描述。即使ROB110经由重发射路径(锁存级606、MUX202、锁存级610)向RSQ602“重发射”后续指令,指令也只被RSQ602按顺序接收,以使得其取得的下一个指令是RSQ602拒绝的第一指令。当RSFULL逻辑612在重发射级RI_D中取消声明RS_FULL信号时,被取消声明的RS_FULL信号经由锁存级614被传递到重发射指针计算器616。在级RI_E中的下一时钟周期中,重发射指针计算器616确定相应的重发射指针RPT。在级RI_A中的下一时钟周期中,RPT经由锁存级618被传递到ROB110。重发射指针RPT指向ROB110内的与被RSQ602拒绝的第一指令相对应的指令条目,从而操作可从该指令起继续进行。在级Ri_B中的下一时钟周期中,根据RPT可从ROB110读取该第一被拒指令。在级RI_C中的下一时钟周期中,由MUX202从锁存级606输出第一指令(第一被拒指令)并且由ROB110输出第二指令。在下一时钟周期中,第一指令再次被呈现给RSQ602。注意,从RS_FULL信号被取消声明起直到第一指令最终被提供回到RSQ602的输入为止要花至少4个时钟周期(级RI_E、RI_A、RI_B、RI_C)。另外,如果RSQ602再次为满,则若干个后续指令可经由ROB110在重发射路径中循环,直到RSQ602不再满为止。最终,当(ROB110的)ROB指针变得等于(RAT106的)RAT指针时,操作恢复到普通操作,其中MUX202被切换回到RAT106的输出。传统流水线的重发射路径在RSQ602取消声明RS_FULL时插入“气泡”或延迟。即使RS_FULL在被声明之后的下一个时钟周期就被取消声明,重发射指针RPT也首先被计算并被提供到ROB110,ROB110随后在下一周期中可输出相应的(第一被拒)指令,这在最终被提供回到RSQ602的输入之前要再花两个时钟周期。因此对于操作的重发射模式,最短的重发射延迟是至少四个时钟周期。另外,如果RSQ602再次为满,则插入额外的延迟周期。图7是包括根据本发明的一个实施例的融合RS结构的流水线700的简化框图。流水线700中的与流水线600的组件相似的组件具有相同的标号。流水线700的前端是相似的,包括以类似方式耦合的RAT106、ROB110、MUX202、锁存级606、重发射指针计算器616和锁存级618。RSQ602被融合RS模块108替换,其中锁存级610被具有内部锁存级(未示出)的主RS204替换以在普通操作期间符合相似的时序。重发射流水线级RI_A(锁存级618的输出)、RI_B(ROB110的输出)和RI_C(锁存级606的输出)以相似的方式命名。在此情况中,重发射流水线级RI_E被重命名为RI_D(或者不然的话RI_D被移动并且RI_E被消除)。在级RI_C中,RSFULL逻辑612根据主RS204中的空条目的数目和在当前周期期间将从MUX202存储到主RS204中的指令的数目来确定RS_FULL信号。RSFULL信号被提供到锁存级614,锁存级614的输出以类似的方式被提供回到重发射指针计算器616的输入,只不过锁存级614与主RS204对齐。这样,与流水线600相比,在RS_FULL信号的取消声明之后,重发射指针RPT更早一个周期被重发射指针计算器616计算(在重发射级RI_D中)并被提供到ROB110(在重发射级RI_A中)。融合RS模块108也包括次RS208,其具有接收主RS204的推送输出206的输入。次RS208的分派输出210被提供到绕过系统212的第一输入。主RS204的绕过输出230被提供到绕过系统212的第二输入,绕过系统212具有向寄存器模块216提供分派的指令的输出,用于如前所述向执行单元112提供指令。绕过系统212根据在当前时钟周期期间在次RS208中是否有任何指令准备好被分派来在次RS208的分派输出210和绕过输出230之间作出选择来分派指令。融合RS模块108可根据本文描述的任何配置实现,例如图2–5所示的那些。当次RS208已满或者因其他原因不能从任何RSQ分派指令时,并且如果主RS204具有至少一个指令准备好分派,则主RS204可经由绕过输出230分派至少一个指令(包括如前所述的部分绕过分派)。另外,当次RS208已满时,指令继续被发射到主RS204中,直到次RS208不再为满为止或者直到主RS204变满为止。当主RS208也已满时,RS_FULL信号被声明,然后被取消声明以发起重发射模式。当RS_FULL信号由于次RS208不再为满而被取消声明时,取消声明的RS_FULL信号经过RSFULL逻辑612并且通过锁存级614被锁存,重发射指针计算器616根据取消声明的RS_FULL信号计算重发射指针RPT,并且重发射指针RPT通过锁存级618被锁存并被提供到ROB110。当次RS208从满变成不满时,不是必须在三个时钟周期(级RI_D、RI_A和RI_B)期间等待来自ROB110的重发射指令,而是指令可被从主RS204推送到次RS208中以在来自ROB110的重发射指令到达之前喂给饥饿的次RS208。流水线700的重发射操作与流水线600的类似,除了重发射路径具有更少的延迟以外。例如,如果RS_FULL在被声明之后的下一个时钟周期就被取消声明,则重发射指针RPT被计算并被提供到ROB110,ROB110随后在下一周期中可输出相应的(第一被拒)指令,这在最终被提供回到主RS204的输入之前只要再花一个时钟周期。最短的重发射延迟因此只是三个时钟周期。另外,一旦次RS208不再满,主RS204就可开始在重发射过程期间向次RS208喂指令。到执行单元112的指令分派延迟因此被减少或者被最小化。图8是图示出根据一个实施例被配置为具有移位特征的RSQ802的主RS204的操作的一对简化图。RSQ802可用在包括统一RS结构在内的任何类型的RS结构内。左侧的第一图示出了当S_RSFULL被声明以指示出次RS208已满以便指令可被累积在主RS204中(这里是RSQ802)时RSQ802的操作。如图所示,指令2–7被存储在RSQ802的前六个条目1–6内,其中每个有效指令被标记以有效值“V”。额外的指令8–10正被从MUX202发射到RSQ802,例如从RAT106或ROB110发射。在S_RSFULL保持被声明的同时,指令8–10即将要分别被存储到RSQ802的条目7–9中。右侧的第二图示出了当S_RSFULL被取消声明以指示出次RS208不再为满以使得指令被推送到次RS208中时RSQ802的操作。在此情况中,每次从RSQ802推送出最多四个指令中,RSQ802每次也移动RSQ802内的最多四个指令以维持排序。与第一图一样,指令2–7号被存储在前六个条目1–6内,并且额外的指令8–10正被推送到RSQ802中。然而,在此情况下,S_RSFULL信号被取消声明以使得指令2–5被从队列弹出以推送到次RS208中。不是将额外的指令8–10分别推送到条目7–9中,指令6–7被向上移动四个位置到最前的两个条目1–2,并且额外的指令8–10改为被推送到RSQ802的现在为空的条目3–5中。移位特征使得指令能够累积在RSQ802内,而不是被重发射回到ROB110,从而减少了前端气泡。另外,当经由绕过输出230分派任何数目的指令时,移位特征用于将更低(或更新)的指令推送到空的条目中以维持顺序并且减少流水线中的气泡。另外,主RS204从MUX202接收N个(例如,在图8中N=3)发射指令,但向次RS208推送最多P个(例如,在图8中P=4)发射指令。P可大于N,也就是说,MUX202在给定周期期间可以只输出3个指令,但次RS208在该给定周期期间仍可接收到4个指令,从而挤压掉了从像指令翻译器104这样的前端流水线引入的指令之间的气泡。图9是图示出根据一个实施例的具有总共12个条目并且假定每次推送出4个指令的RSQ802的移位特征的简化图。如左侧的第一图所示,对于要存储在RSQ802的条目2906处的下一指令,RSQ802的选择逻辑902在发射指令1和2和RSQ802的条目6904处的指令之间作出选择。如果条目1已满,但条目2为空(或者正被清空),则指令1被选择。如果条目1和2为空(或者正被清空),则指令2被选择。否则,条目6904处的指令被选择。类似地,如中间的图所示,对于RSQ802的条目5912,选择逻辑908对于要存储在RSQ802的条目5912处的下一指令在发射指令1–4和条目9910处的指令之间作出选择。选择的条目取决于RSQ802的当前条目中哪些当前为空或者正被清空。如右侧的图所示,当有总共12个条目时,条目10916被略微不同地操作。在此情况中,选择逻辑914对于要存储在RSQ802的条目10916处的下一指令在发射指令1–4之间作出选择。由于对于最多12个条目推送4个条目,因此对于条目10916没有移位条目。以上描述被给出来使得本领域普通技术人员能够如特定应用及其要求的情境内所规定的那样作出并使用本发明。虽然已参考本发明的某些优选版本相当详细地描述了本发明,但其他版本和变化是可能的并且被设想到了。对优选实施例的各种修改对于本领域技术人员将是明显的,并且这里定义的一般原因可被应用到其他实施例。例如,这里描述的电路可按任何适当的方式实现,包括逻辑器件或电路等等。本领域技术人员应当明白,他们可容易使用公开的概念和具体实施例作为用于设计或修改用于实现本发明的相同目的其他结构的基础,而不脱离本发明的精神和范围。因此,本发明并不打算被限于这里示出和描述的特定实施例,而是应符合与这里公开的原因和新颖特征一致的最宽范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1