CN110851787A - 合并指令处理方法、装置、电子设备和存储介质 - Google Patents
合并指令处理方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN110851787A CN110851787A CN202010034696.5A CN202010034696A CN110851787A CN 110851787 A CN110851787 A CN 110851787A CN 202010034696 A CN202010034696 A CN 202010034696A CN 110851787 A CN110851787 A CN 110851787A
- Authority
- CN
- China
- Prior art keywords
- data
- merging
- circuit
- instruction
- merged
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Advance Control (AREA)
Abstract
本公开涉及一种合并指令处理方法、装置、电子设备和存储介质。该装置包括:指令解析电路对获取到的合并指令进行解析,得到合并指令的操作码和操作域;数据获取电路基于操作码和操作域获取第一数据、第二数据,并将第一数据和/或第二数据缓存至存储电路;参数确定电路确定进行合并处理所需的合并参数;处理电路从存储电路中读取缓存的第一数据和/或第二数据,根据合并参数利用运算器对第一数据和第二数据进行合并处理得到合并后数据并存储,合并指令包括异维合并指令和同维合并指令中的至少一种,本公开实施例所提供的合并指令处理方法、装置、电子设备和存储介质,进行数据合并处理的速度快、占用缓存少。
Description
技术领域
本公开涉及计算机技术领域,特别是涉及一种合并指令处理方法、装置、电子设备和存储介质。
背景技术
数据之间进行合并一般是指将两个数据合并在一起,得到新的数据。例如,将两个向量合并在一起、或者将向量和矩阵合并在一起。相关技术中,可以通过CPU等处理器实现数据合并过程,但是存在进行数据合并过程复杂、所能进行合并的数据类型单一、占用缓存大的问题,并且在进行大规模合并运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
发明内容
基于此,有必要针对上述技术问题,提供一种能够解决上述技术问题的合并指令处理方法、装置、电子设备和存储介质。
根据本公开的一方面,提供了一种合并指令处理装置,所述装置包括:
指令解析电路,用于对获取到的合并指令进行解析,得到所述合并指令的操作码和操作域;
数据获取电路,用于基于所述操作码和所述操作域获取进行合并处理所需的第一数据、第二数据,并将所述第一数据和/或所述第二数据发送至存储电路;
存储电路,用于缓存所述第一数据和/或所述第二数据;
参数确定电路,用于确定进行合并处理所需的合并参数;
处理电路,用于从所述存储电路中读取缓存的所述第一数据和/或所述第二数据,根据所述合并参数利用运算器对所述第一数据和所述第二数据进行合并处理得到合并后数据,并存储所述合并后数据,
其中,所述合并指令包括异维合并指令和同维合并指令中的至少一种,
在所述合并指令为异维合并指令时,所述第一数据的维度数小于所述第二数据的维度数,
在所述合并指令为同维合并指令时,所述第一数据的维度数等于所述第二数据的维度数,
所述操作码用于指示所述合并指令对数据所进行的处理为合并处理,所述操作域包括所述第一数据地址、所述第二数据地址。
根据本公开的另一方面,提供了一种合并指令处理方法,所述方法包括:
对获取到的合并指令进行解析,得到所述合并指令的操作码和操作域;
基于所述操作码和所述操作域获取进行合并处理所需的第一数据、第二数据;
缓存所述第一数据和/或所述第二数据;
确定进行合并处理所需的合并参数;
读取缓存的所述第一数据和/或所述第二数据,根据所述合并参数利用运算器对所述第一数据和所述第二数据进行合并处理得到合并后数据,并存储所述合并后数据,
其中,所述合并指令包括异维合并指令和同维合并指令中的至少一种,
在所述合并指令为异维合并指令时,所述第一数据的维度数小于所述第二数据的维度数,
在所述合并指令为同维合并指令时,所述第一数据的维度数等于所述第二数据的维度数,
所述操作码用于指示所述合并指令对数据所进行的处理为合并处理,所述操作域包括第一数据地址、第二数据地址。
根据本公开的另一方面,提供了一种人工智能芯片,所述芯片包括上述合并指令处理装置。
根据本公开的另一方面,提供了一种电子设备,所述电子设备包括上述人工智能芯片。
根据本公开的另一方面,提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及上述人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
根据本公开的另一方面,提供了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述合并指令处理方法。
根据本公开的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述合并指令处理方法。
本公开实施例所提供的合并指令处理方法、装置、电子设备和存储介质,通过一个合并指令,可以实现不同或相同维度数量的数据之间的合并,且合并速度快、占用缓存少,且在进行大规模合并运算时可以更加灵活有效地支持不同尺寸的数据合并,合并指令的格式精简,使用便利。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的合并指令处理装置的框图。
图2示出根据本公开实施例的合并指令处理装置基于异维合并指令进行数据合并的示意图。
图3a-图3c示出根据本公开实施例的合并指令处理装置进行向量与矩阵合并的示意图。
图4、图5示出根据本公开实施例的合并指令处理装置基于同维合并指令进行数据合并的示意图。
图6示出根据本公开实施例的合并指令处理处理方法的流程图。
图7示出根据本公开实施例的板卡的结构框图。
图8示出根据本公开实施例的一种电子设备800的框图。
图9示出根据本公开实施例的一种电子设备1900的框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第零”、“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和 “包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当... 时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
根据本公开实施例的合并指令处理方法、装置可应用于处理器中,该处理器可以是通用处理器,例如CPU(Central Processing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-NetworkProcessing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。
相关技术中,利用CPU等处理器进行数据合并时,当数据较多的时候,处理器需要串行依次完成数据合并过程,效率较低。且在合并过程中需要不断从片外获取待合并的数据,占用带宽较大,进一步限制了数据合并的速度和效率。且相关技术中进行数据合并的指令格式复杂,使用不便,且对数据的尺寸(长度、宽度等)有限制,难以实现不同尺寸数据之间的合并处理。为解决上述问题,本公开提供一种合并指令处理方法、装置、电子设备和存储介质,通过一个合并指令,可以实现不同或相同维度数量的数据之间的合并,且合并速度快、占用缓存少,且在进行大规模合并运算时可以更加灵活有效地支持不同尺寸的数据合并,合并指令的格式精简,使用便利。
其中,在很多的应用场景中均可以利用本公开所提供的异维合并指令进行数据合并。例如,对于针对数据本身的处理,在存储数据的过程中或者已经将数据存储之后,若需要对数据的部分或全部进行调整、修改时,可以根据所需进行的调整确定第一数据,而后将第一数据与需要进行调整的第二数据进行合并处理,以得到调整后的数据(也即合并后数据)。如,假定需要将某个矩阵中第二行的数据修改为指定数据,可以将指定数据确定为第一数据,而后将第一数据合并值矩阵的第二行中,得到修改后的矩阵(也即合并后数据),修改后的矩阵中第二行的每个数据与对应的指定数据一致。或者,在存储数据的过程中或者已经将数据存储之后,若需要增加数据的尺寸时,也可以根据需要增加的指定数据以及第二数据确定第一数据,而后将第一数据与第二数据合并,得到合并后数据,而合并后数据即为增加了尺寸且新增部分所用数据为指定数据。在神经网络等运算中,由于任务分配、处理需要、算法运算需要等实际需求会对不同维度数量的数据进行合并处理。如,由于算法运算需要,需要对不同维度数量的两个数据合并处理,得到的合并后数据,以根据合并后数据进行后续运算处理。
其中,在很多的应用场景中均可以利用本公开所提供的同维合并指令进行数据合并。例如,在进行图像处理的过程中,根据处理需要会对图像中部分区域的数据进行合并或者模糊化处理,此时,可以将图像中需要进行合并或模糊化处理的区域中的数据作为第二数据,将可以使该区域实现合并或模糊化的目的的数据作为第一数据,而后对第一数据和第二数据(第一数据和第二数据的维度数量相同)进行合并处理得到合并后数据,进而得到已经进行了合并处理或模糊化处理的图像,以实现对图像模糊化处理。在神经网络等运算中,由于任务分配、处理需要、算法运算需要等实际需求会对相同维度数量的中间数据进行合并处理,以得到所需的数据。如,由于任务分配需要,将初始数据划分为两个子数据,子数据分别进行了对应的运算之后得到子运算结果,将两个子运算结果分别作为第一数据和第二数据进行合并处理,得到的合并后数据即为初始数据的最终运算结果。在神经网络中的残差结构运算中,由于算法运算需要,先对初始矩阵(以矩阵为例)进行相应的运算得到运算后矩阵,而后将初始矩阵与运算后矩阵进行合并(如进行对位相加),以得到基于初始矩阵进行残差运算的最终运算结果。对于针对数据本身的处理,在需要对数据的部分或全部进行调整、修改时,可以根据所需进行的调整确定第一数据,而后将第一数据与需要进行调整的第二数据进行合并处理,以得到调整后的数据。
在一些并行处理场景中,可以将初始数据划分为多个子数据,利用异维合并指令将每个子数据与对应的另外一个维度数量不同的数据进行合并处理,
可以理解的是,本公开所提供的合并指令处理方法、装置、电子设备和存储介质的应用场景是十分广泛的,合并指令可以在作为单独的一个指令以供执行,也可以和其他各类指令一起作为实现含有数据合并处理的运算方法的组成部分。
图1示出根据本公开实施例的合并指令处理装置的框图,如图1所示,该装置可以应用于处理器,该装置包括指令解析电路11、数据获取电路12、存储电路13、参数确定电路14和处理电路15。
指令解析电路11,用于对获取到的合并指令进行解析,得到所述合并指令的操作码和操作域;
数据获取电路12,用于基于所述操作码和所述操作域获取进行合并处理所需的第一数据、第二数据,并将所述第一数据和/或所述第二数据发送至存储电路;
存储电路13,用于缓存接收到的所述第一数据和/或所述第二数据;
参数确定电路14,用于确定进行合并处理所需的合并参数;
处理电路15,用于从所述存储电路中读取缓存的所述第一数据和/或所述第二数据,根据所述合并参数利用运算器对所述第一数据和所述第二数据进行合并处理得到合并后数据,并存储所述合并后数据,
其中,所述合并指令包括异维合并指令和同维合并指令中的至少一种,
在所述合并指令为异维合并指令时,所述第一数据的维度数小于所述第二数据的维度数,
在所述合并指令为同维合并指令时,所述第一数据的维度数等于所述第二数据的维度数,
所述操作码用于指示所述合并指令对数据所进行的处理为合并处理,所述操作域包括所述第一数据地址、所述第二数据地址。
在本实施例中,所述合并后数据的维度数与所述第二数据的维度数可以相同、也可以不同。在合并后数据的维度数与第二数据的维度数不同时,合并后数据的维度数可以等于第一数据的维度数与第二数据的维度数之和,例如,第一数据为向量、第二数据为矩阵,则合并后数据可以为三维的张量;合并后数据的维度数还可以大于第一数据的维度数与第二数据的维度数之和,例如,第一数据为向量、第二数据为矩阵,则合并后数据可以为四维的张量。在合并后数据的维度数与第二数据的维度数相同时,第一数据合并入第二数据之后,会改变第二数据中部分或全部数据的数值,以得到最终的合并后数据。合并后数据的维度数可以是预先设置的,也可以是合并指令中定义的,本公开对此不作限制。
在本实施例中,指令解析电路所获取到的合并指令可以是编译后的能够直接供硬件执行的指令,也可以是未编译的、不能直接供硬件执行的软件指令。若指令解析电路获取到的是未编译的合并指令,还需要对其进行编译,而后对编译后的合并指令进行解析,以获得其操作码和操作域。指令解析电路可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以指示执行对应的指令所需的数据、参数的来源。应当理解的是,本领域技术人员可以根据需要对合并指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,参数确定电路可以将确定的合并参数缓存至存储电路,也可以直接将合并参数发送至处理电路。指令解析电路也可以将确定解析出的运算指令(如下文所述)、操作码、操作域缓存至存储电路,也可以将运算指令直接发送至处理电路,将操作码和操作域发送至数据获取电路和参数确定电路。
在本实施例中,可以根据合并指令的操作码和/或操作域确定合并参数,也可以根据默认设置确定合并参数,本公开对此不作限制。第一数据地址、第二数据地址可以指示所存储的数据的地址,如,第一数据地址、第二数据地址可以是存储数据的物理地址、首地址、指针等。合并后数据的尺寸可以与第二数据相同、也可以不同。合并后数据的尺寸可以与第二数据的尺寸不同可以是二者至少有一个维度的数据长度不同,例如,第二数据为矩阵,则合并后数据也为矩阵,若合并后数据的行、列长度至少有一个与第二数据对应的行、列长度不同,即为合并后数据的尺寸与第二数据的尺寸不同。
在本实施例中,预先利用存储电路将第一数据和/或第二数据缓存,使得处理电路可以直接从缓存中读取数据,无需从片外内存中获取数据,节省了获取数据的时间、提高了获取数据的效率。
根据本公开实施例所提供的合并指令处理装置,通过一个合并指令,可以实现数据之间的合并,且合并速度快、占用缓存少,且在进行大规模合并运算时可以更加灵活有效地支持不同尺寸的数据合并,合并指令的格式精简,使用便利。
在本实施例中,装置可以利用处理电路中的各类子电路实现数据合并过程,以下以装置的处理电路包括主处理子电路和多个从处理子电路为例,描述装置利用主处理子电路和多个从处理子电路实现数据合并的几种方式,如下述方式一、方式二、方式三。本领域技术人员可以根据实际需要对合并处理的实现方式进行设置,本公开对此不作限制。
在一种可能的实现方式中,所述处理电路可以包括主处理子电路和多个从处理子电路,方式一:
所述指令解析电路,还用于解析所述合并指令得到多个运算指令,并将所述多个运算指令发送至所述主处理子电路,所述数据获取电路还用于将所述第一数据和所述第二数据发送至主处理子电路,所述参数确定电路还用于将所述合并参数发送至所述主处理子电路;
所述主处理子电路,用于对所述第一数据和所述第二数据进行前续处理,以及与所述多个从处理子电路之间进行数据和/或运算指令的传输;
所述从处理子电路,用于根据运算指令、对应的数据和合并参数进行合并处理,得到中间合并结果,并将所述中间合并结果发送至所述主处理子电路;
所述主处理子电路,还用于对接收到的多个中间合并结果执行后续处理,得到合并后数据,并存储所述合并后数据。
在该实现方式中,从处理子电路从主处理子电路中主动获取或者被动接收进行合并处理所需的运算指令、对应的数据(第一数据和第二数据)、合并参数的全部内容。若每个从处理子电路进行的是一个第一数据与一个第二数据的合并处理,从处理子电路可以直接存储得到的合并后数据。若每个从处理子电路进行的是“一个第一数据与一个第二数据的合并处理”的部分运算,则从处理子电路需要将其仅合并处理后得到的数据作为中间合并结果,主处理子电路根据多个中间合并结果得到“一个第一数据与一个第二数据进行合并处理”的合并后数据,而后进行存储。
在一种可能的实现方式中,所述处理电路可以包括主处理子电路和多个从处理子电路,方式二:
所述主处理子电路,用于根据所述合并参数,对所述第一数据和所述第二数据进行合并处理,得到合并后数据,并存储所述合并后数据。
在一种可能的实现方式中,所述处理电路可以包括主处理子电路和多个从处理子电路,方式三:
所述指令解析电路,还用于解析所述合并指令得到多个运算指令,并将所述多个运算指令发送至所述主处理子电路,所述参数确定电路还用于将所述合并参数发送至所述主处理子电路;
所述主处理子电路,用于为所述多个从处理子电路分配对应的运算指令,并将分配的运算指令、对应的合并参数、所述第一数据和所述第二数据中的至多一个发送至从处理子电路;
所述从处理子电路,用于接收主处理子电路分配的运算指令、对应的合并参数、所述第一数据和所述第二数据中的至多一个,根据分配的运算指令、对应的合并参数对所述第一数据和所述第二数据进行合并处理得到中间合并结果,并将所述中间合并结果发送至所述主处理子电路;
所述主处理子电路,还用于对接收到的多个中间结果执行后续处理,得到合并后数据,并存储所述合并后数据。
在该实现方式中,从处理子电路在仅接收到主处理子电路主动发送的分配的运算指令、对应的合并参数、所述第一数据和所述第二数据中的任意一个时,从处理子电路可以直接从装置中对应的数据所在的电路中获取进行合并处理所需的其余数据。举例来说,例1,从处理子电路仅接收到主处理子电路发送的分配的运算指令,则从处理子电路可以从参数确定电路中获取对应的合并参数,从数据获取电路中获取第一数据和第二数据、或者从存储电路中获取第一数据和第二数据;或者,由于主处理子电路中已经存储有对应的合并参数、第一数据和第二数据,从处理子电路可以直接从主处理子电路中获取所需数据。例2,从处理子电路并未接收到主处理子电路主动发送的任何数据,则从处理子电路可以从主处理子电路中获取分配的运算指令,从参数确定电路中获取对应的合并参数,从数据获取电路中获取第一数据和第二数据、或者从存储电路中获取第一数据和第二数据。实际上,各从处理子电路在进行合并处理前,需先判断当前是否已获得分配的运算指令、对应的合并参数、第一数据和第二数据,若数据不全,则从装置的电路中获取所需的数据,直至数据全备,可以进行合并处理。至于从处理子电路如何获取缺少的数据,本领域技术人员可以根据需要对获取数据的方式进行设置,本公开对此不作限制。
在该实现方式中,若每个从处理子电路进行的是一个第一数据与一个第二数据的合并处理,从处理子电路可以直接存储得到的合并后数据。若每个从处理子电路进行的是“一个第一数据与一个第二数据的合并处理”的部分运算,则从处理子电路需要将其仅合并处理后得到的数据作为中间合并结果,主处理子电路根据多个中间合并结果得到“一个第一数据与一个第二数据进行合并处理”的合并后数据,而后进行存储。
在一种可能的实现方式中,所述存储电路可以包括多个存储子电路,每个存储子电路用于存储对应的从处理子电路的处理数据,从处理子电路的处理数据包括运算指令、待运算的数据、合并参数和中间合并结果中的一个或多个。
在该实现方式中,可以为每一个从处理子电路配置其所需的存储子电路,该存储子电路仅用于进行从处理子电路相关的数据存储。还可以为多个从处理子电路设置共享存储子电路,在该共享存储子电路中为多个从处理子电路存储其共同使用的数据。
在该实现方式中,还可以为主处理子电路设置对应的存储子电路,以存储主处理子电路所需使用的数据。同时,也可以为处理电路中的主处理子电路和多个从处理子电路设置共同的共享存储子电路,以实现处理电路中共同使用数据的统一存储。
在一种可能的实现方式中,所述装置还包括:
指令存储电路,用于存储所述合并指令;
队列存储电路,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述合并指令。
在该实现方式中,待执行指令还可以包括与合并指令相关或者无关的计算指令,本公开对此不作限制。可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,所述装置还包括:
依赖关系处理电路,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储电路中,在所述第零待执行指令执行完毕后,从所述指令存储电路中提取所述第一待执行指令发送至所述处理电路,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第一待执行指令之前的第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
通过这种方式,可以根据第一待执行指令与第一待执行指令之前的第零待执行指令之间的依赖关系,使得在先的第零待执行指令执行完毕之后,再执行在后的第一待执行指令,保证运算结果的准确性。
在一种可能的实现方式中,所述操作码和/或所述操作域用于指示所述合并参数,
所述参数确定电路,还用于在所述操作码和/或所述操作域用于指示所述合并参数时,根据所述操作码和/或所述操作域确定所述合并参数的部分或全部参数。
在该实现方式中,可以预先设置不同指令所对应的合并参数,在先根据操作码和操作域无法确定全部的合并参数时,可结合预先设置的合并参数确定出全部的合并参数。举例来说,可以根据合并指令的操作码和操作域确定出所需合并参数中的一部分参数,而后可以根据所确定出的一部分参数和预先设置的合并参数,确定出所需合并参数中的另一部分参数,以保证合并处理的正常执行。通过这样的方式,在批量执行相同或相似的合并指令时,预先设置合并参数中相同的部分,在合并指令中至少合并参数中不同的部分,可以缩减合并指令本身的数据量,提供相同或相似的合并指令的处理速度。并且,即便在合并指令的内容存在缺失时,也可以根据预先设置的合并参数保证合并指令的正常执行。
在一种可能的实现方式中,所述操作码和/或所述操作域还用于指示存储合并后数据的合并后数据地址。
在一种可能的实现方式中,所述运算器可以包括选择器、随机数生成器、伪随机数发生器、加法器、减法器、乘法器、比较器中的至少一种。针对不同的合并值确定规则处理电路可以调用不同的运算器以实现数据合并。
为描述清楚,下面以同维合并指令和异维合并指令分别为例,描述本公开所提供的合并指令处理装置利用同维合并指令和/或异维合并指令进行数据合并处理的过程。
对于异维合并指令:
在一种可能的实现方式中,在所述合并指令为异维合并指令时,第一数据和第二数据可以是标量、向量、矩阵、张量等任意数据维度数不同的两类数据。例如,第一数据为向量、第二数据为矩阵。或者,第一数据为向量、第二数据为阶数至少为3的张量。或者,第一数据为矩阵、第二数据为阶数至少为3的张量。
在一种可能的实现方式中,在所述合并指令为异维合并指令时,所述合并参数可以包括合并处理类型、对应所述合并处理类型的类型参数、合并值确定规则和数据参数中的至少一种。其中,合并处理类型可以指示所进行合并处理的具体合并方式,合并处理类型的类型参数可以是保证装置进行对应的合并处理所需的参数。合并值确定规则可以指示合并处理过程中合并后数据中进行合并处理位置的值的确定方式。
在一种可能的实现方式中,在所述合并指令为异维合并指令时,所述合并处理类型可以包括以下至少一项:指定维度方向合并、按维度方向循环合并。指定维度方向合并可以指定某一个维度中的全部或部分数据进行合并处理。按维度循环合并可以是按照指定的维度、以第一数据为循环的数据,利用第一数据多次与第二数据对应的部分进行合并处理得到合并后数据。
在一种可能的实现方式中,在所述合并指令为异维合并指令时,所述类型参数可以包括以下至少一项:起始合并位置、指定维度、指定维度中的指定区域、循环次数。其中,在合并处理类型为指定维度方向合并时,起始合并位置、指定维度、指定维度中的指定区域是对应该指定维度方向合并所必须的类型参数。在合并出列类型为按维度方向循环合并时,起始合并位置、指定维度、循环次数是对应该按维度方向循环合并所必须的类型参数,且指定维度中的指定区域是可选的类型参数。
在该实现方式中,起始合并位置可以是第二数据中开始进行合并处理的位置。指定维度可以是第二数据中的部分或全部维度。指定维度中的指定区域可以是指定维度中的部分或全部的行、列、或者指定区域。例如,第一数据为向量、第二数据为矩阵,指定维度可以是矩阵中的某一行、多行或者全部行、矩阵中的某一列、多列或者矩阵中的全部列。循环次数可以是第一数据循环使用合并到第二数据中的次数,循环次数可以是指定的数值,也可以不限定数值循环进行合并,直至第二数据中需要进行合并的数据全部与第一数据进行合并处理后才停止合并处理。
例如,在第一数据为向量、第二数据为矩阵时,起始合并位置可以是指定的第二行(行即为指定维度、第二行即为指定维度的指定区域)中的任意位置,如第二行第一个位置为起始合并位置、第二行第三个位置为起始合并位置等。
在一种可能的实现方式中,所述合并值确定规则可以包括以下任一项:将当前位置所对应的第一数据的值确定为合并值、将当前位置所对应的第二数据的值确定为合并值、将指定位置所对应的第一数据的值与第二数据的值进行算术运算和/或逻辑运算得到的值确定为合并值。所述指定位置可以包括所述第二数据中需要进行合并处理的所有位置中任意一个或多个位置。
在该实现方式中,合并值确定规则可以指示合并处理过程中根据第一数据和第二数据确定合并后数据对应位置的值的具体确定方式。算术运算可以是相乘、相减、相加等基础的运算,逻辑运算可以是或、与、非等进行逻辑判断的运算。其中,为实现逻辑判断过程,可以结合生成的随机数、基于第一数据和/或第二数据作为函数、算法等的输入数据所进行的运算得到的运算结果辅助进行逻辑判断。举例来说,假定当前位置第一数据的值为a、第二数据的值为b。合并后数据该位置的值可以是a;可以是b;或者还可以是a与b进行算术运算和/或逻辑运算所确定的值,如合并值为a+b、max(a,b)(也即选择a、b中数值较大的一个作为合并值)、min(a,b)(也即选择a、b中数值较小的一个作为合并值)等。再或者可以是上一位置第一数据的值与第二数据的值进行算术运算和/或逻辑运算所确定的值。需要说明的是,上述确定合并值的方式仅是本公开提供的示例,本领域技术人员可以根据实际需要对合并值确定规则进行设置,本公开对此不作限制。
在一种可能的实现方式中,在所述合并指令为异维合并指令时,所述数据参数可以包括以下至少一项:所述第一数据的维度数量以及对应维度的长度,所述第二数据的维度数量以及对应维度的初始长度,所述合并后数据的维度数量和对应维度的合并后长度。
举例来说,若第一数据为长度是m的向量、第二数据为x*y的矩阵、合并后数据仍为x’*y’的矩阵,那么第一数据的维度数量为1、长度为m。第二数据的维度数量为2,两个维度分别为行、列,且行的初始长度为x,列的初始长度为y。合并后数据的维度数量也为2,两个维度分别为行、列,且行的合并后长度为x’,列的合并后长度为y’。
在一种可能的实现方式中,所述处理电路还包括第一补位处理子电路,所述第一补位处理子电路用于在确定满足补位条件时,利用确定的补位值进行补位处理。其中,在所述合并指令为异维合并指令时,所述补位条件可以包括:所述合并后数据发生合并的维度中的至少一个维度的合并后长度大于对应的初始长度、且根据起始合并位置和所述第一数据所确定的数据长度小于所述合并后数据中对应维度的合并后长度,所述补位值为预设值。预设值可以是0、1等预先设置的值。
在该实现方式中,在对第一数据和第二数据进行合并处理后,得到的合并后数据中存在空位、或者存在没有进行合并处理的位置时,可以对空位和/或没有进行合并处理的位置进行补位,以保证合并后数据为一个完整数据。不同的位置进行补位所使用的预设值可以相同,也可以不同,本公开对此不作限制。
在一种可能的实现方式中,异维合并指令的指令格式可以如下表1所示:
在一种可能的实现方式中,data. par中的par可以包括:
D1i a1 a2…ai D2j b1 b2…bj D3q c1 c2…cq
其中,D1i用于表示第一数据的维度的数量为i,a1 a2…ai表示对应第一数据的各个维度的长度分别为a1、a2…ai。D2j用于表示第二数据的维度的数量为j,b1 b2…bj表示对应第二数据的各个维度的长度分别为b1、b2…bj。D3q用于表示合并后数据的维度的数量为q,c1 c2…cq表示对应合并后数据的各个维度的长度分别为c1、c2…cq。
在一种可能的实现方式中,x. par中的par可以包括:
Start_addr dim size iter
其中,Start_addr表示起始合并位置,dim表示指定维度,size表示指定维度中的指定区域,iter表示循环次数。
其中,可以预先设置不同合并处理类型、对应合并处理类型的类型参数、合并值确定规则和数据参数所对应的代码、编号等标识,以在异维合并指令中用标识表示异维合并指令所指示的合并处理。上述示例1、示例2仅是异维合并指令的部分示例,本领域技术人员可以根据实际需要对异维合并指令的格式进行设置,本公开对此不作限制。
在一种可能的实现方式中,所述主处理子电路或所述从处理子电路所执行的合并处理可以包括以下步骤:
在确定所述合并处理类型为指定维度方向合并时,确定所述第二数据中需要进行合并处理的指定维度和起始合并位置;
根据所述第一数据确定第一待合并数据;
根据确定的合并值确定规则、获取的所述第一待合并数据的值和所述指定维度中需要进行合并处理的位置的值,确定所述指定维度自起始合并位置至所述指定维度的合并结束位置之间每个位置的值,得到合并后数据。
在该实现方式中,根据所述第一数据确定第一待合并数据,可以包括:根据指定维度方向、第一数据的维度数量与第二数据的维度数量的关系等相关参数确定第一待合并数据。图2示出根据本公开实施例的合并指令处理装置基于异维合并指令进行数据合并的示意图。举例来说,假定第一数据为矩阵、第二数据为三维张量。在确定所述合并处理类型为指定维度方向合并时,例如,如图2所示,在确定以指定z维度方向合并,可以以矩阵的行h和列l分别确定为x、y方向的值(或者y、x方向)得到第一待合并数据,而后按照z维度方向进行合并。在确定以指定x维度方向合并,可以以矩阵的行h和列l分别确定为y、z方向的值(或者z、y方向)得到第一待合并数据,按照x维度方向进行合并。在确定以指定y维度方向合并,可以以矩阵的行h和列l分别确定为x、z方向的值(或者z、x方向)得到第一待合并数据,按照y维度方向进行合并。需要说明的是,根据第一数据确定第一待合并数据的方式是多种多样的,本公开仅给出了几个简单的示例,本领域技术人员可以根据实际需要对第一待合并数据的确定方式进行设置,本公开对此不作限制。
在一种可能的实现方式中,所述主处理子电路或所述从处理子电路所执行的合并处理可以包括以下步骤:
在确定所述合并处理类型为按维度方向循环合并时,确定起始合并位置和循环次数;
根据所述第一数据的维度和所述第二数据的维度,确定待循环维度;
根据确定的合并值确定规则、按照所述循环次数循环获取的所述第一数据的值、按所述待循环维度获取的所述第二数据中需要进行合并处理的位置的值,确定所述起始合并位置至所述第二数据的合并结束位置之间的每个位置的值,得到合并后数据。
在一种可能的实现方式中,根据所述第一数据的维度和所述第二数据的维度,确定待循环维度,可以包括:根据第一数据的维度数和第二数据的维度数,确定出维度数差值,并从第二数据的多个维度中选择出与维度数差值个维度作为待循环维度的目标数量,进而从第二数据的多个维度中选出目标数量个维度作为待循环维度。或者,可以在异维合并指令的操作域或者操作码中指定待循环维度。再或者,可以预先设置不同类的数据进行合并时所指定的待循环维度。本领域技术人员可以根据实际需要对确定待循环维度的方式进行设置,本公开对此不作限制。
举例来说,如图2所示,假定合并处理类型为按维度方向循环合并,矩阵和三维张量的维度差值为1,则可以选择张量中的x、y和z中任意一个方向为待循环维度,而后进行合并处理,其具体合并处理过程可以参考下文向量和矩阵的按指定维度循环合并的处理过程,此处不再赘述。
在一种可能的实现方式中,在进行合并处理的过程中,主处理子电路或从处理子电路可以按照预设的数据值获取规则或者异维合并指令中指示的数据值获取规则,获取当前位置所对应的第一数据的值和/或第二数据的值。第一数据的值和第二数据的值的数据值获取规则可以相同,也可以不同。可以获取第一数据中的部分或全部数据进行第一数据与第二数据之间的合并处理。预设的数据值获取规则可以包括以下任一种:顺序依次获取、逆序依次获取、按间隔顺序获取、按间隔逆序获取、获取第一数据中预设位置的值等。其中,间隔可以是一个位置、两个位置等,预设位置可以是第一数据的起始位置、结束位置等,也可以是。本领域技术人员可以根据实际需要对数据值获取规则进行设置,本公开对此不作限制。
举例来说,假定某异维合并指令中第一数据为向量其表示为“abc”、第二数据为矩阵其表示为。需要说明的是,下述示例仅是进行向量和矩阵合并的几种可能的示例,是为了示意的说明数据值获取规则,并不仅限于此。
若异维合并指令指示将“abc”与矩阵的第二行合并、且为顺序依次获取第一数据和第二数据,合并值确定规则为“将当前位置所对应的第一数据的值确定为合并值”,则处理电路可以调用选择器实现数据合并过程,包括:对于第二行的第一个位置,先获取第一数据的第一个位置的值“a”、第二数据第二行的第一个位置的值“g”,则合并后数据第二行第一个位置的数值从原来的“g”变为“a”,也即a、g→a。对于第二行第二个位置,先获取第一数据的第二个位置的值“b”、第二数据第二行的第二个位置的值“j”,则合并后数据第二行第二个位置的数值从原来的“j”变为“b” ,也即b、j→b。对于第二行第三个位置,先获取第一数据的第三个位置的值“c”、第二数据第二行的第三个位置的值“d”,则合并后数据第二行第三个位置的数值从原来的“d”变为“c”,也即c、d→c。则合并处理后得到的合并后数据为。
为便于描述后续以“data1、data2→data3”的方式描述其合并处理过程,其中,data1表示获取到的第一数据的值,data2表示获取到的第二数据的值,data3表示合并后数据的值。
若异维合并指令指示将“abc”与矩阵的第二行合并、且为逆序依次获取第一数据、顺序依次获取第二数据,合并值确定规则为“将当前位置所对应的第一数据的值确定为合并值”,则处理电路可以调用选择器实现数据合并过程,包括:对于第二行的第一个位置,其处理过程为c、g→c。对于第二行第二个位置,其处理过程为b、j→b。对于第二行第三个位置,其处理过程为a、d→a。则合并处理后得到的合并后数据为。
若异维合并指令指示将“abc”与矩阵的第二行合并、且为顺序依次获取第一数据和第二数据,合并值确定规则为“将当前位置所对应的第一数据的值和第二数据的值相加得到的值确定为合并值”,则处理电路可以调用加法器实现数据合并过程,包括:对于第二行的第一个位置,其处理过程为a、g→a+g。对于第二行第二个位置,其处理过程为b、j→b+j。对于第二行第三个位置,其处理过程为c、d→c+d。则合并处理后得到的合并后数据为。
若同维合并指令指示将“abc”与矩阵的第二行合并、且为顺序依次获取第一数据和第二数据,合并值确定规则为“将当前位置所对应的第一数据的值和第二数据的值中较大的确定为合并值”,则处理电路可以调用比较器实现数据合并过程,包括:对于第二行的第一个位置,由于a>g则其处理过程为a、g→a。对于第二行第二个位置,由于j>b则其处理过程为b、j→j。对于第二行第三个位置,由于d>c则其处理过程为c、d→d。则合并处理后得到的合并后数据为。
若异维合并指令指示将“abc”与矩阵的第二行合并、且为顺序依次获取第一数据和第二数据,合并值确定规则为“将当前位置所选定的第一数据或第二数据的值确定为合并值(也即将指定位置所对应的第一数据的值与第二数据的值进行算术运算和/或逻辑运算得到的值确定为合并值)”,例如,根据输入的掩码来确定合并值,假定掩码为其中1表示选择第一数据的值,0表示选择第二数据的值,那么,处理电路可以调用选择器根据掩码实现数据合并过程,包括:对于第二行的第一个位置,其处理过程为a、g→a。对于第二行第二个位置,其处理过程为b、j→j。对于第二行第三个位置,其处理过程为c、d→c。即最终得到的合并后数据为。
其中,还可以选择其他方式来表达或实现“将指定位置所对应的第一数据的值与第二数据的值进行算术运算和/或逻辑运算得到的值确定为合并值”这一合并值确定规则。例如,也可以利用运算器中的随机数生成器或者伪随机数发生器,给定选择第一数据的阈值,如0.5,利用随机数生成器生成[0,1)的随机数,当随机数小于0.5时,选择第一数据的值作为当前位置的合并值,否则选择第二数据的值为当前位置的合并值。其中,伪随机数生成器可以利用取中法、同余法、移位法、梅森旋转算法等算法实现随机数的生成。
为便于理解本公开所描述根据异维合并指令进行数据合并处理的过程,以下以进行向量和矩阵之间的合并处理为例,描述根据异维合并指令进行合并处理的过程示例。可以理解的是,在进行其他不同类型的数据间的合并时,其合并处理过程与向量矩阵合并类似,本公开不再赘述。
在所述合并指令为异维合并指令,所述第一数据为向量、所述第二数据为矩阵且合并后数据也为矩阵时,所述合并处理类型可以包括以下至少一项:指定行合并、指定列合并、按行合并、按列合并、按行循环合并、按列循环合并,所述类型参数包括以下至少一项:起始合并位置、指定行、指定列、循环次数。所述合并值确定规则所确定的合并值可以包括以下任一项:当前位置所对应的向量的值、当前位置所对应的矩阵的值、指定位置所对应的向量的值与矩阵的值进行算术运算和/或逻辑运算所确定的值,所述指定位置包括需要进行合并处理的所有位置中任意一个或多个位置。所述数据参数可以包括以下至少一项:所述向量的长度,所述矩阵的初始行长度、初始列长度,所述合并后矩阵的合并后行长度、合并后列长度。
图3a-图3c示出根据本公开实施例的合并指令处理装置进行向量与矩阵合并的示意图。
举例来说,假定根据异维合并指令确定第一数据为长度为m的向量、第二数据为x*y的矩阵,合并值确定规则均为将第一数据中对应位置的值确定为合并值。
如图3a所示,在根据异维合并指令确定所述合并处理类型为“指定行合并”时,确定所述矩阵中需要进行合并处理的指定行第n行和起始合并位置(第n行的起始位置),将所述向量作为一行,根据确定的合并值确定规则、获取的所述向量的值和所述指定行中需要进行合并处理的位置的值,确定所述指定行自起始合并位置至所述指定行的合并结束位置之间的每个位置的值,得到合并后矩阵(也即合并后数据)。合并后矩阵与矩阵(合并前)的区别在于,第n行的数据发生了变化(具体变化参考下文相关文字描述)。
其中,所述指定行的合并结束位置是根据所述起始合并位置和所述向量的长度确定的、或者根据所述合并后行长度确定的。合并结束位置可以为合并后矩阵指定行的结束位置、指定行的中间位置。为便于描述设定合并后矩阵的尺寸为x’*y’,结合第一数据为长度为m的向量、第二数据为x*y的矩阵,起始合并位置到指定行起始位置的长度为w,合并结束位置为合并后矩阵指定行的结束位置的情况包括:w+m≥x’。合并结束位置为合并后矩阵指定行的中间位置包括:w+m<x’。
如图3a所示,在根据异维合并指令确定所述合并处理类型为“指定列合并”时,确定所述矩阵中需要进行合并处理的指定列第d列和起始合并位置(第d列的起始位置),将所述向量作为一列,根据确定的合并值确定规则、获取的所述向量的值和所述指定列中需要进行合并处理的位置的值,确定所述指定列自起始合并位置至所述指定列的合并结束位置之间的每个位置的值,得到合并后矩阵(也即合并后数据)。合并后矩阵与矩阵(合并前)的区别在于,第d列的数据发生了变化。
其中,所述指定列的合并结束位置是根据所述起始合并位置和所述向量的长度确定的、或者根据所述合并后列长度确定的。合并结束位置可以为合并后矩阵指定列的结束位置、指定列的中间位置。为便于描述设定合并后矩阵的尺寸为x’*y’,结合第一数据为长度为m的向量、第二数据为x*y的矩阵,起始合并位置到指定列起始位置的长度为w,合并结束位置为合并后矩阵指定列的结束位置的情况包括:w+m≥y’。合并结束位置为合并后矩阵指定列的中间位置包括:w+m<y’。
如图3a所示,在根据异维合并指令确定所述合并处理类型为“按行合并”时,确定每一行的起始合并位置(每一行的起始合并位置可以相同,也可以不同),将所述向量作为一行、所述矩阵的每一行作为指定行,根据确定的合并值确定规则(每一行的合并值确定规则可以相同也可以不同)、获取的所述向量的值、每一个指定行需要进行合并处理的位置的值,确定所述指定行自起始合并位置至所述指定行的合并结束位置之间的每个位置的值,得到合并后矩阵(也即合并后数据)。合并后矩阵与矩阵(合并前)的区别在于,每一行的数据均发生了变化。
如图3a所示,在根据异维合并指令确定所述合并处理类型为“按列合并”时,确定每一列的起始合并位置(每一列的起始合并位置可以相同,也可以不同),将所述向量作为一列、所述矩阵的每一行作为指定列,根据确定的合并值确定规则(每一列的合并值确定规则可以相同也可以不同)、获取的所述向量的值、每一个指定列需要进行合并处理的位置的值,确定所述指定列自起始合并位置至所述指定列的合并结束位置之间的每个位置的值,得到合并后矩阵(也即合并后数据)。合并后矩阵与矩阵(合并前)的区别在于,每一列的数据均发生了变化。
其中,如图3a所示,在“指定列合并”和“按列合并”中,由于向量的长度大于合并后矩阵的列长度,在进行合并时,可以仅取用向量中“合并后矩阵的列长度”的数据,向量的剩余数据不取用。或者,在矩阵的列尺寸大于合并后矩阵尺寸时,可以在进行合并处理后,截取原矩阵中的“合并后矩阵尺寸”的大小的数据作为合并后矩阵。也即,在向量和/或矩阵的尺寸大于合并后矩阵的尺寸时,可以删除向量和/或矩阵的部分数据,以得到所需尺寸的合并后矩阵。
如图3b所示,根据异维合并指令确定以指定某一行、合并值确定规则为“将当前位置所对应的第一数据的值确定为合并值”进行合并处理为例,描述合并后矩阵行的合并后长度、矩阵行的初始长度、向量的长度在发生不同变化时,处理电路所需进行的处理的可能方式,如下述六种可能,但本公开并不仅限于以下几种情况。其中,起始合并位置为指定行第n行的起始位置。在以多个或全部行、一个或多个列进行合并处理时,处理电路所进行的处理与“以指定某一行进行合并处理,处理电路所进行的处理”相似,可以参考图3b以及下文内容,不再赘述。
可能一:合并后矩阵的尺寸与初始的矩阵的尺寸一致,且向量的长度小于矩阵的初始长度,此时,合并后矩阵仅如图3b所示的“合并前后数据变化区域”的数值会因向量的值对应发生变化,也即第n行的位置1至位置m由“j1、j2、j3…jm”变为“i1、i2、i3…im”。合并后矩阵中第n行除“合并前后数据变化区域”外的位置,可以仍沿用初始的矩阵的数值,也即位置m+1至位置x的数据仍为“jm、jm+1…jx”;也可以进行补位处理,在位置m+1至位置x补充进预设值(图中未示出)。
可能二:合并后矩阵的尺寸与初始的矩阵的尺寸一致,且向量的长度大于或等于矩阵的初始长度,此时,如图3b所示合并后矩阵每一行的数据会因向量的值对应发生变化,也即第n行的位置1至位置m由“j1、j2、j3…jm”变为“i1、i2、i3…im”。无需进行补位处理。
可能三:合并后矩阵的尺寸小于初始的矩阵的尺寸(包括至少一个维度的合并后长度小于对应维度的初始长度),且向量的长度小于或等于合并后长度。此时,如图3b所示合并后矩阵每一行的数据会因向量的值对应发生变化,也即第n行的位置1至位置m由“j1、j2、j3…jm”变为“i1、i2、i3…im”;合并后矩阵中第n行除“合并前后数据变化区域”外的位置,可以仍沿用初始矩阵的数值,也即第n行位置m+1至位置x-6的数据仍为“jm、jm+1…jx-6”;无需进行补位处理。并且,合并后矩阵中除第n行的其他行中的数据与初始的矩阵对应行的数据一致。
可能四:合并后矩阵的尺寸大于或等于初始的矩阵的尺寸(包括至少一个维度的合并后长度大于对应维度的初始长度),且向量的长度小于或等于初始长度。此时,合并后矩阵仅如图3b所示的“合并前后数据变化区域”的数值会因向量的值对应发生变化,也即第n行的位置1至位置m由“j1、j2、j3…jm”变为“i1、i2、i3…im”;合并后矩阵中第n行除“合并前后数据变化区域”外的、对应初始矩阵的位置,可以仍沿用初始矩阵的数值,也即第n行位置m+1至位置x的数据仍为“jm、jm+1…jx”;若合并后矩阵中第n行存在除“合并前后数据变化区域”外的、超出初始的矩阵的长度的位置,可以进行补位处理补充预设值,也即第n行位置x+1至位置x+6的数据为“jx+1、jx+2…jx+6”且其数值均为预设值。并且,若合并后矩阵的行和列的合并后长度均大于初始的矩阵的行、列的初始长度,对于合并后矩阵除第n行以外的其他行,超出初始长度的位置可以进行补位处理补充预设值,也即其余行位置x+1至位置x+6的数据为“jx+1、jx+2…jx+6”且其数值均为预设值;并且,对于新加入的行可以整行进行补位处理。若合并后矩阵仅行的合并后长度均大于初始的矩阵的行的初始长度,对于合并后矩阵除第n行以外的其他行,超出初始长度的位置可以进行补位处理补充预设值,也即其余行位置x+1至位置x+6的数据为“jx+1、jx+2…jx+6”且其数值均为预设值。若合并后矩阵仅列的合并后长度均大于初始的矩阵的列的初始长度,对于新加入的行可以整行进行补位处理。
可能五:合并后矩阵的尺寸大于或等于初始的矩阵的尺寸(包括至少一个维度的合并后长度大于对应维度的初始长度),向量的长度大于初始长度小于合并后长度。此时,合并后矩阵仅如图3b所示的“合并前后数据变化区域”的数值会因向量的值对应发生变化,也即第n行位置1至位置x由“j1、j2、j3…jm…空位”变为“i1、i2、i3…im…ix”;若合并后矩阵中第n行存在除“合并前后数据变化区域”外的、超出向量长度的位置,可以进行补位处理补充预设值,也即第n行位置x+1至位置x+6的数据为“jx+1、jx+2…jx+6”且其数值均为预设值。并且,若合并后矩阵的行和列的合并后长度均大于初始的矩阵的行、列的初始长度,对于合并后矩阵除第n行以外的其他行,超出初始长度的位置可以进行补位处理补充预设值,也即其余行位置m+1至位置x+6的数据为“jm+1…jx、jx+1、jx+2…jx+6”且其数值均为预设值;并且,对于新加入的行可以整行进行补位处理。若合并后矩阵仅行的合并后长度均大于初始的矩阵的行的初始长度,对于合并后矩阵除第n行以外的其他行,超出初始长度的位置可以进行补位处理补充预设值,也即其余行位置m+1至位置x+6的数据为“jm+1…jx、jx+1、jx+2…jx+6”且其数值均为预设值。若合并后矩阵仅列的合并后长度均大于初始的矩阵的列的初始长度,对于新加入的行可以整行进行补位处理。
可能六:合并后矩阵的尺寸大于或等于初始的矩阵的尺寸(包括至少一个维度的合并后长度大于对应维度的初始长度),向量的长度大于初始长度且大于合并后长度。此时,合并后矩阵仅如图3b所示的“合并前后数据变化区域”的数值会因向量的值对应发生变化,也即第n行位置1至位置x-1由“j1、j2、j3…jm…空位”变为“i1、i2、i3…im…ix-1”,无需进行补位处理。并且,若合并后矩阵的行和列的合并后长度均大于初始的矩阵的行、列的初始长度,对于合并后矩阵除第n行以外的其他行,超出初始长度的位置可以进行补位处理补充预设值,也即其余行位置m+1至位置x-1的数据为“jm+1…jx-1”且其数值均为预设值;并且,对于新加入的行可以整行进行补位处理。若合并后矩阵仅行的合并后长度均大于初始的矩阵的行的初始长度,对于合并后矩阵除第n行以外的其他行,超出初始长度的位置可以进行补位处理补充预设值,也即其余行位置m+1至位置x-1的数据为“jm+1…jx-1”且其数值均为预设值。若合并后矩阵仅列的合并后长度均大于初始的矩阵的列的初始长度,对于新加入的行可以整行进行补位处理。
如图3c所示,在根据异维合并指令确定所述合并处理类型为按行循环合并时,确定起始合并位置(可以是任意一行中的任意位置)和循环次数(可以是图中未示出的指定的数值,也可以是如图3c所示的循环次数不限一直循环直至所有数据均进行合并后结束),根据确定的合并值确定规则(每一行合并值确定规则可以相同也可以不同,或者每一次向量合并入矩阵所对应的合并值确定规则可以相同也可以不同)、按照所述循环次数循环获取的所述向量的值、按行自所述起始合并位置获取的所述矩阵中需要进行合并处理的值,确定所述自起始合并位置至所述矩阵的合并结束位置之间的每个位置的值,得到合并后矩阵(也即合并后数据)。若采用循环次数不限的方式合并,合并后矩阵与矩阵(合并前)的区别在于,每一个位置的数据均发生了变化。若采用循环次数指定的方式合并,合并后矩阵与矩阵(合并前)的区别在于,起始合并位置至合并后矩阵的结束位置的数据均发生了变化;其余位置数据可以沿用初始的矩阵的数据,也可以进行补位处理,或者部分沿用初始矩阵的数据、部分进行补位处理。其中,合并值确定规则在合并处理过程中可以始终一致,也可以根据合并的行、或者使用第一数据的次数对合并值确定规则进行设置,例如,每一行合并值确定规则可以不一致,或者每一次向量合并入矩阵所对应的合并值确定规则可以不一致。
如图3c所示,在根据异维合并指令确定所述合并处理类型为按列循环合并时,确定起始合并位置(可以是任意一列中的任意位置)和循环次数(可以是图中未示出的指定的数值,也可以是如图3c所示的循环次数不限一直循环直至所有数据均进行合并后结束),根据确定的合并值确定规则、按照所述循环次数循环获取的所述向量的值、按列自所述起始合并位置获取的所述矩阵中需要进行合并处理的值,确定所述自起始合并位置至所述矩阵的合并结束位置之间的每个位置的值,得到合并后矩阵(也即合并后数据)。若采用循环次数不限的方式合并,合并后矩阵与矩阵(合并前)的区别在于,每一个位置的数据均发生了变化。若采用循环次数指定的方式合并,合并后矩阵与矩阵(合并前)的区别在于,起始合并位置至合并后矩阵的结束位置的数据均发生了变化;其余位置数据可以沿用初始的矩阵的数据,也可以进行补位处理,或者部分沿用初始矩阵的数据、部分进行补位处理。其中,合并值确定规则在合并处理过程中可以始终一致,也可以根据合并的列、或者使用第一数据的次数对合并值确定规则进行设置,例如,每一列合并值确定规则可以不一致,或者每一次向量合并入矩阵所对应的合并值确定规则可以不一致。
其中,所述矩阵的合并结束位置是根据所述合并后列长度和所述合并后行长度确定的,或者根据所述循环次数、所述起始合并位置和所述向量的长度确定的。若循环次数不限制时,矩阵的合并结束位置可以为根据合并后列长度和合并后行长度确定的结束位置。若循环次数指定,矩阵的合并结束位置可以为:w+循环次数×m且(w+循环次数×m)<x’*y’。若循环次数指定,但(w+循环次数×m)≥x’*y’,那么矩阵的合并结束位置可以为根据合并后列长度和合并后行长度确定的结束位置。其中,m为向量的长度,起始合并位置到矩阵的起始位置的长度为w,合并后矩阵的尺寸为x’*y’。
装置接收到一个异维合并指令1为:
merge_diff.1 no1 x. h2 data. 1 12 2 20 30 2 20 30 add0 add1 add2
其中,merge_diff.1中merge_diff表示其为异维合并指令、1表示合并处理类型指定维度方向合并。no1表示合并值确定规则为“将当前位置所对应的第一数据的值确定为合并值”。x. h2表示类型参数为“指定维度为行、且指定区域为第二行”。data. 1 12 2 20 30 220 30表示数据参数为“第一数据的维度数为1、该维度的长度为12,也即第一数据为长度为12的向量、第二数据的维度数为2、对应两个不同维度的长度分别为20、30,也即第二数据为20*30的矩阵、合并后数据的维度数为2、对应两个不同维度的长度分别为20、30,也即合并后数据为20*30的矩阵”。第一数据的地址为addr0,第二数据的地址为addr1,合并后数据的地址为addr2。
装置对异维合并指令1的处理过程为:指令解析电路对异维合并指令1进行解析,获取到其对应的操作码(merge_diff.1)和操作域(no1 x. h2 data. 1 12 2 20 30 2 2030 add0 add1 add2),而后数据获取电路根据操作域从add0获取第一数据、从add1获取第二数据,并缓存至存储电路。参数确定电路根据操作域和操作码确定其对应的合并参数(如上所述)。处理电路从存储电路中获取第一数据和第二数据后,根据合并参数对第一数据和第二数据进行合并处理,得到合并后数据并存储至add2。
对于同维合并指令:
在一种可能的实现方式中,在所述合并指令为同维合并指令时,所述第一数据和所述第二数据为向量;或者,所述第一数据和所述第二数据为矩阵;或者,所述第一数据和所述第二数据为张量。或者,第一数据和第二数据还可以是其他维度数量相同的数据,本公开对此不作限制。
在一种可能的实现方式中,在所述合并指令为同维合并指令时,所述合并参数可以包括合并处理类型、对应所述合并处理类型的类型参数、合并值确定规则和数据参数中的至少一种。其中,合并处理类型可以指示所进行合并处理的具体合并方式,合并处理类型的类型参数可以是保证装置进行对应的合并处理所需的参数。合并值确定规则可以指示合并处理过程中合并后数据中进行合并处理位置的值的确定方式。
在一种可能的实现方式中,在所述合并指令为同维合并指令时,所述合并处理类型可以包括以下至少一项:指定区域合并、按方向循环合并。指定区域合并可以指定将第一数据与第二数据中某一个或多个指定的待合并区域进行合并处理。该指定的待合并区域可以是与第一数据的尺寸一致的区域。该指定的待合并区域也可以是与第一数据的尺寸不同的区域,如待合并区域的尺寸小于第一数据的尺寸。按方向循环合并可以是按照指定方向、以第一数据为循环的数据,利用第一数据多次与第二数据对应的区域进行合并处理得到合并后数据。
在一种可能的实现方式中,在所述合并指令为同维合并指令时,所述类型参数可以包括以下至少一项:起始合并位置、合并维度顺序、待合并区域、循环方向、循环次数、循环间隔。其中,在合并处理类型为指定区域合并时,对应该指定区域合并的类型参数可以包括待合并区域、合并维度顺序;或者对应该指定区域合并的类型参数可以包括起始合并位置、合并维度顺序。在合并出列类型为按方向循环合并时,对应该按方向循环合并的类型参数可以包括待合并区域、合并维度顺序;或者对应该按方向循环合并的类型参数可以包括起始合并位置、循环方向、循环次数、循环间隔和合并维度顺序。
在该实现方式中,在同维合并指令中直接指示待合并区域的情况下,可以直接根据合并维度数据将第一数据与待合并区域中的数据进行合并。在同维合并指令中没有指示待合并区域的情况下,则需要根据与合并处理类型相对应的类型参数确定待合并区域。例如,在合并处理类型为指定区域合并时,可以根据第一数据、起始合并位置、合并维度顺序确定待合并区域。在合并出列类型为按方向循环合并时,可以根据第一数据、起始合并位置、循环方向、循环次数、循环间隔和合并维度顺序确定待合并区域。
在该实现方式中,起始合并位置可以是第二数据中开始进行合并处理的位置。在第一数据与第二数据进行合并的次数大于1时,起始合并位置包括开始进行数据合并的位置、也可以包括第二数据中每个与第一数据进行合并的区域的起始合并位置,本公开对此不作限制。合并维度顺序可以是第一数据合并入第二数据中的维度顺序,第一数据的维度数量越大、合并维度顺序的选择就越多。举例来说,图4、图5示出根据本公开实施例的合并指令处理装置基于同维合并指令进行数据合并的示意图。假定第一数据和第二数据均为矩阵,合并维度顺序可以包括按行列对应的顺序合并(如图4所示的例2)、转置后顺序合并(如图4所示的例1)。按行列对应的顺序合并是指将第一数据行、列的数据分别与第二数据中行列的数据进行合并。转置后顺序合并是指将第一数据的行作为列、列作为行,与第二数据中的行列的数据进行合并,也即对第一数据进行转置处理,将转置后的第一数据按照行列对应的方式进行合并。合并维度顺序还可以是按照指定的规则将第一数据中的各数据重新排布后按照预设的行、列长度合并到第二数据中。
在该实现方式中,循环方向可以是第二数据的某一个维度方向(如图4所示的例4),也可以是多个维度方向组合在一起确定的方向(如图4所示的例5)。在循环方向由多个维度方向构成时,可以设置不同维度的合并优先级别,优先按照优先级别高的维度进行合并,也可以不设置优先级别,本公开对此不作限制。例如,在第二数据和第一数据为矩阵时,循环方向可以是行或列方向,则可以将第一数据与对应起始合并位置的多个行或列中的至少一个待合并区域进行合并。或者,在第二数据和第一数据为矩阵时,循环方向可以是行和列、且行优先时,如若确定的多个待合并区域包括多个“行”,则可以将第一数据与第一个“行”中的至少一个待合并区域进行合并,而后进行下“行”的合并处理,直至合并结束。
在该实现方式中,循环次数可以是第一数据循环使用合并到第二数据中的次数,循环次数可以是指定的数值,也可以不限定数值循环进行合并,直至第二数据中需要进行合并的数据全部与第一数据进行合并处理后才停止合并处理。
在该实现方式中,循环间隔可以是第一数据循环与第二数据进行合并所获得的合并后数据中,相邻的两个合并后区域之间的距离,针对相邻的两个合并后的区域其包括对应合并后数据的每个维度的间隔。例如,假定合并后数据为矩阵,则其循环间隔包括行方向的循环间隔和列方向的循环间隔(如图4所示的例5)。循环间隔越短合并后数据中发生数值变化的位置越多,本领域技术人员可以根据实际需要对循环间隔进行设置,本公开对此不作限制。
在一种可能的实现方式中,在所述合并指令为同维合并指令时,所述合并值确定规则可以包括以下任一项:将当前位置所对应的第一数据的值确定为合并值、将当前位置所对应的第二数据的值确定为合并值、将指定位置所对应的第一数据的值与第二数据的值进行算术运算和/或逻辑运算得到的值确定为合并值。所述指定位置可以包括所述第二数据中需要进行合并处理的所有位置中任意一个或多个位置。
在该实现方式中,合并值确定规则可以指示合并处理过程中根据第一数据和第二数据确定合并后数据对应位置的值的具体确定方式。算术运算可以是相乘、相减、相加等基础的运算,逻辑运算可以是或、与、非等进行逻辑判断的运算。其中,为实现逻辑判断过程,可以结合生成的随机数、基于第一数据和/或第二数据作为函数、算法等的输入数据所进行的运算得到的运算结果辅助进行逻辑判断。举例来说,假定当前位置第一数据的值为a、第二数据的值为b。合并后数据该位置的值可以是a;可以是b;或者还可以是a与b进行算术运算和/或逻辑运算所确定的值,如合并值为a+b、max(a,b)(也即选择a、b中数值较大的一个作为合并值)、min(a,b)(也即选择a、b中数值较小的一个作为合并值)等。再或者可以是上一位置第一数据的值与第二数据的值进行算术运算和/或逻辑运算所确定的值。需要说明的是,上述确定合并值的方式仅是本公开提供的示例,本领域技术人员可以根据实际需要对合并值确定规则进行设置,本公开对此不作限制。
在一种可能的实现方式中,在所述合并指令为同维合并指令时,所述数据参数可以包括以下至少一项:所述第一数据和所述第二数据的维度数量、所述第一数据对应维度的长度,所述第二数据对应维度的初始长度,所述合并后数据的维度数量和对应维度的合并后长度。
在该实现方式中,第一数据、第二数据和合并后数据各维度的长度本公开不作限制,本领域技术人员可以根据需要进行设置。
在一种可能的实现方式中,所述处理电路还可以包括第二补位处理子电路,
所述第二补位处理子电路,用于在确定满足补位条件时,利用确定的补位值进行补位处理。其中,在所述合并指令为同维合并指令时,所述补位条件可以包括:所述合并后数据中至少一个维度的合并后长度大于对应的初始长度、且根据起始合并位置、所述循环间隔、所述待合并区域所确定的数据长度小于所述合并后数据中对应维度的合并后长度,所述补位值为预设值。预设值可以是0、1等预先设置的值。
在该实现方式中,在对第一数据和第二数据进行合并处理后,得到的合并后数据中存在空位、或者存在没有进行合并处理的位置时,可以对空位和/或没有进行合并处理的位置进行补位,以保证合并后数据为一个完整数据(如图5所示的例9)。不同的位置进行补位所使用的预设值可以相同,也可以不同,本公开对此不作限制。
在一种可能的实现方式中,所述处理电路可以包括删除处理子电路。所述删除处理子电路用于在确定满足删除条件时,执行删除处理。其中,所述删除条件可以包括以下任一种:存在尺寸小于所述第一待合并数据的待合并区域,根据起始合并位置、所述循环间隔、所述待合并区域所确定的数据长度大于所述合并后数据中对应维度的合并后长度。
在该实现方式中,所进行的删除处理可以包括删除部分第一数据和/或第二数据。例如,所进行的删除处理可以包括删除部分第一数据,以使得删除部分数据的第一数据能够与第二数据的待合并区域合并(如图5所示的例6、例7)。所进行的删除处理可以包括删除部分第二数据,在第二数据的尺寸大于合并后数据的尺寸时,可以删除第二数据中的部分数据(如图5所示的例8)。需要说明的是,进行删除处理是为了保证合并处理的正常进行,以及保证合并后数据的尺寸满足需要,本领域技术人员可以根据实际需要对删除处理进行设置,本公开对此不作限制。
在一种可能的实现方式中,同维合并指令的指令格式可以如下表2所示:
在一种可能的实现方式中,data. par中的par可以包括:
D1i a1 a2…ai b1 b2…bi D3j c1 c2…cj
其中,D1i用于表示第一数据和第二数据的维度的数量为i,a1 a2…ai表示对应第一数据的各个维度的长度分别为a1、a2…ai。b1 b2…bi表示对应第二数据的各个维度的长度分别为b1、b2…bi。D3j用于表示合并后数据的维度的数量为j,c1 c2…cj表示对应合并后数据的各个维度的长度分别为c1、c2…cj。
在一种可能的实现方式中,x. par中的par可以包括:
loca order area dire fre dist
其中,loca表示起始合并位置,order表示合并维度顺序,area表示待合并区域,dire表示循环方向,fre表示循环次数,dist表示循环间隔。
其中,可以预先设置不同合并处理类型、对应合并处理类型的类型参数、合并值确定规则和数据参数所对应的代码、编号等标识,以在同维合并指令中用标识表示同维合并指令所指示的合并处理。上述示例3、示例4仅是同维合并指令的部分示例,本领域技术人员可以根据实际需要对同维合并指令的格式进行设置,本公开对此不作限制。
在一种可能的实现方式中,所述主处理子电路或所述从处理子电路所执行的合并处理可以包括以下步骤:在确定所述合并处理类型为指定区域合并时,根据第一数据、起始合并位置、合并维度顺序确定所述第二数据中需要进行合并处理的待合并区域。
在该实现方式中,在起始合并位置为一个时,可以根据该起始合并位置、合并维度顺序、第一数据的尺寸确定出一个待合并区域。在起始合并位置为多个时,可以根据多个起始合并位置、合并维度顺序、第一数据的尺寸确定出多个待合并区域。
在一种可能的实现方式中,所述主处理子电路或所述从处理子电路所执行的合并处理可以包括以下步骤:在确定所述合并处理类型为按维度方向循环合并时,根据第一数据、起始合并位置、循环方向、循环次数、循环间隔和合并维度顺序,确定出所述第二数据需要进行合并处理的多个待合并区域。
在该实现方式中,在起始合并位置为一个时,可以根据起始合并位置、循环方向、循环间隔和第一数据的尺寸确定出循环次数个待合并区域。在起始合并位置为多个时,可以根据多个起始合并位置、循环间隔和第一数据的尺寸确定出循环次数个待合并区域。
在一种可能的实现方式中,所述主处理子电路或所述从处理子电路所执行的合并处理还可以包括以下步骤:根据所述第一数据和所述合并维度顺序,确定第一待合并数据;根据确定的合并值确定规则、获取的所述第一数据的值和所述待合并区域中的值,确定待合并区域中所有位置的值,得到合并后数据。
在该实现方式中,在合并维度顺序为按照第一数据的原始维度顺序与第二数据的待合并区域顺序合并时,则可以直接将第一数据确定为第一待合并数据(如图4所示的例2)。在合并维度顺序为按照不同于第一数据的原始维度顺序与第二数据的待合并区域进行合并时,则可以直接对第一数据进行处理以得到第一待合并数据(如图4所示的例1)、或者按照新的顺序获取第一数据中的各个数值。
在一种可能的实现方式中,在进行合并处理的过程中,主处理子电路或从处理子电路可以按照预设的数据值获取规则或者同维合并指令中指示的数据值获取规则,获取当前位置所对应的第一数据的值和/或第二数据的值。第一数据的值和第二数据的值的数据值获取规则可以相同,也可以不同。可以获取第一数据中的部分或全部数据进行第一数据与第二数据之间的合并处理。预设的数据值获取规则可以包括以下任一种:顺序依次获取、逆序依次获取、按间隔顺序获取、按间隔逆序获取、获取第一数据中预设位置的值等。间隔可以是一个位置、两个位置等,预设位置可以是第一数据的起始位置、结束位置等,也可以是。本领域技术人员可以根据实际需要对数据值获取规则进行设置,本公开对此不作限制。
举例来说,假定某同维合并指令中第一数据为矩阵其表示为、第二数据为矩阵其表示为,同维合并指令指示第二数据中的待合并区域(也即矩阵中标灰位置所示意区域)包括第二数据的第一行第一个位置、第二个位置,以及第二行第一个位置和第二个位置,为便于描述以下称四个位置分别为位置1(第一行第一个位置)、位置2(第一行第二个位置)、位置3(第二行第一个位置)和位置4(第二行第二个位置)。需要说明的是,下述示例仅是进行矩阵之间合并的几种可能的示例,是为了示意的说明数据值获取规则以及进行数据合并的过程,本公开并不仅限于此。
若根据同维合并指令确定将二者合并为顺序依次获取第一数据和第二数据,合并值确定规则为“将当前位置所选定的第一数据或第二数据的值确定为合并值(也即将指定位置所对应的第一数据的值与第二数据的值进行算术运算和/或逻辑运算得到的值确定为合并值)”,例如,根据输入的掩码来确定合并值,假定掩码为,其中1表示选择第一数据的值,0表示选择第二数据的值,那么处理电路可以调用选择器根据掩码确定出的待合并区域的值为,即最终得到的合并后数据为。
其中,还可以选择其他方式来表达或实现“将指定位置所对应的第一数据的值与第二数据的值进行算术运算和/或逻辑运算得到的值确定为合并值”这一合并值确定规则。例如,也可以利用运算器中的随机数生成器或者伪随机数发生器,给定选择第一数据的阈值,如0.5,利用随机数生成器生成[0,1)的随机数,当随机数小于0.5时,选择第一数据的值作为当前位置的合并值,否则选择第二数据的值为当前位置的合并值。其中,伪随机数生成器可以利用取中法、同余法、移位法、梅森旋转算法等算法实现随机数的生成。
若根据同维合并指令确定将二者合并为顺序依次获取第一数据和第二数据,合并值确定规则为“将当前位置所对应的第一数据的值确定为合并值”,则处理电路可以调用选择器实现数据合并处理,且合并过程顺序为:对于位置1,先获取第一数据的第一行第一个位置的值“a”、第二数据中位置1的值“q”,则合并后数据位置1的数值从原来的“q”变为“a”,也即a、q→a。对于位置2,先获取第一数据的第一行第二个位置的值“b”、第二数据中位置2的值“w”,则合并后数据位置2的数值从原来的“w”变为“b”,也即b、w→b。对于位置3,先获取第一数据的第二行第一个位置的值“c”、第二数据中位置3的值“g”,则合并后数据位置3的数值从原来的“g”变为“c”,也即c、g→c。对于位置4,先获取第一数据的第二行第二个位置的值“d”、第二数据中位置4的值“j”,则合并后数据位置4的数值从原来的“j”变为“d”,也即d、j→d。则合并处理后得到的合并后数据为。
为便于描述后续以“data1、data2→data3”的方式描述其合并处理过程,其中,data1表示获取到的第一数据的值,data2表示获取到的第二数据的值,data3表示合并后数据的值。
若根据同维合并指令确定将二者合并为逆序依次获取第一数据、顺序依次获取第二数据,合并值确定规则为“将当前位置所对应的第一数据的值确定为合并值”,则处理电路可以调用选择器实现数据合并处理,且合并过程顺序为:对于位置1,先获取第一数据的第二行第二个位置的值“d”、第二数据中位置1的值“q”,则合并后数据位置1的数值从原来的“q”变为“d”,也即d、q→d。对于位置2,先获取第一数据的第二行第一个位置的值“c”、第二数据中位置2的值“w”,则合并后数据位置2的数值从原来的“w”变为“c”,也即c、w→c。对于位置3,先获取第一数据的第一行第二个位置的值“b”、第二数据中位置3的值“g”,则合并后数据位置3的数值从原来的“g”变为“b”,也即b、g→b。对于位置4,先获取第一数据的第一行第一个位置的值“a”、第二数据中位置4的值“j”,则合并后数据位置4的数值从原来的“j”变为“a”,也即d、j→a。则合并处理后得到的合并后数据为。
若根据同维合并指令确定将二者合并为顺序依次获取第一数据和第二数据,合并值确定规则为“将当前位置所对应的第一数据的值和第二数据的值相乘得到的值确定为合并值”,则处理电路可以调用乘法器实现数据合并处理,且合并过程顺序为:对于位置1,先获取第一数据的第一行第一个位置的值“a”、第二数据中位置1的值“q”,则合并后数据位置1的数值从原来的“q”变为“a”,也即a、q→a*q。对于位置2,先获取第一数据的第一行第二个位置的值“b”、第二数据中位置2的值“w”,则合并后数据位置2的数值从原来的“w”变为“b”,也即b、w→b*w。对于位置3,先获取第一数据的第二行第一个位置的值“c”、第二数据中位置3的值“g”,则合并后数据位置3的数值从原来的“g”变为“c”,也即c、g→c*g。对于位置4,先获取第一数据的第二行第二个位置的值“d”、第二数据中位置4的值“j”,则合并后数据位置4的数值从原来的“j”变为“d”,也即d、j→d*j。则合并处理后得到的合并后数据为。
若根据同维合并指令确定将二者合并为顺序依次获取第一数据和第二数据,合并值确定规则为“将当前位置所对应的第一数据的值和第二数据的值中较大的确定为合并值”,则处理电路可以调用比较器实现数据合并处理,且合并过程顺序为:对于位置1,由于a大于q,则合并后数据位置1的数值从原来的“q”变为“a”,也即a、q→a。对于位置2,由于w大于b,则合并后数据位置2的数值不变,也即b、w→w。对于位置3,由于c大于g,则合并后数据位置3的数值从原来的“g”变为“c”,也即c、g→c。对于位置4,由于j大于d,则合并后数据位置4的数值不变,也即d、j→j。则合并处理后得到的合并后数据为。
假定装置接收到一个同维合并指令2为:
merge.1 no1 x. h2 data. 2 2 3 20 30 2 20 30 add0 add1 add2
其中,merge.1中merge表示其为将两矩阵合并一起的同维合并指令、1表示合并处理类型指定区域合并。no1表示合并值确定规则为“将当前位置所对应的第一数据的值确定为合并值”。x. 1 2 1表示类型参数为“起始合并位置为第一行第二个位置、合并维度顺序为第一数据原始维度顺序对应合并”。data. 2 2 3 20 30 2 20 30表示数据参数为“第一数据和第二数据的维度数为2;第一数据对应两个不同维度的长度分别为2、3,也即第一数据为2*3的矩阵;第二数据对应两个不同维度的长度分别为20、30,也即第二数据为20*30的矩阵。合并后数据的维度数为2、对应两个不同维度的长度分别为20、30,也即合并后数据为20*30的矩阵”。第一数据的地址为addr0,第二数据的地址为addr1,合并后数据的地址为addr2。
装置对同维合并指令2的处理过程为:指令解析电路对同维合并指令2进行解析,获取到其对应的操作码(merge.1)和操作域(no1 x. h2 data. 2 2 3 20 30 2 20 30add0 add1 add2),而后数据获取电路根据操作域从add0获取第一数据、从add1获取第二数据,并缓存至存储电路。参数确定电路根据操作域和操作码确定其对应的合并参数(如上所述)。处理电路从存储电路中获取第一数据和第二数据后,根据合并参数对第一数据和第二数据进行合并处理,得到合并后数据并存储至add2。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/电路的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、电路或组件可以结合,或者可以集成到另一个***,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/电路可以集成在一个单元/电路中,也可以是各个单元/电路单独物理存在,也可以两个或两个以上单元/电路集成在一起。上述集成的单元/电路既可以采用硬件的形式实现,也可以采用软件程序电路的形式实现。
所述集成的单元/电路如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、 高带宽内存HBM(High-Bandwidth Memory)、混合存储立方 HMC(Hybrid Memory Cube)等等。
所述集成的单元/电路如果以软件程序电路的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
图6示出根据本公开实施例的合并指令处理处理方法的流程图。如图6所示,该方法应用于上述合并指令处理装置,该方法包括步骤S41至步骤S45。
在步骤S41中,对获取到的合并指令进行解析,得到所述合并指令的操作码和操作域。
在步骤S42中,基于所述操作码和所述操作域获取进行合并处理所需的第一数据、第二数据。
在步骤S43中,缓存所述第一数据和/或所述第二数据。
在步骤S44中,确定进行合并处理所需的合并参数。
在步骤S45中,读取缓存的所述第一数据和/或所述第二数据,根据所述合并参数利用运算器对所述第一数据和所述第二数据进行合并处理得到合并后数据,并存储所述合并后数据。
其中,所述合并指令包括异维合并指令和同维合并指令中的至少一种。在所述合并指令为异维合并指令时,所述第一数据的维度数小于所述第二数据的维度数。在所述合并指令为同维合并指令时,所述第一数据的维度数等于所述第二数据的维度数。所述操作码用于指示所述合并指令对数据所进行的处理为合并处理,所述操作域包括所述第一数据地址、所述第二数据地址。
根据本公开实施例所提供的合并指令处理方法,通过一个合并指令,可以实现数据之间的合并,且合并速度快、占用缓存少,且在进行大规模合并运算时可以更加灵活有效地支持不同尺寸的数据合并,合并指令的格式精简,使用便利。
在一种可能的实现方式中,所述装置的处理电路包括主处理子电路和多个从处理子电路,其中,步骤S41可以包括:解析所述合并指令得到多个运算指令,并将所述多个运算指令发送至所述主处理子电路。以及在步骤S42中将第一数据和第二数据发送至主处理子电路。在步骤S44中将合并参数发送至主处理子电路。其中,步骤S45可以包括:
利用所述主处理子电路对所述第一数据和所述第二数据进行前续处理,以及与所述多个从处理子电路之间进行数据和/或运算指令的传输;
利用所述从处理子电路根据运算指令、对应的数据和合并参数进行合并处理,得到中间合并结果,并将所述中间合并结果发送至所述主处理子电路;
利用所述主处理子电路对接收到的多个中间结果执行后续处理,得到合并后数据,并存储所述合并后数据。
在一种可能的实现方式中,所述处理电路包括主处理子电路和多个从处理子电路,其中,步骤S42可以包括:利用所述主处理子电路根据所述合并参数,对所述第一数据和所述第二数据进行合并处理,得到合并后数据,并存储所述合并后数据。
在一种可能的实现方式中,所述处理电路包括主处理子电路和多个从处理子电路,其中,步骤S41可以包括:解析所述合并指令得到多个运算指令,并将所述多个运算指令发送至所述主处理子电路。以及在步骤S44中将合并参数发送至主处理子电路。其中,步骤S45可以包括:
利用所述主处理子电路为所述多个从处理子电路分配对应的运算指令,并将分配的运算指令、对应的合并参数、所述第一数据和所述第二数据中的至多一个发送至从处理子电路;
利用所述从处理子电路接收来自所述主处理子电路的分配的运算指令、对应的合并参数、所述第一数据和所述第二数据中的至多一个,根据分配的运算指令、对应的合并参数对所述第一数据和所述第二数据,进行合并处理得到中间合并结果,并将所述中间合并结果发送至所述主处理子电路;
利用所述主处理子电路对接收到的多个中间合并结果执行后续处理,得到合并后数据,并存储所述合并后数据。
在一种可能的实现方式中,在所述合并指令为异维合并指令时,所述第一数据为向量、所述第二数据为矩阵;或者,所述第一数据为向量、所述第二数据为阶数至少为3的张量;或者,所述第一数据为矩阵、所述第二数据为阶数至少为3的张量。
在一种可能的实现方式中,在所述合并指令为异维合并指令时,所述合并参数可以包括合并处理类型、对应所述合并处理类型的类型参数、合并值确定规则和数据参数中的至少一种,
在所述合并指令为异维合并指令时,所述合并处理类型可以包括以下至少一项:指定维度方向合并、按维度方向循环合并,所述类型参数可以包括以下至少一项:起始合并位置、指定维度、指定维度中的指定区域、循环次数,
在所述合并指令为异维合并指令时,所述合并值确定规则可以包括以下任一项:将当前位置所对应的第一数据的值确定为合并值、将当前位置所对应的第二数据的值确定为合并值、将指定位置所对应的第一数据的值与第二数据的值进行算术运算和/或逻辑运算得到的值确定为合并值,所述指定位置可以包括所述第二数据中需要进行合并处理的所有位置中任意一个或多个位置,
在所述合并指令为异维合并指令时,所述数据参数可以包括以下至少一项:所述第一数据的维度数量以及对应维度的长度,所述第二数据的维度数量以及对应维度的初始长度,所述合并后数据的维度数量和对应维度的合并后长度。
在一种可能的实现方式中,利用所述主处理子电路或所述从处理子电路所执行的合并处理可以包括以下步骤:
在确定所述合并处理类型为指定维度方向合并时,确定所述第二数据中需要进行合并处理的指定维度和起始合并位置;
根据所述第一数据确定第一待合并数据;
根据确定的合并值确定规则、获取的所述第一待合并数据的值和所述指定维度中需要进行合并处理的位置的值,确定所述指定维度自起始合并位置至所述指定维度的合并结束位置之间每个位置的值,得到合并后数据。
在一种可能的实现方式中,利用所述主处理子电路或所述从处理子电路所执行的合并处理可以包括以下步骤:
在确定所述合并处理类型为按维度方向循环合并时,确定起始合并位置和循环次数;
根据所述第一数据的维度和所述第二数据的维度,确定待循环维度;
根据确定的合并值确定规则、按照所述循环次数循环获取的所述第一数据的值、按所述待循环维度获取的所述第二数据中需要进行合并处理的位置的值,确定所述起始合并位置至所述第二数据的合并结束位置之间的每个位置的值,得到合并后数据。
在一种可能的实现方式中,在所述合并指令为同维合并指令时,所述第一数据和所述第二数据为向量;或者,所述第一数据和所述第二数据为矩阵;或者,所述第一数据和所述第二数据为张量,
其中,所述合并参数包括合并处理类型、对应所述合并处理类型的类型参数、合并值确定规则和数据参数中的至少一种,
所述合并处理类型包括以下至少一项:指定区域合并、按方向循环合并,所述类型参数包括以下至少一项:起始合并位置、合并维度顺序、待合并区域、循环方向、循环次数、循环间隔,
所述合并值确定规则包括以下任一项:将当前位置所对应的第一数据的值确定为合并值、将当前位置所对应的第二数据的值确定为合并值、将指定位置所对应的第一数据的值与第二数据的值进行算术运算和/或逻辑运算得到的值确定为合并值,所述指定位置包括所述第二数据中需要进行合并处理的所有位置中任意一个或多个位置,
所述数据参数包括以下至少一项:所述第一数据和所述第二数据的维度数量、所述第一数据对应维度的长度,所述第二数据对应维度的初始长度,所述合并后数据的维度数量和对应维度的合并后长度。
在一种可能的实现方式中,利用所述主处理子电路或所述从处理子电路所执行的合并处理可以包括以下步骤:在确定所述合并处理类型为指定区域合并时,根据第一数据、起始合并位置、合并维度顺序确定所述第二数据中需要进行合并处理的待合并区域;
在一种可能的实现方式中,利用所述主处理子电路或所述从处理子电路所执行的合并处理可以包括以下步骤:在确定所述合并处理类型为按维度方向循环合并时,根据第一数据、起始合并位置、循环方向、循环次数、循环间隔和合并维度顺序,确定出所述第二数据需要进行合并处理的多个待合并区域。
在一种可能的实现方式中,利用所述主处理子电路或所述从处理子电路所执行的合并处理可以还包括以下步骤:根据所述第一数据和所述合并维度顺序,确定第一待合并数据;根据确定的合并值确定规则、获取的所述第一数据的值和所述待合并区域中的值,确定待合并区域中所有位置的值,得到合并后数据。
在一种可能的实现方式中,步骤S45还可以包括:在确定满足补位条件时,利用确定的补位值进行补位处理,其中,所述补位条件可以包括以下任一项:所述合并后数据发生合并的维度中的至少一个维度的合并后长度大于对应的初始长度、且根据起始合并位置和所述第一数据所确定的数据长度小于所述合并后数据中对应维度的合并后长度;所述合并后数据发生合并的维度中的至少一个维度的合并后长度大于对应的初始长度、且根据起始合并位置和所述第一数据所确定的数据长度小于所述合并后数据中对应维度的合并后长度。所述补位值为预设值。
在一种可能的实现方式中,步骤S45还可以包括:在确定满足删除条件时,执行删除处理,
其中,所述删除条件包括以下任一种:存在尺寸小于所述第一待合并数据的待合并区域,根据起始合并位置、所述循环间隔、所述待合并区域所确定的数据长度大于所述合并后数据中对应维度的合并后长度。
在一种可能的实现方式中,所述装置的存储电路可以包括多个存储子电路,每个存储子电路用于存储对应的从处理子电路的处理数据,从处理子电路的处理数据包括运算指令、待运算的数据、合并参数和中间合并结果中的一个或多个。
在一种可能的实现方式中,所述操作码和/或所述操作域用于指示所述合并参数,其中,步骤S44可以包括:在所述操作码和/或所述操作域用于指示所述合并参数时,根据所述操作码和/或所述操作域确定所述合并参数的部分或全部参数。
在一种可能的实现方式中,所述方法还可以包括:
存储所述合并指令;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述合并指令。
在一种可能的实现方式中,所述方法还可以包括:在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,在所述第零待执行指令执行完毕后,控制执行所述第一待执行指令,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和电路并不一定是本公开所必须的。
进一步需要说明的是,虽然图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述合并指令处理装置。
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
图7示出根据本公开实施例的板卡的结构框图,参阅图7,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述人工智能芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述人工智能芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每组所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述人工智能芯片电连接。所述接口装置用于实现所述人工智能芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述人工智能芯片电连接。所述控制器件用于对所述人工智能芯片的状态进行监控。具体的,所述人工智能芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
图8示出根据本公开实施例的一种电子设备800的框图。例如,电子设备800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等终端。
参照图8,电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/ O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个电路,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体电路,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在电子设备800的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件806为电子设备800的各种组件提供电力。电源组件806可以包括电源管理***,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当电子设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜***或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当电子设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/ O接口812为处理组件802和***接口电路之间提供接口,上述***接口电路可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到电子设备800的打开/关闭状态,组件的相对定位,例如所述组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)电路,以促进短程通信。例如,在NFC电路可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器804,上述计算机程序指令可由电子设备800的处理器820执行以完成上述方法。
图9示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。参照图9,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的电路。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作***,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。
Claims (20)
1.一种合并指令处理装置,其特征在于,所述装置包括:
指令解析电路,用于对获取到的合并指令进行解析,得到所述合并指令的操作码和操作域;
数据获取电路,用于基于所述操作码和所述操作域获取进行合并处理所需的第一数据、第二数据,并将所述第一数据和/或所述第二数据发送至存储电路;
存储电路,用于缓存接收到的所述第一数据和/或所述第二数据;
参数确定电路,用于确定进行合并处理所需的合并参数;
处理电路,用于从所述存储电路中读取缓存的所述第一数据和/或所述第二数据,根据所述合并参数利用运算器对所述第一数据和所述第二数据进行合并处理得到合并后数据,并存储所述合并后数据,
其中,所述合并指令包括异维合并指令和同维合并指令中的至少一种,
在所述合并指令为异维合并指令时,所述第一数据的维度数小于所述第二数据的维度数,
在所述合并指令为同维合并指令时,所述第一数据的维度数等于所述第二数据的维度数,
所述操作码用于指示所述合并指令对数据所进行的处理为合并处理,所述操作域包括第一数据地址、第二数据地址,
其中,所述处理电路包括主处理子电路和多个从处理子电路,所述装置利用所述主处理子电路和所述多个从处理子电路实现数据合并的方式包括以下任意一种:
所述指令解析电路,还用于解析所述合并指令得到多个运算指令,并将所述多个运算指令发送至所述主处理子电路,所述数据获取电路还用于将所述第一数据和所述第二数据发送至主处理子电路,所述参数确定电路还用于将所述合并参数发送至所述主处理子电路;所述主处理子电路,用于对所述第一数据和所述第二数据进行前续处理,以及与所述多个从处理子电路之间进行数据和/或运算指令的传输;所述从处理子电路,用于根据运算指令、对应的数据和合并参数进行合并处理,得到中间合并结果,并将所述中间合并结果发送至所述主处理子电路;所述主处理子电路,还用于对接收到的多个中间结果执行后续处理,得到合并后数据,并存储所述合并后数据;
或者
所述主处理子电路,用于根据所述合并参数,对所述第一数据和所述第二数据进行合并处理,得到合并后数据,并存储所述合并后数据;
或者
所述指令解析电路,还用于解析所述合并指令得到多个运算指令,并将所述多个运算指令发送至所述主处理子电路,所述参数确定电路还用于将所述合并参数发送至所述主处理子电路;所述主处理子电路,用于为所述多个从处理子电路分配对应的运算指令,并将分配的运算指令、对应的合并参数、所述第一数据和所述第二数据中的至多一个发送至从处理子电路;所述从处理子电路,用于接收来自所述主处理子电路的分配的运算指令、对应的合并参数、所述第一数据和所述第二数据中的至多一个,根据分配的运算指令、对应的合并参数对所述第一数据和所述第二数据进行合并处理得到中间合并结果,并将所述中间合并结果发送至所述主处理子电路;所述主处理子电路,还用于对接收到的多个中间合并结果执行后续处理,得到合并后数据,并存储所述合并后数据。
2.根据权利要求1所述的装置,其特征在于,在所述合并指令为异维合并指令时,所述第一数据为向量、所述第二数据为矩阵;或者,所述第一数据为向量、所述第二数据为阶数至少为3的张量;或者,所述第一数据为矩阵、所述第二数据为阶数至少为3的张量,
其中,所述合并参数包括合并处理类型、对应所述合并处理类型的类型参数、合并值确定规则和数据参数中的至少一种,
所述合并处理类型包括以下至少一项:指定维度方向合并、按维度方向循环合并,所述类型参数包括以下至少一项:起始合并位置、指定维度、指定维度中的指定区域、循环次数,
所述合并值确定规则包括以下任一项:将当前位置所对应的第一数据的值确定为合并值、将当前位置所对应的第二数据的值确定为合并值、将指定位置所对应的第一数据的值与第二数据的值进行算术运算和/或逻辑运算得到的值确定为合并值,所述指定位置包括所述第二数据中需要进行合并处理的所有位置中任意一个或多个位置,
所述数据参数包括以下至少一项:所述第一数据的维度数量以及对应维度的长度,所述第二数据的维度数量以及对应维度的初始长度,所述合并后数据的维度数量和对应维度的合并后长度。
3.根据权利要求2所述的装置,其特征在于,所述主处理子电路或所述从处理子电路所执行的合并处理包括以下步骤:
在确定所述合并处理类型为指定维度方向合并时,确定所述第二数据中需要进行合并处理的指定维度和起始合并位置;
根据所述第一数据确定第一待合并数据;
根据确定的合并值确定规则、获取的所述第一待合并数据的值和所述指定维度中需要进行合并处理的位置的值,确定所述指定维度自起始合并位置至所述指定维度的合并结束位置之间每个位置的值,得到合并后数据。
4.根据权利要求2所述的装置,其特征在于,所述主处理子电路或所述从处理子电路所执行的合并处理包括以下步骤:
在确定所述合并处理类型为按维度方向循环合并时,确定起始合并位置和循环次数;
根据所述第一数据的维度和所述第二数据的维度,确定待循环维度;
根据确定的合并值确定规则、按照所述循环次数循环获取的所述第一数据的值、按所述待循环维度获取的所述第二数据中需要进行合并处理的位置的值,确定所述起始合并位置至所述第二数据的合并结束位置之间的每个位置的值,得到合并后数据。
5.根据权利要求1所述的装置,其特征在于,在所述合并指令为同维合并指令时,所述第一数据和所述第二数据为向量;或者,所述第一数据和所述第二数据为矩阵;或者,所述第一数据和所述第二数据为张量,
其中,所述合并参数包括合并处理类型、对应所述合并处理类型的类型参数、合并值确定规则和数据参数中的至少一种,
所述合并处理类型包括以下至少一项:指定区域合并、按方向循环合并,所述类型参数包括以下至少一项:起始合并位置、合并维度顺序、待合并区域、循环方向、循环次数、循环间隔,
所述合并值确定规则包括以下任一项:将当前位置所对应的第一数据的值确定为合并值、将当前位置所对应的第二数据的值确定为合并值、将指定位置所对应的第一数据的值与第二数据的值进行算术运算和/或逻辑运算得到的值确定为合并值,所述指定位置包括所述第二数据中需要进行合并处理的所有位置中任意一个或多个位置,
所述数据参数包括以下至少一项:所述第一数据和所述第二数据的维度数量、所述第一数据对应维度的长度,所述第二数据对应维度的初始长度,所述合并后数据的维度数量和对应维度的合并后长度。
6.根据权利要求5所述的装置,其特征在于,所述主处理子电路或所述从处理子电路所执行的合并处理包括以下任意一个步骤:
在确定所述合并处理类型为指定区域合并时,根据第一数据、起始合并位置、合并维度顺序确定所述第二数据中需要进行合并处理的待合并区域;或者
在确定所述合并处理类型为按维度方向循环合并时,根据第一数据、起始合并位置、循环方向、循环次数、循环间隔和合并维度顺序,确定出所述第二数据中需要进行合并处理的多个待合并区域。
7.根据权利要求6所述的装置,其特征在于,所述主处理子电路或所述从处理子电路所执行的合并处理还包括以下步骤:
根据所述第一数据和所述合并维度顺序,确定第一待合并数据;
根据确定的合并值确定规则、获取的所述第一数据的值和所述待合并区域中的值,确定待合并区域中所有位置的值,得到合并后数据。
8.根据权利要求2所述的装置,其特征在于,所述处理电路还包括:
第一补位处理子电路,用于在确定满足补位条件时,利用确定的补位值进行补位处理,
其中,所述补位条件包括:所述合并后数据发生合并的维度中的至少一个维度的合并后长度大于对应的初始长度、且根据起始合并位置和所述第一数据所确定的数据长度小于所述合并后数据中对应维度的合并后长度。
9.根据权利要求5所述的装置,其特征在于,所述处理电路还包括:
第二补位处理子电路,用于在确定满足补位条件时,利用确定的补位值进行补位处理,
其中,所述补位条件包括:所述合并后数据中至少一个维度的合并后长度大于对应的初始长度、且根据起始合并位置、所述循环间隔、所述待合并区域所确定的数据长度小于所述合并后数据中对应维度的合并后长度。
10.根据权利要求7所述的装置,其特征在于,所述处理电路还包括:
删除处理子电路,还用于在确定满足删除条件时,执行删除处理,
其中,所述删除条件包括以下任一种:存在尺寸小于所述第一待合并数据的待合并区域,根据起始合并位置、所述循环间隔、所述待合并区域所确定的数据长度大于所述合并后数据中对应维度的合并后长度。
11.根据权利要求1所述的装置,其特征在于,
所述存储电路包括多个存储子电路,每个存储子电路用于存储对应的从处理子电路的处理数据,从处理子电路的处理数据包括运算指令、待运算的数据、合并参数和中间合并结果中的一个或多个。
12.根据权利要求1所述的装置,其特征在于,所述操作码和/或所述操作域用于指示所述合并参数,
所述参数确定电路,还用于在所述操作码和/或所述操作域用于指示所述合并参数时,根据所述操作码和/或所述操作域确定所述合并参数的部分或全部参数。
13.根据权利要求1所述的装置,其特征在于,所述运算器包括选择器、随机数生成器、伪随机数发生器、加法器、减法器、乘法器、比较器中的至少一种。
14.根据权利要求1所述的装置,其特征在于,所述装置还包括:
指令存储电路,用于存储所述合并指令;
队列存储电路,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述合并指令,
其中,所述装置还包括:
依赖关系处理电路,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储电路中,在所述第零待执行指令执行完毕后,从所述指令存储电路中提取所述第一待执行指令发送至所述处理电路,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
15.一种合并指令处理方法,其特征在于,应用于合并指令处理装置,所述方法包括:
利用所述装置中的指令解析电路对获取到的合并指令进行解析,得到所述合并指令的操作码和操作域;
利用所述装置中的数据获取电路基于所述操作码和所述操作域获取进行合并处理所需的第一数据、第二数据;
利用所述装置中的存储电路缓存所述第一数据和/或所述第二数据;
利用所述装置中的参数确定电路确定进行合并处理所需的合并参数;
利用所述装置中的处理电路读取缓存的所述第一数据和/或所述第二数据,根据所述合并参数利用运算器对所述第一数据和所述第二数据进行合并处理得到合并后数据,并存储所述合并后数据,
其中,所述合并指令包括异维合并指令和同维合并指令中的至少一种,
在所述合并指令为异维合并指令时,所述第一数据的维度数小于所述第二数据的维度数,
在所述合并指令为同维合并指令时,所述第一数据的维度数等于所述第二数据的维度数,
所述操作码用于指示所述合并指令对数据所进行的处理为合并处理,所述操作域包括第一数据地址、第二数据地址,
其中,所述装置的处理电路包括主处理子电路和多个从处理子电路,利用所述装置中的处理电路读取缓存的所述第一数据和/或所述第二数据,根据所述合并参数利用运算器对所述第一数据和所述第二数据进行合并处理得到合并后数据,并存储所述合并后数据,包括以下任一项操作:
利用所述指令解析电路解析所述合并指令得到多个运算指令,并将所述多个运算指令发送至所述主处理子电路,利用所述数据获取电路将所述第一数据和所述第二数据发送至主处理子电路,利用所述参数确定电路将所述合并参数发送至所述主处理子电路;利用所述主处理子电路对所述第一数据和所述第二数据进行前续处理,以及与所述多个从处理子电路之间进行数据和/或运算指令的传输;利用所述从处理子电路根据运算指令、对应的数据和合并参数进行合并处理,得到中间合并结果,并将所述中间合并结果发送至所述主处理子电路;利用所述主处理子电路对接收到的多个中间结果执行后续处理,得到合并后数据,并存储所述合并后数据;
或者
利用所述主处理子电路根据所述合并参数,对所述第一数据和所述第二数据进行合并处理,得到合并后数据,并存储所述合并后数据;
或者
利用所述指令解析电路解析所述合并指令得到多个运算指令,并将所述多个运算指令发送至所述主处理子电路,利用所述参数确定电路将所述合并参数发送至所述主处理子电路;利用所述主处理子电路为所述多个从处理子电路分配对应的运算指令,并将分配的运算指令、对应的合并参数、所述第一数据和所述第二数据中的至多一个发送至从处理子电路;利用所述从处理子电路接收来自所述主处理子电路的分配的运算指令、对应的合并参数、所述第一数据和所述第二数据中的至多一个,根据分配的运算指令、对应的合并参数对所述第一数据和所述第二数据进行合并处理得到中间合并结果,并将所述中间合并结果发送至所述主处理子电路;利用所述主处理子电路对接收到的多个中间合并结果执行后续处理,得到合并后数据,并存储所述合并后数据。
16.一种人工智能芯片,其特征在于,所述芯片包括如权利要求1至14中任意一项所述的合并指令处理装置。
17.一种电子设备,其特征在于,所述电子设备包括如权利要求16所述的人工智能芯片。
18.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求16所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控,
其中,所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每组所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
19.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求15所述的方法。
20.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求15所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010034696.5A CN110851787B (zh) | 2020-01-14 | 2020-01-14 | 合并指令处理方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010034696.5A CN110851787B (zh) | 2020-01-14 | 2020-01-14 | 合并指令处理方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851787A true CN110851787A (zh) | 2020-02-28 |
CN110851787B CN110851787B (zh) | 2020-05-08 |
Family
ID=69610698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010034696.5A Active CN110851787B (zh) | 2020-01-14 | 2020-01-14 | 合并指令处理方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851787B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580826A (zh) * | 2020-04-30 | 2020-08-25 | 腾讯科技(深圳)有限公司 | 机器学习模型的编译优化方法和装置 |
CN112040133A (zh) * | 2020-09-09 | 2020-12-04 | 浙江大华技术股份有限公司 | 设备的控制方法、装置、存储介质以及电子装置 |
CN112631490A (zh) * | 2020-12-30 | 2021-04-09 | 北京飞讯数码科技有限公司 | 显示界面控制方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170017744A1 (en) * | 2015-07-15 | 2017-01-19 | E-System Design, Inc. | Modeling of Power Distribution Networks for Path Finding |
CN107315575A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行向量合并运算的装置和方法 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN109062897A (zh) * | 2018-07-26 | 2018-12-21 | 苏州大学 | 基于深度神经网络的句子对齐方法 |
-
2020
- 2020-01-14 CN CN202010034696.5A patent/CN110851787B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170017744A1 (en) * | 2015-07-15 | 2017-01-19 | E-System Design, Inc. | Modeling of Power Distribution Networks for Path Finding |
CN107315575A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行向量合并运算的装置和方法 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN109062897A (zh) * | 2018-07-26 | 2018-12-21 | 苏州大学 | 基于深度神经网络的句子对齐方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580826A (zh) * | 2020-04-30 | 2020-08-25 | 腾讯科技(深圳)有限公司 | 机器学习模型的编译优化方法和装置 |
CN111580826B (zh) * | 2020-04-30 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 机器学习模型的编译优化方法和装置 |
CN112040133A (zh) * | 2020-09-09 | 2020-12-04 | 浙江大华技术股份有限公司 | 设备的控制方法、装置、存储介质以及电子装置 |
CN112040133B (zh) * | 2020-09-09 | 2022-06-14 | 浙江大华技术股份有限公司 | 设备的控制方法、装置、存储介质以及电子装置 |
CN112631490A (zh) * | 2020-12-30 | 2021-04-09 | 北京飞讯数码科技有限公司 | 显示界面控制方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110851787B (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851787B (zh) | 合并指令处理方法、装置、电子设备和存储介质 | |
CN107315715B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
CN111443917B (zh) | 神经网络运行优化方法、装置及相关产品 | |
US20110265028A1 (en) | Management of device settings via a plurality of interfaces | |
CN112416352A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111859035B (zh) | 数据处理方法及装置 | |
CN111597029B (zh) | 数据处理方法及装置、电子设备和存储介质 | |
CN113742366B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN114595785A (zh) | 模型训练方法、装置、电子设备及存储介质 | |
CN108196906B (zh) | 一种用户指令处理方法及嵌入式设备 | |
CN113033761B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113033813A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111885298A (zh) | 图像处理方法及装置 | |
CN116048757A (zh) | 任务处理方法、装置、电子设备和存储介质 | |
CN114266306A (zh) | 基于机器学习模型实现数据分类的方法及装置、电子设备 | |
CN111783969A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110633105B (zh) | 指令序列处理方法、装置、电子设备和存储介质 | |
US20210117199A1 (en) | Method, device and storage medium for processing overhead of memory access | |
CN115373646A (zh) | 扩展信息方法、装置和相关产品 | |
CN113297128A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112328351A (zh) | 动画显示方法、动画显示装置及终端设备 | |
CN113762488B (zh) | 处理器、数据处理方法、计算机设备和存储介质 | |
CN113762518B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN109783329B (zh) | 应用程序空白数据提示方法、***及终端设备 | |
CN116991600B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |