CN106557301B - 经由多级保留站结构的发射指令分派方法 - Google Patents
经由多级保留站结构的发射指令分派方法 Download PDFInfo
- Publication number
- CN106557301B CN106557301B CN201510770611.9A CN201510770611A CN106557301B CN 106557301 B CN106557301 B CN 106557301B CN 201510770611 A CN201510770611 A CN 201510770611A CN 106557301 B CN106557301 B CN 106557301B
- Authority
- CN
- China
- Prior art keywords
- reservation station
- instruction
- firing order
- main
- rsq
- 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
- 238000010304 firing Methods 0.000 title claims abstract description 65
- 238000000034 method Methods 0.000 title abstract description 8
- 238000003860 storage Methods 0.000 claims abstract description 12
- 230000009897 systematic effect Effects 0.000 claims 1
- 230000004927 fusion Effects 0.000 description 41
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 10
- 230000011218 segmentation Effects 0.000 description 9
- 230000008878 coupling Effects 0.000 description 8
- 238000010168 coupling process Methods 0.000 description 8
- 238000005859 coupling reaction Methods 0.000 description 8
- 238000006073 displacement reaction Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- -1 O-O- O Chemical class 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 2
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- 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/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/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/3838—Dependency mechanisms, e.g. register scoreboarding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一种经由多级保留站(RS)结构的发射指令分派方法,包括:藉由主RS存储接收的发射指令至至少一个主RS队列;藉由所述主RS将所述至少一个主RS队列中存储的所述发射指令推送到次RS;藉由所述主RS分派所述至少一个主RS队列中存储的所述发射指令中的准备好被分派的至少一个发射指令;藉由所述次RS存储从所述主RS接收的所述发射指令至至少一个次RS队列;藉由所述次RS分派所述至少一个次RS队列中存储的所述发射指令中的准备好被分派的至少一个发射指令;以及藉由绕过系统在所述次RS所分派的发射指令和所述主RS所分派的发射指令之间进行选择来分派所述发射指令。
Description
本申请是申请日为2015年9月25日、申请号为201510624996.8、发明名称为“具有融合保留站结构的微处理器”的发明专利申请的分案申请。
技术领域
本发明概括而言涉及在微处理器中发射和分派指令的过程,更具体而言涉及更高效地分派指令来供微处理器执行的融合保留站(fused reservation stations)模块,并且改善了性能。
背景技术
许多现代微处理器是超标量的,其中它们包括多个执行单元并且在单个时钟周期中能够分派多个指令到这些执行单元。许多现代微处理器也运行乱序(out-of-order,O-O-O)执行。也就是说,微处理器可不按软件程序的指令指定的顺序执行指令。超标量乱序执行微处理器通常尝试维持未完成指令的相对大的池以便它们可利用更大量的指令并行度。
微处理器执行相应指令集架构的指令,例如x86指令集架构等等。在许多这种微处理器中,经常被称为宏指令的指令集架构的指令首先被翻译成被发射到保留站模块的微指令(或者微操作或“μop”),保留站模块进而将指令分派到执行单元。微指令在这里被更概括地简称为指令。指令也被发射到重排序缓冲器(reorder buffer,ROB),其确保指令的按序引退(retirement)。
保留站(reservation station,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随后被提供到寄存器别名表(register alias table,RAT)106(亦称为“重命名”表),RAT 106生成微指令132的微指令的相关性(dependency)并且将微指令132按程序顺序发射到融合RS模块108和重排序缓冲器(ROB)110。ROB 110对于从RAT 106发射的每个微指令存储一条目。融合RS模块108将微指令分派到多个执行单元112中的适当的一个。
从RAT 106发射的微指令(ISSUE)通常可被称为微指令,但在这里被更概括地简称为“指令”。融合RS模块108在其已满或者因其他原因不能够从RAT 106接收额外的指令时声明一个满指示信号,示为RS_FULL。ROB 110通常具有更大的结构,在融合RS模块108已满之后可继续接收指令。最终,融合RS模块108能够将指令分派到执行单元112以使得其能够接收更多的指令。在融合RS模块108指示出其不再满之后(例如当信号RS_FULL被取消声明时),指令从ROB 110临时性地被重发射(REISSUE)到融合RS模块108。当ROB 110跟上了RAT106时,再次从RAT 106发射指令。
如本文进一步描述的,融合RS模块108具有更多数量的乱序(O-O-O)窗口,从而不会那么经常地变满。融合RS模块108更小并且具有更高效的设计,从而具有改善的时序。融合RS模块108表现出增大的吞吐量并从而表现出更高的性能。融合RS模块108可减少重播并且可减少其确实变满时的惩罚。融合RS模块108可减少会插入流水线延迟的前端空间或“气泡”。
图2是根据一个实施例的融合RS模块108的更详细框图,该融合RS模块108耦合在RAT 106和ROB 110与执行单元112之间。RAT 106具有被提供到ROB 110的输入的输出。复用器(MUX)202具有与RAT 106的输出耦合的第一输入,具有与ROB 110的输出耦合的第二输入,并且具有与融合RS模块108内的主RS 204的输入耦合的输出。主RS 204具有与次RS 208的输入耦合的推送输出206。次RS 208具有被提供到绕过系统212的输入的分派输出210,绕过系统212具有与寄存器模块216的输入耦合的分派输出214。如本文进一步描述的,主RS204还包括被提供到绕过系统212的输入的绕过输出230,并且次RS 208向绕过系统提供信号S_NONDIS。
寄存器模块216被示为介于融合RS模块108与执行单元112之间,用于提供相应的指令操作数和指令操作码。寄存器模块216可包括微处理器100的任何寄存器,例如物理寄存器文件(physical register file,PRF)、ROB 110的寄存器文件、通用寄存器(generalpurpose register,GPR)等等,并且还包括用于收集指令的信息来提交给执行单元112的电路和逻辑。在一个实施例中,融合RS模块108只处理或操作个体指令的“标签”而不是指令本身。这使得能够减小实现融合RS模块108的电路的大小,因为其存储并处理减少量的信息。寄存器模块216使用每个指令的标签来收集指令信息,包括指令操作数和指令操作码等等,并且将收集的指令信息提供给执行单元112。由于每个标签代表相应的指令,所以该信息在这里被简称为“指令”。
在操作中,主RS 204把从RAT 106或ROB 110接收的发射指令推送到次RS 208。当次RS 208已满并且不能接收从主RS 204推送的更多指令时,其向主RS 204声明S_RSFULL信号。S_RSFULL信号是融合RS模块108内部的并且是与RS_FULL信号(图1)不同的信号。当S_RSFULL信号被声明时,主RS 204作为溢出缓冲器操作来接收并存储额外的发射指令。当次RS 208从满变成未满时,其取消声明S_RSFULL并且主RS 204将其内存储的任何发射指令推送到次RS 208。如果当主RS 204也变满时次RS 208仍然为满,则RS模块108向ROB 110声明RS_FULL信号以表明其不能接收另一发射指令。在该情况下,指令仅被从RAT 106发射到ROB110,但不被提供给RS模块108。最终,当信号RS_FULL被取消声明时(由主RS 204或次RS 208的一些分派操作引起),融合RS模块108切换到重发射模式,其中指令被从ROB 110重发射(REISSUE)到融合RS模块108。从RS_FULL信号被取消声明直到来自ROB 110的重发射指令到达为止,期间会有多个时钟周期的延迟。在该延迟期间,主RS 204可在来自ROB 108的重发射指令到达之前推送存储的发射指令来喂给次RS 208。这样,隐藏了从重发射流水线引入的气泡。
绕过系统212监视次RS 208的操作来判定何时采用绕过功能。如果次RS 208在当前周期期间没有指令要分派,则绕过系统212选择主RS 204的绕过输出230,而如果主RS204在当前周期期间有一个或多个指令准备好被分派,则这些指令可被直接分派到执行单元112。绕过系统212根据信号S_NONDIS判定次RS 208在当前周期期间是否有指令要分派,信号S_NONDIS指示出次RS 208中存储的指令在上个周期期间没有一个准备好。绕过功能可以是部分的,意思是即使次RS 208在给定周期中分派指令,但没有分派一个或多个类型的任何指令(缺失类型),则主RS 204可经由绕过输出230在该周期中分派(一个或多个)缺失类型的一个或多个指令。如本文进一步描述的,绕过功能提供了额外的O-O-O窗口来改善整体RS吞吐量和性能。
注意,通过微处理器100的流水线传达发射和分派的指令的每个输入和输出可包括用于每次传达多个指令或每个时钟周期传达多个指令的多个输入或输出路径。在图示的实施例中,例如,RAT 106和ROB 110各自向融合RS模块108输出最多“N”个指令,其中“N”是正整数。注意,本文使用的短语“最多”打算包括任何给定时钟周期期间的少于指示数目的指令,包括零(0)个指令。如本文进一步描述,基于操作是在普通模式(发射)还是重发射模式中来控制MUX 202,并且MUX 202将所选择的N个指令提供给主RS 204。注意,临时存储在融合RS模块108中的指令即使被从ROB 110重发射也是“发射”的指令。主RS 204接收最多N个发射指令并且可向次RS 208推送最多“P”个发射指令。次RS 208接收最多P个发射指令并且可向绕过系统212分派最多“Q”个指令。主RS 204或者可以经由绕过输出230直接向绕过系统212分派最多“M”个指令。绕过系统212向寄存器模块216分派最多Q个指令,寄存器模块216向执行单元112分派该最多Q个指令。数字“M”、“P”和“Q”也是正整数。
融合RS模块108的分派输出214以及寄存器模块216的输出都是根据个体执行单元112的每一者的数目和类型来配置的。如图所示,执行单元112包括Q个执行单元EU1 218,EU2 220,…,EUQ 222。每个执行单元可根据用于处理相应指令类型的若干类型中的任何一种来实现,例如用于处理浮点指令的浮点(floating point,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执行单元可被包含在存储器顺序缓冲器(memoryorder buffer,MOB)(未示出)等内,包括加载/存储执行流水线或者独立的加载和存储执行流水线。MOB一般操作到外部系统存储器(未示出)的存储器型指令。外部系统存储器可经由数据高速缓存(例如,L2数据高速缓存,未示出)和总线接口单元(BIU,未示出)与微处理器100(和MOB)接口。每个IN执行单元可包括至少一个整数算术/逻辑单元(arithmetic/logicunit,ALU)等等。如图1所示,执行单元112可将其结果提供给ROB 110,ROB 110确保指令的按序引退。
数字N、M、P和Q的每一者的实际值取决于微处理器100的特定配置。在一个实施例中,例如,取决于RAT 106和ROB 110的配置和操作,N可以是3或者N可以是4。在一个实施例中,M可以是3,用于分派每种类型的指令(FP、LS、IU)的至多一个,或者M可以是6,用于分派每种类型的指令的至多两个,虽然设想到了替换数字。数字P和Q取决于主RS 204和次RS208的类型和配置以及执行单元112的数目和类型。
主RS 204和次RS 208各自实现有至少一种类型的RS结构,其中每个RS结构包括至少一个RS队列(RSQ)。每个RSQ是用于临时存储发射的指令以便最终分派到执行单元112的缓冲器之类的。每个RSQ具有用于存储发射的指令的多个条目,其中每个RSQ中存储的指令的类型取决于RS结构的类型。有许多不同类型的RS结构可用于主RS 204和次RS 208。主RS204和次RS 208可各自包括不同类型的RS结构的组合。
统一RS结构只包括一个统一RSQ,该统一RSQ可存储任何指令类型的多个指令。基本上,指令被按顺序接收并存储在统一RSQ的条目中,虽然指令可被乱序地从统一RSQ“弹出”或以其他方式移除。由于只有一个存储任何类型的指令的RSQ,所以统一RSQ与其他RS结构相比具有发射指令的优秀进入效率和良好的吞吐量。然而,当单独使用统一RSQ来实现微处理器的RS功能时,用统一RSQ难以实现整体时序。另外,当单独使用统一RSQ时,从统一RSQ的分派功能是有点复杂的。统一RSQ的分派逻辑必须判定哪些指令准备好分派,必须判定哪些执行单元准备好接收指令,并且必须区分不同类型的指令来分派到适当的执行单元。当在微处理器100中有许多执行单元时,这些因素变得更加困难。
当用作融合RS模块108的主RS 204时,统一RS结构的优秀进入效率可以被非常有利地使用。另外,分派逻辑可被简化,因为大多数存储的指令不被分派到执行单元,而只是被推送到次RS 208。分派逻辑还可判定哪些指令准备好分派,并且这些指令在次RS 208在给定时钟周期中没有指令要分派时可被绕过系统212选择来经由绕过输出230分派。
分割RS结构包括多个单独的分割RSQ,其中每一者对应于执行单元112中的至少一者。因此,每个分割RSQ只存储特定类型的发射指令。例如,分割RS结构包括一个或多个IN分割RSQ、一个或多个FP RSQ以及一个或多个存储器型(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结构,例如标题为“ParallelizedMultiple Dispatch System And Method For Ordered Queue Arbitration”的美国专利申请14/643,051号中描述的那种,该美国申请被全部并入在此。奇-偶多重分派RS结构具有选择功能,其中在每个内部RSQ内将指令是划分成单独的奇队列和偶队列,从而在任何给定周期中对于每个内部RSQ选择偶指令和奇指令的两者来输出。奇-偶多重分派RS结构提供了充分的效率,良好的时序和吞吐量,并且可以用相对简单的逻辑电路实现。当单独用作处理器的RS结构时,奇-偶多重分派RS结构比第一/第二最旧多重分派RS结构提供更好的性能。
如本文进一步描述的,奇-偶多重分派RS结构包括多个RSQ,每个在内部被细分为两组,用于在每个时钟周期中分派至多两个指令(奇/偶)。在更一般的情况中,每个内部RS队列可按更大的数字来细分,例如细分为3或4或更多部分,用于在每个时钟周期中分派甚至更多数量的指令。
如图2所示,融合RS模块108包括多个(或两个)RS级,这些RS级被堆叠或顺序地排序来存储和分派发射的指令。融合RS模块108提供重大益处,其中某些RS结构的优点可被增强,而缺点可被减小或者以其他方式最小化。前端主RS 204与次RS 208的组合与单独使用任何RS结构相比提供了改善的整体性能。主RS 204可提供前端溢出缓冲器功能,用于缓冲额外的发射指令来减少当次RS 208已满(例如,次RS 208的一个RSQ已满)时转变到重发射模式的发生。如本文进一步描述的,融合(多级或堆叠式)结构可减少重播、重发射和RS满惩罚。融合结构因为改善的缓冲功能可减少前端时序气泡。可以改善整体时序,因为可以用更简单的逻辑使主RS 204和次RS 208两者更小。另外,当次RS 208变满或因其他原因不能够符合时序时,那么当主RS 204内的任何一个或多个指令准备好被直接分派到执行单元112时,次RS 208可经由绕过输出230被绕过。
主RS 204和次RS 208可各自以任何上述RS结构实现,或者以甚至这种RS结构的组合实现。统一RS结构与其他RS结构相比可具有优秀的进入效率,因此其是实现主RS 204的良好选择。集群RS结构与其余RS结构相比也具有更好的进入效率,因此其也可用作主RS204。虽然可以使用统一和集群RS结构的组合,但这样可增大复杂度,从而可能降低整体优点。次RS 208可利用其他RS结构中的任何一个或多个来实现,包括利用其他RS结构的组合来实现。
图3是根据一个实施例的融合RS模块108的框图,其具有实现主RS 204的统一RSQ302和实现次RS 208的多重分派RS 301。多重分派RS 301包括用于FP指令的第一RSQ 304、用于存储器(加载和存储)指令(LS)的第二RSQ 306和用于整数指令(IN)的第三RSQ 308。统一RSQ 302接收至多N个指令并且在任何给定周期中推送最多P个指令,其中RSQ 304、306和308(304–308)总地具有P个输入用于每次接收最多P个指令。在任何给定周期中,从统一RSQ302推送的最多P个指令可全都被提供给RSQ 304–308中的任何一者,或者可依据被推送的指令的类型按任何方式来分发。
如图2所示,次RS 208具有Q个输出,用于对Q个执行单元112中的每一者分派最多一个指令。在图3的图示实施例中,有六个执行单元(EU)322、324、326、328、330、332(322–332),每种类型(FP、LS、IN)包括两个,其中要理解可包括不同数目的执行单元112和不同类型。在此情况中,Q=6,并且每个RSQ 304–308被配置为每次分派给定类型的最多2个指令。注意,在替换配置中,每个RSQ 304–308可被实现为每次分派多于两个指令。
绕过系统212被示为由六个MUX 310、312、314、316、318和320(310–320)实现,用于向执行单元112每次分派最多6个指令(对于Q=6)。RSQ 304的第一输出被提供到MUX 310的第一输入,并且RSQ 304的第二输出被提供到MUX 312的第一输入。以类似的方式,RSQ 306的第一输出被提供到MUX 314的第一输入,RSQ 306的第二输出被提供到MUX 316的第一输入,RSQ 308的第一输出被提供到MUX 318的第一输入,并且RSQ 308的第二输出被提供到MUX 320的第一输入。RSQ 304–308的每一者的每个输出包括控制信号,用于控制MUX 310–312中的相应一个来在RSQ 304–308的相应输出和相应的绕过输出230之间作出选择。
MUX 310的输出向FP执行单元322提供最多一个指令(经由寄存器模块216),MUX312的输出向FP执行单元324提供最多一个指令(经由寄存器模块216),MUX 314的输出向LS执行单元326提供最多一个指令(经由寄存器模块216),MUX 316的输出向LS执行单元328提供最多一个指令(经由寄存器模块216),MUX 318的输出向IN执行单元330提供最多一个指令(经由寄存器模块216),并且MUX 320的输出向IN执行单元332提供最多一个指令(经由寄存器模块216)。
统一RSQ 302具有3个绕过输出(M=3)334、336和338(334–338),用于每次提供3种类型的最多3个绕过指令,其中第一绕过输出334耦合到MUX 310和312的每一者的第二输入,用于分派FP类型的绕过指令,第二绕过输出336被提供到MUX 314和316的每一者的第二输入,用于分派LS类型的绕过指令,并且第三绕过输出338被提供到MUX 318和320的每一者的第二输入,用于分派IN类型的绕过指令。从而,统一RSQ 302在任何给定周期中可直接分派每种类型的指令(FP、LS、IN)的最多一个。当多重分派RS 301不能从给定的RSQ提供输出时(例如,当一个或多个RSQ为空时)——这可以从该给定的RSQ的分派输出检测出来,并且当统一RSQ 302有至少一个指令准备好执行时,MUX 310–320可被控制(例如由绕过系统212控制)来选择绕过输出334–338中的一个或多个以使得统一RSQ 302可直接将准备好的指令提供给执行单元112中相应的那些执行单元。
在M=6的替换实施例中,每个绕过输出334–338可各自包括两个输出,到MUX 310–320的每一者有一个绕过输出。这样,统一RSQ 302可输出每类指令的最多两个。
在一个实施例中,多重分派RS 301是根据奇-偶多重分派RS结构实现的。统一RSQ302和带有奇-偶选择的多重分派RS 301的组合结构维持了统一RS和奇-偶多重分派RS结构的每一者的基本上所有优点并且减少或以其他方式最小化了它们的缺点。统一RSQ 302如前所述充当前端溢出缓冲器功能。另外,融合结构可减少重播、重发射和RS满惩罚。融合结构可减少前端时序气泡,并且整体时序大幅改善,因为可以使每个RS结构更小。另外,当统一RSQ 302内的任何一个或多个指令准备好直接分派到执行单元112时,用RSQ 304–308实现的多重分派RS 301可被绕过。
在另一实施例中,多重分派RS 301是根据第一/第二最旧多重分派RS结构实现的。
图4是根据另一实施例的融合RS模块108的简化框图,其中包括主RS 204和实现次RS 208的分割RS 402。主RS 204可实现为与图3所示类似的统一RSQ,或者由如前所述的任何其他RS结构实现。为了清晰从图4中省略了存在的若干细节,例如寄存器模块216。执行单元112是按类似方式配置的,包括一对FP EU 322和324、一对LS EU 326和328以及一对INEU 330和332。绕过系统212是以类似的方式用MUX 310–320实现的,只不过MUX 310的输出被耦合来向FP EU 322提供指令,MUX 312的输出被耦合来向LS EU 326提供指令,MUX 314的输出被耦合来向IN EU 330提供指令,MUX 316的输出被耦合来向IN EU 324提供指令,MUX 318的输出被耦合来向LS EU 328提供指令,并且MUX 332的输出被耦合来向IN EU 332提供指令。
分割RS 402对于每个执行单元包括单独的RSQ,包括具有耦合到MUX 310的一个输入的输出的FP1 RSQ(包括提供到MUX 310的控制输入的控制信号),具有耦合到MUX 312的一个输入的输出的LS1 RSQ(包括提供到MUX 312的控制输入的控制信号),具有耦合到MUX314的一个输入的输出的IN1 RSQ(包括提供到MUX 314的控制输入的控制信号),具有耦合到MUX 316的一个输入的输出的FP2 RSQ(包括提供到MUX 316的控制输入的控制信号),具有耦合到MUX 318的一个输入的输出的LS2 RSQ(包括提供到MUX 318的控制输入的控制信号),以及具有耦合到MUX 320的一个输入的输出的IN2 RSQ(包括提供到MUX 320的控制输入的控制信号)。主RS 204的推送输出206被提供到分割RS 402的每个RSQ的输入。主RS 204的绕过输出230被分布在MUX 310–320的其他输入之间。主输出和绕过输出206和230的具体数目和配置可基于特定实现方式而变化。
图5是根据另外一个实施例的融合RS模块108的简化框图,其中包括主RS 204和实现次RS 208的集群RS 502。主RS 204可实现为与图3所示类似的统一RSQ结构,或者由如前所述的任何其他RS结构实现。为了清晰从图5中省略了存在的若干细节,例如寄存器模块216。绕过系统212和执行单元112的配置方式与图4中对于分割RS情况所示的基本类似。集群RS 502包括两个RS队列CL1 RSQ和CL2 RSQ,每个具有从主RS 204的推送输出206接收指令的输入,用于从主RS 204接收每种类型的一个或多个指令。CL1 RSQ和CL2 RSQ各自具有多个输出,其中每一个通过绕过系统212向执行单元112中相应的那些执行单元输出每类指令的最多一个,并且每个RSQ输出提供控制信号来控制相应的MUX。主RS 204的绕过输出230以类似的方式被分布在MUX 310–320的其他输入之间。推送输出和绕过输出206和230的具体数目和配置可基于特定实现方式而变化。
虽然次RS 208被示为用这里描述的RS结构中的选定一种(例如,多重分派、分割、集群)来实现,但次RS 208也可用这些结构的组合来实现。
图6是包括被示为RSQ 602的传统RS结构的流水线600的简化框图。RSQ 602表示单独用作唯一RS结构的已知RS结构中的任何一种。在图6中以单数形式示出和描述了信号路径,其中要理解通过流水线600可处理多个指令。例如,微处理器流水线在给定的时钟周期中发射最多四个指令并且分派最多六个指令是常见的。RAT 106的输出向MUX 202的一个输入并且向ROB 110的一个输入发射指令。ROB 110具有一个重发射输出,向锁存级606的输入提供重发射指令,锁存级606的输出被提供到MUX 202的另一输入。包括锁存级606在内的每个锁存级包括被一同步时钟信号控制的多个锁存器,用以同步数据吞吐量。ROB 110的输出响应于时钟通过锁存级606被锁存到MUX 202。垂直虚线标示流水线600的同步级之间的边界。例如,与锁存级606和RAT 106对齐的垂直虚线608表示RAT 106和锁存级606的输出是彼此同步的并且是在同一时钟周期中提供的。RAT 106和ROB 110具有内部锁存级(未示出),用于提供与时钟信号同步的发射/重发射指令。对于MUX 202,ROB 110的输出落后RAT 106的输出一个时钟周期。
MUX 202的输出被提供到另一锁存级610的输入,锁存级610的输出耦合到RSQ 602的输入并且耦合到RS FULL逻辑612的输入。锁存级610同步被提供到RSQ 602的发射/重发射指令并且确保流水线600的适当时序。RS FULL逻辑612从RSQ 602接收RSQ 602中的空条目的数目并且从锁存级610接收在当前周期期间要被存储到RSQ 602中的指令的数目,从而确定并输出RS_FULL信号到另一锁存级614的输入。锁存级614的输出耦合到重发射指针计算器616的输入,重发射指针计算器616通过另一锁存级618向ROB 110的另一输入提供重发射指针RPT。RSQ 602的输出向寄存器模块216分派指令。至少与重发射模式相关的流水线级被分别标记为RI_E(锁存级618位于其中)、RI_A(锁存级618的输出)、RI_B(ROB 110的输出)、RI_C(锁存级606的输出)和RI_D(RS FULL逻辑612位于其中,并且在锁存级610的输出处)。
在普通操作期间,MUX 202选择RAT 106的输出,RAT 106向RSQ 602并且向ROB 110发射指令(或指令标签)。RSQ 602经由寄存器模块216将接收到的指令分派到执行单元112。如果RSQ 602中的指令没有一个准备好被分派(例如,指令的操作数尚未准备好),则它们可累积在RSQ 602中直到其变满为止。当RSQ 602已满并且不能够接收更多指令时,RSQ FULL逻辑612声明RS_FULL信号。当RS_FULL被声明时,MUX 202被禁用并且不输出额外的指令。从RAT 106发射的额外的指令会继续累积在ROB 110内,如果RSQ 602在充分数量的周期仍旧保持为满,则ROB 110可变满。
当RS_FULL信号被取消声明时(例如,在RS_FULL信号被声明后的一个周期后),流水线转换到重发射模式,其中MUX 202改为经由锁存级606选择ROB 110的输出。MUX 202可不立即被切换,而是最终被切换用于重发射模式,如本文进一步描述。即使ROB 110经由重发射路径(锁存级606、MUX 202、锁存级610)向RSQ 602“重发射”后续指令,指令也只被RSQ602按顺序接收,以使得其取得的下一个指令是RSQ 602拒绝的第一指令。当RS FULL逻辑612在重发射级RI_D中取消声明RS_FULL信号时,被取消声明的RS_FULL信号经由锁存级614被传递到重发射指针计算器616。在级RI_E中的下一时钟周期中,重发射指针计算器616确定相应的重发射指针RPT。在级RI_A中的下一时钟周期中,RPT经由锁存级618被传递到ROB110。重发射指针RPT指向ROB 110内的与被RSQ 602拒绝的第一指令相对应的指令条目,从而操作可从该指令起继续进行。在级Ri_B中的下一时钟周期中,根据RPT可从ROB 110读取该第一被拒指令。在级RI_C中的下一时钟周期中,由MUX 202从锁存级606输出第一指令(第一被拒指令)并且由ROB 110输出第二指令。在下一时钟周期中,第一指令再次被呈现给RSQ602。注意,从RS_FULL信号被取消声明起直到第一指令最终被提供回到RSQ 602的输入为止要花至少4个时钟周期(级RI_E、RI_A、RI_B、RI_C)。另外,如果RSQ 602再次为满,则若干个后续指令可经由ROB 110在重发射路径中循环,直到RSQ 602不再满为止。最终,当(ROB 110的)ROB指针变得等于(RAT 106的)RAT指针时,操作恢复到普通操作,其中MUX 202被切换回到RAT 106的输出。
传统流水线的重发射路径在RSQ 602取消声明RS_FULL时插入“气泡”或延迟。即使RS_FULL在被声明之后的下一个时钟周期就被取消声明,重发射指针RPT也首先被计算并被提供到ROB 110,ROB 110随后在下一周期中可输出相应的(第一被拒)指令,这在最终被提供回到RSQ 602的输入之前要再花两个时钟周期。因此对于操作的重发射模式,最短的重发射延迟是至少四个时钟周期。另外,如果RSQ 602再次为满,则插入额外的延迟周期。
图7是包括根据本发明的一个实施例的融合RS结构的流水线700的简化框图。流水线700中的与流水线600的组件相似的组件具有相同的标号。流水线700的前端是相似的,包括以类似方式耦合的RAT 106、ROB 110、MUX 202、锁存级606、重发射指针计算器616和锁存级618。RSQ 602被融合RS模块108替换,其中锁存级610被具有内部锁存级(未示出)的主RS204替换以在普通操作期间符合相似的时序。重发射流水线级RI_A(锁存级618的输出)、RI_B(ROB 110的输出)和RI_C(锁存级606的输出)以相似的方式命名。在此情况中,重发射流水线级RI_E被重命名为RI_D(或者不然的话RI_D被移动并且RI_E被消除)。在级RI_C中,RSFULL逻辑612根据主RS 204中的空条目的数目和在当前周期期间将从MUX 202存储到主RS204中的指令的数目来确定RS_FULL信号。RS FULL信号被提供到锁存级614,锁存级614的输出以类似的方式被提供回到重发射指针计算器616的输入,只不过锁存级614与主RS 204对齐。这样,与流水线600相比,在RS_FULL信号的取消声明之后,重发射指针RPT更早一个周期被重发射指针计算器616计算(在重发射级RI_D中)并被提供到ROB 110(在重发射级RI_A中)。
融合RS模块108也包括次RS 208,其具有接收主RS 204的推送输出206的输入。次RS 208的分派输出210被提供到绕过系统212的第一输入。主RS 204的绕过输出230被提供到绕过系统212的第二输入,绕过系统212具有向寄存器模块216提供分派的指令的输出,用于如前所述向执行单元112提供指令。绕过系统212根据在当前时钟周期期间在次RS 208中是否有任何指令准备好被分派来在次RS 208的分派输出210和绕过输出230之间作出选择来分派指令。融合RS模块108可根据本文描述的任何配置实现,例如图2–5所示的那些。
当次RS 208已满或者因其他原因不能从任何RSQ分派指令时,并且如果主RS 204具有至少一个指令准备好分派,则主RS 204可经由绕过输出230分派至少一个指令(包括如前所述的部分绕过分派)。另外,当次RS 208已满时,指令继续被发射到主RS 204中,直到次RS 208不再为满为止或者直到主RS 204变满为止。当主RS 208也已满时,RS_FULL信号被声明,然后被取消声明以发起重发射模式。当RS_FULL信号由于次RS 208不再为满而被取消声明时,取消声明的RS_FULL信号经过RS FULL逻辑612并且通过锁存级614被锁存,重发射指针计算器616根据取消声明的RS_FULL信号计算重发射指针RPT,并且重发射指针RPT通过锁存级618被锁存并被提供到ROB 110。当次RS 208从满变成不满时,不是必须在三个时钟周期(级RI_D、RI_A和RI_B)期间等待来自ROB 110的重发射指令,而是指令可被从主RS 204推送到次RS 208中以在来自ROB 110的重发射指令到达之前喂给饥饿的次RS 208。
流水线700的重发射操作与流水线600的类似,除了重发射路径具有更少的延迟以外。例如,如果RS_FULL在被声明之后的下一个时钟周期就被取消声明,则重发射指针RPT被计算并被提供到ROB 110,ROB 110随后在下一周期中可输出相应的(第一被拒)指令,这在最终被提供回到主RS 204的输入之前只要再花一个时钟周期。最短的重发射延迟因此只是三个时钟周期。另外,一旦次RS 208不再满,主RS 204就可开始在重发射过程期间向次RS208喂指令。到执行单元112的指令分派延迟因此被减少或者被最小化。
图8是图示出根据一个实施例被配置为具有移位特征的RSQ 802的主RS 204的操作的一对简化图。RSQ 802可用在包括统一RS结构在内的任何类型的RS结构内。左侧的第一图示出了当S_RSFULL被声明以指示出次RS 208已满以便指令可被累积在主RS 204中(这里是RSQ 802)时RSQ 802的操作。如图所示,指令2–7被存储在RSQ 802的前六个条目1–6内,其中每个有效指令被标记以有效值“V”。额外的指令8–10正被从MUX 202发射到RSQ 802,例如从RAT 106或ROB 110发射。在S_RSFULL保持被声明的同时,指令8–10即将要分别被存储到RSQ 802的条目7–9中。
右侧的第二图示出了当S_RSFULL被取消声明以指示出次RS 208不再为满以使得指令被推送到次RS 208中时RSQ 802的操作。在此情况中,每次从RSQ 802推送出最多四个指令中,RSQ 802每次也移动RSQ 802内的最多四个指令以维持排序。与第一图一样,指令2–7号被存储在前六个条目1–6内,并且额外的指令8–10正被推送到RSQ 802中。然而,在此情况下,S_RSFULL信号被取消声明以使得指令2–5被从队列弹出以推送到次RS 208中。不是将额外的指令8–10分别推送到条目7–9中,指令6–7被向上移动四个位置到最前的两个条目1–2,并且额外的指令8–10改为被推送到RSQ 802的现在为空的条目3–5中。
移位特征使得指令能够累积在RSQ 802内,而不是被重发射回到ROB 110,从而减少了前端气泡。另外,当经由绕过输出230分派任何数目的指令时,移位特征用于将更低(或更新)的指令推送到空的条目中以维持顺序并且减少流水线中的气泡。另外,主RS 204从MUX 202接收N个(例如,在图8中N=3)发射指令,但向次RS 208推送最多P个(例如,在图8中P=4)发射指令。P可大于N,也就是说,MUX 202在给定周期期间可以只输出3个指令,但次RS208在该给定周期期间仍可接收到4个指令,从而挤压掉了从像指令翻译器104这样的前端流水线引入的指令之间的气泡。
图9是图示出根据一个实施例的具有总共12个条目并且假定每次推送出4个指令的RSQ 802的移位特征的简化图。如左侧的第一图所示,对于要存储在RSQ 802的条目2 906处的下一指令,RSQ 802的选择逻辑902在发射指令1和2和RSQ 802的条目6 904处的指令之间作出选择。如果条目1已满,但条目2为空(或者正被清空),则指令1被选择。如果条目1和2为空(或者正被清空),则指令2被选择。否则,条目6 904处的指令被选择。类似地,如中间的图所示,对于RSQ 802的条目5 912,选择逻辑908对于要存储在RSQ 802的条目5 912处的下一指令在发射指令1–4和条目9 910处的指令之间作出选择。选择的条目取决于RSQ 802的当前条目中哪些当前为空或者正被清空。如右侧的图所示,当有总共12个条目时,条目10916被略微不同地操作。在此情况中,选择逻辑914对于要存储在RSQ 802的条目10916处的下一指令在发射指令1–4之间作出选择。由于对于最多12个条目推送4个条目,因此对于条目10 916没有移位条目。
以上描述被给出来使得本领域普通技术人员能够如特定应用及其要求的情境内所规定的那样作出并使用本发明。虽然已参考本发明的某些优选版本相当详细地描述了本发明,但其他版本和变化是可能的并且被设想到了。对优选实施例的各种修改对于本领域技术人员将是明显的,并且这里定义的一般原因可被应用到其他实施例。例如,这里描述的电路可按任何适当的方式实现,包括逻辑器件或电路等等。
本领域技术人员应当明白,他们可容易使用公开的概念和具体实施例作为用于设计或修改用于实现本发明的相同目的其他结构的基础,而不脱离本发明的精神和范围。因此,本发明并不打算被限于这里示出和描述的特定实施例,而是应符合与这里公开的原因和新颖特征一致的最宽范围。
Claims (12)
1.一种具有多级保留站RS结构的微处理器,包括:
主保留站RS,包括:
至少一个主保留站RS队列,用于存储接收的发射指令;
推送输出,用于将所述至少一个主保留站RS队列中存储的所述发射指令推送到次保留站RS,而不管所述发射指令是否准备好被分派;
至少一个绕过输出,用于分派所述至少一个主保留站RS队列中存储的所述发射指令中的准备好被分派的至少一个发射指令;
所述次保留站RS,包括:
至少一个次保留站RS队列,用于存储从所述主保留站RS接收的所述发射指令;
至少一个分派输出,用于分派所述至少一个次保留站RS队列中存储的所述发射指令中的准备好被分派的至少一个发射指令;以及
绕过控制系统,用于在所述次保留站RS的所述分派输出和所述主保留站RS的所述绕过输出之间进行选择来分派所述发射指令,其中,当所述次保留站RS中存储的指令没有一个准备好分派并且当所述主保留站RS具有至少一个准备好被分派的发射指令时,所述绕过控制系统选择所述主保留站RS的所述绕过输出。
2.如权利要求1所述的微处理器,其中,所述主保留站RS包括:
单个统一RS队列,其能够存储所述发射指令的多种指令类型的全部;
其中,所述推送输出在任何给定时钟周期中能够推送达预定数目的所述发射指令;并且
其中,所述绕过输出能够分派所述多种指令类型的每一种的至少一个。
3.如权利要求1所述的微处理器,其中,所述至少一个次保留站RS队列为多个次保留站RS队列。
4.如权利要求3所述的微处理器,其中,所述多个次保留站RS队列中的每一个只存储所述发射指令的多种指令类型中的一种。
5.如权利要求3所述的微处理器,其中,所述多个次保留站RS队列中的每一个每次能够输出多于一个的所述存储的指令。
6.如权利要求1所述的微处理器,其中,所述次保留站RS使用奇-偶选择来分派所述发射指令。
7.如权利要求1所述的微处理器,其中,所述次保留站RS结构使用第一和第二最旧选择来分派所述发射指令。
8.如权利要求1所述的微处理器,其中,所述主保留站RS在给定的时钟周期中推送达第一数目的所述发射指令到所述次保留站RS,而所述主保留站RS在所述给定时钟周期中接收达第二数目的所述发射指令,其中,第一数目大于或等于第二数目。
9.如权利要求1所述的微处理器,其中,所述主保留站RS进行溢出缓冲器操作,用于在所述次保留站RS已满时接收和存储额外的发射指令。
10.如权利要求9所述的微处理器,其中,所述主保留站RS在所述次保留站RS从满变成不满时将所述主保留站RS中存储的所述额外的发射指令推送到所述次保留站RS。
11.如权利要求9所述的微处理器,其中,当所述主保留站RS也已满,然后所述次保留站RS从满变成不满,藉由所述主保留站RS在来自重排序缓冲器ROB的重发射指令到达之前将所述主保留站RS中存储的所述额外的发射指令推送到所述次保留站RS。
12.如权利要求1所述的微处理器,其中,所述主保留站RS包括至少一个移位缓冲器,该移位缓冲器移动所述发射指令中的剩余存储的那些发射指令以在所述发射指令中的其他那些发射指令被从所述移位缓冲器移除时维持接收的指令顺序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510770611.9A CN106557301B (zh) | 2015-09-25 | 2015-09-25 | 经由多级保留站结构的发射指令分派方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510624996.8A CN105117202B (zh) | 2015-09-25 | 2015-09-25 | 具有融合保留站结构的微处理器 |
CN201510770611.9A CN106557301B (zh) | 2015-09-25 | 2015-09-25 | 经由多级保留站结构的发射指令分派方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510624996.8A Division CN105117202B (zh) | 2015-09-25 | 2015-09-25 | 具有融合保留站结构的微处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106557301A CN106557301A (zh) | 2017-04-05 |
CN106557301B true CN106557301B (zh) | 2019-05-07 |
Family
ID=54665204
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510770611.9A Active CN106557301B (zh) | 2015-09-25 | 2015-09-25 | 经由多级保留站结构的发射指令分派方法 |
CN201510624996.8A Active CN105117202B (zh) | 2015-09-25 | 2015-09-25 | 具有融合保留站结构的微处理器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510624996.8A Active CN105117202B (zh) | 2015-09-25 | 2015-09-25 | 具有融合保留站结构的微处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9928070B2 (zh) |
EP (1) | EP3147776B1 (zh) |
CN (2) | CN106557301B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105549952A (zh) * | 2015-12-03 | 2016-05-04 | 上海高性能集成电路设计中心 | 一种基于记分牌原理的两级缓置发射的调控装置 |
CN106951215A (zh) * | 2017-04-25 | 2017-07-14 | 上海兆芯集成电路有限公司 | 减少由加载队列满载引起的流水线推迟的处理器和方法 |
JP6926681B2 (ja) * | 2017-05-31 | 2021-08-25 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10977045B2 (en) * | 2017-11-29 | 2021-04-13 | International Business Machines Corporation | Priority instruction handling with optimized issue queue design |
US11023243B2 (en) * | 2019-07-22 | 2021-06-01 | Microsoft Technology Licensing, Llc | Latency-based instruction reservation station clustering in a scheduler circuit in a processor |
CN111414196B (zh) * | 2020-04-03 | 2022-07-19 | 中国人民解放军国防科技大学 | 一种零值寄存器的实现方法及装置 |
CN112181495B (zh) * | 2020-09-28 | 2022-10-18 | 中国人民解放军国防科技大学 | 一种断言寄存器操作数指令的实现方法和装置 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0686912B1 (en) * | 1994-06-03 | 1998-12-16 | Motorola, Inc. | Data processor with an execution unit for performing load instructions and method of operation |
US5649138A (en) * | 1996-01-04 | 1997-07-15 | Advanced Micro Devices | Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor |
US6742111B2 (en) * | 1998-08-31 | 2004-05-25 | Stmicroelectronics, Inc. | Reservation stations to increase instruction level parallelism |
US6253287B1 (en) * | 1998-09-09 | 2001-06-26 | Advanced Micro Devices, Inc. | Using three-dimensional storage to make variable-length instructions appear uniform in two dimensions |
US6697939B1 (en) * | 2000-01-06 | 2004-02-24 | International Business Machines Corporation | Basic block cache microprocessor with instruction history information |
US7356673B2 (en) * | 2001-04-30 | 2008-04-08 | International Business Machines Corporation | System and method including distributed instruction buffers for storing frequently executed instructions in predecoded form |
US20070198812A1 (en) * | 2005-09-27 | 2007-08-23 | Ibm Corporation | Method and apparatus for issuing instructions from an issue queue including a main issue queue array and an auxiliary issue queue array in an information handling system |
CN100476744C (zh) * | 2007-01-30 | 2009-04-08 | 中国科学院计算技术研究所 | 一种基于时间冗余的检验流水线瞬态故障的装置及方法 |
CN101477454A (zh) * | 2009-01-22 | 2009-07-08 | 浙江大学 | 嵌入式处理器的乱序执行控制装置 |
CN101526895B (zh) * | 2009-01-22 | 2011-01-05 | 杭州中天微系统有限公司 | 基于指令双发射的高性能低功耗嵌入式处理器 |
CN101710272B (zh) * | 2009-10-28 | 2012-09-05 | 龙芯中科技术有限公司 | 指令调度装置和方法 |
JP5625903B2 (ja) * | 2010-12-29 | 2014-11-19 | 富士通株式会社 | 演算処理装置および演算処理方法 |
US9164772B2 (en) * | 2011-02-04 | 2015-10-20 | Qualcomm Incorporated | Hybrid queue for storing instructions from fetch queue directly in out-of-order queue or temporarily in in-order queue until space is available |
US20130173886A1 (en) | 2012-01-04 | 2013-07-04 | Qualcomm Incorporated | Processor with Hazard Tracking Employing Register Range Compares |
JP2013205905A (ja) * | 2012-03-27 | 2013-10-07 | Fujitsu Ltd | 演算処理装置及び演算処理装置の制御方法 |
US9128725B2 (en) * | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9645819B2 (en) | 2012-06-15 | 2017-05-09 | Intel Corporation | Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor |
GB2503438A (en) * | 2012-06-26 | 2014-01-01 | Ibm | Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions |
GB2510655B (en) * | 2013-07-31 | 2015-02-25 | Imagination Tech Ltd | Prioritizing instructions based on type |
CN104714780A (zh) * | 2013-12-16 | 2015-06-17 | 深圳市国微电子有限公司 | 一种超标量流水线保留站处理指令的方法及装置 |
-
2015
- 2015-09-25 CN CN201510770611.9A patent/CN106557301B/zh active Active
- 2015-09-25 CN CN201510624996.8A patent/CN105117202B/zh active Active
- 2015-10-14 US US14/882,673 patent/US9928070B2/en active Active
- 2015-11-25 EP EP15196281.8A patent/EP3147776B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN105117202B (zh) | 2018-11-27 |
CN106557301A (zh) | 2017-04-05 |
CN105117202A (zh) | 2015-12-02 |
EP3147776B1 (en) | 2018-11-14 |
EP3147776A1 (en) | 2017-03-29 |
US9928070B2 (en) | 2018-03-27 |
US20170090934A1 (en) | 2017-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106557301B (zh) | 经由多级保留站结构的发射指令分派方法 | |
US7490221B2 (en) | Synchronization between pipelines in a data processing apparatus utilizing a synchronization queue | |
US9787612B2 (en) | Packet processing in a parallel processing environment | |
US5987588A (en) | Processor architecture providing for speculative execution of instructions with multiple predictive branching and handling of trap conditions | |
CN104657145B (zh) | 用于微处理器的重发停靠的系统和方法 | |
JP2839075B2 (ja) | 処理システムを動作させる方法及び処理システム | |
GB2501791A (en) | Subdivided register file and associated individual buffers for write operation caching in an out-of-order processor | |
US8601245B2 (en) | Not-taken path instruction for selectively generating a forwarded result from a previous instruction based on branch outcome | |
US10140128B2 (en) | Parallelized multiple dispatch system and method for ordered queue arbitration | |
US9690590B2 (en) | Flexible instruction execution in a processor pipeline | |
WO2016155421A1 (en) | Method and apparatus for superscalar processor | |
CN106951215A (zh) | 减少由加载队列满载引起的流水线推迟的处理器和方法 | |
JP5130757B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US9747109B2 (en) | Flexible instruction execution in a processor pipeline | |
US20040199749A1 (en) | Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor | |
JP5370352B2 (ja) | Simd型プロセッサアレイシステム及びそのデータ転送方法 | |
CN101872336B (zh) | 基于主从架构的协处理器高效执行的装置 | |
JP4996945B2 (ja) | データ処理装置、データ処理方法 | |
US20040128476A1 (en) | Scheme to simplify instruction buffer logic supporting multiple strands | |
JPH09179737A (ja) | スーパスカラ・プロセッサのリネーム・バッファを効率よく使用する方法及び装置 | |
JP7102840B2 (ja) | プロセッサコア、命令制御方法、プログラム | |
US10740140B2 (en) | Flush-recovery bandwidth in a processor | |
CN115794229A (zh) | 指令处理装置、方法、处理器系统以及设备 | |
CN104808996A (zh) | 减少处理引擎中的加载-存储冲突惩罚的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |