CN105242905A - 数据假相关的处理方法和装置 - Google Patents
数据假相关的处理方法和装置 Download PDFInfo
- Publication number
- CN105242905A CN105242905A CN201510724055.1A CN201510724055A CN105242905A CN 105242905 A CN105242905 A CN 105242905A CN 201510724055 A CN201510724055 A CN 201510724055A CN 105242905 A CN105242905 A CN 105242905A
- Authority
- CN
- China
- Prior art keywords
- instruction
- extended
- coding
- operand
- instructions
- 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
- Advance Control (AREA)
Abstract
本发明实施例提供一种数据假相关的处理方法和装置,该方法包括:判断指令序列中是否存在数据假相关的至少一个指令对;若是,则对所述指令序列进行伪重命名处理操作,以消除所述至少一个指令对中部分或者全部指令对的数据假相关,得到重命名后的指令序列,所述重命名后的指令序列包括至少一条扩展指令;对所述重命名后的指令序列执行调度操作,获得调度指令序列。本发明提供的方法,在重命名时并不受限于空闲的体系结构寄存器的个数,适用性高。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种数据假相关的处理方法和装置。
背景技术
在处理器设计中,寄存器重命名是一种十分重要的公知的优化技术。寄存器重命名主要用于消除处理器程序指令之间的数据相关。首先,计算机体系结构中描述的数据相关有三种,分别是读后写相关(WriteAfterRead,简称WAR)、写后读相关(ReadAfterWrite,简称RAW)和写后写相关(WriteAfterWrite,简称WAW),其中,RAW,写的指令与读的指令之间存在真实的数据流,因此RAW是一种真相关,而WAR和WAW,其对应的两条指令之间并没有真实的数据流动,因此是一种假相关。寄存器重命名正是处理这种假的数据相关,从而提高指令执行的效率。
现有技术主要采用真重命名技术,其主要特点是分析程序中存在WAW/WAR相关的指令,并利用空闲的寄存器重命名消除相关。如图1所示,原始参考指令序列仅使用一个寄存器R1,指令2与指令4之间存在WAR和WAW相关(寄存器R1),指令3与指令4之间存在WAR相关(寄存器R1),因此,此指令序列在无硬件重命名支持的机器上必须按照严格的顺序执行(即按照顺序1、2、3、4、5、6依次执行),按照图2中指令周期的假设,图1中的指令序列需要10个周期(指令1一个周期,因为load数据要三个周期,因此其后插入两个周期空操作,指令2、3一个周期,指令4一个周期,同样插入两个周期空操作,指令5、6一个周期,共10个周期,这里的周期指的是执行周期)。为了消除指令2、指令3分别与指令4之间的数据假相关,现有技术将指令4至指令6的R1重命名为R2(参见图3所示的指令序列,图3所示的指令序列为已消除假相关的指令序列),则指令2与指令4、指令3与指令4之间均无任何相关,进一步地,将指令4调度到指令1后面执行,得到图4所示的指令序列,此指令序列只需要7个周期(指令1一个周期,指令4一个周期,插入一个周期的空操作,指令2、3、5、6个一个周期,共7个周期)。可见,通过真重命名可以提升程序执行效率。
但是,采用现有技术的方式消除指令之间的数据假相关,其需要更多的可重命名的体系结构寄存器(例如上述的R1和R2),在很多的处理器领域(比如矢量DSP处理器)其实际可用的体系结构寄存器数目是非常受限的,因此现有技术的方式适用性不高。
发明内容
本发明实施例提供一种数据假相关的处理方法和装置,用以解决现有技术在消除程序中的数据假相关时受限于空闲的体系结构寄存器的数目,适用性不高的技术问题。
第一方面,本发明提供一种数据假相关的处理方法,包括:
判断指令序列中是否存在数据假相关的至少一个指令对;
若是,则对所述指令序列进行伪重命名处理操作,以消除所述至少一个指令对中部分或者全部指令对的数据假相关,得到重命名后的指令序列,所述重命名后的指令序列包括至少一条扩展指令;
其中,所述伪重命名处理操作包括:
根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的所述扩展指令;所述操作数扩展编码包括所述操作数编码和扩展比特,所述扩展比特用于指示所述扩展指令涉及的寄存器为体系结构结构寄存器或者伪重命名寄存器;
对所述重命名后的指令序列执行调度操作,获得调度指令序列。
通过上述第一方面提供的数据假相关的处理方法,在确定指令序列中存在数据假相关的至少一个指令对时,对该指令序列中的每一条指令进行伪重命名处理操作,以消除所述至少一个指令对中部分或者全部指令对的数据假相关,进而得到重命名后的指令序列,该重命名后的指令序列中的扩展指令包括对原始指令的操作数编码进行扩展后得到的操作数扩展编码,通过该操作数扩展编码中的扩展比特,将原始指令涉及的一个体系结构寄存器扩展为多个寄存器,这样在对原始指令进行重命名时,会消除造成指令间的数据假相关,其在重命名时并不受限于空闲的体系结构寄存器的个数,适用性高。
在第一方面的一种可能的实施方式中,所述操作数编码包括源操作数编码和目的操作数编码;所述操作数扩展编码包括源操作数扩展编码和/或目的操作数扩展编码;所述根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的扩展指令,具体包括:
根据所述消除相关扩展规则,将所述指令的源操作数编码扩展为所述源操作数扩展编码,和/或,将所述目的操作数编码扩展为所述目的操作数扩展编码,得到所述扩展指令;
其中,所述扩展指令包括所述源操作数扩展编码和/或所述目的操作数扩展编码,所述源操作数扩展编码包括所述源操作数编码和所述扩展比特,所述目的操作数扩展编码包括所述目的操作数编码和所述扩展比特。
在第一方面的另一种可能的实施方式中,若所述指令序列中包括存在旁路的多个指令,相应的,所述重命名后的指令序列中包括与所述多个指令对应的扩展指令;则对所述指令序列进行伪重命名处理操作之后,所述方法还包括:
判断与所述多个指令对应的扩展指令中的第一扩展指令的源操作数扩展编码,和,与所述多个指令对应的扩展指令中流水级位于所述第一扩展指令之后的第二扩展指令的目的操作数扩展编码是否相同;
若是,则将目的操作数扩展编码与所述第一扩展指令的源操作数扩展编码相同的第二扩展指令旁路至所述第一扩展指令。
通过该实施方式提供的方法,当指令序列中包括存在旁路的多个指令时,通过对该指令序列中的每条指令进行伪重命名处理操作,从而得到与这些存在旁路的多个指令对应的多个扩展指令,进而通过判断该多个扩展指令中的第一扩展指令的源操作数扩展编码,与上述多个扩展指令中流水级位于第一扩展指令之后的第二扩展指令的目的操作数扩展编码是否相同,从而将目的操作数扩展编码与第一扩展指令的源操作数扩展编码相同的第二扩展指令旁路至第一扩展指令,保证了旁路网络的功能正确。
进一步地,所述扩展指令还包括有害指令标识和受害指令标识;
所述有害指令标识用于指示所述扩展指令是否为引起其他扩展指令出现数据假相关的指令;
所述受害指令标识用于指示所述扩展指令是否为受其他扩展指令影响出现数据假相关的指令。
则在第一方面的另一种可能的实施方式中,所述对所述重命名后的指令序列执行调度操作,获得调度指令序列之后,所述方法还包括:
根据所述扩展指令的扩展比特确定所述扩展指令涉及的目的寄存器为伪重命名寄存器;
根据所述调度指令序列的顺序,判断所述扩展指令的目的操作数编码与位于所述扩展指令之后的其他扩展指令的源操作数编码是否相同;
若是,则通过所述扩展指令的有害指令标识表征所述扩展指令为有害指令,并通过所述其他扩展指令的受害指令标识表征所述其他扩展指令为受害指令。
在第一方面的另一种可能的实施方式中,所述方法还包括:
根据所述扩展指令的受害指令标识确定所述扩展指令是否为受害指令;
若是,则判断所述调度指令序列中流水级位于所述扩展指令之后的其他扩展指令是否为有害指令;
若确定所述其他扩展指令中的第三扩展指令为有害指令,则判断所述第三扩展指令的目的操作数编码是否与所述扩展指令的源操作数编码相同;
若是,则当所述扩展指令停顿时,将目的操作数编码与所述扩展指令的源操作数编码相同的第三扩展指令与所述扩展指令之间的所有指令均停顿。
通过该实施方式提供的方法,即通过受害指令标识和有害指令标识的设计,克服了现有技术在流水线停顿时指令潜在执行错误的问题,保证了在流水线停顿时,指令执行的正确性。
在第一方面的另一种可能的实施方式中,所述方法还包括:
接收外部中断请求;
根据有害指令标识和受害指令标识判断所述调度指令序列的流水线上是否存在有害指令和受害指令;
若是,则不响应所述外部中断请求。
通过该实施方式提供的方法,即通过受害指令标识和有害指令标识的设计,克服了现有技术在流水线中断时指令执行错误的问题,保证了在流水线中断时,指令执行的正确性。
第二方面,本发明提供一种数据假相关的处理装置,包括:
判断模块,用于判断指令序列中是否存在数据假相关的至少一个指令对;
处理模块,用于在所述判断模块判断指令序列中存在数据假相关的至少一个指令对时,对所述指令序列进行伪重命名处理操作,以消除所述至少一个指令对中部分或者全部指令对的数据假相关,得到重命名后的指令序列,所述重命名后的指令序列包括至少一条扩展指令;其中,所述伪重命名处理操作包括:根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的所述扩展指令;所述操作数扩展编码包括所述操作数编码和扩展比特,所述扩展比特用于指示所述扩展指令涉及的寄存器为体系结构结构寄存器或者伪重命名寄存器;
调度模块,用于对所述重命名后的指令序列执行调度操作,获得调度指令序列。
在第二方面的一种可能的实施方式中,所述操作数编码包括源操作数编码和目的操作数编码;所述操作数扩展编码包括源操作数扩展编码和/或目的操作数扩展编码;所述处理模块,用于根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的扩展指令,具体包括:
所述处理模块,具体用于根据所述消除相关扩展规则,将所述指令的源操作数编码扩展为所述源操作数扩展编码,和/或,将所述目的操作数编码扩展为所述目的操作数扩展编码,得到所述扩展指令;
其中,所述扩展指令包括所述源操作数扩展编码和/或所述目的操作数扩展编码,所述源操作数扩展编码包括所述源操作数编码和所述扩展比特,所述目的操作数扩展编码包括所述目的操作数编码和所述扩展比特。
在第二方面的另一种可能的实施方式中,若所述指令序列中包括存在旁路的多个指令,相应的,所述重命名后的指令序列中包括与所述多个指令对应的扩展指令;
所述判断模块,还用于判断与所述多个指令对应的扩展指令中的第一扩展指令的源操作数扩展编码,和,与所述多个指令对应的扩展指令中流水级位于所述第一扩展指令之后的第二扩展指令的目的操作数扩展编码是否相同;
所述处理模块,还用于在所述判断模块判断第一扩展指令的源操作数扩展编码,和,与所述多个指令对应的扩展指令中流水级位于所述第一扩展指令之后的第二扩展指令的目的操作数扩展编码相同时,将目的操作数扩展编码与所述第一扩展指令的源操作数扩展编码相同的第二扩展指令旁路至所述第一扩展指令。
进一步地,所述扩展指令还包括有害指令标识和受害指令标识;
所述有害指令标识用于指示所述扩展指令是否为引起其他扩展指令出现数据假相关的指令;
所述受害指令标识用于指示所述扩展指令是否为受其他扩展指令影响出现数据假相关的指令。
则在第二方面的另一种可能的实施方式中,所述判断模块,还用于根据所述扩展指令的扩展比特确定所述扩展指令涉及的目的寄存器为伪重命名寄存器,并根据所述调度指令序列的顺序,判断所述扩展指令的目的操作数编码与位于所述扩展指令之后的其他扩展指令的源操作数编码是否相同;
则所述处理模块,还用于在所述判断模块判断所述扩展指令的目的操作数编码与位于所述扩展指令之后的其他扩展指令的源操作数编码相同时,通过所述扩展指令的有害指令标识表征所述扩展指令为有害指令,并通过所述其他扩展指令的受害指令标识表征所述其他扩展指令为受害指令。
在第二方面的另一种可能的实施方式中,所述判断模块,还用于根据所述扩展指令的受害指令标识确定所述扩展指令是否为受害指令,若是,则判断所述调度指令序列中流水级位于所述扩展指令之后的其他扩展指令是否为有害指令,若确定所述其他扩展指令中的第三扩展指令为有害指令,则判断所述第三扩展指令的目的操作数编码是否与所述扩展指令的源操作数编码相同;
所述处理模块,还用于在所述判断模块判断所述第三扩展指令的目的操作数编码与所述扩展指令的源操作数编码相同时,当所述扩展指令停顿时,将目的操作数编码与所述扩展指令的源操作数编码相同的第三扩展指令与所述扩展指令之间的所有指令均停顿。
在第二方面的另一种可能的实施方式中,所述处理模块,还用于接收外部中断请求,并根据有害指令标识和受害指令标识判断所述调度指令序列的流水线上是否存在有害指令和受害指令;若是,则不响应所述外部中断请求。
上述第二方面和第二方面的各可能的实施方式所带来的有益效果,可以对应参照上述第一方面和第一方面的各可能的实施方式所带来的有益效果,在此不再赘述。
第三方面,本发明提供一种数据假相关的处理设备,包括:
处理器,用于判断指令序列中是否存在数据假相关的至少一个指令对;若是,则对所述指令序列进行伪重命名处理操作,以消除所述至少一个指令对中部分或者全部指令对的数据假相关,得到重命名后的指令序列,并对所述重命名后的指令序列执行调度操作,获得调度指令序列;所述重命名后的指令序列包括至少一条扩展指令;其中,所述伪重命名处理操作包括:根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的所述扩展指令;所述操作数扩展编码包括所述操作数编码和扩展比特,所述扩展比特用于指示所述扩展指令涉及的寄存器为体系结构结构寄存器或者伪重命名寄存器;
在第三方面的一种可能的实施方式中,所述操作数编码包括源操作数编码和目的操作数编码;所述操作数扩展编码包括源操作数扩展编码和/或目的操作数扩展编码;所述根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的扩展指令,具体包括:
根据所述消除相关扩展规则,将所述指令的源操作数编码扩展为所述源操作数扩展编码,和/或,将所述目的操作数编码扩展为所述目的操作数扩展编码,得到所述扩展指令;
其中,所述扩展指令包括所述源操作数扩展编码和/或所述目的操作数扩展编码,所述源操作数扩展编码包括所述源操作数编码和所述扩展比特,所述目的操作数扩展编码包括所述目的操作数编码和所述扩展比特。
在第三方面的另一种可能的实施方式中,若所述指令序列中包括存在旁路的多个指令,相应的,所述重命名后的指令序列中包括与所述多个指令对应的扩展指令;则所述处理器,还用于判断与所述多个指令对应的扩展指令中的第一扩展指令的源操作数扩展编码,和,与所述多个指令对应的扩展指令中流水级位于所述第一扩展指令之后的第二扩展指令的目的操作数扩展编码是否相同;若是,则将目的操作数扩展编码与所述第一扩展指令的源操作数扩展编码相同的第二扩展指令旁路至所述第一扩展指令。
进一步地,所述扩展指令还包括有害指令标识和受害指令标识;
所述有害指令标识用于指示所述扩展指令是否为引起其他扩展指令出现数据假相关的指令;
所述受害指令标识用于指示所述扩展指令是否为受其他扩展指令影响出现数据假相关的指令。
则在第三方面的另一种可能的实施方式中,所述处理器,还用于根据所述扩展指令的扩展比特确定所述扩展指令涉及的目的寄存器为伪重命名寄存器,并根据所述调度指令序列的顺序,判断所述扩展指令的目的操作数编码与位于所述扩展指令之后的其他扩展指令的源操作数编码是否相同;若是,则通过所述扩展指令的有害指令标识表征所述扩展指令为有害指令,并通过所述其他扩展指令的受害指令标识表征所述其他扩展指令为受害指令。
在第三方面的另一种可能的实施方式中,所述处理器,还用于根据所述扩展指令的受害指令标识确定所述扩展指令是否为受害指令;若是,则判断所述调度指令序列中流水级位于所述扩展指令之后的其他扩展指令是否为有害指令;若确定所述其他扩展指令中的第三扩展指令为有害指令,则判断所述第三扩展指令的目的操作数编码是否与所述扩展指令的源操作数编码相同;若是,则当所述扩展指令停顿时,将目的操作数编码与所述扩展指令的源操作数编码相同的第三扩展指令与所述扩展指令之间的所有指令均停顿。
在第三方面的另一种可能的实施方式中,所述处理器,还用于接收外部中断请求,并根据有害指令标识和受害指令标识判断所述调度指令序列的流水线上是否存在有害指令和受害指令;若是,则不响应所述外部中断请求。
上述第三方面和第三方面的各可能的实施方式所带来的有益效果,可以对应参照上述第一方面和第一方面的各可能的实施方式所带来的有益效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的原始指令序列的示意图;
图2为本发明提供的图1所示的指令执行周期的示意图;
图3为本发明提供的图1所示的指令序列经重命名后的指令序列示意图;
图4为本发明提供的图2所述的指令序列经调度后的指令序列示意图;
图5为本发明提供的数据假相关的处理方法实施例一的流程示意图;
图6为本发明提供的数据假相关的处理方法实施例二的流程示意图;
图7为本发明提供的处理器流水线结构示意图;
图8为本发明提供的数据假相关的处理方法实施例三的流程示意图;
图9为本发明提供的数据假相关的处理方法实施例四的流程示意图;
图10为本发明提供的数据假相关的处理方法实施例五的流程示意图;
图11为本发明提供的数据假相关的处理装置实施例一的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例涉及的方法的执行主体可以是计算机,可以是服务器,还可以是其他可以运行程序的硬件设备。该硬件设备上可以具有编译器的功能,该编译器实现对程序中指令执行顺序的调度,也可以实现消除指令的数据假相关,该硬件设备还可以具有运行编译后的程序的功能。可选的,以计算机为例,该计算机可以包括处理器,该处理器可以执行经过计算机中的编译器编译后的程序,该编译器可以为软件模块,还是可以为集成了编译程序的功能的硬件,当然,该编译器可以集成在处理器上,即使得处理器可以具有编译程序且运行程序的功能。
本发明实施例涉及的方法,可以适用于处理器设计中寄存器重命名的场景下,该寄存器重命名主要用于消除指令序列间的数据假相关。但是,参见图1至图4所示例的指令寄存器重命名过程,现有技术采用的是分析程序中存在WAW/WAR相关的指令,并利用空闲的寄存器重命名消除数据假相关,并通过相应的编译器调度指令的顺序,从而提高程序的执行效率。但是,现有技术中的这种消除程序中数据假相关的方法,受限于空闲的体系结构寄存器的数目,适用性不高。
本发明实施例提供的数据假相关的处理方法,旨在解决现有技术中在消除程序中的数据假相关时受限于空闲的体系结构寄存器的数目,适用性不高的技术问题。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图5为本发明提供的数据假相关的处理方法实施例一的流程示意图。以执行主体为计算机为例,该计算机中集成了编译器和处理器。本实施例涉及的方法是通过对现有的指令格式中的操作数编码进行扩展得到扩展指令,通过扩展指令中的操作数扩展编码消除指令序列中存在数据假相关的指令对。需要说明的是,现有的指令格式中的操作数编码包括源操作数编码和目的操作数编码,源操作数编码用于指示源寄存器的代号,目的操作数编码用于指示目的寄存器的代号。例如:指令MULR1R2R3(将寄存器R2的数据跟寄存器R3的数据相乘的结果写入寄存器R1)可以写成指令MUL012,其中源操作数编码为1和2,目的操作数编码为0,其中目的操作数编码0指代该指令的目的寄存器为R1,源操作数编码1指代该指令的一个源寄存器为R2,源操作数编码2指代该指令的另一个源寄存器为R3。
如图5所示,该方法包括:
S101:判断指令序列中是否存在数据假相关的至少一个指令对。
具体的,计算机通过内部的编译器功能分析指令序列中是否存在数据假相关的指令对,该假相关可以为WAR和/或WAW。假设编译器分析的指令序列为图1所示的指令段,在图1中,指令2与指令4之间存在WAR和WAW相关(寄存器R1),指令3与指令4之间存在WAR相关(寄存器R1),因此,此指令序列在无硬件重命名支持的机器上必须按照严格的顺序执行(即按照顺序1、2、3、4、5、6依次执行)。按照图2中指令周期的假设,图1中的指令序列需要10个周期(指令1一个周期,因为load数据要三个周期,因此其后插入两个周期空操作,指令2、3一个周期,指令4一个周期,同样插入两个周期空操作,指令5、6一个周期,共10个周期,这里的周期指的是执行周期,一般的一个指令的周期可以包括读取指令周期、读源操作数周期、执行周期和写入周期)。需要说明的是,图1所示的指令序列中,指令1与指令、指令2与指令3、,指令4与指令5、指令5与指令6之间均是真相关,无需消除。
S102:若是,则对所述指令序列进行伪重命名处理操作,以消除所述至少一个指令对中的部分或者全部指令对的数据假相关,得到重命名后的指令序列;其中,所述伪重命名处理操作包括:根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的扩展指令;所述操作数扩展编码包括所述操作数编码和扩展比特,所述扩展比特用于指示所述扩展指令涉及的寄存器为体系结构结构寄存器或者伪重命名寄存器。
具体的,当计算机判断指令序列中存在数据假相关的指令对时,计算机对该指令序列进行伪重命名处理操作,以消除指令对之间的数据假相关,具体为:
计算机根据预设的消除相关扩展规则,将上述指令序列(后面的实施例将该指令序列统称为原始指令序列)中的每一条指令的操作数编码进行扩展,该消除相关扩展规则可以是将操作数编码扩展为多个比特的操作数扩展编码,该操作数扩展编码可以包括原始的操作数编码以及扩展比特,该操作数扩展编码可以将一个体系结构寄存器扩展为至少一个伪重命名寄存器和一个体系结构寄存器,该伪重命名寄存器的个数取决于扩展比特的个数。可选的,该操作数扩展编码中,扩展比特可以位于操作数编码之前,可以位于操作数编码之后,扩展比特为0时,表示扩展指令所涉及的寄存器为体系结构寄存器,扩展比特为1时,表示扩展指令所涉及的寄存器为伪重命名寄存器。可选的,上述扩展指令的格式可以参见表1或表2所示:
表1
表2
可选的,在对原始指令序列中的每一条指令中的操作数编码进行扩展时,当指令中仅包括源操作数编码,则根据预设的消除相关扩展规则将该指令的源操作数编码扩展为源操作数扩展编码,该指令对应的扩展指令中仅包括源操作数扩展编码;当指令中仅包括目的操作数编码,则根据预设的消除相关扩展规则将该指令的目的操作数编码扩展为目的操作数扩展编码,该指令对应的扩展指令中仅包括目的操作数扩展编码;当指令中既包括源操作数编码,也包括目的操作数编码,则根据预设的消除相关扩展规则将该指令的源操作数编码扩展为源操作数扩展编码,并将该指令的目的操作数编码扩展为目的操作数扩展编码,该指令对应的扩展指令中就包括源操作数扩展编码和目的操作数扩展编码。因此,上述扩展指令中的操作数扩展编码可以为源操作数扩展编码,还可以为目的操作数编码,还可以为源操作数编码和目的操作数编码。上述源操作数扩展编码可以包括原始指令的源操作数编码和扩展比特,目的操作数扩展编码包括原始指令的目的操作数编码和扩展比特。
例如,以图1所示的原始指令序列为例,假设编码0指代寄存器R1,则图1所示的原始指令序列的指令编码格式可以参见下述表3所示的编码格式的原始指令序列:
表3
假设计算机内的编译器在进行指令分析时,判断上述表3中的指令2和指令4之间存在数据假相关(WAR和WAW),指令3和指令4之前存在数据假相关(WAR),则按照上述预设的消除相关规则,将操作数编码0可以扩展为两位的操作数扩展编码(当然也可以扩展成多位的操作数扩展编码),该操作数扩展编码的位数取决于扩展比特的位数,故,上述操作数编码0扩展后得到的操作数扩展编码可以为00和10,其中位于第一位的为扩展比特,位于第二位的为操作数编码,扩展比特的值为0表明包括该操作数扩展编码的扩展指令涉及的寄存器为体系结构寄存器,扩展比特的值为1表明包括该操作数扩展编码的扩展指令涉及的寄存器为伪重命名寄存器,因此,上述操作数扩展编码00表征包括扩展指令涉及的寄存器是体系结构寄存器,即R1,操作数扩展编码10表示扩展指令涉及的寄存器是伪重命名寄存器R1’,也就是说上述体系结构寄存器R1可以被扩展为R1和R1’。可选的,上述操作数编码0也可以根据预设的消除相关规则,扩展为00和01,其中,位于第一位的为操作数编码,位于第二位的为扩展比特,则00表征包括扩展指令涉及的寄存器是体系结构寄存器,即R1,10表示扩展指令涉及的寄存器是伪重命名寄存器R1’。因此,对表3所示的编码格式的原始指令序列中的每条指令进行扩展,得到表4所示的扩展指令序列,参见表4所示:
表4
参见表4所示,编译器在对表3所示的编码格式的原始指令序列进行扩展时,是根据指令的实际语义进行扩展的,具体为:图1或者表3中,指令2与指令1之间是真相关,指令2中所需要的源操作数(源操作数编码中的数据,即源寄存器R1中的数据)来自于指令1的目的操作数(目的操作数编码中的数据,即目的寄存器R1的数据),指令3的源操作数来自于指令2的目的操作数,因此,如果将指令1的目的操作数编码0扩展为00后,编译器根据语义也会将指令2和指令3中的操作数编码0扩展为00;另外,对于指令4,根据指令的语义,编译器判断指令4中所需要的目的操作数与指令1至指令3均无关,即指令4与指令1至指令3之间均是假相关,因此,编译器将指令4中的目的操作数编码扩展为10;又,由于指令4与指令5、指令5和指令6之间也是真相关,即指令5的源操作数来自于指令4的目的操作数,指令6的源操作数来自于指令5的目的操作数,因此,如果将指令4的目的操作数编码0扩展为10后,编译器根据语义也会将指令5和指令6中的操作数编码0扩展为10。如此,表4中的扩展指令序列即为重命名后的指令序列,其可以表述为下述表5的格式,由表4和表5可知,通过将原始指令序列中的操作数编码扩展为操作数扩展编码,通过操作数扩展编码中的扩展比特,将原始指令涉及的一个体系结构寄存器扩展为多个寄存器,这样在进行伪重命名时,不会造成指令间的数据假相关,该方法无需采用其他空闲的体系结构寄存器(例如图3中的R2),因此其并不受限于空闲的体系结构寄存器的个数,若需要重命名的寄存器个数较多,可以将原始指令的操作数编码扩展为包括更多位的扩展比特的操作数扩展编码。
表5
S103:对所述重命名后的指令序列执行调度操作,获得调度指令序列。
具体的,当计算机中的编译器得到重命名后的指令序列后,为缩短指令的执行周期,可以对该重命名后的指令序列进行调度。继续参照上述图3所示的重命名后的指令序列,可以将指令4调度至指令1之后,这样重命名后的指令序列的执行周期就缩短为7个周期,参见表6所示:
表6
表6中,指令1一个周期,指令4一个周期,指令1和指令4之间插入一个空周期,指令2、指令3、指令5和指令6各一个周期。从而,通过消除数据假相关和调度指令顺序,可以提高指令的执行效率。
由上述举例可知,通过将原始指令序列中的操作数编码扩展为操作数扩展编码,通过操作数扩展编码中的扩展比特,将原始指令涉及的一个体系结构寄存器扩展为多个寄存器,这样在进行伪重命名时,不会造成指令间的数据假相关,该方法无需采用其他空闲的体系结构寄存器,因此其并不受限于空闲的体系结构寄存器的个数,若需要重命名的寄存器个数较多,可以将原始指令的操作数编码扩展为包括更多位的扩展比特的操作数扩展编码。
本发明实施例提供的数据假相关的处理方法,通过在确定指令序列中存在数据假相关的至少一个指令对时,对该指令序列中的每一条指令进行伪重命名处理操作,以消除所述至少一个指令对中部分或者全部指令对的数据假相关,得到重命名后的指令序列,该重命名后的指令序列中的扩展指令包括对原始指令的操作数编码进行扩展后得到的操作数扩展编码,通过该操作数扩展编码中的扩展比特,将原始指令涉及的一个体系结构寄存器扩展为多个寄存器,这样在对原始指令进行重命名时,会消除造成指令间的数据假相关,其在重命名时并不受限于空闲的体系结构寄存器的个数,适用性高。
图6为本发明提供的数据假相关的处理方法实施例二的流程示意图。本实施例涉及的是当指令序列(即上述原始指令序列)中包括存在旁路的多个指令时,通过对指令序列进行伪重命名处理操作,并通过相应的判断过程避免旁路错误的发生的具体过程。当上述指令序列中包括存在旁路电路的多个指令时,相应的,上述重命名后的指令序列中包括与该多个指令对应的扩展指令。在上述图5所示实施例的基础上,在上述S102之后,该方法还可以包括:
S201:判断所述重命名后的指令序列中与上述多个指令对应的扩展指令中的第一扩展指令的源操作数扩展编码,与上述与多个指令对应的扩展指令中流水级位于所述第一扩展指令之后的第二扩展指令的目的操作数扩展编码是否相同。
具体的,在指令序列中多个指令间存在旁路,则编译器将该指令序列进行伪重命名处理操作后,得到重命名后的指令序列,该重命名后的指令序列中包括与上述存在旁路的多个指令对应的多个扩展指令。然后,编译器判断该多个扩展指令中的第一扩展指令的源操作数扩展编码是否与该多个扩展指令中流水级位于该第一扩展指令之后的第二扩展指令的目的操作数扩展编码是否相同,进而根据判断结果编译器为指令选择准确的旁路。为了更好的理解该过程,下述以一个具体的指令序列进行举例:
例如参见表7所示的指令序列:
表7
表7中,指令1与指令3之间存在旁路,指令2和指令3之间存在旁路,且指令1和指令2之间存在WAW相关,在不存在旁路电路的微架构中,指令3的源操作数应该取的是指令1的R1的写入结果,但是,在存在旁路电路的微架构中,指令3的源操作数就近选择指令2的写入结果,这样就发生了指令2到指令1之间的错误旁路。因此,本实施例为了避免这种错误旁路的发生,对表7中的指令序列中的每一条指令进行伪重命名处理操作,得到表8所示的重命名后的指令序列,假设操作数编码0依然可以扩展为00和10,其中,扩展比特位于操作数编码0之前,参见表8
表8
表8中,编译器在进行伪重命名处理操作时,即将表7所示的每条指令的操作数编码扩展为操作数扩展编码时,依然是根据指令间的语义和预设的消除相关扩展规则(即将操作数编码0扩展为00和10)进行扩展的,具体可以参见上述实施例一所举的根据语义扩展原始指令的操作数编码的方式。如表7和表8所示,表7中存在旁路的是指令1、指令2和指令3,在对表7所示的指令进行伪重命名处理操作后,得到与这三个指令对应的扩展指令1(即表8中的指令1)、扩展指令2(即表8中的指令2)和扩展指令3(即表8中的指令3)。为了方便理解,将表8以直观的格式表示,参见表9
表9
进一步地,假设上述扩展指令3为第一扩展指令,上述扩展指令1和扩展指令2分别为位于扩展指令1的流水级之后的第二扩展指令。为了能够更好的理解本发明,此处先对流水级进行介绍:
参见图7所示的处理器流水线结构,一般的流水线结构可以包括4级以上流水,假设本实施例中,处理器的流水线结构包括4级流水,分别是流水级1:从内存中读取指令、流水级2:读取指令中的源操作数、流水级3:进行相应的计算、流水级4:写入相应的寄存器。假设上述第一扩展指令(即扩展指令3)处于读取源操作数的流水级2上,则上述扩展指令1(第二扩展指令)位于写入寄存器的流水级4,上述扩展指令2(第二扩展指令)位于计算的流水级3上。
故,编译器所在的计算机中的处理器,会判断扩展指令3的源操作数扩展编码是否与位于其流水级之后的哪一个第二扩展指令的目的操作数扩展编码相同(图7中,扩展指令3的源操作数编码为Mr,位于其流水级之后的第二扩展指令的目的操作数扩展编码为Mt0、Mt1……)。由上述表8可知,扩展指令3的源操作数扩展编码为00,扩展指令1的目的操作数扩展编码为00,扩展指令2的目的操作数扩展编码为10,因此,处理器获知扩展指令3的源操作数扩展编码与扩展指令1的目的操作数扩展相同。
S202:若是,则将目的操作数扩展编码与所述第一扩展指令的源操作数扩展编码相同的第二扩展指令旁路至所述第一扩展指令。
具体的,继续参见S201中的例子,当处理器获知扩展指令3的源操作数扩展编码与扩展指令1的目的操作数扩展编码相同,扩展指令3的源操作数扩展编码与扩展指令2的目的操作数扩展编码不同,因此,处理器确定从扩展指令2到扩展指令3的旁路不会发生,只有扩展指令1到扩展指令3的旁路会发生,因此,将该扩展指令1的目的操作数扩展编码对应的目的操作数作为扩展指令3的源操作数扩展编码对应的源操作数,从而保证了旁路网络的功能正确。
本发明实施例提供的数据假相关的处理方法,在指令序列中包括存在旁路的多个指令时,通过对该指令序列中的每条指令进行伪重命名处理操作,从而得到与这些存在旁路的多个指令对应的多个扩展指令,从而通过判断该多个扩展指令中的第一扩展指令的源操作数扩展编码,与所述多个扩展指令中流水级位于第一扩展指令之后的第二扩展指令的目的操作数扩展编码是否相同,从而将目的操作数扩展编码与所述第一扩展指令的源操作数扩展编码相同的第二扩展指令旁路至所述第一扩展指令,保证了旁路网络的功能正确。
图8为本发明提供的数据假相关的处理方法实施例三的流程示意图。本实施例在上述表1或表2所示的扩展指令的格式的基础上,增加了有害指令标识和受害指令标识,该有害指令标识用于指示所述扩展指令是否为引起其他扩展指令出现数据假相关的指令;该受害指令标识用于指示所述扩展指令是否为受其他扩展指令影响出现数据假相关的指令。增加了有害指令标识和受害指令标识的扩展指令的格式可以参见下述表10或者表11所示,本实施例对有害指令标识和受害指令标识的格式中的位置并不做限制。
表10
表11
在上述实施例的基础上,图8所示的本实施例涉及的是如何通过有害指令标识表征该扩展指令是引起其他扩展指令出现数据假相关的指令,以及如何通过受害指令标识表征该扩展指令是受其他扩展指令影响出现数据假相关的指令的具体过程。
以上述表6所示的调度指令,如果指令4在指令2读取寄存器前提交了(比如当流水线在指令2执行时停顿,而指令4流水线往后执行,当指令4执行了三个周期后,指令4的结果就会直接写入寄存器R1’,但因为R1’为伪重命名寄存器,因此实际上指令4的结果直接写入了R1寄存器,也即指令4提交,流水线才恢复执行),则指令2的R1将得到指令4写入的新值,执行违背了WAR相关。因而,,如果某条写寄存器X的指令Y在调度后,可能引起其它读X的指令W出现WAR相关(即Y指令是将数据写入寄存器X,而Y的写入会使得读寄存器X的W指令出现WAR相关),或者引起其它写X的指令Z出现WAW相关,则将指令Y定义为有害指令,而将W、Z指令定义为受害指令。例如表6中,指令4即为有害指令,而指令2即为受害指令。为了区分指令受害指令和受害指令,对每条扩展指令扩展两个比特标识,如果该扩展指令在调度后可能引起其他扩展指令出现WAR或者WAW相关则将有害指令标识置1,表征该扩展指令为有害指令,反之,对于受其影响的其他扩展指令将其受害指令标识置1,表征这些扩展指令为受害指令;或者,也可以是在该扩展指令被调度后可能引起其他扩展指令出现WAR或者WAW相关则将有害指令标识置0,表征该扩展指令为有害指令,反之,对于受其影响的其他扩展指令将其受害指令标识置0,表征这些扩展指令为受害指令。具体的将有害指令标识和受害指令标识置0或者置1,可以参见下述方法:
在上述S103之后,如图8所示,该方法还可以包括:
S301:根据所述扩展指令的扩展比特确定所述扩展指令涉及的目的寄存器为伪重命名寄存器。
S302:根据所述调度指令序列的顺序,判断所述扩展指令的目的操作数编码与位于所述扩展指令之后的其他扩展指令的源操作数编码是否相同。
具体的,待编译器获得调度指令序列之后,编译器可以通过判断扩展比特的值来判断调度指令序列中的哪些扩展指令的目的寄存器为伪重命名寄存器(假设将目的寄存器为伪重命名寄存器的扩展指令称为扩展指令A),当确定了指令A之后,编译器可以根据调度指令序列的顺序,判断该扩展指令A的目的操作数编码与位于该扩展指令A之后的其他扩展指令的源操作数编码是否相同。需要注意的是,这里判断的是扩展指令A的目的操作数编码是否与位于该扩展指令A之后的其他扩展指令的源操作数编码是否相同,而并非比较的是扩展指令A的目的操作数扩展编码是否与位于该扩展指令A之后的其他扩展指令的源操作数扩展编码是否相同。以上述表6为例,将其改写成指令编码格式,具体参见表12所示:
表12
由表12可知(该例子中,操作数扩展编码中的扩展比特位于操作数编码之前),扩展指令4所涉及的目的寄存器为伪重命名寄存器,扩展指令4的目的操作数编码为0,扩展指令2的源操作数编码为0,因此,编译器确定扩展指令4的目的操作数编码和扩展指令2的源操作数编码相同。
S303:若是,则通过所述扩展指令的有害指令标识表征所述扩展指令为有害指令,并通过所述其他扩展指令的受害指令标识表征所述其他扩展指令为受害指令。
具体的,继续以上述S302中的例子为例,当编译器确定扩展指令4的目的操作数编码和扩展指令2的源操作数编码相同时,可选的,可以将扩展指令4的有害指令标识置1,并将扩展指令4的受害指令标识为0,以表征扩展指令4为有害指令,同时,将扩展指令2的有害指令标识置0,并将扩展指令2的受害指令标识置1,以表征该扩展指令2为受害指令。
另外,考虑性能最优设计时,一旦受害指令完成访问寄存器后,必定不会再受到有害指令影响,处理器可以将受害指令标识清0,一旦有害指令完成寄存器写操作,必定不会再对其它指令造成影响,可以将有害指令标识清0。
图8所示的实施例提供的数据假相关的处理方法,通过在扩展指令中增加有害指令标识和受害指令标识,使得处理器在后续运行扩展指令时,可以明确获知哪些扩展指令为有害指令,哪些扩展指令为受害指令,从而为后续响应流水线停顿或者外部中断提供了判断依据。具体可以参加下述图9和图10所示的实施例的具体过程。
图9为本发明提供的数据假相关的处理方法实施例四的流程示意图。以表6所示的调度后的指令序列为例,假设表6中的扩展指令已经增加了上述图8所示的有害指令标识和受害指令标识,如果扩展指令2在读取操作数流水级发生了停顿,但是此时扩展指令4已经到达流水线上的计算流水级,因此扩展指令4不会发生停顿会一直往后执行,这样就会导致指令4的结果直接写入了R1寄存器,也即指令4提交,流水线才恢复执行,因此指令4和指令2之间会出现WAR。因此,本实施例主要涉及的是处理器通过上述有害指令标识和受害指令标识改进流水线停顿的具体过程。
在上述实施例的基础上,如图9所示,在S303之后,该方法还可以包括:
S401:根据所述扩展指令的受害指令标识确定所述扩展指令是否为受害指令。
S402:若是,则判断所述调度指令序列中流水级位于所述扩展指令之后的其他扩展指令是否为有害指令。
具体的,当编译器通过有害指令标识和受害指令标识对调度指令序列进行标记后,处理器可以运行该调度指令序列。在处理器运行时,处理器会根据调度指令序列中的扩展指令的受害指令标识确定哪些扩展指令是否为受害指令;当处理器确定了受害指令之后,处理器判断该调度指令序列中流水级位于该受害指令之后的其他扩展指令是否为有害指令,获得相应的判断结果。可选的,处理器所确定的受害指令可以为一个,也可以为多个。但是需要说明的是,针对所确定出的每一个受害指令,处理器均会单独执行下述S403和S404的过程。
S403:若确定所述其他扩展指令中的第三扩展指令为有害指令,则判断所述第三扩展指令的目的操作数编码是否与所述扩展指令的源操作数编码相同。
具体的,假设上述S402中确定的受害指令为1个,则当处理器根据有害指令标识确定流水级位于所确定的受害指令之后的其他扩展指令中的第三扩展指令为有害指令时,判断该第三扩展指令的目的操作数编码是否与所确定的受害指令的源操作数编码相同。由于位于受害指令之后的第三扩展指令可能一个,也可能为多个,当第三扩展指令为多个(即多个有害指令)时,这些有害指令中的部分有害指令可能并不是影响上述S402中所确定的受害指令的指令,即这部分有害指令可能是致使其他扩展指令成为受害指令的指令。因此,处理器需要判断第三扩展指令的目的操作数编码是否与S402中确定的受害指令的源操作数编码相同,即判断该第三扩展指令是不是致使S402中确定的受害指令受影响的指令。
S404:若是,则当所述扩展指令停顿时,将目的操作数编码与所述扩展指令的源操作数编码相同的第三扩展指令与所述扩展指令之间的所有指令均停顿。
具体的,当处理器确定某一个第三扩展指令的目的操作数编码与S402中确定的受害指令的源操作数编码相同,则处理器确定该第三扩展指令为致使S402中确定的受害指令受影响的指令,因此,当S402中的受害指令停顿时(流水线停顿控制器可以控制每一个流水级的停顿,其是处理器中的通常模块),将这个目的操作数编码与该受害指令的源操作数编码相同的第三扩展指令与该受害指令之间的所有指令停顿,这样就避免了在流水线停顿时,出现数据假相关的违背。例如,当处理器根据受害指令标识确定表6中的扩展指令2为受害指令,然后处理器往后判断,判断扩展指令4为有害指令,则将扩展指令2发生停顿是,则将扩展指令2和扩展指令4之间的所有指令均停顿,这样扩展指令4就不会往后执行到将结果写入R1寄存器,从而在流水线恢复执行时,扩展指令2的源操作数仍然采用的是扩展指令1的目的操作数,从而不会出现WAR的违背,确保了流水线停顿并恢复时,指令执行的正确性。可选的,上述处理器通过有害指令标识和受害指令标识改进流水线停顿的具体算法可以参见下述表13所示:
表13
本发明实施例提供的数据假相关的处理方法,通过受害指令标识和有害指令标识的设计,克服了现有技术消除数据假相关时,在流水线停顿时指令执行错误的问题,保证了在流水线停顿时,指令执行的正确性。
图10为本发明提供的数据假相关的处理方法实施例五的流程示意图。首先对处理器响应外部中断导致发生数据假相关的相关违背的场景进行描述,继续以表6所示的调度后的指令序列为例,假设表6中的扩展指令已经增加了上述图8所示的有害指令标识和受害指令标识,如果扩展指令2在读取操作数之前处理器响应了外部中断,处理器则先排空流水线(即将流水级位于扩展指令2之后的流水级上的指令提交完成,即将扩展指令1和扩展指令4继续往后执行,直至扩展指令4将结果写入目的寄存器R1,流水线才恢复正常),待中断完成之后,处理器重新获取扩展指令2执行,则扩展指令2也将得到扩展指令4写入的新值,导致WAR相关违背。为了避免这种情况,本实施例主要涉及的是处理器通过上述有害指令标识和受害指令标识改进流水线中断的具体过程,即改进处理器中的中中断控制器,该中断控制器是处理器中的通常部件,用来控制处理器对外部中断的响应。
在上述实施例的基础上,如图10所示,在S303之后,该方法还可以包括:
S501:接收外部中断请求。
S502:根据有害指令标识和受害指令标识判断所述调度指令序列的流水线上是否存在有害指令和受害指令。
S503:若是,则不响应所述外部中断请求。
具体的,当处理器接收到外部中断请求后,可以通过扩展指令的有害指令标识和受害指令标识判断调度指令序列的流水线上是否存在有害指令和受害指令,若处理器判断调度指令序列的流水线上即存在有害指令,也存在受害指令,则中断控制器控制处理器不响应外部中断请求。可选的,该中断控制器的算法可以参见表14所示:
表14
本发明实施例提供的数据假相关的处理方法,通过受害指令标识和有害指令标识的设计,克服了现有技术消除数据假相关时,在流水线中断时指令执行错误的问题,保证了在流水线中断时,指令执行的正确性。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图11为本发明提供的数据假相关的处理装置实施例一的结构示意图。该装置可以集成在计算机中,也可以为处理器,本实施例中的计算机和处理器均集成了程序编译功能和运行功能。如图11所示,该装置可以包括:判断模块10、处理模块11和调度模块12。
其中,判断模块10,用于判断指令序列中是否存在数据假相关的至少一个指令对;
处理模块11,用于在所述判断模块10判断指令序列中存在数据假相关的至少一个指令对时,对所述指令序列进行伪重命名处理操作,以消除所述至少一个指令对中部分或者全部指令对的数据假相关,得到重命名后的指令序列,所述重命名后的指令序列包括至少一条扩展指令;其中,所述伪重命名处理操作包括:根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的所述扩展指令;所述操作数扩展编码包括所述操作数编码和扩展比特,所述扩展比特用于指示所述扩展指令涉及的寄存器为体系结构结构寄存器或者伪重命名寄存器;
调度模块12,用于对所述重命名后的指令序列执行调度操作,获得调度指令序列。
进一步地,所述操作数编码包括源操作数编码和目的操作数编码;所述操作数扩展编码包括源操作数扩展编码和/或目的操作数扩展编码;所述处理模块11,用于根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的扩展指令,具体包括:
所述处理模块11,具体用于根据所述消除相关扩展规则,将所述指令的源操作数编码扩展为所述源操作数扩展编码,和/或,将所述目的操作数编码扩展为所述目的操作数扩展编码,得到所述扩展指令;
其中,所述扩展指令包括所述源操作数扩展编码和/或所述目的操作数扩展编码,所述源操作数扩展编码包括所述源操作数编码和所述扩展比特,所述目的操作数扩展编码包括所述目的操作数编码和所述扩展比特
可选的,若所述指令序列中包括存在旁路的多个指令,相应的,所述重命名后的指令序列中包括与所述多个指令对应的扩展指令;则所述判断模块10,还可以用于判断与所述多个指令对应的扩展指令中的第一扩展指令的源操作数扩展编码,和,与所述多个指令对应的扩展指令中流水级位于所述第一扩展指令之后的第二扩展指令的目的操作数扩展编码是否相同;
因而所述处理模块11,还可以用于在所述判断模块10判断第一扩展指令的源操作数扩展编码,和,与所述多个指令对应的扩展指令中流水级位于所述第一扩展指令之后的第二扩展指令的目的操作数扩展编码相同时,将目的操作数扩展编码与所述第一扩展指令的源操作数扩展编码相同的第二扩展指令旁路至所述第一扩展指令。
可选的,所述扩展指令还包括有害指令标识和受害指令标识;
所述有害指令标识用于指示所述扩展指令是否为引起其他扩展指令出现数据假相关的指令;
所述受害指令标识用于指示所述扩展指令是否为受其他扩展指令影响出现数据假相关的指令。
因而,可选的,上述判断模块10还可以用于根据所述扩展指令的扩展比特确定所述扩展指令涉及的目的寄存器为伪重命名寄存器,并根据所述调度指令序列的顺序,判断所述扩展指令的目的操作数编码与位于所述扩展指令之后的其他扩展指令的源操作数编码是否相同;
则所述处理模块11,还可以用于在所述判断模块10判断所述扩展指令的目的操作数编码与位于所述扩展指令之后的其他扩展指令的源操作数编码相同时,通过所述扩展指令的有害指令标识表征所述扩展指令为有害指令,并通过所述其他扩展指令的受害指令标识表征所述其他扩展指令为受害指令。
可选的,所述判断模块10,还可以用于根据所述扩展指令的受害指令标识确定所述扩展指令是否为受害指令,若是,则判断所述调度指令序列中流水级位于所述扩展指令之后的其他扩展指令是否为有害指令,若确定所述其他扩展指令中的第三扩展指令为有害指令,则判断所述第三扩展指令的目的操作数编码是否与所述扩展指令的源操作数编码相同;
所述处理模块11,还可以用于在所述判断模块10判断所述第三扩展指令的目的操作数编码与所述扩展指令的源操作数编码相同时,当所述扩展指令停顿时,将目的操作数编码与所述扩展指令的源操作数编码相同的第三扩展指令与所述扩展指令之间的所有指令均停顿。
可选的,所述处理模块11,还可以用于接收外部中断请求,并根据有害指令标识和受害指令标识判断所述调度指令序列的流水线上是否存在有害指令和受害指令;若是,则不响应所述外部中断请求。
本发明实施例提供的数据假相关的处理装置,可以用于执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.一种数据假相关的处理方法,其特征在于,包括:
判断指令序列中是否存在数据假相关的至少一个指令对;
若是,则对所述指令序列进行伪重命名处理操作,以消除所述至少一个指令对中部分或者全部指令对的数据假相关,得到重命名后的指令序列,所述重命名后的指令序列包括至少一条扩展指令;
其中,所述伪重命名处理操作包括:
根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的所述扩展指令;所述操作数扩展编码包括所述操作数编码和扩展比特,所述扩展比特用于指示所述扩展指令涉及的寄存器为体系结构结构寄存器或者伪重命名寄存器;
对所述重命名后的指令序列执行调度操作,获得调度指令序列。
2.根据权利要求1所述的方法,其特征在于,所述操作数编码包括源操作数编码和目的操作数编码;所述操作数扩展编码包括源操作数扩展编码和/或目的操作数扩展编码;所述根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的扩展指令,具体包括:
根据所述消除相关扩展规则,将所述指令的源操作数编码扩展为所述源操作数扩展编码,和/或,将所述目的操作数编码扩展为所述目的操作数扩展编码,得到所述扩展指令;
其中,所述扩展指令包括所述源操作数扩展编码和/或所述目的操作数扩展编码,所述源操作数扩展编码包括所述源操作数编码和所述扩展比特,所述目的操作数扩展编码包括所述目的操作数编码和所述扩展比特。
3.根据权利要求2所述的方法,其特征在于,若所述指令序列中包括存在旁路的多个指令,相应的,所述重命名后的指令序列中包括与所述多个指令对应的扩展指令;则对所述指令序列进行伪重命名处理操作之后,所述方法还包括:
判断与所述多个指令对应的扩展指令中的第一扩展指令的源操作数扩展编码,和,与所述多个指令对应的扩展指令中流水级位于所述第一扩展指令之后的第二扩展指令的目的操作数扩展编码是否相同;
若是,则将目的操作数扩展编码与所述第一扩展指令的源操作数扩展编码相同的第二扩展指令旁路至所述第一扩展指令。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述扩展指令还包括有害指令标识和受害指令标识;
所述有害指令标识用于指示所述扩展指令是否为引起其他扩展指令出现数据假相关的指令;
所述受害指令标识用于指示所述扩展指令是否为受其他扩展指令影响出现数据假相关的指令。
5.根据权利要求4所述的方法,其特征在于,所述对所述重命名后的指令序列执行调度操作,获得调度指令序列之后,所述方法还包括:
根据所述扩展指令的扩展比特确定所述扩展指令涉及的目的寄存器为伪重命名寄存器;
根据所述调度指令序列的顺序,判断所述扩展指令的目的操作数编码与位于所述扩展指令之后的其他扩展指令的源操作数编码是否相同;
若是,则通过所述扩展指令的有害指令标识表征所述扩展指令为有害指令,并通过所述其他扩展指令的受害指令标识表征所述其他扩展指令为受害指令。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据所述扩展指令的受害指令标识确定所述扩展指令是否为受害指令;
若是,则判断所述调度指令序列中流水级位于所述扩展指令之后的其他扩展指令是否为有害指令;
若确定所述其他扩展指令中的第三扩展指令为有害指令,则判断所述第三扩展指令的目的操作数编码是否与所述扩展指令的源操作数编码相同;
若是,则当所述扩展指令停顿时,将目的操作数编码与所述扩展指令的源操作数编码相同的第三扩展指令与所述扩展指令之间的所有指令均停顿。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
接收外部中断请求;
根据有害指令标识和受害指令标识判断所述调度指令序列的流水线上是否存在有害指令和受害指令;
若是,则不响应所述外部中断请求。
8.一种数据假相关的处理装置,其特征在于,包括:
判断模块,用于判断指令序列中是否存在数据假相关的至少一个指令对;
处理模块,用于在所述判断模块判断指令序列中存在数据假相关的至少一个指令对时,对所述指令序列进行伪重命名处理操作,以消除所述至少一个指令对中部分或者全部指令对的数据假相关,得到重命名后的指令序列,所述重命名后的指令序列包括至少一条扩展指令;其中,所述伪重命名处理操作包括:根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的所述扩展指令;所述操作数扩展编码包括所述操作数编码和扩展比特,所述扩展比特用于指示所述扩展指令涉及的寄存器为体系结构结构寄存器或者伪重命名寄存器;
调度模块,用于对所述重命名后的指令序列执行调度操作,获得调度指令序列。
9.根据权利要求8所述的装置,其特征在于,所述操作数编码包括源操作数编码和目的操作数编码;所述操作数扩展编码包括源操作数扩展编码和/或目的操作数扩展编码;所述处理模块,用于根据预设的消除相关扩展规则,对所述指令序列中的每条指令的操作数编码进行扩展,得到所述指令对应的包括操作数扩展编码的扩展指令,具体包括:
所述处理模块,具体用于根据所述消除相关扩展规则,将所述指令的源操作数编码扩展为所述源操作数扩展编码,和/或,将所述目的操作数编码扩展为所述目的操作数扩展编码,得到所述扩展指令;
其中,所述扩展指令包括所述源操作数扩展编码和/或所述目的操作数扩展编码,所述源操作数扩展编码包括所述源操作数编码和所述扩展比特,所述目的操作数扩展编码包括所述目的操作数编码和所述扩展比特。
10.根据权利要求9所述的装置,其特征在于,若所述指令序列中包括存在旁路的多个指令,相应的,所述重命名后的指令序列中包括与所述多个指令对应的扩展指令;
所述判断模块,还用于判断与所述多个指令对应的扩展指令中的第一扩展指令的源操作数扩展编码,和,与所述多个指令对应的扩展指令中流水级位于所述第一扩展指令之后的第二扩展指令的目的操作数扩展编码是否相同;
所述处理模块,还用于在所述判断模块判断第一扩展指令的源操作数扩展编码,和,与所述多个指令对应的扩展指令中流水级位于所述第一扩展指令之后的第二扩展指令的目的操作数扩展编码相同时,将目的操作数扩展编码与所述第一扩展指令的源操作数扩展编码相同的第二扩展指令旁路至所述第一扩展指令。
11.根据权利要求8-10任一项所述的装置,其特征在于,所述扩展指令还包括有害指令标识和受害指令标识;
所述有害指令标识用于指示所述扩展指令是否为引起其他扩展指令出现数据假相关的指令;
所述受害指令标识用于指示所述扩展指令是否为受其他扩展指令影响出现数据假相关的指令。
12.根据权利要求11所述的装置,其特征在于,所述判断模块,还用于根据所述扩展指令的扩展比特确定所述扩展指令涉及的目的寄存器为伪重命名寄存器,并根据所述调度指令序列的顺序,判断所述扩展指令的目的操作数编码与位于所述扩展指令之后的其他扩展指令的源操作数编码是否相同;
则所述处理模块,还用于在所述判断模块判断所述扩展指令的目的操作数编码与位于所述扩展指令之后的其他扩展指令的源操作数编码相同时,通过所述扩展指令的有害指令标识表征所述扩展指令为有害指令,并通过所述其他扩展指令的受害指令标识表征所述其他扩展指令为受害指令。
13.根据权利要求12所述的装置,其特征在于,所述判断模块,还用于根据所述扩展指令的受害指令标识确定所述扩展指令是否为受害指令,若是,则判断所述调度指令序列中流水级位于所述扩展指令之后的其他扩展指令是否为有害指令,若确定所述其他扩展指令中的第三扩展指令为有害指令,则判断所述第三扩展指令的目的操作数编码是否与所述扩展指令的源操作数编码相同;
所述处理模块,还用于在所述判断模块判断所述第三扩展指令的目的操作数编码与所述扩展指令的源操作数编码相同时,当所述扩展指令停顿时,将目的操作数编码与所述扩展指令的源操作数编码相同的第三扩展指令与所述扩展指令之间的所有指令均停顿。
14.根据权利要求12或13所述的装置,其特征在于,所述处理模块,还用于接收外部中断请求,并根据有害指令标识和受害指令标识判断所述调度指令序列的流水线上是否存在有害指令和受害指令;若是,则不响应所述外部中断请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510724055.1A CN105242905B (zh) | 2015-10-29 | 2015-10-29 | 数据假相关的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510724055.1A CN105242905B (zh) | 2015-10-29 | 2015-10-29 | 数据假相关的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105242905A true CN105242905A (zh) | 2016-01-13 |
CN105242905B CN105242905B (zh) | 2018-03-09 |
Family
ID=55040565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510724055.1A Active CN105242905B (zh) | 2015-10-29 | 2015-10-29 | 数据假相关的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105242905B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614736A (zh) * | 2018-04-13 | 2018-10-02 | 杭州中天微系统有限公司 | 实现资源索引替换的装置及处理器 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5996068A (en) * | 1997-03-26 | 1999-11-30 | Lucent Technologies Inc. | Method and apparatus for renaming registers corresponding to multiple thread identifications |
US20020069346A1 (en) * | 1998-08-24 | 2002-06-06 | James Arthur Farrell | Method for mapping instructions using a set of valid and invalid logical to physical register assignments indicated by bits of a valid vector together with a logical register list |
US20050027968A1 (en) * | 2003-07-31 | 2005-02-03 | Rupley Jeffrey P. | Renaming for register with multiple bit fields |
CN101211257A (zh) * | 2006-12-30 | 2008-07-02 | 中国科学院计算技术研究所 | 基于局部相联查找的解决访存相关的方法和处理器 |
CN103116485A (zh) * | 2013-01-30 | 2013-05-22 | 西安电子科技大学 | 一种基于超长指令字专用指令集处理器的汇编器设计方法 |
US20130179665A1 (en) * | 2012-01-06 | 2013-07-11 | Imagination Technologies, Ltd. | Restoring a register renaming map |
CN103577159A (zh) * | 2012-08-07 | 2014-02-12 | 想象力科技有限公司 | 使用依赖性消除的多阶段寄存器重命名 |
CN104035749A (zh) * | 2014-05-26 | 2014-09-10 | 浙江大学 | 一种加快芯片流水线处理的方法 |
-
2015
- 2015-10-29 CN CN201510724055.1A patent/CN105242905B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5996068A (en) * | 1997-03-26 | 1999-11-30 | Lucent Technologies Inc. | Method and apparatus for renaming registers corresponding to multiple thread identifications |
US20020069346A1 (en) * | 1998-08-24 | 2002-06-06 | James Arthur Farrell | Method for mapping instructions using a set of valid and invalid logical to physical register assignments indicated by bits of a valid vector together with a logical register list |
US20050027968A1 (en) * | 2003-07-31 | 2005-02-03 | Rupley Jeffrey P. | Renaming for register with multiple bit fields |
CN101211257A (zh) * | 2006-12-30 | 2008-07-02 | 中国科学院计算技术研究所 | 基于局部相联查找的解决访存相关的方法和处理器 |
US20130179665A1 (en) * | 2012-01-06 | 2013-07-11 | Imagination Technologies, Ltd. | Restoring a register renaming map |
CN103577159A (zh) * | 2012-08-07 | 2014-02-12 | 想象力科技有限公司 | 使用依赖性消除的多阶段寄存器重命名 |
CN103116485A (zh) * | 2013-01-30 | 2013-05-22 | 西安电子科技大学 | 一种基于超长指令字专用指令集处理器的汇编器设计方法 |
CN104035749A (zh) * | 2014-05-26 | 2014-09-10 | 浙江大学 | 一种加快芯片流水线处理的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614736A (zh) * | 2018-04-13 | 2018-10-02 | 杭州中天微系统有限公司 | 实现资源索引替换的装置及处理器 |
US11340905B2 (en) | 2018-04-13 | 2022-05-24 | C-Sky Microsystems Co., Ltd. | Device and processor for implementing resource index replacement |
US11734014B2 (en) | 2018-04-13 | 2023-08-22 | C-Sky Microsystems Co., Ltd. | Device and processor for implementing resource index replacement |
Also Published As
Publication number | Publication date |
---|---|
CN105242905B (zh) | 2018-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7533294B2 (en) | Functional coverage driven test generation for validation of pipelined processors | |
US9262161B2 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
Skakkebæk et al. | Formal verification of out-of-order execution using incremental flushing | |
CN108139910B (zh) | 处理用于向量算术指令的例外状况 | |
EP0789298A1 (en) | Method and system for processing speculative operations | |
CN106021040B (zh) | 一种基于线形汇编指令差异性变换的dsp软错误检测方法 | |
US20100180263A1 (en) | Apparatus and method for detecting software error | |
US8612944B2 (en) | Code evaluation for in-order processing | |
WO2008043005A1 (en) | Model checking parameterized threads for safety | |
US7404065B2 (en) | Flow optimization and prediction for VSSE memory operations | |
Hosabettu et al. | Verifying advanced microarchitectures that support speculation and exceptions | |
CN105242905A (zh) | 数据假相关的处理方法和装置 | |
Jones et al. | Formal verification of out-of-order execution with incremental flushing | |
CN116501385B (zh) | 指令处理方法、处理器、芯片及计算机设备 | |
EP4339781A1 (en) | Processor and method of detecting soft error from processor | |
CN114153750B (zh) | 代码检查方法及装置、代码编写方法、电子设备 | |
US20050144423A1 (en) | Methods and apparatus for address generation in processors | |
Gharehbaghi et al. | Error model free automatic design error correction of complex processors using formal methods | |
CN103970510A (zh) | 用于对流水线中的块进行调度的编译方法和设备 | |
Shah et al. | SPSIM: SuperScalar Processor SIMulater CS305 Project Report | |
JP2007515718A (ja) | 実行フローシノニムのための方法及び装置 | |
CN102707930B (zh) | 寄存器换名系统及方法 | |
CN113703842A (zh) | 一种基于分支预测的值预测方法、装置及介质 | |
Gao et al. | Formal verification of out-of-order processor | |
JP6245820B2 (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 |