CN115269009A - 指令处理方法、装置、处理器和电子设备 - Google Patents
指令处理方法、装置、处理器和电子设备 Download PDFInfo
- Publication number
- CN115269009A CN115269009A CN202210893579.3A CN202210893579A CN115269009A CN 115269009 A CN115269009 A CN 115269009A CN 202210893579 A CN202210893579 A CN 202210893579A CN 115269009 A CN115269009 A CN 115269009A
- Authority
- CN
- China
- Prior art keywords
- instruction
- carry flag
- source operand
- control signal
- operand
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Advance Control (AREA)
Abstract
本申请涉及计算机领域,公开了一种指令处理方法、装置、处理器和电子设备。在对具有进位标志依赖关系的第一指令和第二指令进行处理时,在第一时钟周期对应于第一指令进行解码,然后进入第二时钟周期;在第二时钟周期内,此时对应于第一指令进行移位,同时对应于第二指令进行解码,但是由于此时未产生第一指令的进位标志结果,此时不等待第一指令的进位标志结果的产生,结束对第二指令的解码使得处理第二指令的过程由第二周期进入第三周期。因而,在处理具有进位标志依赖关系的第一指令和第二指令时,由于第二指令提前进入第三周期,使得第二指令的下一指令可以不需要多等待一个时钟周期提前进入解码阶段,进而当处理多条指令时,提高处理效率。
Description
技术领域
本申请涉及计算机领域,特别是涉及一种指令处理方法、装置、处理器和电子设备。
背景技术
在计算机系统中,算术逻辑单元(Arithmetic Logic Unit,ALU)是中央处理器的主要组成部分,用于执行算术和逻辑运算,例如加法、减法以及布尔比较等。与算术逻辑单元对应的ALU指令,通常包含在指令集架构(Instruction Set Architecture,ISA)中。ALU指令是一个大的指令集合,包括加法(Addition)指令、减法(Subtract)指令以及比较指令等。处理器根据接收到的ALU指令进行运算,其中,当处理器接收到有进位标志(CarryFlag,CF)依赖关系的两条指令后,会存在执行后一条指令的时候需要用到前一条指令的进位标志CF结果的情况,例如,对于连续的两条指令,第一条指令为ADCS(带进位加法并更新进位标志结果)指令,第二条指令为ADC(带进位加法)指令,此时由于第一条指令得到的进位标志CF结果会使标志寄存器中的进位标志CF值更新,所以第二条ADC指令被执行时,就需要使用第一条ADCS指令的进位标志CF结果,即第二条指令需要基于第一条指令的进位标志CF结果才能得到相应结果。
然而,处理器在执行有进位标志依赖关系的两条指令时,若执行第一条指令时获取进位标志CF结果的时间较长,当处理器利用流水线(pipeline)方式处理指令时,由于第二条指令的结果需要基于第一条指令的进位标志CF结果才能得到,所以处理器在对第二条指令进行解码时需要额外的等待时间,使得处理器在处理第二条指令的下一条指令时需要多等待一个时钟周期进入解码阶段,进而使得处理器在处理多条指令时,需要花费较多的时间,处理效率低。
发明内容
有鉴于此,本申请实施例提供了一种指令处理方法、装置、处理器和电子设备。
第一方面,本申请实施例提供了一种基于进位标志的指令处理装置,指令处理装置包括,解码单元、第一寄存单元、移位单元、第一算术逻辑单元、第二寄存单元、第二算术逻辑单元,并且其中,
所述解码单元,用于对获取到的第一指令和第二指令进行解码;其中,
对于所述第一指令,将解码得到的所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述第一指令的移位位数、所述第一指令的进位标志值、所述第一指令的移位控制信号以及所述第一指令的相加控制信号送给所述第一寄存单元;以及,对于所述第二指令,在不等待所述第一指令的进位标志结果的产生的情况下,将解码得到的所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二指令的第一相加控制信号以及所述第二指令的第二相加控制信号送给所述第一寄存单元;其中,所述第一指令与所述第二指令具有进位标志依赖关系,并且所述第一指令的第二源操作数需要进行移位操作,所述第二指令的第二源操作数不需要进行移位操作;
所述第一寄存单元,用于存储所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述移位位数、所述移位控制信号、所述相加控制信号,并且将所述第一指令的第二源操作数、所述移位位数以及所述移位控制信号送给所述移位单元,将所述第一指令的第一源操作数、所述第一指令的进位标志值以及所述相加控制信号送给所述第二寄存单元;以及,用于存储所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二指令的第一相加控制信号以及所述第二指令的第二相加控制信号,并且将所述第二指令的第一源操作数、所述第二指令的第二源操作数以及所述第一相加控制信号送给所述第一算术逻辑单元,将所述第二相加控制信号送给所述第二寄存单元;
所述移位单元,用于根据所述移位控制信号以及所述移位位数将所述第一指令的第二源操作数进行移位操作得到移位操作数,并且将所述移位操作数送给所述第二寄存单元;
所述第一算术逻辑单元,用于根据所述第一相加控制信号将所述第二指令的第一源操作数以及所述第二指令的第二源操作数相加,并且将所述第二指令的第一源操作数以及所述第二指令的第二源操作数送给所述第二寄存单元;
所述第二寄存单元,用于存储所述第一指令的第一源操作数、所述移位操作数以及所述相加控制信号,并且将所述第一指令的第一源操作数、所述移位操作数以及所述相加控制信号送给第二算术逻辑单元;用于存储所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二算术逻辑单元传递的所述第一指令的进位标志结果以及所述第二相加控制信号,并且将所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二相加控制信号以及所述第一指令的进位标志结果送给所述第二算术逻辑单元;
所述第二算术逻辑单元,用于根据所述相加控制信号将所述第一指令的第一源操作数、所述移位操作数、所述第一指令的进位标志值相加,得到所述第一指令的和值以及所述第一指令的进位标志结果;用于根据所述第二相加控制信号将所述第二指令的第一源操作数、所述第一指令的第二源操作数以及作为所述第二指令的进位标志值的所述第一指令的进位标志结果相加,得到所述第二指令的和值。
可以理解的,上述基于进位标志的指令处理装置为指令处理装置200b。
可以理解的,当解码单元在对第二指令处理的时候,不等待第一指令的进位标志结果,将解码得到的第二指令的第一源操作数、第二指令的第二源操作数、第二指令的第一相加控制信号以及第二指令的第二相加控制信号送给所述第一寄存单元,使得第二指令结束解码操作,从而进入下一个时钟周期,利用第一算术逻辑单元根据第一相加控制信号将第二指令的第一源操作数以及第二指令的第二源操作数相加,此时仅仅是为了使第二指令的处理过程与第二算术逻辑单元处理第一指令的过程保持一致,从而第二寄存单元才可以在差不多的时间收到第二指令的第一源操作数以及第二源操作以及第一指令的进位标志结果,使得第二算术逻辑单元可以在得到第一指令的进位标志结果后的下一周期就可以根据第二指令的第一源操作数以及第二源操作数以及第一指令的进位标志结果在第二相加控制信号下进行相加,从而得到第二指令的和值,在该过程中,利用了在处理器中具有与第一算术逻辑单元处理第二指令时的对应的功能相同的第二算术逻辑单元,使得在不延长处理第二指令的时钟周期的情况下,使第二指令的下一条指令提前进入解码阶段,从而使得第二指令的下一条指令可以早一些时间完成,在处理多条指令的情况下,提高了处理多条指令的效率,减少了处理时间。
在上述第一方面的一种可能的实现中,所述第一指令与所述第二指令具有进位标志依赖关系,包括,所述第二指令的和值是基于所述第一指令的进位标志结果确定的。
在上述第一方面的一种可能的实现中,所述对获取到的第一指令和第二指令进行解码,包括,
所述解码单元在第一时钟周期对所述第一指令进行解码,在第二时钟周期对所述第二指令进行解码,所述第二时钟周期是所述第一时钟周期的下一时钟周期。
在上述第一方面的一种可能的实现中,所述在不等待所述第一指令的进位标志结果的产生的情况,包括,所述解码单元在未接收到所述第一指令的进位标志结果的情况下结束对所述第二指令的解码。
在上述第一方面的一种可能的实现中,所述解码单元为解码器,所述第一寄存单元为寄存器组,所述第二寄存单元为寄存器组,所述移位单元为移位器。
第二方面,本申请实施例提供了一种基于进位标志的指令处理方法,应用于电子设备,包括,
在第一时钟周期对获取的第一指令进行解码,得到所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述第一指令的进位标志值、所述第一指令的移位位数、所述第一指令的移位控制信号以及所述第一指令的相加控制信号;
在紧随着所述第一时钟周期后的第二时钟周期,根据所述移位控制信号以及所述移位位数对所述第一指令的第二源操作数进行移位操作,得到移位操作数;同时,对获取的第二指令进行解码得到所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二指令的第一相加控制信号、所述第二指令的第二相加控制信号,并且不等待所述第一指令的进位标志结果的产生;其中,所述第一指令与所述第二指令具有进位标志依赖关系,并且所述第一指令的第二源操作数需要进行移位操作,所述第二指令的第二源操作数不需要进行移位操作;
其中,所述第一指令的第二源操作数需要进行移位操作,所述第一指令的进位标志结果作为所述第二指令的进位标志值参与运算,并且,所述第二指令的第二源操作数不需要进行移位操作;
在紧随着所述第二时钟周期后的第三时钟周期,根据所述相加控制信号对所述第一指令的第一源操作数、所述移位操作数以及所述第一指令的进位标志值相加得到所述第一指令的和值以及所述第一指令的进位标志结果;同时,根据所述第一相加控制信号对所述第二指令的第一源操作数、所述第二指令的第二源操作数相加,并且将产生的所述第一指令的进位标志结果作为所述第二指令的进位标志值;
在紧随着第三时钟周期后的第四时钟周期,根据第二相加控制信号对所述第二指令的第一源操作数、所述第二指令的第二源操作数以及作为所述第二指令的进位标志值的所述第一指令的进位标志结果相加,得到所述第二指令的和值。
可以理解的,在第二时钟周期对第二指令进行解码的时候,不等待第一指令的进位标志结果的产生,第三时钟周期根据第一相加控制信号将第二指令的第一源操作数以及第二指令的第二源操作数相加,单得到的结果不再考虑范围内,此时仅仅是为了与该时钟周期中与根据相加控制信号对第一指令的第一源操作数、移位操作数以及第一指令的进位标志值相加得到第一指令的和值第一指令的进位标志结果的过程对应,使得在时钟周期的后期得到第一指令的进位标志结果后,可以在第四周期将根据得到的第一指令的进位标志结果得到第二指令的和值。因而,在不延长处理第二指令的时钟周期的情况下,使第二指令的下一条指令提前进入解码阶段,在处理多条指令的情况下,提高了处理器处理多条指令的效率,减少了处理时间。
在上述第二方面的一种可能的实现中,所述第一指令与所述第二指令具有进位标志依赖关系,包括,所述第二指令的和值是基于所述第一指令的进位标志结果确定的。
在上述第二方面的一种可能的实现中,其特征在于,所述相加控制信号为,将所述第一指令的第一源操作数、所述第一指令的第二源操作数以及所述第一指令的进位标志值相加的控制信号。
在上述第二方面的一种可能的实现中,所述第一相加控制信号为,将所述第二指令的第一源操作数、所述第二指令的第二源操作数相加的控制信号;所述第二相加控制信号为,将所述第二指令的第一源操作数、所述第二指令的第二源操作数以及所述第二指令的进位标志值相加的控制信号。
第三方面,本申请实施例提供了一种基于进位标志的指令处理装置,所述指令处理装置包括,解码单元、第一寄存单元、移位单元、第一算术逻辑单元、第一执行单元、选择单元、第二寄存单元、第二算术逻辑单元,并且其中,
所述解码单元,用于对获取到的第一指令和第二指令进行解码;其中,
对于所述第一指令,将解码得到的所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述第一指令的移位位数、所述第一指令的进位标志值、所述第一指令的移位控制信号以及所述第一指令的相加控制信号送给所述第一寄存单元;
对于所述第二指令,在不等待所述第一指令的进位标志结果产生的情况下,将解码得到的所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二指令的相加控制信号送给所述第一寄存单元;其中,所述第一指令的第二源操作数需要进行移位操作,所述第二指令的第二源操作数不需要进行移位操作,并且所述第二指令的和值基于所述第一指令的进位标志结果确定;
所述第一寄存单元,用于存储所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述移位位数、所述移位控制信号、所述相加控制信号,并且将所述第一指令的第二源操作数、所述移位位数以及所述移位控制信号送给所述移位单元,将所述第一指令的第一源操作数、所述第一指令的进位标志值以及所述相加控制信号送给第二寄存单元;用于存储所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二指令的相加控制信号,并且将所述第二指令的第一源操作数、所述第二指令的第二源操作数以及所述第二指令的相加控制信号送给第一算术逻辑单元,并且,将所述第二指令的第一源操作数、所述第二指令的第二源操作数以及所述第二指令的相加控制信号送给所述第一执行单元;
所述移位单元,用于根据所述移位控制信号以及所述移位位数将所述第一指令的第二源操作数进行移位操作得到移位操作数,并且将所述移位操作数送给所述第二寄存单元;
所述第一算术逻辑单元,用于根据所述第二指令的相加控制信号将所述第二指令的第一源操作数以及所述第二指令的第二源操作数以及第一预设进位标志值相加得到第一和值,并且将所述第一和值送给所述选择单元;
所述第一执行单元,用于根据所述第二指令的相加控制信号将所述第二指令的第一源操作数以及所述第二指令的第二源操作数以及第二预设进位标志值相加得到第二和值,并且将所述第二和值送给所述选择单元;
所述第二寄存单元,用于存储所述第一指令的第一源操作数、所述移位操作数以及所述相加控制信号,并且将所述第一指令的第一源操作数、所述移位操作数以及所述第一指令的相加控制信号送给第二算术逻辑单元;
所述第二算术逻辑单元,用于根据所述第一指令的相加控制信号将所述第一指令的第一源操作数、所述移位操作数、所述第一指令的进位标志值相加,得到所述第一指令的和值以及所述第一指令的进位标志结果,并且将所述第一指令的进位标志结果送给所述选择单元;
所述选择单元,用于根据所述第一指令的进位标志结果从所述第一和值与所述第二和值中确定所述第二指令的和值。
可以理解的,由于解码单元对第二指令进行解码时,在不等待第一指令的进位标志结果产生的情况下,将解码得到的第二指令的第一源操作数、第二指令的第二源操作数、第二指令的相加控制信号送给第一寄存单元,使得解码单元可以对第二指令的下一条指令进行解码,使得第二指令的下一条指令不需要再多等待一个时钟周期才可以进行解码,当处理多条指令时,减少了处理时间;另外,通过利用具有第一算术逻辑单元功能的执行单元,通过分别在执行单元与第一算术逻辑单元预设进位标志值得到第二指令在进位标志值不同的情况下的所有结果,使得在获得第一指令的进位标志结果后,可以直接通过选择单元快速获取第二指令的和值,此时处理器仅需花费两个时钟周期就可以得到第二指令的结果,进一步加快了处理效率,节省了执行时间。
在上述第三方面的一种可能的实现中,所述第一执行单元由地址生成单元实现。
可以理解的,当上述第一执行单元由地址生成单元实现时,上述基于进位标志的指令处理装置为指令处理装置200c。地址生成单元是原先处理指令时,被闲置的具有第一算术逻辑单元功能的执行单元,当给地址生成单元与第一算术逻辑单元同样的第二指令的源操作数与控制信号时,在分别预设不同的进位标志值时,两者可以得到对应于第二指令的两种和值结果,使得选择单元根据第一指令的进位标志结果可以直接得到对应于第二指令的和值,并且由于地址生成单元是闲置的,实现了资源的重复利用,不仅节省了资源,也提高了处理指令的速度,节省了处理时间。
在上述第三方面的一种可能的实现中,所述第一执行单元由算术逻辑单元实现。
可以理解的,当上述第一执行单元由算术逻辑单元实现,可以确保第一执行单元为具有与第一算术逻辑单元功能相同的执行单元,当给第一执行单元与第一算术逻辑单元同样的第二指令的源操作数与控制信号时,在分别预设不同的进位标志值时,可以得到对应于第二指令的两种和值结果,从而确保得到对应于第二指令的两种不同结果,使得选择单元根据第一指令的进位标志结果可以直接得到对应于第二指令的和值。
在上述第三方面的一种可能的实现中,所述第一指令与所述第二指令具有进位标志依赖关系,包括,所述第二指令的和值基于所述第一指令的进位标志结果确定的。
在上述第三方面的一种可能的实现中,所述对获取到的第一指令和第二指令进行解码,包括,
所述解码单元在第一时钟周期对所述第一指令进行解码,在第二时钟周期对所述第二指令进行解码,所述第二时钟周期是所述第一时钟周期的下一时钟周期。
在上述第三方面的一种可能的实现中,所述在不等待所述第一指令的进位标志结果的产生的情况,包括,所述解码单元在未接收到所述第一指令的进位标志结果的情况下结束对所述第二指令的解码。
在上述第三方面的一种可能的实现中,所述根据所述第一指令的进位标志结果从所述第一和值与所述第二和值中确定所述第二指令的和值,包括
当所述第一预设进位标志值与所述第一指令的进位标志结果相同,则将所述第一和值作为所述第二指令的和值;当所述第二预设进位标志值与所述第一指令的进位标志结果相同,则将所述第二和值作为所述第二指令的和值。
第四方面,本申请实施例提供了一种基于进位标志的指令处理方法,应用于电子设备,包括,
在第一时钟周期对获取的第一指令进行解码,得到所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述第一指令的进位标志值、所述第一指令的移位位数、所述第一指令的移位控制信号以及所述第一指令的相加控制信号;
在紧随着所述第一时钟周期后的第二时钟周期,根据所述移位控制信号以及所述移位位数对所述第一指令的第二源操作数进行移位操作,得到移位操作数;同时,对获取的第二指令解码得到所述第二指令的第一源操作数、第二指令的第二源操作数、所述第二指令的相加控制信号,并且不等待所述第一指令的进位标志结果的产生;其中,所述第一指令与所述第二指令具有进位标志依赖关系,并且所述第一指令的第二源操作数需要进行移位操作,所述第二指令的第二源操作数不需要进行移位操作;
在紧随着所述第二时钟周期后的第三时钟周期,根据所述第一指令的相加控制信号对所述第一指令的第一源操作数、所述移位操作数以及所述第一指令的进位标志值相加得到所述第一指令的和值以及所述第一指令的进位标志结果;同时,根据所述第二指令的相加控制信号将所述第二指令的第一源操作数、所述第二指令的第二源操作数与第一预设进位标志值相加得到第一和值,将所述第二指令的第一源操作数、所述第二指令的第二源操作数与第二预设进位标志值相加得到第二和值,并且根据所述第一指令的进位标志结果从所述第一和值与所述第二和值中确定所述第二指令的和值。
可以理解的,在对第二指令解码的时候不等待所述第一指令的进位标志结果的产生,就使对第二指令的处理进入到下一个阶段进入到流水线2,使得解码单元可以对第二指令的下一条指令进行解码,从而使得第二指令的下一条指令可以早一些时间完成,当多条指令需要被处理时,节省了时间,提高了效率;另外,给第一执行单元送入与第一算术逻辑单元相同的数据,并且通过对第一执行单元以及第一算术逻辑单元分别预先设置不同的进位标志值,此时这两个执行单元就可以分别得到进位标志值在所有情况下的对应于第二指令所有可能的和值结果,当在第三时钟周期得到第一指令的进位标志结果值后,即可以根据第一指令的进位标志结果在当前时钟周期下直接选择出第二指令的和值结果,从而将原先得到第二指令所需花费的3个时钟周期减少到花费2个时钟周期,进一步加快了处理效率,节省了时间。
在上述第四方面的一种可能的实现中,所述第一指令与所述第二指令具有进位标志依赖关系,包括,所述第二指令的和值基于所述第一指令的进位标志结果确定的。
在上述第四方面的一种可能的实现中,所述不等待所述第一指令的进位标志结果的产生,包括,所述解码单元在未接收到所述第一指令的进位标志结果的情况下结束对所述第二指令的解码。
在上述第四方面的一种可能的实现中,所述根据所述第一指令的进位标志结果从所述第一和值与所述第二和值中确定所述第二指令的和值,包括
当所述第一预设进位标志值与所述第一指令的进位标志结果相同,则将所述第一和值作为所述第二指令的和值;当所述第二预设进位标志值与所述第一指令的进位标志结果相同,则将所述第二和值作为所述第二指令的和值。
第五方面,本申请实施例提供了一种处理器,所述处理器包括第一方面以及第一方面的各种可能实现中的任意指令处理装置或者包括第三方面以及第三方面的各种可能实现中的任意指令处理装置,并且
用于执行第二方面以及第二方面的各种可能实现中的任意指令处理方法或者用于执行第四方面以及第四方面的各种可能实现中的任意指令处理方法。
第六方面,本申请实施例提供了一种电子设备,所述电子设备包括第五方面所述的处理器。
附图说明
图1根据本申请的一些实施例,示出了一种电子设备100中的处理器执行两条具有进位标志依赖关系的两条指令的示意图;
图2A根据本申请的一些实施例,示出了一种指令处理装置200a的示意图;
图2B根据本申请的一些实施例,示出了一种与指令处理装置200a处理具有进位标志依赖关系的两条指令对应的时序示意图;
图3A根据本申请的一些实施例,示出了一种指令处理装置200b的示意图;
图3B根据本申请的一些实施例,示出了一种与指令处理装置200b处理具有进位标志依赖关系的两条指令对应的时序示意图;
图3C根据本申请的一些实施例,示出了与指令处理装置200b处理具有依赖关系的两条指令过程相对应的一种指令处理方法;
图4A根据本申请的一些实施例,示出了一种指令处理装置200c的示意图;
图4B根据本申请的一些实施例,示出了一种与指令处理装置200c处理具有进位标志依赖关系的两条指令对应的时序示意图;
图4C根据本申请的一些实施例,示出了与指令处理装置200c处理具有依赖关系的两条指令过程相对应的一种指令处理方法;
图5根据本申请的一些实施例,示出了一种电子设备100的结构示意图。
具体实施方式
本申请的说明性实施例包括但不限于一种指令处理方法、装置、处理器和电子设备。
需要说明的是,本申请的技术方案适用于具有进位标志依赖关系的指令,即第二条指令的和值是基于第一条指令得到的进位标志CF结果)确定的,如具有进位标志依赖关系的加法指令、减法指令等。为了方便描述,下文以加法指令为例进行说明。
为了更加清楚的说明本申请实施例的方案,下面对本申请实施例中涉及到的一些术语进行解释。
ADC(Addition Carry)指令:带进位的加法指令。
可以理解的,对于不同的微架构(Microarchitecture)体系,指令格式是不同的。在本申请的一些实施例中,ADC指令指示的后两个寄存器,分别与第一源操作数和第二源操作数对应;另外,将第一源操作数和第二源操作数以及进位标志CF值(隐性的)相加得到和值(SUM)和进位标志CF结果,其中和值(SUM)被放到加法指令指示的目的操作数对应的寄存器(第一个寄存器)中。
为了方便阐述,将第一源操作数简称为操作数1,将第二源操作数简称为操作数2,其中,操作数2是可选择移位的,即该指令可规定操作数2移位或者不移位,当操作数2在移位的情况下,先对操作数2移位,将移位后的结果参与到加法运算,当操作数2在不移位的情况下,将操作数2直接参与到加法运算。
首先介绍,在ADC指令使操作数2不移位的情况下,将操作数2直接参与到加法运算。
例如,ADC r4,r6,r7
上述指令表明,将寄存器r6中操作数1以及寄存器r7中的操作数2以及标志寄存器中进位标志CF值相加,得到和值以及进位标志CF结果,并且将和值放入目的操作数对应的寄存器r4中。
再者介绍,在ADC指令使操作数2移位的情况,将移位后的数值参与加法运算。
例如,ADC r4,r6,r7,LSL#0x5
上述指令表示,将寄存器r7中的操作数2左移5位(其中,LSL表示左移,#0x5表示移位位数为5位),然后将移位的结果与寄存器r6中的操作数1以及标志寄存器中进位标志CF值相加,得到和值以及进位标志CF结果,将得到的和值作为输出结果放入到目的操作数对应的寄存器r4中。
ADCS指令:也是带进位的加法指令,与ADC的指令的区别在于,该指令能够使得到的进位标志CF结果输出,即将进位标志CF结果送入到标志寄存器CF位中,使得标志寄存器CF位中的进位标志CF值被更新。
例如,ADCS r3,r2,r5,LSL#0x5
上述指令表明,将寄存器r5中的操作数2左移5位(其中,LSL表示左移,#0x5表示移位位数为5位)得到操作数2’,将操作数2’、寄存器r2中的操作数1以及标志寄存器中进位标志CF值相加,得到和值以及进位标志CF结果,并且将得到的和值放入目的操作数对应的寄存器r3中,以及将进位标志CF结果放入标志寄存器的进位标志CF位中,可以理解的,进位标志CF值为0或1。当和值产生进位时,进位标志CF的结果为1;当和值未产生进位时,进位标志CF的结果为0。
下面结合附图详细说明本申请实施例的技术方案。
可以理解的,如图1示出了,电子设备100中的处理器执行从存储器或者软件程序接收的众多ALU指令中的两条加法指令,第一条指令为ADCS指令,第二条指令为ADC指令,其中,第一条ADCS指令结果会使得的标志寄存器中的进位标志CF位上的值被更新,而执行第二条ADC指令时需要使用到前一条ADCS指令输出的进位标志CF结果进行运算,作为第二条指令参与加法运算的进位标志CF值,即这两条指令之间存在进位标志依赖。
在一些实施例中,处理器使用流水线(pipeline)方式来处理前述所说的两条具有标志进位依赖关系的加法指令时,若第一条指令较复杂,需要对操作数2进行额外的操作后,才能参与到加法运算,使得获取进位标志CF结果的时间较长。而由于处理器处理的第二条ADC指令需要得到第一条指令产生的进位标志CF结果才可以进行后续操作,此时处理器在对第二条指令进行解码时,就需要等待第一条指令产生进位标志CF结果,则需要所等待一个时钟周期才能进入解码的下一个阶段,使得处理器在处理第二条ADC指令的下一条指令时,需要多等待一个时钟周期才能对第二条ADC指令的下一条指令进行解码,当处理器在处理多条指令时,需要花费大量的时间,进而降低了处理效率。例如,对于图1中示出的具有进位依赖关系的两条加法指令ADCS指令以及ADC指令,处理第一条ADCS指令时,需要对寄存器r5中的操作数2进行额外的移位操作得到操作数2’,再将操作后的结果参与到加法运算中,才能获得对应于第一条ADCS指令的进位标志CF结果。当处理器处理第二条ADC指令时,需要将第一条ADCS指令的进位标志CF的结果参与到加法运算,所以处理器在处理第二条ADC指令的开始阶段需要获取第一条ADCS指令的进位标志CF结果,由于第一条ADCS结果产生较慢,所以需要额外的等待时间才能进入解码的下一个阶段,使得处理器在处理第二条ADC指令的下一条指令时,需要多等待一个时钟周期才能对第二条ADC指令的下一条指令进行解码,当处理器在处理多条指令时,需要花费大量的时间,进而降低了处理效率。
下面以处理图1中示出的两条加法指令为例,结合图2A示出的指令处理装置200a和图2B示出的时序图具体阐述在利用流水线的方式处理具有进位标志依赖关系的两条指令时的机制。
如图2A所示,由于第一条ADCS指令中的操作数2需要进行移位操作,所以,图2根据在本申请的一些实施例中的,示出了一种具有三级流水线结构的指令处理装置200a。
具体地,流水线1包括解码单元201,用于获取到的加法指令20进行解码,在源操作数(操作数1,以及操作数2)的相应的寄存器中分别获取源操作数,若该加法指令为操作数2需要移位操作,并且处理后得到的进位标志CF结果使标志寄存器中的进位标志CF位上值更新的加法指令(以下简称第一指令)(例如,图1中的第一条ADCS指令),当第一指令需要进位标志CF值参与运算时,则需要从标志寄存器中获取进位标志CF值,生成与第一指令对应的移位控制信号以及相加控制信号(将操作数1、操作数2移位后的值以及进位标志CF值相加),并且将获得的操作数1、操作数2、移位控制信号和相加控制信号以及进位标志CF值送给第一存储单元01。另外,若处理的加法指令20为需要使用第一指令的进位标志CF结果作为当前指令的进位标志CF值参与运算,并且该指令无需移位操作的指令(以下简称第二指令)(例如,图1中在ADCS指令后的ADC指令),此时,在处理第二指令时,可以直接获取第一指令的进位标志CF结果作为当前指令的所需的进位标志CF值,而无需从标志寄存器中读取。解码单元201则根据第二指令获取对应于第二指令的源操作数(操作数1以及操作数2)、第一指令的进位标志CF结果、前述三者相加的相加控制信号,并且送给第一寄存单元01。
第一寄存单元01,用于存储流水线1中需要输入到流水线2中的对应于第一指令的相加控制信号、移位控制信号、源操作数(操作数1以及操作数2)以及进位标志CF值,并且将移位控制信号、移位位数、操作数2送给移位单元202,将操作数1、相加控制信号送给第二寄存单元02;并且用于存储流水线1中需要输入到流水线2中的对应于第二指令的相加控制信号、源操作数(操作数1以及操作数2)以及进位标志CF值,并将前述有关第二指令的信息送给第一算术逻辑单元203。在一些实施例中,第一寄存单元01可以为寄存器组。
流水线2包括多个执行单元,至少包括移位单元202以及第一算术逻辑单元(Arithmetic Logic Unit,ALU)203。其中,移位单元202用于根据控制信号进行移位操作。根据对应于第一指令移位控制信号、以及移位位数对第一指令的操作数2进行移位操作,得到操作数2’,并且将操作数2’送给第二寄存单元02;第一算术逻辑单元203用于根据控制信号进行相加操作。根据第二指令的相加控制信号对第一寄存单元01中获取的第二指令的操作数1、操作数2以及进位标志CF值进行加法运算,将得到的和值结果输出。
第二寄存单元02用于存储流水线2中需要输入到流水线3中的第一指令的操作数1、操作数2’、进位标志CF值以及相加控制信号。在一些实施例中,第二寄存单元02可以为寄存器组。
流水线3包括第二算术逻辑单元204,用于根据控制信号进行相加操作。根据第一指令的相加控制信号对操作数1、操作数2’以及进位标志CF值进行加法运算,得到和值以及进位标志CF结果并且将两者输出。在一些实施例中,第二算术逻辑单元204将进位标志CF结果送给解码单元201。
图2B示出了与指令处理装置200a处理图1示出的具有进位标志依赖关系的第一条ADCS指令以及第二条ADC指令的相对应的时序图。下面按照图2B示出的时钟周期顺序阐述指令处理装置200a对第一条ADCS指令以及第二条ADC指令的处理过程。
需要解释的,上述第一算术逻辑单元203与第二算术逻辑单元204具有相同的算术逻辑运算功能,并且也可以具备其他不同的功能,可以为相同的算术逻辑单元,也可以为不同的算术逻辑单元。
在图2B中第一时钟周期内,仅有A1操作,该操作对应于第一条ADCS指令,图2A中的流水线1中的解码单元201对获取到的第一条ADCS进行解码,从寄存器r2中获取操作数1,从寄存器r5中获取操作数2,从标志寄存器中获取进位标志CF值,以及确定移位位数为5位,并且生成了将操作数2左移的移位控制信号以及将操作数2左移5位后的值与操作数1以及进位标志CF值相加的相加控制信号,将操作数1、操作数2、进位标志CF的值、移位位数、移位控制信号和相加控制信号送入第一寄存单元01。
在图2B中第二时钟周期内,存在B1操作以及A2操作。其中,B1操作对应于第一条ADCS指令,图2A中的流水线2中的移位单元202从第一寄存单元01中获取操作数2、移位位数、移位控制信号,并且根据移位控制信号(该移位控制信号为左移控制信号)将操作数2左移5位,得到操作数2’,并且将操作数2’送给第二寄存单元02,与此同时第一寄存单元01会把操作数1、进位标志CF值、以及相加控制信号送给第二寄存单元02。其中,A2操作对应于第二条ADC指令,图2A中的流水线1中的解码单元201对获取到的第二条ADC指令进行解码,从寄存器r6中获取操作数1,从寄存器r7中获取操作数2,并且生成将操作数1、操作数2以及进位标志CF值(即第一指令的进位标志CF结果)相加的相加控制信号,此时由于第二条ADC指令需要第一条ADCS指令的进位标志CF结果,单在该时钟周期内未获得,所以A2会一直持续进行到下一个时钟周期。
在图2B中第三时钟周期内,存在C1操作以及A2操作。其中,C1操作对应于第一条ADCS指令,图2A中的流水线3中的第二算术逻辑单元204从第二寄存单元02中获取对应于第一条ADCS指令的操作数1、操作数2’、进位标志CF值和相加控制信号,根据相加控制信号将操作数1、操作数2’以及进位标志CF值相加,得到和值以及进位标志CF结果,将进位标志CF结果送给解码单元201以及标志寄存器中进位标志CF位,并且将和值送给目标操作数对应的寄存器r3中。其中,A2操作对应于第二条ADC指令,此时该时钟周期中的A2操作为上一时钟周期的延续,流水线1中的解码单元201在该时钟周期的后期获取到流水线3中的第二算术逻辑单元204生成的第一条ADCS指令的进位标志CF结果,将对应于第一条ADCS指令的进位标志CF结果作为第二条ADC指令的进位标志CF值,并且将操作数1、操作数2、进位标志CF值以及三者相加的相加控制信号送给第一寄存单元01。
在图2B中第四时钟周期内,仅存在B2操作。其中,B2操作对应于第二条ADC指令,图2A中的流水线3中的第一算术逻辑单元203从第一寄存单元01中获取操作数1、操作数2、进位标志CF值和相加控制信号,根据相加控制信号将操作数1、操作数2以及进位标志CF值相加,得到和值以及进位标志CF结果,并将和值送给目标操作数对应的寄存器r4中。
可以理解的,处理器在利用图2A所示的流水线方式执行如图1所示的具有进位标志依赖关系的两个指令,由于在先执行的第一条ADCS指令中的操作数2在参加加法运算前需要额外的操作,所以在开始执行第二条ADC指令的第一个时钟周期内时,还无法获得对应于第一条ADCS指令的进位标志CF结果,需要等待第一条ADCS指令的进位标志CF结果产生,在下一个时钟周期内才可以获得第一条ADCS指令的进位标志CF结果。所以,流水线1中的解码单元201在对第二条ADC指令处理时,需要多等待一个时钟周期,使得第二条ADC指令的下一条指令需要多等待一个时钟周期才能进入到解码阶段,当处理器处理多条指令时,需要花费较多时间,降低了处理器的处理效率。
基于上述问题,本申请提出了一种指令处理方法,对具有进位标志依赖关系的第一指令和第二指令进行处理时,在第一时钟周期对应于第一指令进行解码,然后进入第二时钟周期;在第二时钟周期内,此时对应于第一指令进行移位,同时对应于第二指令进行解码,由于第二指令的和值是基于第一指令的进位标志结果确定的,在对第二指令进行解码时,不等待第一指令的进位标志结果的产生,结束对第二指令的解码,使得处理第二指令的过程由第二周期进入第三周期。因而,在处理具有进位标志依赖关系的第一指令和第二指令时,由于第二指令提前进入第三周期,使得第二指令的下一指令可以不需要多等待一个时钟周期提前进入解码阶段、提前完成处理过程,进而当处理器处理多条指令时,减少了处理时间,提高了处理效率。
在一些实施例中,由于流水线3中的第二算术逻辑单元204与流水线2中的第一算术逻辑单元203具有相同的加法运算功能,所以可以利用第二算术逻辑单元204实现对应于第二指令的加法运算。流水线1中的解码单元201对第二指令进行解码,在未得到第一指令的进位标志CF结果的情况下不会多等待一个时钟周期,从而使得第二指令的执行过程进入流水线2。对应于流水线2中的第一算术逻辑单元203执行的时钟周期的后期,第二寄存单元02会接收流水线3中的第二算术逻辑单元204产生的第一指令的进位标志CF结果,在当前时钟周期获得第一指令的进位标志CF结果后,对应于第二指令的加法运算只得在下一时钟周期才能进行。在下一个时钟周期流水线3中的第二算术逻辑单元204可以基于第一指令的进位标志CF结果确定第二指令的和值。
可以理解的,此时,虽然执行第二指令仍然花费3个时钟周期,但是,此时对于第二指令,流水线1中的解码单元201仅需一个时钟周期就可以结束该流水线的操作,不需要多等待一个时钟周期,使对应于当前指令的执行过程进入流水线2,此时流水线1中的解码单元201可以开始执行第二指令的下一条指令的解码操作,提高执行效率,在执行多条指令的情况下,节省了执行时间。
图3A示出了在本申请的一些实施例中,一种利用流水线3中的第二算术逻辑单元204得到对应于第二条ADC指令结果的指令处理装置200b。从图3A中可以看出,该指令处理装置200b未改变指令处理装置200a的单元结构,仅仅改变各单元间的连接关系。
如图3A所示,流水线1中的解码单元201对第一指令的操作与图2A所示的指令处理装置200a中的操作相同。对于第二指令的操作,解码单元201与装置200a中的操作存在区别,其区别在于,解码单元201对第二指令进行解码后,生成将对应于第二指令的操作数1、操作数2相加的第一相加控制信号,以及将对应于第二指令的操作数1、操作数2、进位标志CF值(此时该进位标志CF值未获得)相加的第二相加控制信号,并且解码单元201不等待第一指令的进位标志结果输出,将对应于第二指令的操作数1、操作数2、第一相加控制信号和第二相加控制信号送给第一寄存单元01。
第一寄存单元01对第一指令的操作与图2A所示的指令处理装置200a中的操作相同。对于第二指令的操作存在区别,第一寄存单元01用于存储第二指令的第一相加控制信号和第二相加控制信号、源操作数(操作数1以及操作数2)以及进位标志CF值,并且将操作数1、操作数2、第一相加控制信号送给第一算术逻辑单元203,将第一相加控制信号送给第二寄存单元02。
流水线2中的移位单元202对第一指令的操作与图2A所示的指令处理装置200a中的操作相同。流水线2中的第一算术逻辑单元203对于第二指令的操作存在区别,用于根据第一相加控制信号将第二指令的操作数1、操作数2相加,由于需要将上一条指令的进位标志CF结果作为该指令的进位标志CF值时,此时在该操作中不考虑相加后的结果,将操作数1以及操作数2送给第二寄存单元02。
第二寄存单元02用于存储流水线2中需要输入到流水线3中的第一指令的操作数1、操作数2’、进位标志CF值以及相加控制信号(对第一指令的操作与图2A所示的指令处理装置200a中的操作相同);对于第二指令的操作存在区别,第二寄存单元02用于存储需要输入到流水线3中的第二指令的操作数1、操作数2、第二相加控制信号,以及第一指令的进位标志CF结果(流水线3中第二算术逻辑单元204送入的),其中,第一指令的进位标志CF结果作为第二指令的进位标志CF值参与运算,并将前述有关第二指令的数据送给流水线3中第二算术逻辑单元204。
流水线3中第二算术逻辑单元204用于根据控制信号进行相加操作。对第一指令的操作与上述图2A示出的指令处理装置200a中的操作的区别在于,将根据第一指令的相加控制信号对操作数1、操作数2’以及进位标志CF值进行加法运算得到的进位标志CF结果送给第二寄存单元02,并且有进行对应于第二指令的操作,第二算术逻辑单元204根据第二相加控制信号对第二指令的操作数1、操作数2以及得到的第一指令的进位标志CF结果(第二指令的进位标志CF值)相加得到和值。
下面按照图3B示出的与指令处理装置200b执行第一条ADCS指令以及第二条ADC指令对应的时序图,结合附图3A具体阐述指令处理装置200b执行图1中示出的具有进位标志依赖关系的两条指令,ADCS以及ADC指令的具体过程。
在图3B中第一时钟周期内,仅有A1操作,该操作对应于第一条ADCS指令,图3A中的流水线1中的解码单元201对获取的第一条ADCS指令进行解码,从寄存器r2中获取操作数1,从寄存器r5中获取操作数2,从标志寄存器中获取进位标志CF值,以及确定移位位数为5位,并且生成了将操作数2移位的移位控制信号以及将操作数2左移5位后的值、操作数1以及进位标志CF的值相加的相加控制信号,将操作数1、操作数2、进位标志CF值、移位位数、移位控制信号和相加控制信号送入第一寄存单元01。
在图3B中第二时钟周期内,存在B1操作以及A2操作。其中,B1操作对应于第一条ADCS指令,图3A中的流水线2中的移位单元202从第一寄存单元01中获取操作数2、移位位数、移位控制信号,根据移位控制信号将操作数2左移5位,得到操作数2’,并且将操作数2’送给第二寄存单元02,另外,第一寄存单元01会将操作数1、进位标志CF值和相加控制信号送给第二寄存单元02。其中,A2操作对应于第二条ADC指令,图3A中的流水线1中的解码单元201对获取的第二条ADC指令进行解码,并且从寄存器r6中获取操作数1,从寄存器r7中获取操作数2,并且生成了将操作数1、操作数2相加的第一相加控制信号以及将操作数1、操作数2、进位标志CF值相加的第二相加控制信号,将操作数1、操作数2、第一以及第二相加控制信号送入第一寄存单元01。
在图3B中第三时钟周期内,存在C1操作以及B2操作。其中,C1操作对应于第一条ADCS指令,图3A中的流水线3中的第二算术逻辑单元204从第二寄存单元02中获取操作数1、操作数2’、进位标志CF的值和三者相加的相加控制信号,根据相加控制信号将操作数1、操作数2’以及进位标志CF值相加,得到和值以及进位标志CF结果。其中,B2操作对应于第二条ADC指令,图3A中的流水线2中的第一算术逻辑单元203从第一寄存单元01中获取操作数1、操作数2、和第一相加控制信号,根据第一相加控制信号将操作数1、操作数2相加,此时得到的和值不考虑,将操作数1、操作数2送给第二寄存单元02。并且,在该时钟周期的后期内,第二寄存单元02会接收第一寄存单元01送的第二相加控制信号,以及流水线3中的第二算术逻辑单元204生成的第一条ADCS指令的进位标志CF结果,该第一条ADCS指令的进位标志CF结果将作为第二指令的进位标志CF值参与运算。
在图3B中第四时钟周期内,仅存在C2操作。其中,C2操作对应于第二条ADC指令,图3A中的流水线3中的第二算术逻辑单元204从第二寄存单元02中获取操作数1、操作数2、第一条ADCS指令的进位标志CF结果和第二相加控制信号,此时将第一条ADCS指令的进位标志CF结果作为第二指令的进位标志CF值参与运算,所以,第二算术逻辑单元204根据第二相加控制信号将操作数1、操作数2以及第一条ADCS指令的进位标志CF结果相加,从而得到和值,将得到的和值送到目的操作数对应的寄存器r4中。
可以理解的,此时对应于第二条ADC指令,流水线1中的解码单元201不等待流水线3中的第二算术逻辑单元204送的第一条ADCS指令的进位标志CF结果,就使执行过程进行到流水线2,图3B中可以看出,通过重复利用已经存在的具有加法功能的执行单元,虽然指令处理装置200b执行第二条ADC指令需要花费3个时钟周期,但是对应于第二条ADC指令的执行过程进入流水线2时,流水线1中的解码单元201就可以开始对第二指令的下一条指令进行解码,在执行多条指令的情况下,提高了执行效率,节省了执行时间。
图3C根据本申请的一些实施例中,与指令处理装置200b的处理具有依赖关系的两条指令过程相对应的一种指令处理方法,具体过程如下。其中,以电子设备100的处理器为执行主体。
S301,在第一时钟周期对获取到的第一指令进行解码,得到对应于第一指令的操作数1、操作数2、进位标志CF值、移位位数、移位控制信号以及相加控制信号。
其中,相加控制信号为将操作数1、操作数2移位操作后的值、进位标志CF值三者相加的控制信号
例如,第一指令为图1中示出的第一条ADCS指令。
S302,在紧随着第一时钟周期后的第二时钟周期,根据对应于第一指令的移位控制信号以及移位位数对第一指令的操作数2进行移位操作,得到操作数2’;同时,对获取到的第二指令进行解码得到第二指令的操作数1、操作数2、第一相加控制信号和第二相加控制信号。
其中第一相加控制信号为将第二指令的操作数1、操作数2相加的控制信号,第二相加控制信号为将第二指令的操作数1、操作数2以及进位标志CF值相加的控制信号,其中,进位标志CF值为第一指令的进位标志CF结果,需要解释的,在该时钟周期内处理器未获得第一指令的进位标志CF结果。
例如,第二指令为图1中示出的第二条ADC指令。
S303,在紧随着第二时钟周期后的第三时钟周期,根据对应于第一指令的相加控制信号对第一指令的操作数1、操作数2'以及进位标志CF值相加得到对应于第一指令的和值以及进位标志CF结果;同时,将根据第一相加控制信号对第二指令的操作数1、操作数2相加,并且将第一指令的进位标志CF结果作为第二指令的进位标志CF值。
S304,在紧随着第三时钟周期后的第四时钟周期,根据对应于第二指令的第二相加控制信号对第二指令的操作数1、操作数2以及第二指令的进位标志CF值相加,得到第二指令的和值。
可以理解,上述步骤S301至步骤S304的执行顺序只是一种示例,在另一些实施例中,也可以采用其他执行顺序,还可以拆分或合并部分步骤,在此不做限定。
在另一些实施例中,流水线1中的解码单元201在对第二指令进行解码时,在未得到第一指令输出的进位标志CF结果时不等待,使对应于第二指令的执行过程进入流水线2。第二指令的执行过程进入流水线2后,流水线2中的第一算术逻辑单元203以及其他具有加法运算功能的执行单元分别根据对应的第一预设进位标志CF值和第二预设进位标志CF值得到对应的第一和值和第二和值。在该时钟周期的后期获取到流水线3中的第二算术逻辑单元204产生的第一指令的进位标志CF结果后,根据获取的第一指令的进位标志CF结果从第一和值与第二和值中选出对应于第二指令的和值。
可以理解的,由于解码单元201对第二指令进行解码时,在未得到第一指令输出的进位标志CF结果时不停顿,结束解码,进入流水线2,使得解码单元201可以对第二指令的下一条指令不需要再多等待一个时钟周期就可以进行解码,当处理多条指令时,减少了处理时间;另外,通过利用闲置的具有第一算术逻辑单元功能的执行单元,例如,地址生成单元,通过分别在执行单元与第一算术逻辑单元预设进位标志值得到第二指令在进位标志值不同的情况下的所有结果,使得在该阶段的后期获得第一指令的进位标志结果后,可以直接通过选择单元快速获取第二指令的和值。此时,处理器仅需花费两个时钟周期就可以得到第二指令的结果,进一步加快了处理效率,节省了执行时间。可以理解的,在一些实现方式中,上述具有第一算术逻辑单元功能的执行单元也可以由算术逻辑单元实现。
图4A示出了另一种可以对第二指令(例如图1中示出的第二条ADC指令)进行解码时不等待第一指令(例如,图1中示出的第一条ADCS指令)的进位标志CF结果的指令处理装置200c,该装置复用流水线2中的其他具有加法逻辑运算功能的执行单元。
如图4A所示,指令处理装置200c与指令处理装置200a的功能单元的区别在于,流水线2中包括了地址生成单元205,以及选择单元206,其中,地址生成单元(AddressGeneration Units,AGU)205是闲置在流水线2中的具有第一算术逻辑单元功能的执行单元,该单元可包括第一算术逻辑单元203的所有算术逻辑运算功能。选择单元206,用于从接收的两个和值结果中根据接收的第一指令的进位标志结果选择出第二指令的和值结果并输出。
具体地,流水线1中的解码单元201对第一指令的操作与图2A所示的指令处理装置200a中的操作相同。对于第二指令的操作,解码单元201与装置200a中的操作存在区别,其区别在于,解码单元201对第二指令进行解码时,生成将对应于第二指令的操作数1、操作数2、进位标志CF值(此时该进位标志CF值未知)相加的相加控制信号,并且解码单元201不等待第一指令的进位标志CF结果输出,将对应于第二指令的操作数1、操作数2、相加控制信号送给第一寄存单元01。
第一寄存单元01对第一指令的操作与图2A所示的指令处理装置200a中的操作相同。对于第二指令的操作存在区别,第一寄存单元01用于存储第二指令的相加控制信号、操作数1以及操作数2,并且将存储的第二指令的相加控制信号、操作数1以及操作数2都分别送给第一算术逻辑单元203,以及地址生成单元205。
流水线2中的移位单元202对第一指令的操作与图2A所示的指令处理装置200a中的操作相同。流水线2中的第一算术逻辑单元203对于第二指令的操作存在区别,用于根据相加控制信号将第二指令的操作数1、操作数2以及第一预设进位标志CF值相加得到第一和值和进位标志CF结果,其中第一预设进位标志CF值可以为0或者1,并且将第一和值送给选择单元206。流水线2中的地址生成单元205需要对第二指令操作,用于根据相加控制信号将第二指令的操作数1、操作数2以及第二预设进位标志CF值相加得到第二和值和进位标志CF结果,其中第二预设进位标志CF值要与可以第二预设进位标志CF值不同,可以为0或者1,并且将第二和值送给选择单元206。
第二寄存单元02对第一指令的操作与图2A所示的指令处理装置200a中的操作相同,并且不存在对于第二指令的操作。
流水线3中第二算术逻辑单元204用于根据控制信号进行相加操作。对第一指令的操作与上述图2A示出的指令处理装置200a中的操作的区别在于,将根据第一指令的相加控制信号对操作数1、操作数2’以及进位标志CF值进行加法运算得到的进位标志CF结果送给选择单元206。
选择单元206用于,根据流水线3中的第二算术逻辑单元204生成的第一指令(例如第一条ADCS指令)的进位标志CF结果,从第一算术逻辑单元203送的第一和值和第一和值中选出与第一指令的进位标志CF结果值对应的和值,将选出的结果送到第二指令对应的目的操作数对应的寄存器中。在一些实现方式中,选择单元206可以为多路选择器。
图4B示出了,与指令处理装置200C执行第一条ADCS指令以及第二条ADC指令对应的时序图。
下面按照图4B示出的时钟周期顺序阐述对第一条ADCS指令以及第二条ADC指令的处理操作过程。其中,以第一算术逻辑单元203在进行加法运算时,第一预设进位标志CF值为0,地址生成单元205在进行加法运算时,第二预设进位标志CF值为1为例进行阐述。
在图4B中的第一时钟周期内,仅有A1操作,该操作对应于第一条ADCS指令,图4A中的流水线1中的解码单元201对获取的第一条ADCS进行解码,从寄存器r2中获取操作数1、从寄存器r5中获取操作数2、从标志寄存器中获取进位标志CF值,以及确定移位位数为5位,并且生成操作数2左移的移位控制信号以及将操作数2左移5位后的值与操作数1以及进位标志CF的值相加的相加控制信号,将操作数1、操作数2、进位标志CF值、移位位数、移位控制信号和相加控制信号送入第一寄存单元01。
在图4B中的第二时钟周期内,存在B1操作以及A2操作。其中,B1操作对应于第一条ADCS指令,图4A中的流水线2中的移位单元202根据从第一寄存单元01中获取的操作数2和移位控制信号将操作数2左移5位,得到操作数2’,并且将操作数2’送给第二寄存单元02,同时,第一寄存单元01将操作数1、进位标志CF值送给第二寄存单元02。其中,A2操作对应于第二条ADC指令,图4A中的流水线1中的解码单元201对获取的第二条ADC指令进行解码,并且从寄存器r6中获取操作数1,从寄存器r7中获取操作数2,并且生成了将操作数1、操作数2以及进位标志CF值(此时进位标志CF值未知)相加的相加控制信号,将操作数1、操作数2、相加控制信号送入第一寄存单元01。
在图4B中第三时钟周期内,存在C1操作以及B2操作。其中,C1操作对应于第一条ADCS指令,图4A中的流水线3中的第二算术逻辑单元204从第二寄存单元02中获取操作数1、操作数2’、进位标志CF值和相加控制信号,根据相加控制信号将操作数1、操作数2’以及进位标志CF值相加,得到和值以及进位标志CF结果。其中,B2操作对应于第二条ADC指令,图4A中的流水线2中的第一算术逻辑单元203从第一寄存单元01中获取操作数1、操作数2和相加控制信号,根据相加控制信号将操作数1、操作数2以及第一预设进位标志CF值0(将第一预设进位标志CF值0作为第二指令的进位标志CF值)相加得到第一和值,并将第一和值送给选择单元206;流水线2中的地址生成单元205从第一寄存单元01中获取操作数1、操作数2和相加控制信号,根据相加控制信号将操作数1、操作数2以及第二预设进位标志CF值1(将第二预设进位标志CF值1作为第二指令的进位标志CF值)相加得到第二和值,并将第二和值送给选择单元206。此时,选择单元206在该时钟周期的后期获取到流水线3中的第二算术逻辑单元204产生的第一条ADCS指令的进位标志CF结果,并且根据获取到的第一条ADCS指令的进位标志CF结果值0或者1从第一和值以及第二和值中选择出两个和值中预设进位标志CF值与第一条ADCS指令的进位标志CF结果相同的和值作为第二指令的和值,将得到的和值送到目的操作数对应的寄存器r4中。
可以理解的,对应于第二条ADC指令,该方法可以使流水线1中的解码单元201不等待流水线3中的第二算术逻辑单元204得到第一条ADCS指令的进位标志CF结果,就使执行进程进入到流水线2,使得解码单元201可以对第二条ADC指令的下一条指令进行解码,从而使得第二条ADC指令可以早一些时间完成处理,当多条指令需要被处理时,节省了时间,提高了效率;另外,给闲置的具有第一算术逻辑单元203的逻辑运算功能的执行单元送入与第一算术逻辑单元203相同的数据,并且通过对闲置的执行单元以及第一算术逻辑单元203分别预先设置不同的进位标志CF值,此时这两个执行单元就可以分别得到进位标志CF值在所有情况下的对应于第二条ADC指令所有可能的和值结果,当对应于第一条ADCS指令的进位标志CF结果值输出后,即可以根据第一条ADCS指令的进位标志CF结果在当前时钟周期下直接选择出第二条ADC指令的和值结果,从而将原先花费的3个时钟周期减少到花费2个时钟周期,进一步加快了处理效率,节省了时间。
可以理解的,在另一些实施例中,地址生成单元205还可以为第一算术逻辑单元203,或者为其他具有第一算术逻辑单元功能的单元等,都在本申请的保护范围内。
图4C根据本申请的一些实施例中,与指令处理装置200c处理具有依赖关系的两条指令过程相对应的一种指令处理方法,具体过程如下。其中,以电子设备100的处理器为执行主体。
S401,在第一时钟周期对获取的第一指令进行解码,得到对应于第一指令的操作数1、操作数2、进位标志CF值、移位位数、移位控制信号以及相加控制信号。
例如,第一指令为图1中示出的第一条ADCS指令。
S402,在紧随着第一时钟周期后的第二时钟周期,根据对应于第一指令的移位控制信号和移位位数对第一指令的操作数2进行移位操作,得到操作数2’;同时,对获取的第二指令进行解码得到对应于第二指令的操作数1、操作数2以及相加控制信号。
例如,第二指令为图1中示出的第二条ADC指令。其中,相加控制信号为将将对应于第二指令的操作数1、操作数2、进位标志CF值(此时该进位标志CF值未知)相加的相加控制信号。
S403,在紧随着第二时钟周期后的第三时钟周期,根据对应于第一指令的相加控制信号对第一指令的操作数1、操作数2'以及进位标志CF值相加得到第一指令的和值以及进位标志CF结果;同时,根据对应于第二指令的相加控制信号将第二指令的操作数1、操作数2,分别与第一预设进位标志CF值和第二预设进位标志CF值相加,得到对应的第一和值和第二和值,并且根据获取的第一指令的进位标志CF结果从第一和值与第二和值中选出对应于第二指令的和值。
可以理解的,其中,第一预设进位标志CF值与第二预设进位标志CF值可以分别为0和1,以及可以分别为1和0。
当第一指令的进位标志CF结果为1,则将第一和值和第二和值对应的预设进位标志CF值为1的和值作为第二指令的和值;当第一指令的进位标志CF结果为0,则将第一和值和第二和值中预设进位标志CF值为0的和值作为第二指令的和值。
可以理解,上述步骤S401至步骤S403的执行顺序只是一种示例,在另一些实施例中,也可以采用其他执行顺序,还可以拆分或合并部分步骤,在此不做限定。
需要解释的,上述两个方案应用于第二指令的和值是基于第一指令的进位标志CF结果确定的,并且第二指令的操作数2不进行额外的操作,就参与到加法运算,而第一指令需要对操作数2进行额外的操作后,将得到额外操作后的操作数2’参与到加法运算的情况。
可以理解的,在本申请的另一些实施例中,第一指令以及第二指令可以分别为具体运算类型不同的ALU指令,例如,第一指令为减法指令,第二指令为加法指令等。只要第一指令(例如,ADDS、ADCS、SUBS等ALU指令)产生的进位标志CF结果使标志寄存器中的进位标志CF位上的值更新,使得第二指令(例如,SBB、ADC、ADCS等ALU指令)需要根据第一指令的进位标志CF结果得到输出的和值结果,并且第一指令的操作数2需要额外的移位操作,第二指令的操作数2不需要额外的移位操作等,只要第一指令与第二指令之间具有依赖关系,都在本申请的保护范围内。
可以理解的,本申请提出的指令处理装置200b和指令处理装置200c可以运用在电子设备的处理器中。
可以理解的,上述第一周期、第二周期、第三周期、第四周期仅仅用来描述周期的先后顺序,不代表处理器处理整个指令时对应的第一个时钟周期、第二个时钟周期、第三个时钟周期、第四个时钟周期。
为便于理解本申请各实施的技术方案,下面对电子设备100的硬件结构进行介绍。
进一步,图5根据本申请的一些实施例,示出了一种电子设备100的结构示意图。如图5所示电子设备100包括一个或多个处理器101、系统内存102、非易失性存储器(Non-Volatile Memory,NVM)103、通信接口104、输入/输出(I/O)设备105、以及用于耦接处理器101、系统内存102、非易失性存储器103、通信接口104和输入/输出(I/O)设备105的系统控制逻辑106。
其中:处理器101可以包括一个或多个处理单元,例如,可以包括中央处理器CPU(Central Processing Unit)、图像处理器GPU(Graphics Processing Unit)、数字信号处理器DSP(Digital Signal Processor)、神经网络处理器(Neural Network ProcessingUnit,NPU)、微处理器MCU(Micro-programmed Control Unit)、AI(ArtificialIntelligence,人工智能)处理器或、编程逻辑器件FPGA(Field Programmable GateArray)的处理模块或处理电路或其他包括指令处理装置,并且根据接收的具有进位标志依赖关系的ALU指令获取算术逻辑运算结果的处理器,具体处理器类型在此不做具体要求。
在一些实施例中,处理器101可以包括指令处理装置200b以及指令处理装置200c,以在需要得到具有进位标志依赖关系的ALU指令的算术逻辑运算结果的情况下,利用指令处理装置来处理涉及到的ALU指令,由于前述装置能够使得处理过程没有额外的停顿时间,处理效率高。
系统内存102是易失性存储器,例如随机存取存储器(Random-Access Memory,RAM),双倍数据率同步动态随机存取存储器(Double Data Rate Synchronous DynamicRandom Access Memory,DDR SDRAM)等。系统内存用于临时存储数据和/或指令,例如,在一些实施例中,系统内存102可以用于存储上述得到具有进位标志依赖关系的ALU指令结果的相关指令等。
非易失性存储器103可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,非易失性存储器103可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(Hard Disk Drive,HDD)、光盘(Compact Disc,CD)、数字通用光盘(Digital Versatile Disc,DVD)、固态硬盘(Solid-State Drive,SSD)等。在一些实施例中,非易失性存储器103也可以是可移动存储介质,例如安全数字(Secure Digital,SD)存储卡等。
特别地,系统内存102和非易失性存储器103可以分别包括:指令107的临时副本和永久副本。指令107可以包括:由处理器101中的至少一个执行使电子设备100实现本申请各实施例提供的得到具有进位标志依赖关系的ALU指令结果的相关指令。
通信接口104可以包括收发器,用于为电子设备100提供有线或无线通信接口,进而通过一个或多个网络与任意其他合适的设备进行通信。在一些实施例中,通信接口104可以集成于电子设备100的其他组件,例如通信接口104可以集成于处理器101A中。在一些实施例中,电子设备100可以通过通信接口104和其他设备通信。
输入/输出(I/O)设备105可以包括输入设备如键盘、鼠标等,输出设备如显示器等,用户可以通过输入/输出(I/O)设备105与电子设备100进行交互。
系统控制逻辑106可以包括任意合适的接口控制器,以终端100的其他模块提供任意合适的接口。例如在一些实施例中,系统控制逻辑106可以包括一个或多个存储器控制器,以提供连接到系统内存102和非易失性存储器103的接口。
在一些实施例中,处理器101中的至少一个可以与用于系统控制逻辑106的一个或多个控制器的逻辑封装在一起,以形成系统封装(System in Package,SiP)。在另一些实施例中,处理器101中的至少一个还可以与用于系统控制逻辑106的一个或多个控制器的逻辑集成在同一芯片上,以形成片上系统(System-on-Chip,SoC)。
可以理解,图5所示的电子设备100的结构只是一种示例,在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(Digital Signal Processor,DSP)、微控制器、专用集成电路(Application Specific Integrated Circuit,ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、可擦除可编程只读存储器(Erasable Programmable Read OnlyMemory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (22)
1.一种基于进位标志的指令处理装置,其特征在于,所述指令处理装置包括,解码单元、第一寄存单元、移位单元、第一算术逻辑单元、第二寄存单元、第二算术逻辑单元,并且其中,
所述解码单元,用于对获取到的第一指令和第二指令进行解码;其中
对于所述第一指令,将解码得到的所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述第一指令的移位位数、所述第一指令的进位标志值、所述第一指令的移位控制信号以及所述第一指令的相加控制信号送给所述第一寄存单元;以及,
对于所述第二指令,在不等待所述第一指令的进位标志结果的产生的情况下,将解码得到的所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二指令的第一相加控制信号以及所述第二指令的第二相加控制信号送给所述第一寄存单元;其中,所述第一指令与所述第二指令具有进位标志依赖关系,并且所述第一指令的第二源操作数需要进行移位操作,所述第二指令的第二源操作数不需要进行移位操作;
所述第一寄存单元,用于存储所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述移位位数、所述移位控制信号、所述相加控制信号,并且将所述第一指令的第二源操作数、所述移位位数以及所述移位控制信号送给所述移位单元,将所述第一指令的第一源操作数、所述第一指令的进位标志值以及所述相加控制信号送给所述第二寄存单元;以及,用于存储所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二指令的第一相加控制信号以及所述第二指令的第二相加控制信号,并且将所述第二指令的第一源操作数、所述第二指令的第二源操作数以及所述第一相加控制信号送给所述第一算术逻辑单元,将所述第二相加控制信号送给所述第二寄存单元;
所述移位单元,用于根据所述移位控制信号以及所述移位位数将所述第一指令的第二源操作数进行移位操作得到移位操作数,并且将所述移位操作数送给所述第二寄存单元;
所述第一算术逻辑单元,用于根据所述第一相加控制信号将所述第二指令的第一源操作数以及所述第二指令的第二源操作数相加,并且将所述第二指令的第一源操作数以及所述第二指令的第二源操作数送给所述第二寄存单元;
所述第二寄存单元,用于存储所述第一指令的第一源操作数、所述移位操作数以及所述相加控制信号,并且将所述第一指令的第一源操作数、所述移位操作数以及所述相加控制信号送给第二算术逻辑单元;用于存储所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二算术逻辑单元传递的所述第一指令的进位标志结果以及所述第二相加控制信号,并且将所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二相加控制信号以及所述第一指令的进位标志结果送给所述第二算术逻辑单元;
所述第二算术逻辑单元,用于根据所述相加控制信号将所述第一指令的第一源操作数、所述移位操作数、所述第一指令的进位标志值相加,得到所述第一指令的和值以及所述第一指令的进位标志结果;用于根据所述第二相加控制信号将所述第二指令的第一源操作数、所述第一指令的第二源操作数以及作为所述第二指令的进位标志值的所述第一指令的进位标志结果相加,得到所述第二指令的和值。
2.根据权利要求1所述的装置,其特征在于,所述第一指令与所述第二指令具有进位标志依赖关系,包括,所述第二指令的和值是基于所述第一指令的进位标志结果确定的。
3.根据权利要求2所述的装置,其特征在于,所述对获取到的第一指令和第二指令进行解码,包括,
所述解码单元在第一时钟周期对所述第一指令进行解码,在第二时钟周期对所述第二指令进行解码,所述第二时钟周期是所述第一时钟周期的下一时钟周期。
4.根据权利要求1至3中任一所述的装置,其特征在于,所述在不等待所述第一指令的进位标志结果的产生的情况,包括,所述解码单元在未接收到所述第一指令的进位标志结果的情况下结束对所述第二指令的解码。
5.根据权利要求1所述的装置,其特征在于,所述解码单元为解码器,所述第一寄存单元为寄存器组,所述第二寄存单元为寄存器组,所述移位单元为移位器。
6.一种基于进位标志的指令处理方法,应用于电子设备,其特征在于,包括,
在第一时钟周期对获取的第一指令进行解码,得到所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述第一指令的进位标志值、所述第一指令的移位位数、所述第一指令的移位控制信号以及所述第一指令的相加控制信号;
在紧随着所述第一时钟周期后的第二时钟周期,根据所述移位控制信号以及所述移位位数对所述第一指令的第二源操作数进行移位操作,得到移位操作数;同时,对获取的第二指令进行解码得到所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二指令的第一相加控制信号、所述第二指令的第二相加控制信号,并且不等待所述第一指令的进位标志结果的产生;其中,所述第一指令与所述第二指令具有进位标志依赖关系,并且所述第一指令的第二源操作数需要进行移位操作,所述第二指令的第二源操作数不需要进行移位操作;
其中,所述第一指令的第二源操作数需要进行移位操作,所述第一指令的进位标志结果作为所述第二指令的进位标志值参与运算,并且,所述第二指令的第二源操作数不需要进行移位操作;
在紧随着所述第二时钟周期后的第三时钟周期,根据所述相加控制信号对所述第一指令的第一源操作数、所述移位操作数以及所述第一指令的进位标志值相加得到所述第一指令的和值以及所述第一指令的进位标志结果;同时,根据所述第一相加控制信号对所述第二指令的第一源操作数、所述第二指令的第二源操作数相加,并且将产生的所述第一指令的进位标志结果作为所述第二指令的进位标志值;
在紧随着第三时钟周期后的第四时钟周期,根据第二相加控制信号对所述第二指令的第一源操作数、所述第二指令的第二源操作数以及作为所述第二指令的进位标志值的所述第一指令的进位标志结果相加,得到所述第二指令的和值。
7.根据权利要求6所述的方法,其特征在于,所述第一指令与所述第二指令具有进位标志依赖关系,包括,所述第二指令的和值是基于所述第一指令的进位标志结果确定的。
8.根据权利要求6或7所述的方法,其特征在于,所述相加控制信号为,将所述第一指令的第一源操作数、所述第一指令的第二源操作数以及所述第一指令的进位标志值相加的控制信号。
9.根据权利要求6或7所述的方法,其特征在于,所述第一相加控制信号为,将所述第二指令的第一源操作数、所述第二指令的第二源操作数相加的控制信号;所述第二相加控制信号为,将所述第二指令的第一源操作数、所述第二指令的第二源操作数以及所述第二指令的进位标志值相加的控制信号。
10.一种基于进位标志的指令处理装置,其特征在于,所述指令处理装置包括,解码单元、第一寄存单元、移位单元、第一算术逻辑单元、第一执行单元、选择单元、第二寄存单元、第二算术逻辑单元,并且其中,
所述解码单元,用于对获取到的第一指令和第二指令进行解码;其中,
对于所述第一指令,将解码得到的所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述第一指令的移位位数、所述第一指令的进位标志值、所述第一指令的移位控制信号以及所述第一指令的相加控制信号送给所述第一寄存单元;
对于所述第二指令,在不等待所述第一指令的进位标志结果产生的情况下,将解码得到的所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二指令的相加控制信号送给所述第一寄存单元;其中,所述第一指令的第二源操作数需要进行移位操作,所述第二指令的第二源操作数不需要进行移位操作,并且所述第二指令的和值基于所述第一指令的进位标志结果确定;
所述第一寄存单元,用于存储所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述移位位数、所述移位控制信号、所述相加控制信号,并且将所述第一指令的第二源操作数、所述移位位数以及所述移位控制信号送给所述移位单元,将所述第一指令的第一源操作数、所述第一指令的进位标志值以及所述相加控制信号送给第二寄存单元;用于存储所述第二指令的第一源操作数、所述第二指令的第二源操作数、所述第二指令的相加控制信号,并且将所述第二指令的第一源操作数、所述第二指令的第二源操作数以及所述第二指令的相加控制信号送给第一算术逻辑单元,并且,将所述第二指令的第一源操作数、所述第二指令的第二源操作数以及所述第二指令的相加控制信号送给所述第一执行单元;
所述移位单元,用于根据所述移位控制信号以及所述移位位数将所述第一指令的第二源操作数进行移位操作得到移位操作数,并且将所述移位操作数送给所述第二寄存单元;
所述第一算术逻辑单元,用于根据所述第二指令的相加控制信号将所述第二指令的第一源操作数以及所述第二指令的第二源操作数以及第一预设进位标志值相加得到第一和值,并且将所述第一和值送给所述选择单元;
所述第一执行单元,用于根据所述第二指令的相加控制信号将所述第二指令的第一源操作数以及所述第二指令的第二源操作数以及第二预设进位标志值相加得到第二和值,并且将所述第二和值送给所述选择单元;
所述第二寄存单元,用于存储所述第一指令的第一源操作数、所述移位操作数以及所述相加控制信号,并且将所述第一指令的第一源操作数、所述移位操作数以及所述第一指令的相加控制信号送给所述第二算术逻辑单元;
所述第二算术逻辑单元,用于根据所述第一指令的相加控制信号将所述第一指令的第一源操作数、所述移位操作数、所述第一指令的进位标志值相加,得到所述第一指令的和值以及所述第一指令的进位标志结果,并且将所述第一指令的进位标志结果送给所述选择单元;
所述选择单元,用于根据所述第一指令的进位标志结果从所述第一和值与所述第二和值中确定所述第二指令的和值。
11.根据权利要求10所述的装置,其特征在于,所述第一执行单元由地址生成单元实现。
12.根据权利要求10所述的装置,其特征在于,所述第一执行单元由算术逻辑单元实现。
13.根据权利要求11或12所述的装置,其特征在于,所述第一指令与所述第二指令具有进位标志依赖关系,包括,所述第二指令的和值是基于所述第一指令的进位标志结果确定的。
14.根据权利要求11或12所述的装置,其特征在于,所述对获取到的第一指令和第二指令进行解码,包括,
所述解码单元在第一时钟周期对所述第一指令进行解码,在第二时钟周期对所述第二指令进行解码,所述第二时钟周期是所述第一时钟周期的下一时钟周期。
15.根据权利要求10所述的装置,其特征在于,所述在不等待所述第一指令的进位标志结果的产生的情况,包括,所述解码单元在未接收到所述第一指令的进位标志结果的情况下结束对所述第二指令的解码。
16.根据权利要求10所述的装置,其特征在于,所述根据所述第一指令的进位标志结果从所述第一和值与所述第二和值中确定所述第二指令的和值,包括
当所述第一预设进位标志值与所述第一指令的进位标志结果相同,则将所述第一和值作为所述第二指令的和值;当所述第二预设进位标志值与所述第一指令的进位标志结果相同,则将所述第二和值作为所述第二指令的和值。
17.一种基于进位标志的指令处理方法,应用于电子设备,其特征在于,包括,
在第一时钟周期对获取的第一指令进行解码,得到所述第一指令的第一源操作数、所述第一指令的第二源操作数、所述第一指令的进位标志值、所述第一指令的移位位数、所述第一指令的移位控制信号以及所述第一指令的相加控制信号;
在紧随着所述第一时钟周期后的第二时钟周期,根据所述移位控制信号以及所述移位位数对所述第一指令的第二源操作数进行移位操作,得到移位操作数;同时,对获取的第二指令解码得到所述第二指令的第一源操作数、第二指令的第二源操作数、所述第二指令的相加控制信号,并且不等待所述第一指令的进位标志结果的产生;其中,所述第一指令与所述第二指令具有进位标志依赖关系,并且所述第一指令的第二源操作数需要进行移位操作,所述第二指令的第二源操作数不需要进行移位操作;
在紧随着所述第二时钟周期后的第三时钟周期,根据所述第一指令的相加控制信号对所述第一指令的第一源操作数、所述移位操作数以及所述第一指令的进位标志值相加得到所述第一指令的和值以及所述第一指令的进位标志结果;同时,根据所述第二指令的相加控制信号将所述第二指令的第一源操作数、所述第二指令的第二源操作数与第一预设进位标志值相加得到第一和值,将所述第二指令的第一源操作数、所述第二指令的第二源操作数与第二预设进位标志值相加得到第二和值,并且根据所述第一指令的进位标志结果从所述第一和值与所述第二和值中确定所述第二指令的和值。
18.根据权利要求17所述的方法,其特征在于,所述第一指令与所述第二指令具有进位标志依赖关系,包括,所述第二指令的和值基于所述第一指令的进位标志结果确定的。
19.根据权利要求18所述的方法,其特征在于,所述不等待所述第一指令的进位标志结果的产生,包括,所述解码单元在未接收到所述第一指令的进位标志结果的情况下结束对所述第二指令的解码。
20.根据权利要求18所述的方法,其特征在于,所述根据所述第一指令的进位标志结果从所述第一和值与所述第二和值中确定所述第二指令的和值,包括
当所述第一预设进位标志值与所述第一指令的进位标志结果相同,则将所述第一和值作为所述第二指令的和值;当所述第二预设进位标志值与所述第一指令的进位标志结果相同,则将所述第二和值作为所述第二指令的和值。
21.一种处理器,其特征在于,所述处理器包括权利要求1-5、10-16中任一项所述的指令处理装置,并且
用于执行权利要求6-9、17-20中任一项所述的指令处理方法。
22.一种电子设备,其特征在于,所述电子设备包括权利要求21所述的处理器。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210893579.3A CN115269009A (zh) | 2022-07-27 | 2022-07-27 | 指令处理方法、装置、处理器和电子设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210893579.3A CN115269009A (zh) | 2022-07-27 | 2022-07-27 | 指令处理方法、装置、处理器和电子设备 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN115269009A true CN115269009A (zh) | 2022-11-01 |
Family
ID=83771971
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202210893579.3A Pending CN115269009A (zh) | 2022-07-27 | 2022-07-27 | 指令处理方法、装置、处理器和电子设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN115269009A (zh) |
-
2022
- 2022-07-27 CN CN202210893579.3A patent/CN115269009A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11204770B2 (en) | Microprocessor having self-resetting register scoreboard | |
| CN105359089B (zh) | 用于在微处理器中进行选择性重命名的方法和设备 | |
| US9384351B2 (en) | Method and apparatus for implementing a secure boot using multiple firmware sources | |
| JP5209933B2 (ja) | データ処理装置 | |
| KR102472894B1 (ko) | 벡터 패킹된 투플 교차 비교 기능을 제공하기 위한 방법, 장치, 명령어들 및 로직 | |
| CN105302543A (zh) | 在64位机器上运行32位操作系统 | |
| CN108885551B (zh) | 存储器复制指令、处理器、方法和系统 | |
| TW201643706A (zh) | 用以執行融合單一週期遞增-比較-跳越之指令與邏輯 | |
| JP2018156672A (ja) | マイクロプロセッサ内において複数のレジスタユニットからの対応する半語ユニットを結合するための方法及びシステム | |
| KR20190033084A (ko) | 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적 | |
| CN111295641B (zh) | 使用宽度减小vliw处理器的vliw指令处理的系统和方法 | |
| CN114115999B (zh) | 指令处理方法及装置 | |
| TWI766891B (zh) | 半導體裝置的處理器與其操作方法 | |
| US7404065B2 (en) | Flow optimization and prediction for VSSE memory operations | |
| US20190171461A1 (en) | Skip ahead allocation and retirement in dynamic binary translation based out-of-order processors | |
| CN115269009A (zh) | 指令处理方法、装置、处理器和电子设备 | |
| CN115080121B (zh) | 指令处理方法、装置、电子设备及计算机可读存储介质 | |
| JPS6161416B2 (zh) | ||
| CN109634766B (zh) | 提升数据流机运行效率的方法、装置、设备及存储介质 | |
| CN106537331A (zh) | 指令处理方法及设备 | |
| JP2583506B2 (ja) | データ処理装置 | |
| CN114995884B (zh) | 指令退休单元、指令执行单元及相关装置和方法 | |
| CN119902801A (zh) | 数据处理方法、可读存储介质、程序产品及电子设备 | |
| US7620796B2 (en) | System and method for acceleration of streams of dependent instructions within a microprocessor | |
| JPS6116112B2 (zh) |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination |