一种casp指令的执行方法、微处理器及计算机设备

文档序号:1755130 发布日期:2019-11-29 浏览:18次 >En<

阅读说明:本技术 一种casp指令的执行方法、微处理器及计算机设备 (CASP instruction execution method, microprocessor and computer equipment ) 是由 郑重 孙彩霞 王永文 黄立波 隋兵才 倪晓强 王俊辉 雷国庆 郭维 郭辉 于 2019-08-28 设计创作,主要内容包括:本发明公开了一种CASP指令的执行方法、微处理器及计算机设备,本发明从指令缓冲取出CASP指令;将CASP拆分成两个微操作,每个微操作带有一个目的操作数,第一个微操作带有三个源操作数,第二个微操作带有两个源操作数;以微操作为单位进行译码、操作数重命名、分派和执行。第一个微操作执行将携带操作数和存储区域值比较,如果不等,则CASP指令执行结束,写回结果;否则再执行第二个微操作,获取数据的写权限,比较并写存储区域,写回结果。本发明能减少指令执行通路的源寄存器和目的寄存器通道个数,减少CASP指令执行通路数据存储宽度,并加速该指令的执行。(The invention discloses a method for executing a CASP instruction, a microprocessor and computer equipment, wherein the CASP instruction is fetched from an instruction buffer; splitting the CASP into two micro-operations, each micro-operation having a destination operand, a first micro-operation having three source operands, and a second micro-operation having two source operands; decode, operand rename, dispatch and execute in micro-operations. The first micro-operation execution compares the carried operand with the storage area value, if the operand is not equal to the storage area value, the CASP instruction execution is ended, and the result is written back; otherwise, executing the second micro-operation to obtain the write authority of the data, comparing and writing the storage area, and writing back the result. The invention can reduce the number of the source register and the destination register channels of the instruction execution path, reduce the data storage width of the CASP instruction execution path, and accelerate the execution of the instruction.)

一种CASP指令的执行方法、微处理器及计算机设备

技术领域

本发明涉及微处理器设计技术领域,具体涉及一种CASP指令(比较-修改一对数原子指令)的执行方法、微处理器及计算机设备。

背景技术

在精简指令集计算机的指令集中,绝大部分指令为3个寄存器(两个源寄存器一个目的寄存器,或者三个源寄存器)。但是有些体系结构的指令集提供了比较-交换一对数的原子指令(CASP指令),该指令用助记符CASP Rs1, Rs2, Rt1, Rt2, Rn, #offset 表示。该指令有5个源操作数和2个目的寄存器。该指令的功能是将Rs1和Rs2寄存器值拼成比较值,Rt1和Rt2寄存器值拼成新值,从地址[Rn+offset]处读取两个寄存器宽度的值作为返回值,如果比较值和返回值相同,则将新值存入[Rn+offset]处,否则不进行数据储存操作,最后,将返回值写入Rs1和Rs2寄存器。该指令可以实现两倍于寄存器宽度数据的原子操作,可以方便对某些引用对超过寄存器宽度共享数据的互斥访问。

如图1所示,由于通常的指令都只有3个源操作数,1个目的操作数,所以实现CASP指令会有以下问题:1)指令传播通路必须扩宽,以便容纳5个源操作数和2个目的操作数;2)数据存储宽度必须扩宽,因为CASP指令需要携带4个寄存器宽度的数据。

申请号为201810718968.6的中国专利文献提供了一对数装载指令的实现方法,可以解决2个目的操作数的存放问题。但是CASP指令还有5个源操作数需要解决,5个操作数据无法在派发后合并。另外原子指令的执行要求获得数据的写权限才能进行操作,CASP 回写Rs1和Rs2寄存器的时机也会较长,影响程序性能。

发明内容

本发明要解决的技术问题:针对现有技术的上述问题,提供一种CASP指令的执行方法、微处理器及计算机设备,本发明能减少指令执行通路的源寄存器和目的寄存器通道个数,减少CASP指令执行通路数据存储宽度,并加速该指令的执行。

