CN108279928B - 微指令调度方法及使用此方法的装置 - Google Patents
微指令调度方法及使用此方法的装置 Download PDFInfo
- Publication number
- CN108279928B CN108279928B CN201810088322.4A CN201810088322A CN108279928B CN 108279928 B CN108279928 B CN 108279928B CN 201810088322 A CN201810088322 A CN 201810088322A CN 108279928 B CN108279928 B CN 108279928B
- Authority
- CN
- China
- Prior art keywords
- load
- microinstruction
- value
- execution
- signal
- 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
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000001514 detection method Methods 0.000 claims abstract description 51
- 230000001419 dependent effect Effects 0.000 claims abstract description 42
- 230000001360 synchronised effect Effects 0.000 claims description 8
- 238000012797 qualification Methods 0.000 abstract description 2
- 201000008103 leukocyte adhesion deficiency 3 Diseases 0.000 description 49
- 238000010586 diagram Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012790 confirmation Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/3824—Operand accessing
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明的实施例提出一种微指令调度方法,由合格检查器执行,至少包含以下步骤:检测载入执行单元广播的载入写回信号;依据载入写回信号的内容判断是否启动载入检测计数逻辑;当被启动的载入检测计数逻辑到达预设值时,判断载入微指令的执行状态是否为数据高速缓存命中;以及当载入微指令的执行状态为数据高速缓存命中且依赖载入微指令的微指令已经被派遣至算术逻辑单元执行时,驱动释放电路以移除保留站队列中的微指令。
Description
技术领域
本发明涉及一种微处理器技术,特别是一种微指令调度方法及使用此方法的装置。
背景技术
在现在的超标量微处理器(superscalar microprocessor),保留站(reservation station)负责调度所有的微指令。除了载入微指令以外,大部分微指令执行的延迟是固定的。微处理器中的存储器系统通常采用阶层架构,包含:第一级数据高速缓存器(Level-1data cache);第二级数据高速缓存器(Level-2data cache);及主存储器(mainmemory)。由于载入微指令于执行时可能发生第一级数据高速缓存器未命中(L1cachemiss),导致延迟是变动的。有的算术逻辑微指令依赖(depend)于载入微指令,即,算术逻辑微指令需要载入微指令的执行结果作为其来源操作数(source operand)。为简化设计,传统的保留站通常也将载入微指令执行的延迟视为固定。也就是说,保留站假设载入微指令派遣至载入流水线后的第n个时脉周期(clock cycles)就能顺利取得结果。所以,保留站于载入微指令派遣至载入流水线后的第n-2个时脉周期便将后续依赖于该载入微指令的算术逻辑微指令派遣至算术逻辑单元(ALU,Arithmetic Logic Unit),并清除相应队列中的算术逻辑微指令。当载入微指令被派遣后的n个时脉周期,高速缓存并没有命中 (cachemiss),已经派遣至算术逻辑单元的算术逻辑微指令会因为数据还未准备好而执行失败,使得保留站需要重新执行(replay)算术逻辑微指令。然而,重新执行算术逻辑微指令会耗费大量的时间,降低微处理器的效能。因此,需要一种算术逻辑微指令调度方法及使用此方法的装置,用以避免因高速缓存器未命中而重新执行算术逻辑微指令。
发明内容
本发明的实施例提出一种微指令调度方法,由合格检查器执行,至少包含以下步骤:检测载入执行单元广播的载入写回信号;依据载入写回信号的内容判断是否启动载入检测计数逻辑;当被启动的载入检测计数逻辑到达预设值时,判断载入微指令的执行状态是否为数据高速缓存命中;以及当载入微指令的执行状态为数据高速缓存命中且微指令已经被派遣至算术逻辑单元执行时,驱动释放电路以移除保留站队列中的微指令。
本发明的实施例提出一种微指令调度装置,至少包含保留站队列、释放电路及合格检查器。合格检查器检测载入执行单元广播的载入写回信号;依据载入写回信号的内容判断是否启动载入检测计数逻辑;当被启动的载入检测计数逻辑到达判断计数值时,判断载入微指令的执行状态是否为数据高速缓存命中;以及当载入微指令的执行状态为数据高速缓存命中且微指令已经被派遣至算术逻辑单元执行时,驱动释放电路以移除保留站队列中关联于此合格检查器的微指令。
其中,合格检查器关联于微指令,以及微指令依赖于由载入执行单元执行的载入微指令。
藉由以上所述的微指令调度方法及装置,保留站队列中的微指令得以保留以避免重新执行(replay)操作。
此外,值得注意的是,由于载入执行单元广播的执行状态并不携带唯一标识符,本发明的上述微指令调度方法及装置通过载入检测计数逻辑来保证载入检测计数逻辑达到预设值的合格检查器所关联的微指令一定直接或间接依赖于载入执行单元广播的执行状态对应的载入微指令。
附图说明
图1是依据本发明实施例的超标量微处理器的方块图。
图2是依据本发明实施例的超标量微处理器的方块图。
图3是依据本发明实施例的合格检查器的方块图。
图4是依据本发明实施例的操作数合格检查器的方块图。
图5是依据本发明实施例的包含二个载入执行单元的超标量微处理器的方块图。
图6是依据本发明实施例的合格检查器的方块图。
图7是依据本发明实施例的适应二个载入执行单元的操作数合格检查器的方块图。
图8是依据本发明实施例的微指令调度方法流程图。
图9是依据本发明实施例的微指令调度方法流程图。
具体实施方式
以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
于权利要求中使用如“第一”、“第二”、“第三”等词用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序、先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
图1是依据本发明实施例的超标量微处理器(superscalar microprocessor) 的方块图。微处理器100包含指令高速缓存器(instruction cache)110,用以缓存一种指令集架构(instruction set architecture)的宏指令(macro-instructions),例如x86指令集架构等。指令解码器(instruction decoder)120从指令高速缓存器110接收宏指令,并且将宏指令转译成微指令(micro-instructions)。寄存器重命名表(register alias table)130依据微指令依赖关系以程序顺序传送微指令至调度器(scheduler)140中的保留站队列(reservation station queue)141至147,以及重排序缓存器(ROB,Reorder Buffer)160。在一些实施例,保留站队列141至147可实施为独立的队列。在另一些实施例,保留站队列141至147可实施在一个联合队列(unified queue),但使用不同的端口。执行单元150可包含整数执行单元151、浮点数执行单元153、载入执行单元155及存储执行单元157。须注意的是,除了以上所示种类的执行单元外,执行单元150可还包含其它执行单元,例如,分支单元(branch unit)、单指令多数据(single-instruction-multiple-data,SIMD) 执行单元、特别函数单元(Special Function Unit,SFU)等。在概念上,整数执行单元151、浮点数执行单元153、单指令多数据执行单元及特别函数单元均可看做包含在算术逻辑单元(Arithmeticand Logic Unit,ALU)中,其功能有别于载入执行单元155及存储执行单元157。运算队列141及143、载入队列145及存储队列147分别连接至整数执行单元151、浮点数执行单元153、载入执行单元155及存储执行单元157。运算队列141及143、载入队列145及存储队列147中的微指令可分别被派遣至整数执行单元151、浮点数执行单元153、载入执行单元155及存储执行单元157执行。在此须注意的是,整数执行单元151、浮点数执行单元153、载入执行单元155及存储执行单元157的执行结果是乱序的,所以,每一个微指令包含唯一标识符,例如,重排序缓冲区索引(ROB,Reorder Buffer indexes)、物理寄存器文档索引(PRF,Physical Register File indexes)等等,用以让执行结果可以安排成原始执行顺序。载入执行单元155连接至第一级数据高速缓存器(level-1 L1 data cache)170,并且第二级数据高速缓存器(level-2 L2 data cache)180设置于第一级数据高速缓存器170之后。第二级数据高速缓存器180通过总线接口(未显示于图1)从主存储器(未显示于图1)读取数据,以及写入数据至主存储器。总线接口将微处理器100接上总线,例如,本地总线、存储器总线等。
载入执行单元155为一个流水线,在执行载入微指令时,首先向第一级数据高速缓存器170要求一段存储器地址的数据。如果第一级数据高速缓存器170已暂存此存储器地址的数据(又可称为第一级高速缓存命中L1 cache hit),则将此数据存储至指定位置,例如指定的寄存器(register)。如果第一级数据高速缓存器170没有暂存此存储器地址的数据(又可称为第一级高速缓存未命中L1cache miss),则向第二级数据高速缓存器180要求此存储器地址的数据。如果第二级数据高速缓存器180已暂存此存储器地址的数据(又可称为第二级高速缓存命中L2 cache hit),则回复数据给第一级数据高速缓存器170。如果第二级数据高速缓存器180也没有暂存此存储器地址的数据 (又可称为第二级高速缓存未命中L2 cache miss),则通过总线接口(未显示于图1)从主存储器(未显示于图1)读取数据。因此,本领域技术人员理解载入微指令所需的数据不一定能在预设的时间内(例如,n个时脉周期) 取得并存储于目的地位置。
整数执行单元151、浮点数执行单元153、载入执行单元155及存储执行单元157执行的微指令间具有各种的依赖关系。常见的依赖关系为一个整数或浮点数运算微指令的来源操作数(source operand)来自于一个载入微指令的结果,举例如下:
A1=LD[Addr1];
A3=IADD A1,A2;
B1=IMUL A3,“3”;
其中,LD代表载入微指令,IADD代表整数加法微指令,IMUL代表整数乘法微指令,Addr1代表存储器地址,以及A1至A3及B1代表特定寄存器。载入执行单元155执行载入微指令“A1=LD[Addr1];”,用以从存储器地址Addr1取得数据,并且存储于寄存器A1。载入执行单元155包含流水线,通过第一级数据高速缓存器170取得存储器地址Addr1的数据。在此须注意的是,存储器地址Addr1可能暂存于第一级数据高速缓存器170或第二级数据高速缓存器180,或者只存储于主存储器(未显示于图1)。整数执行单元151执行微指令“A3=IADDA1,A2;”,用以将寄存器A1的值(也就是存储器地址Addr1的数据)加上寄存器A2的值,并且存储运算结果写入寄存器A3。接着,整数执行单元151执行微指令“B1=IMUL A3,“3”;”,用以将寄存器A3的值(也就是IADD微指令的运算结果)乘上常数“3”,并且存储运算结果写入寄存器B1。微指令“A3=IADD A1,A2;”的操作数“A1”直接依赖载入微指令“A1=LD[Addr1];”,而微指令“B1=IMUL A3,“3”;”的操作数“A3”间接依赖载入微指令“A1=LD[Addr1];”。虽然实施例以整数加法及乘法举例,但如上所述的依赖关系也可以应用于其他的算术/逻辑微指令、特殊函数微指令等,本发明并不受限于此。算术/逻辑微指令可以为整数减法/除法、浮点数加法/减法/乘法/除法、逻辑及/或/反、位左/右移、位回转、逻辑比较等等。特殊函数微指令可为三角函数Sin/Cos/Tan/Cot/Sec/Csc ()、平方、n次方、平方根、n次方根等等。
在常规的情况下,载入执行单元155可于第n个时脉周期经由第一级数据高速缓存器170取得存储器地址Addr1的数据。在一些实施方式,为了整体效能的考虑,调度器140于派遣微指令“A1=LD[Addr1];”至载入执行单元155后的第n-2个时脉周期(以下称为第n-2个时脉周期),派遣微指令“A3=IADD A1,A2;”至整数执行单元151。假设微指令“A3=IADDA1,A2;”于派遣至整数执行单元151后的下一个时脉周期(以下称为第n-1个时脉周期)可执行成功:调度器140从运算队列141移除微指令“A3=IADD A1,A2;”。接着,调度器140于第n-1个时脉周期派遣微指令“B1=IMUL A3,“3”;”。在第n个时脉周期,如果数据高速缓存并未命中(cache miss),整数执行单元 151因为载入执行单元155尚未取得存储器地址Addr1的数据而使得执行微指令“A3=IADD A1,A2;”失败,也会因为微指令“A3=IADD A1,A2;”执行失败而使得整数执行单元151执行微指令“B1=IMUL A3,“3”;”失败。然而,在第n个时脉周期,微指令“A3=IADD A1,A2;”已被移出运算队列141之外。于是,调度器140必须执行重新派遣作业,包含从重排序缓存器160取得该整数加法微指令,将该整数加法微指令插入运算队列141中的适当位置等等。在此须注意的是,重新派遣作业的执行会耗费大量的时间及运算资源,降低整体系统效能。
图2是依据本发明实施例的超标量微处理器的方块图。保留站队列241 包含多个条目(entries)241(0)至241(q),其中,保留站队列241中的条目总数为q+1。每个条目存储可由算术逻辑单元251执行的一个微指令的相关信息,例如,微指令标识符、操作码、操作数、操作数是否已被唤醒等信息。算术逻辑单元251包括但不限于图1所示的整数执行单元151、浮点数执行单元153及单指令多数据执行单元及特别函数单元等。调度器(scheduler)140(可以保留站实施)另包含指令派遣单元242,在每个时脉周期使用一个调度算法,依据条目包含的信息从多个微指令中挑选出一个,接着,在下一个时脉周期派遣挑选的微指令至算术逻辑单元251。算术逻辑单元251可以数个阶段(stages)执行微指令,例如,EX0、EX1、WB等等。每个阶段使用特定的硬件电路处理。为了避免执行如上所述的重新派遣作业,微处理器100另包含合格检查器集合(qualifier collection)210,并且合格检查器集合210包含多个合格检查器(qualifiers)210(0)至210(q)。每一个合格检查器唯一对应于保留站队列241中的一个条目,用以决定此条目中的微指令的操作数是否就绪以及所依赖(可为直接依赖或间接依赖)的载入微指令是否已经状态确认。在一实施例中,合格检查器集合210的一部分可设置在调度器140内部。其中,每个微指令可包含多个直接或间接依赖载入微指令的执行结果的操作数(operand),例如,微指令“A3=IADD A1, A2;”的操作数“A1”依赖载入微指令“A1=LD[Addr1];”的执行结果。
当载入指令派遣单元(未显示于图2)派遣一个载入微指令至载入执行单元155后的第n-2个时脉周期,载入执行单元155广播载入写回信号S11 给所有合格检查器210(0)至210(q)以及调度器140,其中,载入写回信号S11的目的是告知调度器140中依赖于该载入微指令的所有操作数为就绪 (ready),即其依赖关系已经解除。载入写回信号S11乘载此载入微指令的唯一标识符,该唯一标识符可以唯一标识该载入微指令,例如为重排序缓冲区索引(ROB,Reorder Buffer indexes)、物理寄存器文档索引(PRF,Physical Register Fileindexes)等等。理论上,调度器140在第n-2个时脉周期接收到载入写回信号S11,使得指令派遣单元242可以从保留站队列241挑选依赖于此载入微指令的执行结果的微指令,具体举例而言,调度器140根据该载入写回信号S11将依赖于此载入微指令的微指令的操作数设定为就绪,如果在第n-1个时脉周期该微指令的所有操作数均就绪,则指令派遣单元242可能会挑选该微指令并派遣此挑选的微指令至算术逻辑单元251。举例来说,调度器140在第n-2个时脉周期接收到载入写回信号S11,其中包含载入微指令A1=LD[Addr1]的唯一标识符,如果微指令“A3=IADD A1,A2;”的合格检查器判断自身所依赖的唯一标识符等于载入写回信号S11所包含的该唯一标识符,接着,如果在第n-1个时脉周期微指令“A3=IADD A1,A2;”的所有操作数均就绪,则指令派遣单元242从保留站队列241挑选微指令“A3=IADD A1,A2;”,并且在第n个时脉周期派遣微指令“A3=IADD A1, A2;”至算术逻辑单元251,并且从保留站队列241挑选微指令“B1=IMUL A3,“3”;”(因为在第n个时脉周期微指令“B1=IMULA3,“3”;”的所有操作数均就绪)。
当合格检查器210(0)至210(q)中的每一个接收到载入写回信号S11 时,首先判断自身多个操作数所依赖的唯一标识符与载入写回信号S11所包含的载入指令的唯一标识符是否相等,即判断相应条目的微指令的来源操作数中的一个是否依赖此载入微指令的执行结果。如果是,则启动载入检测计数逻辑。当被启动的载入检测计数逻辑的值到达一预设值时(例如为数值2,表明达到该载入指令的载入写回信号S11被载入执行单元155广播之后的第 2个时脉周期),并且该合格检查器210(i)关联的微指令已经被派遣至算术逻辑单元251执行(例如在第n-1个时脉周期,该微指令被指令派遣单元242 从保留站队列241挑选并派遣至算术逻辑单元251执行),通过载入执行单元155广播的数据高速缓存存取状态(cacheaccess status)信号S12发现此载入微指令发生数据高速缓存命中时(cache hit),合格检查器210(i)产生载入确认的信号S13驱动释放电路(release circuits)250,用以移除保留站队列241中的条目141(i)的微指令,其中,i为0至q间的任意整数。当通过载入执行单元155广播的数据高速缓存存取状态信号S12发现此载入微指令发生数据高速缓存未命中时,合格检查器210(i)产生载入未确认的信号S13。合格检查器210(i)的硬件架构及详细运作可参考以下段落的说明。值得注意的是,上述判断是否发生数据高速缓存命中的流程一定是在该微指令被指令派遣单元242从保留站队列241挑选并派遣至算术逻辑单元251执行之后,由该微指令关联的合格检查器210(i)执行的,因为当判定要启动前述载入检测计数逻辑时,会设定该微指令的就绪信号(ready signal)。但由于一个微指令有多个操作数,只有当该微指令的所有的就绪信号都被设定,该微指令才会被选中并派遣至算术逻辑单元251执行。如果被启动的载入检测计数逻辑的值到达该预设值时(例如表征达到该载入指令的载入写回信号S11被载入执行单元155广播之后的第2个时脉周期),该微指令因其它未就绪或其它原因并未被指令派遣单元242挑选并派遣至算术逻辑单元 251执行,则即便判断到发生数据高速缓存命中时(cache hit),合格检查器 210(i)也不能发出信号S13驱动释放电路(release circuits)250移除保留站队列241中的条目141(i)的微指令。因此合格检查器210(i)中的实现上述判断是否发生数据高速缓存命中的逻辑应该与算术逻辑单元251的流水线同步。
视窗检查器230反复检测合格检查器210(0)至210(q)产生的信号 S13。当检测到合格检查器210(i)的载入未确认的信号S13时,发出信号 S17驱动算术逻辑单元251杀掉(kill)条目(i)的微指令的执行,并且,发出信号S16驱动调度器140删除指令派遣单元242中的微指令(也就是,指令派遣单元242将不会于下一个时脉周期派遣此微指令至算术逻辑单元 251)。此时,已经派遣至算术逻辑单元251的条目(i)的微指令及已由载入执行单元155挑选的微指令可称为被污染的微指令,因为其直接或间接依赖的载入微指令还未成功通过数据高速缓存器读取特定存储器地址的数据。在此须注意的是,算术逻辑单元251并没有完成条目(i)的微指令的执行而提前终止,合格检查器210(i)不会发出信号S13驱动释放电路250移除保留站队列241中的条目141(i)的微指令,因此保留站队列241中的条目(i)的微指令得以保留以避免重新执行(replay)操作。此外,如果载入执行单元155中的微指令尚未派遣至算术逻辑单元251,则上述判断是否发生数据高速缓存命中的逻辑不会启动,则也不会移除保留站队列241中条目(i)的微指令。举例来说,假设条目241(i)存储微指令“A3=IADD A1,A2;”:当被启动的载入检测计数逻辑的值到达该预设值时,发现载入微指令“A1=LD [Addr1];”发生数据高速缓存命中时,合格检查器210(i)产生载入确认信号S13,并且产生信号S13驱动释放电路250,用以移除保留站队列241中的条目141(i)的微指令。当被启动的载入检测计数逻辑的值到达该预设值时,发现载入微指令“A1=LD[Addr1];”发生数据高速缓存未命中时,合格检查器210(i)产生载入未确认的信号S13。当视窗检查器230检测到合格检查器210(i)的载入未确认的信号S13时,驱动算术逻辑单元251杀掉条目(i)的微指令“A3=IADD A1,A2;”的执行,并且,驱动调度器140删除指令派遣单元242中的微指令“B1=IMUL A3,“3”;”(也就是,指令派遣单元242将不会在下一个时脉周期派遣微指令“B1=IMUL A3,“3”;”至算术逻辑单元251)。在一实施例中,当判定要启动前述载入检测计数逻辑(例如当载入写回信号S11所包含的载入微指令的唯一标识符与合格检查器210(i) 所关联的微指令所依赖的唯一标识符相等时)时,会设定该微指令的就绪信号(ready signal)。当被启动的载入检测计数逻辑的值到达该预设值时,发现载入微指令发生数据高速缓存未命中时,合格检查器210(i)还会清除保留站队列241中条目(i)的微指令的前述就绪信号(ready signal),后续多个时脉周期之后,当该载入微指令真正执行完成时,例如该载入微指令从第二级数据高速缓存器(L2data cache)180或者主存储器中载入正确的数据时,再次设定该就绪信号。
此外,在条目(i)的微指令被派遣至算术逻辑单元251执行后,合格检查器210(i)或执行该条目(i)的微指令的算术逻辑单元251会广播写回信号S43给其他合格检查器,用以让相应的第二合格检查器210(k)的载入检测计数逻辑同步第一合格检查器210(i)的载入检测计数逻辑的值。第二合格检查器210(k)关联于保留站队列241中的一个条目,此条目的微指令包含至少一个依赖至条目(i)的微指令的执行结果。在一实施例中,该同步信号S43包含条目(i)的微指令的唯一标识符,第二合格检查器210(k) 所关联的微指令的一个所依赖的唯一标识符与该同步信号S43所包含的条目(i)的微指令的唯一标识符相等,即第二合格检查器210(k)会判断到其所关联的微指令直接依赖于该条目(i)的微指令。
图3是依据本发明实施例的合格检查器的方块图。合格检查器210(i) 包含多个操作数合格检查器(operand qualifiers)310(0)至310(p),其中, i为0至q间的任意整数,一个微指令包含多个来源操作数,来源操作数的总数为p+1,例如2、3、4等。每个操作数合格检查器310(j)包含一个前述载入检测计数逻辑。当相应的载入检测计数逻辑被启动并到达一预设值时 (例如为数值2,表明达到该载入指令的载入写回信号S11被载入执行单元 155广播之后的第2个时脉周期),操作数合格检查器310(j)依据载入执行单元155广播的数据高速缓存存取状态信号S12判断相应的来源操作数直接或间接依赖的载入微指令的执行状态为数据高速缓存命中或未命中;当数据高速缓存存取状态信号S12指示数据高速缓存命中(cache hit)时,输出载入确认信号S31(j),当数据高速缓存存取状态信号S12指示数据高速缓存未命中(cache miss)时,输出载入未确认信号S31(j),其中,j为0至p 间的任意整数。合格检查器210(i)另包含与门(AND gate)330,连接至所有操作数合格检查器310(0)至310(p)的输出载入确认信号S31(0) 至S31(p)。输出S31(j)指出第j个来源操作数是否载入确认,即其所依赖的载入微指令是否数据高速缓存命中(cache hit)的信息,例如,S31(j)=“1”代表载入确认,S31(j)=“0”代表载入未确认。如果所有启动了载入检测计数逻辑的操作数合格检查器皆输出载入确认信号,与门330输出总载入确认信号S13(i)给视窗检查器230。如果任一启动了载入检测计数逻辑的操作数合格检查器输出载入未确认信号,与门330输出总载入未确认信号的信息S13(i)给视窗检查器230。
图4是依据本发明实施例的操作数合格检查器的方块图。于一方面来说,条目141(i)的微指令的第j个操作数直接依赖于载入微指令的执行结果,例如,微指令“A3=IADDA1,A2;”的操作数“A1”依赖于微指令“A1=LD [Addr1];”的执行结果。操作数合格检查器310(j)可于载入检测计数逻辑被启动并到达一预设值时(例如第n个时间点),判断依赖的载入微指令的执行发生数据高速缓存命中或未命中。详细来说,操作数合格检查器310(j)包含载入确认寄存器420,用以存储第j个操作数是否载入确认的信息,其中,j为0至p间的任意整数。假设相应条目的微指令的第j个操作数不存在或没有关联于任何载入微指令:载入确认寄存器420初始为“1”,指出不必考虑相应条目的微指令的第j个操作数的数据是否载入确认。操作数合格检查器310(j)另包含依赖寄存器(dependency register)410,用以存储相应条目的微指令的第j个操作数所依赖的微指令的信息,其中,j为1至m 间的任意整数。值得注意的是,微指令的操作数所依赖的微指令的信息是由前端生成并存储于依赖寄存器410中,其可能依赖于一载入指令,也可能依赖于其它类型的指令。依赖寄存器410存储其所依赖的微指令的唯一标识符,例如,重排序缓冲区索引、物理寄存器文档索引等等。当载入指令派遣单元 (未显示于图1)派遣一个载入微指令至载入执行单元155后的第n-2个时脉周期,载入执行单元155广播载入写回信号S11,并且载入写回信号S11 乘载此载入微指令的唯一标识符,当操作数合格检查器310(j)判断其与依赖寄存器410存储的该源操作数所依赖的唯一标识符相等时,启动载入检测计数逻辑440。
操作数合格检查器310(j)均包含一个载入检测计数逻辑440,在每个时脉周期改变锁存的值,用以让其他元件辨认目前的阶段状态,例如,是否已经到达一预定值。载入检测计数逻辑440可包含一个3比特位移寄存器 (shift register),在每个时脉周期循环位移一个比特。比较器431在每个时脉周期比较依赖寄存器410存储的值及载入写回信号(load write back signal) S11搭载的载入微指令的唯一标识符。载入写回信号S11是载入执行单元155 广播用来唤醒依赖于特定载入微指令的至少一个微指令,该载入写回信号S11携带唯一标识符以标识该特定载入微指令。当二者相同且该载入写回信号S11携带的计数值为“2’b000”时,比较器431输出致能信号E41给输入电路433,驱动输入电路433将载入检测计数逻辑440重设为值“2’b001”,用以启动载入检测计数逻辑440。在每一时脉周期,载入检测计数逻辑440 的值会左移一个比特。例如,在第n-2至n个时脉周期,载入检测计数逻辑 440的值D43依序改变为“2’b001”、“2’b010”及“2’b100”。比较器450持续比较载入检测计数逻辑440的值D43及预设值“2’b100”。当二者相同时,比较器450输出致能信号E43给比较器471,驱动比较器471判断由载入执行单元155广播的数据高速缓存存取状态信号S12为命中(hit)或未命中 (miss)。命中或未命中可使用不同数码或电压水平(voltage level)表示。藉由以上的说明,本领域技术人员可理解载入检测计数逻辑440用来控制如上比较器471判断的时间点。虽然实施例描述的载入检测计数逻辑440可包含一3比特位移寄存器,本领域技术人员可依据不同设计需求采用4或5比特位移寄存器实现载入检测计数逻辑440,用以在启动载入确认程序后的第 3或4个时脉周期,判断依赖的载入微指令的执行为数据高速缓存命中或未命中,本发明并不因此受限。当数据高速缓存存取状态信号S12为命中时,比较器471输出非致能信号E45给输入电路473,则输入电路473驱动载入确认寄存器420输出载入确认信号S31(j)。当条目241(i)的微指令的所有启动了载入检测计数逻辑440的来源操作数的操作数合格检查器310(j) 均输出载入确认信号S31(j),则如前图3所述,条目141(i)的微指令的合格检查器210(i)输出总载入确认信号S13(i),以驱动释放电路250移除保留站队列241中条目241(i)的微指令。当高速缓存存取状态信号S12 为未命中时,比较器471输出致能信号E45给输入电路473以驱动输入电路 473重设载入确认寄存器420为“0”,以输出载入未确认信号S31(j)用以指出条目241(i)的微指令的第j个操作数并未载入确认。一旦条目241(i) 的微指令有一个来源操作数的操作数合格检查器310(j)输出载入未确认信号S31(j)(例如为“0”),则如前图3所述,条目141(i)的微指令的合格检查器210(i)输出总载入未确认信号S13(i),以驱动视窗检查器230发出信号S17驱动算术逻辑单元251杀掉(kill)条目(i)的微指令的执行或发出信号S16驱动调度器140删除指令派遣单元242中的微指令。
于另一方面来说,另一微指令的一个操作数可能依赖此条目141(i)的微指令的执行结果,例如,微指令“B1=IMUL A3,“3”;”的操作数“A3”依赖于此微指令“A3=IADD A1,A2;”的执行结果。操作数合格检查器310 (j)必须统合其他相应合格检查器一样于相同预设时间点(例如为该载入指令的载入写回信号S11被载入执行单元155广播之后的第2个时脉周期),判断同一笔载入微指令的执行发生数据高速缓存命中或未命中。详细来说,操作数合格检查器310(j)另包含微指令寄存器463,用以存储条目(i)的微指令的唯一标识符。派遣确认逻辑(dispatch confirmation logics)461确认此条目241(i)的微指令是否已经被图2所示的指令派遣单元242派遣至算术逻辑单元251执行。当确认此条目141(i)的微指令已经被派遣并执行写回(write back)时,派遣确认逻辑461输出致能信号E44给传送电路465,接着,传送电路465产生写回信号S43,用以乘载微指令寄存器463中条目 (i)的微指令的唯一标识符及此刻载入检测计数逻辑440的值D43,以及广播写回信号S43给其他操作数合格检查器,用以通知相应合格检查器同步此刻载入检测计数逻辑440的值D43。
于更另一方面来说,条目141(i)的微指令的第j个操作数可间接依赖载入微指令的执行结果,例如,微指令“B1=IMUL A3,“3”;”的操作数“A3”依赖于微指令“A3=IADD A1,A2;”的执行结果,而微指令“A3=IADD A1,A2;”的操作数“A1”又依赖于微指令“A1=LD[Addr1];”的执行结果。操作数合格检查器310(j)可于其载入检测计数逻辑到达一预设值时,判断间接依赖的载入微指令的执行发生数据高速缓存命中或未命中。详细来说,操作数合格检查器310(j)接收其他操作数合格检查器或算术逻辑单元251广播的写回信号S41(即前述其它操作数合格检查器广播的写回信号S43,在每一时脉周期只有1条微指令写回的实施例中,写回信号S41可与载入写回信号 S11合并为同一写回信号),该写回信号S41包含其他微指令(例如“A3=IADD A1,A2;”)的唯一标识符及该其他微指令的操作数合格检查器中的载入检测计数逻辑的计数值。比较器431在每一时脉周期比较依赖寄存器410的值及写回信号S41乘载的微指令的唯一标识符。当二者相同时,比较器421输出致能信号E42给输入电路423,驱动输入电路423将将写回信号S41乘载的该其他微指令的操作数合格检查器中的载入检测计数逻辑的计数值赋值给自己的载入检测计数逻辑440,例如“2’b010”。载入检测计数逻辑440的后续操作细节可参考以上段落的描述,为求说明书简洁不再赘述。值得注意的是,载入执行单元155广播的数据高速缓存存取状态信号S12并不携带唯一标识符,本发明通过载入检测计数逻辑440来保证载入检测计数逻辑440达到预设值“2’b100”的操作数合格检查器310(j)所对应的来源操作数一定直接或间接依赖于载入执行单元155广播的数据高速缓存存取状态信号S12 对应的载入微指令。
表1 显示微指令在本发明实施例的超标量微处理器中的运行顺序:
表1
微指令 | T<sub>0</sub> | … | T<sub>n-2</sub> | T<sub>n-1</sub> | T<sub>n</sub> |
A1=LD[Addr1]; | X | … | LD0 | LD1 | LD2 |
A3=IADD A1,A2; | … | Disp | EX0 | ||
B1=IMUL A3,“3”; | … | Disp | |||
第一载入检测计数逻辑的值 | 000 | 000 | 001 | 010 | 100 |
第二载入检测计数逻辑的值 | 000 | 000 | 000 | 010 | 100 |
第一载入检测计数逻辑关联于微指令“A3=IADD A1,A2;”中的操作数“A1”,以及第二载入检测计数逻辑关联于微指令“B1=IMUL A3,“3”;”中的操作数“A3”。在时间点T0,载入微指令“A1=LD[Addr1];”被派遣至载入执行单元155。在时间点Tn-2,载入执行单元155广播载入写回信号S11,使得第一载入检测计数逻辑的值被设为“2’b001”。在时间点Tn-1,微指令“A3=IADD A1,A2;”被挑选(标示为“Disp”),第一载入检测计数逻辑的值更新为“2’b010”,并且第二载入检测计数逻辑的值同步为“2’b010”。在时间点Tn,微指令“A3=IADDA1,A2;”被派遣至驱动算术逻辑单元251(标示为“EX0”),微指令“B1=IMUL A3,“3”;”被挑选(标示为“Disp”),第一载入检测计数逻辑的值更新为“2’b100”,并且第二载入检测计数逻辑的值同步为“2’b100”。由于第一及第二载入检测计数逻辑的值都到达“2’b100”,关联于微指令“A3=IADD A1,A2;”及“B1=IMUL A3,“3”;”的合格检查器都必须检查载入执行单元155广播的数据高速缓存存取状态信号S12。
在一些实施例中,为提升数据载入的效率,可修改图2所述的架构,包含二个以上(含二个)载入执行单元。图5是依据本发明实施例的包含二个载入执行单元的超标量微处理器的方块图。载入执行单元155(0)及155(1) 可并行执行二个载入微指令。因此,一个整数或浮点数运算微指令的两个来源操作数可能分别来自于二个并行执行的载入微指令的结果。举例如下:
A1=LD0[Addr1];
A2=LD1[Addr2];
A3=IADD A1,A2;
B1=IMUL A3,“3”;
其中,LD0代表使用载入执行单元155(0)执行的载入微指令,LD1 代表使用载入执行单元155(1)执行的载入微指令,IADD代表整数加法微指令,IMUL代表整数乘法微指令,Addr1及Addr2代表存储器地址,以及 A1至A3及B1代表特定寄存器。载入执行单元155(0)执行载入微指令“A1=LD0[Addr1];”,用以从存储器地址Addr1取得数据,并且存储于寄存器A1,并且,载入执行单元155(1)执行载入微指令“A2=LD1[Addr2];”,用以从存储器地址Addr2取得数据,并且存储于寄存器A2。调度器140同时分别派遣载入微指令“A1=LD0[Addr1];”及“A2=LD1[Addr2];”至载入执行单元155(0)及155(1)。载入执行单元155(0)及载入执行单元155 (1)的技术细节类似于载入执行单元155,为求说明书简洁不再赘述。算术逻辑单元251执行微指令“A3=IADD A1,A2;”,用以将寄存器A1的值(也就是存储器地址Addr1的数据)加上寄存器A2的值(也就是存储器地址 Addr2的数据),并且存储运算结果写入寄存器A3。接着,算术逻辑单元251 执行微指令“B1=IMUL A3,“3”;”,用以将寄存器A3的值(也就是IADD微指令的运算结果)乘上常数“3”,并且存储运算结果写入寄存器B1。微指令“A3=IADD A1,A2;”的操作数“A1”直接同时依赖于载入微指令“A1=LD0 [Addr1];”及“A2=LD1[Addr2];”,而微指令“B1=IMUL A3,“3”;”的操作数“A3”间接同时依赖于载入微指令“A1=LD0[Addr1];”及“A2=LD1 [Addr2];”。
微处理器可包含合格检查器集合510,并且合格检查器集合510包含多个合格检查器510(0)至510(q)。每一个合格检查器唯一对应于保留站队列241中的一个条目,用以决定此条目中的微指令所依赖(可为直接依赖或间接依赖)的载入微指令是否已经就绪。其中,每个微指令可包含多个直接依赖载入微指令的执行结果的操作数,或多个间接依赖载入微指令的执行结果的操作数。例如,微指令“A3=IADD A1,A2;”的操作数“A1”依赖载入微指令“A1=LD0[Addr1];”的执行结果,及操作数“A2”依赖“A2=LD1 [Addr2];”的执行结果。
当载入指令派遣单元(未显示于第5图)分别派遣二个载入微指令至载入执行单元155(0)及155(1)后的第n-2个时脉周期,载入执行单元155 (0)广播载入写回信号S11(0)给所有合格检查器510(0)至510(q)以及调度器140,而载入执行单元155(1)广播载入写回信号S11(1)给所有合格检查器510(0)至510(q)以及调度器140,其中,载入写回信号S11 (0)和S11(1)的目的是告知调度器140中依赖于这两个载入微指令的所有操作数为就绪(ready),即其依赖关系已经解除。载入写回信号S11(0) 及S11(1)乘载二个载入微指令的唯一标识符。理论上,调度器140在第 n-2个时脉周期接收到载入写回信号S11(0)及S11(1),接着,指令派遣单元242在第n-1个时脉周期从保留站队列241挑选依赖此二个载入微指令的执行结果的微指令,具体举例而言,调度器140根据该载入写回信号S11 (0)及S11(1)将依赖于此两个载入微指令的操作数设定为就绪,如果在第n个时脉周期该微指令的所有操作数均就绪,则指令派遣单元242可能会挑选该微指令并派遣此挑选的微指令至算术逻辑单元251以及从保留站队列 241挑选依赖此派遣的微指令的执行结果的微指令。举例来说,调度器140 在第n-2个时脉周期接收到载入写回信号S11(0),其包含第一载入微指令“A1=LD0[Addr1];”的唯一标识符,及载入写回信号S11(1),其包含第二载入微指令“A2=LD1[Addr2];”的唯一标识符。如果微指令“A3=IADD A1, A2;”的合格检查器判断自身的二个操作数所依赖的唯一标识符分别等于载入写回信号S11(0)及S11(1)所包含的该唯一标识符,接着,指令派遣单元242可能在第n-1个时脉周期从保留站队列241挑选就绪的微指令“A3=IADD A1,A2;”,并且在第n个时脉周期派遣微指令“A3=IADD A1, A2;”至算术逻辑单元251以及从保留站队列241挑选微指令“B1=IMUL A3, “3”;”(因为在第n个时脉周期微指令“B1=IMUL A3,“3”;”的所有操作数均就绪)。
当合格检查器510(0)至510(q)中的每一个接收到载入写回信号S11 (0)时,判断自身的多个操作数所依赖的唯一标识符与载入写回信号S11 (0)所包含的载入指令的唯一标识符是否相等,即判断相应条目的微指令的来源操作数中的一个是否依赖此第一载入微指令的执行结果。若是,则启动载入检测计数逻辑。此外,当合格检查器510(0)至510(q)中的每一个接收到载入写回信号S11(1)时,判断自身的多个操作数所依赖的唯一标识符与载入写回信号S11(1)所包含的载入指令的唯一标识符是否相等,即判断相应条目的微指令的来源操作数中的一个是否依赖此第二载入微指令的执行结果。若是,一样启动该载入检测计数逻辑。当被启动的载入检测计数逻辑的值到达一预设值时(例如为数值2,表明达到该载入指令的载入写回信号S11被载入执行单元155广播之后的第2个时脉周期),并且该合格检查器210(i)关联的微指令已经被派遣至算术逻辑单元251执行(例如在第n-1个时脉周期,该微指令被指令派遣单元242从保留站队列241挑选并派遣至算术逻辑单元251执行),通过载入执行单元155(0)及155(1)广播的数据高速缓存存取状态信号S12(0)及S12(1)发现需要确认的载入微指令都发生数据高速缓存命中时(cache hit),合格检查器510(i)产生载入确认的信号S13来驱动释放电路250,用以移除保留站队列241中的条目 141(i)的微指令,其中,i为0至q间的任意整数。当通过载入执行单元 155(0)及155(1)广播的数据高速缓存存取状态信号S12(0)及S12(1) 发现需要确认的载入微指令中的至少一个发生数据高速缓存未命中时,合格检查器510(i)产生载入未确认的信号S13。
图6是依据本发明实施例的合格检查器的方块图。合格检查器510(i) 包含多个操作数合格检查器610(0)至610(p),其中,i为0至q间的任意整数,一个微指令包含多个来源操作数,来源操作数的总数为p+1,例如 2、3、4等。假设条目241(i)的第0个操作数依赖于由载入执行单元155 (0)执行的载入微指令,以及条目241(i)的第1个操作数依赖于由载入执行单元155(1)执行的载入微指令:如果合格检查器510(i)中的所有启动了载入检测计数逻辑的操作数合格检查器610(0)至610(p)皆输出载入确认信号,与门330输出总载入确认信号S13(i)给视窗检查器230。如果任一启动了载入检测计数逻辑的操作数合格检查器输出载入未确认信号 (例如,操作数合格检查器610(0)或/以及操作数合格检查器610(1)输出未就绪的信息),与门330输出总载入未确认的信息S13(i)给视窗检查器230。
图7是依据本发明实施例的适应二个载入执行单元的操作数合格检查器的方块图。当发现相应条目的微指令的第j个操作数依赖于由载入执行单元 155(0)或155(1)执行的载入微指令时,比较器431在每个时脉周期比较依赖寄存器410存储的值(即,该相应条目的微指令的第j个操作数所依赖的微指令的信息)及载入写回信号S11(0)搭载的载入微指令的唯一标识符。载入写回信号S11(0)是载入执行单元155(0)用来唤醒依赖于其执行的载入微指令的至少一个微指令。当二者相同且判断载入写回信号S11(0)携带的计数值为“2’b000”时,比较器431将载入检测计数逻辑440重设为值“2’b001”,用以启动载入检测计数逻辑440。此外,比较器432在每个时脉周期比较依赖寄存器410存储的值及载入写回信号S11(1)搭载的载入微指令的唯一标识符。载入写回信号S11(1)是载入执行单元155(1)用来唤醒依赖于其执行的载入微指令的至少一个微指令。当二者相同时且该载入写回信号S11(1)携带的计数值为“2’b000”时,比较器432将载入检测计数逻辑440重设为值“2’b011”,用以启动载入检测计数逻辑440。不同的初始值“2’b001”和“2’b011”用以让后续元件在判断时间点辨认应该监听由载入执行单元155(0)还是由载入执行单元155(1)广播的数据高速缓存存取状态信号S12(0)/S12(1):当载入检测计数逻辑440由比较器431重设时,则说明是由载入执行单元155(0)写回的载入写回信号S11(0)引起,将载入检测计数逻辑440重设为值“2’b001”;当由比较器432设置时,则说明是由载入执行单元155(1)写回的载入写回信号S11(1)引起,将载入检测计数逻辑440重设为值“2’b011”。
比较器450持续比较载入检测计数逻辑440的值D43及判断计数值预设值“2’b100”。当二者相同时,比较器450输出致能信号E43给比较器471,驱动比较器471判断由载入执行单元155(0)广播的数据高速缓存存取状态信号S12(0)为命中或未命中。当数据高速缓存存取状态信号S12(0)为未命中时,比较器471驱动输入电路473重设载入确认寄存器420为“0”,用以指出条目141(i)的微指令的第j个操作数的数据载入未确认。此外,比较器460持续比较载入检测计数逻辑440的值D43及判断计数值预设值“2’b101”。当二者相同时,比较器450输出致能信号E47给比较器471,驱动比较器472判断由载入执行单元155(1)广播的数据高速缓存存取状态信号S12(1)为命中或未命中。当数据高速缓存存取状态信号S12(1)为未命中时,比较器472驱动输入电路473重设载入确认寄存器420为“0”,用以指出条目141(i)的微指令的第j个操作数的数据载入未确认。图7中其他组件的详细运作可参考图4的相关说明,为求说明书简洁不再赘述。
表2显示微指令于本发明实施例的超标量微处理器中的运行顺序:
表2
微指令 | T<sub>0</sub> | … | T<sub>n-2</sub> | T<sub>n-1</sub> | T<sub>n</sub> |
A1=LD0[Addr1]; | X | … | LD0 | LD1 | LD2 |
A2=LD1[Addr2]; | X | … | LD0 | LD1 | LD2 |
A3=IADD A1,A2; | … | Disp | EX0 | ||
第一载入检测计数逻辑的值 | 000 | … | 001 | 010 | 100 |
第二载入检测计数逻辑的值 | 000 | … | 011 | 110 | 101 |
第一载入检测计数逻辑关联于微指令“A3=IADD A1,A2;”中的操作数“A1”,以及第二载入检测计数逻辑关联于微指令“A3=IADD A1,A2;”中的操作数“A2”。在时间点T0,载入微指令“A1=LD0[Addr1];”被派遣至载入执行单元155(0),同时载入微指令“A2=LD1[Addr2];”被派遣至载入执行单元155(1)。在时间点Tn-2,载入执行单元155(0)广播载入写回信号 S11(0),使得第一载入检测计数逻辑的值被设为“2’b001”,载入执行单元155(1)广播载入写回信号S11(1),使得第二载入检测计数逻辑的值被设为“2’b011”。在时间点Tn-1,微指令“A3=IADD A1,A2;”被挑选(标示为“Disp”),“A1”关联的第一载入检测计数逻辑的值更新为“2’b010”,同时“A2”关联的第二载入检测计数逻辑的值更新为“2’b110”。在时间点Tn,微指令“A3=IADD A1,A2;”被派遣至驱动算术逻辑单元251(标示为“EX0”),第一载入检测计数逻辑的值更新为“2’b100”,并且第二载入检测计数逻辑的值更新为“2’b101”。由于第一及第二载入检测计数逻辑的值分别到达“2’b100”及“2’b101”,关联于微指令“A3=IADD A1,A2;”中的操作数“A1”及“A2”的操作数合格检查器都必须分别检查载入执行单元155(0)及155 (1)广播的数据高速缓存存取状态信号S12(0)及S12(1)。
在一些实施例中,本领域技术人员可修改图7所示的操作数合格检查器 610(j)来判断间接依赖二载入微指令的来源操作数的数据载入是否确认。以下更进一步描述依赖于微指令“A3=IADD A1,A2”的微指令“B1=IMUL A3, “3””中的操作数“A3”的操作数合格检查器610(j)如何运作。微指令“A3=IADD A1,A2”的合格检查器510(i)还包括一个比较器(图6未绘示),其关联于操作数“A1”的操作数合格检查器610(j)及操作数“A2”的操作数合格检查器610(j+1)运作。该比较器比较操作数“A1”的操作数合格检查器610(j)的载入检测计数逻辑(即表2中的第一载入检测计数逻辑)锁存的值与一预设值“2’b010”,并且比较操作数“A2”的操作数合格检查器610(j+1)的载入检测计数逻辑(即表2中的第二载入检测计数逻辑)锁存的值与第二预设值“2’b110”。当第一和第二载入检测计数逻辑同时分别到达预设认值“2’b010”和“2’b110”时,设定同步计数值为第三预设值“2’b111”。当微指令“A3=IADD A1,A2”的合格检查器510(i)在确认微指令“A3=IADD A1,A2”已经被派遣并执行写回(write back)时,产生写回信号S43,其乘载微指令“A3=IADD A1,A2”的唯一标识符及该同步计数值“2’b111”,并广播写回信号S43给其他微指令的操作数合格检查器。
依赖于微指令“A3=IADD A1,A2”的微指令“B1=IMUL A3,“3””的操作数“A3”的操作数合格检查器610(j)在接收到前述写回信号S43(即对应图4的写回信号S41)将自身的载入检测计数逻辑440的值同步为所述第五预设值“2’b111”。当载入检测计数逻辑440的值为“2’b111”时,操作数“A3”的操作数合格检查器610(j)需同时判断第一载入执行单元155(0)广播的第一数据高速缓存存取状态信号S12(0)及第二载入执行单元155 (1)广播的第二数据高速缓存存取状态信号S12(1),当第一及第二数据高速缓存存取状态信号S12(0)及S12(1)的均为命中时,才输出载入确认信号S31(j)为1,用以指出微指令的操作数“A3”载入确认,第一及第二数据高速缓存存取状态信号S12(0)及S12(1)一旦有一者为未命中,则重设载入确认寄存器420为“0”,以输出载入未确认信号S31(j)用以指出微指令的操作数“A3”并未载入确认。
值得注意的是,在图5包括2个载入执行单元155(0)和155(1)的实施例中,图7所示的操作数合格检查器610(j)的方块图仅为举例,本发明并不局限于此,在其它实施方式中,图7的操作数合格检查器610(j)还可包括二个载入检测计数逻辑440分别检测二个载入执行单元155(0)和 155(1)所执行的载入指令的执行情况(例如Hit/Miss)。前述图7的操作数合格检查器610(j)的载入检测计数逻辑440采用了比较巧妙的计数方式:载入执行单元155(0)对应计数值“2’b000”、“2’b001”、“2’b010”及“2’b100”,载入执行单元155(1)对应计数值“2’b000”、“2’b011”、“2’b110”及“2’b101”。从而只需一个载入检测计数逻辑440即足够表征二个载入执行单元155(0) 和155(1)所执行的载入指令的运行时间,进一步节省了一个载入检测计数逻辑的电路面积。
图8是依据本发明实施例的微指令调度方法流程图。此方法由合格检查器210(i)或510(i)执行,用以依据载入微指令的执行状态调度直接依依赖于载入微指令的运算微指令。合格检查器210(i)或510(i)在每个时脉周期检测载入执行单元155、155(0)或155(1)广播的载入写回信号S11、 S11(0)或S11(1)(步骤S810),并依据载入写回信号S11、S11(0)或S11(1)的内容判断是否启动载入检测计数逻辑440(步骤S820)。从另一方面说,步骤S820判断载入执行单元155、155(0)或155(1)是否唤醒条目(i)的微指令。详细来说,合格检查器210(i)的操作数合格检查器 310(0)至310(p)中的每一个判断载入写回信号S11中是否包含依赖寄存器410存储的值,或者合格检查器510(i)的操作数合格检查器610(0)至 610(p)中的每一个判断载入写回信号S11(0)或S11(1)中是否包含依赖寄存器410存储的值。步骤S820可通过比较器431或432完成。当判定启动载入检测计数逻辑440后(步骤S820中“是”的路径),载入检测计数逻辑440开始循环左移(步骤S830)。在其它实施方式中,步骤830中载入检测计数逻辑440也可通过其它方式计数(例如每过一时脉周期将计数值加 1),本发明不限于此。接着,在被启动的载入检测计数逻辑440到达预设值 (例如载入检测计数逻辑从“2’b001”循环左移达到预设值“2’b100”,或者从“2’b011”循环左移达到预设值“2’b101”)时,判断直接依赖的载入微指令的执行状态是否为数据高速缓存命中(步骤S850)。步骤S850可通过检测载入检测计数逻辑440的值是否到达该预设值来判定是否到达判断时间点。步骤S850另可通过合格检查器210(i)的一个操作数合格检查器中的比较器450完成,或通过合格检查器510(i)的一个操作数合格检查器中的比较器450或/以及另一个操作数合格检查器中的比较器460完成。当直接依赖的载入微指令的执行状态为数据高速缓存命中且该微指令已经被派遣至算术逻辑单元251执行时(步骤S850中“是”的路径),移除保留站队列 241中条目241(i)的微指令(步骤S860)。步骤S860可通过驱动释放电路 250完成。当依赖的载入微指令的执行状态为数据高速缓存未命中且该微指令已经被派遣至算术逻辑单元251执行时(步骤S850中“否”的路径),杀掉条目(i)的微指令的执行或从指令派遣单元删除条目(i)的微指令(步骤S870)。步骤S870可通过驱动算术逻辑单元251完成。在此须注意的是,当依赖的载入微指令的执行状态为数据高速缓存未命中时,条目(i)的微指令亦可能尚未被指令派遣单元242挑选和派遣,使得步骤S870不需要执行终止或删除,本发明并不因此局限。
图9是依据本发明实施例的微指令调度方法流程图。此方法由合格检查器210(i)或510(i)执行,用以依据载入微指令的执行状态调度间接依赖于载入微指令的运算微指令。合格检查器210(i)或510(i)(关联于第一微指令)在每个时脉周期检测其他微指令(如第二微指令)的操作数合格检查器广播的写回信号S41(步骤S910),并依据写回信号S41的内容判断是否同步载入检测计数逻辑的值(步骤S920),即是否将自身的第一载入检测计数逻辑的值设为写回信号S41所携带的广播该写回信号S41的第二微指令的操作数合格检查器的一第二载入检测计数逻辑的值。详细来说,合格检查器210(i)的操作数合格检查器310(0)至310(p)中的每一个或合格检查器510(i)的操作数合格检查器610(0)至610(p)中的每一个判断写回信号S41所包含的第二微指令的唯一标识符是否与依赖寄存器430存储的唯一标识符相等。步骤S920可通过比较器421完成。当判定同步载入检测计数逻辑的值后(步骤S920中“是”的路径),载入检测计数逻辑440的值设定为该写回信号S41的第二微指令的操作数合格检查器的一第二载入检测计数逻辑的值,并开始循环左移。在其它实施方式中,步骤930中载入检测计数逻辑440也可通过其它方式计数(例如每过一时脉周期在同步后数值的基础上加1),本发明不限于此。接着,在被同步的第一载入检测计数逻辑 440的值到达预设值(例如载入检测计数逻辑440从“2’b010”循环左移达到预设值“2’b100”,或者从“2’b110”循环左移达到预设值“2’b101”)时,判断间接依赖的所有载入微指令的执行状态是否皆为数据高速缓存命中(步骤S950)。步骤S950可通过检测载入检测计数逻辑440的值是否到达该预设值来判定是否到达判断时间点。步骤S950另可通过合格检查器210(i) 的一个操作数合格检查器中的比较器450完成,或通过合格检查器510(i) 的一个操作数合格检查器中的比较器450或/以及另一个操作数合格检查器中的比较器460完成。当间接依赖的载入微指令的执行状态皆为数据高速缓存命中且该第一微指令已经被派遣至算术逻辑单元251执行时(步骤S950 中“是”的路径),移除保留站队列241中条目241(i)的微指令(步骤S960)。步骤S960可通过驱动释放电路250完成。当依赖的任一载入微指令的执行状态为数据高速缓存未命中且该第一微指令已经被派遣至算术逻辑单元251 执行时(步骤S950中“否”的路径),算术逻辑单元251杀掉第一微指令的执行(步骤S970)。于此须注意的是,当依赖的载入微指令的执行状态为数据高速缓存未命中时,条目(i)的第一微指令亦可能尚未被指令派遣单元 242挑选,使得步骤S970不需要执行删除,本发明并不因此局限。
虽然图1至图7中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,已达成更佳的技术效果。此外,虽然图8 至图9的处理步骤采用特定的顺序来执行,但是在不违反发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了本领域技术人员显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。
【符合说明】
100 微处理器;
110 指令高速缓存器;
120 指令解码器;
130 寄存器重命名表;
140 调度器;
141、143 保留站队列;
241(0)、241(1)至241(q) 条目;
242 指令派遣单元;
145 载入队列;
147 存储队列;
150 执行单元;
151 整数执行单元;
153 浮点数执行单元;
155、155(0)、155(1) 载入执行单元;
157 存储执行单元;
160 重排序缓存器;
170 第一级数据高速缓存器;
180 第二级数据高速缓存器;
210 合格检查器集合;
210(0)至210(q)、210(i) 合格检查器;
230 视窗检查器;
250 释放电路;
S11、S11(0)、S11(1) 载入写回信号;
S12、S12(0)、S12(1) 高速缓存存取状态信号;
S13、S13(i) 载入确认/未确认信号;
S16、S17、S18、S18(j)、S19、S19(j) 信号;
310(0)至310(p)、310(j) 操作数合格检查器;
S31(0)至S31(p)、S31(j) 就绪/未就绪信号;
330 与门;
E41、E42、E43、E44、E45、E46、E47 致能信号;
S41、S43 写回信号;
410 依赖寄存器;
420 载入确认寄存器;
421、432、460、450、471、472 比较器;
423、433、434、473 输入电路;
461 派遣确认逻辑;
440 载入检测计数逻辑;
463 微指令寄存器;
465 传送电路;
510 合格检查器集合;
510(0)至510(q)、510(i) 合格检查器;
610(0)至610(p)、610(j) 操作数合格检查器;
S810~S870 方法步骤;
S910~S970 方法步骤。
Claims (20)
1.一种微指令调度方法,由第一合格检查器执行,其中,所述第一合格检查器关联于第一微指令,以及所述第一微指令依赖于由载入执行单元执行的载入微指令,所述方法包含:
检测所述载入执行单元广播的载入写回信号;
依据所述载入写回信号的内容判断是否启动载入检测计数逻辑;
当被启动的所述载入检测计数逻辑到达一预设值时,判断所述载入微指令的执行状态是否为数据高速缓存命中;以及
当所述载入微指令的所述执行状态为数据高速缓存命中且所述第一微指令已经被派遣至算术逻辑单元执行时,驱动释放电路以移除保留站队列中的所述第一微指令,
其中所述方法还包含:
在所述第一微指令被派遣至所述算术逻辑单元执行后,所述算术逻辑单元广播写回信号给其他合格检查器,用以让第二合格检查器同步所述载入检测计数逻辑的值,其中,所述第二合格检查器将所述第二合格检查器中包括的第二载入检测计数逻辑的值同步为第一载入检测计数逻辑的值,并且所述第二合格检查器关联于依赖于所述第一微指令的第二微指令。
2.根据权利要求1所述的微指令调度方法,还包含:
当所述载入微指令中的任一个的所述执行状态为数据高速缓存未命中时,驱动所述算术逻辑单元杀掉所述第一微指令的执行。
3.根据权利要求1所述的微指令调度方法,其中,当所述载入微指令的所述执行状态为数据高速缓存未命中时,保留所述保留站队列中的所述第一微指令不被移除。
4.根据权利要求1所述的微指令调度方法,其中,当判定要启动所述载入检测计数逻辑时,设定所述第一微指令的操作数的就绪信号,当所述第一微指令的所有操作数的就绪信号都被设定之后,所述第一微指令被派遣至所述算术逻辑单元执行。
5.根据权利要求4所述的微指令调度方法,其中,
当所述载入微指令中的所述执行状态为数据高速缓存未命中时,清除所述第一微指令的所述就绪信号,待所述载入微指令执行完成后,再设定所述就绪信号。
6.根据权利要求1所述的微指令调度方法,还包含:
当所述载入写回信号所包含的所述载入微指令的唯一标识符与所述第一微指令所依赖的唯一标识符相等时,判定要启动所述载入检测计数逻辑。
7.根据权利要求1所述的微指令调度方法,其中当所述第二合格检查器同步所述载入检测计数逻辑的值时,设定所述第二微指令的就绪信号,当所同步的所述载入检测计数逻辑的值到达所述预设值时,判断所述载入微指令的所述执行状态是否为数据高速缓存命中。
8.一种微指令调度装置,包含:
保留站队列;
释放电路,耦接调度器;以及
第一合格检查器,耦接所述释放电路,检测第一载入执行单元广播的第一载入写回信号,依据所述第一载入写回信号的内容判断是否启动载入检测计数逻辑;当被启动的所述载入检测计数逻辑到达第一预设值时,判断第一载入微指令的执行状态是否为数据高速缓存命中,以及当所述第一载入微指令的所述执行状态为数据高速缓存命中且第一微指令已经被派遣至算术逻辑单元执行时,驱动所述释放电路以移除所述保留站队列中的所述第一微指令,
其中,所述第一合格检查器关联于所述第一微指令,以及所述第一微指令依赖于由所述第一载入执行单元执行的所述第一载入微指令,
其中所述第一微指令被派遣至所述算术逻辑单元执行之后,所述算术逻辑单元广播写回信号给其他合格检查器,用以让第二合格检查器同步所述第一合格检查器的所述载入检测计数逻辑锁存的值,其中,所述第二合格检查器将所述第二合格检查器中包括的第二载入检测计数逻辑的值同步为第一载入检测计数逻辑的值,并且所述第二合格检查器关联于直接依赖所述第一微指令的第二微指令。
9.根据权利要求8所述的微指令调度装置,其中,当判定要启动所述载入检测计数逻辑时,设定所述第一微指令的操作数的就绪信号,当所述第一微指令的所有操作数的就绪信号都被设定之后,指令派遣单元从所述保留站队列挑选所述第一微指令,并且派遣至所述算术逻辑单元执行。
10.根据权利要求8所述的微指令调度装置,其中,所述第一合格检查器包含:
多个操作数合格检查器,其中,每一所述操作数合格检查器关联于所述第一微指令的多个操作数中的一个,每一所述合格检查器包含一个上述载入检测计数逻辑,当相应的所述载入检测计数逻辑被启动并到达所述第一预设值时,相应的所述操作数合格检查器依据所述第一载入执行单元广播的第一数据高速缓存存取状态信号判断所述相应操作数直接依赖的所述第一载入微指令的所述执行状态为数据高速缓存命中或数据高速缓存未命中;当所述第一载入微指令的所述执行状态为数据高速缓存命中时,输出载入确认信号;以及
与门,耦接于所述操作数合格检查器,当所有所述操作数合格检查器皆输出所述载入确认信号时,输出总载入确认信号,以驱动所述释放电路以移除所述保留站队列中的所述第一微指令。
11.根据权利要求10所述的微指令调度装置,其中,每一所述操作数合格检查器包含:
所述载入检测计数逻辑,初始锁存第一值,并且在每个时脉周期改变所述锁存的值;
第一比较器,耦接于所述载入检测计数逻辑,反复比较所述第一微指令直接依赖的唯一标识符与所述第一载入写回信号乘载的唯一标识符;以及当所述第一微指令直接依赖的唯一标识符与所述第一载入写回信号乘载的唯一标识符相等时,重设所述第一值;
第二比较器,耦接于所述载入检测计数逻辑,持续比较所述载入检测计数逻辑中所述锁存的值及所述第一预设值;当所述锁存的值相同于所述第一预设值,输出致能信号给第三比较器;以及
所述第三比较器,耦接于所述第二比较器,判断所述第一数据高速缓存存取状态信号为命中或未命中;当所述第一数据高速缓存存取状态信号为命中时,输出所述载入确认信号。
12.根据权利要求11所述的微指令调度装置,其中所述载入检测计数逻辑为3比特位移寄存器,并且在每个时脉周期循环位移一个比特;所述第一值为“2’b000”;当所述第一微指令直接依赖的唯一标识符与所述第一载入写回信号乘载的唯一标识符相等时,所述第一比较器重设所述第一值为“2’b001”;以及所述第一预设值为“2’b100”。
13.根据权利要求8所述的微指令调度装置,其中当所述第一载入微指令的所述执行状态为数据高速缓存未命中时,所述第一合格检查器驱动所述算术逻辑单元终止所述第一微指令的执行,或驱动调度器从指令派遣单元删除所述第一微指令。
14.根据权利要求13所述的微指令调度装置,其中,当所述第一载入微指令的所述执行状态为数据高速缓存未命中时,所述第一合格检查器保留所述保留站队列中的所述微指令不会被移除。
15.根据权利要求10所述的微指令调度装置,其中,每一所述操作数合格检查器包含:
所述载入检测计数逻辑,初始锁存第一值,并且在每个时脉周期改变所述锁存的值;
第一比较器,耦接于所述载入检测计数逻辑,反复比较所述第一微指令直接依赖的唯一标识符与所述第一载入写回信号乘载的唯一标识符,当所述第一微指令直接依赖的唯一标识符与所述第一载入写回信号乘载的唯一标识符相等时,重设所述第一值为第二值;
第二比较器,耦接于所述载入检测计数逻辑,反复比较所述第一微指令直接依赖的唯一标识符与第二载入写回信号乘载的唯一标识符,其中所述第二载入写回信号从第二载入执行单元广播;以及当所述第一微指令直接依赖的唯一标识符与所述第二载入写回信号乘载的唯一标识符相等时,重设所述第一值为第三值,其中所述第三值不同于所述第二值;
第三比较器,耦接于所述载入检测计数逻辑,持续比较所述载入检测计数逻辑中所述锁存的值及第一预设值;当所述锁存的值相同于所述第一预设值,输出第一致能信号给第四比较器;
所述第四比较器,耦接于所述第三比较器,判断所述第一数据高速缓存存取状态信号为命中或未命中;当所述第一数据高速缓存存取状态信号为命中时,输出所述载入确认信号;
第五比较器,耦接于所述载入检测计数逻辑,持续比较所述载入检测计数逻辑中所述锁存的值及第二预设值;当所述锁存的值相同于所述第二预设值,输出第二致能信号给第六比较器;以及
所述第六比较器,耦接于所述第五比较器,判断所述第二载入执行单元广播的第二数据高速缓存存取状态信号为命中或未命中;当所述第二数据高速缓存存取状态信号为命中时,输出所述载入确认信号。
16.根据权利要求15所述的微指令调度装置,其中所述载入检测计数逻辑为3比特位移寄存器,并且在每个时脉周期循环位移一个比特;所述第一值为“2’b000”;所述第二值为“2’b001”;所述第三值为“2’b011”;所述第一预设值为“2’b100”;以及所述第二预设值为“2’b101”。
17.根据权利要求8所述的微指令调度装置,所述第二合格检查器依据所述写回信号将第二载入检测计数逻辑的值同步为所述载入检测计数逻辑的值,并且在所述第二载入检测计数逻辑到达所述第一预设值时,所述第二合格检查器判断所述第一载入微指令的所述执行状态是否为数据高速缓存命中。
18.根据权利要求10所述的微指令调度装置,其中,所述第一合格检查器还包含:
第七比较器,耦接每个操作数合格检查器,持续比较每个操作数合格检查器的所述载入检测计数逻辑中所锁存的值及第三预设值或第四预设值;当所述多个操作数合格检查器的所述载入检测计数逻辑中有两者所锁存的值分别相同于所述第三预设值及所述第四预设值,设定同步计数值为第五预设值,当所述第一微指令被派遣至所述算术逻辑单元执行之后,广播写回信号给其他合格检查器,用以让第二合格检查器将第二载入检测计数逻辑的值同步为所述第五预设值,其中,所述第二合格检查器关联于直接依赖所述第一微指令的第二微指令。
19.根据权利要求18所述的微指令调度装置,其中,当所述第二合格检查器所包含的所述第二载入检测计数逻辑的值为所述第五预设值时,所述第二合格检查器判断所述第一载入执行单元广播的所述第一数据高速缓存存取状态信号及第二载入执行单元广播的第二数据高速缓存存取状态信号。
20.根据权利要求18所述的微指令调度装置,其中,所述载入检测计数逻辑及所述第二载入检测计数逻辑皆为3比特位移寄存器,并且在每个时脉周期循环位移一个比特;所述第三预设值为“2’b010”,所述第四预设值为“2’b110”以及所述第五预设值为“2’b111”。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810088322.4A CN108279928B (zh) | 2018-01-30 | 2018-01-30 | 微指令调度方法及使用此方法的装置 |
US16/149,681 US10860327B2 (en) | 2018-01-30 | 2018-10-02 | Methods for scheduling that determine whether to remove a dependent micro-instruction from a reservation station queue based on determining a cache hit/miss status of a load micro-instruction once a count reaches a predetermined value and an apparatus using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810088322.4A CN108279928B (zh) | 2018-01-30 | 2018-01-30 | 微指令调度方法及使用此方法的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108279928A CN108279928A (zh) | 2018-07-13 |
CN108279928B true CN108279928B (zh) | 2021-03-19 |
Family
ID=62805758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810088322.4A Active CN108279928B (zh) | 2018-01-30 | 2018-01-30 | 微指令调度方法及使用此方法的装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10860327B2 (zh) |
CN (1) | CN108279928B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209426B (zh) * | 2019-06-19 | 2021-05-28 | 上海兆芯集成电路有限公司 | 指令执行方法及指令执行装置 |
CN112286577B (zh) * | 2020-10-30 | 2022-12-06 | 上海兆芯集成电路有限公司 | 处理器及其操作方法 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778210A (en) * | 1996-01-11 | 1998-07-07 | Intel Corporation | Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time |
US7200737B1 (en) * | 1996-11-13 | 2007-04-03 | Intel Corporation | Processor with a replay system that includes a replay queue for improved throughput |
US6094717A (en) * | 1998-07-31 | 2000-07-25 | Intel Corp. | Computer processor with a replay system having a plurality of checkers |
US6728843B1 (en) * | 1999-11-30 | 2004-04-27 | Hewlett-Packard Development Company L.P. | System and method for tracking and processing parallel coherent memory accesses |
US6912648B2 (en) * | 2001-12-31 | 2005-06-28 | Intel Corporation | Stick and spoke replay with selectable delays |
US6925550B2 (en) * | 2002-01-02 | 2005-08-02 | Intel Corporation | Speculative scheduling of instructions with source operand validity bit and rescheduling upon carried over destination operand invalid bit detection |
US6950925B1 (en) * | 2002-08-28 | 2005-09-27 | Advanced Micro Devices, Inc. | Scheduler for use in a microprocessor that supports data-speculative execution |
US7363470B2 (en) * | 2003-05-02 | 2008-04-22 | Advanced Micro Devices, Inc. | System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor |
US7111153B2 (en) * | 2003-09-30 | 2006-09-19 | Intel Corporation | Early data return indication mechanism |
WO2007031696A1 (en) * | 2005-09-13 | 2007-03-22 | Arm Limited | Cache miss detection in a data processing apparatus |
US7490224B2 (en) * | 2005-10-07 | 2009-02-10 | International Business Machines Corporation | Time-of-life counter design for handling instruction flushes from a queue |
US7721071B2 (en) * | 2006-02-28 | 2010-05-18 | Mips Technologies, Inc. | System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor |
CN100514283C (zh) * | 2007-03-19 | 2009-07-15 | 中国人民解放军国防科学技术大学 | 基于缓冲的流水线无停顿控制机制 |
US7861066B2 (en) * | 2007-07-20 | 2010-12-28 | Advanced Micro Devices, Inc. | Mechanism for predicting and suppressing instruction replay in a processor |
US7930522B2 (en) * | 2008-08-19 | 2011-04-19 | Freescale Semiconductor, Inc. | Method for speculative execution of instructions and a device having speculative execution capabilities |
US8918625B1 (en) * | 2010-11-24 | 2014-12-23 | Marvell International Ltd. | Speculative scheduling of memory instructions in out-of-order processor based on addressing mode comparison |
CN102662634B (zh) * | 2012-03-21 | 2014-10-29 | 杭州中天微系统有限公司 | 非阻塞发射和执行的存储器访问执行装置 |
US9489206B2 (en) * | 2013-07-16 | 2016-11-08 | Advanced Micro Devices, Inc. | Dependent instruction suppression |
US10140210B2 (en) * | 2013-09-24 | 2018-11-27 | Intel Corporation | Method and apparatus for cache occupancy determination and instruction scheduling |
US10649780B2 (en) * | 2014-04-01 | 2020-05-12 | The Regents Of The University Of Michigan | Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order |
US20160026486A1 (en) * | 2014-07-25 | 2016-01-28 | Soft Machines, Inc. | An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture |
WO2016097791A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10146546B2 (en) * | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Load replay precluding mechanism |
US20160328237A1 (en) | 2015-05-07 | 2016-11-10 | Via Alliance Semiconductor Co., Ltd. | System and method to reduce load-store collision penalty in speculative out of order engine |
US11061672B2 (en) * | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
US9921833B2 (en) * | 2015-12-15 | 2018-03-20 | International Business Machines Corporation | Determining of validity of speculative load data after a predetermined period of time in a multi-slice processor |
CN106126336B (zh) * | 2016-06-17 | 2019-06-04 | 上海兆芯集成电路有限公司 | 处理器以及调度方法 |
CN107066238A (zh) * | 2017-04-18 | 2017-08-18 | 上海兆芯集成电路有限公司 | 执行高速缓存行未对齐加载指令的系统和方法 |
-
2018
- 2018-01-30 CN CN201810088322.4A patent/CN108279928B/zh active Active
- 2018-10-02 US US16/149,681 patent/US10860327B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20190235875A1 (en) | 2019-08-01 |
CN108279928A (zh) | 2018-07-13 |
US10860327B2 (en) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3091433B1 (en) | System and method to reduce load-store collision penalty in speculative out of order engine | |
US9262171B2 (en) | Dependency matrix for the determination of load dependencies | |
US9058180B2 (en) | Unified high-frequency out-of-order pick queue with support for triggering early issue of speculative instructions | |
JP3580657B2 (ja) | 並列マルチタスキングの方法及びシステム | |
US7721071B2 (en) | System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor | |
US7685410B2 (en) | Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects | |
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
CN108415730B (zh) | 微指令调度方法及使用此方法的装置 | |
US9086889B2 (en) | Reducing pipeline restart penalty | |
US8074060B2 (en) | Out-of-order execution microprocessor that selectively initiates instruction retirement early | |
US20090037697A1 (en) | System and method of load-store forwarding | |
US7711934B2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
US20170109093A1 (en) | Method and apparatus for writing a portion of a register in a microprocessor | |
US20080244244A1 (en) | Parallel instruction processing and operand integrity verification | |
US20160011877A1 (en) | Managing instruction order in a processor pipeline | |
US9223577B2 (en) | Processing multi-destination instruction in pipeline by splitting for single destination operations stage and merging for opcode execution operations stage | |
CN108279928B (zh) | 微指令调度方法及使用此方法的装置 | |
US6708267B1 (en) | System and method in a pipelined processor for generating a single cycle pipeline stall | |
US20240020120A1 (en) | Vector processor with vector data buffer | |
US10740102B2 (en) | Hardware mechanism to mitigate stalling of a processor core | |
US6298436B1 (en) | Method and system for performing atomic memory accesses in a processor system | |
US10909034B2 (en) | Issue queue snooping for asynchronous flush and restore of distributed history buffer | |
US6535973B1 (en) | Method and system for speculatively issuing instructions | |
CN117742796B (zh) | 指令唤醒方法、装置以及设备 | |
US12112172B2 (en) | Vector coprocessor with time counter for statically dispatching instructions |
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 |
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. |
|
CP03 | Change of name, title or address |