CN105446700A - 一种指令执行方法以及顺序处理器 - Google Patents
一种指令执行方法以及顺序处理器 Download PDFInfo
- Publication number
- CN105446700A CN105446700A CN201410239150.8A CN201410239150A CN105446700A CN 105446700 A CN105446700 A CN 105446700A CN 201410239150 A CN201410239150 A CN 201410239150A CN 105446700 A CN105446700 A CN 105446700A
- Authority
- CN
- China
- Prior art keywords
- instruction
- fused
- combination
- circles
- beats
- 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.)
- Granted
Links
Landscapes
- Slot Machines And Peripheral Devices (AREA)
- Telephone Function (AREA)
Abstract
本发明实施例公开了一种指令执行方法以及顺序处理器,用于在顺序处理器中组合指令,减少空拍,更大程度的发挥处理器性能。本发明实施例方法包括:顺序处理器按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述最大执行拍数,再依次发射融合出的各指令组合,顺序执行各指令组合中的指令。
Description
技术领域
本发明涉及指令处理领域,尤其涉及一种指令执行方法以及顺序处理器。
背景技术
目前的商业处理器CPU根据指令调度方法的不同一般分为两大类:顺序执行和乱序执行。
在顺序执行的处理器中,一条流水线在一个执行周期中有固定的可执行拍数,每个指令有一定的执行拍数,为了使指令顺序提交,处理器设计人员通常在设计时,会为执行拍数较少的指令在其对应流水线中增加空拍(delaystage),从而使得这些执行拍数少的指令与执行拍数长的指令的流水线有相同的级数,达到顺序提交的目的。
但是,在流水线中增加空拍,一条流水线在一个执行周期中只有执行指令的拍数被有效利用了,而增加的空拍在处理器执行时会被浪费掉,此时处理器没有对有效的指令进行处理而空闲下来,这样便降低了处理器的性能。
发明内容
本发明实施例提供了一种指令执行方法以及顺序处理器,用于在顺序处理器中组合指令,减少空拍,更大程度的发挥处理器性能。
本发明实施例第一方面提供了一种指令执行方法,包括:
当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,所述顺序处理器确定所述预置数目为每个指令组合的最大执行拍数;
所述顺序处理器按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述最大执行拍数;
所述顺序处理器依次发射融合出的各指令组合,顺序执行所述各指令组合中的指令。
结合本发明实施例的第一方面,本发明实施例第一方面的第一种实现方式中,所述顺序处理器按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述最大执行拍数具体包括:
所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令,对所述待融合指令执行如下操作:
所述顺序处理器判断所述待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,所述当前指令组合为当前正在融合指令的指令组合,所述剩余拍数为所述最大执行拍数与组合拍数的差值,所述组合拍数为加入所述当前指令组合中所有指令的执行拍数之和;
若大于所述剩余拍数,则更新所述当前指令组合并触发所述顺序处理器判断所述待融合指令的执行拍数是否不大于当前指令组合的剩余拍数的步骤;其中,更新当前指令组合包括结束并保存当前指令组合,新建下一个指令组合作为更新后的当前指令组合;
若不大于所述剩余拍数,则将所述待融合指令加入所述当前指令组合,触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤。
结合本发明实施例第一方面的第一种实现方式,本发明实施例第一方面的第二种实现方式中,所述若大于所述剩余拍数,则更新所述当前指令组合并触发所述顺序处理器判断所述待融合指令的执行拍数是否不大于当前指令组合的剩余拍数具体包括:
若大于所述剩余拍数,则更新所述当前指令组合,判断所述待融合指令的执行拍数是否大于所述最大执行拍数;
若大于所述最大执行拍数,则将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤;
若不大于所述最大执行拍数,则触发所述顺序处理器判断所述待融合指令的执行拍数是否不大于当前指令组合的剩余拍数的步骤。
结合本发明实施例第一方面的第一种实现方式或第二种实现方式,本发明实施例第一方面的第三种实现方式中,若不大于所述剩余拍数,则将所述待融合指令加入所述当前指令组合,触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤具体包括:
若不大于所述剩余拍数,则判断所述待融合指令是否为第一特殊指令或第二特殊指令,所述第一特殊指令为必须单独成组的指令,所述第二特殊指令为不须单独成组但必须放在一个指令组合的最后一条的指令;
若所述待融合指令为第一特殊指令,则更新所述当前指令组合,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤;
若所述待融合指令为第二特殊指令,则将所述待融合指令加入所述当前指令组合再更新所述当前指令组合,触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤;
若所述待融合指令不为第一特殊指令且不为第二特殊指令,则将所述待融合指令加入所述当前指令组合后直接触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤。
结合本发明实施例第一方面的第三种实现方式,本发明实施例第一方面的第四种实现方式中,所述方法还包括:
当所述顺序处理器准备好的指令都加入了指令组合时,所述顺序处理器更新所述当前指令组合。
本发明实施例第二方面提供了一种顺序处理器,包括:
确定模块,用于当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,确定所述预置数目为每个指令组合的最大执行拍数;
融合模块,用于按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述确定模块确定的最大执行拍数;
执行模块,用于依次发射所述融合模块融合出的各指令组合,顺序执行所述各指令组合中的指令。
结合本发明实施例的第二方面,本发明实施例第二方面的第一种实现方式中,所述融合模块具体包括:
读取触发单元,用于依次读取所述指令顺序中下一条指令作为待融合指令,对所述待融合指令触发拍数判断单元;
拍数判断单元,用于判断所述读取触发单元读取的待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,所述当前指令组合为当前正在融合指令的指令组合,所述剩余拍数为所述最大执行拍数与组合拍数的差值,所述组合拍数为加入所述当前指令组合中所有指令的执行拍数之和;
组合更新单元,用于当所述拍数判断单元判断出所述待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新所述当前指令组合并触发所述拍数判断单元;其中,更新当前指令组合包括结束并保存当前指令组合,新建下一个指令组合作为更新后的当前指令组合;
指令更新单元,用于当所述拍数判断单元判断出所述待融合指令的执行拍数不大于当前指令组合的剩余拍数时,将所述待融合指令加入所述当前指令组合,触发所述读取触发单元。
结合本发明实施例第二方面的第一种实现方式,本发明实施例第二方面的第二种实现方式中,所述组合更新单元具体包括:
拍数判断子单元,用于当所述拍数判断单元判断出所述待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新所述当前指令组合,判断所述待融合指令的执行拍数是否大于所述最大执行拍数;
第一单独组合子单元,用于当所述拍数判断子单元判断出所述待融合指令的执行拍数大于所述最大执行拍数时,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述读取触发单元;
否定触发子单元,用于当所述拍数判断子单元判断出所述待融合指令的执行拍数不大于所述最大执行拍数时,触发所述拍数判断单元。
结合本发明实施例第二方面的第一种实现方式或第二种实现方式,本发明实施例第二方面的第三种实现方式中,所述指令更新单元具体包括:
指令判断子单元,用于当所述拍数判断单元判断出所述待融合指令的执行拍数不大于当前指令组合的剩余拍数时,判断所述待融合指令是否为第一特殊指令或第二特殊指令,所述第一特殊指令为必须单独成组的指令,所述第二特殊指令为不须单独成组但必须放在一个指令组合的最后一条的指令;
第二单独组合子单元,用于当所述指令判断子单元判断出所述待融合指令为第一特殊指令时,更新所述当前指令组合,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述读取触发单元;
加入更新子单元,用于当所述指令判断子单元判断出所述待融合指令为第二特殊指令时,将所述待融合指令加入所述当前指令组合再更新所述当前指令组合,触发所述读取触发单元;
加入触发子单元,用于当所述指令判断子单元判断出所述待融合指令不为第一特殊指令且不为第二特殊指令时,将所述待融合指令加入所述当前指令组合后直接触发所述读取触发单元。
结合本发明实施例中第二方面的第三种实现方式,本发明实施例第二方面的第四种实现方式中,所述顺序处理器还包括:
完成更新模块,用于当所述顺序处理器准备好的指令都加入了指令组合时,更新所述当前指令组合。
从以上技术方案可以看出,本发明实施例具有以下优点:本发明实施例中,顺序处理器按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述最大执行拍数,再依次发射融合出的各指令组合,顺序执行各指令组合中的指令,这样将多条指令融合成一个个指令组合发射执行,在一条流水线的一个执行周期中可以同时执行多条指令,增加了一个执行周期中需要执行的有效的指令的拍数,减少了需要填充的空拍,增加了单位时间内处理器对有效的指令进行处理的时间,减少了单位时间内处理器的空闲等待时间,更大程度的发挥了处理器的性能。
附图说明
图1为本发明实施例中指令执行方法一个流程示意图;
图2为本发明实施例中指令执行方法另一个流程示意图;
图3为本发明实施例中指令执行方法另一个流程示意图;
图4为本发明实施例中指令执行方法另一个流程示意图;
图5为本发明实施例中顺序处理器一个结构示意图;
图6为本发明实施例中顺序处理器另一个结构示意图;
图7为本发明实施例中顺序处理器另一个结构示意图;
图8为本发明实施例中顺序处理器另一个结构示意图;
图9为本发明实施例中流水线一个结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中指令执行方法一个实施例包括:
101、当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,所述顺序处理器确定所述预置数目为每个指令组合的最大执行拍数;
当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,该顺序处理器确定该预置数目为每个指令组合的最大执行拍数,该顺序处理器用于表示使用顺序执行的指令调度方法的处理器。
其中,该功能单元也可以称之为执行单元,用于执行指令动作,设定一个功能单元执行一条简单运算指令所用的时间为一拍,可以理解的是,功能单元不一定以物理硬件的形式存在于处理器中,当顺序处理器被设计出来时,假设其能执行的最长拍数值为预置数目,即也可以认为有预置数目个串行在一起的功能单元,由于每个指令的复杂程度不同,所以功能单元执行每条指令需要的拍数也可以不同,将一个指令需要执行的拍数称为该指令的执行拍数,当指令被顺序发射执行时,预置数目个串行在一起的功能单元最多能在一拍同时执行预置数目拍数的指令。
指令组合为多条指令的组合,一个指令组合最多可以容纳的指令的执行拍数为该指令组合的最大执行拍数,可以理解的是,指令组合中容纳的指令的执行拍数之和可以小于或等于该最大执行拍数。
102、顺序处理器按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述最大执行拍数;
顺序处理器确定每个指令组合的最大执行拍数后,按照多条指令的执行排数之和不大于该最大执行拍数的规则,按照指令顺序依次将多条指令融合成指令组合。
该指令顺序为顺序处理器准备好的指令的顺序,可以理解的是,顺序处理器可以重复此融合过程,依次组成多个指令组合,直到将准备好的指令全部融合成各个指令组合。
103、顺序处理器依次发射融合出的各指令组合,顺序执行所述各指令组合中的指令。
顺序处理器融合出指令组合后,依次发射融合出的各指令组合,顺序执行该各指令组合中的指令。
顺序处理器每一拍发射一组指令组合,可以理解的是,步骤102中并不需要将所有的指令都融合成指令组合后才执行步骤103,步骤102与步骤103为一个动态的连续过程,步骤102中融合出一个指令组合后,步骤103中即可以发射该融合出的指令组合,而步骤102此时还在继续融合出更多的指令组合,依次对融合出的指令组合执行步骤103。
本发明实施例中,顺序处理器按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述最大执行拍数,再依次发射融合出的各指令组合,顺序执行各指令组合中的指令,这样将多条指令融合成一个个指令组合发射执行,在一条流水线的一个执行周期中可以同时执行多条指令,增加了一个执行周期中需要执行的有效的指令的拍数,减少了需要填充的空拍,增加了单位时间内处理器对有效的指令进行处理的时间,减少了单位时间内处理器的空闲等待时间,更大程度的发挥了处理器的性能。
上面实施例中,顺序处理器按照指令顺序依次将多条指令融合成指令组合,在实际应用中,顺序处理器可以按照指令顺序对每一个指令依次处理,下面对本发明实施例中指令执行方法进行具体描述,请参阅图2,本发明实施例中指令执行方法另一个实施例包括:
201、当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,所述顺序处理器确定所述预置数目为每个指令组合的最大执行拍数;
当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,该顺序处理器确定该预置数目为每个指令组合的最大执行拍数。
其中,该功能单元也可以称之为执行单元,用于执行指令动作,设定一个功能单元执行一条简单运算指令所用的时间为一拍(一时钟周期),可以理解的是,由于每个指令的复杂程度不同,所以功能单元执行每条指令需要的拍数也可以不同,将一个指令需要执行的拍数称为该指令的执行拍数,当指令被顺序发射执行时,预置数据个串行在一起的功能单元最多能在一拍同时执行预置数目拍数的指令。
指令组合为多条指令的组合,一个指令组合最多可以容纳的指令的执行拍数为该指令组合的最大执行拍数。
202、顺序处理器依次读取指令顺序中下一条指令作为待融合指令,对所述待融合指令触发步骤203;
顺序处理器确定每个指令组合的最大执行拍数后,依次读取指令顺序中下一条指令作为待融合指令,对该待融合指令触发步骤203。
203、顺序处理器判断该待融合指令的执行拍数是否不大于当前指令组合的剩余拍数;
顺序处理器读取出待融合指令后,判断该待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,其中,当前指令组合为当前正在融合指令的指令组合,剩余拍数为该最大执行拍数与组合拍数的差值,该组合拍数为加入该当前指令组合中所有指令的执行拍数之和;
若判断出大于该剩余拍数时,执行步骤204;
若判断出不大于该剩余拍数时,执行步骤205。
204、更新所述当前指令组合并触发步骤203;
当顺序处理器判断该待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新该当前指令组合,并触发步骤203。
其中,更新当前指令组合包括结束并保存当前指令组合,此时表示该当前指令组合已经完成,新建下一个指令组合作为更新后的当前指令组合。
205、将所述待融合指令加入所述当前指令组合,触发步骤202;
当顺序处理器判断该待融合指令的执行拍数不大于当前指令组合的剩余拍数时,将该待融合指令加入该当前指令组合,触发步骤202。
可以理解的是,步骤202至步骤205为一个将指令融合为指令组合的循环过程,此过程中可以按指令顺序依次将各指令融合成为各指令组合,然后依次对各指令组合触发步骤206。
206、顺序处理器依次发射融合出的各指令组合,顺序执行所述各指令组合中的指令。
顺序处理器融合出指令组合后,依次发射融合出的各指令组合,顺序执行该各指令组合中的指令。
可以理解的是,步骤202至步骤205中并不需要将所有的指令都融合成指令组合后才执行步骤206,指令的融合与发射执行为一个动态的连续过程,步骤202至步骤205中融合出一个指令组合后,步骤206中即可以发射该融合出的指令组合,而步骤202至步骤205此时还在继续融合出更多的指令组合,依次对融合出的指令组合执行步骤206。
本发明实施例中,顺序处理器依次读取指令顺序中下一条指令作为待融合指令,判断待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,若大于剩余拍数,则更新当前指令组合,再对该待融合指令进行判断,若不大于剩余拍数,则将该待融合指令加入当前指令组合并读取下一条指令作为待融合指令继续处理,这样可以保证在满足一个指令组合内容纳的指令的执行拍数不大于最大执行拍数的前提下,把最多的指令融合进一个指令组合中,进一步增加了处理器对有效指令的处理时间,发挥了处理器的性能。
上面实施例中,当顺序处理器判断该待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新所述当前指令组合,并再判断该待融合指令的执行拍数是否大于当前指令组合的剩余拍数,在实际应用中,更新所述当前指令组合后,顺序处理器可以先判断该待融合指令的执行拍数是否大于最大执行拍数再进行后续处理,请查阅图3,本发明实施例中指令执行方法另一个实施例包括:
301、当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,所述顺序处理器确定所述预置数目为每个指令组合的最大执行拍数;
当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,该顺序处理器确定该预置数目为每个指令组合的最大执行拍数。
其中,该功能单元也可以称之为执行单元,用于执行指令动作,设定一个功能单元执行一条简单运算指令所用的时间为一拍,可以理解的是,由于每个指令的复杂程度不同,所以功能单元执行每条指令需要的拍数也可以不同,将一个指令需要执行的拍数称为该指令的执行拍数,当指令被顺序发射执行时,预置数据个串行在一起的功能单元最多能在一拍同时执行预置数目拍数的指令。
指令组合为多条指令的组合,一个指令组合最多可以容纳的指令的执行拍数为该指令组合的最大执行拍数。
302、顺序处理器依次读取指令顺序中下一条指令作为待融合指令,对所述待融合指令触发步骤303;
顺序处理器确定每个指令组合的最大执行拍数后,依次读取指令顺序中下一条指令作为待融合指令,对该待融合指令触发步骤303。
303、顺序处理器判断该待融合指令的执行拍数是否不大于当前指令组合的剩余拍数;
顺序处理器读取出待融合指令后,判断该待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,其中,当前指令组合为当前正在融合指令的指令组合,剩余拍数为该最大执行拍数与组合拍数的差值,该组合拍数为加入该当前指令组合中所有指令的执行拍数之和;
若判断出大于该剩余拍数时,执行步骤304;
若判断出不大于该剩余拍数时,执行步骤307。
304、更新所述当前指令组合并触发步骤305;
当顺序处理器判断该待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新该当前指令组合,并触发步骤305。
其中,更新当前指令组合包括结束并保存当前指令组合,此时表示该当前指令组合已经完成,新建下一个指令组合作为更新后的当前指令组合。
305、判断所述待融合指令的执行拍数是否大于所述最大执行拍数;
顺序处理器更新所述当前指令组合后,可以判断该待融合指令的执行拍数是否大于该最大执行拍数;
当大于最大执行拍数时,执行步骤306;
当不大于最大执行拍数时,触发步骤303。
可以理解的是,步骤305的判断与步骤304的更新之间没有严格的时序先后关系,它们可以同时进行,可以先更新再判断,也可以先判断再更新,此处不作限定。
306、将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发步骤302;
当顺序处理器判断出该待融合指令的执行拍数大于该最大执行拍数时,将该待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发步骤302。
执行拍数大于最大执行拍数的指令也可以称为长延迟指令。可以理解的是,虽然长延迟指令的执行拍数大于最大执行拍数,但因为长延迟指令为一个单独的指令,所以可以将其单独作为一个指令组合,不受指令组合内指令的执行拍数之和不大于最大执行拍数之和的限制。
307、将所述待融合指令加入所述当前指令组合,触发步骤302;
当顺序处理器判断该待融合指令的执行拍数不大于当前指令组合的剩余拍数时,将该待融合指令加入该当前指令组合,触发步骤302。
可以理解的是,步骤302至步骤307为一个将指令融合为指令组合的循环过程,此过程中可以按指令顺序依次将各指令融合成为各指令组合,然后依次对各指令组合触发步骤308。
308、顺序处理器依次发射融合出的各指令组合,顺序执行所述各指令组合中的指令。
顺序处理器融合出指令组合后,依次发射融合出的各指令组合,顺序执行该各指令组合中的指令。
可以理解的是,步骤302至步骤307中并不需要将所有的指令都融合成指令组合后才执行步骤308,指令的融合与发射执行为一个动态的连续过程,步骤302至步骤307中融合出一个指令组合后,步骤308中即可以发射该融合出的指令组合,而步骤302至步骤307此时还在继续融合出更多的指令组合,依次对融合出的指令组合执行步骤308。
本发明实施例中,当顺序处理器判断该待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新该当前指令组合后,先判断待融合指令的执行拍数是否大于所述最大执行拍数,当大于最大执行拍数时,直接将该待融合指令单独加入更新后的当前指令组合,再次更新更新后的当前指令组合,当不大于最大执行拍数时,才触发对待融合指令的再次判断,这样使长延迟指令单独成组,保证了对指令融合的顺序进行,提高了处理器的处理效率。
上面实施例中,当顺序处理器判断该待融合指令的执行拍数不大于当前指令组合的剩余拍数时,将所述待融合指令加入所述当前指令组合,开始对下一个指令的判断,在实际应用中,当顺序处理器判断该待融合指令的执行拍数不大于当前指令组合的剩余拍数时,顺序处理器可以先判断该待融合指令是否为第一特殊指令或第二特殊指令再进行后续处理,请参阅图4,本发明实施例中指令执行方法另一个实施例包括:
401、当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,所述顺序处理器确定所述预置数目为每个指令组合的最大执行拍数;
当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,该顺序处理器确定该预置数目为每个指令组合的最大执行拍数。
其中,该功能单元也可以称之为执行单元,用于执行指令动作,设定一个功能单元执行一条简单运算指令所用的时间为一拍,可以理解的是,由于每个指令的复杂程度不同,所以功能单元执行每条指令需要的拍数也可以不同,将一个指令需要执行的拍数称为该指令的执行拍数,当指令被顺序发射执行时,预置数据个串行在一起的功能单元最多能在一拍同时执行预置数目拍数的指令。
指令组合为多条指令的组合,一个指令组合最多可以容纳的指令的执行拍数为该指令组合的最大执行拍数。
402、顺序处理器依次读取指令顺序中下一条指令作为待融合指令,对所述待融合指令触发步骤403;
顺序处理器确定每个指令组合的最大执行拍数后,依次读取指令顺序中下一条指令作为待融合指令,对该待融合指令触发步骤403。
403、顺序处理器判断该待融合指令的执行拍数是否不大于当前指令组合的剩余拍数;
顺序处理器读取出待融合指令后,判断该待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,其中,当前指令组合为当前正在融合指令的指令组合,剩余拍数为该最大执行拍数与组合拍数的差值,该组合拍数为加入该当前指令组合中所有指令的执行拍数之和;
若判断出大于该剩余拍数时,执行步骤404;
若判断出不大于该剩余拍数时,执行步骤407。
404、更新所述当前指令组合并触发步骤405;
当顺序处理器判断该待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新该当前指令组合,并触发步骤405。
其中,更新当前指令组合包括结束并保存当前指令组合,此时表示该当前指令组合已经完成,新建下一个指令组合作为更新后的当前指令组合。
405、判断所述待融合指令的执行拍数是否大于所述最大执行拍数;
顺序处理器更新所述当前指令组合后,可以判断该待融合指令的执行拍数是否大于该最大执行拍数;
当大于最大执行拍数时,执行步骤406;
当不大于最大执行拍数时,触发步骤403。
可以理解的是,步骤405的判断与步骤404的更新之间没有严格的时序先后关系,它们可以同时进行,可以先更新再判断,也可以先判断再更新,此处不作限定。
406、将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发步骤402;
当顺序处理器判断出该待融合指令的执行拍数大于该最大执行拍数时,将该待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发步骤402。
执行拍数大于最大执行拍数的指令也可以称为长延迟指令。
407、判断所述待融合指令是否为第一特殊指令或第二特殊指令;
当顺序处理器判断该待融合指令的执行拍数不大于当前指令组合的剩余拍数时,判断所述待融合指令是否为第一特殊指令或第二特殊指令,所述第一特殊指令为必须单独成组的指令,例如中断指令等,所述第二特殊指令为不须单独成组但必须放在一个指令组合的最后一条的指令,例如跳转指令等;
若所述待融合指令为第一特殊指令,则触发步骤408;
若所述待融合指令为第二特殊指令,则触发步骤409;
若所述待融合指令不为第一特殊指令且不为第二特殊指令,则触发步骤410。
408、更新所述当前指令组合,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发步骤402;
当判断出所述待融合指令为第一特殊指令时,所述顺序处理器更新所述当前指令组合,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发步骤402。
409、将所述待融合指令加入所述当前指令组合再更新所述当前指令组合,触发步骤402;
当判断出所述待融合指令为第二特殊指令时,所述顺序处理器将所述待融合指令加入所述当前指令组合再更新所述当前指令组合,触发步骤402。
410、将所述待融合指令加入所述当前指令组合后直接触发步骤402;
当判断出所述待融合指令不为第一特殊指令且不为第二特殊指令时,所述顺序处理器将所述待融合指令加入所述当前指令组合后直接触发步骤402。
411、当所述顺序处理器准备好的指令都加入了指令组合时,所述顺序处理器更新所述当前指令组合;
当顺序处理器准备好的指令都加入了指令组合时,该顺序处理器可以直接更新当前指令组合,即如果准备好的指令最后不足以构建一个完整的指令组合,也可以直接将其作为一个指令组合进行后续发射执行。
可以理解的是,在一些应用场景中,步骤411也可以不需要,此处不作限定。
412、顺序处理器依次发射融合出的各指令组合,顺序执行所述各指令组合中的指令。
顺序处理器融合出指令组合后,依次发射融合出的各指令组合,顺序执行该各指令组合中的指令。
可以理解的是,步骤402至步骤411中并不需要将所有的指令都融合成指令组合后才执行步骤412,指令的融合与发射执行为一个动态的连续过程,步骤402至步骤411中融合出一个指令组合后,步骤412中即可以发射该融合出的指令组合,而步骤402至步骤411此时还在继续融合出更多的指令组合,依次对融合出的指令组合执行步骤412。
本发明实施例中,当顺序处理器判断该待融合指令的执行拍数不大于当前指令组合的剩余拍数时,先判断待融合指令是否为第一特殊指令或第二特殊指令,若为第一特殊指令,则将该待融合指令单独成组,若为第二特殊指令,则将该待融合指令加入当前指令组合再更新该当前指令组合后再触发对下一个指令的读取判断过程,若既不是第一特殊指令又不是第二特殊指令,则将该待融合指令加入当前指令组合后直接触发对下一个指令的读取判断过程,避免了因特殊指令不在指令组合的最后一个而导致对指令执行出错的问题,使得组合指令能被顺利执行,保证了处理器的正常运行。
为便于理解,下面以一具体应用场景对本发明实施例中指令执行方法进行具体描述:
一条流水线上有4个串行在一起的功能部件,顺序处理器确定每个指令组合的最大执行拍数为4;
顺序处理器将如下4条指令融合为一个指令组合,记为第一指令组合G1,按顺序将G1内各指令记为G1.1,G1.2,G1.3,G1.4:
R0=R4+R5;//G1.1
R1=R5+R6;//G1.2
R2=R4-R5;//G1.3
R3=R4+R6;//G1.4
顺序处理器将接着另外4条简单指令融合为另一个指令组合,记为第二指令组合G2,按顺序将G2内各指令记为G2.1,G2.2,G2.3,G2.4;
还可以有指令组合G3,G4等,以此类推;
假设各指令组合都是由4条简单运算指令组成,且组内没有相关性,顺序处理器每拍依次发射各指令组合(即同时发射指令组合内的4条指令)进入功能部件,功能部件按照指令顺序,执行指令组合中的4条指令;
设T时刻为第一拍,T+1时刻为第二拍,T+2时刻为第三拍,以此类推;
如下表1所示为对指令组合进行发射执行的具体时空图:
表1
T | T+1 | T+2 | T+3 | T+4 | T+5 | T+6 | T+7 |
G1.1 | G1.2 | G1.3 | G1.4 | WB | |||
G2.1 | G2.2 | G2.3 | G2.4 | WB | |||
G3.1 | G3.2 | G3.3 | G3.4 | WB | |||
G4.1 | G4.2 | G4.2 | G4.4 | WB |
T时刻时,第一个功能部件执行G1内第一条指令G1.1,同时发射G2,T+1时刻时(即下一拍),第一个功能部件执行G2内第一条指令G2.1,第二个功能部件执行G1内第二条指令G1.2,即此时流水线上同时执行了G1.2与G2.1,以此类推,在T+4时刻提交G1,在T+7时刻提交G4。
利用指令组合,在T+3时刻IPC为4,即同时执行了4条指令,对比于不进行指令组合,直接对指令进行顺序执行的现有技术:
如下表2所示为现有技术中直接对指令添加空拍顺序执行的具体时空图:
表2
T | T+1 | T+2 | T+3 | T+4 | T+5 | T+6 | T+7 |
G1.1 | WB | ||||||
G1.2 | WB | ||||||
G1.3 | WB | ||||||
G1.4 | WB |
可以看出,直接对指令添加空拍顺序发射执行,需要到T+7时刻才能完成G1内4条指令的提交,并且需要更多的时间才能提交后续指令,每个时刻的IPC均为1,浪费了处理器性能。
下面对本发明实施例中的顺序处理器进行描述,请参阅图5,本发明实施例中顺序处理器一个实施例包括:
确定模块501,用于当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,确定所述预置数目为每个指令组合的最大执行拍数;
融合模块502,用于按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述确定模块501确定的最大执行拍数;
执行模块503,用于依次发射所述融合模块502融合出的各指令组合,顺序执行所述各指令组合中的指令。
本发明实施例中,融合模块502按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述最大执行拍数,执行模块503再依次发射融合出的各指令组合,顺序执行各指令组合中的指令,这样将多条指令融合成一个个指令组合发射执行,在一条流水线的一个执行周期中可以同时执行多条指令,增加了一个执行周期中需要执行有效的指令的拍数,减少了需要填充的空拍,增加了处理器对有效指令的处理时间,更大程度的发挥了处理器的性能。
上面实施例中,融合模块502按照指令顺序依次将多条指令融合成指令组合,在实际应用中融合模块502可以按照指令顺序对每一个指令依次处理,下面对本发明实施例中顺序处理器进行具体描述,请参阅图6,本发明实施例中顺序处理器另一个实施例包括:
确定模块601,用于当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,确定所述预置数目为每个指令组合的最大执行拍数;
融合模块602,用于按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述确定模块601确定的最大执行拍数;
执行模块603,用于依次发射所述融合模块602融合出的各指令组合,顺序执行所述各指令组合中的指令;
本实施中,该融合模块602具体包括:
读取触发单元6021,用于依次读取所述指令顺序中下一条指令作为待融合指令,对所述待融合指令触发拍数判断单元6022;
拍数判断单元6022,用于判断所述读取触发单元6021读取的待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,所述当前指令组合为当前正在融合指令的指令组合,所述剩余拍数为所述最大执行拍数与组合拍数的差值,所述组合拍数为加入所述当前指令组合中所有指令的执行拍数之和;
组合更新单元6023,用于当所述拍数判断单元6022判断出所述待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新所述当前指令组合并触发所述拍数判断单元;其中,更新当前指令组合包括结束并保存当前指令组合,新建下一个指令组合作为更新后的当前指令组合;
指令更新单元6024,用于当所述拍数判断单元6022判断出所述待融合指令的执行拍数不大于当前指令组合的剩余拍数时,将所述待融合指令加入所述当前指令组合,触发所述读取触发单元6021。
本发明实施例中,读取触发单元6021依次读取指令顺序中下一条指令作为待融合指令,拍数判断单元6022判断待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,若大于剩余拍数,则组合更新单元6023更新当前指令组合,再对该待融合指令进行判断,若不大于剩余拍数,则指令更新单元6024将该待融合指令加入当前指令组合并读取下一条指令作为待融合指令继续处理,这样可以保证在满足一个指令组合内容纳的指令的执行拍数不大于最大执行拍数(即一条流水线内功能单元数)的前提下,把最多的指令融合进一个指令组合中,进一步增加了处理器对有效指令的处理时间,发挥了处理器的性能。
上面实施例中,当拍数判断单元6022判断该待融合指令的执行拍数大于当前指令组合的剩余拍数时,组合更新单元6023更新所述当前指令组合,并由拍数判断单元6022再判断该待融合指令的执行拍数是否大于当前指令组合的剩余拍数,在实际应用中,组合更新单元6023更新所述当前指令组合后,组合更新单元6023可以先判断该待融合指令的执行拍数是否大于最大执行拍数再进行后续处理,请查阅图7,本发明实施例中顺序处理器另一个实施例包括:
确定模块701,用于当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,确定所述预置数目为每个指令组合的最大执行拍数;
融合模块702,用于按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述确定模块701确定的最大执行拍数;
执行模块703,用于依次发射所述融合模块702融合出的各指令组合,顺序执行所述各指令组合中的指令;
该融合模块702具体包括:
读取触发单元7021,用于依次读取所述指令顺序中下一条指令作为待融合指令,对所述待融合指令触发拍数判断单元7022;
拍数判断单元7022,用于判断所述读取触发单元7021读取的待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,所述当前指令组合为当前正在融合指令的指令组合,所述剩余拍数为所述最大执行拍数与组合拍数的差值,所述组合拍数为加入所述当前指令组合中所有指令的执行拍数之和;
组合更新单元7023,用于当所述拍数判断单元7022判断出所述待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新所述当前指令组合并触发所述拍数判断单元;其中,更新当前指令组合包括结束并保存当前指令组合,新建下一个指令组合作为更新后的当前指令组合;
指令更新单元7024,用于当所述拍数判断单元7022判断出所述待融合指令的执行拍数不大于当前指令组合的剩余拍数时,将所述待融合指令加入所述当前指令组合,触发所述读取触发单元;
本实施例中,该组合更新单元7023具体包括:
拍数判断子单元70231,用于当所述拍数判断单元7022判断出所述待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新所述当前指令组合,判断所述待融合指令的执行拍数是否大于所述最大执行拍数;
第一单独组合子单元70232,用于当所述拍数判断子单元70231判断出所述待融合指令的执行拍数大于所述最大执行拍数时,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述读取触发单元7021;
否定触发子单元70233,用于当所述拍数判断子单元70231判断出所述待融合指令的执行拍数不大于所述最大执行拍数时,触发所述拍数判断单元7022。
本发明实施例中,当拍数判断单元7022判断该待融合指令的执行拍数大于当前指令组合的剩余拍数时,拍数判断子单元70231更新该当前指令组合后,拍数判断子单元70231先判断待融合指令的执行拍数是否大于所述最大执行拍数,当大于最大执行拍数时,第一单独组合子单元70232直接将该待融合指令单独作为更新后的指令组合,再次更新当前指令组合,当不大于最大执行拍数时,否定触发子单元70233才触发对待融合指令的再次判断,这样使长延迟指令单独成组,保证了对指令融合的顺序进行,提高了处理器的处理效率。
上面实施例中,当拍数判断单元7022判断该待融合指令的执行拍数不大于当前指令组合的剩余拍数时,指令更新单元7024将所述待融合指令加入所述当前指令组合,开始对下一个指令的判断,在实际应用中,指令更新单元7024可以先判断该待融合指令是否为第一特殊指令或第二特殊指令再进行后续处理,请参阅图8,本发明实施例中顺序处理器另一个实施例包括:
确定模块801,用于当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,确定所述预置数目为每个指令组合的最大执行拍数;
融合模块802,用于按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述确定模块801确定的最大执行拍数;
执行模块803,用于依次发射所述融合模块802融合出的各指令组合,顺序执行所述各指令组合中的指令;
该融合模块802具体包括:
读取触发单元8021,用于依次读取所述指令顺序中下一条指令作为待融合指令,对所述待融合指令触发拍数判断单元8022;
拍数判断单元8022,用于判断所述读取触发单元8021读取的待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,所述当前指令组合为当前正在融合指令的指令组合,所述剩余拍数为所述最大执行拍数与组合拍数的差值,所述组合拍数为加入所述当前指令组合中所有指令的执行拍数之和;
组合更新单元8023,用于当所述拍数判断单元8022判断出所述待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新所述当前指令组合并触发所述拍数判断单元8022;其中,更新当前指令组合包括结束并保存当前指令组合,新建下一个指令组合作为更新后的当前指令组合;
指令更新单元8024,用于当所述拍数判断单元8022判断出所述待融合指令的执行拍数不大于当前指令组合的剩余拍数时,将所述待融合指令加入所述当前指令组合,触发所述读取触发单元8021;
该组合更新单元8023具体包括:
拍数判断子单元80231,用于当所述拍数判断单元8022判断出所述待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新所述当前指令组合,判断所述待融合指令的执行拍数是否大于所述最大执行拍数;
第一单独组合子单元80232,用于当所述拍数判断子单元80231判断出所述待融合指令的执行拍数大于所述最大执行拍数时,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述读取触发单元8021;
否定触发子单元80233,用于当所述拍数判断子单元80231判断出所述待融合指令的执行拍数不大于所述最大执行拍数时,触发所述拍数判断单元8022;
本实施例中,该指令更新单元8024具体包括:
指令判断子单元80241,用于当所述拍数判断单元8022判断出所述待融合指令的执行拍数不大于当前指令组合的剩余拍数时,判断所述待融合指令是否为第一特殊指令或第二特殊指令,所述第一特殊指令为必须单独成组的指令,所述第二特殊指令为不须单独成组但必须放在一个指令组合的最后一条的指令;
第二单独组合子单元80242,用于当所述指令判断子单元80241判断出所述待融合指令为第一特殊指令时,更新所述当前指令组合,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述读取触发单元;
加入更新子单元80243,用于当所述指令判断子单元80241判断出所述待融合指令为第二特殊指令时,将所述待融合指令加入所述当前指令组合再更新所述当前指令组合,触发所述读取触发单元8021;
加入触发子单元80244,用于当所述指令判断子单元80241判断出所述待融合指令不为第一特殊指令且不为第二特殊指令时,将所述待融合指令加入所述当前指令组合后直接触发所述读取触发单元8021;
本实施例中,该顺序处理器还可以包括:
完成更新模块804,用于当所述顺序处理器准备好的指令都加入了指令组合时,更新所述当前指令组合。
本发明实施例中,当拍数判断单元8022判断该待融合指令的执行拍数不大于当前指令组合的剩余拍数时,指令判断子单元80241先判断待融合指令是否为第一特殊指令或第二特殊指令,若为第一特殊指令,则第二单独组合子单元80242将该待融合指令单独成组,若为第二特殊指令,则加入更新子单元80243将该待融合指令加入当前指令组合再更新该当前指令组合后再触发对下一个指令的读取判断过程,若既不是第一特殊指令又不是第二特殊指令,则加入触发子单元80244将该待融合指令加入当前指令组合后直接触发对下一个指令的读取判断过程,避免了因特殊指令不在指令组合的最后一个而导致对指令执行出错的问题,使得组合指令能被顺利执行,保证了处理器的正常运行。
为了便于理解上述实施例,下面以上述顺序处理器各个模块在一个具体应用场景中的交互过程进行说明:
一条流水线上有4个串行在一起的功能部件,确定模块801确定每个指令组合的最大执行拍数为4;
融合模块802将如下4条指令融合为一个指令组合,记为第一指令组合G1,按顺序将G1内各指令记为G1.1,G1.2,G1.3,G1.4:
R0=R4+R5;//G1.1
R1=R5+R6;//G1.2
R2=R4-R5;//G1.3
R3=R4+R6;//G1.4
融合模块802将接着另外4条简单指令融合为另一个指令组合,记为第二指令组合G2,按顺序将G2内各指令记为G2.1,G2.2,G2.3,G2.4;
还可以有指令组合G3,G4等,以此类推;
假设各指令组合都是由4条简单运算指令组成,且组内没有相关性,执行模块803每拍依次发射各指令组合(即同时发射指令组合内的4条指令)进入功能部件,功能部件按照指令顺序,执行指令组合中的4条指令。
下面结合具体硬件对顺序处理器中一条流水线上各个部件进行描述:
如图9所示为一条流水线的结构示意图,其中,
IBU(InstructionBufferUnit)为指令缓存单元,用于保存从指令缓存(I-cache)中取出的指令;
Dec(Decoder)为译码单元,用于将指令翻译成微指令;
Disp(Dispatch)为发射单元,用于将指令发射给下级流水线;
Reg(Register)为寄存器单元,用于从寄存器中取出操作数;
EXU0到EXU3为4个串行在一起的定点执行单元,EX0到EX3为4个串行在一起的浮点执行单元,均用于执行指令动作;
WB(WriteBack)为写回存储器阶段,即该流水级将执行结果写回寄存器堆。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种指令执行方法,其特征在于,包括:
当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,所述顺序处理器确定所述预置数目为每个指令组合的最大执行拍数;
所述顺序处理器按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述最大执行拍数;
所述顺序处理器依次发射融合出的各指令组合,顺序执行所述各指令组合中的指令。
2.根据权利要求1所述的方法,其特征在于,所述顺序处理器按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述最大执行拍数具体包括:
所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令,对所述待融合指令执行如下操作:
所述顺序处理器判断所述待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,所述当前指令组合为当前正在融合指令的指令组合,所述剩余拍数为所述最大执行拍数与组合拍数的差值,所述组合拍数为加入所述当前指令组合中所有指令的执行拍数之和;
若大于所述剩余拍数,则更新所述当前指令组合并触发所述顺序处理器判断所述待融合指令的执行拍数是否不大于当前指令组合的剩余拍数的步骤;其中,更新当前指令组合包括结束并保存当前指令组合,新建下一个指令组合作为更新后的当前指令组合;
若不大于所述剩余拍数,则将所述待融合指令加入所述当前指令组合,触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤。
3.根据权利要求2所述的方法,其特征在于,所述若大于所述剩余拍数,则更新所述当前指令组合并触发所述顺序处理器判断所述待融合指令的执行拍数是否不大于当前指令组合的剩余拍数具体包括:
若大于所述剩余拍数,则更新所述当前指令组合,判断所述待融合指令的执行拍数是否大于所述最大执行拍数;
若大于所述最大执行拍数,则将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤;
若不大于所述最大执行拍数,则触发所述顺序处理器判断所述待融合指令的执行拍数是否不大于当前指令组合的剩余拍数的步骤。
4.根据权利要求2或3所述的方法,其特征在于,若不大于所述剩余拍数,则将所述待融合指令加入所述当前指令组合,触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤具体包括:
若不大于所述剩余拍数,则判断所述待融合指令是否为第一特殊指令或第二特殊指令,所述第一特殊指令为必须单独成组的指令,所述第二特殊指令为不须单独成组但必须放在一个指令组合的最后一条的指令;
若所述待融合指令为第一特殊指令,则更新所述当前指令组合,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤;
若所述待融合指令为第二特殊指令,则将所述待融合指令加入所述当前指令组合再更新所述当前指令组合,触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤;
若所述待融合指令不为第一特殊指令且不为第二特殊指令,则将所述待融合指令加入所述当前指令组合后直接触发所述顺序处理器依次读取所述指令顺序中下一条指令作为待融合指令的步骤。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述顺序处理器准备好的指令都加入了指令组合时,所述顺序处理器更新所述当前指令组合。
6.一种顺序处理器,其特征在于,包括:
确定模块,用于当顺序处理器的一条流水线内有预置数目个串行在一起的功能单元时,确定所述预置数目为每个指令组合的最大执行拍数;
融合模块,用于按照指令顺序依次将多条指令融合成指令组合,其中,所述多条指令的执行拍数之和不大于所述确定模块确定的最大执行拍数;
执行模块,用于依次发射所述融合模块融合出的各指令组合,顺序执行所述各指令组合中的指令。
7.根据权利要求6所述的顺序处理器,其特征在于,所述融合模块具体包括:
读取触发单元,用于依次读取所述指令顺序中下一条指令作为待融合指令,对所述待融合指令触发拍数判断单元;
拍数判断单元,用于判断所述读取触发单元读取的待融合指令的执行拍数是否不大于当前指令组合的剩余拍数,所述当前指令组合为当前正在融合指令的指令组合,所述剩余拍数为所述最大执行拍数与组合拍数的差值,所述组合拍数为加入所述当前指令组合中所有指令的执行拍数之和;
组合更新单元,用于当所述拍数判断单元判断出所述待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新所述当前指令组合并触发所述拍数判断单元;其中,更新当前指令组合包括结束并保存当前指令组合,新建下一个指令组合作为更新后的当前指令组合;
指令更新单元,用于当所述拍数判断单元判断出所述待融合指令的执行拍数不大于当前指令组合的剩余拍数时,将所述待融合指令加入所述当前指令组合,触发所述读取触发单元。
8.根据权利要求7所述的顺序处理器,其特征在于,所述组合更新单元具体包括:
拍数判断子单元,用于当所述拍数判断单元判断出所述待融合指令的执行拍数大于当前指令组合的剩余拍数时,更新所述当前指令组合,判断所述待融合指令的执行拍数是否大于所述最大执行拍数;
第一单独组合子单元,用于当所述拍数判断子单元判断出所述待融合指令的执行拍数大于所述最大执行拍数时,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述读取触发单元;
否定触发子单元,用于当所述拍数判断子单元判断出所述待融合指令的执行拍数不大于所述最大执行拍数时,触发所述拍数判断单元。
9.根据权利要求7或8所述的顺序处理器,其特征在于,所述指令更新单元具体包括:
指令判断子单元,用于当所述拍数判断单元判断出所述待融合指令的执行拍数不大于当前指令组合的剩余拍数时,判断所述待融合指令是否为第一特殊指令或第二特殊指令,所述第一特殊指令为必须单独成组的指令,所述第二特殊指令为不须单独成组但必须放在一个指令组合的最后一条的指令;
第二单独组合子单元,用于当所述指令判断子单元判断出所述待融合指令为第一特殊指令时,更新所述当前指令组合,将所述待融合指令单独加入更新后的当前指令组合,再次更新所述更新后的当前指令组合,触发所述读取触发单元;
加入更新子单元,用于当所述指令判断子单元判断出所述待融合指令为第二特殊指令时,将所述待融合指令加入所述当前指令组合再更新所述当前指令组合,触发所述读取触发单元;
加入触发子单元,用于当所述指令判断子单元判断出所述待融合指令不为第一特殊指令且不为第二特殊指令时,将所述待融合指令加入所述当前指令组合后直接触发所述读取触发单元。
10.根据权利要求9所述的顺序处理器,其特征在于,所述顺序处理器还包括:
完成更新模块,用于当所述顺序处理器准备好的指令都加入了指令组合时,更新所述当前指令组合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410239150.8A CN105446700B (zh) | 2014-05-30 | 2014-05-30 | 一种指令执行方法以及顺序处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410239150.8A CN105446700B (zh) | 2014-05-30 | 2014-05-30 | 一种指令执行方法以及顺序处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105446700A true CN105446700A (zh) | 2016-03-30 |
CN105446700B CN105446700B (zh) | 2018-01-02 |
Family
ID=55556956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410239150.8A Active CN105446700B (zh) | 2014-05-30 | 2014-05-30 | 一种指令执行方法以及顺序处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105446700B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110858150A (zh) * | 2018-08-22 | 2020-03-03 | 上海寒武纪信息科技有限公司 | 一种具有局部实时可重构流水级的运算装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6260190B1 (en) * | 1998-08-11 | 2001-07-10 | Hewlett-Packard Company | Unified compiler framework for control and data speculation with recovery code |
CN1310818A (zh) * | 1998-05-29 | 2001-08-29 | 艾利森电话股份有限公司 | 为多个电路模块分配指令的方法和装置 |
US20050289530A1 (en) * | 2004-06-29 | 2005-12-29 | Robison Arch D | Scheduling of instructions in program compilation |
CN1760826A (zh) * | 2004-10-14 | 2006-04-19 | 国际商业机器公司 | 用于处理指令的方法、处理器以及系统 |
CN102073480A (zh) * | 2010-12-28 | 2011-05-25 | 清华大学 | 基于时分复用实现多核处理器内核模拟的方法 |
-
2014
- 2014-05-30 CN CN201410239150.8A patent/CN105446700B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1310818A (zh) * | 1998-05-29 | 2001-08-29 | 艾利森电话股份有限公司 | 为多个电路模块分配指令的方法和装置 |
US6260190B1 (en) * | 1998-08-11 | 2001-07-10 | Hewlett-Packard Company | Unified compiler framework for control and data speculation with recovery code |
US20050289530A1 (en) * | 2004-06-29 | 2005-12-29 | Robison Arch D | Scheduling of instructions in program compilation |
CN1760826A (zh) * | 2004-10-14 | 2006-04-19 | 国际商业机器公司 | 用于处理指令的方法、处理器以及系统 |
CN102073480A (zh) * | 2010-12-28 | 2011-05-25 | 清华大学 | 基于时分复用实现多核处理器内核模拟的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110858150A (zh) * | 2018-08-22 | 2020-03-03 | 上海寒武纪信息科技有限公司 | 一种具有局部实时可重构流水级的运算装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105446700B (zh) | 2018-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552163B2 (en) | Method and apparatus for efficient scheduling for asymmetrical execution units | |
CN1138205C (zh) | 以不同等待时间调度指令 | |
CN110945477B (zh) | 数据处理设备中的数据项中的计数元素 | |
US10572397B2 (en) | Masking storage device presence | |
CN102279766B (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
CN105122206A (zh) | 用于支持推测的访客返回地址栈仿真的方法和装置 | |
CN110851246A (zh) | 一种批量任务处理方法、装置、系统及存储介质 | |
US10761822B1 (en) | Synchronization of computation engines with non-blocking instructions | |
EP2372587B1 (en) | Apparatus and method for simulating a reconfigurable processor | |
US20170337063A1 (en) | Method and apparatus for sorting elements in hardware structures | |
CN110516789A (zh) | 卷积网络加速器中指令集的处理方法、装置及相关设备 | |
CN105550443A (zh) | 一种基于SystemC周期精确的统一染色器阵列TLM模型 | |
CN114830135A (zh) | 算子的层次分区 | |
US20140082400A1 (en) | Enhanced clock gating in retimed modules | |
US20130339689A1 (en) | Later stage read port reduction | |
US9043584B2 (en) | Generating hardware events via the instruction stream for microprocessor verification | |
US8997030B1 (en) | Enhanced case-splitting based property checking | |
CN114968373A (zh) | 指令分派方法、装置、电子设备及计算机可读存储介质 | |
CN105446700A (zh) | 一种指令执行方法以及顺序处理器 | |
US9213547B2 (en) | Processor and method for processing instructions using at least one processing pipeline | |
CN111694787A (zh) | 一种芯片启动的方法、网络设备和机器可读存储介质 | |
US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
CN114610395A (zh) | 指令分派方法、装置、电子设备及计算机可存储介质 | |
US11061654B1 (en) | Synchronization of concurrent computation engines | |
JP2004062909A (ja) | 複数の制御フローパスを有するソフトウェアパイプライン化ループのためのシステムおよび方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |