常量获取方法、装置、处理器及计算机可读存储介质与流程

文档序号:11230123阅读:371来源:国知局
常量获取方法、装置、处理器及计算机可读存储介质与流程

本发明涉及计算机技术,尤其涉及一种常量获取方法、装置、处理器及计算机可读存储介质。



背景技术:

常量是程序在cpu中运行时,不会被修改的量。定点零常量和浮点零常量是现代编程语言cpu程序编写和运行时经常用到的变量。

现有技术中,为了得到程序运行时所需要的浮点零常量,在一些cpu的体系结构中,在cpu中专门设置用于存储浮点零常量的专用寄存器。程序在cpu中运行时,若需要使用浮点零常量,则访问该专用寄存器以得到其中存储的浮点零常量。

采用现有技术,由于需要设置cpu中的某个寄存器用以专门存储浮点常量,浪费了有限的寄存器资源。



技术实现要素:

本发明提供一种常量获取方法、装置、处理器及计算机可读存储介质,节省了寄存器资源。

本发明提供一种常量获取方法,包括:

取出常量获取指令,所述常量获取指令包括:异或指令编码、目的操作数、第一源操作数和第二源操作数;

解码所述常量获取指令;

执行所述常量获取指令,所述常量获取指令使所述第一源操作数指定的寄存器的数值异或所述第二源操作数指定的寄存器的数值得到常量,并将所述常量存储至所述目的操作数指定的寄存器中。

在本发明一实施例中,所述常量为零常量;

所述第一源操作数指定的寄存器和所述第二源操作数指定的寄存器为同一寄存器。

在本发明一实施例中,所述常量为零常量;

所述执行所述常量获取指令中,所述第一源操作数指定的寄存器的数值异或所述第二源操作数指定的寄存器的数值得到常量,并将所述常量存储至所述目的操作数指定的寄存器中之前,还包括:

将所述第一源操作数指定的寄存器的数值复制到所述第二源操作数指定的寄存器中。

在本发明一实施例中,所述执行所述常量获取指令中,所述第一源操作数指定的寄存器的数值异或所述第二源操作数指定的寄存器的数值得到常量,并将所述常量存储至所述目的操作数指定的寄存器中之前,还包括:

为所述第一源操作数指定的寄存器赋值。

在本发明一实施例中,所述目的操作数指定的寄存器、所述第一源操作数指定的寄存器和所述第二源操作数指定的寄存器均为浮点寄存器;或者,

所述目的操作数指定的寄存器、所述第一源操作数指定的寄存器和所述第二源操作数指定的寄存器均为定点寄存器。

在本发明一实施例中,所述浮点寄存器为单精度浮点寄存器或双精度浮点寄存器。

本发明提供一种常量获取装置,包括:

处理指令模块,所述处理指令模块用于取出并解码常量获取指令,所述常量获取指令包括:异或指令编码、目的操作数、第一源操作数和第二源操作数;

执行指令模块,所述执行指令模块用于执行所述常量获取指令,所述常量获取指令使所述第一源操作数指定的寄存器的数值异或所述第二源操作数指定的寄存器的数值得到常量,并将所述常量存储至所述目的操作数指定的寄存器中。

在本发明一实施例中,所述常量为零常量;

所述第一源操作数指定的寄存器和所述第二源操作数指定的寄存器为同一寄存器。

在本发明一实施例中,所述常量为零常量;

所述常量获取指令还将所述第一源操作数指定的寄存器的数值复制到所述第二源操作数指定的寄存器中。

在本发明一实施例中,所述常量获取指令还为所述第一源操作数指定的寄存器赋值。

在本发明一实施例中,所述目的操作数指定的寄存器、所述第一源操作数指定的寄存器和所述第二源操作数指定的寄存器均为浮点寄存器;或者,

所述目的操作数指定的寄存器、所述第一源操作数指定的寄存器和所述第二源操作数指定的寄存器均为定点寄存器。

在本发明一实施例中,所述浮点寄存器为单精度浮点寄存器或双精度浮点寄存器。

本发明提供一种处理器包括上述各实施例中任一项所述的常量获取装置。

本发明提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现以下步骤:

使第一源操作数指定的寄存器的数值异或第二源操作数指定的寄存器的数值得到常量;

将所述常量存储至目的操作数指定的寄存器中。

本发明提供一种常量获取方法、装置、处理器及计算机可读存储介质,其中该方法包括:取出常量获取指令,常量获取指令包括:异或指令编码、目的操作数、第一源操作数和第二源操作数;解码常量获取指令;执行常量获取指令,常量获取指令使第一源操作数指定的寄存器的数值异或第二源操作数指定的寄存器的数值得到常量,并将常量存储至目的操作数指定的寄存器中。本发明提供的常量获取方法、装置、处理器及计算机可读存储介质节省了寄存器资源。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明常量获取方法实施例的流程示意图;

图2为本发明常量获取装置实施例的结构示意图;

图3为本发明处理器实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图1为本发明常量获取方法实施例的流程示意图。本实施例常量获取方法的执行主体是中央处理器(centralprocessingunit,简称:cpu)如图1所示,本实施例常量获取方法包括:

s101:取出常量获取指令,常量获取指令包括:异或指令编码、目的操作数、第一源操作数和第二源操作数。

具体地,存储常量获取指令的计算机可读存储介质中取出常量获取指令。常量获取指令可通过编译器自动生成,或者由软件开发者手动编写。常量获取指令包括:异或指令编码、目的操作数、第一源操作数和第二源操作数。具体地,目的操作数指定目的寄存器,用于保持cpu进行异或计算后的计算结果;第一源操作数指定第一源寄存器,第二源操作数指定第二源寄存器,异或指令编码为cpu指令编码,用于指示cpu进行将第一源操作数指定的第一源寄存器中的数值与第二源操作数指定的第二源寄存器中的数值执行异或计算。

其中,可选地,第一源寄存器和第二源寄存器为目前处于空闲状态的寄存器。目前处于空闲状态的寄存器可以是指未参与cpu当前运算的寄存器,也可以是指参与过cpu之前的运算并且其中存储有数值,但是其中数值在之后的程序执行过程中cpu不再使用的寄存器。

特别地,第一源寄存器与第二源寄存器为浮点寄存器,则异或结果为浮点常量。或者,第一源寄存器与第二源寄存器为定点寄存器,则异或结果为定点零常量。

特别地,第一源寄存器中的数值与第二源寄存器中的数值相同,则异或结果为零常量。或者,第一源寄存器中的数值与第二源寄存器中的数值不同,则异或结果为常量1。

s102:解码常量获取指令。

具体地,cpu将从s101中获取的常量获取指令进行解码处理。其中可选地,该步骤由处理器中包括的硬件解码单元执行,常量获取指令被提供给该解码单元。解码单元可以用一个或多个解码器来实现,并且每个解码器可被实现为可编程逻辑阵列。

s103:执行常量获取指令,常量获取指令使第一源操作数指定的寄存器的数值异或第二源操作数指定的寄存器的数值得到常量,并将常量存储至目的操作数指定的寄存器中。

具体地,执行s102中解码得到的cpu可执行的常量获取指令。执行常量获取指令达到了如下效果:将第一源操作数指定的寄存器即第一源寄存器的数值异或第二源操作数指定的寄存器即第二源寄存器的数值得到常量,并将该常量存储至目的操作数指定的寄存器即目的寄存器中。

可选地,目的寄存器为目前处于空闲状态的寄存器。目前处于空闲状态的寄存器可以是指未参与cpu当前运算的寄存器,也可以是指参与过cpu之前的运算并且其中存储有数值,但是其中数值在之后的程序执行过程中cpu不再使用的寄存器。以防止cpu执行常量获取指令将常量存储至目的寄存器后,cpu后续的计算在该常量被使用前将该常量覆盖。

经过s103,cpu中正在执行的程序可以从目的寄存器中获取常量。可选地,cpu从目的寄存器中获取常量后,目的寄存器可将常量删除,或者目的寄存器可以用于参与cpu其他的运算而将该常量覆盖,从而不用长时间保存该常量获取指令得到的常量。

本实施例提供的常量获取方法,当cpu正在执行的程序中执行到常量获取指令处或当cpu需要执行常量获取指令时,通过取出、解码并执行该常量获取指令,从而将第一源操作数指定的第一源寄存器中的数值与第二源操作数指定的第二源寄存器中的数值执行异或计算得到常量。

本实施例提供的常量获取方法,因不需要专门设置cpu中的某个寄存器存储常量,从而节省了cpu的寄存器资源。

同时,由于现代处理器结构中以协处理器的形式存在,同时包括定点存储器存取定点常量和浮点存储器存储浮点常量。本实施例常量获取方法与通过从定点存储器读取常量写入浮点存储器的方式相比,不存在定点存储器读取常量写入浮点存储器较大的延迟,提高了cpu处理执行效率。

具体地,常量获取指令一种可能的实现方式为:“xordest,src0,src1”。其中,xor表示异或,dest是目标操作数即上述实施例中的目的操作数,src0是源操作数即上述实施例中的第一源操作数,src1是源操作数即上述实施例中的第二源操作数。该指令具体实现功能为:首先读取第一源操作数src0指定的第一源寄存器的数值f0,同时或随后读取src1指定的第二源寄存器的数值f1,将两次读入的数值f0和f1通过异或运算得到常量,并将常量写入目标操作数dest指定的目的寄存器中,之后目标操作数dest指定的目的寄存器的值就是该常量。

需要说明的是,上述指令格式仅做示例性说明,不同编码类型(定长编码或不定长编码)和编码宽度(8位、16位或32位)的指令实现本实施例的功能同样属于本实施例的范畴。

可选地,在上述实施例中,常量为零常量,第一源操作数指定的寄存器和第二源操作数指定的寄存器为同一寄存器,根据异或计算规则,同一数值异或结果为0,在本实施例中结果0即为得到的零常量。则在cpu得到零常量时,只需要利用一个寄存器,并且该第一源操作数指定的寄存器和第二源操作数指定的寄存器能够在得到零常量后释放零常量执行其他计算,而不用长时间保存零常量,进一步节省了cpu执行程序时的寄存器资源。

可选地,在上述实施例中,常量为零常量。执行常量获取指令中,第一源操作数指定的寄存器的数值异或第二源操作数指定的寄存器的数值得到常量,并将常量存储至目的操作数指定的寄存器中之前,还包括:将第一源操作数指定的寄存器的数值复制到第二源操作数指定的寄存器中。具体地,将第一源操作数指定的寄存器的数值复制到第二源操作数指定的寄存器可以保证第一源操作数指定的寄存器的数值与第二源操作数指定的寄存器相同,根据异或计算规则,同一数值异或结果为0,在本实施例中结果0即为得到的零常量。

可选地,在上述实施例中,执行常量获取指令中,第一源操作数指定的寄存器的数值异或第二源操作数指定的寄存器的数值得到常量,并将常量存储至目的操作数指定的寄存器中之前,还包括:为第一源操作数指定的寄存器赋值。具体地,cpu为第一源操作数指定的寄存器赋值,其中第一数值可以是任意随机数,以保证之后的异或运算无逻辑错误。

可选地,在上述实施例中,目的操作数指定的寄存器、第一源操作数指定的寄存器和第二源操作数指定的寄存器均为浮点寄存器;或者,

在上述实施例中,目的操作数指定的寄存器、第一源操作数指定的寄存器和第二源操作数指定的寄存器均为定点寄存器。

可选地,在上述实施例中浮点寄存器为单精度浮点寄存器或双精度浮点寄存器。

图2为本发明常量获取装置实施例的结构示意图。如图2所示,本实施例常量获取装置包括:处理指令模块201和执行指令模块202。处理指令模块201用于取出并解码常量获取指令,常量获取指令包括:异或指令编码、目的操作数、第一源操作数和第二源操作数。执行指令模块202用于执行常量获取指令,常量获取指令使第一源操作数指定的寄存器的数值异或第二源操作数指定的寄存器的数值得到常量,并将常量存储至目的操作数指定的寄存器中。

本实施例中的常量获取装置可用于执行图1实施例所示常量获取方法,其实现方式与原理相同,此处不再赘述。

可选地,在上述实施例中,常量为零常量,第一源操作数指定的寄存器和第二源操作数指定的寄存器为同一寄存器。

可选地,在上述实施例中,常量为零常量,常量获取指令还将第一源操作数指定的寄存器的数值复制到第二源操作数指定的寄存器中。

可选地,在上述实施例中,常量获取指令还为第一源操作数指定的寄存器赋值。

可选地,在上述实施例中,目的操作数指定的寄存器、第一源操作数指定的寄存器和第二源操作数指定的寄存器均为浮点寄存器;或者,

在上述实施例中,目的操作数指定的寄存器、第一源操作数指定的寄存器和第二源操作数指定的寄存器均为定点寄存器。

可选地,在上述实施例中,浮点寄存器为单精度浮点寄存器或双精度浮点寄存器。

上述各中的常量获取装置可用于执行前述实施例所示常量获取方法,其实现方式与原理相同,此处不再赘述。

