CN114443143A - 指令处理方法、装置、芯片、电子设备以及存储介质 - Google Patents

指令处理方法、装置、芯片、电子设备以及存储介质 Download PDF

Info

Publication number
CN114443143A
CN114443143A CN202210114536.0A CN202210114536A CN114443143A CN 114443143 A CN114443143 A CN 114443143A CN 202210114536 A CN202210114536 A CN 202210114536A CN 114443143 A CN114443143 A CN 114443143A
Authority
CN
China
Prior art keywords
instruction
address information
calculation
address
access data
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
CN202210114536.0A
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.)
Shanghai Power Tensors Intelligent Technology Co Ltd
Original Assignee
Shanghai Power Tensors Intelligent Technology Co 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 Shanghai Power Tensors Intelligent Technology Co Ltd filed Critical Shanghai Power Tensors Intelligent Technology Co Ltd
Priority to CN202210114536.0A priority Critical patent/CN114443143A/zh
Publication of CN114443143A publication Critical patent/CN114443143A/zh
Priority to PCT/CN2022/124520 priority patent/WO2023142524A1/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/30098Register arrangements
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Abstract

本公开提供了一种指令处理方法、装置、芯片、电子设备以及存储介质,其中,该方法包括:获取待处理的第一计算指令;确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式;所述第一访存数据包括用于执行所述第一计算指令的操作数和/或操作数的计算结果;在所述寻址模式为地址累加模式的情况下,基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;所述第二计算指令为所述第一计算指令的上一条指令;基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。

Description

指令处理方法、装置、芯片、电子设备以及存储介质
技术领域
本公开涉及电子技术领域,具体而言,涉及一种指令处理方法、装置、芯片、电子设备以及存储介质。
背景技术
计算机指令就是指挥机器工作的指示和命令,按一定顺序排列的指令执行的过程就是计算机的工作过程。指令执行的过程主要包括对存储空间的访问和对数据的计算,其中,存储空间访问的形式包括立即数直接寻址和利用运算结果的间接寻址。间接寻址方式需要实时计算地址的值,因此间接寻址方式带来了额外的指令周期,从而影响了指令的执行效率。
发明内容
本公开实施例至少提供一种指令处理方法、装置、芯片、电子设备以及存储介质。
第一方面,本公开实施例提供了一种指令处理装置,包括:指令处理单元和指令执行单元;所述指令处理单元,被配置成获取待处理的第一计算指令;所述指令执行单元,被配置成基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;所述第二计算指令为所述第一计算指令的上一条指令;基于所述第二地址信息和所述累加步长信息,确定所述第一计算指令所对应第一访存数据的第一地址信息,并基于所述第一地址信息执行所述第一计算指令的操作数和/或操作数的计算结果。
在本公开实施例中,在指令处理单元获取到第一计算指令之后,指令执行单元可以基于第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息,进而基于该第二地址信息和累加步长信息确定第一地址信息,并基于第一地址信息执行所述第一计算指令。上述实施方式中,可以将地址计算隐藏在计算指令的指令处理过程中,进而可以减少额外的指令周期,进而加快了指令的执行效率。
一种可选的实施方式中,所述指令处理单元,被配置成在获取待处理的第一计算指令之后,确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式;所述指令执行单元,被配置成在所述寻址模式为地址累加模式的情况下,基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;以及基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。
上述实施方式中,在获取到第一计算指令之后,通过地址累加模式确定第一计算指令的第一访存数据的第一地址信息的方式,可以将第一地址信息的确定过程隐藏在第一计算指令的指令处理过程,从而减少了额外的指令周期,进而加快了指令的执行效率。
一种可选的实施方式中,所述指令执行单元包括:累加寄存器和第一计算单元;所述累加寄存器,被配置成存储所述第二地址信息;所述第一计算单元,被配置成在获取所述指令处理单元发送的所述累加步长信息之后,对所述第二地址信息和所述累加步长信息进行累加计算,得到所述第一地址信息。
一种可选的实施方式中,所述第一地址信息包括:第一访问地址和第一存储地址;所述指令执行单元包括:第二计算单元:所述第二计算单元,被配置成:获取所述第一计算单元发送的所述第一访问地址和所述第一存储地址,并获取所述第一访问地址所对应存储位置中存储的操作数;并将从所述第一访问地址所对应存储器中获取到的操作数作为所述第一访存数据执行所述第一计算指令,得到所述第一计算指令的第一计算结果,并将所述第一计算结果存储至所述第一存储地址对应的存储位置。
一种可选的实施方式中,所述指令处理单元,还被配置成:在所述寻址模式为直接寻址模式的情况下,获取所述第一计算指令中的地址字段中的字段内容;基于获取到的所述字段内容确定所述第一访存数据的第一地址信息,并向所述指令执行单元发送所述第一地址信息,以使所述指令执行单元基于所述第一地址信息执行所述第一计算指令。
一种可选的实施方式中,所述指令处理单元包括:指令译码单元;所述指令译码单元,被配置成确定所述第一计算指令中的第一使能标识,其中,所述第一使能标识用于指示针对所述第一访存数据的地址累加模式是否使能有效;以及基于所述第一使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式。
一种可选的实施方式中,所述第一使能标识的数量为多个;每个所述第一使能标识对应所述第一访存数据中的一个数据;所述指令译码单元,被配置成:在所述多个第一使能标识中确定与所述第一访存数据中的每个数据相匹配的第一使能标识;以及基于与所述第一访存数据中的每个数据相匹配的第一使能标识,确定所述第一计算指令中每个数据的第一地址信息的寻址模式。
一种可选的实施方式中,所述指令译码单元,被配置成:在确定所述第一使能标识为使能有效之后,在所述第二计算指令中检测第二使能标识;其中,所述第二使能标识用于指示所述第一计算指令中第一使能标识所指示的地址累加模式是否使能有效;以及基于所述第二使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息。
一种可选的实施方式中,所述指令译码单元,被配置成:在确定所述第二使能标识为使能禁止的情况下,确定所述第一计算指令所对应第一访存数据的第一地址信息为第二计算指令所对应第二访存数据的第二地址信息。
一种可选的实施方式中,所述第二使能标识包含多个第二子使能标识,每个第二子使能标识对应所述第一访存数据中的一个数据;所述指令译码单元,被配置成:在所述多个第二子使能标识中确定与所述第一访存数据中的每个数据相匹配的第二子使能标识;以及基于与所述第一访存数据中的每个数据相匹配的第二子使能标识,确定所述第一访存数据中每个数据的第一地址信息。
一种可选的实施方式中,所述第一计算指令的指令内容包含:至少一个连续的第一使能标识和/或至少一个连续的第二使能标识,其中,每个所述第一使能标识包括:第一标识字段和第一字段内容,每个所述第二使能标识包括:第二标识字段和第二字段内容,所述第一标识字段用于指示所述第一计算指令的寻址模式,所述第一字段内容用于指示所述累加步长信息或者所述第一地址信息,所述第二标识字段用于指示所述第一计算指令的下一条计算指令的寻址模式,所述第二字段内容用于指示执行所述下一条计算指令对应的累加步长信息或者第一地址信息。
一种可选的实施方式中,所述指令处理装置还包括:寄存器堆;其中,所述寄存器堆用于存储以下至少之一:所述累加步长信息、所述第一访存数据和所述第一地址信息。
一种可选的实施方式中,所述指令执行单元包括指令译码单元和指令发射单元;所述指令译码单元,被配置成:对所述第一计算指令的指令内容进行译码,得到译码结果;所述指令发射单元,被配置成:基于所述译码结果向所述寄存器堆发送获取所述累加步长信息的指令;所述指令执行单元,被配置成:基于所述第二地址信息和所述累加步长信息,在所述寄存器堆中确定所述第一访存数据的第一地址信息。
一种可选的实施方式中,所述寄存器堆包含向量寄存器堆和标量寄存器堆,所述向量寄存器堆用于存储第一计算指令的第一访存数据,所述标量寄存器堆用于存储所述累加步长信息和/或所述第一地址信息。
第二方面,本公开实施例提供了一种指令处理方法,包括:获取待处理的第一计算指令;确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式;所述第一访存数据包括用于执行所述第一计算指令的操作数和/或操作数的计算结果;在所述寻址模式为地址累加模式的情况下,基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;所述第二计算指令为所述第一计算指令的上一条指令;基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。
第三方面,本公开实施例提供了一种指令处理装置,包括:第一获取单元,用于获取待处理的第一计算指令;确定单元,用于确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式;所述第一访存数据包括用于执行所述第一计算指令的操作数和/或操作数的计算结果;第二获取单元,用于在所述寻址模式为地址累加模式的情况下,基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;所述第二计算指令为所述第一计算指令的上一条指令;指令执行单元,用于基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。
第四方面,本公开实施例还提供一种芯片,包括上述第一方面中任一项所述的指令处理装置。
第五方面,本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤;或者如第四方面所述的芯片。
第六方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种指令处理方法的流程图;
图2示出了本公开实施例所提供的指令处理方法中,确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式的具体方法的流程图;
图3示出了本公开实施例所提供的另一种指令处理方法的流程图;
图4示出了本公开实施例所提供的第一种指令处理装置的结构示意图;
图5示出了本公开实施例所提供的第二种指令处理装置的结构示意图;
图6示出了本公开实施例所提供的第三种指令处理装置的结构示意图;
图7示出了本公开实施例所提供的第一种指令处理装置的指令处理流程的示意图;
图8示出了本公开实施例所提供的第二种指令处理装置的指令处理流程的示意图;
图9示出了本公开实施例所提供的一种指令处理装置的示意图;
图10示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,计算机指令就是指挥机器工作的指示和命令,按一定顺序排列的指令执行的过程就是计算机的工作过程。指令执行的过程主要包括对存储空间的访问和对数据的计算,其中,存储空间访问的形式包括立即数直接寻址和利用运算结果的间接寻址。间接寻址方式需要实时计算地址的值,因此间接寻址方式带来了额外的指令周期,从而影响了指令的执行效率。
基于上述研究,本公开提供了一种指令处理方法。在本公开实施例中,在获取到第一计算指令之后,可以确定第一计算指令所对应第一访存数据的第一地址信息的寻址模式。在寻址模式为地址累加模式的情况下,可以基于第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息,进而基于该第二地址信息和累加步长信息确定第一地址信息,并基于第一地址信息执行所述第一计算指令。在本公开实施例中,在获取到第一计算指令之后,通过地址累加模式确定第一计算指令的第一访存数据的第一地址信息的方式,可以将第一地址信息的确定过程隐藏在第一计算指令的指令处理过程,从而减少了额外的指令周期,进而加快了指令的执行效率。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种指令处理方法进行详细介绍,本公开实施例所提供的指令处理方法的执行主体一般为具有一定计算能力的电子设备。
参见图1所示,为本公开实施例提供的指令处理方法的流程图,所述方法包括步骤S101~S107,其中:
S101:获取待处理的第一计算指令。
在本公开实施例中,可以从指令寄存器中获取待处理的第一计算指令。这里,第一计算指令可以任意类型的计算指令,例如乘累加指令macc,本公开对此不作具体限定。
S103:确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式;所述第一访存数据包括用于执行所述第一计算指令的操作数和/或操作数的计算结果。
这里,寻址模式包含地址累加模式和直接寻址模式。其中,地址累加模式可以理解为在指令执行过程中,按照预设累加算法确定第一访存数据在存储装置中的第一地址信息(访问地址信息或者存储地址信息)。直接寻址模式可以理解为在执行指令过程中,基于第一计算指令中的地址字段获取该第一访存数据在存储装置中的第一地址信息(访问地址信息或者存储地址信息)。其中,该存储装置可以为内部存储装置中的内存和寄存器堆,还可以为该指令处理装置的外部存储装置。
在本公开实施例中,可以基于第一计算指令的指令内容确定第一访存数据的第一地址信息的寻址模式。具体实施时,可以基于第一计算指令中的指定数据位确定第一访存数据的第一地址信息的寻址模式是地址累加模式,还是直接寻址模式。
S105:在所述寻址模式为地址累加模式的情况下,基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;所述第二计算指令为所述第一计算指令的上一条指令。
在本公开实施例中,第二计算指令为第一计算指令的上一条指令。这里,第二地址信息为第二计算指令对应的第二访存数据在指令处理装置的存储装置的第一地址信息。这里,第二访问数据包括用于执行第二计算指令的操作数和/或该操作数的计算结果。
发明人发现,对于高性能计算场景,多条指令的数据访问地址往往具有一定的关联性,例如,地址往往以一个固定的步长递增。基于此,在本公开实施例中,可以预先设定一个累加步长信息。这里,累加步长信息的确定与第一访存数据在指令处理装置的存储装置中的存储位置相关联。
S107:基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。
在确定出第二地址信息和累加步长信息之后,就可以对第二地址信息和累加步长信息进行累加计算,累加得到第一地址信息。
下面,以卷积运算中的点积运算为例对现有技术中存在的间接寻址方式带来了额外的指令周期的问题来进行说明。
假设,输入数据分别x=[a1,a2,a3],y=[b1,b2,b3],令向量x存储至第一地址信息空间0-2,y存至第一地址信息空间3-5,那么对应点积计算的程序如下:
Figure BDA0003495788980000051
Figure BDA0003495788980000061
在上述程序代码中,macc为乘累加指令。针对上述for循环指令,在每次执行乘累加指令macc的过程中,都要执行以下指令“x_addr=x_addr+1”和“y_addr=y_addr+1”。因此,针对for循环指令的每个循环过程,需要发出并执行上述3个指令,才能实现乘累加指令macc的功能,此时,将消耗3个指令周期。针对处理性能要求较高的指令处理装置中,通过3个指令周期实现一个指令的功能将会降低该指令处理装置的处理性能。
在本公开实施例中,在获取到第一计算指令之后,可以确定第一计算指令所对应第一访存数据的第一地址信息的寻址模式。在寻址模式为地址累加模式的情况下,可以基于第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息,进而基于该第二地址信息和累加步长信息确定第一地址信息,并基于第一地址信息执行所述第一计算指令。在本公开实施例中,在获取到第一计算指令之后,通过地址累加模式确定第一计算指令的第一访存数据的第一地址信息的方式,可以将第一地址信息的确定过程隐藏在第一计算指令的指令处理过程,从而减少了额外的指令周期,进而加快了指令的执行效率。
下面将结合具体实施方式对上述指令处理方法进行介绍。
在本公开实施例中,首先,从指令寄存器中获取待处理的第一计算指令,然后,确定第一计算指令所对应第一访存数据的第一地址信息的寻址模式。
在一个可选的实施方式中,如图2所示,上述步骤S103:确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式,具体包括如下步骤:
步骤S1031:确定所述第一计算指令中的第一使能标识,其中,所述第一使能标识用于指示针对所述第一访存数据的地址累加模式是否使能有效;
步骤S1032:基于所述第一使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式。
在本公开实施例中,可以在第一计算指令的各个数据位中确定包含第一使能标识的指定数据位,并将该指定数据位的数值确定为第一使能标识。
具体实施时,在第一使能标识为第一数值的情况下,可以确定第一访存数据的地址累加模式使能有效;在第一使能标识为第二数值的情况下,可以确定第一访存数据的地址累加模式使能禁止。
这里,第一数值和第二数值可以根据实际需要来进行设定,本公开对此不作具体限定。例如,第一数值可以设置为“1”表示第一访存数据的地址累加模式使能有效,第二数值可以设置为“0”表示第一访存数据的地址累加模式使能禁止。
在本公开实施例中,在获取到第一计算指令之后,可以获取该第一计算指令中指定数据位的数值,进而根据该指定数据位的数值确定第一使能标识。在获取到该第一使能标识之后,就可以基于该第一使能标识确定针对第一访存数据的地址累加模式是否使能有效。
在确定出使能有效的情况下,可以确定针对第一访存数据的第一地址信息的寻址模式为地址累加模式;在确定出使能禁止的情况下,可以确定针对第一访存数据的第一地址信息的寻址模式为非地址累加模式(例如,直接寻址模式)。
上述实施方式中,通过在第一计算指令中确定第一使能标识,进而根据该第一使能标识确定第一访存数据的第一地址信息的寻址模式的方式,可以实现将第一地址信息的确定过程隐藏在第一计算指令的指令处理过程,从而减少了额外的指令周期,进而加快了指令的执行效率。
在确定出第一访存数据的第一地址信息的寻址模式之后,就可以基于该寻址模式确定该第一访存数据的第一地址信息(即上述第一地址信息),下面分情况进行介绍。
情况一:寻址模式为地址累加模式。
在寻址模式为地址累加模式的情况下,可以基于第一计算指令的指令内容获取累加步长信息。
具体实施时,可以基于第一计算指令的指令内容在寄存器堆或者指令编码中获取累加步长信息,下面将对这两种方式分别进行介绍。
方式一:基于寄存器堆的方式。
在寻址模式为地址累加模式的情况下,第一计算指令的指令内容中包含寄存器堆中存储该累加步长信息的寄存器的索引标识。在此情况下,可以基于该索引标识读取对应寄存器中的数据,并将读取到数据确定为累加步长信息。
方式二:基于指令编码的方式。
在寻址模式为地址累加模式的情况下,第一计算指令的指令内容中包含累加步长信息。在此情况下,可以直接根据第一计算指令的指令内容确定累加步长信息。
在按照上述方式一和方式二所描述的方式确定出累加步长信息之后,就可以获取执行第二计算指令过程中所使用操作数的第二地址信息,并基于所述第二地址信息和所述累加步长信息,确定第一地址信息,进而基于所述第一地址信息执行所述第一计算指令。
情况二:寻址模式为直接寻址模式。
在所述寻址模式为直接寻址模式的情况下,获取所述第一计算指令中的地址字段中的字段内容;并基于获取到的所述字段内容确定所述第一访存数据的第一地址信息。
在本公开实施例中,在寻址模式为直接寻址模式的情况下,可以基于第一计算指令的指令内容获取第一访存数据的第一地址信息(即,上述第一地址信息)。
具体实施时,可以基于第一计算指令的指令内容在寄存器堆或者指令编码中获取第一访存数据的第一地址信息,下面将对这两种方式分别进行介绍。
方式一:基于寄存器堆的方式。
在寻址模式为直接寻址模式的情况下,第一计算指令的指令内容中包含寄存器堆中存储该第一地址信息的寄存器的索引标识。在此情况下,可以基于该索引标识读取对应寄存器中的第一地址信息。
方式二:基于指令编码的方式。
在寻址模式为直接寻址模式的情况下,第一计算指令的指令内容中包含第一访存数据的第一地址信息。在此情况下,可以直接根据第一计算指令的指令内容确定第一访存数据的第一地址信息。
在按照上述方式一和方式二所描述的方式确定出第一访存数据的第一地址信息(即,第一地址信息)之后,就可以基于所述第一地址信息执行所述第一计算指令。
举例来说,第一计算指令的指令形式可以为:Opcal(addr1/dlt1=a,addr2/dlt2=b,addr3/dlt3=c),其中,Opcal为上述第一计算指令,(addr1/dlt1,addr2/dlt2,addr3/dlt3)为第一计算指令的部分指令内容。其中,addr1/dlt1和addr2/dlt2为用于确定第一访存数据中操作数的访问信息(例如,操作数的访问地址)的指令内容,addr3/dlt3为用于确定第一访存数据的计算结果的存储信息(例如,计算结果的存储地址)的指令内容。
在寻址模式为地址累加模式的情况下,第一计算指令的部分指令内容中包含以下信息(dlt1=a1,dlt2=b1,dlt3=c1),其中,dlt1,dlt2,dlt3可以表示为第一使能标识使能有效,a1,b1,c1可以为累加步长信息,还可以表示为寄存器堆中存储有该累加步长信息的寄存器的索引标识。
在寻址模式为直接寻址模式的情况下,第一计算指令的部分指令内容中包含以下信息(addr1=a2,addr2=b2,addr3=c2),其中,addr1,addr2,addr3可以表示为第一使能标识使能禁止,a2,b2,c2可以为第一访存数据的第一地址信息,还可以表示为寄存器堆中存储第一访存数据的第一地址信息的寄存器的索引标识。
在一个可选的实施方式中,第一使能标识包括多个第一子使能标识;每个所述第一子使能标识对应所述第一访存数据中的一个数据。
以第一计算指令Opcal(addr1/dlt1=a,addr2/dlt2=b,addr3/dlt3=c)为例来进行说明,其中,addr/dlt即为上述第一使能标识。addr表示为第一使能标识使能禁止,dlt表示为第一使能标识使能有效。
addr1/dlt1,addr2/dlt2和addr3/dlt3为上述多个第一子使能标识,其中,第一子使能标识addr1/dlt1用于指示操作数1的访问地址的寻址模式,第一子使能标识addr2/dlt2用于指示操作数2的访问地址的寻址模式,第一子使能标识addr3/dlt3用于指示第一计算指令的操作数的计算结果的存储地址的寻址模式。
在此情况下,上述步骤S1032:基于所述第一使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式,包括如下步骤:
步骤S10321:在所述多个第一子使能标识中确定与所述第一访存数据中的每个数据相匹配的第一子使能标识;
步骤S10322:基于与所述第一访存数据中的每个数据相匹配的第一子使能标识,确定所述第一计算指令中每个数据的第一地址信息的寻址模式。
应理解的是,上述第一使能标识可以包含多个第一子使能标识,每个第一子使能标识用于指示第一访存数据中每个数据的第一地址信息的寻址模式。这里,第一访存数据中的每个数据可以理解为用于执行该第一计算指令的每个操作数,以及该操作数的计算结果。
也就是说,每个操作数,以及该操作数的计算结果的第一地址信息的寻址模式可以相同,还可以不相同,本公开对此不作具体限定。
这里,针对操作数来说,该第一地址信息可以理解为该操作数的读取地址(也即,下述第一访问地址);针对操作数的计算结果来说,该第一地址信息可以理解为计算结果的存储位置(也即,下述第一存储地址)。
在一个第一计算指令中,各个操作数和操作数的计算结果的第一地址信息的寻址模式可以不完全相同,此时,针对每个操作数据和操作数的计算结果,就可以根据对应的寻址模式确定第一地址信息。
具体实施时,可以在多个第一子使能标识中确定与所述第一访存数据中的每个数据相匹配的第一子使能标识,进而根据匹配到的第一子使能标识的标识内容(addr1/dlt1)确定对应数据的第一地址信息的寻址模式是否为地址累加模式。
上述实施方式中,通过为第一访存数据中的每个数据(即,操作数和操作数的计算结果)均设置对应的第一子使能标识,并根据第一子使能标识控制每个数据的第一地址信息的方式,可以扩展该技术方案适用场景,从而满足程序员的编程需求。
在上述图2所描述的实施方式的基础上,如图3所示,本公开实施例所提供的方法还包括如下步骤:
步骤S301:在确定所述第一使能标识为使能有效之后,在所述第二计算指令中检测第二使能标识;其中,所述第二使能标识用于指示所述第一计算指令中第一使能标识所指示的地址累加模式是否使能有效;
步骤S302:基于所述第二使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息。
对于高性能计算场景,往往需要多重循环实现计算过程。针对每一层循环过程的程序,包含初始指令和循环指令;其中,初始指令用于给定初始地址。假设,循环指令为循环执行N次的指令。如果在该循环指令中设置了地址累加模式使能有效,那么针对该循环指令中的第一条指令所对应的数据地址信息为基于初始地址的数据地址信息进行地址累加计算之后确定的。在此情况下,可能就会出现循环指令中的第一条指令的数据地址信息出现错误,从而导致获取到错误的操作数,进而严重影响了指令计算结果。
基于此,在本公开实施例中,对上述地址累加模式进行了扩展,以使扩展之后的地址累加模式能够更简洁高效地支持循环程序,具体扩展方式为:
在第一计算指令的上一条指令(即,第二计算指令)中设置第二使能标识,该第二使能标识用于指示第二计算指令的下一条计算指令(也即,第一计算指令)中第一使能标识所指示的地址累加模式是否使能有效。
具体实施时,在第一计算指令中的第一使能标识表示为针对第一访存数据的地址累加模式使能有效的情况下,如果第二计算指令中的第二使能标识为使能禁止,则确定第一计算指令中第一使能标识所指示的地址累加模式使能禁止。也就是说,即使根据第一计算指令中的第一使能标识确定出寻址模式为地址累加模式,如果第二使能标识为使能禁止,针对第一计算指令中第一访存数据的寻址模式可以为直接寻址模式,或者,根据第二地址信息确定第一地址信息。
举例来说,第二计算指令为循环程序中的地址初始化指令,在第一计算指令为循环程序中的第一条循环指令的情况下,此时,可以在第一计算指令中设置第一使能标识为使能有效,并在第二计算指令中设置第二使能标识为使能禁止。此时,针对第一条循环指令,就可以通过直接寻址模式确定第一访存数据的第一地址信息,或者,将第二计算指令所对应的第二访存数据的第二地址信息确定为上述第一地址信息。针对循环程序中的其他循环指令,例如,第N条循环指令,N大于1,就可以根据第N-1条循环指令中的第二使能标识确定地址累加模式是否使能有效。
在本公开实施例中,在第二使能标识为第三数值的情况下,可以确定第二计算指令的下一条计算指令中第一使能标识所指示的地址累加模式使能有效;在第二使能标识为第四数值的情况下,可以确定第二计算指令的下一条计算指令中第一使能标识所指示的地址累加模式使能禁止。
这里,第三数值和第四数值可以根据实际需要来进行设定,本公开对此不作具体限定。例如,第三数值可以设置为“1”表示使能有效,第四数值可以设置为“0”表示使能禁止。
应理解的是,上述步骤S301和步骤S302所描述的扩展方案不仅可以应用到多重循环的计算过程,还可以应用到其他计算过程,例如,与多重循环的计算过程相似的计算过程,或者,其他需要指定第一计算指令中的第一使能标识所指示的地址累加模式使能禁止的场景,本公开对此不作具体限定,以能够实现为准。
在一个可选的实施方式中,上述步骤S302:基于所述第二使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息,具体包括如下步骤:
步骤S3021:在确定所述第二使能标识为使能禁止的情况下,确定所述第一计算指令所对应第一访存数据的第一地址信息为第二计算指令所对应第二访存数据的第二地址信息。
在本公开实施例中,在确定第二使能标识为使能有效的情况下,可以按照地址累加模式确定第一访存数据的第一地址信息。具体实施时,可以基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;进而基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。
在确定第二使能标识为使能禁止的情况下,可以将第二计算指令所对应第二访存数据的第二地址信息确定为上述第一地址信息。
下面以上述实施例中的循环程序为例来进行说明。通过上述描述可知,多重循环程序中的每层循环程序包含初始指令和循环指令。其中,初始指令用于给定初始地址。
假设,第二计算指令为循环程序中的地址初始化指令,在第一计算指令为循环程序中的第一条循环指令的情况下,此时,可以在第二计算指令中设置第二使能标识为使能禁止。此时,针对第一条循环指令,就可以将第二计算指令所对应第二访存数据的第二地址信息确定为上述第一地址信息。例如,将地址初始化指令中的第二地址信息,确定为第一条计算指令的第一地址信息。
在本公开实施例中,编程人员可以根据实际需要设定第二使能标识是使能有效,还是使能禁止。通过该处理方式,可以避免循环指令中的第一条指令的数据地址信息出现错误,从而能够获取到准确的操作数。同时,通过该处理方式,可以提高用户所编写程序的灵活性,从而满足编程人员的各种编程需求。
上述实施方式中,通过在第一计算指令的上一条指令中设置第二使能标识,以根据该第二使能标识确定第一计算指令中第一使能标识所指示的地址累加模式是否使能有效的方式,可以扩展该本公开技术方案的适用场景,针对多重循环的计算过程,依然可以通过本公开技术方案对计算指令进行处理,从而提高了循环指令的处理效率。
在一个可选的实施方式中,在第二使能标识包含多个第二子使能标识,每个第二子使能标识对应所述第一访存数据中的一个数据的情况下,上述步骤S302:基于所述第二使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息,具体包括如下步骤:
(1)、在所述多个第二子使能标识中确定与所述第一访存数据中的每个数据相匹配的第二子使能标识;
(2)、基于与所述第一访存数据中的每个数据相匹配的第二子使能标识,确定所述第一访存数据中每个数据的第一地址信息。
在本公开实施例中,上述第二使能标识可以包含多个第二子使能标识,每个第二子使能标识对应所述第一访存数据中的一个数据。这里,第一访存数据中的每个数据可以理解为用于执行该第一计算指令的每个操作数,以及该操作数的计算结果。
在本公开实施例中,可以在多个第二子使能标识中确定与所述第一访存数据中的每个数据相匹配的第二子使能标识,进而根据匹配到的第二子使能标识的标识值确定对应数据的第一地址信息。
举例来说,第二计算指令为:
opinit(addr1,addr2,addr3,nxt_dlt0_on,nxt_dlt1_on,nxt_dlt2_off);
opcal(addr1/dlt1,addr2/dlt2,addr3/dlt3,nxt_dlt0_on,nxt_dlt1_on,nxt_dlt2_off)。
其中,opcal为上述第一计算指令,opinit为第二计算指令,(addr1/dlt1,addr2/dlt2,addr3/dlt3,nxt_dlt_on[2:0])为第一计算指令的部分指令内容。其中,addr1/dlt1和addr2/dlt2为用于确定第一访存数据中操作数的访问信息的指令内容,addr3/dlt3为用于确定第一访存数据中操作数的计算结果的存储信息的指令内容。
假设,第一计算指令中的第一使能标识为地址累加模式使能有效。通过第二计算指令中的第二使能标识(nxt_dlt0_on,nxt_dlt1_on,nxt_dlt2_off)可知,第一计算指令中与“dlt1”和“dlt2”对应的操作数的访问地址的地址累加模式使能有效,第一计算指令中与“dlt3”对应的计算结果的存储地址的地址累加模式使能禁止。
在此情况下,就可以基于地址累加模式确定“dlt1”和“dlt2”对应的操作数的访问地址,并将第二计算指令的计算结果的存储地址确定为该第一计算指令的计算结果的存储地址。
上述实施方式中,通过为第一访存数据中的每个数据均设置对应的第二子使能标识,并根据第二子使能标识控制每个数据的第一地址信息地址累加模式是否使能有效的方式,可以进一步地扩展该技术方案适用场景,从而满足程序员的编程需求。
下面以上述点积计算的程序为例对上述内容进行介绍。针对上述所描述的点积计算的程序,在采用本公开实施例所提供的技术方案之后,该程序可以描述为:
Figure BDA0003495788980000111
Figure BDA0003495788980000121
其中,minit为地址初始化指令,该地址初始化指令为for循环中第一条指令的前一条指令,也即,minit为上述所描述的第二计算指令,for循环中第一条macc指令可以为上述所描述的第一计算指令。
在地址初始化指令中,包含向量x、向量y,以及向量x和向量y的计算结果的初始地址。地址初始化指令中“nxt_dlt0_on,nxt_dlt1_on,nxt_dlt2_on”分别表示在for循环的第一条macc指令中向量x对应的地址累加模式使能有效,for循环的第一条macc指令中向量y对应的地址累加模式使能有效,for循环的第一条macc指令中向量x和向量y的计算结果对应的地址累加模式使能有效。
此时,针对for循环的第一条macc指令,就可以基于地址累加模式确定向量x和向量y的访问地址,并确定向量x和向量y的计算结果的存储地址。
在一个可选的实施方式中,上述指令处理装置中包含寄存器堆,所述寄存器堆用于存储所述累加步长信息和第一访存数据。
在此情况下,上述步骤S105:基于所述第一计算指令获取累加步长信息,包括:基于所述第一计算指令的指令内容在所述寄存器堆中获取所述累加步长信息。
在此情况下,上述步骤S107:基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,包括:基于所述第二地址信息和所述累加步长信息,在所述寄存器堆中确定所述第一访存数据的第一地址信息。
在本公开实施例中,在寻址模式为地址累加模式的情况下,第一计算指令的指令内容中包含寄存器堆中存储该累加步长信息的寄存器的索引标识。在此情况下,可以基于该索引标识读取对应寄存器中的数据,并将读取到数据确定为累加步长信息。
在确定出累加步长信息之后,就可以对第二地址信息和累加步长信息进行累加计算,从而得到第一访存数据的第一地址信息。
在一个可选的实施方式中,所述寄存器堆包含向量寄存器堆和标量寄存器堆,所述向量寄存器堆用于存储第一计算指令的第一访存数据,所述标量寄存器堆用于存储所述累加步长信息。
目前,人工智能的发展对算力提出了更高的要求。在这一背景下,指令处理装置的算力密度不断提高,相应地对访存的性能需求也随之提高。为了满足访存需求,目前的趋势是在指令处理装置内部增加高速的内部存储空间(例如,寄存器堆),指令处理装置的第一计算单元可直接访问这些存储空间(例如,寄存器堆),并在其中进行高效的数据复用,从而提高指令处理装置中第一计算单元的计算效率。
在一个可选的实施方式中,在第一地址信息包括:第一访问地址和第一存储地址的情况下,上述步骤S107:基于所述第一地址信息执行所述第一计算指令,具体包括如下步骤:
步骤S1071:获取所述第一访问地址所对应存储位置中存储的操作数;
步骤S1072:将从所述第一访问地址所对应存储器中获取到的操作数作为所述第一访存数据执行所述第一计算指令,得到所述第一计算指令的第一计算结果,并将所述第一计算结果存储至所述第一存储地址对应的存储位置。
在本公开实施例中,可以获取第一访问地址中对应存储位置中存储的操作数。例如,获取寄存器堆中第一访问地址对应的寄存器中存储的操作数,并将获取到的操作数执行第一计算指令,从而得到第一计算指令的第一计算结果,并将第一计算结果存储至寄存器堆中与第一存储地址对应的寄存器中。
上述实施方式中,通过上述处理方式,可以将第一地址信息的确定过程隐藏在第一计算指令的指令处理过程,从而减少了额外的指令周期,进而加快了指令的执行效率。
参照图4所示,为本公开实施例提供的一种指令处理装置的示意图,所述装置包括:指令处理单元41和指令执行单元42;其中:
指令处理单元41,被配置成获取待处理的第一计算指令;
指令执行单元42,被配置成基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;所述第二计算指令为所述第一计算指令的上一条指令;以及
基于所述第二地址信息和所述累加步长信息,确定所述第一计算指令所对应第一访存数据的第一地址信息,并基于所述第一地址信息执行所述第一计算指令的操作数和/或操作数的计算结果。
在本公开实施例中,在指令处理单元获取到第一计算指令之后,指令执行单元可以基于第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息,进而基于该第二地址信息和累加步长信息确定第一地址信息,并基于第一地址信息执行所述第一计算指令。上述实施方式中,可以将地址计算隐藏在计算指令的指令处理过程中,进而可以减少额外的指令周期,进而加快了指令的执行效率。
在一个可选的实施方式中,指令处理单元41,还被配置成在获取待处理的第一计算指令之后,确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式。
指令执行单元42,还被配置成在所述寻址模式为地址累加模式的情况下,基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;以及基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。
在本公开实施例中,在指令处理单元获取到第一计算指令之后,可以确定第一计算指令所对应第一访存数据的第一地址信息的寻址模式。在寻址模式为地址累加模式的情况下,指令执行单元可以基于第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息,进而基于该第二地址信息和累加步长信息确定第一地址信息,并基于第一地址信息执行所述第一计算指令。在本公开实施例中,在获取到第一计算指令之后,通过地址累加模式确定第一计算指令的第一访存数据的第一地址信息的方式,可以将第一地址信息的确定过程隐藏在第一计算指令的指令处理过程,从而减少了额外的指令周期,进而加快了指令的执行效率。
在一个可选的实施方式中,指令处理单元41,还被配置成:在所述寻址模式为直接寻址模式的情况下,获取所述第一计算指令中的地址字段中的字段内容;以及基于获取到的所述字段内容确定所述第一访存数据的第一地址信息,并向所述指令执行单元发送所述第一地址信息,以使所述指令执行单元基于所述第一地址信息执行所述第一计算指令。
在本公开实施例中,在寻址模式为直接寻址模式的情况下,可以基于第一计算指令的指令内容获取第一访存数据的第一地址信息(即,上述第一地址信息)。
具体实施时,可以基于第一计算指令的指令内容在寄存器堆或者指令编码中获取第一访存数据的第一地址信息。具体可以通过上述实施例中情况二所描述的两种方式获取第一访存数据的第一地址信息,此处不再详细赘述。
在本公开实施例中,如图5所示,指令执行单元42包括:累加寄存器421、第一计算单元442和第二计算单元423。
累加寄存器421,被配置成存储所述第二地址信息;
第一计算单元422,被配置成对所述第二地址信息和所述累加步长信息进行累加计算,得到所述第一地址信息;
第二计算单元423,被配置成获取第一计算单元发送的第一访问地址和所述第一存储地址,并获取所述第一访问地址所对应存储位置中存储的操作数;并将从所述第一访问地址所对应存储器中获取到的操作数作为所述第一访存数据执行所述第一计算指令,得到所述第一计算指令的第一计算结果,并将所述第一计算结果存储至所述第一存储地址对应的存储位置。
在本公开实施例中,在指令执行单元中包含多个第二计算单元的情况下,针对每个第二计算单元都可以设置一个地址累加单元,该地址累加单元包括累加寄存器421和第一计算单元422。进一步地,该地址累加单元中可以包含多个子累加单元,每个子累加单元包括一个累加寄存器421和一个第一计算单元422。例如,每个第二计算单元用于对多个操作数进行计算,得到计算结果,此时,针对每个操作数和计算结果,均可以对应设置一个子累加单元。
第一计算单元在对第二地址信息和所述累加步长信息进行累加计算,得到所述第一地址信息之后,就可以向第二计算单元发送该第一地址信息。其中,第一地址信息包括第一访问地址和第一存储地址。
第二计算单元在获取到第一地址信息之后,就可以获取第一访问地址中对应存储位置中存储的操作数。例如,获取指令处理装置的寄存器堆中第一访问地址对应的寄存器中存储的操作数,并将获取到的操作数执行第一计算指令,从而得到第一计算指令的第一计算结果,并将第一计算结果存储至寄存器堆中与第一存储地址对应的寄存器中。
上述实施方式中,通过上述处理方式,可以将第一地址信息的确定过程隐藏在第一计算指令的指令处理过程,从而减少了额外的指令周期,进而加快了指令的执行效率。
在本公开实施例中,如图5所示,指令处理单元41包括:指令读取单元411、指令译码单元412和指令发射单元413。
指令读取单元,被配置成获取待处理的第一计算指令;
指令译码单元,被配置成确定所述第一计算指令中的第一使能标识,其中,所述第一使能标识用于指示针对所述第一访存数据的地址累加模式是否使能有效;以及基于所述第一使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式;
指令发射单元,被配置成实现指令处理单元与指令执行单元和寄存器堆之间的数据传输。
在本公开实施例中,在指令读取单元读取到第一计算指令之后,指令译码单元就可以获取该第一计算指令中指定数据位的数值,进而根据该指定数据位的数值确定第一使能标识。在获取到该第一使能标识之后,就可以基于该第一使能标识确定针对第一访存数据的地址累加模式是否使能有效。
在确定出使能有效的情况下,可以确定针对第一访存数据的第一地址信息的寻址模式为地址累加模式;之后,指令发射单元就可以向指令执行单元发射累加步长信息,以使指令执行单元基于第二地址信息和累加步长信息确定第一地址信息。
上述实施方式中,通过在第一计算指令中确定第一使能标识,进而根据该第一使能标识确定第一访存数据的第一地址信息的寻址模式的方式,可以实现将第一地址信息的确定过程隐藏在第一计算指令的指令处理过程,从而减少了额外的指令周期,进而加快了指令的执行效率。
在一个可选的实施方式中,第一使能标识的数量为多个;每个所述第一使能标识对应所述第一访存数据中的一个数据。
在此情况下,指令译码单元,被配置成:在所述多个第一使能标识中确定与所述第一访存数据中的每个数据相匹配的第一使能标识;以及基于与所述第一访存数据中的每个数据相匹配的第一使能标识,确定所述第一计算指令中每个数据的第一地址信息的寻址模式。
应理解的是,上述第一使能标识可以包含多个第一子使能标识,每个第一子使能标识用于指示第一访存数据中每个数据的第一地址信息的寻址模式。这里,第一访存数据中的每个数据可以理解为用于执行该第一计算指令的每个操作数,以及该操作数的计算结果。
也就是说,每个操作数,以及该操作数的计算结果的第一地址信息的寻址模式可以相同,还可以不相同,本公开对此不作具体限定。
这里,针对操作数来说,该第一地址信息可以理解为该操作数的读取地址(也即,下述第一访问地址);针对操作数的计算结果来说,该第一地址信息可以理解为计算结果的存储位置(也即,下述第一存储地址)。
在一个第一计算指令中,各个操作数和操作数的计算结果的第一地址信息的寻址模式可以不完全相同,此时,针对每个操作数据和操作数的计算结果,就可以根据对应的寻址模式确定第一地址信息。
上述实施方式中,通过为第一访存数据中的每个数据(即,操作数和操作数的计算结果)均设置对应的第一子使能标识,并根据第一子使能标识控制每个数据的第一地址信息的方式,可以扩展该技术方案适用场景,从而满足程序员的编程需求。
在一个可选的实施方式中,上述指令译码单元412,被配置成:
在确定所述第一使能标识为使能有效之后,在所述第二计算指令中检测第二使能标识;其中,所述第二使能标识用于指示所述第一计算指令中第一使能标识所指示的地址累加模式是否使能有效;以及基于所述第二使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息。
通过上述实施例所描述的可知,在本公开实施例中,对上述地址累加模式进行了扩展,以使扩展之后的地址累加模式能够更简洁高效地支持循环程序,具体扩展方式为:
在第一计算指令的上一条指令(即,第二计算指令)中设置第二使能标识,该第二使能标识用于指示第二计算指令的下一条计算指令(也即,第一计算指令)中第一使能标识所指示的地址累加模式是否使能有效。
具体实施时,在第一计算指令中的第一使能标识表示为针对第一访存数据的地址累加模式使能有效的情况下,如果第二计算指令中的第二使能标识为使能禁止,则确定第一计算指令中第一使能标识所指示的地址累加模式使能禁止。也就是说,即使根据第一计算指令中的第一使能标识确定出寻址模式为地址累加模式,如果第二使能标识为使能禁止,针对第一计算指令中第一访存数据的寻址模式可以为直接寻址模式,或者,根据第二地址信息确定第一地址信息。
在本公开实施例中,指令译码单元,被配置成:在确定所述第二使能标识为使能禁止的情况下,确定所述第一计算指令所对应第一访存数据的第一地址信息为第二计算指令所对应第二访存数据的第二地址信息。
在确定第二使能标识为使能禁止的情况下,可以将第二计算指令所对应第二访存数据的第二地址信息确定为上述第一地址信息。
下面以上述实施例中的循环程序为例来进行说明。通过上述描述可知,多重循环程序中的每层循环程序包含初始指令和循环指令。其中,初始指令用于给定初始地址。
假设,第二计算指令为循环程序中的地址初始化指令,在第一计算指令为循环程序中的第一条循环指令的情况下,此时,可以在第二计算指令中设置第二使能标识为使能禁止。此时,针对第一条循环指令,就可以将第二计算指令所对应第二访存数据的第二地址信息确定为上述第一地址信息。例如,将地址初始化指令中的第二地址信息,确定为第一条计算指令的第一地址信息。
在本公开实施例中,编程人员可以根据实际需要设定第二使能标识是使能有效,还是使能禁止。通过该处理方式,可以避免循环指令中的第一条指令的数据地址信息出现错误,从而能够获取到准确的操作数。同时,通过该处理方式,可以提高用户所编写程序的灵活性,从而满足编程人员的各种编程需求。
在本公开实施例中,第二使能标识包含多个第二子使能标识,每个第二子使能标识对应所述第一访存数据中的一个数据。
在此情况下,指令译码单元,被配置成:在所述多个第二子使能标识中确定与所述第一访存数据中的每个数据相匹配的第二子使能标识;以及基于与所述第一访存数据中的每个数据相匹配的第二子使能标识,确定所述第一访存数据中每个数据的第一地址信息。
在本公开实施例中,上述第二使能标识可以包含多个第二子使能标识,每个第二子使能标识对应所述第一访存数据中的一个数据。这里,第一访存数据中的每个数据可以理解为用于执行该第一计算指令的每个操作数,以及该操作数的计算结果。
在本公开实施例中,可以在多个第二子使能标识中确定与所述第一访存数据中的每个数据相匹配的第二子使能标识,进而根据匹配到的第二子使能标识的标识值确定对应数据的第一地址信息。
上述实施方式中,通过为第一访存数据中的每个数据均设置对应的第二子使能标识,并根据第二子使能标识控制每个数据的第一地址信息地址累加模式是否使能有效的方式,可以进一步地扩展该技术方案适用场景,从而满足程序员的编程需求。
在本公开实施例中,第一计算指令的指令内容包含:至少一个第一数据位和/或至少一个第二数据位,其中,每个所述第一数据位包括:第一使能标识和第一标识内容,每个所述第二数据位包括:第二使能标识和第二标识内容,所述第一使能标识用于指示所述第一计算指令的寻址模式,所述第一标识内容用于指示所述累加步长信息或者所述第一地址信息,所述第二使能标识用于指示所述第一计算指令的下一条计算指令的寻址模式,所述第二标识内容用于指示执行所述下一条计算指令对应的累加步长信息或者第一地址信息。
举例来说,第一计算指令为:opinit(addr1/dlt1=a,addr2/dlt2=b,addr3/dlt3=c,nxt_dlt0_on,nxt_dlt1_on,nxt_dlt2_off)。
其中,addr1/dlt1=a,addr2/dlt2=b,addr3/dlt3=c为上述至少一个第一数据位,addr/dlt即为上述第一使能标识,a,b和c为第一使能标识的第一标识内容。nxt_dlt0_on,nxt_dlt1_on,nxt_dlt2_off为上述至少一个第二数据位,nxt_dlt0、nxt_dlt1和nxt_dlt2为第二使能标识,on或者off为第二使能标识的第二标识内容。
在本公开实施例中,如图6所示,指令处理装置还包括:寄存器堆61;其中,所述寄存器堆用于存储以下至少之一:所述累加步长信息、所述第一访存数据和所述第一地址信息。
在此情况下,指令译码单元,被配置成:对所述第一计算指令的指令内容进行译码,得到译码结果;指令发射单元,被配置成:基于所述译码结果向所述寄存器堆发送获取所述累加步长信息的指令;指令执行单元,被配置成:基于所述第二地址信息和所述累加步长信息,在所述寄存器堆中确定所述第一访存数据的第一地址信息。
下面将结合图7对上述指令处理方法进行介绍,如图7所示,指令处理装置包含:指令处理单元、指令执行单元和寄存器堆;其中,指令执行单元包括:地址累加单元A和第二计算单元A、地址累加单元B和第二计算单元B、地址累加单元C和第二计算单元C。其中,地址累加单元A、地址累加单元B和地址累加单元C中的每个地址累加单元包括:累加寄存器和第一计算单元。
在此基础上,指令处理方法可以描述为如下过程:
基于上述累加指令的思想,可以应用到指令处理装置设计中。将指令处理装置通路简单划分为指令处理单元、指令执行单元和寄存器堆三个部分。其中,指令处理单元负责指令的读取、译码和发射,指令执行单元包括算术、访存等。
执行单元中的计算单元支持以下指令:
opinit(addr1/dlt1,addr1/dlt1,addr2/dlt2,nxt_dlt_on[2:0]);
opcal(addr1/dlt1,addr1/dlt1,addr1/dlt1,nxt_dlt_on[2:0])。
指令处理装置执行上述指令时对地址的解析流程如图7所示:
1)、指令读取单元读取第一计算指令,指令译码单元对第一计算指令进行译码后,解析出寻址模式(直接寻址addr模式/地址累加dlt模式),以及下一次dlt模式中dlt是否使能(nxt_dlt_on/nxt_dlt_off);
2)、指令发射单元与寄存器堆建立通信链路,以通过该通信链路从寄存器堆或者指令编码中取出addr/dlt的值;
3)、对于addr模式,指令执行单元直接使用addr的值读取寄存器堆。
对于dlt模式,累加寄存器中维护上一次的访问地址(即,第二计算指令所对应的第二地址信息),之后,第一计算单元计算累加结果,作为第一地址信息发送给指令执行单元的第二计算单元,指令执行单元的第二计算单元使用该第一地址信息对寄存器堆进行访问。
在一个可选的实施方式中,寄存器堆包含向量寄存器堆和标量寄存器堆,所述向量寄存器堆用于存储第一计算指令的第一访存数据,所述标量寄存器堆用于存储所述累加步长信息和/或所述第一地址信息。
在此情况下,下面将结合图8对上述指令处理方法进行介绍,如图8所示,指令处理装置包含:指令处理单元、指令执行单元、标量寄存器堆和向量寄存器堆;其中,指令执行单元包括:地址累加单元A和第二计算单元A、地址累加单元B和第二计算单元B、地址累加单元C和第二计算单元C。其中,地址累加单元A、地址累加单元B和地址累加单元C中的每个地址累加单元包括:累加寄存器和第一计算单元。
在此基础上,指令处理方法可以描述为如下过程:
基于上述累加指令的思想,可以应用到指令处理装置设计中。将指令处理装置通路简单划分为指令处理单元、指令执行单元和寄存器堆三个部分。其中,指令处理单元负责指令的读取、译码和发射,指令执行单元包括算术、访存等。
本公开实施例所提供的技术方案可拓展到包含并行计算单元的指令处理装置中,如包含SIMD(Single Instruction Multiple Data,单指令多数据流)单元的CPU(CentralProcessing Unit)或者GPU(Graphics Processing Unit)。主要思想为:指令处理装置中包含两个独立的寄存器堆,其中,标量寄存器堆主要用于存储简单标量数据或者控制信息,向量寄存器堆用于存储并行计算的SIMD/SIMT(Single Instruction Multiple Threads,单指令多线程)数据。
这里,向量寄存器堆用于存储第一计算指令的第一访存数据,标量寄存器堆用于存储所述累加步长信息和/或所述第一地址信息。
指令处理装置执行上述指令时对地址的解析流程如图8所示:
1)、指令读取单元读取第一计算指令,指令译码单元对第一计算指令进行译码后,解析出寻址模式(直接寻址addr模式/地址累加dlt模式),以及下一次dlt模式中dlt是否使能(nxt_dlt_on/nxt_dlt_off);
2)、指令发射单元与寄存器堆建立通信链路,以通过该通信链路从寄存器堆或者指令编码中取出addr/dlt的值;
3)、对于addr模式,指令执行单元直接使用addr的值读取向量寄存器堆。
对于dlt模式,累加寄存器中维护上一次的访问地址(即,第二计算指令所对应的第二地址信息),之后,第一计算单元计算累加结果,作为第一地址信息发送给指令执行单元的第二计算单元,指令执行单元的第二计算单元使用该地址对向量寄存器堆进行访问。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与指令处理方法对应的指令处理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述指令处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图9所示,为本公开实施例提供的一种指令处理装置的示意图,所述装置包括:第一获取单元91、确定单元92、第二获取单元93和指令执行单元94;其中:
第一获取单元91,用于获取待处理的第一计算指令;
确定单元92,用于确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式;所述第一访存数据包括用于执行所述第一计算指令的操作数和/或操作数的计算结果;
第二获取单元93,用于在所述寻址模式为地址累加模式的情况下,基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;所述第二计算指令为所述第一计算指令的上一条指令;
指令执行单元94,用于基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。
一种可能的实施方式中,指令执行单元,还用于:在第一地址信息包括:第一访问地址和第一存储地址的情况下,获取所述第一访问地址所对应存储位置中存储的操作数;将从所述第一访问地址所对应存储器中获取到的操作数作为所述第一访存数据执行所述第一计算指令,得到所述第一计算指令的第一计算结果,并将所述第一计算结果存储至所述第一存储地址对应的存储位置。
一种可能的实施方式中,该装置,还用于:在所述寻址模式为直接寻址模式的情况下,获取所述第一计算指令中的地址字段中的字段内容;基于获取到的所述字段内容确定所述第一访存数据的第一地址信息。
一种可能的实施方式中,确定单元,还用于:确定所述第一计算指令中的第一使能标识,其中,所述第一使能标识用于指示针对所述第一访存数据的地址累加模式是否使能有效;基于所述第一使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式。
一种可能的实施方式中,确定单元,还用于:在第一使能标识包括多个第一子使能标识;每个所述第一子使能标识对应所述第一访存数据中的一个数据的情况下,在所述多个第一子使能标识中确定与所述第一访存数据中的每个数据相匹配的第一子使能标识;基于与所述第一访存数据中的每个数据相匹配的第一子使能标识,确定所述第一计算指令中每个数据的第一地址信息的寻址模式。
一种可能的实施方式中,该装置,还用于:在确定所述第一使能标识为使能有效之后,在所述第二计算指令中检测第二使能标识;其中,所述第二使能标识用于指示所述第一计算指令中第一使能标识所指示的地址累加模式是否使能有效;基于所述第二使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息。
一种可能的实施方式中,该装置,还用于:在确定所述第二使能标识为使能禁止的情况下,确定所述第一计算指令所对应第一访存数据的第一地址信息为第二计算指令所对应第二访存数据的第二地址信息。
一种可能的实施方式中,该装置,还用于:在第二使能标识包含多个第二子使能标识,每个第二子使能标识对应所述第一访存数据中的一个数据的情况下,在所述多个第二子使能标识中确定与所述第一访存数据中的每个数据相匹配的第二子使能标识;基于与所述第一访存数据中的每个数据相匹配的第二子使能标识,确定所述第一访存数据中每个数据的第一地址信息。
一种可能的实施方式中,在指令处理装置中包含寄存器堆,所述寄存器堆用于存储所述累加步长信息和第一访存数据的情况下,第二获取单元,还用于:基于所述第一计算指令的指令内容在所述寄存器堆中获取所述累加步长信息;指令执行单元,还用于:基于所述第二地址信息和所述累加步长信息,在所述寄存器堆中确定所述第一访存数据的第一地址信息。
一种可能的实施方式中,所述寄存器堆包含向量寄存器堆和标量寄存器堆,所述向量寄存器堆用于存储第一计算指令的第一访存数据,所述标量寄存器堆用于存储所述累加步长信息。
一种可能的实施方式中,本公开提供的指令处理装置还可以实现为处理器,这里不再赘述。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
对应于图1中的指令处理方法,本公开实施例还提供了一种电子设备1000,如图10所示,为本公开实施例提供的电子设备1000结构示意图,包括:
处理器101、存储器102、和总线103;存储器102用于存储执行指令,包括内存1021和外部存储器1022;这里的内存1021也称内存储器,用于暂时存放处理器101中的运算数据,以及与硬盘等外部存储器1022交换的数据,处理器101通过内存1021与外部存储器1022进行数据交换,当所述电子设备1000运行时,所述处理器101与所述存储器102之间通过总线103通信,使得所述处理器101执行以下指令:
获取待处理的第一计算指令;确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式;所述第一访存数据包括用于执行所述第一计算指令的操作数和/或操作数的计算结果;在所述寻址模式为地址累加模式的情况下,基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;所述第二计算指令为所述第一计算指令的上一条指令;基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的指令处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的指令处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供了一种芯片,该芯片包括上述实施例中任一项所述的指令处理装置,具体可参见上述装置实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (18)

1.一种指令处理装置,其特征在于,包括:指令处理单元和指令执行单元;
所述指令处理单元,被配置成获取待处理的第一计算指令;
所述指令执行单元,被配置成基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;所述第二计算指令为所述第一计算指令的上一条指令;基于所述第二地址信息和所述累加步长信息,确定所述第一计算指令所对应第一访存数据的第一地址信息,并基于所述第一地址信息执行所述第一计算指令的操作数和/或操作数的计算结果。
2.根据权利要求1所述的指令处理装置,其特征在于,
所述指令处理单元,被配置成在获取待处理的第一计算指令之后,确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式;
所述指令执行单元,被配置成在所述寻址模式为地址累加模式的情况下,基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;以及基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。
3.根据权利要求1或2所述的指令处理装置,其特征在于,所述指令执行单元包括:累加寄存器和第一计算单元;
所述累加寄存器,被配置成存储所述第二地址信息;
所述第一计算单元,被配置成在获取所述指令处理单元发送的所述累加步长信息之后,对所述第二地址信息和所述累加步长信息进行累加计算,得到所述第一地址信息。
4.根据权利要求3所述的指令处理装置,其特征在于,所述第一地址信息包括:第一访问地址和第一存储地址;所述指令执行单元包括:第二计算单元:
所述第二计算单元,被配置成获取所述第一计算单元发送的所述第一访问地址和所述第一存储地址,并获取所述第一访问地址所对应存储位置中存储的操作数;并将从所述第一访问地址所对应存储器中获取到的操作数作为所述第一访存数据执行所述第一计算指令,得到所述第一计算指令的第一计算结果,并将所述第一计算结果存储至所述第一存储地址对应的存储位置。
5.根据权利要求2至4中任一项所述的指令处理装置,其特征在于,所述指令处理单元,还被配置成:
在所述寻址模式为直接寻址模式的情况下,获取所述第一计算指令中的地址字段中的字段内容;
基于获取到的所述字段内容确定所述第一访存数据的第一地址信息,并向所述指令执行单元发送所述第一地址信息,以使所述指令执行单元基于所述第一地址信息执行所述第一计算指令。
6.根据权利要求1至5中任一项所述的指令处理装置,其特征在于,所述指令处理单元包括:指令译码单元;
所述指令译码单元,被配置成确定所述第一计算指令中的第一使能标识,其中,所述第一使能标识用于指示针对所述第一访存数据的地址累加模式是否使能有效;以及基于所述第一使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式。
7.根据权利要求6所述的指令处理装置,其特征在于,所述第一使能标识的数量为多个;每个所述第一使能标识对应所述第一访存数据中的一个数据;
所述指令译码单元,被配置成:在所述多个第一使能标识中确定与所述第一访存数据中的每个数据相匹配的第一使能标识;以及基于与所述第一访存数据中的每个数据相匹配的第一使能标识,确定所述第一计算指令中每个数据的第一地址信息的寻址模式。
8.根据权利要求6或7所述的指令处理装置,其特征在于,所述指令译码单元,被配置成:
在确定所述第一使能标识为使能有效之后,在所述第二计算指令中检测第二使能标识;其中,所述第二使能标识用于指示所述第一计算指令中第一使能标识所指示的地址累加模式是否使能有效;以及
基于所述第二使能标识确定所述第一计算指令所对应第一访存数据的第一地址信息。
9.根据权利要求8所述的指令处理装置,其特征在于,所述指令译码单元,被配置成:
在确定所述第二使能标识为使能禁止的情况下,确定所述第一计算指令所对应第一访存数据的第一地址信息为第二计算指令所对应第二访存数据的第二地址信息。
10.根据权利要求8或9所述的指令处理装置,其特征在于,所述第二使能标识包含多个第二子使能标识,每个第二子使能标识对应所述第一访存数据中的一个数据;
所述指令译码单元,被配置成:在所述多个第二子使能标识中确定与所述第一访存数据中的每个数据相匹配的第二子使能标识;以及
基于与所述第一访存数据中的每个数据相匹配的第二子使能标识,确定所述第一访存数据中每个数据的第一地址信息。
11.根据权利要求8至10中任一项所述的指令处理装置,其特征在于,所述第一计算指令的指令内容包含:至少一个第一数据位和/或至少一个第二数据位,其中,每个所述第一数据位包括:第一使能标识和第一标识内容,每个所述第二数据位包括:第二使能标识和第二标识内容,所述第一使能标识用于指示所述第一计算指令的寻址模式,所述第一标识内容用于指示所述累加步长信息或者所述第一地址信息,所述第二使能标识用于指示所述第一计算指令的下一条计算指令的寻址模式,所述第二标识内容用于指示执行所述下一条计算指令对应的累加步长信息或者第一地址信息。
12.根据权利要求1至11中任一项所述的指令处理装置,其特征在于,所述指令处理装置还包括:寄存器堆;其中,所述寄存器堆用于存储以下至少之一:所述累加步长信息、所述第一访存数据和所述第一地址信息。
13.根据权利要求12所述的指令处理装置,其特征在于,所述指令执行单元包括指令译码单元和指令发射单元;
所述指令译码单元,被配置成:对所述第一计算指令的指令内容进行译码,得到译码结果;
所述指令发射单元,被配置成:基于所述译码结果向所述寄存器堆发送获取所述累加步长信息的指令;
所述指令执行单元,被配置成:基于所述第二地址信息和所述累加步长信息,在所述寄存器堆中确定所述第一访存数据的第一地址信息。
14.根据权利要求12或13所述的指令处理装置,其特征在于,所述寄存器堆包含向量寄存器堆和标量寄存器堆,所述向量寄存器堆用于存储第一计算指令的第一访存数据,所述标量寄存器堆用于存储所述累加步长信息和/或所述第一地址信息。
15.一种指令处理方法,其特征在于,包括:
获取待处理的第一计算指令;
确定所述第一计算指令所对应第一访存数据的第一地址信息的寻址模式;所述第一访存数据包括用于执行所述第一计算指令的操作数和/或操作数的计算结果;
在所述寻址模式为地址累加模式的情况下,基于所述第一计算指令获取累加步长信息,并获取第二计算指令所对应第二访存数据的第二地址信息;所述第二计算指令为所述第一计算指令的上一条指令;
基于所述第二地址信息和所述累加步长信息,确定所述第一地址信息,并基于所述第一地址信息执行所述第一计算指令。
16.一种芯片,其特征在于,包括上述权利要求1至14中任一项所述的指令处理装置。
17.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求15所述的指令处理方法的步骤;或者
如权利要求16所述的芯片。
18.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求15所述的指令处理方法的步骤。
CN202210114536.0A 2022-01-30 2022-01-30 指令处理方法、装置、芯片、电子设备以及存储介质 Pending CN114443143A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210114536.0A CN114443143A (zh) 2022-01-30 2022-01-30 指令处理方法、装置、芯片、电子设备以及存储介质
PCT/CN2022/124520 WO2023142524A1 (zh) 2022-01-30 2022-10-11 指令处理方法、装置、芯片、电子设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210114536.0A CN114443143A (zh) 2022-01-30 2022-01-30 指令处理方法、装置、芯片、电子设备以及存储介质

Publications (1)

Publication Number Publication Date
CN114443143A true CN114443143A (zh) 2022-05-06

Family

ID=81371343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210114536.0A Pending CN114443143A (zh) 2022-01-30 2022-01-30 指令处理方法、装置、芯片、电子设备以及存储介质

Country Status (2)

Country Link
CN (1) CN114443143A (zh)
WO (1) WO2023142524A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023142524A1 (zh) * 2022-01-30 2023-08-03 上海商汤智能科技有限公司 指令处理方法、装置、芯片、电子设备以及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019981B1 (en) * 2004-01-06 2011-09-13 Altera Corporation Loop instruction execution using a register identifier
CN110825435B (zh) * 2018-08-10 2023-01-24 昆仑芯(北京)科技有限公司 用于处理数据的方法和装置
CN112699058B (zh) * 2020-12-31 2023-12-29 深圳大普微电子科技有限公司 适用于循环神经网络的寻址方法、装置、加速器以及介质
CN114443143A (zh) * 2022-01-30 2022-05-06 上海阵量智能科技有限公司 指令处理方法、装置、芯片、电子设备以及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023142524A1 (zh) * 2022-01-30 2023-08-03 上海商汤智能科技有限公司 指令处理方法、装置、芯片、电子设备以及存储介质

Also Published As