为了解决上述技术问题,本发明采用的技术方案为:

一种CASP指令的执行方法,实施步骤包括:

1)取出CASP指令,CASP指令的指令格式为:CASP Rs1, Rs2, Rt1, Rt2, Rn, #offset;其中,Rs1, Rs2, Rt1, Rt2, Rn为5个源操作数且Rs1, Rs2兼作目的操作数,#offset为地址偏移量;

2)将CASP指令拆分为顺序执行的微操作CASP0和微操作CASP1;

3)以微操作为单位进行译码、操作数重命名、分派和执行;

4)执行第一个微操作CASP0将Rs1和Rs2寄存器值拼成比较值,并从地址[Rn+offset]处读取两个寄存器宽度的值作为返回值;

5)将比较值、返回值进行比较,如果比较值和返回值不相等则跳转执行步骤8);否则跳转执行步骤6);

6)执行第二个微操作CASP1将Rt1和Rt2寄存器值拼成新值;

7)将新值作为CASP指令的最终返回值写入地址[Rn+offset]处;

8)将地址[Rn+offset]处的数据写回结果总线。

可选地,步骤2)中将CASP指令拆分为顺序执行的微操作CASP0和微操作CASP1时,拆分得到的微操作CASP0的指令格式为:

CASP0 Rs1, Rs1, RS2, Rn #offset;

微操作CASP1的指令格式为:

CASP1 Rs2, Rt1, Rt2;

其中,Rs1, Rs2, Rt1, Rt2, Rn为5个源操作数,且Rs1, Rs2兼作目的操作数,#offset为地址偏移量。

可选地,步骤3)的详细步骤包括:

3.1)以微操作为单位解析操作数信息:对第一个微操作CASP0,译码解析出该微操作带有三个源寄存器Rs1、RS2、Rn,并有一个目的寄存器Rs1;对第二个微操作CASP1,译码解析出该微操作带有两个源寄存器Rt1和Rt2,并有一个目的寄存器Rs2;

3.2)读取映射表,为目的寄存器分配新的重命名项,使得第二个微操作CASP1的源寄存器不依赖于第一个微操作CASP0的目的寄存器,完成以微操作为单位进行寄存器重命名;

3.3)按顺序将微操作CASP0和微操作CASP1分派到执行部件;

3.4)按顺序将微操作CASP0和微操作CASP1进行发射。

可选地,步骤4)中执行微操作CASP0时,源寄存器Rs1、Rs2、Rn的值源自寄存器的读或来自处理器核结果总线的旁路。

可选地,步骤6)中执行微操作CASP1时,源寄存器Rt1和Rt2的值源自寄存器的读或来自处理器核结果总线的旁路。

可选地,步骤7)的详细步骤包括:

7.1)判断当前地址[Rn+offset]对应的目标存储区域的数据的状态,是否处于可写状态;如果该数据区域处于可写状态,则跳转执行7.4);否则,跳转执行下一步;

7.2)获取当前地址[Rn+offset]对应的目标存储区域的数据的写权限,如果获取成功,则跳转执行下一步;否则,跳转执行步骤7.2);

7.3)将当前地址[Rn+offset]对应的目标存储区域的当前数据、执行微操作CASP0得到的比较值进行比较,如果两者相等,则跳转执行 步骤7.4);否则,跳转执行步骤8);

7.4)将目标存储区域的数据改写为执行微操作CASP1得到的新值。

可选地,步骤7.2)中获取当前地址[Rn+offset]对应的目标存储区域的数据的写权限具体是指向下一级存储发送相应的存储一致性请求,等待下一级存储返回该数据的写权限。

可选地,步骤8)中将地址[Rn+offset]处的数据写回结果总线具体是指针对存在多条写寄存器的通路的处理器将地址[Rn+offset]处的数据通过两条写寄存器的通路一次写出两个目的寄存器Rs1, Rs2或者针对不存在多条写寄存器的通路的处理器将地址[Rn+offset]处的数据分两个周期分别写出两个目的寄存器Rs1, Rs2。