本实施例提供的常量获取装置,当cpu正在执行的程序中执行到常量获取指令处或当cpu需要执行常量获取指令时,通过处理指令模块取出并解码该常量获取指令,通过执行指令模块执行该常量获取指令,从而将第一源操作数指定的第一源寄存器中的数值与第二源操作数指定的第二源寄存器中的数值执行异或计算得到常量。本实施例提供的常量获取方法,因不需要专门设置cpu中的某个寄存器存储常量,从而节省了cpu的寄存器资源。

图3为本发明处理器实施例的结构示意图。如图3所示,本实施例提供的处理器30包括上述各实施例中所示的常量获取装置301。

本实施例提供的处理器,当处理器正在执行的程序中执行到常量获取指令处或当处理器需要执行常量获取指令时,通过处理指令模块取出并解码该常量获取指令,通过执行指令模块执行该常量获取指令,从而将第一源操作数指定的第一源寄存器中的数值与第二源操作数指定的第二源寄存器中的数值执行异或计算得到常量。本实施例提供的常量获取方法,因不需要专门设置处理器中的某个寄存器存储常量,从而节省了处理器的寄存器资源。

本发明提供一种计算机可读存储介质,在本发明一种计算机可读存储介质的实施例中,该计算机可读存储介质上存储有计算机指令,该指令被处理器执行时实现以下步骤:

使第一源操作数指定的寄存器的数值异或第二源操作数指定的寄存器的数值得到常量;

将常量存储至目的操作数指定的寄存器中。

其中,常量获取指令可通过编译器自动生成,或者由软件开发者手动编写。常量获取指令包括:异或指令编码、目的操作数、第一源操作数和第二源操作数。具体地,目的操作数指定目的寄存器,用于保持cpu进行异或计算后的计算结果;第一源操作数指定第一源寄存器,第二源操作数指定第二源寄存器,异或指令编码为cpu指令编码,用于指示cpu进行将第一源操作数指定的第一源寄存器中的数值与第二源操作数指定的第二源寄存器中的数值执行异或计算。

其中,可选地,第一源寄存器和第二源寄存器为目前处于空闲状态的寄存器。目前处于空闲状态的寄存器可以是指未参与cpu当前运算的寄存器,也可以是指参与过cpu之前的运算并且其中存储有数值,但是其中数值在之后的程序执行过程中cpu不再使用的寄存器。

特别地,第一源寄存器与第二源寄存器为浮点寄存器,则异或结果为浮点常量。或者,第一源寄存器与第二源寄存器为定点寄存器,则异或结果为定点零常量。

特别地,第一源寄存器中的数值与第二源寄存器中的数值相同,则异或结果为零常量。或者,第一源寄存器中的数值与第二源寄存器中的数值不同,则异或结果为常量1。

计算机可读存储介质中存储的该常量获取指令可以达到如下效果:将第一源操作数指定的寄存器即第一源寄存器的数值异或第二源操作数指定的寄存器即第二源寄存器的数值得到常量,并将该常量存储至目的操作数指定的寄存器即目的寄存器中。

本实施例提供的计算机可读存储介质,计算机可读存储介质上存储有计算机指令,该指令被处理器执行时实现以下步骤:将第一源操作数指定的第一源寄存器中的数值与第二源操作数指定的第二源寄存器中的数值执行异或计算得到常量。本实施例提供的计算机可读存储介质上存储有计算机指令,该指令使得读取并执行该指令的计算机不需要专门设置处理器中的某个寄存器存储常量,从而节省了读取并执行该指令的计算机中处理器的寄存器资源。

可选地,在上述实施例中,常量为零常量;0第一源操作数指定的寄存器和第二源操作数指定的寄存器为同一寄存器。

可选地,在上述实施例中,常量为零常量;使第一源操作数指定的寄存器的数值异或第二源操作数指定的寄存器的数值得到常量之前,还包括:

将第一源操作数指定的寄存器的数值复制到第二源操作数指定的寄存器中。

可选地,在上述实施例中,使第一源操作数指定的寄存器的数值异或第二源操作数指定的寄存器的数值得到常量之前,还包括:

为第一源操作数指定的寄存器赋值。

可选地,在上述实施例中,目的操作数指定的寄存器、第一源操作数指定的寄存器和第二源操作数指定的寄存器均为浮点寄存器;或者,

目的操作数指定的寄存器、第一源操作数指定的寄存器和第二源操作数指定的寄存器均为定点寄存器。

进一步地,在上述实施例中,浮点寄存器为单精度浮点寄存器或双精度浮点寄存器。

上述各中的计算机可读存储介质中存储的常量获取指令与前述实施例所示常量获取方法中执行常量获取指令步骤,其实现方式和原理相同,此处不再赘述。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1