CN114064123A - 指令处理方法、装置、设备及存储介质 - Google Patents

指令处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114064123A
CN114064123A CN202111343113.8A CN202111343113A CN114064123A CN 114064123 A CN114064123 A CN 114064123A CN 202111343113 A CN202111343113 A CN 202111343113A CN 114064123 A CN114064123 A CN 114064123A
Authority
CN
China
Prior art keywords
operand
pair
instruction
source
vector
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
Application number
CN202111343113.8A
Other languages
English (en)
Inventor
贾凡
汪文祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN202111343113.8A priority Critical patent/CN114064123A/zh
Publication of CN114064123A publication Critical patent/CN114064123A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本申请提供一种指令处理方法、装置、设备及存储介质,通过获取待处理指令,该待处理指令包括:操作码、至少一对源操作数寄存器的标识,该操作码用于指示待处理指令的类型,在确定待处理指令为向量比特运算指令时,从至少一对源操作数寄存器的操作数信息区,获取操作数信息,该操作数信息区位于至少一对源操作数寄存器中的任何一个源操作数寄存器中,根据操作数信息,从至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数,并对至少一对源操作数执行向量比特运算指令对应的比特运算操作,得到指令操作结果。该技术方案能够有效利用向量寄存器存储空间的同时,也能够充分利用操作数的并行性,提高了运算效率。

Description