Publication number Publication date
WO2023142524A1 (zh) 2023-08-03

Similar Documents

Publication Publication Date Title
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
US8094157B1 (en) Performing an occurence count of radices
US7617384B1 (en) Structured programming control flow using a disable mask in a SIMD architecture
CN109062608B (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
US7770024B2 (en) Security message authentication instruction
BR102020019657A2 (pt) aparelhos, métodos e sistemas para instruções de um acelerador de operações de matriz
JP6913693B2 (ja) ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法
US7689541B1 (en) Reordering data using a series of offsets
WO2005111831A2 (en) Physics processing unit instruction set architecture
JP2012103959A (ja) ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
US8572355B2 (en) Support for non-local returns in parallel thread SIMD engine
US7624107B1 (en) Radix sort algorithm for graphics processing units
EP4152146A1 (en) Data processing method and device, and storage medium
JP6807073B2 (ja) 高速ベクトルによる動的なメモリ競合検出
EP1861775B1 (en) Processor and method of indirect register read and write operations
EP3985503A1 (en) Mask operation method for explicit independent mask register in gpu
CN114443143A (zh) 指令处理方法、装置、芯片、电子设备以及存储介质
US5872989A (en) Processor having a register configuration suited for parallel execution control of loop processing
CN108959180B (zh) 一种数据处理方法及系统
EP1378824A1 (en) A method for executing programs on multiple processors and corresponding processor system
JP2008527559A (ja) プロセッサ及びその命令発行方法
CN114461274A (zh) 指令处理装置、方法、芯片、计算机设备以及存储介质
US8285975B2 (en) Register file with separate registers for compiler code and low level code
CN114489791B (zh) 处理器装置及其指令执行方法、计算设备
JP2020502669A (ja) ベクトル生成命令

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