CN117289991A - 处理器以及用于数据处理的方法、设备和存储介质 - Google Patents
处理器以及用于数据处理的方法、设备和存储介质 Download PDFInfo
- Publication number
- CN117289991A CN117289991A CN202210674857.6A CN202210674857A CN117289991A CN 117289991 A CN117289991 A CN 117289991A CN 202210674857 A CN202210674857 A CN 202210674857A CN 117289991 A CN117289991 A CN 117289991A
- Authority
- CN
- China
- Prior art keywords
- target
- instruction
- memory
- vector
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 64
- 238000000034 method Methods 0.000 title claims abstract description 44
- 239000013598 vector Substances 0.000 claims abstract description 171
- 238000004590 computer program Methods 0.000 claims description 8
- 230000017105 transposition Effects 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 abstract description 10
- 230000006870 function Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 18
- 238000013528 artificial neural network Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 238000012549 training Methods 0.000 description 6
- 101100396933 Pseudomonas aeruginosa (strain ATCC 15692 / DSM 22644 / CIP 104116 / JCM 14847 / LMG 12228 / 1C / PRS 101 / PAO1) imm2 gene Proteins 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
根据本公开的实施例,提供了一种处理器以及用于数据处理的方法、设备和存储介质。该处理器包括指令解码器,被配置为解码用于向量操作的目标指令。目标指令涉及目标操作码、源操作数和目标操作数。目标操作码指示目标指令所指定的向量操作。源操作数指定存储器中的用于读取待处理数据的源存储位置。目标操作数指定存储器中的用于写入处理结果的目标存储位置。该处理器还包括算数逻辑单元,被耦合至指令解码器和存储器。算数逻辑单元被配置为:从存储器的源存储位置读取待处理数据;对待处理数据执行与目标指令所指定的向量操作相关联的算数逻辑运算;以及将处理结果写入存储器的目标存储位置。以此方式,可以提高向量计算的效率。
Description
技术领域
本公开的示例实施例总体涉及计算机领域,特别地涉及处理器以及用于数据处理的方法、设备和计算机可读存储介质。
背景技术
随着信息技术的发展,各类处理器可以被应用于多种多样的场景。针对各种应用场景,目前已经提出了由处理器可采用的不同的指令集架构(ISA)。这些指令集架构往往需要兼容各种各样的使用场景。对于一些指令重复性高且数据量大的向量计算,需要更好的指令集架构来使处理器能够更好地处理这样的向量计算。
发明内容
在本公开的第一方面,提供了一种处理器。该处理器包括指令解码器,被配置为解码用于向量操作的目标指令。目标指令涉及目标操作码、源操作数和目标操作数。目标操作码指示目标指令所指定的向量操作。源操作数指定存储器中的用于读取待处理数据的源存储位置。目标操作数指定存储器中的用于写入处理结果的目标存储位置。该处理器还包括算数逻辑单元,被耦合至指令解码器和存储器。算数逻辑单元被配置为:从存储器的源存储位置读取待处理数据;对待处理数据执行与目标指令所指定的向量操作相关联的算数逻辑运算;以及将处理结果写入存储器的目标存储位置。
在本公开的第二方面,提供了一种用于数据处理的方法。该方法包括解码用于向量操作的目标指令。目标指令涉及目标操作码、源操作数和目标操作数。目标操作码指示目标指令所指定的向量操作。源操作数指定存储器中的用于读取待处理数据的源存储位置。目标操作数指定存储器中的用于写入处理结果的目标存储位置。该方法还包括从存储器的源存储位置读取待处理数据;对待处理数据执行与目标指令所指定的向量操作相关联的算数逻辑运算;以及将处理结果写入存储器的目标存储位置。
在本公开的第三方面,提供了一种电子设备。该电子设备至少包括根据第一方面的处理器。
在本公开的第四方面,提供了一种计算机可读存储介质。计算机可读存储介质上存储有计算机程序,计算机程序可由处理器执行以实现第二方面的方法。
应当理解,该内容部分中所描述的内容并非旨在限定本公开的实施例的关键特征或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的描述而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了本公开的实施例能够在其中实现的示例环境的示意图;
图2示出了根据本公开的一些实施例的示例指令的示意图;
图3示出了根据本公开的一些实施例的示例源操作数对应的存储位置的示意图。
图4示出了根据本公开的一些实施例的用于数据处理的过程的流程图;以及
图5示出了其中可以包括根据本公开的一个或多个实施例的处理器的电子设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中示出了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“一些实施例”应当理解为“至少一些实施例”。下文还可能包括其他明确的和隐含的定义。
可以理解的是,本技术方案所涉及的数据(包括但不限于数据本身、数据的获取或使用)应当遵循相应法律法规及相关规定的要求。
如前所述,随着信息技术的发展,各类处理器可以被应用于多种多样的场景。针对各种应用场景,目前已经提出了由处理器可采用的不同的指令集架构。这些指令集架构往往需要兼容各种各样的使用场景。然而,这些常规的指令集架构的使用场景与诸如神经网络计算等的向量计算的使用场景并不一致。因此,对于一些指令重复性高且数据量大的向量计算,需要更好的指令集架构来使处理器能够更好地处理这样的向量计算。
一种常规的方案是采用标准的处理器指令集,诸如精简指令集计算机(RISC)-V指令集等。尽管这些通用的指令集能够完成各种向量计算,诸如各类神经网络算子等,但是由于这些通用指令集需要兼容各种各样的使用场景,因此难以保证较高的执行效率。例如,神经网络算子计算时通常涉及到大量向量计算,这对于通用指令集并不友好。
经研究发现,针对某些大量的向量计算,常规方案的指令集架构并不适用。例如,常规的方案可以使用数字信号处理器(DSP)架构,例如单指令多数据(SIMD)架构,或者可以使用向量处理器(Vector)架构。然而,上述DSP架构的指令集通常不公开。而对于向量处理器架构,例如RISC-V标准下的向量指令集(简称为RISC-V向量指令集),这些指令集通常复杂度较高,对诸如神经网络算子等向量计算显得冗余。
综上,对于一些指令重复性高且数据量大的向量计算,需要设计出更适用于向量计算的指令集,以提高处理器的计算效率。
根据本公开的实施例,提出了一种用于处理器的改进方案。在该方案中,处理器包括指令解码器和算数逻辑单元。指令编码器用于接收用于处理向量操作的目标指令。该目标指令适用于存储器到存储器(MEM to MEM)的处理器架构。例如,该目标指令涉及目标操作码、源操作数和目标操作数。目标操作码指示目标指令所指定的向量操作,源操作数至少指定存储器中的用于读取待处理数据的源存储位置,目标操作数至少指定存储器中的用于写入处理结果的目标存储位置。
处理器的算数逻辑单元被耦合至指令解码器和存储器。该算数逻辑单元被配置为根据指令解码器对目标指令的解码信息来执行该目标指令的向量操作。例如,算数逻辑单元被配置为从存储器的源存储位置读取的待处理数据;对待处理数据执行与目标指令所指定的向量操作相关联的算数逻辑运算;以及将待处理数据的处理结果写入存储器的目标存储位置。
本方案通过采用适用于存储器到存储器架构的处理器,来简化处理器的操作。以此方式,处理器能够使用简单的指令集来完成大量的向量计算。例如,处理器能够使用简单的指令集来进行神经网络向量计算。通过这样,本方案能够采用简单的指令集来提高处理器执行向量计算的效率。
图1示出了本公开的实施例能够在其中实现的示例环境100的示意图。在该环境100中,处理器110可以表示任何种类的指令处理装置。例如,处理器110可以是通用处理器或者其他任何适当的处理器。处理器110被配置为接收指令140并且执行该指令140所指示的操作,诸如向量操作。例如,处理器110可以从环境100中的其他设备接收指令140。在一些实施例中,指令140是SIMD指令。
处理器110包括指令解码器120和算数逻辑单元130。备选地或附加地,处理器110还可以包括存储器(未示出)或者通信地偶合到存储器。例如,存储器可以是数据存储器(诸如,向量紧耦合存储器(Vector Closely-coupled Memory,VCCM))。指令解码器120、算数逻辑单元130和存储器可通信地耦合。也即,指令解码器120、算数逻辑单元130和存储器可以根据适当的数据传输协议和/或标准实现彼此通信。在运行中,指令解码器120接收指令140,并且对指令140进行解码。例如,指令解码器120可以将指令140解码为可以由算数逻辑单元130进行处理的算数运算和/或逻辑运算等。指令解码器120可以使用各种不同的机制来实现。例如,指令解码器120可以使用硬件电路来实现,或者至少部分地借助于软件模块来实现。
算数逻辑单元130被配置为基于由指令解码器120对指令140进行解码所获得的信息来进行操作。算数逻辑单元130可以执行各类算数操作、逻辑操作,等等。算数逻辑单元130可以使用各种不同的机制来实现。例如,算数逻辑单元130可以使用硬件电路来实现,或者至少部分地借助于软件模块来实现。
应理解,仅出于示例性的目的描述环境100的结构和功能,而不暗示对于本公开的范围的任何限制。例如,处理器110可以被应用于各种现有的或将来的计算平台或计算系统中。处理器110可以在各种嵌入式应用(例如,移动网络基站等的数据处理系统)中实现,以提供诸如大量向量计算等服务。处理器110也可以被集成或嵌入到各种电子设备或计算设备中,以提供各种计算服务。处理器110的应用环境和应用场景在此不受限制。
在一些实施例中,指令解码器120对接收到的指令140进行解码。在本文中,指令140有时也被称为“目标指令”,二者在本上下文中可以互换使用。图2示出了根据本公开的一些实施例的示例指令140的示意图。如图2所示,指令140包括目标操作码210、源操作数220和目标操作数230。在本文中,目标操作码210有时也被称为“操作码(opcode)”,二者在本上下文中可以互换使用。目标操作码210可以指示指令140所指定的向量操作。源操作数220至少用于指定存储器中的用于读取待处理数据的源存储位置。目标操作数230至少用于指定存储器中的用于写入处理结果的目标存储位置。
在一些实施例中,指令解码器120对目标操作码210、源操作数220和目标操作数230所指示的上述信息进行解码,以供算数逻辑单元130进行处理。例如,算数逻辑单元130被配置为从由源操作数220指定的存储器中的源存储位置读取待处理数据。算数逻辑单元130对待处理数据执行与指令140所指定的向量操作相关联的算数逻辑运算。算数逻辑单元130进而将待处理数据的处理结果写入目标操作数230所指定的目标存储位置。
在一些实施例中,指令140可以使用诸如二进制来编码。在其他实施例中,指令140可以使用其他编码形式或者其他进制来编码。在本文中,除非特别说明,以下所描述的指令140的编码格式和编码表示均以二进制为例。例如,二进制形式的指令140可以采用如下的表1中的格式来定义。
表1指令格式定义
如表1所示,第86位至第95位用于表示指令140的目标操作码210。第22位至第85位的各个操作数用于表示指令140的源操作数220。第0位至第21位的各个参数用于表示指令140的目标操作数230。当然,应当理解的是,除非特别说明,否则在这里以及本文其他地方出现的任何具体数值或者位数都是示例性的。例如,以上所列举的各个操作码和/或操作数所位于的位数是示例性的,而不是限制性的。指令140的目标操作码210、源操作数220和目标操作数230可以位于其他适当的位数处。
例如,第70位至第85位的源操作数A_vaddr用于表示存储器,例如数据存储器(诸如,VCCM)内的A通道(也被称为存储器的第一存储空间)的数据的地址索引,即VCCM[A_vaddr]的地址索引。该地址索引以一个向量单词(vector word)为单位。向量单词可以表示存储器内的通道的存储单元,该存储单元以SIMD的宽度为宽度。即,该地址索引以一个SIMD宽度为单位。在一些实施例中,存储器的深度例如为1024。在这一示例中,可以仅使用第70位至第85位中的10个位来表示A通道的地址索引。当然,应当理解,存储器可以具有其他适当的深度,地址索引也可以具有其他适当的位数。
又如,第60位至第69位的源操作数A_index用于表示存储器内的A通道的向量单词的元素索引。每个向量单词可以有例如64个元素。该元素索引可以用于指示A通道内的向量单词中的某个元素。在一些实施例中,如果A通道的向量单词被划分为例如64个元素,则可以仅使用第60位至第69位中的6个位来表示A_index。再如,第54位至第59位的源操作数A_vm用于表示A通道的向量掩码(VM)寄存器的索引。在一些实施例中,A通道具有16个VM寄存器。在这样的示例中,可以仅使用第54位至第59位的中的4个位来表示A_vm。
类似地,第38位至第53位的源操作数B_vaddr用于表示存储器(例如,数据存储器VCCM)内的B通道(也被称为存储器的第二存储空间)的地址索引,即VCCM[B_vaddr]的地址索引。该地址索引以一个向量单词为单位。即,该地址索引以一个SIMD宽度为单位。第28位至第37位的源操作数B_index用于表示B通道的向量单词的元素索引。第22位至第27位的源操作数B_vm用于表示B通道的向量掩码寄存器的索引。
表1中目标操作数230的示例包括第6位至第21位的C_vaddr可以表示数据存储器VCCM的C通道的地址索引,即VCCM[C_vaddr]的地址索引。该地址索引以一个向量单词为单位。即,该地址索引以一个SIMD宽度为单位。目标操作数230的示例还包括第0位至第5位的C_vm,其表示C通道的向量掩码寄存器的索引。
图3示出了根据本公开的一些实施例的示例源操作数对应的存储位置的示意图。在图3的示例中,存储器的存储空间被划分为多个通道,诸如通道310-1、通道310-2、……、通道310-N等,其中N为大于1的整数。为便于讨论,下文中将通道310-1、通道310-2、……、通道310-N统称为或单独称为通道310。在一些实施例中,N的数值可以是预先设置的。例如,N可以被设置为1024、512等不同的数值。各个通道310包括例如1024位或其他适当的位数。地址索引330(例如,源操作数A_vaddr、B_vaddr或者目标操作数C_vaddr)可以指示通道310-1的地址。通道310的地址可以以向量单词为单位。地址索引330可以是16位的。例如,如果地址索引330为“0b0000_0000_0000_0000”,则该地址索引330可以指示通道310-1。又如,在一些实施例中,在存储器的深度或者通道的数目为1024的示例中,地址索引330也可以是10位的,例如由地址“0b00_0000_0000”来指示通道310-1。注意,本文中以“0b”开头的编码表示均表示二进制表示,下文中将不再进行重复说明。二进制表示中出现的“_”仅为了便于查看,而不具有实际含义,并且不占据二进制位。
在一些实施例中,各个通道310的向量单词可以被划分为多个元素,例如元素320。元素320可以包括例如64位。元素索引340(例如,源操作数A_index或者B_index)可以指示某个元素,例如元素320的索引。元素索引340可以是10位的。例如,元素索引340为“0b00_0000_0000”,则该元素索引340可以指示元素320。又如,在各个通道310的向量单词内的元素数目为64的示例中,元素索引可以是6位的,例如元素索引“0b00_0000”可以指示元素320。
应当理解的是,除非特别说明,否则在这里以及本文其他地方出现的任何具体数值、位数以及二进制表示都是示例性的。例如,在其他实施例中,各个通道可以具有不同的位数,各个向量单词也可以采用不同的位数。相应地,地址索引和元素索引也可以具有不同的位数和不同的编码表示。本公开的范围在此方面不受限制。
以上参考表1列举了源操作数220的若干示例。下面将参考表2描述源操作数220的更多的示例。
表2指令格式定义
位 | [95:86] | [85:54] | [53:22] | [21:6] | [5:0] |
操作码 | A_imm | B_imm | C_vaddr | C_vm |
如表2所示,源操作数220可以包括位于第54至第85位的A_imm,其表示指令140中的一个立即数。类似地,源操作数220还可以包括位于第22至第53位的B_imm,其表示指令140中的另一个立即数。与表1类似,表2中的目标操作数230也可以包括C_vaddr和/或C_vm。
应理解,以上结合表1和表2所描述的各个源操作数和/或各个目标操作数仅仅是是示例性的,而不是限制性的。本公开所采用的源操作数220和/或目标操作数230可以包括以上任意一种或多种源操作数和/或目标操作数。在一些实施例中,源操作数220和/或目标操作数230可以包括与以上源操作数和/或目标操作数不同的其他任何适当的操作数类型。
以下的表3描述了指令140的操作码的示例编码方式。例如,如果第0位为0,则表示该指令140为变量类型。如果第0位为1,则表示该指令140为立即数类型。第1位至第2位表示指令140的子功能编码。第3位至第7位表示指令140的功能编码。第8位至第9位表示指令140的计算精度。例如,二进制“00”可以表示计算精度为单精度浮点数。其他二进制数值可以表示预留的其他计算精度。
表3示例操作码编码方式
当然,应当理解的是,表3所示出的指令140的操作码的编码方式仅仅是是示例性的,而不是限制性的。例如,在其他实施例中,可以使用其他编码方式来对指令140进行编码。
在一些实施例中,可以根据指令140的目标操作码210来确定指令140所指定的向量操作。例如,处理器110可以预先存储各个指令的操作码。指令解码器120可以根据接收到的指令140的目标操作码210来确定该指令140所指定的向量操作。例如,如果指令140的目标操作码210被编码为“0b00_00110_01_0”,则指令解码器120可以将该指令140确定为v2indexr指令。应理解,以上所列举的操作码和指令类型的示例仅仅是是示例性的,而不是限制性的。具有被编码为“0b00_00110_01_0”的指令也可以指定其他的向量操作。
以下将描述指令140以及处理器110对执行140的示例执行方式的若干示例。在一些实施例中,源操作数220可以包括两个源操作数,例如A_vaddr与B_vaddr,或者A_vaddr与B_imm。每个源操作数的宽度可以是SIMD宽度。备选地或附加地,在一些实施例中,源操作数220可以仅包括一个源操作数B_vaddr等。目标操作数230,例如C_vaddr可以指定将处理结果写回存储器的目标存储位置,即VCCM[C_vaddr]处。
在一些实施例中,指令140的目标存储位置处包括处理结果向量。目标操作数230还指示目标VM寄存器,例如C_vm或者vm3。目标VM寄存器的各个位置处的值指示处理结果向量的相应位置处是否要被写入相应的处理结果。例如,如果目标寄存器vm3[i]为1,则表示处理结果向量单词的第i个元素是写使能的,可以被写入相应的处理结果。反之,如果目标寄存器vm3[i]为0,则处理结果向量单词的第i个元素不能被写入相应的处理结果。
表4描述了处理器110可以支持的若干示例指令。表4的指令可以参考表1或表2的指令定义来描述,并且可以参考表3的示例编码方式进行编码。在表4的示例中,目标操作数230均包括C_vaddr(即,&v3)和C_vm(即,vm3)。表4中的预留(reserved)表示预留的一个或多个位。这些预留的位可以在后续被编码或者使用。
表4示例指令
作为一个实施例,指令140包括第一索引确定指令(例如,表4中的v2indexl或v2indexr)。在这一示例中,源操作数220指定存储器的第一存储空间的位置,即,通道A的地址索引(A_vaddr为&v1)。源操作数220还指定存储器的第二存储空间内的待处理数据的给定索引值,即通道B的向量单词内的元素索引(B_vaddr为&v2,B_index为index2)。在这一示例中,算数逻辑单元130被配置为:确定第一索引。该第一索引指示待处理数据中的由给定索引值所指示的位置处的值在第一存储空间中的存储位置。
例如,指令v2indexl的操作码可以被编码表示为“0b00_00110_00_0”,指令v2indexl v1,v2,index2,v3,vm3表示将v3[i]赋值为indext,其中indext是能够使得v1[indext]等于v2[index2]的从左至右的第一个元素的索引。如果没有元素满足上述条件,则将indext设置为由二进制补码表示的“-1”。在一些实施例中,目标操作数230还指示目标向量掩码寄存器。目标向量掩码寄存器的各个位置处的值指示处理结果向量的相应位置处是否要被写入相应的处理结果。例如,如果vm3[i]等于1,则v3[i]是写使能的。
又如,指令v2indexr的操作码可以被编码表示为“0b00_00110_01_0”。指令v2indexr v1,v2,index2,v3,vm3表示将v3[i]赋值为indext,其中indext是能够使得v1[indext]等于v2[index2]的从右至左的第一个元素的索引。如果没有元素满足上述条件,则将indext设置为由二进制补码表示的“-1”。在这一示例中,如果vm3[i]等于1,则v3[i]是写使能的。
作为另一实施例,指令140包括第二索引确定指令(例如,表4中的v2indexli或v2indexri)。在这一示例中,源操作数220指定存储器的第一存储空间的位置,即,通道A的地址索引(A_vaddr为&v1)。源操作数220还指定第一立即数,即,立即数imm2。在这一示例中,算数逻辑单元被配置130确定第二索引。该第二索引指示第一立即数在第一存储空间中的存储位置。
例如,指令v2indexli的操作码被编码表示为“0b00_00110_00_1”。指令v2indexliv1,imm2,v3,vm3表示将v3[i]赋值为indext,其中indext是能够使得v1[indext]等于imm2的从左至右的第一个元素的索引。如果没有元素满足上述条件,则将indext设置为由二进制补码表示的“-1”。在这一示例中,如果vm3[i]等于1,则v3[i]是写使能的。
又如,指令v2indexri的操作码可以被编码表示为“0b00_00110_01_1”。指令v2indexri v1,imm2,v3,vm3表示将v3[i]赋值为indext,其中indext是能够使得v1[indext]等于imm2的从右至左的第一个元素的索引。如果没有元素满足上述条件,则将indext设置为由二进制补码表示的“-1”。在这一示例中,如果vm3[i]等于1,则v3[i]是写使能的。
作为另一示例,指令140可以包括第一数值确定指令,例如表4中的指令sindex2v。源操作数220指定存储器的第一存储空间的位置即,通道A的地址索引(A_vaddr为&v1)。源操作数220还指定存储器的第二存储空间内的待处理数据的给定索引值,即通道B的向量单词内的元素索引(B_vaddr为&v2,B_index为index2)。
在这一示例中,算数逻辑单元130被配置为:确定待处理数据在由给定索引值所指示的位置处的给定值,并且确定第一存储空间中的在以给定值为索引的位置处的第一值。例如,指令sindex2v v1,v2,index2,v3,vm3,具有编码为“0b00_00110_10_0”的操作码。该指令表示将v3[i]赋值为v1[v2[index2]]。如果vm3[i]等于1,则v3[i]是写使能的。
在一些实施例中,指令140包括第二数值确定指令。在这一示例中,源操作数220指定存储器的第二存储空间内的待处理数据的给定索引值,即B_vaddr为&v2,B_index为index2。算数逻辑单元130被配置为:确定待处理数据中的由给定索引值所指示的位置处的第二值。例如,指令s2v v2,index2,v3,vm3,具有编码为“0b00_00110_10_1”的操作码。该指令表示将v3[i]赋值为v2[index2]。如果vm3[i]等于1,则v3[i]是写使能的。
通过使用以上描述的诸如第一索引确定指令、第二索引确定指令、第一数值确定指令和第二数值确定指令中的一个或多个,处理器110可以更好地处理一些诸如求取坐标的算子,例如求最大值的索引(ArgMax)算子、求最小值的索引(ArgMin)算子或者求最高排序的K个值(TopK)算子等算子。以ArgMax为例,其用于求使得向量v中的值v[index]为最大值的索引。64个元素的ArgMax所需的指令如下:首先,v2smax v1,vm1,v2,vm2(该指令将在下文的表5和表6中进行描述),该指令求v1中的最大的元素值,并将其写入v2,其中,vm1和vm2存储值全部位为1;接下来,v2indexl v1,v2,0,v3,vm3,该指令求index使得v1[index]等于v2[0],并将index的值写入v3,其中vm3存储值的全部位为1。
在一些实施例中,目标指令包括向量转置指令,例如指令vtranspose或vstranspose。源操作数220指定存储器中的第一存储空间中的第一位置,即A_vaddr为&v1,A_index为index1。源操作数220还指定源向量掩码寄存器vm1和可选的vm2。在该示例中,算数逻辑单元130被配置为:将第一存储空间中的第一位置处的待处理数据进行向量转置,以获得转置后的待处理数据。
例如,向量转置指令vtranspose v1,index1,vm1,vm2,v3,vm3,具有编码表示为0b00_00111_11_0的操作码,其用于将例如32*32的向量(或矩阵)进行转置。在该示例中,vm1和vm2的值为读通道(lane)使能;vm3的值为写通道使能。vm1中连续为1的位的数目R用于表示矩阵的行数,vm2中连续为1的位的数目C用于表示矩阵的列数,其中R和C均为任意自然数,R与C可以相同也可以不同。vm1、vm2和vm3的有效位必须是连续的,否则以最低位的第一个1为准。上述向量转置指令vtranspose可以用于将R*C的矩阵进行转置。
又如,在一些实施例中,可以使用向量转置指令vstranspose v1,index1,vm1,v3,vm3,其用于将方阵进行转置。在该示例中,vm1的值为读通道使能;vm3的值为写通道使能。vm1中连续为1的位的数目R用于表示方阵的行数(或列数)。该向量转置指令vstranspose可以用于将R*R的方阵进行转置。
向量转置指令并不是标准RISC类型的指令。在常规的标准RISC类型的指令集中,必须通过连续多条转置指令才能完成向量的转置功能。本方案通过使用向量转置指令,能够提高部分网络的计算能力。例如,对于神经网络训练过程,通常会涉及大量的矩阵或方阵的转置操作。利用本方案的向量转置指令,能够提高神经网络训练过程的计算效率。
在一些实施例中,目标指令包括指数指令,例如vexp。在该示例中,源操作数220指定源存储位置,即A_vaddr为&v1。算数逻辑单元130被配置为:以源存储位置处的待处理数据为幂来确定以预定数值(例如,自然底数e)为底数的指数值。例如,vexp v1,v3,vm3,具有编码表示为“0b00_01000_01_0”的操作码,该指令表示将v3[i]赋值为exp(v1[i])。如果vm3[i]等于1,则v3[i]是写使能的。
上述指数指令适用于sigmoid算子以及双曲函数sinh/cosh/tanh等算子。例如,sigmoid算子、sinh算子、cosh算子和tanh算子可以由以下式(1)-式(4)来表示。
在式(1)-(4)中,x表示待处理数据。
例如,在神经网络激活函数中,sigmoid与双曲函数较为常见。通过使用本方案的指数指令,能够提高这类计算的效率。
在一些实施例中,指令140包括VM寄存器指令,例如vm2index指令。源操作数220指示存储器中的源VM寄存器,即vm1。算数逻辑单元被配置为:将源VM寄存器中被启用的位置处的索引存储到目标存储位置处。例如,指令vm2index vm1,v3,vm3,具有编码表示为“0b00_01100_01_0”的操作码,其表示v3[i]=vm1[i]?i:-1。即,如果vm1[i]的值为1,则将v3[i]赋值为i、反之,如果vm1[i]的值为0,则将v3[i]赋值为-1(例如,二进制补码表示的“-1”)。如果vm3[i]等于1,则v3[i]是写使能的。
在一些实施例中,指令140包括独热(onehot)码转换指令,例如vindex2vm。这是一种VM寄存器操作指令。在这一示例中,源操作数220指定存储器的第二存储空间内的待处理数据的给定索引值,即B_vaddr为&v2,B_index为index2。该指令涉及的读取向量掩码寄存器的行为,不是作为存储器写入的写使能(其他写入存储器的指令都需要读取向量掩码寄存器作为写使能)。目标操作数230指定目标VM寄存器,即vm3。算数逻辑单元被配置为:将待处理数据在给定索引值处的值转换为独热码,并且将该独热码存储到目标VM寄存器中。例如,指令vindex2vm v2,index2,vm3,具有编码表示为“0b00_10000_01_0”的操作码。该指令表示将vm3赋值为onehot(v2[index2]),其中onehot()表示独热码转换函数。
以上所描述的独热码转换指令适用于索引类指令,并且可支持独热码算子。将数字转换为独热编码形式。例如,在实际使用时可以用以下两条指令来实现:vindex2vm v1,0,vm 1以及vmload vm1,v2,vm2,其中第一条指令用于将v1[0]的数值转换为独热编码形式,并且写入vm1,第二条指令(vmload将在下文的表7和表8中进行描述)用于将vm1中的数值存储至v2,其中vm2的存储值全部位为1。
以上结合表4描述了本公开的处理器110所支持的各类指令140的示例。应理解,本公开的处理器110还可以支持更多的指令。以下的表5示出了处理器110所支持的更多的常规的指令140的示例。表5的指令可以参考表1或表2的指令定义来描述,并且使用表3的示例编码方式对操作码进行编码。
表5示例常规指令
/>
/>
/>
表5中的各个指令的功能和定义将由表6示出。这些指令的功能包括了各种加法、减法、乘法、除法、求最大值、求最小值、求倒数(仅支持立即数)、根据给定值对操作数移位,等等。这些指令提供了处理器110的基础计算,在此不进行详细描述。
表6示例常规指令的功能
/>
/>
/>
/>
表6中的MAX()和MIN()函数分别表示求最大值和求最小值的函数。DW表示向量单词的宽度,LANE_NUM表示一个向量单词中元素的数目,mod()函数表示求余函数,ceil()和floor()函数分别表示向上取整和向下取整,SUM()函数表示求和函数。
在一些实施例中,处理器110所支持的指令还包括各种向量掩码寄存器访问和操作指令。表7中示出了向量掩码寄存器访问和操作指令的若干示例。表7中的各个指令的功能和定义将由表8示出。这些指令的功能包括了向量掩码寄存器的读取、写入和操作。这些指令涉及的读取向量掩码寄存器的行为,不是作为存储器写入的写使能(其他写入存储器的指令都需要读取向量掩码寄存器作为写使能)。这些指令在此不进行详细描述。
表7示例向量掩码寄存器指令编码
/>
/>
表8示例向量掩码寄存器指令的功能
/>
在一些实施例中,处理器110所支持的指令140还包括内部寄存器访问和操作指令。这类指令用于处理内部寄存器的访问以及一些特殊操作。例如,写入内部控制和状态(CSR)寄存器,写入固定值、或数据存储器VCCM中的某个SIMD长度数据等。又如,读出内部CSR寄存器或者读出到数据存储器VCCM;以及空指令(即,不进行任何操作,等待1个周期)等。
以下的表9示出了内部寄存器访问和操作指令的若干示例。表10示出了表9中的各个指令的功能。这些指令在本文中不进行详细描述。注意,对于表9中的vwcsr指令,源操作数在A通道;而对于vwcsri指令,立即数在B通道。
表9示例内部寄存器指令
/>
表10示例内部寄存器指令的功能
以上结合表4-表10描述了处理器110所支持的各个指令。这些指令可以由处理器110的指令解码器120进行解码,并且由算数执行单元130来执行。这些指令可以构成由处理器110所支持的指令集。应当理解,在一些实施例中,可以仅由上述各个指令中的部分或全部的指令来构建指令集。备选地或附加地,还可以采用以上没有描述的其他适当的指令来构建由处理器110支持的指令集。
此外,应当理解,虽然以上参考表1-表3规定的示例指令定义和示例操作码编码表示列举了表4-表10中的各个指令,但这仅仅是示例性的,而不是限制性的。本公开的处理器所支持的指令集可以采用任何适当的方式进行定义和编码。例如,各个指令的各个位可以具有不同于表1或表2中各个位所表示的含义。又如,各个指令的操作码的编码表示可以具有与表3中不同的位数,各个位数也可以与表3中的各个位具有不同的含义。上述表4-表10中的各个指令的操作码的编码表示可以改变或者互换。各个指令也可以使用其他的名称来表示。本公开的范围在此方面不受限制。
以上所描述的指令中不包括分支类型的指令,也不包括加载/存储(load/store)类型的指令。与传统的诸如向量寄存器文件的SIMD处理器不同,本公开所采用的寄存器是存储器到存储器的SIMD处理器架构。上述指令集定义了多个(例如,64个或更多或更少的)向量掩码寄存器,用于表示每个SIMD指令需要处理的具体的向量。
本方案通过采用适用于存储器到存储器架构的SIMD处理器,来简化处理器110的操作。以此方式,处理器110能够使用简单的指令集来完成大量的向量计算。例如,处理器110能够使用简单的指令集来进行神经网络算子的向量计算等任务。通过这样,本方案能够采用简单的指令集来提高处理器执行向量计算的效率。对于诸如神经网络训练和/或推理等计算,本公开的方案能够极大地提高计算效率。例如,根据本公开的实施例的处理器可以支持各种索引确定指令,从而提高各种诸如求取坐标等向量计算的效率。又如,本公开的处理器可以处理诸如向量转置指令,从而提高神经网络训练过程中的相应计算的计算效率。再如,本公开的处理器能够支持指数指令,从而使得诸如sigmoid算子和双曲函数算子等的计算效率得以提高和优化。
图4示出了根据本公开的一些实施例的用于数据处理的过程400的流程图。过程400可以在处理器110处实现。为便于讨论,将参考图1的环境100来描述过程400。
在框410,由处理器110解码用于向量操作的目标指令,例如指令140。例如,可以由处理器110的指令解码器120解码指令140。指令140涉及目标操作码210、源操作数220和目标操作数230。目标操作码210指示指令140所指定的向量操作。源操作数220至少指定存储器中的用于读取待处理数据的源存储位置。目标操作数230至少指定存储器中的用于写入处理结果的目标存储位置。
在框420,由处理器110从存储器的源存储位置读取待处理数据。例如,可以由处理器110的算数逻辑单元130从存储器的源存储位置读取待处理数据。在框430,由处理器110对待处理数据执行与目标指令所指定的向量操作相关联的算数逻辑运算。例如,可以由处理器110的算数逻辑单元130执行上述算数逻辑运算。在框440,由处理器110将待处理数据的处理结果写入存储器的目标存储位置。例如,可以由处理器110的算数逻辑单元130将处理结果写入目标存储位置。
在一些实施例中,指令140包括索引确定指令。索引确定指令可以是第一索引确定指令(v2indexl或v2indexr)或者第二索引确定指令(v2indexli或v2indexri)。源操作数220指定存储器的第一存储空间的位置,源操作数220还指定存储器的第二存储空间内的待处理数据的给定索引值或者第一立即数。在框430处,处理器110执行的算数逻辑运算包括:确定第一索引或者确定第二索引。第一索引指示待处理数据中的由给定索引值所指示的位置处的值在第一存储空间中的存储位置。第二索引指示第一立即数在第一存储空间中的存储位置。
在一些实施例中,指令140包括第一数值确定指令(例如,指令sindex2v),源操作数220指定存储器的第一存储空间的位置,源操作数220还指定存储器的第二存储空间内的待处理数据的给定索引值。在框430处,处理器110执行的算数逻辑运算包括:确定待处理数据在由给定索引值所指示的位置处的给定值;以及确定第一存储空间中的在以给定值为索引的位置处的第一值。
在一些实施例中,指令140包括第二数值确定指令,例如,指令s2v。源操作数220指定存储器的第二存储空间内的待处理数据的给定索引值。在框430处,处理器110执行的算数逻辑运算包括:确定待处理数据中的由给定索引值所指示的位置处的第二值。
在一些实施例中,指令140包括向量转置指令,例如指令vtranspose或vstranspose。源操作数220指定存储器中的第一存储空间中的第一位置。在框430处,处理器110执行的算数逻辑运算包括:将第一存储空间中的第一位置处的待处理数据进行向量转置,以获得转置后的待处理数据。
在一些实施例中,指令140包括指数指令,例如指令vexp。源操作数220指定源存储位置。在框430处,处理器110执行的算数逻辑运算包括:以源存储位置处的待处理数据为幂来确定以预定数值为底数的指数值。
在一些实施例中,指令140包括VM寄存器指令,例如vm2index。指令140的源操作数220指示存储器中的源VM寄存器。在框430处,处理器110执行的算数逻辑运算包括:将源VM寄存器中被启用的位置处的索引存储到目标存储位置处。
在一些实施例中,以上所描述的各个指令140的目标存储位置处包括处理结果向量。目标操作数230还指示目标VM寄存器。目标VM寄存器的各个位置处的值指示处理结果向量的相应位置处是否要被写入相应的处理结果。例如,如果目标寄存器vm3[i]为1,则表示处理结果向量单词的第i个元素是写使能的,可以被写入相应的处理结果。反之,如果目标寄存器vm3[i]为0,则处理结果向量单词的第i个元素不能被写入相应的处理结果。
在一些实施例中,指令140包括独热码转换指令,例如指令vindex2vm。源操作数220指定存储器的第二存储空间内的待处理数据的给定索引值。目标操作数230指定目标VM寄存器。在框430处,处理器110将待处理数据在给定索引值处的值转换为独热码。处理器110还被配置为将独热码存储到目标VM寄存器中。
图5示出了其中可以包括根据本公开的一个或多个实施例的处理器110的电子设备500的框图。应当理解,图5所示出的电子设备500仅仅是示例性的,而不应当构成对本文所描述的实施例的功能和范围的任何限制。
如图5所示,电子设备500是通用电子设备或计算设备的形式。电子设备500的组件可以包括但不限于一个或多个处理器110、存储器520、存储设备530、一个或多个通信单元540、一个或多个输入设备550以及一个或多个输出设备560。在一些实施例中,处理器110可以根据存储器520中存储的程序来执行各种处理。处理器110可以是多核处理器,该多核处理器可以并行执行计算机可执行指令,以提高电子设备500的并行处理能力。
电子设备500通常包括多个计算机存储介质。这样的介质可以是电子设备500可访问的任何可以获得的介质,包括但不限于易失性和非易失性介质、可拆卸和不可拆卸介质。存储器520可以是易失性存储器(例如寄存器、高速缓存、随机访问存储器(RAM))、非易失性存储器(例如,只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存)或它们的某种组合。存储设备530可以是可拆卸或不可拆卸的介质,并且可以包括机器可读介质,诸如闪存驱动、磁盘或者任何其他介质,其可以能够用于存储信息和/或数据(例如用于训练的训练数据)并且可以在电子设备500内被访问。
电子设备500可以进一步包括另外的可拆卸/不可拆卸、易失性/非易失性存储介质。尽管未在图5中示出,可以提供用于从可拆卸、非易失性磁盘(例如“软盘”)进行读取或写入的磁盘驱动和用于从可拆卸、非易失性光盘进行读取或写入的光盘驱动。在这些情况中,每个驱动可以由一个或多个数据介质接口被连接至总线(未示出)。存储器520可以包括计算机程序产品525,其具有一个或多个程序模块,这些程序模块被配置为执行本公开的各种实施例的各种方法或动作。例如,这些程序模块可以被配置为实现处理器110的各种功能或动作,诸如实现指令解码器120和算数逻辑单元130的功能。
通信单元540实现通过通信介质与其他电子设备或计算设备进行通信。附加地,电子设备500的组件的功能可以以单个计算集群或多个计算机器来实现,这些计算机器能够通过通信连接进行通信。因此,电子设备500可以使用与一个或多个其他服务器、网络个人计算机(PC)或者另一个网络节点的逻辑连接来在联网环境中进行操作。
输入设备550可以是一个或多个输入设备,例如鼠标、键盘、追踪球等。输出设备560可以是一个或多个输出设备,例如显示器、扬声器、打印机等。电子设备500还可以根据需要通过通信单元540与一个或多个外部设备(未示出)进行通信,外部设备诸如存储设备、显示设备等,与一个或多个使得用户与电子设备500交互的设备进行通信,或者与使得电子设备500与一个或多个其他电子设备或计算设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可以经由输入/输出(I/O)接口(未示出)来执行。
根据本公开的示例性实现方式,提供了一种计算机可读存储介质,其上存储有计算机可执行指令,其中计算机可执行指令被处理器执行以实现上文描述的方法。根据本公开的示例性实现方式,还提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括计算机可执行指令,而计算机可执行指令被处理器执行以实现上文描述的方法。
这里参照根据本公开实现的方法、设备和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
根据本公开的一个或多个实施例,示例1描述了一种处理器,该处理器包括指令解码器,该指令解码器被配置为解码用于向量操作的目标指令。目标指令涉及目标操作码、源操作数和目标操作数。目标操作码指示目标指令所指定的向量操作。源操作数至少指定存储器中的用于读取待处理数据的源存储位置。目标操作数至少指定存储器中的用于写入处理结果的目标存储位置。该处理器还包括算数逻辑单元,该算数逻辑单元被耦合至指令解码器和存储器。该算数逻辑单元被配置为:从存储器的源存储位置读取待处理数据;对待处理数据执行与目标指令所指定的向量操作相关联的算数逻辑运算;以及将待处理数据的处理结果写入存储器的目标存储位置。
根据本公开的一个或多个实施例,示例2包括根据示例1所描述的处理器,其中目标指令包括第一索引确定指令,源操作数指定存储器的第一存储空间的位置,源操作数还指定存储器的第二存储空间内的待处理数据的给定索引值。算数逻辑单元被配置为如下,以执行与目标指令所指定的向量操作相关联的算数逻辑运算:确定第一索引,该第一索引指示待处理数据中的由给定索引值所指示的位置处的值在第一存储空间中的存储位置。
根据本公开的一个或多个实施例,示例3包括根据示例1所描述的处理器,其中目标指令包括第二索引确定指令,源操作数指定存储器的第一存储空间的位置,源操作数还指定第一立即数。算数逻辑单元被配置为如下,以执行与目标指令所指定的向量操作相关联的算数逻辑运算:确定第二索引,该第二索引指示第一立即数在第一存储空间中的存储位置。
根据本公开的一个或多个实施例,示例4包括根据示例1所描述的处理器,其中目标指令包括第一数值确定指令,源操作数指定存储器的第一存储空间的位置,源操作数还指定存储器的第二存储空间内的待处理数据的给定索引值。算数逻辑单元被配置为如下,以执行与目标指令所指定的向量操作相关联的算数逻辑运算:确定待处理数据在由给定索引值所指示的位置处的给定值;以及确定第一存储空间中的在以给定值为索引的位置处的第一值。
根据本公开的一个或多个实施例,示例5包括根据示例1所描述的处理器,其中目标指令包括第二数值确定指令,源操作数指定存储器的第二存储空间内的待处理数据的给定索引值。算数逻辑单元被配置为如下,以执行与目标指令所指定的向量操作相关联的算数逻辑运算:确定待处理数据中的由给定索引值所指示的位置处的第二值。
根据本公开的一个或多个实施例,示例6包括根据示例1所描述的处理器,其中目标指令包括向量转置指令,源操作数至少指定存储器中的第一存储空间中的第一位置。算数逻辑单元被配置为如下,以执行与目标指令所指定的向量操作相关联的算数逻辑运算:将第一存储空间中的第一位置处的待处理数据进行向量转置,以获得转置后的待处理数据。
根据本公开的一个或多个实施例,示例7包括根据示例1所描述的处理器,其中目标指令包括指数指令,源操作数指定源存储位置。算数逻辑单元被配置为如下,以执行与目标指令所指定的向量操作相关联的算数逻辑运算:以源存储位置处的待处理数据为幂来确定以预定数值为底数的指数值。
根据本公开的一个或多个实施例,示例8包括根据示例1所描述的处理器,其中目标指令包括向量掩码VM寄存器指令,源操作数指示存储器中的源VM寄存器。算数逻辑单元被配置为如下,以执行与目标指令所指定的向量操作相关联的算数逻辑运算:将源VM寄存器中被启用的位置处的索引存储到目标存储位置处。
根据本公开的一个或多个实施例,示例9包括根据示例2至示例8任一项所描述的处理器,其中目标存储位置处包括处理结果向量,目标操作数还指示目标向量掩码VM寄存器,目标VM寄存器的各个位置处的值指示处理结果向量的相应位置处是否要被写入相应的处理结果。
根据本公开的一个或多个实施例,示例10包括根据示例1所描述的处理器,其中目标指令包括独热码转换指令,源操作数指定存储器的第二存储空间内的待处理数据的给定索引值,目标操作数指定目标向量掩码VM寄存器。算数逻辑单元被配置为如下,以执行与目标指令所指定的向量操作相关联的算数逻辑运算:将待处理数据在给定索引值处的值转换为独热码;以及将独热码存储到目标VM寄存器中。
根据本公开的一个或多个实施例,示例11描述了一种数据处理的方法。该方法包括:解码用于向量操作的目标指令,目标指令涉及目标操作码、源操作数和目标操作数。目标操作码指示目标指令所指定的向量操作。源操作数至少指定存储器中的用于读取待处理数据的源存储位置。目标操作数至少指定存储器中的用于写入处理结果的目标存储位置。该方法还包括:从存储器的源存储位置读取待处理数据;对待处理数据执行与目标指令所指定的向量操作相关联的算数逻辑运算;以及将待处理数据的处理结果写入存储器的目标存储位置。
根据本公开的一个或多个实施例,示例12包括根据示例11所描述的方法,其中目标指令包括索引确定指令,源操作数指定存储器的第一存储空间的位置,源操作数还指定以下至少一项:存储器的第二存储空间内的待处理数据的给定索引值、第一立即数。执行与目标指令所指定的向量操作相关联的算数逻辑运算包括以下至少一项:确定第一索引,该第一索引指示待处理数据中的由给定索引值所指示的位置处的值在第一存储空间中的存储位置;确定第二索引,第二索引指示第一立即数在第一存储空间中的存储位置。
根据本公开的一个或多个实施例,示例13包括根据示例11所描述的方法,其中目标指令包括第一数值确定指令,源操作数指定存储器的第一存储空间的位置,源操作数还指定存储器的第二存储空间内的待处理数据的给定索引值。执行与目标指令所指定的向量操作相关联的算数逻辑运算包括:确定待处理数据在由给定索引值所指示的位置处的给定值;以及确定第一存储空间中的在以给定值为索引的位置处的第一值。
根据本公开的一个或多个实施例,示例14包括根据示例11所描述的方法,其中目标指令包括第二数值确定指令,源操作数指定存储器的第二存储空间内的待处理数据的给定索引值。执行与目标指令所指定的向量操作相关联的算数逻辑运算包括:确定待处理数据中的由给定索引值所指示的位置处的第二值。
根据本公开的一个或多个实施例,示例15包括根据示例11所描述的方法,其中目标指令包括向量转置指令,其中源操作数至少指定存储器中的第一存储空间中的第一位置。执行与目标指令所指定的向量操作相关联的算数逻辑运算包括:将第一存储空间中的第一位置处的待处理数据进行向量转置,以获得转置后的待处理数据。
根据本公开的一个或多个实施例,示例16包括根据示例11所描述的方法,其中目标指令包括指数指令,源操作数指定源存储位置。执行与目标指令所指定的向量操作相关联的算数逻辑运算包括:以源存储位置处的待处理数据为幂来确定以预定数值为底数的指数值。
根据本公开的一个或多个实施例,示例17包括根据示例11所描述的方法,其中目标指令包括向量掩码VM寄存器指令,源操作数指示存储器中的源VM寄存器。执行与目标指令所指定的向量操作相关联的算数逻辑运算包括:将源VM寄存器中被启用的位置处的索引存储到目标存储位置处。
根据本公开的一个或多个实施例,示例18包括根据示例11所描述的方法,其中目标指令包括独热码转换指令,源操作数指定存储器的第二存储空间内的待处理数据的给定索引值,目标操作数指定目标向量掩码VM寄存器。执行与目标指令所指定的向量操作相关联的算数逻辑运算包括:将待处理数据在给定索引值处的值转换为独热码;以及将独热码存储到目标VM寄存器中。
根据本公开的一个或多个实施例,示例19描述了一种电子设备,其至少包括根据示例1至示例10任一项所述的处理器。
根据本公开的一个或多个实施例,示例20描述了一种计算机可读存储介质,其上存储有计算机程序。该计算机程序被处理器执行以实现根据示例11至18任一项所述的方法。
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各个实现方式。
Claims (20)
1.一种处理器,包括:
指令解码器,被配置为解码用于向量操作的目标指令,所述目标指令涉及目标操作码、源操作数和目标操作数,所述目标操作码指示所述目标指令所指定的向量操作,所述源操作数至少指定存储器中的用于读取待处理数据的源存储位置,所述目标操作数至少指定所述存储器中的用于写入处理结果的目标存储位置;以及
算数逻辑单元,耦合至所述指令解码器和所述存储器,并且被配置为:
从所述存储器的所述源存储位置读取所述待处理数据;
对所述待处理数据执行与所述目标指令所指定的向量操作相关联的算数逻辑运算;以及
将所述待处理数据的处理结果写入所述存储器的所述目标存储位置。
2.根据权利要求1所述的处理器,其中所述目标指令包括第一索引确定指令,所述源操作数指定所述存储器的第一存储空间的位置,所述源操作数还指定所述存储器的第二存储空间内的所述待处理数据的给定索引值,并且
所述算数逻辑单元被配置为如下,以执行与所述目标指令所指定的向量操作相关联的算数逻辑运算:
确定第一索引,所述第一索引指示所述待处理数据中的由给定索引值所指示的位置处的值在所述第一存储空间中的存储位置。
3.根据权利要求1所述的处理器,其中所述目标指令包括第二索引确定指令,所述源操作数指定所述存储器的第一存储空间的位置,所述源操作数还指定第一立即数,并且
所述算数逻辑单元被配置为如下,以执行与所述目标指令所指定的向量操作相关联的算数逻辑运算:
确定第二索引,所述第二索引指示所述第一立即数在所述第一存储空间中的存储位置。
4.根据权利要求1所述的处理器,其中所述目标指令包括第一数值确定指令,所述源操作数指定所述存储器的第一存储空间的位置,所述源操作数还指定所述存储器的第二存储空间内的所述待处理数据的给定索引值,并且
所述算数逻辑单元被配置为如下,以执行与所述目标指令所指定的向量操作相关联的算数逻辑运算:
确定所述待处理数据在由所述给定索引值所指示的位置处的给定值;以及
确定所述第一存储空间中的在以所述给定值为索引的位置处的第一值。
5.根据权利要求1所述的处理器,其中所述目标指令包括第二数值确定指令,所述源操作数指定所述存储器的第二存储空间内的所述待处理数据的给定索引值,并且
所述算数逻辑单元被配置为如下,以执行与所述目标指令所指定的向量操作相关联的算数逻辑运算:
确定所述待处理数据中的由给定索引值所指示的位置处的第二值。
6.根据权利要求1所述的处理器,其中所述目标指令包括向量转置指令,所述源操作数至少指定所述存储器中的第一存储空间中的第一位置,并且
所述算数逻辑单元被配置为如下,以执行与所述目标指令所指定的向量操作相关联的算数逻辑运算:
将所述第一存储空间中的第一位置处的所述待处理数据进行向量转置,以获得转置后的待处理数据。
7.根据权利要求1所述的处理器,其中所述目标指令包括指数指令,所述源操作数指定所述源存储位置,并且
所述算数逻辑单元被配置为如下,以执行与所述目标指令所指定的向量操作相关联的算数逻辑运算:
以所述源存储位置处的所述待处理数据为幂来确定以预定数值为底数的指数值。
8.根据权利要求1所述的处理器,其中所述目标指令包括向量掩码VM寄存器指令,所述源操作数指示所述存储器中的源VM寄存器,并且
所述算数逻辑单元被配置为如下,以执行与所述目标指令所指定的向量操作相关联的算数逻辑运算:
将所述源VM寄存器中被启用的位置处的索引存储到所述目标存储位置处。
9.根据权利要求2至8中任一项所述的处理器,其中所述目标存储位置处包括处理结果向量,所述目标操作数还指示目标向量掩码VM寄存器,所述目标VM寄存器的各个位置处的值指示所述处理结果向量的相应位置处是否要被写入相应的处理结果。
10.根据权利要求1所述的处理器,其中所述目标指令包括独热码转换指令,所述源操作数指定所述存储器的第二存储空间内的所述待处理数据的给定索引值,所述目标操作数指定目标向量掩码VM寄存器,并且
所述算数逻辑单元被配置为如下,以执行与所述目标指令所指定的向量操作相关联的算数逻辑运算:
将所述待处理数据在给定索引值处的值转换为独热码;以及
将所述独热码存储到所述目标VM寄存器中。
11.一种数据处理的方法,包括:
解码用于向量操作的目标指令,所述目标指令涉及目标操作码、源操作数和目标操作数,所述目标操作码指示所述目标指令所指定的向量操作,所述源操作数至少指定存储器中的用于读取待处理数据的源存储位置,所述目标操作数至少指定所述存储器中的用于写入处理结果的目标存储位置;
从所述存储器的所述源存储位置读取所述待处理数据;
对所述待处理数据执行与所述目标指令所指定的向量操作相关联的算数逻辑运算;以及
将所述待处理数据的处理结果写入所述存储器的所述目标存储位置。
12.根据权利要求11所述的方法,其中所述目标指令包括索引确定指令,所述源操作数指定所述存储器的第一存储空间的位置,所述源操作数还指定以下至少一项:所述存储器的第二存储空间内的所述待处理数据的给定索引值、第一立即数,并且
其中执行与所述目标指令所指定的向量操作相关联的算数逻辑运算包括以下至少一项:
确定第一索引,所述第一索引指示所述待处理数据中的由给定索引值所指示的位置处的值在所述第一存储空间中的存储位置,
确定第二索引,所述第二索引指示所述第一立即数在所述第一存储空间中的存储位置。
13.根据权利要求11所述的方法,其中所述目标指令包括第一数值确定指令,所述源操作数指定所述存储器的第一存储空间的位置,所述源操作数还指定所述存储器的第二存储空间内的所述待处理数据的给定索引值,并且
其中执行与所述目标指令所指定的向量操作相关联的算数逻辑运算包括:
确定所述待处理数据在由所述给定索引值所指示的位置处的给定值;以及
确定所述第一存储空间中的在以所述给定值为索引的位置处的第一值。
14.根据权利要求11所述的方法,其中所述目标指令包括第二数值确定指令,所述源操作数指定所述存储器的第二存储空间内的所述待处理数据的给定索引值,并且
其中执行与所述目标指令所指定的向量操作相关联的算数逻辑运算包括:确定所述待处理数据中的由给定索引值所指示的位置处的第二值。
15.根据权利要求11所述的方法,其中所述目标指令包括向量转置指令,所述源操作数至少指定所述存储器中的第一存储空间中的第一位置,并且
其中执行与所述目标指令所指定的向量操作相关联的算数逻辑运算包括:将所述第一存储空间中的第一位置处的所述待处理数据进行向量转置,以获得转置后的待处理数据。
16.根据权利要求11所述的方法,其中所述目标指令包括指数指令,所述源操作数指定所述源存储位置,并且
其中执行与所述目标指令所指定的向量操作相关联的算数逻辑运算包括:以所述源存储位置处的所述待处理数据为幂来确定以预定数值为底数的指数值。
17.根据权利要求11所述的方法,其中所述目标指令包括向量掩码VM寄存器指令,所述源操作数指示所述存储器中的源VM寄存器,并且
其中执行与所述目标指令所指定的向量操作相关联的算数逻辑运算包括:将所述源VM寄存器中被启用的位置处的索引存储到所述目标存储位置处。
18.根据权利要求11所述的方法,其中所述目标指令包括独热码转换指令,所述源操作数指定所述存储器的第二存储空间内的所述待处理数据的给定索引值,所述目标操作数指定目标向量掩码VM寄存器,并且
其中执行与所述目标指令所指定的向量操作相关联的算数逻辑运算包括:
将所述待处理数据在给定索引值处的值转换为独热码;以及
将所述独热码存储到所述目标VM寄存器中。
19.一种电子设备,至少包括根据权利要求1至10任一项所述的处理器。
20.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现根据权利要求11至18任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210674857.6A CN117289991A (zh) | 2022-06-14 | 2022-06-14 | 处理器以及用于数据处理的方法、设备和存储介质 |
PCT/CN2023/098716 WO2023241418A1 (zh) | 2022-06-14 | 2023-06-06 | 处理器以及用于数据处理的方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210674857.6A CN117289991A (zh) | 2022-06-14 | 2022-06-14 | 处理器以及用于数据处理的方法、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117289991A true CN117289991A (zh) | 2023-12-26 |
Family
ID=89192127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210674857.6A Pending CN117289991A (zh) | 2022-06-14 | 2022-06-14 | 处理器以及用于数据处理的方法、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117289991A (zh) |
WO (1) | WO2023241418A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11023231B2 (en) * | 2016-10-01 | 2021-06-01 | Intel Corporation | Systems and methods for executing a fused multiply-add instruction for complex numbers |
US20190205137A1 (en) * | 2017-12-29 | 2019-07-04 | Lawrence Meadows | Methods and apparatus for multi-load and multi-store vector instructions |
US11972230B2 (en) * | 2020-06-27 | 2024-04-30 | Intel Corporation | Matrix transpose and multiply |
-
2022
- 2022-06-14 CN CN202210674857.6A patent/CN117289991A/zh active Pending
-
2023
- 2023-06-06 WO PCT/CN2023/098716 patent/WO2023241418A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023241418A1 (zh) | 2023-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230214215A1 (en) | Computer processor for higher precision computations using a mixed-precision decomposition of operations | |
EP3629153B1 (en) | Systems and methods for performing matrix compress and decompress instructions | |
EP3651017B1 (en) | Systems and methods for performing 16-bit floating-point matrix dot product instructions | |
EP3629157B1 (en) | Systems for performing instructions for fast element unpacking into 2-dimensional registers | |
EP3620910B1 (en) | Fp16-s7e8 mixed-precision for deep learning and other algorithms | |
CN118034781A (zh) | 用于矩阵加法、减法和乘法的系统、方法和装置 | |
EP3623941B1 (en) | Systems and methods for performing instructions specifying ternary tile logic operations | |
CN117724763A (zh) | 用于矩阵操作加速器的指令的装置、方法和系统 | |
EP3629158A2 (en) | Systems and methods for performing instructions to transform matrices into row-interleaved format | |
EP4141661A1 (en) | Systems for performing instructions to quickly convert and use tiles as 1d vectors | |
EP3757769A1 (en) | Systems and methods to skip inconsequential matrix operations | |
EP3716054A2 (en) | Interleaved pipeline of floating-point adders | |
EP3623940A2 (en) | Systems and methods for performing horizontal tile operations | |
EP3343359A1 (en) | Apparatus and method for processing sparse data | |
EP4276608A2 (en) | Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions | |
CN111752605A (zh) | 使用浮点乘法-累加结果的模糊-j位位置 | |
CN117289991A (zh) | 处理器以及用于数据处理的方法、设备和存储介质 | |
WO2022066356A1 (en) | Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions | |
CN112149050A (zh) | 用于增强的矩阵乘法器架构的装置、方法和系统 | |
CN110826722A (zh) | 用于通过排序来生成索引并基于排序对元素进行重新排序的系统、装置和方法 | |
CN113762490B (zh) | 使用列折叠和挤压的稀疏矩阵的矩阵乘法加速 | |
CN118132147A (zh) | 用于执行快速转换片并且将片用作一维向量的指令的系统 |
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 |