指令处理方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种指令处理方法、装置、设备及存储介质。
背景技术
向量指令是计算机中用来完成向量操作的指令,现代计算机基于向量指令能够实现一些功能。向量指令的处理主要指操作数之间的比特运算,比特运算是逻辑代数中的基本运算,以现代计算机为基础的所有应用程序和相关算法都会涉及到比特运算。
现有技术中,向量指令运算着重利用向量的并行性,通过将待处理的操作数填入向量寄存器的不同位置,然后在向量寄存器之间执行比特处理,从而基于向量指令完成了相应的运算任务。
然而,在一些算法中,程序行为具有明显的并行性,但是基于向量指令选择操作数的方式却没有规律性,比特运算只能在向量寄存器之间进行,若在比特运算过程中需要使用多次同一个操作数,且使用的运算规律也不同时,存在无法有效利用向量寄存器的空间,且运算效率低的问题。
发明内容
本申请提供一种指令处理方法、装置、设备及存储介质,以克服现有向量比特运算操作过程中存在的无法有效利用向量寄存器的空间,且运算效率低的问题。
第一方面,本申请提供的一种指令处理方法,包括:
获取待处理指令,所述待处理指令包括:操作码、至少一对源操作数寄存器的标识,所述操作码用于指示所述待处理指令的类型;
在确定所述待处理指令为向量比特运算指令时,从所述至少一对源操作数寄存器的操作数信息区,获取操作数信息,所述操作数信息区位于所述至少一对源操作数寄存器中的任何一个源操作数寄存器中;
根据所述操作数信息,从所述至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数;
对所述至少一对源操作数执行所述向量比特运算指令对应的比特运算操作,得到指令操作结果。
在第一方面的一种可能设计中,所述根据所述操作数信息,从所述至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数,包括:
根据所述操作数信息,确定所述待处理指令对应的至少一对操作数标识;
在所述至少一对源操作数寄存器的操作数存储区中,确定出所述至少一对操作数标识对应的至少一对目标操作单元;
从所述至少一对目标操作单元中,获取所述至少一对源操作数。
在第一方面的另一种可能设计中,在所述获取待处理指令之前,所述方法还包括:
获取计算机中的向量寄存器长度和操作数位宽;
根据所述向量寄存器长度和所述操作数位宽,确定所述操作数信息区的长度;
根据所述操作数信息区的长度和所述向量寄存器长度,确定所述至少一对源操作数寄存器中的操作数存储区;
将获取到的向量源操作数依次存储至所述至少一对源操作数寄存器的操作数存储区。
可选的,所述根据所述向量寄存器长度和所述操作数位宽,确定所述操作数信息区的长度,包括:
根据所述向量寄存器长度和所述操作数位宽,确定操作数标识的宽度和操作数标识的个数;
根据所述操作数标识的宽度和所述操作数标识的个数,确定所述操作数信息区的长度。
可选的,所述方法还包括:
根据所述操作数位宽,将所述至少一对源操作数寄存器中操作数存储区内的向量源操作数拆分成至少两个操作数;
对所述至少两个操作数依次进行编号,得到每个操作数的标识。
在第一方面的再一种可能设计中,所述待处理指令还包括:目的操作数寄存器的标识;
相应的,所述方法还包括:
将所述指令操作结果存储至所述目的操作数寄存器中。
第二方面,本申请实施例提供一种指令处理装置,该装置可以集成在处理器中,也可以通过处理器实现,所述指令处理装置包括:
取指单元,用于获取待处理指令,所述待处理指令包括:操作码、至少一对源操作数寄存器的标识,所述操作码用于指示所述待处理指令的类型;
执行单元,用于在解码单元确定所述待处理指令为向量比特运算指令时,从所述至少一对源操作数寄存器的操作数信息区,获取操作数信息,所述操作数信息区位于所述至少一对源操作数寄存器中的任何一个源操作数寄存器中;
取数单元,用于根据所述操作数信息,从所述至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数;
运算单元,对所述至少一对源操作数执行所述向量比特运算指令对应的比特运算操作,得到指令操作结果。
在第二方面的一种可能设计中,所述取数单元,具体用于执行如下操作:
根据所述操作数信息,确定所述待处理指令对应的至少一对操作数标识;
在所述至少一对源操作数寄存器的操作数存储区中,确定出所述至少一对操作数标识对应的至少一对目标操作单元;
从所述至少一对目标操作单元中,获取所述至少一对源操作数。
在第二方面的另一种可能设计中,所述执行单元,还用于执行如下操作:
获取计算机中的向量寄存器长度和操作数位宽;
根据所述向量寄存器长度和所述操作数位宽,确定所述操作数信息区的长度;
根据所述操作数信息区的长度和所述向量寄存器长度,确定所述至少一对源操作数寄存器中的操作数存储区;
将获取到的向量源操作数依次存储至所述至少一对源操作数寄存器的操作数存储区。
可选的,所述执行单元,用于根据所述向量寄存器长度和所述操作数位宽,确定所述操作数信息区的长度,具体为:
所述执行单元,具体用于:
根据所述向量寄存器长度和所述操作数位宽,确定操作数标识的宽度和操作数标识的个数;
根据所述操作数标识的宽度和所述操作数标识的个数,确定所述操作数信息区的长度。
可选的,所述执行单元,还用于:
根据所述操作数位宽,将所述至少一对源操作数寄存器中操作数存储区内的向量源操作数拆分成至少两个操作数;
对所述至少两个操作数依次进行编号,得到每个操作数的标识。
在第二方面的再一种可能设计中,所述待处理指令还包括:目的操作数寄存器的标识;
相应的,所述运算单元,还用于将所述指令操作结果存储至所述目的操作数寄存器中。
第三方面,本申请实施例提供一种计算机设备,包括:存储器和处理器;
存储器,用于存储可在所述处理器上运行的计算机指令;
所述处理器,用于执行所述计算机指令以实现如上述第一方面所述的指令处理方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第一方面所述的指令处理方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面所述的指令处理方法。
本申请实施例提供的指令处理方法、装置、设备及存储介质,通过获取待处理指令,该待处理指令包括:操作码、至少一对源操作数寄存器的标识,该操作码用于指示待处理指令的类型,在确定待处理指令为向量比特运算指令时,从至少一对源操作数寄存器的操作数信息区,获取操作数信息,该操作数信息区位于至少一对源操作数寄存器中的任何一个源操作数寄存器中,根据操作数信息,从至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数,并对至少一对源操作数执行向量比特运算指令对应的比特运算操作,得到指令操作结果。该技术方案能够有效利用向量寄存器存储空间的同时,也能够充分利用操作数的并行性,提高了运算效率。
附图说明
图1为本申请实施例提供的指令处理方法的应用场景示意图;
图2为本申请实施例提供的指令处理方法实施例一的流程示意图;
图3为操作数信息区的位置分布示意图;
图4为本申请实施例提供的指令处理方法中向量比特运算指令的处理过程示意图;
图5为本申请实施例提供的指令处理方法实施例二的流程示意图;
图6为本申请实施例提供的指令处理装置实施例的结构示意图;
图7为本申请实施例提供的计算机设备实施例的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
向量指令是计算机中用来完成向量操作的指令,指令是指示处理器执行某种操作的命令,通过处理各条指令可以实现预期的功能。在实际应用中,计算机中的信息量单元通常是比特,因而,向量指令的处理主要是操作数之间的比特运算。而比特运算是逻辑代数中的基本运算,以现代计算机为基础的所有应用程序和相关算法都会涉及到比特运算。因而,如何提高比特运算的运算效率是提高指令处理的关键。
基于背景技术中介绍可知,在一些算法中,虽然程序行为具有明显的并行性,但其选择操作数的方式却不具有规律性,使用在向量指令执行比特运算时,无法有效利用向量寄存器的空间,存在运算效率低的问题。
示例性的,现有的向量指令着重利用向量的并行性,将很多个操作数填入向量寄存器的不同位置,对它们进行相同的操作。例如,下述操作数之间的运算:
{
a1=b1^c1^d1
a2=b2^c2^d2
……
a8=b8^c8^d8
}
为了有效利用向量的并行性,操作数之间的运算过程可以用以下的向量操作替代:
{
B={b1,b2,…,b8}
C={c1,c2,…,c8}
D={d1,d2,…,d8}
A=B^C^D
A={a1,a2,…,a8}
}
经过上述替换操作,在一定程度上极大的减少了指令数量。然而,上述比特运算只能在向量寄存器之间进行,当参与比特运算的操作数出现多次,或者,比特运算使用的运算规律不同时,现有技术中基于向量并行性的运算操作无法有效利用向量寄存器的空间,且无法快速得完成相应的运算任务,存在运算效率低的问题。
针对上述技术问题,本申请技术方案的构思过程如下:处理器的发射单元向运算单元输入源操作数的同时,也向运算单元发送执行时选择操作数的控制信息,使得运算单元在接收到源操作数和控制信息后,依据控制信息选出执行比特运算的源操作数,进而完成执行处理过程,该技术方案能够有效利用向量寄存器存储空间的同时,也能够充分利用操作数的并行性,提高了运算效率。
基于上述构思过程,本申请实施例提供了一种指令处理方法,通过获取待处理指令,该待处理指令包括:操作码、至少一对源操作数寄存器的标识,该操作码用于指示待处理指令的类型,在确定待处理指令为向量比特运算指令时,从至少一对源操作数寄存器的操作数信息区,获取操作数信息,该操作数信息区位于至少一对源操作数寄存器中的任何一个源操作数寄存器中,根据操作数信息,从至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数,并对至少一对源操作数执行向量比特运算指令对应的比特运算操作,得到指令操作结果。
示例性的,图1为本申请实施例提供的指令处理方法的应用场景示意图。如图1所示,该应用场景中可以包括处理器和存储器。其中,当处理器为顺序执行的架构时,处理器可以包括:取指单元、解码单元、物理寄存器堆、执行单元(包括运算单元)和访存单元。该访存单元可以与存储器连接。
具体的,处理器在正常执行待处理指令时,首先利用取指单元获取待处理指令,通过解码单元对待处理指令进行解码,进而利用执行单元执行该处理指令对应的操作。示例性的,利用运算单元参与运算,并利用物理寄存器堆保存参与运算的数据或保存处理器的状态,并通过访存单元与存储器之间实现访存操作。
可以理解的是,当处理器为乱序执行的架构时,处理器还可以包括:重命名单元、发射单元、重排序队列等。也即,上述重命名单元、发射单元、重排序队列对于非乱序执行的处理器并不需要。
其中,重命名单元是为了解决反向依赖的问题,乱序执行时要进行重命名处理。重命名处理将程序中记载的寄存器编号(称为“逻辑寄存器”)对应到物理寄存器编号上。各指令写入结果的逻辑寄存器一定要分配到空闲的物理寄存器上。发射单元可以在一个周期内将多条指令发射到执行单元。重排序队列用于将处理器要执行的指令进行顺序调整,以达到乱序执行的目的。访存单元可以将查找指令的结果写入相应的内存中。
需要说明的是,附图1仅是本申请实施例提供的一种应用场景的示意图,本申请实施例不对图1中包括的各组件进行限定,也不对图1中各组件之间的位置关系进行限定,例如,该应用场景中还可以基于处理器能够实现的功能包括其他的组件,利用能够处理异常通路的栈维护模块,本申请实施例并不对其进行限定。
下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图2为本申请实施例提供的指令处理方法实施例一的流程示意图。该方法以处理器作为执行主体进行解释说明。如图2所示,该指令处理方法可以包括如下步骤:
S201、获取待处理指令,该待处理指令包括:操作码、至少一对源操作数寄存器的标识,该操作码用于指示待处理指令的类型。
在本申请的实施例中,计算机中的待处理指令可以被事先存储在存储器中,这样处理器接收到用户的指令处理指示时,首先利用取指单元(即,程序计数器(programcounter,PC))从存储器中取出待处理指令,然后利用解码单元对待处理指令进行解码处理,确定出待处理指令中包括的内容,例如,操作码和至少一对源操作数寄存器的标识。
在实际应用中,处理器可能会执行不同类型的指令,例如,异或运算指令、比特运算指令等不同的逻辑操作。因而,通过在待处理指令中包括操作码,能够指示待处理指令的类型,以便处理器执行待处理指令时能够实现特定的功能。
可选的,为了确定出需要操作的源操作数寄存器,待处理指令中还需要包括至少一对源操作数寄存器的标识,以便在执行待处理指令对应的操作之前,能够从上述的至少一对源操作数寄存器中取源操作数进行对应的运算。示例性的,源操作数寄存器的标识也可以称为源操作数寄存器号,其用于唯一的标识一个源操作数寄存器。
S202、在确定待处理指令为向量比特运算指令时,从至少一对源操作数寄存器的操作数信息区,获取操作数信息。
其中,操作数信息区位于至少一对源操作数寄存器中的任何一个源操作数寄存器中。
可选的,处理器根据解码待处理指令后得到操作码可以确定待处理指令的类型。在本步骤中,为了解决无法有效利用寄存器空间,执行单元选择操作数方式不规律的问题,通过在每条待处理指令需要操作的至少一对源操作数寄存器中配置操作数信息区,在该操作数信息区中存储本次操作需要的操作数信息。
示例性的,操作数信息区也可以称为控制信息域,是用于存储本次操作控制信息的位置,控制信息即本步骤中所述的操作数信息,该操作数信息可以包括:需要成对操作的操作数标识等。本申请实施例并不对操作数信息的具体内容进行限定,其可以根据实际需求确定,此处不作赘述。
可选的,在本申请的一种可能设计中,图3为操作数信息区的位置分布示意图。如图3所示,本实施例以待处理指令包括一对源操作数寄存器进行解释说明。其中,该对源操作数寄存器包括:第一源操作数寄存器和第二源操作数寄存器,其中,第一源操作数寄存器用于存储向量源操作数的第一部分,第二源操作数寄存器用于存储向量源操作数的第二部分,处理器的取数方向(即取操作数的方向)是从源操作数寄存器的顶端开始。
通常情况下,操作数信息区可以位于至少一对源操作数寄存器中的任何一个源操作数寄存器中。如图3所示,在该种可能设计中,对于每对源操作数寄存器,操作数信息区可以位于每对源操作数寄存器中第二个源操作数寄存器的最尾端。
可选的,在本申请的实施例中,操作数信息区的大小不固定,其随着向量计算机中向量寄存器的长度以及比特运算所要操作的操作数位宽而改变。操作数信息区存储着操作数信息,例如,成对出现的操作数标识。
S203、根据操作数信息,从至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数。
在本步骤中,处理器执行向量比特运算指令之前,可以根据从操作数信息区获取到的操作数信息,确定出本次操作需要使用的、成对出现的操作数标识。例如,针对64比特位宽的操作数,操作数信息区中最低的一对操作数标识为{1,2},则代表参与向量比特运算指令的低64比特要取上述至少一对源操作数寄存器中的1号源操作数和2号源操作数来做向量比特运算指令对应的比特运算操作。
示例性的,在本申请的实施例中,该S203具体可以通过如下步骤实现:
A1、根据操作数信息,确定待处理指令对应的至少一对操作数标识。
可选的,上述至少一对源操作数寄存器的操作数存储区中存储有多对操作数,而操作数信息区内存储的操作数信息中具有待处理指令对应的至少一对操作数标识,所以,处理器根据获取到的操作数信息能够确定出待处理指令对应的至少一对操作数标识。
A2、在上述至少一对源操作数寄存器的操作数存储区中,确定出至少一对操作数标识对应的至少一对目标操作单元。
示例性的,在本实施例中,处理器以操作数位宽作为基本长度进行操作数之间的比特运算,每个操作数对应一个目标操作单元,即,处理器在获取到待处理指令之前,首先根据操作数位宽,将上述至少一对源操作数寄存器的操作数存储区划分成了多个目标操作单元,且每个目标操作单元用于存放一个源操作数。因而,处理器在确定出待处理指令对应的至少一对操作数标识后,能够在上述至少一对源操作数寄存器的操作数存储区中定位出至少一对操作数所在的目标操作单元。
A3、从上述至少一对目标操作单元中,获取至少一对源操作数。
可选的,上述至少一对源操作数寄存器的每个目标操作单元中存储有获取到的源操作数,因而,在处理器定位到取数的至少一对目标操作单元后,可以直接从该至少一对目标操作单元中并行读取至少一对源操作数,从而提高了并行处理的运算效率。
S204、对至少一对源操作数执行向量比特运算指令对应的比特运算操作,得到指令操作结果。
在本步骤中,处理器获取到本次操作的至少一对源操作数后,便可以针对每对源操作数分别执行比特运算操作,从而得到至少一个比特运算结果,这至少一个比特运算结果组成指令操作结果。
进一步的,在本申请的实施例中,上述待处理指令还可以包括:目的操作数寄存器的标识。相应的,本申请实施例提供的指令处理方法还可以包括如下步骤:
S205、将指令操作结果存储至目的操作数寄存器中。
在本步骤中,待处理指令中既可以携带至少一对源操作数寄存器的标识,也可以携带目的操作数寄存器的标识,这样处理器通过对获取到的每对源操作数进行比特运算得到比特运算结果后,便可以将其存储至该目的操作数寄存器的标识所对应的目的操作数寄存器中,以便后续的使用。
示例性的,图4为本申请实施例提供的指令处理方法中向量比特运算指令的处理过程示意图。图4以图3所示的两个源操作数寄存器进行解释说明。如图4所示,第一源操作数寄存器中存储有向量源操作数的第一部分,第二操作数寄存器中存储有向量源操作数的第二部分,当以操作数位宽作为基本长度时,例如,可以将向量源操作数的第一部分拆分成N个源操作数,分别为O1、O2、O3、…、ON、,将向量源操作数的第二部分拆分成多个源操作数,可选的,向量源操作数的第二部分拆分得到的多个源操作数可以从N+1进行编号,依次为ON+1、ON+2、ON+3等。其中,N为大于或等于1的整数。
可以理解的是,本申请实施例并不限定向量源操作数的第二部分拆分得到的源操作数个数,其可以根据向量源操作数的长度确定,此处不作赘述。
参照图4所示,第二源操作数寄存器中具有操作数信息区,操作数信息区存储有操作数信息,例如,N个操作数标识对(即,N对操作数标识),因而,在本申请的实施例中,执行单元中的运算单元依照操作数标识对,选出N对操作数进行相应的比特运算,并得到N个比特运算结果。可选的,每个比特运算结果可以用R表示,N个比特运算结果分别为R1、R2、R3、…、Ra、…、RN,其中,Ra和第a对操作数的比特运算结果相对应,这N个比特运算结果组成指令操作结果。
本申请实施例提供的指令处理方法,通过获取待处理指令,该待处理指令包括:操作码、至少一对源操作数寄存器的标识,该操作码用于指示待处理指令的类型,在确定待处理指令为向量比特运算指令时,从至少一对源操作数寄存器的操作数信息区,获取操作数信息,该操作数信息区位于至少一对源操作数寄存器中的任何一个源操作数寄存器中,根据操作数信息,从至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数,并对至少一对源操作数执行向量比特运算指令对应的比特运算操作,得到指令操作结果。该技术方案能够有效利用向量寄存器存储空间的同时,也能够充分利用操作数的并行性,提高了运算效率。
可选的,在上述实施例的基础上,图5为本申请实施例提供的指令处理方法实施例二的流程示意图。如图5所示,在本申请的实施例中,在上述S201之前,该方法还可以包括如下步骤:
S501、获取计算机中的向量寄存器长度和操作数位宽。
在实际应用中,计算机设备的处理器中通常设置有多组向量寄存器,每组向量寄存器均可以被配置为存储处理器运行的指令。在实际应用中,处理器中的向量寄存器长度是固定的,而且对于某个运算指令,执行操作的操作数位宽由计算机中的指令编码决定,因而,在本步骤中,处理器在获取待处理指令之前,可以首先获取计算机中的向量寄存器长度和操作数位宽,以便于计算用于存储操作数信息的操作数信息区的长度。
S502、根据向量寄存器长度和操作数位宽,确定操作数信息区的长度。
在本实施例中,操作数信息区的长度通常根据向量寄存器长度和操作数位宽确定,具体的,处理器首先根据向量寄存器长度和操作数位宽,确定操作数标识的宽度和操作数标识的个数,然后根据操作数标识的宽度和操作数标识的个数,确定操作数信息区的长度。
示例性的,操作数信息区的长度由以下的公式计算得出:
操作数信息区的长度=(log2(向量寄存器长度/操作数位宽)+1)*(向量寄存器长度/操作数位宽)*2。
其中,(log2(向量寄存器长度/操作数位宽)+1)是操作数标识的宽度,(向量寄存器长度/操作数位宽)是向量寄存器中能够存储的可参与比特运算的操作数标识的对数,因而,(向量寄存器长度/操作数位宽)*2为参与比特运算的操作数标识的个数。所以,在已知操作数标识的个数和操作数标识的宽度时,两者相乘便为操作数信息区的长度。
S503、根据操作数信息区的长度和向量寄存器长度,确定至少一对源操作数寄存器中的操作数存储区。
在本步骤中,在确定出至少一对源操作数寄存器中的操作数信息区之后,便可以将操作数标识的信息存储在该操作数信息区的空间中,相应的,将每对源操作数寄存器中,除去操作数信息区所占的存储空间,作为该对源操作数寄存器的操作数存储区。
S504、将获取到的向量源操作数依次存储至上述至少一对源操作数寄存器的操作数存储区。
可选的,当确定出每对源操作数寄存器的操作数存储区后,为了后续能够从源操作数寄存器中获取参与比特运算的源操作数,首先需要将获取到的向量源操作数依次存储至每对源操作数寄存器中。示例性的,首先将向量源操作数依次存储至第一源操作数寄存器中,然后再存储至第二源操作数寄存器的操作数存储区。
进一步的,在本申请的实施例中,参照图5所示,该指令处理方法还可以包括如下步骤:
S505、根据操作数位宽,将至少一对源操作数寄存器中操作数存储区内的向量源操作数拆分成至少两个操作数。
在本申请的实施例中,处理器可以以操作数位宽作为基本长度来执行向量比特运算,因而,为了方便后续取数,且由于向量比特运算所需的源操作数是成对出现的,所以,处理器可以首先基于操作数位宽,将存储在每对源操作数寄存器中的向量源操作数拆分成至少两个操作数。
示例性的,参照图4可知,向量源操作数的第一部分可以被拆分成N个操作数O,其中,N等于向量寄存器的长度与操作数位宽的比值。同理,向量源操作数的第二部分也可以被拆分成若干个操作数,此处不作赘述。
S506、对至少两个操作数依次进行编号,得到每个操作数的标识。
在本申请的实施例中,由于操作数信息区中的操作数信息通常是以操作数标识存储的,因而,在实际运算过程中,由于处理器需要基于操作数标识从待处理指令携带的每对源操作数寄存器的操作数存储区中获取源操作数标识对应的源操作数,所以,处理器将每对源操作数寄存器中存储的向量源操作数拆分成至少两个操作数之后,还需要对其进行依次编号,并确定出每个操作数的标识。
本申请实施例提供的指令处理方法,通过获取计算机中的向量寄存器长度和操作数位宽,并根据向量寄存器长度和操作数位宽,确定操作数信息区的长度,根据操作数信息区的长度和向量寄存器长度,确定至少一对源操作数寄存器中的操作数存储区,并将获取到的向量源操作数依次存储至上述至少一对源操作数寄存器的操作数存储区。该技术方案中,通过确定出每对源操作数寄存器的操作数信息区,并将获取到的向量源操作数存储至每个源操作数的操作数存储区,为后续使用时的读取提供了实现条件。
可以理解的是,基于本申请的技术方案,可以灵活的组建向量运算,该向量运算可以是随机选择操作数的向量运算,并能够适应于向量具有并行性但操作数选择没有规律的算法,此处不作赘述。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图6为本申请实施例提供的指令处理装置实施例的结构示意图。该装置可以集成在处理器中,也可以通过处理器实现。如图6所示,该指令处理装置可以包括:
取指单元601,用于获取待处理指令,所述待处理指令包括:操作码、至少一对源操作数寄存器的标识,所述操作码用于指示所述待处理指令的类型;
执行单元602,用于在解码单元确定所述待处理指令为向量比特运算指令时,从所述至少一对源操作数寄存器的操作数信息区,获取操作数信息,所述操作数信息区位于所述至少一对源操作数寄存器中的任何一个源操作数寄存器中;
取数单元603,用于根据所述操作数信息,从所述至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数;
运算单元604,对所述至少一对源操作数执行所述向量比特运算指令对应的比特运算操作,得到指令操作结果。
在本申请实施例的一种可能设计中,所述取数单元603,具体用于执行如下操作:
根据所述操作数信息,确定所述待处理指令对应的至少一对操作数标识;
在所述至少一对源操作数寄存器的操作数存储区中,确定出所述至少一对操作数标识对应的至少一对目标操作单元;
从所述至少一对目标操作单元中,获取所述至少一对源操作数。
在本申请实施例的另一种可能设计中,所述执行单元602,还用于执行如下操作:
获取计算机中的向量寄存器长度和操作数位宽;
根据所述向量寄存器长度和所述操作数位宽,确定所述操作数信息区的长度;
根据所述操作数信息区的长度和所述向量寄存器长度,确定所述至少一对源操作数寄存器中的操作数存储区;
将获取到的向量源操作数依次存储至所述至少一对源操作数寄存器的操作数存储区。
可选的,所述执行单元602,用于根据所述向量寄存器长度和所述操作数位宽,确定所述操作数信息区的长度,具体为:
所述执行单元602,具体用于:
根据所述向量寄存器长度和所述操作数位宽,确定操作数标识的宽度和操作数标识的个数;
根据所述操作数标识的宽度和所述操作数标识的个数,确定所述操作数信息区的长度。
可选的,所述执行单元602,还用于:
根据所述操作数位宽,将所述至少一对源操作数寄存器中操作数存储区内的向量源操作数拆分成至少两个操作数;
对所述至少两个操作数依次进行编号,得到每个操作数的标识。
在本申请实施例的再一种可能设计中,所述待处理指令还包括:目的操作数寄存器的标识;
相应的,所述运算单元604,还用于将所述指令操作结果存储至所述目的操作数寄存器中。
本申请实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元通过处理元件调用软件的形式实现,部分单元通过硬件的形式实现。此外这些单元全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个单元通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessing unit,CPU)或其它可以调用程序代码的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
图7为本申请实施例提供的计算机设备实施例的结构示意图。如图7所示,该计算机设备可以包括:处理器701、存储器702、通信接口703和系统总线704,存储器702和通信接口703通过系统总线704与处理器701连接并完成相互间的通信,存储器702用于存储可在处理器701上运行的计算机程序,通信接口703用于和其他设备进行通信,处理器701执行计算机程序时实现如上述方法实施例所述的技术方案。
在该图7中,上述的处理器701可以是通用处理器,包括中央处理器CPU、网络处理器(network processor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器702可能包含随机存取存储器(random access memory,RAM),也可能包括只读存储器(read-only memory,RAM),还可能包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
通信接口703用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。
系统总线704可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当该计算机执行指令被处理器执行时用于实现如上述方法实施例所述的技术方案。
可选的,本申请实施例还提供一种运行指令的芯片,所述芯片用于执行上述方法实施例所述的技术方案。
根据本申请的实施例,本申请还提供了一种计算机程序产品,包括:计算机程序,所述计算机程序被处理器执行时用于实现上述方法实施例所述的技术方案。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (15)

1.一种指令处理方法,其特征在于,包括:
获取待处理指令,所述待处理指令包括:操作码、至少一对源操作数寄存器的标识,所述操作码用于指示所述待处理指令的类型;
在确定所述待处理指令为向量比特运算指令时,从所述至少一对源操作数寄存器的操作数信息区,获取操作数信息,所述操作数信息区位于所述至少一对源操作数寄存器中的任何一个源操作数寄存器中;
根据所述操作数信息,从所述至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数;
对所述至少一对源操作数执行所述向量比特运算指令对应的比特运算操作,得到指令操作结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述操作数信息,从所述至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数,包括:
根据所述操作数信息,确定所述待处理指令对应的至少一对操作数标识;
在所述至少一对源操作数寄存器的操作数存储区中,确定出所述至少一对操作数标识对应的至少一对目标操作单元;
从所述至少一对目标操作单元中,获取所述至少一对源操作数。
3.根据权利要求1所述的方法,其特征在于,在所述获取待处理指令之前,所述方法还包括:
获取计算机中的向量寄存器长度和操作数位宽;
根据所述向量寄存器长度和所述操作数位宽,确定所述操作数信息区的长度;
根据所述操作数信息区的长度和所述向量寄存器长度,确定所述至少一对源操作数寄存器中的操作数存储区;
将获取到的向量源操作数依次存储至所述至少一对源操作数寄存器的操作数存储区。
4.根据权利要求3所述的方法,其特征在于,所述根据所述向量寄存器长度和所述操作数位宽,确定所述操作数信息区的长度,包括:
根据所述向量寄存器长度和所述操作数位宽,确定操作数标识的宽度和操作数标识的个数;
根据所述操作数标识的宽度和所述操作数标识的个数,确定所述操作数信息区的长度。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据所述操作数位宽,将所述至少一对源操作数寄存器中操作数存储区内的向量源操作数拆分成至少两个操作数;
对所述至少两个操作数依次进行编号,得到每个操作数的标识。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述待处理指令还包括:目的操作数寄存器的标识;
相应的,所述方法还包括:
将所述指令操作结果存储至所述目的操作数寄存器中。
7.一种指令处理装置,其特征在于,包括:
取指单元,用于获取待处理指令,所述待处理指令包括:操作码、至少一对源操作数寄存器的标识,所述操作码用于指示所述待处理指令的类型;
执行单元,用于在解码单元确定所述待处理指令为向量比特运算指令时,从所述至少一对源操作数寄存器的操作数信息区,获取操作数信息,所述操作数信息区位于所述至少一对源操作数寄存器中的任何一个源操作数寄存器中;
取数单元,用于根据所述操作数信息,从所述至少一对源操作数寄存器的操作数存储区,获取至少一对源操作数;
运算单元,对所述至少一对源操作数执行所述向量比特运算指令对应的比特运算操作,得到指令操作结果。
8.根据权利要求7所述的装置,其特征在于,所述取数单元,具体用于执行如下操作:
根据所述操作数信息,确定所述待处理指令对应的至少一对操作数标识;
在所述至少一对源操作数寄存器的操作数存储区中,确定出所述至少一对操作数标识对应的至少一对目标操作单元;
从所述至少一对目标操作单元中,获取所述至少一对源操作数。
9.根据权利要求7所述的装置,其特征在于,所述执行单元,还用于执行如下操作:
获取计算机中的向量寄存器长度和操作数位宽;
根据所述向量寄存器长度和所述操作数位宽,确定所述操作数信息区的长度;
根据所述操作数信息区的长度和所述向量寄存器长度,确定所述至少一对源操作数寄存器中的操作数存储区;
将获取到的向量源操作数依次存储至所述至少一对源操作数寄存器的操作数存储区。
10.根据权利要求9所述的装置,其特征在于,所述执行单元,用于根据所述向量寄存器长度和所述操作数位宽,确定所述操作数信息区的长度,具体为:
所述执行单元,具体用于:
根据所述向量寄存器长度和所述操作数位宽,确定操作数标识的宽度和操作数标识的个数;
根据所述操作数标识的宽度和所述操作数标识的个数,确定所述操作数信息区的长度。
11.根据权利要求9所述的装置,其特征在于,所述执行单元,还用于:
根据所述操作数位宽,将所述至少一对源操作数寄存器中操作数存储区内的向量源操作数拆分成至少两个操作数;
对所述至少两个操作数依次进行编号,得到每个操作数的标识。
12.根据权利要求7-11任一项所述的装置,其特征在于,所述待处理指令还包括:目的操作数寄存器的标识;
相应的,所述运算单元,还用于将所述指令操作结果存储至所述目的操作数寄存器中。
13.一种计算机设备,其特征在于,包括:存储器和处理器;
存储器,用于存储可在所述处理器上运行的计算机指令;
所述处理器,用于执行所述计算机指令以实现如上述权利要求1-6任一项所述的指令处理方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述权利要求1-6任一项所述的指令处理方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述权利要求1-6任一项所述的指令处理方法。
CN202111343113.8A 2021-11-12 2021-11-12 指令处理方法、装置、设备及存储介质 Pending CN114064123A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111343113.8A CN114064123A (zh) 2021-11-12 2021-11-12 指令处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111343113.8A CN114064123A (zh) 2021-11-12 2021-11-12 指令处理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114064123A true CN114064123A (zh) 2022-02-18

Family

ID=80272051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111343113.8A Pending CN114064123A (zh) 2021-11-12 2021-11-12 指令处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114064123A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115599442A (zh) * 2022-12-14 2023-01-13 成都登临科技有限公司(Cn) 一种ai芯片、电子设备及张量处理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115599442A (zh) * 2022-12-14 2023-01-13 成都登临科技有限公司(Cn) 一种ai芯片、电子设备及张量处理方法

Similar Documents

Publication Publication Date Title
US10996955B2 (en) Method for performing random read access to a block of data using parallel LUT read instruction in vector processors
CN109522254B (zh) 运算装置及方法
US9557995B2 (en) Data processing apparatus and method for performing segmented operations
RU2614583C2 (ru) Определение профиля пути, используя комбинацию аппаратных и программных средств
US11704036B2 (en) Deduplication decision based on metrics
KR20240011204A (ko) 행렬 연산 가속기의 명령어들을 위한 장치들, 방법들, 및 시스템들
TWI733798B (zh) 在執行向量操作時管理位址衝突的設備及方法
US20130166516A1 (en) Apparatus and method for comparing a first vector of data elements and a second vector of data elements
WO2013136215A4 (en) Comparing sets of character data having termination characters
EP2202634B1 (en) System and method for fast branching using a programmable branch table
US10152321B2 (en) Instructions and logic for blend and permute operation sequences
US11507386B2 (en) Booting tiles of processing units
WO2020199058A1 (zh) 分支指令的处理方法、分支预测器及处理器
US20070260826A1 (en) Compare, swap and store facility with no external serialization
US11048511B2 (en) Data processing device data processing method and recording medium
CN112148251A (zh) 跳过无意义的矩阵运算的系统和方法
CN107251001B (zh) 具有双模式中断的微控制器或微处理器
US10691453B2 (en) Vector load with instruction-specified byte count less than a vector size for big and little endian processing
CN114153500A (zh) 指令调度方法、指令调度装置、处理器及存储介质
CN114064123A (zh) 指令处理方法、装置、设备及存储介质
CN111258950B (zh) 原子访存方法、存储介质、计算机设备、装置和系统
WO2023142524A1 (zh) 指令处理方法、装置、芯片、电子设备以及存储介质
US20220197653A1 (en) Processors, methods, systems, and instructions to select and store data elements from strided data element positions in a first dimension from three source two-dimensional arrays in a result two-dimensional array
CN114064122A (zh) 指令处理方法、装置、设备及存储介质
US10956159B2 (en) Method and processor for implementing an instruction including encoding a stopbit in the instruction to indicate whether the instruction is executable in parallel with a current instruction, and recording medium therefor

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