一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

指令处理方法、装置、设备及存储介质与流程

2022-02-22 23:59:28 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种指令处理方法、装置、设备及存储介质。


背景技术:

2.向量指令是计算机中用来完成向量操作的指令,现代计算机基于向量指令能够实现一些功能。向量指令的处理可以包括操作数之间的异或操作,两操作数之间的异或操作和多操作数之间的异或操作在向量计算机中的各种应用场景中均比较常见。
3.现有技术中,向量指令运算着重利用向量的并行性,通过将待处理的操作数填入向量寄存器的不同位置,然后在向量寄存器之间执行异或操作,从而基于向量指令完成了相应的运算任务。
4.然而,现有向量指令运算每次只能在两个向量寄存器之间执行异或操作,当利用的向量寄存器比较多时,存在无法有效利用向量寄存器空间,且运算效率低的问题。


技术实现要素:

5.本技术提供一种指令处理方法、装置、设备及存储介质,以克服现有异或运算操作过程中存在的无法有效利用向量寄存器空间,且运算效率低的问题。
6.第一方面,本技术实施例提供一种指令处理方法,包括:
7.获取待处理指令,所述待处理指令包括:操作码、至少一个源操作数寄存器的标识,所述操作码用于指示所述待处理指令的类型;
8.在确定所述待处理指令为异或运算指令时,从所述至少一个源操作数寄存器的操作数信息区,获取操作数信息;
9.根据所述操作数信息,从所述至少一个源操作数寄存器的操作数存储区,获取所述异或运算指令对应的多个源操作数;
10.对所述多个源操作数执行所述异或运算指令对应的异或运算操作,得到指令操作结果。
11.在第一方面的一种可能设计中,所述根据所述操作数信息,从所述至少一个源操作数寄存器的操作数存储区,获取所述异或运算指令对应的多个源操作数,包括:
12.根据所述操作数信息,确定所述异或运算指令对应的操作数类型和操作数个数,所述操作数类型用于表示异或操作的操作数位宽;
13.根据所述操作数类型和计算机中的操作单元位宽,确定每个操作数包括的操作单元数量;
14.根据每个操作数包括的操作单元数量,从所述至少一个源操作数寄存器的操作数存储区,依次获取所述操作数个数的多个源操作数。
15.可选的,在所述获取待处理指令之前,所述方法还包括:
16.获取计算机中的向量寄存器长度和所述操作单元位宽;
17.根据所述向量寄存器长度、所述操作单元位宽和所述操作数类型的长度,确定所述操作数信息区的最大长度;
18.根据所述操作数信息区的长度和所述向量寄存器长度,确定所述至少一个源操作数寄存器中的操作数存储区;
19.将获取到的向量源操作数依次存储至所述至少一个源操作数寄存器的操作数存储区。
20.可选的,所述根据所述向量寄存器长度、所述操作单元位宽和所述操作数类型的长度,确定所述操作数信息区的最大长度,包括:
21.根据所述向量寄存器长度和所述操作单元位宽,确定操作单元标识的宽度和操作单元个数;
22.根据所述操作单元标识的宽度和所述操作单元个数,确定所述操作单元标识占用的长度;
23.根据所述操作单元标识占用的长度和所述操作数类型的长度,确定所述操作数信息区的最大长度。
24.可选的,所述方法还包括:
25.获取向量计算机的位宽;
26.根据所述向量计算机的位宽和所述操作单元位宽,将所述至少一个源操作数寄存器中操作数存储区拆分成至少两个操作单元;
27.对所述至少两个操作单元依次进行编号,得到每个操作单元的标识。
28.在第一方面的另一种可能设计中,所述待处理指令还包括:目的操作数寄存器的标识;
29.相应的,所述方法还包括:
30.将所述指令操作结果存储至所述目的操作数寄存器中。
31.第二方面,本技术实施例提供一种指令处理装置,包括:
32.取指单元,用于获取待处理指令,所述待处理指令包括:操作码、至少一个源操作数寄存器的标识,所述操作码用于指示所述待处理指令的类型;
33.执行单元,用于在确定所述待处理指令为异或运算指令时,从所述至少一个源操作数寄存器的操作数信息区,获取操作数信息;
34.取数单元,用于根据所述操作数信息,从所述至少一个源操作数寄存器的操作数存储区,获取所述异或运算指令对应的多个源操作数;
35.运算单元,用于对所述多个源操作数执行所述异或运算指令对应的异或运算操作,得到指令操作结果。
36.在第二方面的一种可能设计中,所述取数单元,具体用于执行如下操作:
37.根据所述操作数信息,确定所述异或运算指令对应的操作数类型和操作数个数,所述操作数类型用于表示异或操作的操作数位宽;
38.根据所述操作数类型和计算机中的操作单元位宽,确定每个操作数包括的操作单元数量;
39.根据每个操作数包括的操作单元数量,从所述至少一个源操作数寄存器的操作数存储区,依次获取所述操作数个数的多个源操作数。
40.可选的,所述执行单元,还用于执行如下操作:
41.获取计算机中的向量寄存器长度和所述操作单元位宽;
42.根据所述向量寄存器长度、所述操作单元位宽和所述操作数类型的长度,确定所述操作数信息区的最大长度;
43.根据所述操作数信息区的长度和所述向量寄存器长度,确定所述至少一个源操作数寄存器中的操作数存储区;
44.将获取到的向量源操作数依次存储至所述至少一个源操作数寄存器的操作数存储区。
45.可选的,所述执行单元,用于根据所述向量寄存器长度、所述操作单元位宽和所述操作数类型的长度,确定所述操作数信息区的最大长度,具体为:
46.所述执行单元,具体用于:
47.根据所述向量寄存器长度和所述操作单元位宽,确定操作单元标识的宽度和操作单元个数;
48.根据所述操作单元标识的宽度和所述操作单元个数,确定所述操作单元标识占用的长度;
49.根据所述操作单元标识占用的长度和所述操作数类型的长度,确定所述操作数信息区的最大长度。
50.可选的,所述执行单元,还用于执行如下操作:
51.获取向量计算机的位宽;
52.根据所述向量计算机的位宽和所述操作单元位宽,将所述至少一个源操作数寄存器中操作数存储区拆分成至少两个操作单元;
53.对所述至少两个操作单元依次进行编号,得到每个操作单元的标识。
54.在第二方面的一种可能设计中,所述待处理指令还包括:目的操作数寄存器的标识;
55.相应的,所述运算单元,还用于将所述指令操作结果存储至所述目的操作数寄存器中。
56.第三方面,本技术实施例提供一种计算机设备,包括:存储器和处理器;
57.存储器,用于存储可在所述处理器上运行的计算机指令;
58.所述处理器,用于执行所述计算机指令以实现如上述第一方面所述的指令处理方法。
59.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第一方面所述的指令处理方法。
60.第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面所述的指令处理方法。
61.本技术实施例提供的指令处理方法、装置、设备及存储介质,通过获取待处理指令,待处理指令包括:操作码、至少一个源操作数寄存器的标识,该操作码用于指示待处理指令的类型,在确定待处理指令为异或运算指令时,从至少一个源操作数寄存器的操作数信息区,获取操作数信息,根据操作数信息,从至少一个源操作数寄存器的操作数存储区,
获取异或运算指令对应的多个源操作数,对多个源操作数执行异或运算指令对应的异或运算操作,得到指令操作结果。该技术方案能够有效利用向量寄存器存储空间,减少了多个操作数进行异或运算时在向量计算机中的执行时间,提高了异或运算效率。
附图说明
62.图1为本技术实施例提供的指令处理方法的应用场景示意图;
63.图2为本技术实施例提供的指令处理方法实施例一的流程示意图;
64.图3为操作数信息区的位置分布示意图;
65.图4为本技术实施例提供的指令处理方法中异或运算指令的处理过程示意图;
66.图5为本技术实施例提供的指令处理方法实施例二的流程示意图;
67.图6为本技术实施例提供的指令处理装置实施例的结构示意图;
68.图7为本技术实施例提供的计算机设备实施例的结构示意图。
具体实施方式
69.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
70.向量指令是计算机中用来完成向量操作的指令,指令是指示处理器执行某种操作的命令,通过处理各条指令可以实现预期的功能。异或运算是一种重要的数学操作,不只是两操作数的异或,多操作数的异或运算也在各种应用场景中发挥作用。例如:
71.a)多个操作数异或操作在分组加密算法中有相当广泛的应用,例如,高级加密标准(advanced encryption standard,aes)算法或者serpent算法中。在分组加密算法的各种实现方式中,如密文分组链接(cipher block chaining,cbc)模式、密文反馈(cipher feed back,cfb)模式、计算器模式(counter,ctr)中也有大量的多操作数异或操作。
72.b)多数硬件生成随机数的算法中也采用多个操作数的异或运算。
73.c)在磁盘管理程序中使用多操作数的异或操作进行奇偶校验,例如,在带奇偶验证码的并行传送(raid3)系统中使用异或操作判断磁盘中的值是否出错。
74.d)计算机科学中的一个重要数据结构:异或链表,使用两操作数的异或操作创建链表,使用三操作数的异或操作进行插入或删除操作。
75.e)在计算机图形学中,多操作的异或操作常被当作一种快速的渲染方法以代替alpha渲染。
76.基于背景技术中介绍可知,在向量计算机被广泛使用的今天,人们在充分利用向量操作的并行优势的同时,却忽视了向量寄存器带来的存储空间的拓展使得可变操作数的异或操作可以在只使用少量的向量寄存器的条件下完成,因而,在一些算法中,虽然程序行为具有明显的并行性,但其选择操作数的方式却不具有规律性,使用在向量指令执行异或运算时,无法有效利用向量寄存器的空间,存在运算效率低的问题。
77.示例性的,现有的向量指令着重利用向量的并行性,将很多个操作数填入向量寄存器的不同位置,对它们进行相同的操作。例如,下述操作数之间的运算:
[0078][0079]
为了有效利用向量的并行性,操作数之间的运算过程可以用以下的向量操作替代:
[0080][0081][0082]
经过上述替换操作,在一定程度上极大的减少了指令数量。然而,上述比特运算只能在向量寄存器之间进行,因而,基于向量并行性的运算操作无法有效利用向量寄存器的空间,例如,对于以下的操作:
[0083]
{
[0084]
ꢀꢀꢀꢀ
a1=b1^c1^d1^e1^f1^g1^h1
[0085]
}
[0086]
由此可知,这个操作本身没有并行性,故现有技术无法减少这个操作在向量计算机中的执行时间,无法快速得完成相应的运算任务,存在运算效率低的问题。
[0087]
针对上述技术问题,本技术技术方案的构思过程如下:处理器的发射单元向运算单元输入源操作数的同时,也向运算单元发送执行时选择操作数的控制信息(操作数信息),使得运算单元在接收到源操作数和控制信息后,依据控制信息选出多个用于执行异或运算的源操作数,进而完成执行处理过程,该技术方案能够有效利用向量寄存器存储空间,减少了多个操作数进行异或运算时在向量计算机中的执行时间,提高了异或运算效率。
[0088]
可以理解的是,本技术实施例的技术方案能够有效利用向量寄存器带来的存储空间,可以处理多个64比特、32比特或16比特的异或操作(例如,128位的向量寄存器:最多可以处理3个64比特数、7个32比特数或15个16比特数;256位的向量寄存器:最多可以处理7个64比特数、15个32比特数或31个16比特数;512位的向量寄存器:最多可以处理15个64比特数、31个32比特数或63个16比特数)。本技术实施例并不对使用的向量寄存器的大小进行限定,也不对处理的比特数位数进行限定,其可以根据实际需求确定,此处不作赘述。
[0089]
基于上述构思过程,本技术实施例提供了一种指令处理方法,通过获取待处理指
令,待处理指令包括:操作码、至少一个源操作数寄存器的标识,该操作码用于指示待处理指令的类型,在确定待处理指令为异或运算指令时,从至少一个源操作数寄存器的操作数信息区,获取操作数信息,根据操作数信息,从至少一个源操作数寄存器的操作数存储区,获取异或运算指令对应的多个源操作数,对多个源操作数执行异或运算指令对应的异或运算操作,得到指令操作结果。
[0090]
示例性的,图1为本技术实施例提供的指令处理方法的应用场景示意图。如图1所示,该应用场景中可以包括处理器和存储器。其中,当处理器为顺序执行的架构时,处理器可以包括:取指单元、解码单元、物理寄存器堆、执行单元(包括运算单元)和访存单元。该访存单元可以与存储器连接。
[0091]
具体的,处理器在正常执行待处理指令时,首先利用取指单元获取待处理指令,通过解码单元对待处理指令进行解码,进而利用执行单元执行该处理指令对应的操作。示例性的,利用执行单元中的运算单元参与运算,并利用物理寄存器堆保存参与运算的数据或保存处理器的状态,并通过访存单元与存储器之间实现访存操作。
[0092]
可以理解的是,当处理器为乱序执行的架构时,处理器还可以包括:重命名单元、发射单元、重排序队列等。也即,上述重命名单元、发射单元、重排序队列对于非乱序执行的处理器并不需要。
[0093]
其中,重命名单元是为了解决反向依赖的问题,乱序执行时要进行重命名处理。重命名处理将程序中记载的寄存器编号(称为“逻辑寄存器”)对应到物理寄存器编号上。各指令写入结果的逻辑寄存器一定要分配到空闲的物理寄存器上。发射单元可以在一个周期内将多条指令发射到执行单元。重排序队列用于将处理器要执行的指令进行顺序调整,以达到乱序执行的目的。访存单元可以将查找指令的结果写入相应的内存中。
[0094]
需要说明的是,附图1仅是本技术实施例提供的一种应用场景的示意图,本技术实施例不对图1中包括的各组件进行限定,也不对图1中各组件之间的位置关系进行限定,例如,该应用场景中还可以基于处理器能够实现的功能包括其他的组件,利用能够处理异常通路的栈维护模块,本技术实施例并不对其进行限定。
[0095]
下面,通过具体实施例对本技术的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
[0096]
图2为本技术实施例提供的指令处理方法实施例一的流程示意图。该方法以处理器作为执行主体进行解释说明。如图2所示,该指令处理方法可以包括如下步骤:
[0097]
s201、获取待处理指令,该待处理指令包括:操作码、至少一个源操作数寄存器的标识,该操作码用于指示待处理指令的类型。
[0098]
在本技术的实施例中,计算机中的待处理指令可以被事先存储在存储器中,这样处理器接收到用户的指令处理指示时,首先利用取指单元(即,程序计数器(program counter,pc))从存储器中取出待处理指令,然后利用解码单元对待处理指令进行解码处理,确定出待处理指令中包括的内容,例如,操作码和至少一个源操作数寄存器的标识。
[0099]
在实际应用中,处理器可能会执行不同类型的指令,例如,异或运算指令、比特运算指令等不同的逻辑操作。因而,通过在待处理指令中包括操作码,能够指示待处理指令的类型,以便处理器执行待处理指令时能够实现特定的功能。
[0100]
可选的,为了确定出需要操作的源操作数寄存器,待处理指令中还需要包括至少一个源操作数寄存器的标识,以便在执行待处理指令对应的操作之前,能够从上述的至少一个源操作数寄存器中取源操作数进行对应的运算。示例性的,源操作数寄存器的标识也可以称为源操作数寄存器号,其用于唯一的标识一个源操作数寄存器。
[0101]
s202、在确定待处理指令为异或运算指令时,从上述至少一个源操作数寄存器的操作数信息区,获取操作数信息。
[0102]
可选的,处理器根据解码待处理指令后得到操作码可以确定待处理指令的类型。在本步骤中,为了解决无法有效利用寄存器空间,向量计算机执行多操作数的异或运算时存在的运算效率低的问题,通过在每条待处理指令需要操作的至少一个源操作数寄存器中配置操作数信息区,在该操作数信息区中存储本次操作需要的操作数信息。
[0103]
示例性的,操作数信息区也可以称为控制信息域,是用于存储本次操作控制信息的位置,控制信息即本步骤中所述的操作数信息,该操作数信息可以包括:需要操作的操作数数量等。本技术实施例并不对操作数信息的具体内容进行限定,其可以根据实际需求确定,此处不作赘述。
[0104]
在本技术的实施例中,当本次操作使用的操作数较少时,例如,仅是一个源操作数寄存器中除去操作数信息区后的剩余空间中存储的源操作数,待处理指令中仅包括这一个源操作数寄存器。在实际应用中,每次操作的操作数通常存储在两个或更多的源操作数寄存器中,本技术实施例并不对其进行限定。
[0105]
可选的,在本技术的一种可能设计中,当参与本次异或运算指令的向量源操作数存储在两个源操作数寄存器中时,例如,向量源操作数的第一部分存储在第一源操作数寄存器中和向量源操作数的第二部分存储在第二源操作数寄存器,参照下述图3所示。图3为操作数信息区的位置分布示意图。如图3所示,处理器的取数方向(即取操作数的方向)是从源操作数寄存器的顶端开始。
[0106]
可选的,当参与本次异或运算操作的向量源操作数存储在一个源操作数寄存器中时,操作信息区则位于该源操作数寄存器的最尾端。当参与本次异或运算操作的向量源操作数存储在多个源操作数寄存器中时,操作信息区则位于多个源操作数寄存器中编号排在最后的一个源操作数寄存器的最尾端。
[0107]
示例性的,如图3所示,假设待处理指令中包括第一源操作数寄存器和第二源操作数寄存器,则操作数信息区可以位于第二个源操作数寄存器的最尾端。
[0108]
可选的,在本技术的实施例中,操作数信息区的大小不固定,其随着向量计算机中向量寄存器的长度、计算机中的操作单元位宽以及操作数类型的长度而改变。操作数信息区存储着操作数信息,例如,参与本次操作的操作数个数和操作数类型。
[0109]
s203、根据操作数信息,从上述至少一个源操作数寄存器的操作数存储区,获取异或运算指令对应的多个源操作数。
[0110]
在本步骤中,处理器执行异或运算指令之前,可以根据从操作数信息区获取到的操作数信息,确定出本次操作的操作数类型和操作数个数,进而从上述至少一个源操作数寄存器的操作数存储区,依据操作数类型和操作数个数,读取异或运算指令对应的多个源操作数。
[0111]
示例性的,在本技术的实施例中,该s203具体可以通过如下步骤实现:
[0112]
a1、根据操作数信息,确定异或运算指令对应的操作数类型和操作数个数,其中,该操作数类型用于表示异或操作的操作数位宽。
[0113]
可选的,在本技术的实施例中,源操作数寄存器的操作数存储区中以操作单元位宽作为基本长度进行数据存储,例如,操作单元位宽可以是8比特或16比特等,此处不作赘述。相应的,异或运算指令的操作数位宽可以是16比特,32比特、64比特等不同的操作数类型,因而,为了便于后续从至少一个源操作数寄存器中取操作数,处理器首先根据操作数信息区内存储的操作数信息,确定出该异或运算指令对应的操作数类型以及需要使用的操作数个数。
[0114]
a2、根据操作数类型和计算机中的操作单元位宽,确定每个操作数包括的操作单元数量。
[0115]
可选的,计算机中的操作单元位宽由指令编码决定,因而,在操作单元位宽确定时,可以基于操作数类型表示的异或操作的操作数位宽,确定出每个操作数包括的操作单元数量。
[0116]
示例性的,假设计算机中的操作单元位宽为16比特,则读取多个源操作数的方式与操作数类型有关:如果操作数类型为16比特的位宽,则每个操作数包括的操作单元数量为1,如果操作数类型为32比特的位宽,则每个操作数包括的操作单元数量为2,如果操作数类型为64比特的位宽,则每个操作数包括的操作单元数量为4。
[0117]
a3、根据每个操作数包括的操作单元数量,从至少一个源操作数寄存器的操作数存储区,依次获取操作数个数的多个源操作数。
[0118]
可选的,本技术实施例中读取多个源操作数的方式是按照操作数个数,从操作数存储区依次读取多个源操作数。
[0119]
示例性的,图4为本技术实施例提供的指令处理方法中异或运算指令的处理过程示意图。图4以图3所示的两个源操作数寄存器进行解释说明。如图4所示,第一源操作数寄存器中存储有向量源操作数的第一部分,第二操作数寄存器中存储有向量源操作数的第二部分,当以操作单元位宽作为基本长度时,例如,可以将向量源操作数的第一部分拆分成a个操作数,分别为o1、o2、o3、

