微指令调度方法及使用此方法的装置与流程

文档序号:14940730发布日期:2018-07-13 20:40阅读:184来源:国知局
本发明涉及一种微处理器技术,特别是一种微指令调度方法及使用此方法的装置。
背景技术
::在现在的超标量微处理器(superscalarmicroprocessor),保留站(reservationstation)负责调度所有的微指令。除了载入微指令以外,大部分微指令执行的延迟是固定的。微处理器中的存储器系统通常采用阶层架构,包含:第一级数据高速缓存器(level-1datacache);第二级数据高速缓存器(level-2datacache);及主存储器(mainmemory)。由于载入微指令于执行时可能发生第一级数据高速缓存器未命中(l1cachemiss),导致延迟是变动的。有的算术逻辑微指令依赖(depend)于载入微指令,即,算术逻辑微指令需要载入微指令的执行结果作为其来源操作数(sourceoperand)。为简化设计,传统的保留站通常也将载入微指令执行的延迟视为固定。也就是说,保留站假设载入微指令派遣至载入流水线后的第n个时脉周期(clockcycles)就能顺利取得结果。所以,保留站于载入微指令派遣至载入流水线后的第n-2个时脉周期便将后续依赖于该载入微指令的算术逻辑微指令派遣至算术逻辑单元(alu,arithmeticlogicunit),并清除相应队列中的算术逻辑微指令。当载入微指令被派遣后的n个时脉周期,高速缓存并没有命中(cachemiss),已经派遣至算术逻辑单元的算术逻辑微指令会因为数据还未准备好而执行失败,使得保留站需要重新执行(replay)算术逻辑微指令。然而,重新执行算术逻辑微指令会耗费大量的时间,降低微处理器的效能。因此,需要一种算术逻辑微指令调度方法及使用此方法的装置,用以避免因高速缓存器未命中而重新执行算术逻辑微指令。技术实现要素:本发明的实施例提出一种微指令调度方法,由合格检查器执行,至少包含以下步骤:检测载入执行单元广播的载入写回信号;依据载入写回信号的内容判断是否启动载入检测计数逻辑;当被启动的载入检测计数逻辑到达预设值时,判断载入微指令的执行状态是否为数据高速缓存命中;以及当载入微指令的执行状态为数据高速缓存命中且微指令已经被派遣至算术逻辑单元执行时,驱动释放电路以移除保留站队列中的微指令。本发明的实施例提出一种微指令调度装置,至少包含保留站队列、释放电路及合格检查器。合格检查器检测载入执行单元广播的载入写回信号;依据载入写回信号的内容判断是否启动载入检测计数逻辑;当被启动的载入检测计数逻辑到达判断计数值时,判断载入微指令的执行状态是否为数据高速缓存命中;以及当载入微指令的执行状态为数据高速缓存命中且微指令已经被派遣至算术逻辑单元执行时,驱动释放电路以移除保留站队列中关联于此合格检查器的微指令。其中,合格检查器关联于微指令,以及微指令依赖于由载入执行单元执行的载入微指令。藉由以上所述的微指令调度方法及装置,保留站队列中的微指令得以保留以避免重新执行(replay)操作。此外,值得注意的是,由于载入执行单元广播的执行状态并不携带唯一标识符,本发明的上述微指令调度方法及装置通过载入检测计数逻辑来保证载入检测计数逻辑达到预设值的合格检查器所关联的微指令一定直接或间接依赖于载入执行单元广播的执行状态对应的载入微指令。附图说明图1是依据本发明实施例的超标量微处理器的方块图。图2是依据本发明实施例的超标量微处理器的方块图。图3是依据本发明实施例的合格检查器的方块图。图4是依据本发明实施例的操作数合格检查器的方块图。图5是依据本发明实施例的包含二个载入执行单元的超标量微处理器的方块图。图6是依据本发明实施例的合格检查器的方块图。图7是依据本发明实施例的适应二个载入执行单元的操作数合格检查器的方块图。图8是依据本发明实施例的微指令调度方法流程图。图9是依据本发明实施例的微指令调度方法流程图。具体实施方式以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的
发明内容必须参考之后的权利要求范围。必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。于权利要求中使用如“第一”、“第二”、“第三”等词用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序、先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。图1是依据本发明实施例的超标量微处理器(superscalarmicroprocessor)的方块图。微处理器100包含指令高速缓存器(instructioncache)110,用以缓存一种指令集架构(instructionsetarchitecture)的宏指令(macro-instructions),例如x86指令集架构等。指令解码器(instructiondecoder)120从指令高速缓存器110接收宏指令,并且将宏指令转译成微指令(micro-instructions)。寄存器重命名表(registeraliastable)130依据微指令依赖关系以程序顺序传送微指令至调度器(scheduler)140中的保留站队列(reservationstationqueue)141至147,以及重排序缓存器(rob,reorderbuffer)160。在一些实施例,保留站队列141至147可实施为独立的队列。在另一些实施例,保留站队列141至147可实施在一个联合队列(unifiedqueue),但使用不同的端口。执行单元150可包含整数执行单元151、浮点数执行单元153、载入执行单元155及存储执行单元157。须注意的是,除了以上所示种类的执行单元外,执行单元150可还包含其它执行单元,例如,分支单元(branchunit)、单指令多数据(single-instruction-multiple-data,simd)执行单元、特别函数单元(specialfunctionunit,sfu)等。在概念上,整数执行单元151、浮点数执行单元153、单指令多数据执行单元及特别函数单元均可看做包含在算术逻辑单元(arithmeticandlogicunit,alu)中,其功能有别于载入执行单元155及存储执行单元157。运算队列141及143、载入队列145及存储队列147分别连接至整数执行单元151、浮点数执行单元153、载入执行单元155及存储执行单元157。运算队列141及143、载入队列145及存储队列147中的微指令可分别被派遣至整数执行单元151、浮点数执行单元153、载入执行单元155及存储执行单元157执行。在此须注意的是,整数执行单元151、浮点数执行单元153、载入执行单元155及存储执行单元157的执行结果是乱序的,所以,每一个微指令包含唯一标识符,例如,重排序缓冲区索引(rob,reorderbufferindexes)、物理寄存器文档索引(prf,physicalregisterfileindexes)等等,用以让执行结果可以安排成原始执行顺序。载入执行单元155连接至第一级数据高速缓存器(level-1l1datacache)170,并且第二级数据高速缓存器(level-2l2datacache)180设置于第一级数据高速缓存器170之后。第二级数据高速缓存器180通过总线接口(未显示于图1)从主存储器(未显示于图1)读取数据,以及写入数据至主存储器。总线接口将微处理器100接上总线,例如,本地总线、存储器总线等。载入执行单元155为一个流水线,在执行载入微指令时,首先向第一级数据高速缓存器170要求一段存储器地址的数据。如果第一级数据高速缓存器170已暂存此存储器地址的数据(又可称为第一级高速缓存命中l1cachehit),则将此数据存储至指定位置,例如指定的寄存器(register)。如果第一级数据高速缓存器170没有暂存此存储器地址的数据(又可称为第一级高速缓存未命中l1cachemiss),则向第二级数据高速缓存器180要求此存储器地址的数据。如果第二级数据高速缓存器180已暂存此存储器地址的数据(又可称为第二级高速缓存命中l2cachehit),则回复数据给第一级数据高速缓存器170。如果第二级数据高速缓存器180也没有暂存此存储器地址的数据(又可称为第二级高速缓存未命中l2cachemiss),则通过总线接口(未显示于图1)从主存储器(未显示于图1)读取数据。因此,本领域技术人员理解载入微指令所需的数据不一定能在预设的时间内(例如,n个时脉周期)取得并存储于目的地位置。整数执行单元151、浮点数执行单元153、载入执行单元155及存储执行单元157执行的微指令间具有各种的依赖关系。常见的依赖关系为一个整数或浮点数运算微指令的来源操作数(sourceoperand)来自于一个载入微指令的结果,举例如下:a1=ld[addr1];a3=iadda1,a2;b1=imula3,“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=imula3,“3”;”,用以将寄存器a3的值(也就是iadd微指令的运算结果)乘上常数“3”,并且存储运算结果写入寄存器b1。微指令“a3=iadda1,a2;”的操作数“a1”直接依赖载入微指令“a1=ld[addr1];”,而微指令“b1=imula3,“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=iadda1,a2;”至整数执行单元151。假设微指令“a3=iadda1,a2;”于派遣至整数执行单元151后的下一个时脉周期(以下称为第n-1个时脉周期)可执行成功:调度器140从运算队列141移除微指令“a3=iadda1,a2;”。接着,调度器140于第n-1个时脉周期派遣微指令“b1=imula3,“3”;”。在第n个时脉周期,如果数据高速缓存并未命中(cachemiss),整数执行单元151因为载入执行单元155尚未取得存储器地址addr1的数据而使得执行微指令“a3=iadda1,a2;”失败,也会因为微指令“a3=iadda1,a2;”执行失败而使得整数执行单元151执行微指令“b1=imula3,“3”;”失败。然而,在第n个时脉周期,微指令“a3=iadda1,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另包含合格检查器集合(qualifiercollection)210,并且合格检查器集合210包含多个合格检查器(qualifiers)210(0)至210(q)。每一个合格检查器唯一对应于保留站队列241中的一个条目,用以决定此条目中的微指令的操作数是否就绪以及所依赖(可为直接依赖或间接依赖)的载入微指令是否已经状态确认。在一实施例中,合格检查器集合210的一部分可设置在调度器140内部。其中,每个微指令可包含多个直接或间接依赖载入微指令的执行结果的操作数(operand),例如,微指令“a3=iadda1,a2;”的操作数“a1”依赖载入微指令“a1=ld[addr1];”的执行结果。当载入指令派遣单元(未显示于图2)派遣一个载入微指令至载入执行单元155后的第n-2个时脉周期,载入执行单元155广播载入写回信号s11给所有合格检查器210(0)至210(q)以及调度器140,其中,载入写回信号s11的目的是告知调度器140中依赖于该载入微指令的所有操作数为就绪(ready),即其依赖关系已经解除。载入写回信号s11乘载此载入微指令的唯一标识符,该唯一标识符可以唯一标识该载入微指令,例如为重排序缓冲区索引(rob,reorderbufferindexes)、物理寄存器文档索引(prf,physicalregisterfileindexes)等等。理论上,调度器140在第n-2个时脉周期接收到载入写回信号s11,使得指令派遣单元242可以从保留站队列241挑选依赖于此载入微指令的执行结果的微指令,具体举例而言,调度器140根据该载入写回信号s11将依赖于此载入微指令的微指令的操作数设定为就绪,如果在第n-1个时脉周期该微指令的所有操作数均就绪,则指令派遣单元242可能会挑选该微指令并派遣此挑选的微指令至算术逻辑单元251。举例来说,调度器140在第n-2个时脉周期接收到载入写回信号s11,其中包含载入微指令a1=ld[addr1]的唯一标识符,如果微指令“a3=iadda1,a2;”的合格检查器判断自身所依赖的唯一标识符等于载入写回信号s11所包含的该唯一标识符,接着,如果在第n-1个时脉周期微指令“a3=iadda1,a2;”的所有操作数均就绪,则指令派遣单元242从保留站队列241挑选微指令“a3=iadda1,a2;”,并且在第n个时脉周期派遣微指令“a3=iadda1,a2;”至算术逻辑单元251,并且从保留站队列241挑选微指令“b1=imula3,“3”;”(因为在第n个时脉周期微指令“b1=imula3,“3”;”的所有操作数均就绪)。当合格检查器210(0)至210(q)中的每一个接收到载入写回信号s11时,首先判断自身多个操作数所依赖的唯一标识符与载入写回信号s11所包含的载入指令的唯一标识符是否相等,即判断相应条目的微指令的来源操作数中的一个是否依赖此载入微指令的执行结果。如果是,则启动载入检测计数逻辑。当被启动的载入检测计数逻辑的值到达一预设值时(例如为数值2,表明达到该载入指令的载入写回信号s11被载入执行单元155广播之后的第2个时脉周期),并且该合格检查器210(i)关联的微指令已经被派遣至算术逻辑单元251执行(例如在第n-1个时脉周期,该微指令被指令派遣单元242从保留站队列241挑选并派遣至算术逻辑单元251执行),通过载入执行单元155广播的数据高速缓存存取状态(cacheaccessstatus)信号s12发现此载入微指令发生数据高速缓存命中时(cachehit),合格检查器210(i)产生载入确认的信号s13驱动释放电路(releasecircuits)250,用以移除保留站队列241中的条目141(i)的微指令,其中,i为0至q间的任意整数。当通过载入执行单元155广播的数据高速缓存存取状态信号s12发现此载入微指令发生数据高速缓存未命中时,合格检查器210(i)产生载入未确认的信号s13。合格检查器210(i)的硬件架构及详细运作可参考以下段落的说明。值得注意的是,上述判断是否发生数据高速缓存命中的流程一定是在该微指令被指令派遣单元242从保留站队列241挑选并派遣至算术逻辑单元251执行之后,由该微指令关联的合格检查器210(i)执行的,因为当判定要启动前述载入检测计数逻辑时,会设定该微指令的就绪信号(readysignal)。但由于一个微指令有多个操作数,只有当该微指令的所有的就绪信号都被设定,该微指令才会被选中并派遣至算术逻辑单元251执行。如果被启动的载入检测计数逻辑的值到达该预设值时(例如表征达到该载入指令的载入写回信号s11被载入执行单元155广播之后的第2个时脉周期),该微指令因其它未就绪或其它原因并未被指令派遣单元242挑选并派遣至算术逻辑单元251执行,则即便判断到发生数据高速缓存命中时(cachehit),合格检查器210(i)也不能发出信号s13驱动释放电路(releasecircuits)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=iadda1,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=iadda1,a2;”的执行,并且,驱动调度器140删除指令派遣单元242中的微指令“b1=imula3,“3”;”(也就是,指令派遣单元242将不会在下一个时脉周期派遣微指令“b1=imula3,“3”;”至算术逻辑单元251)。在一实施例中,当判定要启动前述载入检测计数逻辑(例如当载入写回信号s11所包含的载入微指令的唯一标识符与合格检查器210(i)所关联的微指令所依赖的唯一标识符相等时)时,会设定该微指令的就绪信号(readysignal)。当被启动的载入检测计数逻辑的值到达该预设值时,发现载入微指令发生数据高速缓存未命中时,合格检查器210(i)还会清除保留站队列241中条目(i)的微指令的前述就绪信号(readysignal),后续多个时脉周期之后,当该载入微指令真正执行完成时,例如该载入微指令从第二级数据高速缓存器(l2datacache)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)包含多个操作数合格检查器(operandqualifiers)310(0)至310(p),其中,i为0至q间的任意整数,一个微指令包含多个来源操作数,来源操作数的总数为p+1,例如2、3、4等。每个操作数合格检查器310(j)包含一个前述载入检测计数逻辑。当相应的载入检测计数逻辑被启动并到达一预设值时(例如为数值2,表明达到该载入指令的载入写回信号s11被载入执行单元155广播之后的第2个时脉周期),操作数合格检查器310(j)依据载入执行单元155广播的数据高速缓存存取状态信号s12判断相应的来源操作数直接或间接依赖的载入微指令的执行状态为数据高速缓存命中或未命中;当数据高速缓存存取状态信号s12指示数据高速缓存命中(cachehit)时,输出载入确认信号s31(j),当数据高速缓存存取状态信号s12指示数据高速缓存未命中(cachemiss)时,输出载入未确认信号s31(j),其中,j为0至p间的任意整数。合格检查器210(i)另包含与门(andgate)330,连接至所有操作数合格检查器310(0)至310(p)的输出载入确认信号s31(0)至s31(p)。输出s31(j)指出第j个来源操作数是否载入确认,即其所依赖的载入微指令是否数据高速缓存命中(cachehit)的信息,例如,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)另包含依赖寄存器(dependencyregister)410,用以存储相应条目的微指令的第j个操作数所依赖的微指令的信息,其中,j为1至m间的任意整数。值得注意的是,微指令的操作数所依赖的微指令的信息是由前端生成并存储于依赖寄存器410中,其可能依赖于一载入指令,也可能依赖于其它类型的指令。依赖寄存器410存储其所依赖的微指令的唯一标识符,例如,重排序缓冲区索引、物理寄存器文档索引等等。当载入指令派遣单元(未显示于图1)派遣一个载入微指令至载入执行单元155后的第n-2个时脉周期,载入执行单元155广播载入写回信号s11,并且载入写回信号s11乘载此载入微指令的唯一标识符,当操作数合格检查器310(j)判断其与依赖寄存器410存储的该源操作数所依赖的唯一标识符相等时,启动载入检测计数逻辑440。操作数合格检查器310(j)均包含一个载入检测计数逻辑440,在每个时脉周期改变锁存的值,用以让其他元件辨认目前的阶段状态,例如,是否已经到达一预定值。载入检测计数逻辑440可包含一个3比特位移寄存器(shiftregister),在每个时脉周期循环位移一个比特。比较器431在每个时脉周期比较依赖寄存器410存储的值及载入写回信号(loadwritebacksignal)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)。命中或未命中可使用不同数码或电压水平(voltagelevel)表示。藉由以上的说明,本领域技术人员可理解载入检测计数逻辑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=imula3,“3”;”的操作数“a3”依赖于此微指令“a3=iadda1,a2;”的执行结果。操作数合格检查器310(j)必须统合其他相应合格检查器一样于相同预设时间点(例如为该载入指令的载入写回信号s11被载入执行单元155广播之后的第2个时脉周期),判断同一笔载入微指令的执行发生数据高速缓存命中或未命中。详细来说,操作数合格检查器310(j)另包含微指令寄存器463,用以存储条目(i)的微指令的唯一标识符。派遣确认逻辑(dispatchconfirmationlogics)461确认此条目241(i)的微指令是否已经被图2所示的指令派遣单元242派遣至算术逻辑单元251执行。当确认此条目141(i)的微指令已经被派遣并执行写回(writeback)时,派遣确认逻辑461输出致能信号e44给传送电路465,接着,传送电路465产生写回信号s43,用以乘载微指令寄存器463中条目(i)的微指令的唯一标识符及此刻载入检测计数逻辑440的值d43,以及广播写回信号s43给其他操作数合格检查器,用以通知相应合格检查器同步此刻载入检测计数逻辑440的值d43。于更另一方面来说,条目141(i)的微指令的第j个操作数可间接依赖载入微指令的执行结果,例如,微指令“b1=imula3,“3”;”的操作数“a3”依赖于微指令“a3=iadda1,a2;”的执行结果,而微指令“a3=iadda1,a2;”的操作数“a1”又依赖于微指令“a1=ld[addr1];”的执行结果。操作数合格检查器310(j)可于其载入检测计数逻辑到达一预设值时,判断间接依赖的载入微指令的执行发生数据高速缓存命中或未命中。详细来说,操作数合格检查器310(j)接收其他操作数合格检查器或算术逻辑单元251广播的写回信号s41(即前述其它操作数合格检查器广播的写回信号s43,在每一时脉周期只有1条微指令写回的实施例中,写回信号s41可与载入写回信号s11合并为同一写回信号),该写回信号s41包含其他微指令(例如“a3=iadda1,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微指令t0…tn-2tn-1tna1=ld[addr1];x…ld0ld1ld2a3=iadda1,a2;…dispex0b1=imula3,“3”;…disp第一载入检测计数逻辑的值000000001010100第二载入检测计数逻辑的值000000000010100第一载入检测计数逻辑关联于微指令“a3=iadda1,a2;”中的操作数“a1”,以及第二载入检测计数逻辑关联于微指令“b1=imula3,“3”;”中的操作数“a3”。在时间点t0,载入微指令“a1=ld[addr1];”被派遣至载入执行单元155。在时间点tn-2,载入执行单元155广播载入写回信号s11,使得第一载入检测计数逻辑的值被设为“2’b001”。在时间点tn-1,微指令“a3=iadda1,a2;”被挑选(标示为“disp”),第一载入检测计数逻辑的值更新为“2’b010”,并且第二载入检测计数逻辑的值同步为“2’b010”。在时间点tn,微指令“a3=iadda1,a2;”被派遣至驱动算术逻辑单元251(标示为“ex0”),微指令“b1=imula3,“3”;”被挑选(标示为“disp”),第一载入检测计数逻辑的值更新为“2’b100”,并且第二载入检测计数逻辑的值同步为“2’b100”。由于第一及第二载入检测计数逻辑的值都到达“2’b100”,关联于微指令“a3=iadda1,a2;”及“b1=imula3,“3”;”的合格检查器都必须检查载入执行单元155广播的数据高速缓存存取状态信号s12。在一些实施例中,为提升数据载入的效率,可修改图2所述的架构,包含二个以上(含二个)载入执行单元。图5是依据本发明实施例的包含二个载入执行单元的超标量微处理器的方块图。载入执行单元155(0)及155(1)可并行执行二个载入微指令。因此,一个整数或浮点数运算微指令的两个来源操作数可能分别来自于二个并行执行的载入微指令的结果。举例如下:a1=ld0[addr1];a2=ld1[addr2];a3=iadda1,a2;b1=imula3,“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=iadda1,a2;”,用以将寄存器a1的值(也就是存储器地址addr1的数据)加上寄存器a2的值(也就是存储器地址addr2的数据),并且存储运算结果写入寄存器a3。接着,算术逻辑单元251执行微指令“b1=imula3,“3”;”,用以将寄存器a3的值(也就是iadd微指令的运算结果)乘上常数“3”,并且存储运算结果写入寄存器b1。微指令“a3=iadda1,a2;”的操作数“a1”直接同时依赖于载入微指令“a1=ld0[addr1];”及“a2=ld1[addr2];”,而微指令“b1=imula3,“3”;”的操作数“a3”间接同时依赖于载入微指令“a1=ld0[addr1];”及“a2=ld1[addr2];”。微处理器可包含合格检查器集合510,并且合格检查器集合510包含多个合格检查器510(0)至510(q)。每一个合格检查器唯一对应于保留站队列241中的一个条目,用以决定此条目中的微指令所依赖(可为直接依赖或间接依赖)的载入微指令是否已经就绪。其中,每个微指令可包含多个直接依赖载入微指令的执行结果的操作数,或多个间接依赖载入微指令的执行结果的操作数。例如,微指令“a3=iadda1,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=iadda1,a2;”的合格检查器判断自身的二个操作数所依赖的唯一标识符分别等于载入写回信号s11(0)及s11(1)所包含的该唯一标识符,接着,指令派遣单元242可能在第n-1个时脉周期从保留站队列241挑选就绪的微指令“a3=iadda1,a2;”,并且在第n个时脉周期派遣微指令“a3=iadda1,a2;”至算术逻辑单元251以及从保留站队列241挑选微指令“b1=imula3,“3”;”(因为在第n个时脉周期微指令“b1=imula3,“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)发现需要确认的载入微指令都发生数据高速缓存命中时(cachehit),合格检查器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微指令t0…tn-2tn-1tna1=ld0[addr1];x…ld0ld1ld2a2=ld1[addr2];x…ld0ld1ld2a3=iadda1,a2;…dispex0第一载入检测计数逻辑的值000…001010100第二载入检测计数逻辑的值000…011110101第一载入检测计数逻辑关联于微指令“a3=iadda1,a2;”中的操作数“a1”,以及第二载入检测计数逻辑关联于微指令“a3=iadda1,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=iadda1,a2;”被挑选(标示为“disp”),“a1”关联的第一载入检测计数逻辑的值更新为“2’b010”,同时“a2”关联的第二载入检测计数逻辑的值更新为“2’b110”。在时间点tn,微指令“a3=iadda1,a2;”被派遣至驱动算术逻辑单元251(标示为“ex0”),第一载入检测计数逻辑的值更新为“2’b100”,并且第二载入检测计数逻辑的值更新为“2’b101”。由于第一及第二载入检测计数逻辑的值分别到达“2’b100”及“2’b101”,关联于微指令“a3=iadda1,a2;”中的操作数“a1”及“a2”的操作数合格检查器都必须分别检查载入执行单元155(0)及155(1)广播的数据高速缓存存取状态信号s12(0)及s12(1)。在一些实施例中,本领域技术人员可修改图7所示的操作数合格检查器610(j)来判断间接依赖二载入微指令的来源操作数的数据载入是否确认。以下更进一步描述依赖于微指令“a3=iadda1,a2”的微指令“b1=imula3,“3””中的操作数“a3”的操作数合格检查器610(j)如何运作。微指令“a3=iadda1,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=iadda1,a2”的合格检查器510(i)在确认微指令“a3=iadda1,a2”已经被派遣并执行写回(writeback)时,产生写回信号s43,其乘载微指令“a3=iadda1,a2”的唯一标识符及该同步计数值“2’b111”,并广播写回信号s43给其他微指令的操作数合格检查器。依赖于微指令“a3=iadda1,a2”的微指令“b1=imula3,“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方法步骤。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1