CN112835624A - 指令字处理器及零开销循环处理方法、电子设备及介质 - Google Patents
指令字处理器及零开销循环处理方法、电子设备及介质 Download PDFInfo
- Publication number
- CN112835624A CN112835624A CN202110188273.3A CN202110188273A CN112835624A CN 112835624 A CN112835624 A CN 112835624A CN 202110188273 A CN202110188273 A CN 202110188273A CN 112835624 A CN112835624 A CN 112835624A
- Authority
- CN
- China
- Prior art keywords
- instruction
- unit
- loop
- address
- register
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000000034 method Methods 0.000 claims abstract description 18
- 230000003139 buffering effect Effects 0.000 claims abstract description 12
- 230000008569 process Effects 0.000 claims abstract description 7
- 239000000872 buffer Substances 0.000 claims description 76
- 238000004364 calculation method Methods 0.000 claims description 32
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 5
- 238000009825 accumulation Methods 0.000 claims description 3
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 6
- 238000011084 recovery Methods 0.000 abstract description 4
- 238000013461 design Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 125000004122 cyclic group Chemical group 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009466 transformation Effects 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种指令字处理器,包括零开销循环单元、指令译码单元、寄存器访问单元、写回单元和指令存储单元等模块。以及一种处理器的零开销循环处理方法。本发明的装置和方法改进了零开销循环指令和零开销循环单元的设计,放松了编译器采用零开销循环指令优化循环的条件,降低了处理器循环控制逻辑部分的硬件复杂度,还解决了处理器处理中断、异常等事件时,零开销循环单元的现场保护和现场恢复问题,既支持具有循环缓冲的处理器装置,也支持指令宽度不一致,但指令宽度都是最小寻址宽度的整数倍的处理器装置,提高循环处理的灵活性与执行效率。
Description
技术领域
本发明涉及处理器设计领域,尤其涉及一种指令字处理器及零开销循环处理方法、电子设备及存储介质。
背景技术
在嵌入式应用程序中,数据密集型应用所占比例日益增高,如图像处理、视频编解码等。这些应用通常运算量巨大,而且对处理器的实时性要求很高。因而,对处理器的性能提出了更高的要求。这些应用的核心代码往往是各种循环的计算代码。从而导致不到10%的核心代码占用了处理器90%以上的执行时间。因而,若处理器在执行循环时,能够不用花时间去检查循环计数器的值,不用通过分支指令来实现循环体尾指令到首指令的切换,完全由硬件来完成上述操作,从而节省指令周期,实现零开销循环的处理,则能大大提高处理器的性能。
现有的零开销循环技术大多不支持超长指令字(Very Long Instruction Word,VLIW)结构的处理器,不支持变长指令编码的处理器,没有对循环缓冲配套的解决方法,没有对中断、异常等事件的支持方法,存在增加指令数目多,硬件实现方法复杂,性能提升有限等缺点。
发明内容
针对上述技术问题,本发明的主要目的在于提供一种超长指令字处理器装置及其零开销循环处理方法,以降低零开销循环指令对编译器的限制,提高循环处理的灵活性与执行效率。
为实现上述目的,本发明一方面提供了一种指令字处理器,包括
指令地址计算发送单元、指令等待单元、指令接收及指令拆包单元、指令译码单元、寄存器访问单元、执行单元、写回单元、零开销循环单元和指令存储单元。其中零开销循环单元与指令地址计算发送单元、指令接收及指令拆包单元和寄存器访问单元相连。寄存器访问单元内部可以包含多组循环参数寄存器,以支持多层循环嵌套或循环交叠等情况。并设定循环寄存器组的优先级。当循环体尾执行包的首指令地址不相等时,各循环寄存器组对应的循环单元独立工作,互不影响;当循环体尾执行包的首指令地址相等时,根据设定的优先级,判定各循环的嵌套层次,进而指导循环单元的工作。以2组循环寄存器为例,具体包括分别用于存储循环0和循环1的循环次数(C0、C1),循环体首执行包的首指令地址(T0、T1),循环体尾执行包的首指令地址(B0、B1)。当B0=B1时,默认B1先级更高,B1存放内层循环。寄存器访问单元内部包含BYPASS逻辑,从而保证其发送给零开销循环单元和指令接收及指令拆包单元的循环寄存器的结果是最新的值。当指令译码单元检测到零开销循环标志指令(ZLP指令)时,根据ZLP指令携带的循环的参数信息计算出循环体首执行包/尾执行包的首指令地址,发送给寄存器访问单元,并向寄存器访问单元提出读取用于计算循环次数的通用寄存器的请求,寄存器访问单元根据请求读出通用寄存器的值,并根据运算模式,计算出循环次数。一并将循环次数,循环体首执行包/尾执行包的首指令地址发送到后续执行单元,最后通过写回单元将结果写回到对应编号的循环寄存器中。
零开销循环单元进一步包括取指地址计算及控制模块,指令缓冲读指针变换控制模块,循环缓冲启动模块,循环计数器递减控制模块。其中,取指地址计算及控制模块和指令缓冲读指针变换控制模块均在没有循环缓冲或循环缓冲功能未开启时工作。循环缓冲启动模块不是必须配置的,仅在指令接收及指令拆包单元中配置有循环缓冲的处理器装置中适用。当循环体长度有限,且能够存入循环缓冲中时才开启循环缓冲。取指地址计算及控制模块根据循环寄存器的最新结果和指令地址计算发送单元发送的取指令地址进行运算,若取指令地址大于有效循环单元的尾执行包的首地址,并且对应的循环次数大于0,则产生循环地址切换标志信号,并发送循环起始地址给指令地址计算发送单元,由指令地址计算发送单元将循环起始地址作为新的取指令地址发送给指令存储单元。指令缓冲读指针变换控制模块接收指令接收及指令拆包单元发送的当前成功拆包的指令地址和寄存器访问单元发送的循环寄存器值,并将当前成功拆包的指令地址与当前开启的循环单元的尾执行包的首地址进行比较,若相等,且其对应的循环次数大于0,说明指令读取到循环体尾执行包,则产生指令缓冲读指针变换标志信号,发送给指令接收及指令拆包单元,由其控制指令缓冲读指针的切换。当处理器装置配有循环缓冲,循环缓冲启动模块启动工作,根据寄存器访问单元发送的循环寄存器信息,若检测到有效循环体,且其循环体长度小于循环缓冲的长度,则发送循环缓冲启动信号给指令接收及指令拆包单元,由其控制循环体在循环缓冲中的加载、读取等。循环计数器递减控制模块接收指令接收及指令拆包单元发送的当前成功拆包的指令地址和寄存器访问单元发送的循环寄存器值,并将当前成功拆包的指令地址与其当前开启的循环单元的结束地址进行比较,若相等,且其对应的循环次数非0,说明当前循环体执行完一遍,则产生对应的循环单元计数器递减信号发送给寄存器访问单元,由其进一步传送给执行单元,最后由写回单元控制对应循环次数寄存器的递减。
本发明另一方面提供了一种处理器零开销循环处理方法,该方法包括的步骤包括:(1)对循环标志指令进行译码;(2)计算循环参数,包括循环次数,循环体起始指令地址,循环体结束指令地址,并通过执行级流水逐级往下传递,直到写回阶段,将循环参数写回到对应的循环参数寄存器中;(3)判断是否有循环单元的循环次数大于0(4)若有,则启动零开销循环单元;(5)判断处理器装置是否配备有循环缓冲,若有,进一步判断循环体的长度是否小于或等于循环缓冲的长度,若是,则启动循环缓冲;若处理器没有循环缓冲,或循环体长度大于循环缓冲的长度,则一方面读取当前的取指令地址,并判断当前取指令地址是否大于或等于使能的循环单元的结束地址,若是,则判断对应循环单元的循环次数是否大于0,若是,则更新下一取指令地址为对应循环体的循环起始地址。若当前取指令地址小于使能的循环单元结束地址,或者对应的循环次数大于0,则下一取指令地址等于当前取指令地址的累加。另一方面,读取当前拆包的指令的地址,并判断当前拆包的指令地址是否大于或等于使能的循环单元的结束地址,若是,进一步判断对应循环单元的循环次数是否大于0,若是,则修改指令缓冲的读指针到循环体首指令所在指令包的位置;否则,指令缓冲读指针的位置根据当前拆包指令的长度正常累加。(6)零开销循环单元启动时,也需要读取当前拆包的指令的地址,并判断当前拆包的指令地址是否大于或等于使能的循环单元的结束地址,若是,进一步判断对应循环单元的循环次数是否大于0,若是,则修改对应循环单元的循环次数寄存器,使其减。否则,保持循环参数寄存器不变。
本申请还提供了一种电子设备,包括:
存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器为上述本申请提供的指令字处理器。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例上述提供的处理器零开销循环处理方法。
基于上述技术方案可知,本发明的装置和方法改进了零开销循环指令和零开销循环单元的设计,放松了编译器采用零开销循环指令优化循环的条件,降低了处理器循环控制逻辑部分的硬件复杂度,还解决了处理器处理中断、异常等事件时,零开销循环单元的现场保护和现场恢复问题;支持具有循环缓冲的处理器装置,也支持指令宽度不一致,但指令宽度都是最小寻址宽度的整数倍的处理器装置;从而本方法减少了对循环指令的限制,大大增加了可优化的循环范围,包括,循环次数不再受指令编码限制,可支持更大范围的循环,并且支持循环次数或循环步长动态变化的循环体以及多层嵌套循环和交叠循环。循环参数寄存器作为内核通用寄存器的一部分,支持其他指令对其进行访问,从而支持中断、异常等事件的现场保护和现场恢复;此外,本方法还支持具有不同指令宽度的处理器以及超长指令字的处理器,并支持配置有循环缓冲的处理器。可适用于众多处理器。
附图说明
图1是本发明中零开销循环标志指令的示意图;
图2A是本发明一实施例零开销循环标志指令编码示意图;
图2B是本发明另一实施例零开销循环标志指令编码示意图;
图3是本发明一个实施例处理器的结构示意图;
图4是本发明实施例处理器的零开销循环处理方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
图1是本发明中零开销循环标志指令的示意图,本发明通过在现有技术的处理器中增加一类循环标志指令(ZLP指令)和一个循环单元实现了处理器循环的零开销执行,并且支持具有循环缓冲的处理器。
针对ZLP指令的编码格式以及该指令的定义做如下描述:
ZLP指令语法格式中带有两个标号:Tlabel、Blable,一个循环次数寄存器Cn,两个源寄存器:Sreg0、Sreg1。其中,标号Tlabel代表循环体起始执行包的首指令位置,Blabel代表循环体结束执行包的首指令位置;循环次数寄存器Cn中的数字n代表了使用的循环单元的编号,Cn用于存储循环次数。通过对通用寄存器Sreg0、Sreg1的运算,得到循环的次数,并存储在Cn中。在链接过程中,汇编器和链接器通过公式(Tlable标识的执行包首地址-ZLP指令地址)/(最小指令编码长度/处理器最小寻址单元长度)得到ZLP指令与循环体起始执行包首指令之间的间距,并将其赋给ZLP指令编码中的无符号参数uimma中。同理,通过公式(Blable标识的执行包首地址-ZLP指令地址)/(最小指令编码长度/处理器最小寻址单元长度)得到ZLP指令与循环体结束执行包首指令之间的间距,并将其赋给ZLP指令编码中的无符号参数uimmb中。因此,只要处理器的指令编码长度满足处理器最小寻址单元长度的整数倍即可,不要求处理器的每条指令编码长度都一致。
图2A是本发明一实施例零开销循环标志指令编码示意图,图2B是本发明另一实施例零开销循环标志指令编码示意图。如图所示,ZLP指令总长度为L,其中指令标识位和并行位占据d位;循环单元编号Num占据n位,可支持2n个循环单元;循环次数计算模式M占据m位,可支持2mm种循环次数的计算模式;寄存器Sreg0、Sreg1分别占据c位,根据处理器内寄存器的数量决定;无符号立即数uimma占据a位,用于计算存储体首指令的地址,由公式LTn=ZLPpc+uimma*(Lmin/step)得到,其中ZLPpc代表ZLP指令的地址,LTn代表标号为n的循环单元循环体首指令的地址,Lmin代表最小指令编码的宽度,step代表处理器的最小寻址单元位宽。
在一个实施例中,以某一处理器为例,该处理器的指令编码宽度为16位或32位,也可以多条指令并行发射,并行指令包指令宽度为64位。如图所示,ZLP指令宽度为32位,其中,标识位和并行位一共占据8位;该处理器支持2个循环单元,Num占1位;循环计数器支持4种运算模式,Mode占2位,如表1所示,可以得到Num和Mode分别对应的指令编码形式。Sreg0、Sreg1为处理器内的地址寄存器,分别占3位,uimma用于存储循环体首指令与ZLP指令的偏移量,占4位。uimmb用于存储循环体尾指令与ZLP指令的偏移量,占11位。
以上针对ZLP指令做了相应的描述,以下结合附图对零开销循环处理方法进行描述。
图3是本发明一个实施例处理器的结构示意图。如图所示,该处理器包括零开销循环单元10、指令地址计算发送单元20、指令等待单元21、指令接收及指令拆包单元22、指令译码单元23、寄存器访问单元24、执行单元25、写回单元26、指令存储单元30。
其中零开销循环单元的接收端与指令地址计算发送单元20、指令接收及指令拆包单元22、寄存器访问单元24的输出端相连接;零开销循环单元的发送端与指令地址计算发送单元20、指令接收及指令拆包单元22、寄存器访问单元24相连接。
指令地址计算发送单元20发送取指令地址给指令存储单元30。经过指令等待单元21后,指令接收及指令拆包单元22从指令存储单元30接收指令,并根据指令编码的规律对指令进行拆包处理,并将拆包后的指令发送给指令译码单元23。
指令译码单元主要负责指令的译码,当译码到ZLP指令后,根据ZLP指令携带的参数(uimma、uimmb)以及ZLP指令的地址计算循环体首指令包首指令的地址、循环体尾指令包首指令的地址,根据ZLP指令编码中的参数(Num)确定要使用的循环单元编号,根据ZLP指令中的Mode发送读取Sreg0、Sreg1的请求,以及具体的运算模式,并将上述信号一起发送给寄存器访问单元24。
寄存器访问单元24根据请求读取对应的寄存器Sreg0、Sreg1,并根据运算模式,计算出循环次数。结合指令译码单元23发送的循环单元编号(Num)以及循环体首指令包首指令的地址,循环体尾指令包首指令的地址,产生对应循环单元循环次数寄存器(Cn)、循环体首指令包首指令的地址(Tn)、循环体尾指令包首指令的地址(Bn)的写使能以及写数据,并发送给执行单元25。当寄存器访问单元24接收到循环计数器递减控制模块14发送的循环次数寄存器递减控制信号后,将其发送给执行单元25。
执行单元25主要负责处理器的指令的运算,根据处理器结构的不同,可能包含多个流级,多个计算宏模块。在对循环的处理中,执行单元25收到循环寄存器的写使能以及写数据,或循环次数递减信号后,按照处理器的流水级将这组信号依次往后续流水级传递,直到发送给写回单元26。
写回单元26负责控制处理器内寄存器的写回。当写回单元26收到循环寄存器写入的信号后,控制将循环寄存器的新值写入对应的寄存器中。当写回单元26收到循环次数寄存器递减信号时,控制对应的循环次数寄存器递减。
指令接收及指令拆包单元22主要负责对接收指令进行拆包,若处理器配置有循环缓冲,循环缓冲位于指令接收及指令拆包单元22。根据循环缓冲启动模块13发送的循环缓冲启动标志,控制单元内的循环缓冲启动。根据寄存器访问单元24发送的最新的循环寄存器的值,与当前拆包的指令进行比较,并控制将循环体指令存储到循环缓冲中,并控制从循环缓冲或指令缓冲区中读取指令,并拆包等。
在寄存器访问单元24中,若处理器还有其他的指令或其他的途径可以修改循环寄存器,并且处理器还设置有BYPASS路径,则由寄存器访问单元24保证,发送给零开销循环单元10的循环寄存器的值是最新的值,即包含BYPASS路径中优先级更高的值。零开销循环单元10需要读取最新的循环寄存器的结果。
零开销循环单元10包括:取指地址计算及控制模块11、指令缓冲读指针变换控制模块12、循环缓冲启动模块13、循环计数器递减控制模块14。
当任意循环单元的循环次数寄存器的值大于0时,零开销循环单元10开启工作。若同时有多个循环次数寄存器大于0,说明存在循环交叠或循环嵌套等情况。
取指地址计算及控制模块11与寄存器访问单元24及指令地址计算发送单元20连接,接收来自寄存器访问单元24发送的最新的循环寄存器的值,并将开启的循环单元对应的循环体尾指令包的首地址与指令地址计算发送单元20发送的当前取指令地址PC_fetch进行比较。以循环单元0为例,若:PCfetch>=B0+Lmax/step,说明取指令的请求已经到了循环体外,其中Lmax代表最长指令包的长度。此时,由取指地址计算及控制模块11发送循环体首指令包的首指令地址(T0)给指令地址计算发送单元20,由其发送给指令存储单元30。
指令缓冲读指针变换控制模块12与寄存器访问单元24及指令接收及指令拆包单元22连接,接收来自寄存器访问单元24发送的最新的循环寄存器的值,并将开启的循环单元对应的循环体尾指令包的首地址与指令接收及指令拆包发送单元22发送的当前读指令地址PC_read进行比较。以循环单元0为例,若:PCread=B0,则说明已经拆包到了循环体最后的执行包。下一个指令包就应该是循环体的首指令包。由于在超长指令字的处理器中,执行包的长度可变,因而循环体首指令的位置可能位于指令包的任意节点处,因而,在指令渎取环节,循环体尾指令到首指令切换的过程时,指令缓冲读指针变换控制模块12会发送相应的读指针切换信号给指令接收及指令拆包单元22。指令接收及指令拆包单元22根据读指针切换信号以及循环体首指令地址(T0),改变读指针的位置。
循环缓冲启动模块13与寄存器访问单元24及指令接收及指令拆包单元22连接。若处理器配置有循环缓冲,循环缓冲启动模块13接收来自寄存器访问单元24发送的最新的循环寄存器的值,开启循环单元的循环体长度与循环缓冲的长度进行比较,以循环单元0为例,若 其中,Llb表示循环缓冲的长度,说明循环体能放入循环缓冲中,此时,循环缓冲启动模块13发送循环启动标志信号给指令接收及指令拆包单元22。
循环计数器递减控制模块14与寄存器访问单元24及指令接收及指令拆包单元22连接。循环计数器递减控制模块14接收来自寄存器访问单元24发送的最新的循环寄存器的值,当循环次数大于0时,启动循环体结束地址与指令接收及指令拆包单元22发送的当前拆包指令地址的比较。以循环单元0为例,若PCread=B0,,说明读取到循环体的最后一个执行包指令了,此时,循环计数器递减控制模块14发送对应循环单元的循环次数递减信号给指令译码单元23。
在上述流程中,循环寄存器作为处理器内的通用寄存器,而不是零开销循环单元10的专用寄存器。循环寄存器的写回是由写回单元26控制完成的,而不是在寄存器访问单元24计算得到循环寄存器的结果时立刻写回。此方法对循环寄存器的写回处理等同于内核其他通用寄存器,因而处理器的指令集中,除了ZLP指令,其他指令也可以访问循环寄存器,如可通过寄存器转移类指令或存储器加载指令等对其进行读写操作。进一步的,若零开销循环单元启动工作后,处理器遇到中断、异常或其他特殊事件时,可以通过寄存器转移类指令和访存类指令,将循环寄存器的值进行现场保护,待事件服务程序完成后,再通过以上指令组合恢复循环执行现场。实现了零开销循环单元对中断、异常等事件的支持。
图4是本发明实施例处理器的零开销循环处理方法的流程图,该方法包括步骤401~419:
在步骤401:指令译码时,根据指令编码中的标识位、并行位编码识别循环标志指令ZLP。若检测到ZLP指令,进入步骤402,否则停留在步骤401。
步骤402:对ZLP指令进一步译码,计算循环参数。根据循环标志指令ZLP携带的操作数信息,计算循环参数,并产生相关的循环寄存器的写信号。根据操作数uimma和ZLP指令的地址,计算出循环体首执行包的首指令地址;根据操作数uimmb和ZLP指令的地址,计算出循环体尾执行包的首指令地址;根据寄存器编号Sreg0、Sreg1申请读取对应的寄存器,获取寄存器值后,根据操作数Mode,计算出循环次数,根据操作数Num确定循环参数需要写入的循环寄存器组编号。然后进入步骤403。
步骤403:对循环次数进行比较。若任意一个循环单元的循环次数大于0,则进入步骤404,否则停留在步骤403。
步骤404:启动零开销循环单元10,然后进入步骤405。
步骤405:判断处理器是否配置有循环缓冲,若有,进入步骤406,否则,进入同时步骤412和417,分别控制取指令和读指令的流程。。
步骤406:进一步判断循环次数大于0的循环单元对应的循环体长度是否小于或等于循环缓冲长度。即循环体是否能存入循环缓冲之中。具体计算公式为其中Bn和Tn代表对应的循环体尾执行包首指令的地址和循环体首执行包首指令的地址。n代表循环单元的编号。若是,进入步骤407,否则同时进入步骤12和步骤417。
步骤407:循环缓冲启动,在步骤407到411中,循环缓冲读写的具体控制由循环缓冲所在的模块具体控制,实现方法很多,在此不进行具体的限制。然后,进入步骤408。
步骤408:将循环体指令加载到循环体中。加载完毕后,进入步骤409。
步骤409:从循环体中读取循环体的指令,并执行。然后进入步骤410。
步骤410:判断循环体是否执行完毕,若是,进入步骤411,否则返回步骤409。
步骤411:清空循环缓冲,循环体执行完毕。步骤412:取指令地址的判断。获取当前发送给存储器的取指令地址,并将它与循环单元的尾指令包的首指令地址进行比较,若PCfetch>=B0+Lmax/step,说明取指令的请求已经到了循环体外。进入步骤414,否则进入步骤413。
步骤413:取指令模块发送的下一个取指令地址等于当前取指令地址与取指令宽度的累加。并在下一时钟周期,返回步骤412。
步骤414:进一步判断对应的循环单元循环次数寄存器的值是否大于0,若是,说明循环体还需要反复执行,进入步骤415,否则进入步骤416。
步骤415:取指令模块发送的下一个取指令地址为对应循环体的首执行包的首指令地址。并在下一时钟周期,返回步骤412。步骤416:对应循环体的取指令过程完成。此时,可根据处理器的情况,选择继续向后取指令直到指令缓冲满;或者暂停取指令,等待步骤421循环体执行完成后,再继续向后取指令。
步骤417:读指令地址的判断。获取当前拆包的执行包首指令的地址,并将它与循环单元的尾指令包的首指令地址进行比较,若PCread=B0,说明读取到循环体的最后一个执行包指令了。进入步骤418,否则进入步骤419。
步骤418:进一步判断对应的循环单元循环次数寄存器的值是否大于0,若是,说明循环体还需要反复执行,进入步骤420,否则进入步骤421。
步骤419:继续读取当前的循环体并执行:控对应的循环体指令缓冲读指针正常的累加变换,并保持对应的循环寄存器值不变。在下一时钟周期,返回步骤417。
步骤420:控制指令缓冲读指针切换到对应循环体首执行包首指令所在指令包的位置;控制对应循环体的循环次数寄存器减1。然后,在下一时钟周期,返回步骤417。
步骤421:对应的循环体执行完毕。指令缓冲读指针正常的累加变换,即离开循环体,读取循环体外的指令继续执行;同时控制对应循环的循环寄存器清0。
本发明实施例零开销循环处理方法的循环指令丰富,通过采用寄存器运算的方式得到循环次数,来支持循环次数或循环步长动态变化的循环体,同时可支持的循环次数不受指令编码位数的限制,范围更广。循环参数寄存器采用内核通用寄存器的读写方式,还可以支持其他指令对循环参数寄存器的修改,从而支持中断、异常等事件的现场保护和现场恢复;还支持具有不同指令宽度的处理器,支持超长指令字处理器,支持配置有循环缓冲的处理器;并且,可以通过配置循环参数寄存器对的数目实现对多重嵌套循环的支持。
表1本发明一实施例零开销循环标志类指令关键位编码与指令格式对应表
零开销循环标志指令 | Num | Mode |
ZLP(Tlable,Blabel)C0=Sreg0 | 0 | 00 |
ZLP(T1able,Blabel)C0=Sreg0>>1 | 0 | 01 |
ZLP(Tlable,Blabel)C0=Sreg0+Sreg1 | 0 | 10 |
ZLP(Tlable,Blabel)C0=Sreg0>>Sreg1 | 0 | 11 |
ZLP(Tlable,Blabel)C1=Sreg0 | 1 | 00 |
ZLP(Tlable,Blabel)C1=Sreg0>>1 | 1 | 01 |
ZLP(Tlable,Blabel)C1=Sreg0+Sreg1 | 1 | 10 |
ZLP(Tlable,Blabel)C1=Sreg0>>Sreg1 | 1 | 11 |
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种指令字处理器,包括:
零开销循环单元、指令地址计算发送单元、指令等待单元、指令接收及指令拆包单元、指令译码单元、寄存器访问单元、执行单元、写回单元、指令存储单元;
所述零开销循环单元的接收端与指令地址计算发送单元、指令接收及指令拆包单元、寄存器访问单元的输出端相连接,零开销循环单元的发送端与指令地址计算发送单元、指令接收及指令拆包单元、寄存器访问单元相连接;
指令地址计算发送单元发送取指令地址给指令存储单元,经过指令等待单元后,指令接收及指令拆包单元从指令存储单元接收指令,并根据指令编码的规律对指令进行拆包处理,并将拆包后的指令发送给指令译码单元;
指令译码单元用于负责指令的译码,当译码到ZLP指令后,根据ZLP指令携带的参数以及ZLP指令的地址,计算循环体首指令包首指令的地址、循环体尾指令包首指令的地址,根据ZLP指令编码中的参数确定要使用的循环单元编号,根据ZLP指令中的Mode发送读取Sreg0、Sreg1的请求,以及运算模式,并将上述循环单元编号以及循环体首指令包首指令的地址,循环体尾指令包首指令的地址一起发送给寄存器访问单元;
寄存器访问单元用于根据请求读取对应的寄存器Sreg0、Sreg1,并根据运算模式,计算出循环次数,结合指令译码单元发送的循环单元编号以及循环体首指令包首指令的地址,循环体尾指令包首指令的地址,产生对应循环单元循环次数寄存器、循环体首指令包首指令的地址、循环体尾指令包首指令的地址的写使能以及写数据,并发送给执行单元,当寄存器访问单元接收到零开销循环单元的循环计数器递减控制模块发送的循环次数寄存器递减控制信号后,将其发送给执行单元;
执行单元用于负责处理器的指令的运算,根据处理器结构中包含的多个流级,多个计算宏模块,在对循环的处理中,执行单元收到循环寄存器的写使能以及写数据,或循环次数递减信号后,按照处理器的流水级将循环寄存器的写使能以及写数据,或循环次数递减信号依次往后续流水级传递,直到发送给写回单元;
写回单元用于负责控制处理器内寄存器的写回,当写回单元收到循环寄存器写入的信号后,控制将循环寄存器的新值写入对应的寄存器中,当写回单元收到循环次数寄存器递减信号时,控制对应的循环次数寄存器递减;
指令接收及指令拆包单元用于负责对接收指令进行拆包,若处理器配置有循环缓冲,循环缓冲位于指令接收及指令拆包单元,根据零开销循环单元中循环缓冲启动模块发送的循环缓冲启动标志,控制单元内的循环缓冲启动,根据寄存器访问单元发送的最新的循环寄存器的值,与当前拆包的指令进行比较,并控制将循环体指令存储到循环缓冲中,并控制从循环缓冲或指令缓冲区中读取指令,并拆包。
2.根据权利要求1所述的指令字处理器,其特征在于,
在寄存器访问单元中,若处理器还有其他的指令或其他的途径可以修改循环寄存器,并且处理器还设置有BYPASS路径,则由寄存器访问单元保证,发送给零开销循环单元的循环寄存器的值是最新的值,所述最新的值包含BYPASS路径中优先级更高的值;
其中,零开销循环单元需要读取最新的循环寄存器的结果。
3.根据权利要求1所述的指令字处理器,其特征在于,
零开销循环单元包括:取指地址计算及控制模块、指令缓冲读指针变换控制模块、循环缓冲启动模块、循环计数器递减控制模块;
当任意循环单元的循环次数寄存器的值大于0时,零开销循环单元开启工作,若同时有多个循环次数寄存器大于0,说明存在循环交叠或循环嵌套;
取指地址计算及控制模块与寄存器访问单元及指令地址计算发送单元连接,接收来自寄存器访问单元发送的最新的循环寄存器的值,并将开启的循环单元对应的循环体尾指令包的首地址与指令地址计算发送单元发送的当前取指令地址PC_fetch进行比较;
当取指令的请求已经到了循环体外,由取指地址计算及控制模块发送循环体首指令包的首指令地址给指令地址计算发送单元,由其发送给指令存储单元;
指令缓冲读指针变换控制模块与寄存器访问单元及指令接收及指令拆包单元连接,接收来自寄存器访问单元发送的最新的循环寄存器的值,并将开启的循环单元对应的循环体尾指令包的首地址与指令接收及指令拆包发送单元发送的当前读指令地址PC_read进行比较;
循环缓冲启动模块与寄存器访问单元及指令接收及指令拆包单元连接,若处理器配置有循环缓冲,循环缓冲启动模块接收来自寄存器访问单元发送的最新的循环寄存器的值,开启循环单元的循环体长度与循环缓冲的长度进行比较,若循环体能放入循环缓冲中,循环缓冲启动模块发送循环启动标志信号给指令接收及指令拆包单元;
循环计数器递减控制模块与寄存器访问单元及指令接收及指令拆包单元连接,循环计数器递减控制模块接收来自寄存器访问单元发送的最新的循环寄存器的值,当循环次数大于0时,启动循环体结束地址与指令接收及指令拆包单元发送的当前拆包指令地址的比较,若若读取到循环体的最后一个执行包指令,则循环计数器递减控制模块发送对应循环单元的循环次数递减信号给指令译码单元。
4.根据权利要求1所述的指令字处理器,其特征在于,循环寄存器作为处理器内的通用寄存器。
5.根据权利要求1所述的指令字处理器,其特征在于,循环寄存器的写回由写回单元控制完成。
6.根据权利要求1所述的指令字处理器,其特征在于,
若零开销循环单元启动工作后,处理器遇到中断、异常或其他特殊事件时,通过寄存器转移类指令和访存类指令,将循环寄存器的值进行现场保护,待事件服务程序完成后,再通过寄存器转移类指令和访存类指令的组合恢复循环执行现场。
7.一种处理器零开销循环处理方法,包括以下步骤:
对循环标志指令进行译码;
计算循环参数,包括循环次数,循环体起始指令地址,循环体结束指令地址,并通过执行级流水逐级往下传递,直到写回阶段,将循环参数写回到对应的循环参数寄存器中;
判断是否有循环单元的循环次数大于0;
若有,则启动零开销循环单元;
判断处理器装置是否配备有循环缓冲,若有,进一步判断循环体的长度是否小于或等于循环缓冲的长度,若是,则启动循环缓冲;若处理器没有循环缓冲,或循环体长度大于循环缓冲的长度,则:
读取当前的取指令地址,并判断当前取指令地址是否大于或等于使能的循环单元的结束地址,若是,则判断对应循环单元的循环次数是否大于0,若是,则更新下一取指令地址为对应循环体的循环起始地址,若当前取指令地址小于使能的循环单元结束地址,或者对应的循环次数大于0,则下一取指令地址等于当前取指令地址的累加;且
读取当前拆包的指令的地址,并判断当前拆包的指令地址是否大于或等于使能的循环单元的结束地址,若是,进一步判断对应循环单元的循环次数是否大于0,若是,则修改指令缓冲的读指针到循环体首指令所在指令包的位置;否则,指令缓冲读指针的位置根据当前拆包指令的长度正常累加。
8.根据权利要求7所述的处理器零开销循环处理方法,其特征在于,
零开销循环单元启动时,读取当前拆包的指令的地址,并判断当前拆包的指令地址是否大于或等于使能的循环单元的结束地址,若是,进一步判断对应循环单元的循环次数是否大于0,若是,则修改对应循环单元的循环次数寄存器,使其减,否则,保持循环参数寄存器不变。
9.一种电子设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器为权利要求1至6中任一项所述的指令字处理器。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求7或8所述的处理器零开销循环处理方法中的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110188273.3A CN112835624A (zh) | 2021-02-18 | 2021-02-18 | 指令字处理器及零开销循环处理方法、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110188273.3A CN112835624A (zh) | 2021-02-18 | 2021-02-18 | 指令字处理器及零开销循环处理方法、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112835624A true CN112835624A (zh) | 2021-05-25 |
Family
ID=75933655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110188273.3A Pending CN112835624A (zh) | 2021-02-18 | 2021-02-18 | 指令字处理器及零开销循环处理方法、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835624A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114340097A (zh) * | 2021-12-30 | 2022-04-12 | 合肥市芯海电子科技有限公司 | 一种控制灯带的方法、装置、芯片和电子设备 |
CN115495155B (zh) * | 2022-11-18 | 2023-03-24 | 北京数渡信息科技有限公司 | 一种适用于通用处理器的硬件循环处理装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6367071B1 (en) * | 1999-03-02 | 2002-04-02 | Lucent Technologies Inc. | Compiler optimization techniques for exploiting a zero overhead loop mechanism |
CN102508635A (zh) * | 2011-10-19 | 2012-06-20 | 中国科学院声学研究所 | 一种处理器装置及其循环处理方法 |
WO2017163039A1 (en) * | 2016-03-23 | 2017-09-28 | Arm Limited | Program loop control |
CN108595210A (zh) * | 2018-04-09 | 2018-09-28 | 杭州中天微系统有限公司 | 实现零开销循环的处理器 |
CN108885549A (zh) * | 2016-03-23 | 2018-11-23 | Arm有限公司 | 分支指令 |
CN110110145A (zh) * | 2018-01-29 | 2019-08-09 | 腾讯科技(深圳)有限公司 | 描述文本生成方法及装置 |
-
2021
- 2021-02-18 CN CN202110188273.3A patent/CN112835624A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6367071B1 (en) * | 1999-03-02 | 2002-04-02 | Lucent Technologies Inc. | Compiler optimization techniques for exploiting a zero overhead loop mechanism |
CN102508635A (zh) * | 2011-10-19 | 2012-06-20 | 中国科学院声学研究所 | 一种处理器装置及其循环处理方法 |
WO2017163039A1 (en) * | 2016-03-23 | 2017-09-28 | Arm Limited | Program loop control |
CN108885549A (zh) * | 2016-03-23 | 2018-11-23 | Arm有限公司 | 分支指令 |
CN110110145A (zh) * | 2018-01-29 | 2019-08-09 | 腾讯科技(深圳)有限公司 | 描述文本生成方法及装置 |
CN108595210A (zh) * | 2018-04-09 | 2018-09-28 | 杭州中天微系统有限公司 | 实现零开销循环的处理器 |
Non-Patent Citations (1)
Title |
---|
郭旭龙: "适用于一种低功耗DSP处理器的循环缓冲电路模块的系统设计", 《中国优秀硕士学位论文全文数据库(电子期刊)》, pages 137 - 9 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114340097A (zh) * | 2021-12-30 | 2022-04-12 | 合肥市芯海电子科技有限公司 | 一种控制灯带的方法、装置、芯片和电子设备 |
CN115495155B (zh) * | 2022-11-18 | 2023-03-24 | 北京数渡信息科技有限公司 | 一种适用于通用处理器的硬件循环处理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101965554B (zh) | 选择性地提交已执行指令的结果的系统和方法 | |
US8069336B2 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
US9965274B2 (en) | Computer processor employing bypass network using result tags for routing result operands | |
JP3798404B2 (ja) | 2レベルの分岐予測キャッシュによる分岐予測 | |
US7434030B2 (en) | Processor system having accelerator of Java-type of programming language | |
US20220326954A1 (en) | Exit history based branch prediction | |
JP5512803B2 (ja) | ベクトル命令を取り扱うためのデータ処理装置および方法 | |
KR100956970B1 (ko) | 프로세서에서의 마스킹된 저장 동작들을 위한 시스템 및방법 | |
CN102508635B (zh) | 一种处理器装置及其循环处理方法 | |
US9632775B2 (en) | Completion time prediction for vector instructions | |
CN112835624A (zh) | 指令字处理器及零开销循环处理方法、电子设备及介质 | |
KR20110055629A (ko) | 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공 | |
CN111213131B (zh) | 高速缓存器中的零时延预提取 | |
KR101618669B1 (ko) | 마스크 레지스터를 이용한 점프를 위한 시스템, 장치, 및 방법 | |
CN112148367A (zh) | 用于处理循环指令集合的方法、装置、设备和介质 | |
CN117421259A (zh) | 用飞行中预取服务于cpu需求请求 | |
WO2006096568A2 (en) | Power saving methods and apparatus for variable length instructions | |
US20120173850A1 (en) | Information processing apparatus | |
WO2023142524A1 (zh) | 指令处理方法、装置、芯片、电子设备以及存储介质 | |
US11934830B2 (en) | Method and apparatus for data-ready memory operations | |
JP2006527436A (ja) | データ処理装置及びレジスタ・ファイルとメモリとの間でデータ値を転送する方法 | |
US11474946B2 (en) | Calculator and calculation method | |
US8631173B2 (en) | Semiconductor device | |
CN112540795A (zh) | 指令处理装置和指令处理方法 | |
CN118276951B (zh) | 基于risc-v的指令扩展方法及实现装置 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210525 |
|
WD01 | Invention patent application deemed withdrawn after publication |