、oa、,将向量源操作数的第二部分拆分成多个操作数,可选的,向量源操作数的第二部分拆分得到的多个源操作数可以从a 1进行编号,依次为o
a 1
、o
a 2
、o
a 3
等。其中,a为大于或等于1的整数。
[0120]
可以理解的是,本技术实施例并不限定向量源操作数的第二部分拆分得到的操作数个数,其可以根据向量源操作数的长度和操作单元位宽确定,此处不作赘述。
[0121]
参照图4所示,第二源操作数寄存器中具有操作数信息区,操作数信息区存储有操作数信息,例如,操作数类型以及操作数个数n,因而,在本技术的实施例中,执行单元中的运算单元根据操作数类型和操作单元位宽确定出每个操作数包括的操作单元数量后,可以依照顺序依次从上述至少一个源操作数寄存器中读取操作数个数对应的源操作数。
[0122]
例如,计算机中的操作单元位宽为16比特,如果操作数类型为16比特的位宽,操作数个数为n,则依次选择o1、o2、o3、

、on作为多个源操作数;如果操作数类型表示32比特的位宽,则根据操作数个数,选择{o1,o2}为第一个源操作数,{o3,o4}为第二个源操作数,依次类推,直到{o
2n-1
,o
2n
}为第n个源操作数;如果操作数类型表示64比特的位宽,则选择{o1,o2,o3,o4}为第一个源操作数,{o5,o6,o7,o8}为第二个源操作数,依次类推,直到{o
4n-3
,o
4n-2
,o4n-1
,o
4n
}为第n个源操作数。
[0123]
s204、对多个源操作数执行异或运算指令对应的异或运算操作,得到指令操作结果。
[0124]
可选的,参照图4所示,处理器中的运算单元依据操作数类型,选出n个源操作数,并进行n操作的异或运算操作,得到指令操作结果。
[0125]
进一步的,在本技术的实施例中,上述待处理指令还可以包括:目的操作数寄存器的标识。相应的,本技术实施例提供的指令处理方法还可以包括如下步骤:
[0126]
s205、将指令操作结果存储至目的操作数寄存器中。
[0127]
在本步骤中,待处理指令中既可以携带用于存储向量源操作数的至少一个源操作数寄存器的标识,也可以携带目的操作数寄存器的标识,这样处理器对获取到的多个源操作数进行异或运算操作得到指令操作结果后,便可以将其存储至该目的操作数寄存器的标识所对应的目的操作数寄存器中,以便后续的使用。
[0128]
本技术实施例提供的指令处理方法,通过获取待处理指令,待处理指令包括:操作码、至少一个源操作数寄存器的标识,该操作码用于指示待处理指令的类型,在确定待处理指令为异或运算指令时,从至少一个源操作数寄存器的操作数信息区,获取操作数信息,根据操作数信息,从至少一个源操作数寄存器的操作数存储区,获取异或运算指令对应的多个源操作数,对多个源操作数执行异或运算指令对应的异或运算操作,得到指令操作结果。该技术方案能够有效利用向量寄存器存储空间,减少了多个操作数进行异或运算时在向量计算机中的执行时间,提高了异或运算效率。
[0129]
可选的,在上述实施例的基础上,图5为本技术实施例提供的指令处理方法实施例二的流程示意图。如图5所示,在本技术的实施例中,在上述s201之前,该方法还可以包括如下步骤:
[0130]
s501、获取计算机中的向量寄存器长度和操作单元位宽。
[0131]
在实际应用中,计算机设备的处理器中通常设置有多组向量寄存器,每组向量寄存器均可以被配置为指令的源操作寄存器,即每组向量寄存器均可以用于存储处理器运行的指令。通常情况下,处理器中的向量寄存器长度是固定的,而且对于某个运算指令,操作单元位宽由指令编码决定,因而,在本步骤中,处理器在获取待处理指令之前,可以首先获取计算机中的向量寄存器长度和操作单元位宽,以便于计算用于存储操作数信息的操作数信息区的长度。
[0132]
s502、根据向量寄存器长度、操作单元位宽和操作数类型的长度,确定操作数信息区的最大长度。
[0133]
在本实施例中,操作数信息区的最大长度通常根据向量寄存器长度、操作单元位宽和操作数类型的长度确定,而操作数信息区的实际长度在实际应用过程中由操作数类型表示的异或操作的操作数位宽确定。
[0134]
示例性的,该步骤的具体实现可以包括如下步骤:
[0135]
b1、根据向量寄存器长度和操作单元位宽,确定操作单元标识的宽度和操作单元个数。
[0136]
可选的,在本技术的实施例中,操作单元标识的宽度可以通过(log2(向量寄存器长度/操作单元位宽) 1)求出,操作单元个数可以通过(向量寄存器长度/操作单元位宽)求
出。
[0137]
b2、根据操作单元标识的宽度和操作单元个数,确定操作单元标识占用的长度。
[0138]
在本步骤中,在已知操作单元标识的宽度和操作单元个数时,将两者相乘得到的结果为所有的操作单元标识占用的长度。也即,在实际应用中,当操作数位宽与操作单元位宽相同时,操作单元标识占用的长度为操作数个数占用的长度,当操作数位宽大于操作单元位宽时,操作单元标识占用的长度大于操作数个数占用的长度。
[0139]
例如,在操作单元位宽为16比特,且操作数位宽为16比特时,操作单元标识占用的长度为操作数个数占用的长度;在操作单元位宽为16比特,且操作数位宽为32比特或64比特时,操作单元标识占用的长度大于操作数个数占用的长度。
[0140]
b3、根据操作单元标识占用的长度和操作数类型的长度,确定操作数信息区的最大长度。
[0141]
示例性的,操作数信息区的实际长度由操作数个数占用的长度和操作数类型的长度确定,由于操作数个数占用的最大长度是操作单元标识占用的长度,所以,操作数信息区的最大长度为操作单元标识占用的长度和操作数类型的长度之和。
[0142]
在本技术实施例的另一种可能设计中,也可以预先配置操作数信息区的大小,例如,参照上述图3和图4所示,在第二个源操作数寄存器的取数方向的最尾端配置18比特宽度的操作数信息区,其中,操作数类型的长度占用2比特,其用于表示异或操作的操作数位宽是16比特、32比特,还是64比特。操作数信息区的其余16比特(在图4中以n表示)则用于记录本次异或操作要进行的异或运算的操作数个数。
[0143]
s503、根据操作数信息区的长度和向量寄存器长度,确定至少一个源操作数寄存器中的操作数存储区。
[0144]
在本步骤中,在确定出上述至少一个源操作数寄存器中的操作数信息区之后,便可以将操作数类型和操作数个数等信息存储在该操作数信息区的空间中,相应的,将上述至少一个源操作数寄存器中除去操作数信息区所占的存储空间,作为操作数存储区。示例性的,如图4所示,在源操作数寄存器的数量为两个时,操作数信息区位于第二源操作数寄存器中,则操作数存储区即为第一源操作数寄存器的存储空间和第二源操作数寄存器中除去操作数信息区之外的存储空间。
[0145]
s504、将获取到的向量源操作数依次存储至至少一个源操作数寄存器的操作数存储区。
[0146]
可选的,当确定出上述至少一个源操作数寄存器的操作数存储区后,为了后续能够从源操作数寄存器中获取参与异或运算的源操作数,首先需要将获取到的向量源操作数依次存储至上述至少一个源操作数寄存器中。示例性的,在源操作数寄存器的数量为两个时,首先将向量源操作数依次存储至第一源操作数寄存器中,然后再存储至第二源操作数寄存器的操作数存储区。
[0147]
进一步的,在本技术的实施例中,参照图5所示,该指令处理方法还可以包括如下步骤:
[0148]
s505、获取向量计算机的位宽。
[0149]
示例性的,向量计算机是一种配备了专门的向量指令,用于提高向量处理速度的计算机。向量计算机的位宽可以理解为由处理器指定的向量大小。
[0150]
s506、根据向量计算机的位宽和操作单元位宽,将至少一个源操作数寄存器中操作数存储区拆分成至少两个操作单元。
[0151]
可选的,操作单元位宽是由指令编码决定的,当获取到向量计算机的位宽和操作单元位宽后,可以利用向量计算机的位宽除以操作单元位宽计算出操作单元的个数,例如,对于位宽是256位的向量计算机,操作单元位宽为16比特,此时,不具有操作数信息区的源操作数寄存器可以被划分为256
÷
16=16个操作单元。同理,可以将上述至少一个源操作数寄存器中操作数存储区拆分成操作单元的形式。
[0152]
s507、对至少两个操作单元依次进行编号,得到每个操作单元的标识。
[0153]
在本技术的实施例中,由于操作数信息区中的操作数信息通常是以操作数个数存储的,但从源操作数寄存器中取源操作数的方式是基于操作数类型和每个操作数包括的操作单元数量确定,因而,在实际运算过程中,处理器将上述至少一个源操作数寄存器中的操作数存储区拆分成至少两个操作单元之后,还需要对其进行依次编号,并确定出每个操作单元的标识。
[0154]
本技术实施例提供的指令处理方法,通过获取计算机中的向量寄存器长度和操作单元位宽,根据向量寄存器长度、操作单元位宽和操作数类型的长度,确定操作数信息区的最大长度,根据操作数信息区的长度和向量寄存器长度,确定至少一个源操作数寄存器中的操作数存储区,将获取到的向量源操作数依次存储至上述至少一个源操作数寄存器的操作数存储区。该技术方案中,通过确定出至少一个源操作数寄存器的操作数信息区,并将获取到的向量源操作数存储至每个源操作数的操作数存储区,为后续使用时的读取提供了实现条件。
[0155]
可以理解的是,基于本技术的技术方案,可以灵活的组建向量运算,例如,组建效率极高的多操作数异或运算的程序,此处不作赘述。
[0156]
下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
[0157]
图6为本技术实施例提供的指令处理装置实施例的结构示意图。该装置可以集成在处理器中,也可以通过处理器实现。如图6所示,该指令处理装置可以包括:
[0158]
取指单元601,用于获取待处理指令,所述待处理指令包括:操作码、至少一个源操作数寄存器的标识,所述操作码用于指示所述待处理指令的类型;
[0159]
执行单元602,用于在确定所述待处理指令为异或运算指令时,从所述至少一个源操作数寄存器的操作数信息区,获取操作数信息;
[0160]
取数单元603,用于根据所述操作数信息,从所述至少一个源操作数寄存器的操作数存储区,获取所述异或运算指令对应的多个源操作数;
[0161]
运算单元604,用于对所述多个源操作数执行所述异或运算指令对应的异或运算操作,得到指令操作结果。
[0162]
在本技术实施例的一种可能设计中,所述取数单元603,具体用于执行如下操作:
[0163]
根据所述操作数信息,确定所述异或运算指令对应的操作数类型和操作数个数,所述操作数类型用于表示异或操作的操作数位宽;
[0164]
根据所述操作数类型和计算机中的操作单元位宽,确定每个操作数包括的操作单元数量;
[0165]
根据每个操作数包括的操作单元数量,从所述至少一个源操作数寄存器的操作数存储区,依次获取所述操作数个数的多个源操作数。
[0166]
可选的,所述执行单元602,还用于执行如下操作:
[0167]
获取计算机中的向量寄存器长度和所述操作单元位宽;
[0168]
根据所述向量寄存器长度、所述操作单元位宽和所述操作数类型的长度,确定所述操作数信息区的最大长度;
[0169]
根据所述操作数信息区的长度和所述向量寄存器长度,确定所述至少一个源操作数寄存器中的操作数存储区;
[0170]
将获取到的向量源操作数依次存储至所述至少一个源操作数寄存器的操作数存储区。
[0171]
可选的,所述执行单元602,用于根据所述向量寄存器长度、所述操作单元位宽和所述操作数类型的长度,确定所述操作数信息区的最大长度,具体为:
[0172]
所述执行单元602,具体用于:
[0173]
根据所述向量寄存器长度和所述操作单元位宽,确定操作单元标识的宽度和操作单元个数;
[0174]
根据所述操作单元标识的宽度和所述操作单元个数,确定所述操作单元标识占用的长度;
[0175]
根据所述操作单元标识占用的长度和所述操作数类型的长度,确定所述操作数信息区的最大长度。
[0176]
可选的,所述执行单元602,还用于执行如下操作:
[0177]
获取向量计算机的位宽;
[0178]
根据所述向量计算机的位宽和所述操作单元位宽,将所述至少一个源操作数寄存器中操作数存储区拆分成至少两个操作单元;
[0179]
对所述至少两个操作单元依次进行编号,得到每个操作单元的标识。
[0180]
在本技术实施例的一种可能设计中,所述待处理指令还包括:目的操作数寄存器的标识;
[0181]
相应的,所述运算单元604,还用于将所述指令操作结果存储至所述目的操作数寄存器中。
[0182]
本技术实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,在此不再赘述。
[0183]
需要说明的是,应理解以上装置的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元通过处理元件调用软件的形式实现,部分单元通过硬件的形式实现。此外这些单元全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
[0184]
例如,以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,asic),或,一个
或多个微处理器(digital signal processor,dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,fpga)等。再如,当以上某个单元通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,cpu)或其它可以调用程序代码的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,soc)的形式实现。
[0185]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0186]
图7为本技术实施例提供的计算机设备实施例的结构示意图。如图7所示,该计算机设备可以包括:处理器701、存储器702、通信接口703和系统总线704,存储器702和通信接口703通过系统总线704与处理器701连接并完成相互间的通信,存储器702用于存储可在处理器701上运行的计算机程序,通信接口703用于和其他设备进行通信,处理器701执行计算机程序时实现如上述方法实施例所述的技术方案。
[0187]
在该图7中,上述的处理器701可以是通用处理器,包括中央处理器cpu、网络处理器(network processor,np)等;还可以是数字信号处理器dsp、专用集成电路asic、现场可编程门阵列fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0188]
存储器702可能包含随机存取存储器(random access memory,ram),也可能包括只读存储器(read-only memory,ram),还可能包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0189]
通信接口703用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。
[0190]
系统总线704可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0191]
可选的,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当该计算机执行指令被处理器执行时用于实现如上述方法实施例所述的技术方案。
[0192]
可选的,本技术实施例还提供一种运行指令的芯片,所述芯片用于执行上述方法实施例所述的技术方案。
[0193]
根据本技术的实施例,本技术还提供了一种计算机程序产品,包括:计算机程序,所述计算机程序被处理器执行时用于实现上述方法实施例所述的技术方案。
[0194]
本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。
[0195]
可以理解的是,在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。在本技术的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术的实施例的实施过程构成任何限定。
[0196]
最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献