本发明还提供一种微处理器,该微处理器被编程以执行本发明前述CASP指令的执行方法的步骤。

本发明还提供一种计算机设备,该计算机设备的微处理器被编程以执行本发明前述CASP指令的执行方法的步骤。

和现有技术相比,本发明具有下述优点:

1、本发明能减少源寄存器和目的寄存器通道个数。CASP指令具有5个源操作数,2个目的操作数。本发明将该CASP指令的执行通路减少为普通的3个源操作数,1个目的操作数。CASP指令在被取出来后,首先被拆分成两个微操作,每个微操作具有一个目的寄存器,之后在译码、重命名、分派时都是以微操作为粒度进行,因此整个通路上都只需要设置三个源寄存器一个目寄存器通道。

2. 减少存储数据宽度。在指令执行路径中,CASP指令存储数据需要4个寄存器宽度的存储空间,而在整个指令执行的通路上,拆分后的微操作只需2个寄存器宽度的数据存储空间。在数据存储方面减少了50%的指令执行通路的存储空间。

3. 加快CASP指令的执行。CASP指令在第一个微操作指令时,如果数据已经在处理器核中了,那么就不必再去获取该数据的可写状态。如果判断结果不等,那么就可以直接将数据写回到寄存器中,整个CASP指令执行结束了。节省了获取数据写状态的时间,而获取数据写状态一般需要访问下一级存储,需要耗费较长时间。

附图说明

图1为CASP指令和普通指令寄存器数目示意图。

图2为本发明实施例的基本实施流程示意图。

具体实施方式

如图2所示,本实施例CASP指令的执行方法实施步骤包括:

1)取出CASP指令,CASP指令的指令格式为:CASP Rs1, Rs2, Rt1, Rt2, Rn, #offset;其中,Rs1, Rs2, Rt1, Rt2, Rn为5个源操作数且Rs1, Rs2兼作目的操作数,#offset为地址偏移量;

2)将CASP指令拆分为顺序执行的微操作CASP0和微操作CASP1;

3)以微操作为单位进行译码、操作数重命名、分派和执行;

4)执行第一个微操作CASP0将Rs1和Rs2寄存器值拼成比较值,并从地址[Rn+offset]处读取两个寄存器宽度的值作为返回值;

5)将比较值、返回值进行比较,如果比较值和返回值不相等则跳转执行步骤8);否则跳转执行步骤6);

6)执行第二个微操作CASP1将Rt1和Rt2寄存器值拼成新值;

7)将新值作为CASP指令的最终返回值写入地址[Rn+offset]处;

8)将地址[Rn+offset]处的数据写回结果总线。

本实施例中,步骤1)取出CASP指令具体是指从指令Cache中取出CASP指令。

本实施例中,步骤2)中将CASP指令拆分为顺序执行的微操作CASP0和微操作CASP1时,拆分得到的微操作CASP0的指令格式为:

CASP0 Rs1, Rs1, RS2, Rn #offset;

微操作CASP1的指令格式为:

CASP1 Rs2, Rt1, Rt2;

其中,Rs1, Rs2, Rt1, Rt2, Rn为5个源操作数,且Rs1, Rs2兼作目的操作数,#offset为地址偏移量。

通过将CASP指令拆分成两个微操作,每个微操作带有一个目的寄存器。LDP指令被拆分之后,以微操作为单位进行译码,每个微操作的目的寄存器数目不超过1,因此只需要设置一个目的寄存器通道。拆分后,微操作CASP0 指令携带Rs1,Rs2, Rn三个操作数,以及目的操作数Rs1。微操作CASP0携带了CASP指令需要比较的值。微操作CASP1 指令携带Rt1,Rt2 操作数,以及目的操作数Rs2。也就是说微操作CASP1携带了需要存储的值。

如图2所示,步骤3)的详细步骤包括:

