CN113867800A - 计算装置、集成电路芯片、板卡、电子设备和计算方法 - Google Patents
计算装置、集成电路芯片、板卡、电子设备和计算方法 Download PDFInfo
- Publication number
- CN113867800A CN113867800A CN202010619460.8A CN202010619460A CN113867800A CN 113867800 A CN113867800 A CN 113867800A CN 202010619460 A CN202010619460 A CN 202010619460A CN 113867800 A CN113867800 A CN 113867800A
- Authority
- CN
- China
- Prior art keywords
- data
- instruction
- slave
- processing
- circuit
- 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
- 238000004364 calculation method Methods 0.000 title claims description 52
- 238000012545 processing Methods 0.000 claims abstract description 284
- 238000000034 method Methods 0.000 claims abstract description 61
- 238000003860 storage Methods 0.000 claims abstract description 61
- 238000006243 chemical reaction Methods 0.000 claims description 52
- 238000013500 data storage Methods 0.000 claims description 49
- 238000007781 pre-processing Methods 0.000 claims description 49
- 238000012805 post-processing Methods 0.000 claims description 34
- 239000013598 vector Substances 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 16
- 238000013507 mapping Methods 0.000 claims description 9
- 238000011176 pooling Methods 0.000 claims description 8
- 238000009825 accumulation Methods 0.000 claims description 7
- 238000013473 artificial intelligence Methods 0.000 abstract description 12
- 239000011159 matrix material Substances 0.000 description 30
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- 238000013528 artificial neural network Methods 0.000 description 7
- 210000002569 neuron Anatomy 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013501 data transformation Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000017105 transposition Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- -1 for example Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
Abstract
本披露公开了一种计算装置、集成电路芯片、板卡、电子设备和使用前述计算装置来执行运算操作的方法。其中该计算装置可以被包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。本披露的方案可以提升包括例如人工智能领域在内的各类数据处理领域运算的运行效率,从而降低运算的整体开销和成本。
Description
技术领域
本披露一般地涉及计算领域。更具体地,本披露涉及一种计算装置、集成电路芯片、板卡、电子设备和计算方法。
背景技术
在计算系统中,指令集是用于执行计算和对计算系统进行控制的一套指令的集合,并且在提高计算系统中计算芯片(例如处理器)的性能方面发挥着关键性的作用。当前的各类计算芯片(特别是人工智能领域的芯片)利用相关联的指令集,可以完成各类通用或特定的控制操作和数据处理操作。然而,当前的指令集还存在诸多方面的缺陷。例如,现有的指令集受限于硬件架构而在灵活性方面表现较差。进一步,许多指令仅能完成单一的操作,而多个操作的执行则通常需要多条指令,这潜在地导致片内I/O数据吐吞量增大。另外,当前的指令在执行速度、执行效率和对芯片造成的功耗方面还有改进之处。
另外,传统的处理器CPU的运算指令被设计为能够执行基本的单数据标量运算操作。这里,单数据操作指的是指令的每一个操作数都是一个标量数据。然而,在图像处理和模式识别等任务里,面向的操作数往往是多维向量(即,张量数据)的数据类型,仅仅使用标量操作无法使硬件高效地完成运算任务。因此,如何高效地执行多维的张量运算也是当前计算领域亟需解决的问题。
发明内容
为了至少解决上述现有技术中存在的问题,本披露提供一种硬件构架平台和相关指令的解决方案。利用本披露公开的方案,可以增加指令的灵活性,提高指令执行的效率并且降低计算成本和开销。进一步,本披露的方案在前述硬件架构的基础上支持对张量数据的高效访存和处理,从而在计算指令中包括多维向量操作数的情况下,加速张量运算并且减小张量运算所带来的计算开销。
在第一方面中,本披露公开了一种计算装置,包括主处理电路和至少一个从处理电路,其中:
所述主处理电路配置成响应于主指令来执行主运算操作,
所述从处理电路配置成响应于从指令来执行从运算操作,
其中,所述主运算操作包括针对于所述从运算操作的前处理操作和/或后处理操作,所述主指令和所述从指令根据所述计算装置接收的计算指令解析得到,其中所述计算指令的操作数包括用于指示张量的形状的描述符,所述描述符用于确定所述操作数对应数据的存储地址,
其中所述主处理电路和/或从处理电路配置成根据所述存储地址来执行各自对应的主运算操作和/或从处理操作。
在第二方面中,本披露公开了一种集成电路芯片,其包括前一方面中提及并且在稍后的多个实施例中描述的计算装置。
在第三方面中,本披露公开了一种板卡,其包括前一方面中提及并且在稍后的多个实施例中描述的集成电路芯片。
在第四方面中,本披露公开了一种电子设备,其包括前一方面中提及并且在稍后的多个实施例中描述的集成电路芯片。
在第五方面中,本披露公开了一种使用前述的计算装置来执行计算操作的方法,其中所述计算装置包括主处理电路和至少一个从处理电路,所述方法包括:
将所述主处理电路配置成响应于主指令来执行主运算操作,
将所述从处理电路配置成响应于从指令来执行从运算操作,
其中所述主运算操作包括针对于所述从运算操作的前处理操作和/或后处理操作,所述主指令和所述从指令根据所述计算装置接收的计算指令解析得到,其中所述计算指令的操作数包括用于指示张量的形状的描述符,所述描述符用于确定所述操作数对应数据的存储地址,
其中所述方法还包括将所述主处理电路和/或从处理电路配置成根据所述存储地址来执行各自对应的主运算操作和/或从处理操作。
利用本披露公开的计算装置、集成电路芯片、板卡、电子设备和方法,可以高效地执行与主运算操作和从运算操作相关的主指令和从指令,从而加速运算操作的执行。进一步,由于主运算操作和从运算操作的结合,使得本披露的计算装置可以支持更多类型的运算和操作。另外,基于本披露的计算装置的流水线运算布置,可以对计算指令进行灵活地配置以满足计算的要求。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1a是示出根据本披露实施例的计算装置的概略图;
图1b是示出根据本披露实施例的数据存储空间的示意图;
图2是示出根据本披露实施例的计算装置的框图;
图3是示出根据本披露实施例的计算装置的主处理电路的框图;
图4a,4b和4c是示出根据本披露实施例的数据转换电路所执行的矩阵转换示意图;
图5是示出根据本披露实施例的计算装置的从处理电路的框图;
图6是示出根据本披露实施例的一种组合处理装置的结构图;以及
图7是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
本披露的方案利用主处理电路和至少一个从处理电路的硬件架构来执行相关联的数据操作,从而可以利用相对灵活、简化的计算指令来完成相对复杂的运算。具体来说,本披露的方案利用从计算指令解析获得的主指令和从指令,并且令主处理电路执行主指令以实现主运算操作,而令从处理电路执行从指令以实现从运算操作,以便实现包括例如向量运算的各种复杂运算。这里,主运算操作可以包括针对于从运算操作的前处理操作和/或后处理操作。在一个实施例中,该前处理操作可以例如是数据转换操作和/或数据拼接操作。在另一个实施例中,该后处理操作可以例如是对从处理电路输出结果的算术操作。在一些场景中,当计算指令的操作数包括用于指示张量的形状的描述符时,本披露的方案利用该描述符来确定所述操作数对应数据的存储地址。基于此,所述主处理电路和/或从处理电路可以配置成根据所述存储地址来执行各自对应的主运算操作和/或从运算操作,其中主运算操作和/或从运算操作可以涉及张量数据的各类运算操作。另外,根据主处理电路中运算电路或运算器的不同,本披露的计算指令支持灵活和个性化的配置,以满足不同的应用场景。
下面将结合附图对本披露的技术方案进行详细地描述。
图1a是示出根据本披露实施例的计算装置100的概略图。如图1a中所示,计算装置100可以包括主处理电路102和从处理电路,例如图中所示出的从处理电路104、106和108。尽管这里示出三个从处理电路,但本领域技术人员可以理解本披露的计算装置100可以包括任意合适数目的从处理电路,且多个从处理电路之间、多个从处理电路和主处理电路之间可以以不同方式连接,本披露不做任何的限制。在一个或多个实施例中,本披露的多个从处理电路可以并行地执行各类从指令(例如由计算指令解析获得),以提高计算装置的处理效率。
在本披露的上下文中,计算指令可以是软件和硬件的交互接口的指令系统中的指令,其可以是二进制或其他形式的、供处理器(或称处理电路)等硬件接收并处理的机器语言。计算指令可以包括用于指示处理器操作的操作码和操作数。根据不同的应用场景,计算指令可以包括一个或多个操作码,而当前述计算指令包括一个操作码时,该操作码可以用于指示处理器的多个操作。另外,计算指令还可以包括一个或多个操作数。根据本披露的方案,操作数可以包括用于指示张量的形状的描述符,该描述符可以用于确定所述操作数对应数据的存储地址。
在一个实施例中,可以通过解析计算装置接收到的计算指令来获得主指令和从指令。在操作中,主处理电路可以配置成响应于主指令来执行主运算操作,而所述从处理电路可以配置成响应于从指令来执行从运算操作。根据本披露的方案,前述的主指令或从指令可以是在处理器内部运行的微指令或控制信号,并且可以包括(或者说指示)一个或多个操作。当计算指令的操作数包括如前所述的描述符时,主处理电路和/或从处理电路可以配置成根据基于描述符所获得的存储地址来对张量进行访存。通过基于描述符的访存机制,本披露的方案在执行张量的运算中能够显著提升张量数据的读取和存储速度,由此加速计算并减小计算开销。
在一个实施例中,前述主运算操作可以包括针对于所述从运算操作的前处理操作和/或后处理操作。具体而言,对于由主处理电路执行的主指令,其可以包括例如对将参与运算的数据进行数据转换和/或数据拼接的前处理操作。在一些应用场景中,主指令也可以包括仅仅对数据的选择性读取的前处理操作,例如将专用或私有缓存器中所存储的数据读出并发送到从处理电路,或者为从处理电路的运算生成相应的随机数。在另外一些应用场景中,依据主处理电路中包括的运算器的类型和数目,所述主指令可以包括一个或多个与运算器的功能相关联的多个后处理操作。例如,主指令可以包括对从处理电路执行从指令后获得的中间运算结果或最终运算结果进行相加、相乘、查表、比较、求平均、过滤等多种类型的操作。在一些应用场景中,前述的中间运算结果或最终运算结果可以是前述的张量,并且其存储地址可以根据本披露的描述符来获得。
为了便于识别前处理操作和/或后处理操作,在一些应用场景中,所述主指令可以包括用于标识所述前处理操作和/或后处理操作的标识位。由此,当获取主指令时,主处理电路可以根据所述标识位来确定对运算数据执行前处理操作还是后处理操作。附加地或替代地,可以通过所述计算指令的预设位置(或称指令域段)来对所述主指令中的所述前处理操作和后处理操作进行匹分。例如,当计算指令中设置有包括(主指令+从指令)的预设位置时,则可以确定此计算指令中的主指令涉及针对于从操作的前处理操作。又例如,当计算指令中设置有包括(从指令+主指令)的预设位置时,则可以确定此计算指令中的主指令涉及对从操作的后处理操作。为了便于理解,假设计算指令具有三段预定位宽(即前述的预设位置)的长度,则可以将位于第一段预定位宽的指令指定为用于前处理操作的主指令,位于中间位置的第二段预定位宽的指令指定为用于从操作的从指令,而位于最后位置的第三段预定位宽的指令指定为用于后处理操作的主指令。
对于由从处理电路执行的从指令,其可以包括与从处理电路中的一个或多个运算电路的功能关联的一个或多个操作。所述从指令可以包括对经主处理电路执行前处理操作后的数据执行运算的操作。在一些应用场景中,所述从指令可以包括算术运算、逻辑运算、数据类型转换等各种操作。例如,从指令可以包括对经所述前处理操作后的数据执行向量相关的各类乘加操作,包括例如卷积操作。在另一些应用场景中,当前述计算指令中不包括关于前处理操作的主指令时,从处理电路也可以根据从指令来对输入数据直接进行从运算操作。
在一个或多个实施例中,主处理电路102可以配置成获得计算指令并且对其进行解析,从而得到前述的主指令和从指令,并且将从指令发送到从处理电路。具体来说,主处理电路可以包括用于解析计算指令的一个或多个译码电路(或称译码器)。通过内部的译码电路,主处理电路可以将接收到的计算指令解析成一个或多个主指令和/或从指令,并且将相应的从指令发送到从处理电路,以便从处理电路执行从运算操作。这里,根据应用场景的不同,可以以多种方式将从指令发送到从处理电路。例如,当计算装置中包括存储电路时,主处理电路可以将从指令发送到存储电路,并且经由存储电路来向从处理电路发送。又例如,当多个从处理电路执行并行操作时,主处理电路可以向多个从处理电路广播相同的从指令。附加地或可选地,在一些硬件架构场景中,计算装置还可以包括单独的电路、单元或模块来专用于对计算装置接收到的计算指令进行解析,如稍后结合图2所描述的架构。
在一个或多个实施例中,本披露的从处理电路可以包括用于执行从运算操作的多个运算电路,其中所述多个运算电路可以被连接并且配置成执行多级流水的运算操作。根据运算场景的不同,运算电路可以包括用于至少执行向量运算的乘法电路、比较电路、累加电路和转数电路中的一个或多个。在一个实施例中,当本披露的计算装置应用于人工智能领域的计算时,从处理电路可以根据从指令来执行神经网络中的多维卷积运算。
如前所述,本披露的主运算操作和/或从运算操作还可以包括针对张量数据的各种类型的操作,为此本披露的方案提出利用描述符来获取关于张量形状相关的信息,以便确定张量数据的存储地址,从而通过前述的存储地址来获取和保存张量数据。
在一种可能的实现方式中,可以用描述符指示N维的张量数据的形状,N为正整数,例如N=1、2或3,或者为零。其中,张量可以包含多种形式的数据组成方式,张量可以是不同维度的,比如标量可以看作是0维张量,向量可以看作1维张量,而矩阵可以是2维或2维以上的张量。张量的形状包括张量的维度、张量各个维度的尺寸等信息。举例而言,对于张量:
该张量的形状可以被描述符描述为(2,4),也即通过两个参数表示该张量为二维张量,且该张量的第一维度(列)的尺寸为2、第二维度(行)的尺寸为4。需要说明的是,本申请对于描述符指示张量形状的方式并不做限定。
在一种可能的实现方式中,N的取值可根据张量数据的维数(阶数)来确定,也可以根据张量数据的使用需要进行设定。例如,在N的取值为3时,张量数据为三维的张量数据,描述符可用来指示该三维的张量数据在三个维度方向上的形状(例如偏移量、尺寸等)。应当理解,本领域技术人员可以根据实际需要对N的取值进行设置,本披露对此不作限制。
在一种可能的实现方式中,所述描述符可包括描述符的标识和/或描述符的内容。其中,描述符的标识用于对描述符进行区分,例如描述符的标识可以为其编号;描述符的内容可以包括表示张量数据的形状的至少一个形状参数。例如,张量数据为3维数据,在该张量数据的三个维度中,其中两个维度的形状参数固定不变,其描述符的内容可包括表示该张量数据的另一个维度的形状参数。
在一种可能的实现方式中,描述符的标识和/或内容可存储在描述符存储空间(内部存储器),例如寄存器、片上的SRAM或其他介质缓存等。描述符所指示的张量数据可存储在数据存储空间(内部存储器或外部存储器),例如片上缓存或片下存储器等。本披露对描述符存储空间及数据存储空间的具体位置不作限制。
在一种可能的实现方式中,描述符的标识、内容以及描述符所指示的张量数据可以存储在内部存储器的同一块区域,例如,可使用片上缓存的一块连续区域来存储描述符的相关内容,其地址为ADDR0-ADDR1023。其中,可将地址ADDR0-ADDR63作为描述符存储空间,存储描述符的标识和内容,地址ADDR64-ADDR1023作为数据存储空间,存储描述符所指示的张量数据。在描述符存储空间中,可用地址ADDR0-ADDR31存储描述符的标识,地址ADDR32-ADDR63存储描述符的内容。应当理解,地址ADDR并不限于1位或一个字节,此处用来表示一个地址,是一个地址单位。本领域技术人员可以实际情况确定描述符存储空间、数据存储空间以及其具体地址,本披露对此不作限制。
在一种可能的实现方式中,描述符的标识、内容以及描述符所指示的张量数据可以存储在内部存储器的不同区域。例如,可以将寄存器作为描述符存储空间,在寄存器中存储描述符的标识及内容,将片上缓存作为数据存储空间,存储描述符所指示的张量数据。
在一种可能的实现方式中,在使用寄存器存储描述符的标识和内容时,可以使用寄存器的编号来表示描述符的标识。例如,寄存器的编号为0时,其存储的描述符的标识设置为0。当寄存器中的描述符有效时,可根据描述符所指示的张量数据的大小在缓存空间中分配一块区域用于存储该张量数据。
在一种可能的实现方式中,描述符的标识及内容可存储在内部存储器,描述符所指示的张量数据可存储在外部存储器。例如,可以采用在片上存储描述符的标识及内容、在片下存储描述符所指示的张量数据的方式。
在一种可能的实现方式中,与各描述符对应的数据存储空间的数据地址可以是固定地址。例如,可以为张量数据划分单独的数据存储空间,每个张量数据在数据存储空间的起始地址与描述符一一对应。在这种情况下,控制电路根据描述符即可确定与操作数对应的数据在数据存储空间中的数据地址。
在一种可能的实现方式中,在与描述符对应的数据存储空间的数据地址为可变地址时,所述描述符还可用于指示N维的张量数据的地址,其中,所述描述符的内容还可包括表示张量数据的地址的至少一个地址参数。例如,张量数据为3维数据,在描述符指向该张量数据的地址时,描述符的内容可包括表示该张量数据的地址的一个地址参数,例如张量数据的起始物理地址,也可以包括该张量数据的地址的多个地址参数,例如张量数据的起始地址+地址偏移量,或张量数据基于各维度的地址参数。本领域技术人员可以根据实际需要对地址参数进行设置,本披露对此不作限制。
在一种可能的实现方式中,所述张量数据的地址参数可以包括所述描述符的数据基准点在所述张量数据的数据存储空间中的基准地址。其中,基准地址可根据数据基准点的变化而不同。本披露对数据基准点的选取不作限制。
在一种可能的实现方式中,所述基准地址可包括所述数据存储空间的起始地址。在描述符的数据基准点是数据存储空间的第一个数据块时,描述符的基准地址即为数据存储空间的起始地址。在描述符的数据基准点是数据存储空间中第一个数据块以外的其他数据时,描述符的基准地址即为该数据块在数据存储空间中的地址。
在一种可能的实现方式中,所述张量数据的形状参数包括以下至少一种:所述数据存储空间在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于所述数据基准点的位置、所述描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系。其中,数据描述位置是描述符所指示的张量数据中的点或区域的映射位置,例如,张量数据为3维数据时,描述符可使用三维空间坐标(x,y,z)来表示该张量数据的形状,该张量数据的数据描述位置可以是使用三维空间坐标(x,y,z)表示的、该张量数据映射在三维空间中的点或区域的位置。
应当理解,本领域技术人员可以根据实际情况选择表示张量数据的形状参数,本披露对此不作限制。通过在数据存取过程中使用描述符,可建立数据之间的关联,从而降低数据存取的复杂度,提高指令处理效率。
在一种可能的实现方式中,可根据所述描述符的数据基准点在所述张量数据的数据存储空间中的基准地址、所述数据存储空间的N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的尺寸和/或所述存储区域在N个维度方向的至少一个方向上的偏移量,确定所述张量数据的描述符的内容。
图1b示出根据本披露实施例的数据存储空间的示意图。如图1b所示,数据存储空间21采用行优先的方式存储了一个二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下),X轴方向上的尺寸(每行的尺寸)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出),数据存储空间21的起始地址PA_start(基准地址)为第一个数据块22的物理地址。数据块23是数据存储空间21中的部分数据,其在X轴方向上的偏移量25表示为offset_x,在Y轴方向上的偏移量24表示为offset_y,在X轴方向上的尺寸表示为size_x,在Y轴方向上的尺寸表示为size_y。
在一种可能的实现方式中,使用描述符来定义数据块23时,描述符的数据基准点可使用数据存储空间21的第一个数据块,可以约定描述符的基准地址为数据存储空间21的起始地址PA_start。然后可以结合数据存储空间21在X轴的尺寸ori_x、在Y轴上的尺寸ori_y,以及数据块23在Y轴方向的偏移量offset_y、X轴方向上的偏移量offset_x、X轴方向上的尺寸size_x以及Y轴方向上的尺寸size_y来确定数据块23的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(1)来表示描述符的内容:
应当理解,虽然上述示例中,描述符的内容表示的是二维空间,但本领域技术人员可以根据实际情况对描述符的内容表示的具体维度进行设置,本披露对此不作限制。
在一种可能的实现方式中,可约定所述描述符的数据基准点在所述数据存储空间中的基准地址,在基准地址的基础上,根据处于N个维度方向的对角位置的至少两个顶点相对于所述数据基准点的位置,确定所述张量数据的描述符的内容。
举例来说,可以约定描述符的数据基准点在数据存储空间中的基准地址PA_base。例如,可以在数据存储空间21中选取一个数据(例如,位置为(2,2)的数据)作为数据基准点,将该数据在数据存储空间中的物理地址作为基准地址PA_base。可以根据对角位置的两个顶点相对于数据基准点的位置,确定出图1b中数据块23的描述符的内容。首先,确定数据块23的对角位置的至少两个顶点相对于数据基准点的位置,例如,使用左上至右下方向的对角位置顶点相对于数据基准点的位置,其中,左上角顶点的相对位置为(x_min,y_min),右下角顶点的相对位置为(x_max,y_max),然后可以根据基准地址PA_base、左上角顶点的相对位置(x_min,y_min)以及右下角顶点的相对位置(x_max,y_max)确定出数据块23的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(2)来表示描述符的内容(基准地址为PA_base):
应当理解,虽然上述示例中使用左上角和右下角两个对角位置的顶点来确定描述符的内容,但本领域技术人员可以根据实际需要对对角位置的至少两个顶点的具体顶点进行设置,本披露对此不作限制。
在一种可能的实现方式中,可根据所述描述符的数据基准点在所述数据存储空间中的基准地址,以及所述描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,确定所述张量数据的描述符的内容。其中,数据描述位置与数据地址之间的映射关系可以根据实际需要进行设定,例如,描述符所指示的张量数据为三维空间数据时,可以使用函数f(x,y,z)来定义数据描述位置与数据地址之间的映射关系。
在一种可能的实现方式中,可以使用下述公式(3)来表示描述符的内容:
在一种可能的实现方式中,所述描述符还用于指示N维的张量数据的地址,其中,所述描述符的内容还包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是:
其中PA为地址参数。地址参数可以是逻辑地址,也可以是物理地址。描述符解析电路可以以PA为向量形状的顶点、中间点或预设点中的任意一个,结合X方向和Y方向的形状参数得到对应的数据地址。
在一种可能的实现方式中,所述张量数据的地址参数包括所述描述符的数据基准点在所述张量数据的数据存储空间中的基准地址,所述基准地址包括所述数据存储空间的起始地址。
在一种可能的实现方式中,描述符还可以包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是:
其中PA_start为基准地址参数,不再赘述。
应当理解,本领域技术人员可以根据实际情况对数据描述位置与数据地址之间的映射关系进行设定,本披露对此不作限制。
在一种可能的实现方式中,可以在一个任务中设定约定的基准地址,此任务下指令中的描述符均使用此基准地址,描述符内容中可以包括基于此基准地址的形状参数。可以通过设定此任务的环境参数的方式确定此基准地址。基准地址的相关描述和使用方式可参见上述实施例。此种实现方式下,描述符的内容可以更快速的被映射为数据地址。
在一种可能的实现方式中,可以在各描述符的内容中包含基准地址,则各描述符的基准地址可不同。相对于利用环境参数设定共同的基准地址的方式,此种方式中的各描述符可以更加灵活的描述数据,并使用更大的数据地址空间。
在一种可能的实现方式中,可根据描述符的内容,确定与处理指令的操作数对应的数据在数据存储空间中的数据地址。其中,数据地址的计算由硬件自动完成,且描述符的内容的表示方式不同时,数据地址的计算方法也会不同。本披露对数据地址的具体计算方法不作限制。
例如,操作数中描述符的内容是使用公式(1)表示的,描述符所指示的张量数据在数据存储空间中的偏移量分别为offset_x和offset_y,尺寸为size_x*size_y,那么,该描述符所指示的张量数据在数据存储空间中的起始数据地址PA1(x,y)可以使用下述公式(4)来确定:
PA1(x,y)=PA_start+(offset_y-1)*ori_x+offset_x (4)
根据上述公式(4)确定的数据起始地址PA1(x,y),结合偏移量offset_x和offset_y,以及存储区域的尺寸size_x和size_y,可确定出描述符所指示的张量数据在数据存储空间中的存储区域。
在一种可能的实现方式中,当操作数还包括针对描述符的数据描述位置时,可根据描述符的内容以及数据描述位置,确定操作数对应的数据在数据存储空间中的数据地址。通过这种方式,可以对描述符所指示的张量数据中的部分数据(例如一个或多个数据)进行处理。
例如,操作数中描述符的内容是使用公式(1)表示的,描述符所指示的张量数据在数据存储空间中偏移量分别为offset_x和offset_y,尺寸为size_x*size_y,操作数中包括的针对描述符的数据描述位置为(xq,yq),那么,该描述符所指示的张量数据在数据存储空间中的数据地址PA2(x,y)可以使用下述公式(5)来确定:
PA2(x,y)=PA_start+(offset_y+yq-1)*ori_x+(offset_x+xq) (5)
以上结合图1a和图1b对本披露的计算装置进行了描述,通过利用本披露的计算装置以及主指令和从指令,可以利用一条计算指令完成多个操作,减少了多个操作需由多个指令完成所导致的每个指令需要进行的数据搬运,解决了计算装置IO瓶颈问题,有效地提高计算的效率和降低计算的开销。另外,本披露的方案还可以根据主处理电路中配置的运算器的类型、从处理电路中配置的运算电路的功能,并通过主处理电路和从处理电路的协作,灵活设置计算指令中所包括的操作的类型和数量,以使计算装置可以执行多种类型的计算操作,从而扩展和丰富了计算装置的应用场景,满足不同的计算需求。
另外,由于主处理电路和从处理电路可以配置成支持多级流水运算,从而提升了主处理电路和从处理电路中运算器的执行效率,进一步缩短计算的时间。根据上文的描述,本领域技术人员可以理解图1a所示硬件架构仅仅是示例性而非限制性的。在本披露的公开和教导下,本领域技术人员也可以基于该架构来增加新的电路或器件,以实现更多的功能或操作。例如,可以在图1a所示的架构中增加存储电路,以存储各类指令和数据(例如张量数据)。进一步,也可以将主处理电路和从处理电路布置于不同的物理或逻辑位置,并且二者之间可以通过各种数据接口或互联单元来连接,以便通过二者的交互来完成上文的主运算操作和从运算操作,包括对结合图1b所述的张量的各类操作。
图2是示出根据本披露实施例的计算装置200的框图。可以理解的是,图2中所示出的计算装置200是图1a所示计算装置100的一种具体实现方式,因此结合图1a所描述的计算装置100的主处理电路和从处理电路的细节也同样适用于图2所示出的计算装置200。
如图2中所示,根据本披露的计算装置200包括主处理电路202和多个从处理电路204、206和208。由于前文结合图1a对主处理电路和从处理电路的操作进行了详细的描述,此处将不再赘述。除了包括与图1a所示计算装置100相同的主处理电路和从处理电路,图2的计算装置200还包括控制电路210和存储电路212。在一个实施例中,控制电路可以配置成获取所述计算指令并且对该计算指令进行解析,以得到所述主指令和从指令,并且将所述主指令发送至所述主处理电路202并且将所述从指令发送至所述多个从处理电路204、206和208中的一个或多个。在一个场景中,控制电路可以通过主处理电路将解析后得到的从指令发送至从处理电路,即如图2中所示出的。替代地,当控制电路和从处理电路之间存在连接时,控制电路也可以直接向从处理电路发送解析后的从指令。类似地,当存储电路与从处理电路之间存在连接时,控制电路也可以经由存储电路将从指令发送到从处理电路。在一些计算场景中,当计算指令中包括涉及张量运算的操作数时,控制电路可以利用前面讨论的描述符来确定操作数对应数据的存储地址,例如张量的起始地址,并且可以指示主处理电路或从处理电路从存储电路212中的对应存储地址处获取参与张量运算的张量数据,以便执行张量运算。
在一个或多个实施例中,存储电路212可以存储各类与计算相关的数据或指令,例如包括上文所述的张量。在一个场景中,存储电路可以存储与神经网络运算相关的神经元或权值数据,或者存储经主处理电路执行后处理操作后获得的最终运算结果。附加地,存储电路可以存储经主处理电路执行前处理操作后所获得的中间结果,或经从处理电路执行运算操作后所获得的中间结果。在针对于张量的操作中,前述的中间结果也可以是张量类型的数据,并且通过描述符确定的存储地址来读取和存放。在一些应用场景中,存储电路可以用作计算装置200的片上存储器来与片外存储器执行数据读写操作,例如通过直接存储器访问(“DMA”)接口。在一些场景中,当计算指令由控制电路来解析时,存储电路可以存储由控制电路解析后所得到的运算指令,例如主指令和/或从指令。另外,尽管图2中以一个框图示出存储电路,但根据应用场景的不同,存储电路可以实现为包括主存储器和主缓存器的存储器,其中主存储器可以用于存储相关的运算数据例如神经元、权值和各类常数项,而主缓存模块可以用于临时存储中间数据,例如经所述前处理操作后的数据和后处理操作前的数据,而这些中间数据根据设置可以对于操作人员不可见。
在主存储器与主处理电路的交互应用中,主处理电路中的流水运算电路还可以借助于存储在主存储电路中的掩码进行对应的操作。例如,在执行流水运算的过程中,该运算电路可以从主存储电路中读取一个掩码,并且可以利用该掩码来表示该运算电路中执行运算操作的数据是否有效。主存储电路不仅可以进行内部的存储应用,还具有与本披露的计算装置外的存储装置进行数据交互的功能,例如可以通过直接存储器访问(“DMA”)与外部的存储装置进行数据交换。
图3是示出根据本披露实施例的计算装置的主处理电路300的框图。可以理解的是图3所示出的主处理电路300也即结合图1a和图2所示和描述的主处理电路,因此对图1a和图2中的主处理电路的描述也同样适用于下文结合图3的描述。
如图3中所示,所述主处理电路300可以包括数据处理单元302、第一组流水运算电路304和最后一组流水运算电路306以及位于二组之间的一组或多组流水运算电路(以黑圈替代)。在一个实施例中,数据处理单元302包括数据转换电路3021和数据拼接电路3022。如前所述,当主运算操作包括针对于从运算操作的前处理操作时,例如数据转换操作或数据拼接操作时,数据转换电路3021或数据拼接电路3022将根据相应的主指令来执行相应的转换操作或拼接操作。下面将以示例来说明转换操作和拼接操作。
就数据转换操作而言,当输入到数据转换电路的数据位宽较高时(例如数据位宽为1024比特位宽),则数据转换电路可以根据运算要求将输入数据转换为较低比特位宽的数据(例如输出数据的位宽为512比特位宽)。根据不同的应用场景,数据转换电路可以支持多种数据类型之间的转换,例如可以进行FP16(浮点数16位)、FP32(浮点数32位)、FIX8(定点数8位)、FIX4(定点数4位)、FIX16(定点数16位)等具有不同比特位宽的数据类型间转换。当输入到数据转换电路的数据是矩阵时,数据转换操作可以是针对矩阵元素的排列位置进行的变换。该变换可以例如包括矩阵转置与镜像(稍后结合图4a-图4c描述)、矩阵按照预定的角度(例如是90度、180度或270度)旋转和矩阵维度的转换。
就数据拼接操作而言,数据拼接电路可以根据例如指令中设定的位长对数据中提取的数据块进行奇偶拼接等操作。例如,当数据位长为32比特位宽时,数据拼接电路可以按照4比特的位宽长度将数据分为1~8共8个数据块,然后将数据块1、3、5和7共四个数据块拼接在一起,并且将数据2、4、6和8共四个数据块拼接在一起以用于运算。
在另一些应用场景中,还可以针对执行运算后获得的数据M(例如可以是向量)执行上述的数据拼接操作。假设数据拼接电路可以将数据M偶数行的低256位先以8位比特位宽作为1个单位数据进行拆分,以得到32个偶数行单位数据(分别表示为M_2i0至M_2i31)。类似地,可以将数据M奇数行的低256位也以8位比特位宽作为1个单位数据进行拆分,以得到32个奇数行单位数据(分别表示为M_(2i+1)0至M_(2i+1)31)。进一步,根据数据位由低到高、先偶数行后奇数行的顺序依次交替布置拆分后的32个奇数行单位数据与32个偶数行单位数据。具体地,将偶数行单位数据0(M_2i0)布置在低位,再顺序布置奇数行单位数据0(M_(2i+1)0)。接着,布置偶数行单位数据1(M_2i1)……。以此类推,当完成奇数行单位数据31(M_(2i+1)31)的布置时,64个单位数据拼接在一起以组成一个512位比特位宽的新数据。
根据不同的应用场景,数据处理单元中的数据转换电路和数据拼接电路可以配合使用,以便更加灵活地进行数据前处理。例如,根据主指令中包括的不同操作,数据处理单元可以仅执行数据转换而不执行数据拼接操作、仅执行数据拼接操作而不执行数据转换、或者既执行数据转换又执行数据拼接操作。在一些场景中,当所述主指令中并不包括针对于从运算操作的前处理操作时,则数据处理单元可以配置成禁用所述数据转换电路和数据拼接电路。
如前所述,根据本披露的主处理电路可以包括一组或多组多级流水运算电路,如图3中示出的两组多级流水运算电路304和306,其中每组多级流水运算电路执行包括第一级到第N级的多级流水操作,其中每一级可以包括一个或多个运算器,以便根据所述主指令来执行多级流水运算。在一个实施例中,本披露的主处理电路可以实现为单指令多数据(Single Instruction Multiple Data,SIMD)模块,并且每组多级流水运算电路可以形成一条运算流水线。该运算流水线根据运算需求可以逐级设置数量不等的、不同的或相同的功能模块(也即本披露的运算器),例如加法模块(或加法器)、乘法模块(或乘法器)、查表模块(或查表器)等各种类型的功能模块。
在一些应用场景中,当满足流水线的顺序要求时,可以将一条流水线上的不同功能模块组合使用,一级流水完成一个微指令中的一个操作码(“op”)所代表的操作。由此,本披露的SIMD可以支持不同级别的流水操作。即,基于运算流水线上运算器的设置,本披露的SIMD可以灵活地支持不同数量的op的组合。
假设存在与第一组多级流水运算电路304和第二组多级流水线运算电路306相类似的一条流水线(以“stage1”来表示其名称),其按照从上到下的顺序设置有六个功能模块以形成六级流水线,具体可以为:stage1-1-加法器1(第一级加法器)、stage1-2-加法器2(第二级加法器)、stage1-3-乘法器1(第一级乘法器)、stage1-4-乘法器2(第二级乘法器)、stage1-5-加法器1(第一级加法器)、stage1-6-加法器2(第二级加法器)。可以看出,第一级加法器(其作为流水线的第一级)和第二级加法器(其作为流水线的第二级)配合使用,以便完成加法操作的两级运算。同样地,第一级乘法器和第二级乘法器也执行类似地两级运算。当然,此处的两级加法器或乘法器仅仅是示例性地而非限制性地,在一些应用场景中,也可以在多级流水线中仅设置一级加法器或乘法器。
在一些实施例中,还可以设置两条或更多条如上所述的流水线,其中每条流水线中可以包括若干个相同或不同的运算器,以实现相同或不同的功能。进一步,不同的流水线可以包括不同的运算器,以便各个流水线实现不同功能的运算操作。实现前述不同功能的运算器或电路可以包括但不限于随机数处理电路、加减电路、减法电路、查表电路、参数配置电路、乘法器、除法器、池化器、比较器、求绝对值电路、逻辑运算器、位置索引电路或过滤器。这里以池化器为例,其可以示例性由加法器、除法器、比较器等运算器来构成,以便执行神经网络中的池化操作。
在一些应用场景中,主处理电路中的多级流水运算可以支持一元运算(即只有一项输入数据的情形)。以神经网络中的scale层+relu层处的运算操作为例,假设待执行的计算指令表达为result=relu(a*ina+b),其中ina是输入数据(例如可以是向量、矩阵或者张量),a、b均为运算常量。对于该计算指令,可以应用本披露的包括乘法器、加法器、非线性运算器的一组三级流水运算电路来执行运算。具体来说,可以利用第一级流水的乘法器计算输入数据ina与a的乘积,以获得第一级流水运算结果。接着,可以利用第二级流水的加法器,对该第一级流水运算结果(a*ina)与b执行加法运算获得第二级流水运算结果。最后,可以利用第三级流水的relu激活函数,对该第二级流水运算结果(a*ina+b)进行激活操作,以获得最终的运算结果result。
在一些应用场景中,主处理电路中的多级流水运算电路可以支持二元运算(例如卷积计算指令result=conv(ina,inb))或三元运算(例如卷积计算指令result=conv(ina,inb,bias)),其中输入数据ina、inb与bias既可以是一维张量(即向量,其例如可以是整型、定点型或浮点型数据),也可以是二维张量(即矩阵),或者是3维或3维以上的张量。这里以卷积计算指令result=conv(ina,inb)为例,可以利用三级流水运算电路结构中包括的多个乘法器、至少一个加法树和至少一个非线性运算器来执行该计算指令所表达的卷积运算,其中两个输入数据ina和inb可以例如是神经元数据。具体来说,首先可以利用三级流水运算电路中的第一级流水乘法器进行计算,从而可以获得第一级流水运算结果product=ina*inb(视为运算指令中的一条微指令,其对应于乘法操作)。继而可以利用第二级流水运算电路中的加法树对第一级流水运算结果“product”执行加和操作,以获得第二级流水运算结果sum。最后,利用第三级流水运算电路的非线性运算器对“sum”执行激活操作,从而得到最终的卷积运算结果。
在一些应用场景中,可以对运算操作中将不使用的一级或多级流水运算电路执行旁路操作,即可以根据运算操作的需要选择性地使用多级流水运算电路的一级或多级,而无需令运算操作经过所有的多级流水操作。以计算欧式距离的运算操作为例,假设其计算指令表示为dis=sum((ina-inb)^2),可以只使用由加法器、乘法器、加法树和累加器构成的若干级流水运算电路来进行运算以获得最终的运算结果,而对于未使用的流水运算电路,可以在流水运算操作前或操作中予以旁路。
在前述的流水操作中,每组流水运算电路可以独立地执行所述流水操作。然而,多组中的每组流水运算电路也可以协同地执行所述流水操作。例如,第一组流水运算电路中的第一级、第二级执行串行流水运算后的输出可以作为另一组流水运算电路的第三级流水的输入。又例如,第一组流水运算电路中的第一级、第二级执行并行流水运算,并分别输出各自流水运算的结果,作为另一组流水运算电路的第一级和/或第二级流水操作的输入。
图4a,4b和4c是示出根据本披露实施例的数据转换电路所执行的矩阵转换示意图。为了更好地理解主处理电路中的数据转换电路3021执行的转换操作,下面将以原始矩阵(可以视为本披露下的2维张量)进行的转置操作与水平镜像操作为例做进一步描述。
如图4a所示,原始矩阵是(M+1)行×(N+1)列的矩阵。根据应用场景的需求,数据转换电路可以对图4a中示出的原始矩阵进行转置操作转换,以获得如图4b所示出的矩阵。具体来说,数据转换电路可以将原始矩阵中元素的行序号与列序号进行交换操作以形成转置矩阵。具体来说,在图4a示出的原始矩阵中坐标是第1行第0列的元素“10”,其在图4b示出的转置矩阵中的坐标则是第0行第1列。以此类推,在图4a示出的原始矩阵中坐标是第M+1行第0列的元素“M0”,其在图4b示出的转置矩阵中的坐标则是第0行第M+1列。
如图4c所示,数据转换电路可以对图4a示出的原始矩阵进行水平镜像操作以形成水平镜像矩阵。具体来说,所述数据转换电路可以通过水平镜像操作,将原始矩阵中从首行元素到末行元素的排列顺序转换成从末行元素到首行元素的排列顺序,而对原始矩阵中元素的列号保持不变。具体来说,图4a示出的原始矩阵中坐标分别是第0行第0列的元素“00”与第1行第0列的元素“10”,在图4c中示出的水平镜像矩阵中的坐标则分别是第M+1行第0列与第M行第0列。以此类推,在图4a示出的原始矩阵中坐标是第M+1行第0列的元素“M0”,在图4c示出的水平镜像矩阵中的坐标则是第0行第0列。
图5是示出根据本披露实施例的计算装置的从处理电路500的框图。可以理解的是图中所示结构仅仅是示例性的而非限制性的,本领域技术人员基于本披露的教导也可以想到增加更多的运算器来形成更多级的流水运算电路。
如图5中所示,从处理电路500包括乘法器502、比较器504、选择器506、累加器508和转换器510构成的四级流水运算电路。在一个应用场景中,该从处理电路整体上可以执行向量(包括例如矩阵)运算。
当执行向量运算中,从处理电路500根据接收到的微指令(如图中所示出的控制信号)来控制包括权值数据和神经元数据的向量数据(可以视为本披露下的1维张量)输入到乘法器中。在执行完乘法操作后,乘法器将结果输入到选择器506。此处,选择器506选择将乘法器的结果而非来自于比较器的结果传递至累加器508,执行向量运算中的累加操作。接着,累加器将累加后的结果传递至转换器510执行前文描述的数据转换操作。最终,由转换器将累加和(即图中所示“ACC_SUM”)作为最终结果输出。
除了执行上述的神经元数据和权值数据之间的矩阵乘加(“MAC”)运算以外,图5所示的四级流水运算电路还可以用于执行神经网络运算中的直方图运算、depthwise层乘加运算、积分和winograd乘加运算等运算。当执行直方图运算时,在第一级运算中,从处理电路根据微指令来将输入数据输入到比较器。相应地,此处选择器506选择将比较器的结果而非乘法器的结果传递至累加器以执行后续的操作。
通过上述的描述,本领域技术人员可以理解就硬件布置来说,本披露的从处理电路可以包括用于执行从运算操作的多个运算电路,并且所述多个运算电路被连接并配置成执行多级流水的运算操作。在一个或多个实施例中,前述的运算电路可以包括但不限于乘法电路、比较电路、累加电路和转数电路中的一个或多个,以至少执行向量运算,例如神经网络中的多维卷积运算。
在一个运算场景中,本披露的从处理电路可以根据从指令(实现为例如一个或多个微指令或控制信号)对经主处理电路执行前处理操作的数据进行运算,以获得预期的运算结果。在另一个运算场景中,从处理电路可以将其运算后获得的中间结果发送(例如经由互联接口)发送到主处理电路中的数据处理单元,以便由数据处理单元中的数据转换电路来对中间结果执行数据类型转换或者以便由数据处理单元中的数据拼接电路来对中间结果执行数据拆分和拼接操作,从而获得最终的运算结果。下面将结合几个示例性的指令来描述本披露的主处理电路和从处理电路的操作。
以包括前处理操作的计算指令“COSHLC”为例,其执行的操作(包括主处理电路执行的前处理操作和从处理电路执行的从运算操作)可以表达为:
COSHLC=FPTOFIX+SHUFFLE+LT3DCONV,
其中FPTOFIX表示主处理电路中的数据转换电路执行的数据类型转换操作,即将输入数据从浮点型数转换成定点型数,SHUFFLE表示数据拼接电路执行的数据拼接操作,而LT3DCONV表示从处理电路(以“LT”指代)执行的3DCONV操作,即3维数据的卷积操作。可以理解的是,当仅执行3维数据的卷积操作时,则作为主操作一部分的FPTOFIX和SHUFFLE均可以设置为可选的操作。
以包括后处理操作的计算指令LCSU为例,其执行的操作(包括从处理电路执行的从运算操作和主处理电路执行的后处理操作)可以表达为:
LCSU=LT3DCONV+SUB,
其中在从处理电路执行LT3DCONV操作以获得3D卷积结果后,可以由主处理电路中的减法器对3D卷积结果执行减法操作SUB。由此,在每个指令的执行周期,可以输入1个2元操作数(即卷积结果和减数),输出1个1元操作数(即执行LCSU指令后获得的最终结果)。
再以包括前处理操作、从运算操作和后处理操作的计算指令SHLCAD为例,其执行的操作(包括主处理电路执行的前处理操作、从处理电路执行的从运算操作和主处理电路执行的后处理操作)可以表达为:
SHLCAD=SHUFFLE+LT3DCONV+ADD
其中在所述前处理操作中,数据拼接电路执行SHUFFLE表示的数据拼接操作。接着,由从处理电路对拼接后的数据执行LT3DCONV操作以获得以3D卷积结果。最后,由主处理电路中的加法器对3D卷积结果执行加法操作ADD以获得最终的计算结果。
从上面的例子可以,本领域技术人员可以理解在对计算指令解析后,本披露所获得的运算指令根据具体的运算操作包括以下组合中的一项:前处理指令和从处理指令;从处理指令和后处理指令;以及前处理指令、从处理指令和后处理指令。基于此,在一些实施例中,所述前处理指令可以包括数据转换指令和/或数据拼接指令。在另一些实施例中,所述后处理指令包括以下中的一项或多项:随机数处理指令、加法指令、减法指令、查表指令、参数配置指令、乘法指令、池化指令、激活指令、比较指令、求绝对值指令、逻辑运算指令、位置索引指令或过滤指令。在另一些实施例中,所述从处理指令可以包括各种类型的运算指令,包括但不限于与后处理指令中相类似的指令以及针对于复杂数据处理的指令,例如向量运算指令或者张量运算指令。
基于上述结合图1(包括图1a和图1b)-图5的描述,本领域技术人员可以理解本披露同样也公开了一种使用计算装置来执行计算操作的方法,其中所述计算装置包括主处理电路和至少一个从处理电路(即前文结合图1~图5所讨论的计算装置),所述方法包括将所述主处理电路配置成响应于主指令来执行主运算操作,并且将所述从处理电路配置成响应于从指令来执行从运算操作。在一个实施例中,前述的主运算操作包括针对于所述从运算操作的前处理操作和/或后处理操作,所述主指令和所述从指令根据所述计算装置接收的计算指令解析得到。在另一个实施例中,所述计算指令的操作数包括用于指示张量的形状的描述符,所述描述符用于确定所述操作数对应数据的存储地址。
基于上述的描述符设置,所述方法还可以包括将所述主处理电路和/或从处理电路配置成根据所述存储地址来执行各自对应的主运算操作和/或从处理操作。如前所述,通过本披露的描述符设置,可以提升张量运算的效率和数据访存的速率,进一步减小张量运算的开销。另外,尽管这里为了简明的目的,没有对方法的另外步骤进行描述,但本领域技术人员根据本披露公开的内容可以理解本披露的方法可以执行前文结合图1-图5所述的各类操作。
图6是示出根据本披露实施例的一种组合处理装置600的结构图。如图6中所示,该组合处理装置600包括计算处理装置602、接口装置604、其他处理装置606和存储装置608。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置610,该计算装置可以配置用于执行本文结合图1-图5所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图7中示出的芯片702)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图6中所示的组合处理装置。该芯片可以通过对外接口装置(如图7中示出的对外接口装置706)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图7对该板卡进行详细地描述。
图7是示出根据本披露实施例的一种板卡700的结构示意图。如图7中所示,该板卡包括用于存储数据的存储器件704,其包括一个或多个存储单元710。该存储器件可以通过例如总线等方式与控制器件708和上文所述的芯片702进行连接和数据传输。进一步,该板卡还包括对外接口装置706,其配置用于芯片(或芯片封装结构中的芯片)与外部设备712(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图6和图7的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款1、一种计算装置,包括主处理电路和至少一个从处理电路,其中:
所述主处理电路配置成响应于主指令来执行主运算操作,
所述从处理电路配置成响应于从指令来执行从运算操作,
其中,所述主运算操作包括针对于所述从运算操作的前处理操作和/或后处理操作,所述主指令和所述从指令根据所述计算装置接收的计算指令解析得到,其中所述计算指令的操作数包括用于指示张量的形状的描述符,所述描述符用于确定所述操作数对应数据的存储地址,
其中所述主处理电路和/或从处理电路配置成根据所述存储地址来执行各自对应的主运算操作和/或从处理操作。
条款2、根据条款1所述的计算装置,其中所述计算指令包括描述符的标识和/或描述符的内容,所述描述符的内容包括表示张量数据的形状的至少一个形状参数。
条款3、根据条款2所述的计算装置,其中所述描述符的内容还包括表示张量数据的地址的至少一个地址参数。
条款4、根据条款3所述的计算装置,其中所述张量数据的地址参数包括所述描述符的数据基准点在所述张量数据的数据存储空间中的基准地址。
条款5、根据条款4所述的计算装置,其中所述张量数据的形状参数包括以下至少一种:
所述数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于所述数据基准点的位置、所述描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,其中N为大于或等于零的整数。
条款6、根据条款1所述的计算装置,其中所述主处理电路配置成:
获取所述计算指令并对所述计算指令进行解析,以得到所述主指令和所述从指令;以及
将所述从指令发送至所述从处理电路。
条款7、根据条款1所述的计算装置,还包括控制电路,所述控制电路配置成:
获取所述计算指令并对所述计算指令进行解析,以得到所述主指令和所述从指令;以及
将所述主指令发送至所述主处理电路并且将所述从指令发送至所述从处理电路。
条款8、根据条款1所述的计算装置,其中所述主指令包括用于标识所述前处理操作和/或所述后处理操作的标识位。
条款9、根据条款1所述的计算装置,其中所述计算指令包括用于区分所述主指令中的所述前处理操作和所述后处理操作的预设位。
条款10、根据条款1所述的计算装置,其中所述主处理电路包括用于执行所述主运算操作的数据处理单元,并且所述数据处理单元包括用于执行数据转换操作的数据转换电路和/或用于执行数据拼接操作的数据拼接电路。
条款11、根据条款10所述的计算装置,其中所述数据转换电路包括一个或多个转换器,用于实现计算数据在多种不同数据类型之间的转换。
条款12、根据条款10所述的计算装置,其中所述数据拼接电路配置成以预定的位长对计算数据进行拆分,并且将拆分后获得的多个数据块按照预定顺序进行拼接。
条款13、根据条款1所述的计算装置,其中所述主处理电路包括一组或多组流水运算电路,所述每组流水运算电路形成一条运算流水线并且包括一个或多个运算器,其中当所述每组流水运算电路包括多个运算器时,所述多个运算器被连接并配置成根据所述主指令选择性地参与以执行所述主运算操作。
条款14、根据条款13所述的计算装置,其中所述主处理电路包括至少两条运算流水线,并且每条运算流水线包括以下中的一个或多个运算器或电路:
随机数处理电路、加减电路、减法电路、查表电路、参数配置电路、乘法器、除法器、池化器、比较器、求绝对值电路、逻辑运算器、位置索引电路或过滤器。
条款15、根据条款1所述的计算装置,其中所述从处理电路包括用于执行所述从运算操作的多个运算电路,并且所述多个运算电路被连接并配置成执行多级流水的运算操作,其中所述运算电路包括乘法电路、比较电路、累加电路和转数电路中的一个或多个,以至少执行向量运算。
条款16、根据条款15所述的计算装置,其中所述从指令包括对经所述前处理操作的计算数据执行卷积运算的卷积指令,所述从处理电路配置成:
根据所述卷积指令对经所述前处理操作的计算数据执行卷积运算。
条款17、一种集成电路芯片,包括根据条款1-16的任意一项所述的计算装置。
条款18、一种板卡,包括根据条款17所述的集成电路芯片。
条款19、一种电子设备,包括根据条款17所述的集成电路芯片。
条款20、一种使用计算装置来执行计算操作的方法,其中所述计算装置包括主处理电路和至少一个从处理电路,所述方法包括:
将所述主处理电路配置成响应于主指令来执行主运算操作,
将所述从处理电路配置成响应于从指令来执行从运算操作,
其中所述主运算操作包括针对于所述从运算操作的前处理操作和/或后处理操作,所述主指令和所述从指令根据所述计算装置接收的计算指令解析得到,其中所述计算指令的操作数包括用于指示张量的形状的描述符,所述描述符用于确定所述操作数对应数据的存储地址,
其中所述方法还包括将所述主处理电路和/或从处理电路配置成根据所述存储地址来执行各自对应的主运算操作和/或从处理操作。
条款21、根据条款20所述的方法,其中所述计算指令包括描述符的标识和/或描述符的内容,所述描述符的内容包括表示张量数据的形状的至少一个形状参数。
条款22、根据条款21所述的方法,其中所述描述符的内容还包括表示张量数据的地址的至少一个地址参数。
条款23、根据条款22所述的方法,其中所述张量数据的地址参数包括所述描述符的数据基准点在所述张量数据的数据存储空间中的基准地址。
条款24、根据条款23所述的方法,其中所述张量数据的形状参数包括以下至少一种:
所述数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于所述数据基准点的位置、所述描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,其中N为大于或等于零的整数。
条款25、根据条款20所述的方法,其中将所述主处理电路配置成:
获取所述计算指令并对所述计算指令进行解析,以得到所述主指令和所述从指令;以及
将所述从指令发送至所述从处理电路。
条款26、根据条款20所述的方法,其中计算装置包括控制电路,所述方法还包括将控制电路配置成:
获取所述计算指令并对所述计算指令进行解析,以得到所述主指令和所述从指令;以及
将所述主指令发送至所述主处理电路并且将所述从指令发送至所述从处理电路。
条款27、根据条款20所述的方法,其中所述主指令包括用于标识所述前处理操作和/或所述后处理操作的标识位。
条款28、根据条款20所述的方法,其中所述计算指令包括用于区分所述主指令中的所述前处理操作和所述后处理操作的预设位。
条款29、根据条款20所述的方法,其中所述主处理电路包括数据处理单元,并且所述数据处理单元包括数据转换电路和/或数据拼接电路,所述方法包括将数据处理单元配置成执行所述主运算操作,并且将所述数据转换电路配置成执行数据转换操作,以及将所述数据拼接电路配置成执行数据拼接操作。
条款30、根据条款29所述的方法,其中所述数据转换电路包括一个或多个转换器,所述方法包括将一个或多个转换器配置成实现计算数据在多种不同数据类型之间的转换。
条款31、根据条款29所述的方法,其中将所述数据拼接电路配置成以预定的位长对计算数据进行拆分,并且将拆分后获得的多个数据块按照预定顺序进行拼接。
条款32、根据条款20所述的方法,其中所述主处理电路包括一组或多组流水运算电路,所述每组流水运算电路形成一条运算流水线并且包括一个或多个运算器,其中当所述每组流水运算电路包括多个运算器时,所述方法包括将所述多个运算器进行连接并且配置成根据所述主指令选择性地参与以执行所述主运算操作。
条款33、根据条款32所述的方法,其中所述主处理电路包括至少两条运算流水线,并且每条运算流水线包括以下中的一个或多个运算器或电路:
随机数处理电路、加减电路、减法电路、查表电路、参数配置电路、乘法器、除法器、池化器、比较器、求绝对值电路、逻辑运算器、位置索引电路或过滤器。
条款34、根据条款20所述的方法,其中所述从处理电路包括多个运算电路,所述方法包括将所述多个运算电路配置成执行所述从运算操作,并且所述方法还包括将所述多个运算电路连接并配置成执行多级流水的运算操作,其中所述运算电路包括乘法电路、比较电路、累加电路和转数电路中的一个或多个,以至少执行向量运算。
条款35、根据条款34所述的方法,其中所述从指令包括对经所述前处理操作的计算数据执行卷积运算的卷积指令,所述方法包括将所述从处理电路配置成:
根据所述卷积指令对经所述前处理操作的计算数据执行卷积运算。
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
Claims (35)
1.一种计算装置,包括主处理电路和至少一个从处理电路,其中:
所述主处理电路配置成响应于主指令来执行主运算操作,
所述从处理电路配置成响应于从指令来执行从运算操作,
其中,所述主运算操作包括针对于所述从运算操作的前处理操作和/或后处理操作,所述主指令和所述从指令根据所述计算装置接收的计算指令解析得到,其中所述计算指令的操作数包括用于指示张量的形状的描述符,所述描述符用于确定所述操作数对应数据的存储地址,
其中所述主处理电路和/或从处理电路配置成根据所述存储地址来执行各自对应的主运算操作和/或从处理操作。
2.根据权利要求1所述的计算装置,其中所述计算指令包括描述符的标识和/或描述符的内容,所述描述符的内容包括表示张量数据的形状的至少一个形状参数。
3.根据权利要求2所述的计算装置,其中所述描述符的内容还包括表示张量数据的地址的至少一个地址参数。
4.根据权利要求3所述的计算装置,其中所述张量数据的地址参数包括所述描述符的数据基准点在所述张量数据的数据存储空间中的基准地址。
5.根据权利要求4所述的计算装置,其中所述张量数据的形状参数包括以下至少一种:
所述数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于所述数据基准点的位置、所述描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,其中N为大于或等于零的整数。
6.根据权利要求1所述的计算装置,其中所述主处理电路配置成:
获取所述计算指令并对所述计算指令进行解析,以得到所述主指令和所述从指令;以及
将所述从指令发送至所述从处理电路。
7.根据权利要求1所述的计算装置,还包括控制电路,所述控制电路配置成:
获取所述计算指令并对所述计算指令进行解析,以得到所述主指令和所述从指令;以及
将所述主指令发送至所述主处理电路并且将所述从指令发送至所述从处理电路。
8.根据权利要求1所述的计算装置,其中所述主指令包括用于标识所述前处理操作和/或所述后处理操作的标识位。
9.根据权利要求1所述的计算装置,其中所述计算指令包括用于区分所述主指令中的所述前处理操作和所述后处理操作的预设位。
10.根据权利要求1所述的计算装置,其中所述主处理电路包括用于执行所述主运算操作的数据处理单元,并且所述数据处理单元包括用于执行数据转换操作的数据转换电路和/或用于执行数据拼接操作的数据拼接电路。
11.根据权利要求10所述的计算装置,其中所述数据转换电路包括一个或多个转换器,用于实现计算数据在多种不同数据类型之间的转换。
12.根据权利要求10所述的计算装置,其中所述数据拼接电路配置成以预定的位长对计算数据进行拆分,并且将拆分后获得的多个数据块按照预定顺序进行拼接。
13.根据权利要求1所述的计算装置,其中所述主处理电路包括一组或多组流水运算电路,所述每组流水运算电路形成一条运算流水线并且包括一个或多个运算器,其中当所述每组流水运算电路包括多个运算器时,所述多个运算器被连接并配置成根据所述主指令选择性地参与以执行所述主运算操作。
14.根据权利要求13所述的计算装置,其中所述主处理电路包括至少两条运算流水线,并且每条运算流水线包括以下中的一个或多个运算器或电路:
随机数处理电路、加减电路、减法电路、查表电路、参数配置电路、乘法器、除法器、池化器、比较器、求绝对值电路、逻辑运算器、位置索引电路或过滤器。
15.根据权利要求1所述的计算装置,其中所述从处理电路包括用于执行所述从运算操作的多个运算电路,并且所述多个运算电路被连接并配置成执行多级流水的运算操作,其中所述运算电路包括乘法电路、比较电路、累加电路和转数电路中的一个或多个,以至少执行向量运算。
16.根据权利要求15所述的计算装置,其中所述从指令包括对经所述前处理操作的计算数据执行卷积运算的卷积指令,所述从处理电路配置成:
根据所述卷积指令对经所述前处理操作的计算数据执行卷积运算。
17.一种集成电路芯片,包括根据权利要求1-16的任意一项所述的计算装置。
18.一种板卡,包括根据权利要求17所述的集成电路芯片。
19.一种电子设备,包括根据权利要求17所述的集成电路芯片。
20.一种使用计算装置来执行计算操作的方法,其中所述计算装置包括主处理电路和至少一个从处理电路,所述方法包括:
将所述主处理电路配置成响应于主指令来执行主运算操作,
将所述从处理电路配置成响应于从指令来执行从运算操作,
其中所述主运算操作包括针对于所述从运算操作的前处理操作和/或后处理操作,所述主指令和所述从指令根据所述计算装置接收的计算指令解析得到,其中所述计算指令的操作数包括用于指示张量的形状的描述符,所述描述符用于确定所述操作数对应数据的存储地址,
其中所述方法还包括将所述主处理电路和/或从处理电路配置成根据所述存储地址来执行各自对应的主运算操作和/或从处理操作。
21.根据权利要求20所述的方法,其中所述计算指令包括描述符的标识和/或描述符的内容,所述描述符的内容包括表示张量数据的形状的至少一个形状参数。
22.根据权利要求21所述的方法,其中所述描述符的内容还包括表示张量数据的地址的至少一个地址参数。
23.根据权利要求22所述的方法,其中所述张量数据的地址参数包括所述描述符的数据基准点在所述张量数据的数据存储空间中的基准地址。
24.根据权利要求23所述的方法,其中所述张量数据的形状参数包括以下至少一种:
所述数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于所述数据基准点的位置、所述描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,其中N为大于或等于零的整数。
25.根据权利要求20所述的方法,其中将所述主处理电路配置成:
获取所述计算指令并对所述计算指令进行解析,以得到所述主指令和所述从指令;以及
将所述从指令发送至所述从处理电路。
26.根据权利要求20所述的方法,其中计算装置包括控制电路,所述方法还包括将控制电路配置成:
获取所述计算指令并对所述计算指令进行解析,以得到所述主指令和所述从指令;以及
将所述主指令发送至所述主处理电路并且将所述从指令发送至所述从处理电路。
27.根据权利要求20所述的方法,其中所述主指令包括用于标识所述前处理操作和/或所述后处理操作的标识位。
28.根据权利要求20所述的方法,其中所述计算指令包括用于区分所述主指令中的所述前处理操作和所述后处理操作的预设位。
29.根据权利要求20所述的方法,其中所述主处理电路包括数据处理单元,并且所述数据处理单元包括数据转换电路和/或数据拼接电路,所述方法包括将数据处理单元配置成执行所述主运算操作,并且将所述数据转换电路配置成执行数据转换操作,以及将所述数据拼接电路配置成执行数据拼接操作。
30.根据权利要求29所述的方法,其中所述数据转换电路包括一个或多个转换器,所述方法包括将一个或多个转换器配置成实现计算数据在多种不同数据类型之间的转换。
31.根据权利要求29所述的方法,其中将所述数据拼接电路配置成以预定的位长对计算数据进行拆分,并且将拆分后获得的多个数据块按照预定顺序进行拼接。
32.根据权利要求20所述的方法,其中所述主处理电路包括一组或多组流水运算电路,所述每组流水运算电路形成一条运算流水线并且包括一个或多个运算器,其中当所述每组流水运算电路包括多个运算器时,所述方法包括将所述多个运算器进行连接并且配置成根据所述主指令选择性地参与以执行所述主运算操作。
33.根据权利要求32所述的方法,其中所述主处理电路包括至少两条运算流水线,并且每条运算流水线包括以下中的一个或多个运算器或电路:
随机数处理电路、加减电路、减法电路、查表电路、参数配置电路、乘法器、除法器、池化器、比较器、求绝对值电路、逻辑运算器、位置索引电路或过滤器。
34.根据权利要求20所述的方法,其中所述从处理电路包括多个运算电路,所述方法包括将所述多个运算电路配置成执行所述从运算操作,并且所述方法还包括将所述多个运算电路连接并配置成执行多级流水的运算操作,其中所述运算电路包括乘法电路、比较电路、累加电路和转数电路中的一个或多个,以至少执行向量运算。
35.根据权利要求34所述的方法,其中所述从指令包括对经所述前处理操作的计算数据执行卷积运算的卷积指令,所述方法包括将所述从处理电路配置成:
根据所述卷积指令对经所述前处理操作的计算数据执行卷积运算。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010619460.8A CN113867800A (zh) | 2020-06-30 | 2020-06-30 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
PCT/CN2021/095705 WO2022001500A1 (zh) | 2020-06-30 | 2021-05-25 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010619460.8A CN113867800A (zh) | 2020-06-30 | 2020-06-30 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113867800A true CN113867800A (zh) | 2021-12-31 |
Family
ID=78981783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010619460.8A Pending CN113867800A (zh) | 2020-06-30 | 2020-06-30 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113867800A (zh) |
WO (1) | WO2022001500A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115599442B (zh) * | 2022-12-14 | 2023-03-10 | 成都登临科技有限公司 | 一种ai芯片、电子设备及张量处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140093069A1 (en) * | 2012-09-28 | 2014-04-03 | Gilbert M. Wolrich | Instruction set for message scheduling of sha256 algorithm |
CN110096310A (zh) * | 2018-11-14 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047005A (zh) * | 2018-10-11 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020890B (zh) * | 2012-12-17 | 2015-11-04 | 中国科学院半导体研究所 | 基于多层次并行处理的视觉处理装置 |
CN107729990B (zh) * | 2017-07-20 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行正向运算的装置及方法 |
CN111078286B (zh) * | 2018-10-19 | 2023-09-01 | 上海寒武纪信息科技有限公司 | 数据通信方法、计算系统和存储介质 |
US11714875B2 (en) * | 2019-12-28 | 2023-08-01 | Intel Corporation | Apparatuses, methods, and systems for instructions of a matrix operations accelerator |
-
2020
- 2020-06-30 CN CN202010619460.8A patent/CN113867800A/zh active Pending
-
2021
- 2021-05-25 WO PCT/CN2021/095705 patent/WO2022001500A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140093069A1 (en) * | 2012-09-28 | 2014-04-03 | Gilbert M. Wolrich | Instruction set for message scheduling of sha256 algorithm |
CN111047005A (zh) * | 2018-10-11 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096310A (zh) * | 2018-11-14 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022001500A1 (zh) | 2022-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109685201B (zh) | 运算方法、装置及相关产品 | |
CN110119807B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
WO2022001500A1 (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
CN109711538B (zh) | 运算方法、装置及相关产品 | |
CN109740729B (zh) | 运算方法、装置及相关产品 | |
CN111047005A (zh) | 运算方法、装置、计算机设备和存储介质 | |
WO2022001497A1 (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
CN114692844A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN109558565B (zh) | 运算方法、装置及相关产品 | |
CN113867797A (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
CN112395008A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112395009A (zh) | 运算方法、装置、计算机设备和存储介质 | |
JP7368512B2 (ja) | 計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法 | |
CN112395002B (zh) | 运算方法、装置、计算机设备和存储介质 | |
WO2022134872A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN109543834B (zh) | 运算方法、装置及相关产品 | |
CN111353125B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111026440B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN109558564B (zh) | 运算方法、装置及相关产品 | |
CN114692841A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN109543833B (zh) | 运算方法、装置及相关产品 | |
CN114489802A (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 |