3.1)以微操作为单位解析操作数信息:对第一个微操作CASP0,译码解析出该微操作带有三个源寄存器Rs1、RS2、Rn,并有一个目的寄存器Rs1;对第二个微操作CASP1,译码解析出该微操作带有两个源寄存器Rt1和Rt2,并有一个目的寄存器Rs2;

3.2)读取映射表,为目的寄存器分配新的重命名项,使得第二个微操作CASP1的源寄存器不依赖于第一个微操作CASP0的目的寄存器,完成以微操作为单位进行寄存器重命名;

3.3)按顺序将微操作CASP0和微操作CASP1分派到执行部件;即使在乱序发射的处理器中,指令的分派也是顺序的,所以这里和通用的处理器实现一致;

3.4)按顺序将微操作CASP0和微操作CASP1进行发射。

微操作CASP0和微操作CASP1需要按顺序执行,微操作CASP0在前、微操作CASP1在后。这里需要按顺序发射的原因有两点:(I)原子指令带有写的属性,一般处理器实现中都是按顺序指令,并在指令提交后才能进行存储的操作;(II)由于微操作CASP0带有需要比较的数据,CASP1微操作带有需要存储的数据,而CASP指令需要先比较数据,然后再决定是否对存储区域进行写操作,因此CASP1先于CASP0执行也是没有意义的。

第一个微操作CASP0执行时,读取CASP0所带源操作数,也就是Rs1和Rs2寄存器中的值,拼接成两倍于该寄存器宽度的比较值。并读入Rn寄存器的值,计算出需要操作的存储区域的地址。本实施例中,步骤4)中执行微操作CASP0时,源寄存器Rs1、Rs2、Rn的值源自寄存器的读或来自处理器核结果总线的旁路。

第二个微操作CASP1执行时,将Rt1和Rt2寄存器值拼成新值。并读入Rn寄存器的值,计算出需要操作的存储区域的地址。本实施例中,步骤6)中执行微操作CASP1时,源寄存器Rt1和Rt2的值源自寄存器的读或来自处理器核结果总线的旁路。

如图2所示,步骤7)的详细步骤包括:

7.1)判断当前地址[Rn+offset]对应的目标存储区域的数据的状态,是否处于可写状态;如果该数据区域处于可写状态,则跳转执行7.4);否则,跳转执行下一步;

7.2)获取当前地址[Rn+offset]对应的目标存储区域的数据的写权限,如果获取成功,则跳转执行下一步;否则,跳转执行步骤7.2);

7.3)将当前地址[Rn+offset]对应的目标存储区域的当前数据、执行微操作CASP0得到的比较值进行比较,如果两者相等,则跳转执行 步骤7.4);否则,跳转执行步骤8);

7.4)将目标存储区域的数据改写为执行微操作CASP1得到的新值。

7. 根据权利要求6所述的CASP指令的执行方法,其特征在于,步骤7.2)中获取当前地址[Rn+offset]对应的目标存储区域的数据的写权限具体是指向下一级存储发送相应的存储一致性请求,等待下一级存储返回该数据的写权限。

本实施例中,步骤8)中将地址[Rn+offset]处的数据写回结果总线具体是指针对存在多条写寄存器的通路的处理器将地址[Rn+offset]处的数据通过两条写寄存器的通路一次写出两个目的寄存器Rs1, Rs2或者针对不存在多条写寄存器的通路的处理器将地址[Rn+offset]处的数据分两个周期分别写出两个目的寄存器Rs1, Rs2。

此外,本实施例还提供一种微处理器,该微处理器被编程以执行本实施例前述CASP指令的执行方法的步骤,该微处理器通过支持带有CASP指令的指令集,从而可以被编程以执行本实施例前述CASP指令的执行方法的步骤。本实施例还提供一种计算机设备,该计算机设备的微处理器被编程以执行本实施例前述CASP指令的执行方法的步骤,该计算机设备可以为大型计算机、小型计算机、个人电脑、工业计算机、移动计算设备等。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于图形处理的间接命令缓冲区

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!