指令处理方法、装置及相关产品与流程

文档序号:23019798发布日期:2020-11-20 13:03
指令处理方法、装置及相关产品与流程

本公开涉及计算机技术领域,尤其涉及一种用于实现数据迁移的指令处理方法、装置及相关产品。



背景技术:

随着科技的不断发展,机器学习,尤其是神经网络算法的使用越来越广泛。其在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。但由于神经网络算法的复杂度越来越高,所涉及的数据运算种类和数据量不断增大。

传统的数据迁移方式是通过数据的初始存储空间和目标存储空间实现数据的迁移,但上述数据迁移方式在数据量较大时,对数据进行迁移处理的效率较低、速度较慢。



技术实现要素:

有鉴于此,本公开提出了一种用于实现数据迁移的指令处理方法、装置及相关产品,以提高数据迁移处理的效率和速度。

根据本公开的第一方面,提供了一种指令处理装置,所述装置包括:

控制模块,用于对编译后的数据迁移指令进行解析,得到所述数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获得待迁移数据的源操作数信息、所述目标操作数以及迁移参数;其中,所述操作域包括所述源操作数信息、所述目标操作数和所述迁移参数,所述迁移参数包括数据迁移方向和迁移循环参数;以及

处理模块,用于根据所述迁移循环参数,至少执行一次数据迁移操作,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数信息,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。

根据本公开的第二方面,提供了一种机器学习运算装置,所述装置包括:

一个或多个上述第一方面所述的指令处理装置,用于从其他处理装置中获取待迁移数据和控制信息,并执行指定的机器学习运算,将执行结果通过i/o接口传递给其他处理装置;

当所述机器学习运算装置包含多个所述指令处理装置时,所述多个所述指令处理装置间可以通过特定的结构进行连接并传输数据;

其中,多个所述指令处理装置通过快速外部设备互连总线pcie总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述指令处理装置共享内存或者拥有各自的内存;多个所述指令处理装置的互联方式是任意互联拓扑。

根据本公开的第三方面,提供了一种组合处理装置,所述装置包括:

上述第二方面所述的机器学习运算装置、通用互联接口和其他处理装置;

所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。

根据本公开的第四方面,提供了一种机器学习芯片,所述机器学习芯片包括上述第二方面所述的机器学习络运算装置或上述第三方面所述的组合处理装置。

根据本公开的第五方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述第四方面所述的机器学习芯片。

根据本公开的第六方面,提供了一种板卡,该板卡包括上述第五方面所述的机器学习芯片封装结构。

根据本公开的第七方面,提供了一种电子设备,所述电子设备包括上述第四方面所述的机器学习芯片或上述第六方面所述的板卡。

根据本公开的第八方面,提供了一种指令处理方法,所述方法包括:

对编译后的数据迁移指令进行解析,得到所述数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获得待迁移数据的源操作数信息、所述目标操作数以及迁移参数;其中,所述操作域包括所述源操作数信息、所述目标操作数和所述迁移参数,所述迁移参数包括数据迁移方向和迁移循环参数;

根据所述迁移循环参数,至少执行一次数据迁移操作,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数信息,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。

根据本公开的第九方面,提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序被一个或多个处理器执行,实现上述的指令处理方法的步骤。

本公开实施例所提供的指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块可以对编译后的数据迁移指令进行解析,得到数据迁移指令的操作码和操作域,并根据操作码和操作域获得待迁移数据的源操作数信息、目标操作数以及迁移参数;处理模块可以根据所述迁移循环参数,至少执行一次数据迁移操作,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数信息,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。本公开实施例所提供的指令处理方法、装置及相关产品的适用范围广,通过设置包含迁移方向及迁移循环参数等迁移参数,能够简化数据迁移指令的处理过程,从而提高数据迁移指令的处理效率及处理速度。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1示出本公开一实施例的指令处理装置的框图;

图2示出本公开一实施例的指令处理装置中的存储模块框图;

图3示出本公开一实施例的指令处理装置的框图;

图4a-图4e示出本公开另一实施例的指令处理装置的框图;

图5a、图5b示出本公开一实施例的组合处理装置的框图;

图6示出本公开一实施例的板卡的结构示意图;

图7示出本公开一实施例的指令处理方法的流程图;

图8使出本公开另一实施例的指令处理方法的流程图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

随着神经网络等算法的复杂度越来越高,其涉及的数据量也越来越大。当数据在不同的存储空间进行迁移时,往往是通过一条指令确定数据的源地址和目标地址,从而装置可以根据其获取的指令,将数据从源地址对应的存储空间搬运至目标地址的存储空间。但在数据量较大、装置的存储层次较多的情况下,以上这种数据迁移方式的效率较低。基于此,本申请提供了一种用于实现数据迁移的数据迁移指令以及用于执行该数据迁移指令的指令处理装置。

如图1和图2所示,该指令处理装置可以用于执行数据迁移指令等多种指令。其中,数据迁移指令可以用于将数据从某一存储空间搬运至另一存储空间。该两个不同的存储空间可以是位于同一存储器中的不同地址对应的存储空间,也可以是位于不同存储器中的存储空间。可选地,该数据迁移指令可以包括操作码和操作域,该操作码可以用来表示指令用于执行何种操作,本申请实施例中,数据迁移指令的操作码可以用于指示该数据迁移指令是用以实现数据迁移功能,该操作域可以用来说明该指令作用的对象信息,具体地,该数据迁移指令的操作域可以用来指示待迁移数据的相关信息。例如,该操作域可以包括源操作数信息、目标操作数和迁移参数等信息。其中,迁移参数可以包括数据迁移方向和迁移循环参数等迁移过程中涉及的相关参数。通过上述的操作域设置,可以简化装置对数据迁移指令的处理过程,从而提高数据迁移的效率和速度。

可选地,该操作域可以占用至少一个操作数,本申请实施例中,操作域可以占用三个以上的操作数。其中,源操作数信息可以占用至少一个操作数,目标操作数可以占用至少一个操作数,迁移参数也可以占用至少一个操作数。

进一步可选地,该源操作数信息可以占用两个操作数,其中一个操作数用以表示待迁移数据的源地址,该待迁移数据的源地址可以是该待迁移数据的所占用的初始存储空间对应的起始地址。该源操作数信息的另一个操作数可以用于表示该待迁移数据的数据迁移量,该数据迁移量可以采用字节(bytes)进行计算,例如,该数据迁移量可以是64字节,该数据迁移量还可以是128字节。具体的数据迁移量可以根据待迁移数据的存储空间位置等具体场景进行确定,此处仅以举例说明,并不做具体限定。

可选地,目标操作数可以占用一个操作数,该目标操作数可以是指待迁移数据的目标地址。进一步可选地,该目标地址可以是该待迁移数据的所需占用的目标存储空间对应的起始地址。

在其他可选的实施例中,该源操作数信息可以占用两个以上的操作数,例如,该待迁移数据的源地址可以是多个,相应的,该目标地址也可以为多个,从而可以通过上述的数据迁移指令实现多个地址区间内的数据的迁移。

可选地,该迁移参数可以用于表示数据迁移过程所涉及的其他参数信息,通过设置上述迁移参数可以提高数据迁移的效率。可选地,该迁移参数可以占用一个操作数,用于表示数据存储空间变化趋势的数据迁移方向,该数据迁移方向指的是待迁移数据的初始存储空间到目标存储空间的方向。可选地,该数据迁移方向可以采用待迁移数据的初始存储空间和目标存储空间的名称或标识进行表示,例如,初始存储空间可以标记为space1,目标存储空间可以标记为space2,该迁移方向可以表示为space1tospace2。当然,该数据迁移方向还可以采用预设字符进行表示,不同的数据迁移方向可以采用的字符。

进一步地,该迁移循环参数可以包括待迁移数据数量、源地址偏移量、目标地址偏移量,该迁移参数还可以占用四个操作数:数据迁移方向、待迁移数据数量、源地址偏移量、目标地址偏移量等迁移参数。此时,指令处理装置可以根据迁移循环参数重复执行至少一次数据迁移操作(即将待迁移数据从初始存储空间搬运至目标存储空间的操作),从而实现数据的迁移。通过设置上述迁移循环参数,可以通过一条数据迁移指令实现多次数据迁移操作,用户无需针对类似的数据迁移操作编写多条指令,从而指令处理装置无需重复对多条指令进行重复编译及执行,从而简化了指令处理装置的处理过程,提高了数据迁移的效率及速度。关于迁移参数在指令实现过程中的具体应用可参见下文的描述。应当理解的是,本领域技术人员可以根据需要对数据迁移指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。

如图1和图2所示,该指令处理装置可以包括控制模块11、处理模块12和存储模块13。可选地,控制模块11和处理模块12可以集成于同一处理器中,存储模块13可以包括片上存储和片外存储。其中,置于处理器上的存储器称为片上存储,置于处理器外部的存储器称为片外存储。

可选地,上述的处理器可以是人工智能处理器,该人工智能处理器相较于现有的cpu或gpu等具有完全不同的体系结构。具体地,该人工智能处理器的处理模块12可以包括运算电路,该运算电路可以包括至少一个计算核(计算核11~1q,计算核21~2q,计算核p1~pq),如图2所示,一个以上的计算核可以形成一个运算核心簇(cluster)。其中,计算核可以为装置中用于实现计算的基本元件,该计算核可以包括至少一个片上存储以及用于进行数据运算的运算单元或模块等。本申请实施例中,计算核还可以用于实现上述的数据迁移指令。每个计算核的具体电路结构以及控制模块11的具体结构可参见下文中的描述。

具体地,如图2所示,存储模块13可以与处理器连接,存储模块13可以用于存储待迁移数据等。存储模块13的片上存储可以包括第一片上存储、第二片上存储,片外存储可以包括最后一级缓存(llc,last-levelcache)、通用存储器和私有存储器等等。该片外存储可以是ddr(doubledataratesdram,双倍速率sdram)。可选地,每个计算核上可以设置有该计算核私有的第一片上存储和第二片上存储。可选地,该第一片上存储可以是用于存储标量数据或向量数据的神经元存储器,该神经元存储器可以是随机存取存储器,简记为nram(neuralrandomaccessmemory)。该第二片上存储可以是用于存储向量数据的权值存储器,该权值存储器可以是随机存取存储器,简记为wram(weightrandomaccessmemory)。片外存储ddr的一部分存储空间作为通用存储器,通用存储器可以是各个计算核共用的存储器,该通用存储器可以简记为gdram。该ddr的另一部分存储空间可以作为各个计算核可以私有的存储器,计算核私有的存储器可以简记为ldram。

其中,控制模块11用于对编译后的数据迁移指令进行解析,得到数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获得待迁移数据的源操作数信息、所述目标操作数以及迁移参数。其中,所述操作码能够指示所述数据迁移指令用于迁移所述待迁移数据,所述操作域包括源操作数信息、所述目标操作数和所述迁移参数,所述迁移参数可以包括数据迁移方向和迁移循环参数,数据迁移方向用于表征待迁移数据从初始存储空间到目标存储空间的方向,迁移循环参数用于表征数据迁移操作的数据迁移次数及循环实现方式等参数。处理模块12用于根据所述迁移循环参数,至少执行一次数据迁移操作,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数信息,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。进一步地,处理模块12可以根据迁移循环参数确定数据迁移次数,处理模块可以至少执行一次数据迁移操作,直至数据迁移次数满足预设条件。

本申请实施例中,指令处理装置可以通过对一条数据迁移指令进行编译及执行,实现至少一次数据迁移操作,用户无需针对类似的数据迁移操作编写多条指令,从而指令处理装置无需重复对多条指令进行重复编译及执行,从而简化了指令处理装置的处理过程,提高了数据迁移的效率及速度。

可选地,源操作数信息可以包括待迁移数据的源地址,目标操作数可以包括目标操作数的地址。待迁移数据的源地址对应的初始存储空间和目标操作数对应的目标存储空间可以是上述的nram、wram、gdram、ldram、寄存器等用于存储数据的空间。待迁移数据可以在上述的各个存储空间之间进行迁移,也就是说,上述的数据迁移方向可以指初始存储空间到目标存储空间的方向。

可选地,nram中的数据可以从其上的一部分存储空间迁移至同一nram上的另一存储空间,即实现从nram到nram的迁移。可选地,nram与ldram之间可以进行数据通信,nram中的数据可以迁移至相应计算核对应的ldram上,相应的,ldram中的数据也可以迁移至相应计算核对应的nram上。可选地,nram与gdram之间可以进行数据通信,nram中的数据可以迁移至相应计算核对应的gdram上,相应的,gdram中的数据也可以迁移至相应计算核对应的nram上。可选地,同一计算核上设置的nram和wram之间也可以进行数据迁移,这样,当wram不能直接与gdram和ldram进行数据交互时,可以通过nram作为中介实现wram与片外存储gdram或ldram的数据交互。也就是说,上述数据迁移方向可以包括以下至少一种:

将所述待迁移数据从gdram搬运至nram;

将所述待迁移数据从nram搬运至gdram;

将所述待迁移数据从nram搬运至nram所在计算核对应的ldram;

将所述待迁移数据从ldram搬运至ldram对应的计算核上的nram;

将所述待迁移数据从nram的第一存储空间搬运至所述nram的第二存储空间;

将待迁移数据从nram搬运至同一计算核上的wram;

将待迁移数据从wram搬运至同一计算核上的nram。

进一步可选地,当张量数据在nram和nram、ldram或gdram之间进行迁移时,该数据的大小可以是按照字节(bytes)计算的,例如,张量数据在nram和ldram或gdram之间迁移的数据的大小是32字节的整数倍,当然,张量数据在nram和ldram或gdram之间迁移的数据还可以是8字节、16字节或64字节的整数倍等,此处仅以举例说明,不做具体限定。再如,张量数据在同一nram上迁移的数据的大小可以是128字节的整数倍,当然,张量数据在同一nram上迁移的数据的大小还可以是32字节或64字节的整数倍等,此处仅以举例说明,不做具体限定。当标量数据在nram和nram、ldram或gdram之间进行迁移时,该数据的大小也可以是按照字节(bytes)计算的,该标量数据的大小为2字节的整数倍即可。

可选地,wram与ldram之间也可以进行数据通信,wram中的数据可以迁移至相应计算核对应的ldram上,相应的,ldram中的数据也可以迁移至相应计算核对应的wram上。进一步可选地,当数据在wram和ldram或gdram之间进行迁移时,该数据的大小可以是按照字节(bytes)计算的,例如,在wram和ldram或gdram之间迁移的数据的大小是512字节的整数倍,当然,在nram和ldram或gdram之间迁移的数据还可以是8字节、16字节、32字节、64字节或128字节的整数倍等,此处仅以举例说明,不做具体限定。上述的数据迁移方向还可以包括以下至少一种:

将所述待迁移数据从wram搬运至gdram;

将所述待迁移数据从gdram搬运至wram;

将所述待迁移数据从wram搬运至wram所在计算核对应的ldram;

将所述待迁移数据从ldram搬运至ldram对应的计算核上的wram。

进一步可选地,该存储模块13还可以包括寄存器,每个计算核上可以设置有寄存器,该寄存器可以与上述的nram、wram、gdram或ldram等进行数据交互。上述数据迁移方向还可以包括:

将待迁移数据从gdram搬运至对应寄存器上;

将待迁移数据从寄存器搬运至gdram上;

将待迁移数据从寄存器搬运至寄存器所在计算核对应的ldram上;

将待迁移数据从ldram搬运至该ldram对应的计算核上的寄存器中;

将待迁移数据从寄存器搬运至寄存器所在计算核对应的nram上;

将待迁移数据从nram搬运至该nram对应的计算核上的寄存器中。

可选地,上述的数据迁移方向指的是待迁移数据的迁移路径的方向,该迁移路径的方向可以通过初始存储空间所属的存储器和目标存储空间所属的存储器进行表征。例如,上述数据迁移方向可以表示为:nramtoldram,ldramtonram,nramtogdram,gdramtonram等等,此处不再一一举例。进一步可选地,各个存储空间都可以采用与其对应的标识进行标记,这样,上述的数据迁移方向即可采用存储空间的标识进行表征。应当清楚的是,上述实施例中仅仅是以举例的方式说明数据迁移方向,并未穷举所有可能的形式,在不脱离本申请发明构思的情况下,其他可能的数据迁移方向仍然属于本申请的保护范围。

可选地,处理模块12还可以根据迁移方向进一步确定待迁移数据的迁移类型。迁移类型可以用于指示初始存储空间的向量数据存储速度、目标存储空间的向量数据存储速度、以及二者存储速度的快慢关系。在数据迁移指令中,可以为不同的目标存储空间与初始存储空间之间的存储速度快慢关系,设置不同的代码,进行存储速度快慢的区分。比如,迁移类型为“初始存储空间的存储速度大于目标存储空间的存储速度”的代码设置为“st”。迁移类型为“初始存储空间的存储速度等于目标存储空间的存储速度”的代码设置为“mv”。迁移类型为“初始存储空间的存储速度小于目标存储空间的存储速度”的代码设置为“ld”。本领域技术人员可以根据实际需要对迁移类型以及迁移类型的代码进行设置,本公开对此不作限制。

可选地,如图3所示,处理模块12可以包括数据访存电路126,该数据访存电路126用于执行数据迁移操作。具体地,数据访存电路126具体用于根据所述待迁移数据的源地址和所述数据迁移量,确定所述待迁移数据,并按照所述数据迁移方向,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中,以实现一次数据迁移操作。其中,该待迁移数据的源地址也可以是该待迁移数据的所占用的初始存储空间对应的起始地址。该目标操作数也可以是该待迁移数据的所需占用的目标存储空间对应的起始地址。具体地,数据访存电路126可以根据该待迁移数据的初始存储空间的起始地址以及数据迁移量,确定该待迁移数据,按照所述数据迁移方向,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。

例如,该待迁移数据的初始存储空间是指0~128的地址区间,数据迁移量为64字节,数据访存电路可以将该地址区间[0,128]的首地址和数据迁移量确定待迁移数据,例如,将该地址区间[0,64]中的数据作为待迁移数据,并按照数据迁移方向将该待迁移数据搬运至目标操作数对应的目标存储空间。

可选地,该数据迁移量的大小可以根据数据迁移方向进行确定,不同的数据迁移方向,数据迁移量的大小可以不同。例如,当数据迁移方向为nram到同一nram时,该数据迁移量可以是128字节的整数倍;当该数据迁移方向为nram到ldram时,该数据迁移量可以是32字节的整数倍。当然,在其他实施例中,该数据迁移量的大小也可以是预设的默认值。

可选地,上述数据迁移指令的操作域中还可以包含上述的数据迁移量,在操作域中不包含数据迁移量时,可以将默认数据迁移量确定为当前数据迁移指令的数据迁移量,进而从待迁移数据地址中获取对应数据迁移量的待迁移数据。

进一步地,处理模块12可以根据迁移循环参数,实现至少一次数据迁移操作。具体地,所述迁移参数还包括待迁移数据数量、源地址偏移量和目标地址偏移量等迁移循环参数;所述源操作数信息包括所述待迁移数据的源地址。

可选地,如图3所示,处理模块12可以包括计数器125、地址偏移电路128以及上述的数据访存电路126。进一步的,该处理模块还包括运算电路127,该运算电路可以包括至少一个计算核,该计算核的具体结构可参见下文的描述。

其中,计数器125用于根据所述待迁移数据数量确定数据迁移次数,其中,所述数据迁移次数为正整数;其中,待迁移数据数量可以是用户根据实际需要输入的。当然,该待迁移数据数量还可以是处理模块12根据待切分数据的数据量大小以及目标操作数对应的存储空间大小等信息自动确定的。本申请实施例中的具体的数据切分方式可以是用户根据需要确定的。具体地,该数据迁移次数可以等于待迁移数据数量与预设数值之和,例如,该数据迁移次数等于待迁移数据数量与预设数值1之和。进一步地,计数器125还可以根据数据迁移操作更新数据迁移次数,例如,计数器125可以从0开始累加至上述计算获得的数据迁移次数,计数器125还可以从上述计算获得的数据迁移次数递减至0。

进一步地,当计数器125确定所述数据迁移次数大于1时,处理模块12可以通过重复多次数据迁移操作,以实现待迁移数据的搬运。具体地,地址偏移电路128用于在每确定一次所述数据迁移操作的待迁移数据之后,根据所述待迁移数据的源地址和所述源地址偏移量,更新所述待迁移数据的源地址,获得更新后的源地址;根据所述目标地址和所述目标地址偏移量,更新所述目标地址,获得更新后的目标地址。也就是说,在数据访存电路126完成一次数据迁移操作或数据访存电路126确定当前数据迁移操作所需的待迁移数据时,地址偏移电路128可以根据所述待迁移数据的源地址和所述源地址偏移量,更新所述待迁移数据的源地址,获得更新后的源地址;根据所述目标操作数和所述目标地址偏移量,更新所述目标地址,获得更新后的目标地址。数据访存电路126用于更新后的源地址和所述更新后的目标地址执行所述数据迁移操作,直至所述计数器125控制的所述数据迁移次数满足预设条件(预设条件可以是计数器125从0开始累加至上述计算获得的数据迁移次数,还可以是计数器125从上述计算获得的数据迁移次数递减至0)。可选地,源地址偏移量和目标地址偏移量可以采用字节表示,上述的源地址偏移量和目标地址偏移量可以是32的整数倍。源地址偏移量大于或等于所述数据迁移量,所述目标地址偏移量大于或等于所述数据迁移量。

例如,所述迁移参数中的待迁移数据数量为2、源地址偏移量为64字节和目标地址偏移量也为64字节,该待迁移数据的初始存储空间是指0~128的地址区间,待迁移数据的目标存储空间可以是指256~512的地址区间,数据迁移量为64字节,数据迁移方向为nramtogdram。

计数器125可以根据所述待迁移数据数量确定数据迁移次数为3次(待迁移次数=待迁移数据数量+1)。数据访存电路126可以根据初始存储空间的地址区间[0,128]的首地址和数据迁移量确定第一次需要的待迁移数据,如计数器125将该地址区间[0,64]中的数据作为待迁移数据,并按照数据迁移方向nramtogdram,将该nram上的待迁移数据搬运至gdram上对应的目标存储空间[256,320]。之后,数据访存电路126在确定上述数据迁移操作之后(例如,数据访存电路126在完成上述数据迁移操作之后),地址偏移电路128可以根据源地址偏移量和当前源地址更新源地址,更新后的源地址可以等于当前源地址与源地址偏移量之和,更新后的源地址可以为64。同理,地址偏移电路128可以根据目标地址偏移量和当前目标操作数更新目标操作数,更新后的目标操作数可以等于当前目标操作数与目标地址偏移量之和,更新后的目标操作数可以为[320,384]。然后,数据访存电路126根据更新后的源地址以及数据迁移量,将地址区间[64,128]中的数据作为待第二次需要的迁移数据,并按照数据迁移方向nramtogdram,将nram上的待迁移数据搬运至更新后的gdram上对应的目标存储空间中[320,384]。如此往复执行,直至数据迁移次数递减为0,或直至数据迁移次数从0累加至预设次数。

可选地,处理模块12还可以根据数据迁移方向确定是否使用迁移循环参数中的源地址偏移量和目标地址偏移量。例如,待迁移数据在nram和gdram或ldram进行迁移时,可以通过采用上述的源地址偏移量和目标地址偏移量实现数据迁移操作。可选地,待迁移数据在nram和gdram或ldram进行迁移时,源地址所对应的初始存储空间和目标操作数对应的目标存储空间的大小为32字节的整数倍。

可选地,上述的待迁移数据可以是标量数据,标量数据是指只有数值大小,没有方向的数据。可选地,上述的待迁移数据也可以是张量数据或向量数据等。该张量数据或向量数据可以是神经网络数据,如神经网络的神经元数据或权值数据等等。张量数据是指0维以上的数据,其可以具有多个维度。特别的,0维张量数据即为标量数据,1维张量数据即为向量数据,2维张量数据可以为矩阵数据等。

以下举例说明本申请实施例的数据迁移指令的实现方式:

memcopydst,src,bytes,direct,dststride,srcstride,numofsection

其中,memcopy是数据迁移指令的操作码,dst,src,bytes,direct,dststride,srcstride,numofsection是数据迁移指令的操作域。其中,dst是目标操作数,待迁移数据数据信息包括待迁移数据的源地址src以及数据迁移量bytes。迁移参数包括数据迁移方向direct,源地址偏移量dststride,目标地址偏移量srcstride,以及待迁移数据数量numofsection,其中,源地址偏移量dststride,目标地址偏移量srcstride,以及待迁移数据数量numofsection为非零常数。

本公开实施例所提供的指令处理方法、装置及相关产品,该装置包括控制模块11和处理模块12。控制模块11用于对编译后的数据迁移指令(硬件指令)进行解析,得到数据迁移指令的操作码和操作域,并根据操作码和操作域获得待迁移数据的源操作数信息、目标操作数以及迁移参数;处理模块12用于根据所述迁移循环参数,至少执行一次数据迁移操作,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数信息,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。本公开实施例所提供的指令处理方法、装置及相关产品的适用范围广,通过设置包含迁移方向及迁移循环参数等迁移参数,能够简化数据迁移指令的处理过程,从而提高数据迁移指令的处理效率及处理速度。

在另一种实施例中,上述的指令处理装置还可以对未编译的软件指令进行编译和解析,并根据该软件指令执行数据迁移操作。具体地,该指令处理装置还可以包括编译器,所述编译器用于对所述数据迁移指令进行编译,得到编译后的数据迁移指令。编译器可以将该数据迁移指令翻译为中间代码指令,并对该中间代码指令进行汇编获得机器能够执行的二进制指令,该编译后的数据迁移指令可以是指二进制指令。可选地,该编译器可以与上述的控制模块和处理模块分离设置,控制模块和处理模块集成在同一人工智能处理器上,编译器运行在与该人工智能处理器连接的通用处理器上(例如,cpu)。

进一步地,当需要对标量数据进行运算时,所述编译器还用于在所述数据迁移指令中自动插入预存取指令。控制模块可以对该新的数据迁移指令和预存取指令进行解析,所述数据存取电路还用于根据所述数据预存取指令执行预存取操作,所述预存取操作用于所述计算核上的寄存器与所述计算核上的第一片上存储、所述通用存储器或所述计算核对应的私有存储器之间的数据存取。

本申请实施例中需在寄存器上对标量数据进行运算,因此,当需要对标量数据进行运算时,需要将nram、ldram或gdram上的标量数据搬运至寄存器上。此时,编译器可以自动生成预存取指令(如load指令),以通过数据存取电路实现将数据从nram、ldram或gdram上搬运至寄存器上的预存取操作。当完成该标量数据的运算之后,编译器还可以自动生成预存取指令(如store指令),以通过数据存取电路实现将数据从寄存器搬运至nram、ldram或gdram上的预存取操作。

可选地,上述编译器可以是人工智能处理器对应的编译器,用于对该人工智能处理器上执行的指令(如上述的数据迁移指令)进行编译。具体地,本申请实施例中,可以采用类c语言等高级语言编写数据迁移函数,在需要进行数据迁移操作时,可以调用该数据迁移函数。此时,编译器可以对该数据迁移函数调用指令进行编译,获得编译后的数据迁移指令。

在一种可能的实现方式中,如图4a-图4e所示,控制模块11可以包括指令存储子模块111、指令处理子模块112和队列存储子模块113。其中,指令存储子模块111用于存储编译后的数据迁移指令。指令处理子模块112用于对编译后的数据迁移指令进行解析,得到数据迁移指令的操作码和操作域。可选地,该指令处理子模块112可以是译码器等。队列存储子模块113用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括编译后的数据迁移指令。在该实现方式中,待执行指令还可以包括与向量数据迁移相关或无关的计算指令,本公开对此不作限制。可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。

在一种可能的实现方式中,如图4a-图4e所示,控制模块11可以包括依赖关系处理子模块114。依赖关系处理子模块114,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块111中,在第零待执行指令执行完毕后,从指令存储子模块111中提取第一待执行指令发送至处理模块12。其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第一待执行指令之前的第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。

通过这种方式,可以根据第一待执行指令与第一待执行指令之前的第零待执行指令之间的依赖关系,使得在先的第零待执行指令执行完毕之后,再执行在后的第一待执行指令,保证结果的准确性。

在本实施例中,控制模块所获取到的数据迁移指令为未编译的、不能直接供硬件执行的软件指令,控制模块需先对数据迁移指令(未编译)进行编译。在得到编译后的数据迁移指令之后,才能对编译后的数据迁移指令进行解析。编译后的数据迁移指令为能够直接供硬件执行的硬件指令。控制模块可以从待迁移数据地址中获取待迁移数据。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据i/o接口或i/o引脚。

在一个可选的实施例中,每个计算核可以包括主处理子模块和多个从处理子模块。如图4a所示,处理模块12可以包括主处理子模块121和多个从处理子模块122。控制模块11,还用于解析编译后的指令得到多个运算指令,并将数据以及多个运算指令发送至主处理子模块121。主处理子模块121用于对数据执行前序处理,以及与多个从处理子模块122进行数据以及多个运算指令的传输。多个从处理子模块122,用于根据从主处理子模块121传输的数据和运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主处理子模块121。主处理运算子模块121还用于对多个中间结果执行后续处理,得到处理后的数据。

需要说明的是,本领域技术人员可以根据实际需要对主处理子模块和多个从处理子模块之间的连接方式进行设置,以实现对处理模块的架构设置,例如,处理模块的架构可以是“h”型架构、阵列型架构、树型架构等,本公开对此不作限制。

图4b示出根据本公开一实施例的数据迁移指令处理装置的框图。在一种可能的实现方式中,如图4b所示,处理模块12还可以包括一个或多个分支处理子模块123,该分支处理子模块123用于转发主处理子模块121和从处理子模块122之间的数据和/或运算指令。其中,主处理子模块121与一个或多个分支处理子模块123连接。这样,处理模块中的主处理子模块、分支处理子模块和从处理子模块之间采用“h”型架构连接,通过分支处理子模块转发数据和/或运算指令,节省了对主处理子模块的资源占用,进而提高指令的处理速度。

图4c示出根据本公开一实施例的数据迁移指令处理装置的框图。在一种可能的实现方式中,如图4c所示,多个从处理子模块122呈阵列分布。每个从处理子模块122与相邻的其他从处理子模块122连接,主处理子模块121连接多个从处理子模块122中的k个从处理子模块122,k个从处理子模块122为:第1行的n个从处理子模块122、第m行的n个从处理子模块122以及第1列的m个从处理子模块122。

其中,如图4c所示,k个从处理子模块仅包括第1行的n个从处理子模块、第m行的n个从处理子模块以及第1列的m个从处理子模块,即该k个从处理子模块为多个从处理子模块中直接与主处理子模块连接的从处理子模块。其中,k个从处理子模块,用于在主处理子模块以及多个从处理子模块之间的数据以及指令的转发。这样,多个从处理子模块呈阵列分布,可以提高主处理子模块向从处理子模块发送数据和/或运算指令速度,进而提高指令的处理速度。

图4d示出根据本公开一实施例的数据迁移指令处理装置的框图。在一种可能的实现方式中,如图4d所示,处理模块还可以包括树型子模块124。该树型子模块124包括一个根端口401和多个支端口402。根端口401与主处理子模块121连接,多个支端口402与多个从处理子模块122分别连接。其中,树型子模块124具有收发功能,用于转发主处理子模块121和从处理子模块122之间的数据和/或运算指令。这样,通过树型子模块的作用使得处理模块呈树型架构连接,并利用树型子模块的转发功能,可以提高主处理子模块向从处理子模块发送数据和/或运算指令速度,进而提高指令的处理速度。

在一种可能的实现方式中,树型子模块124可以为该装置的可选结果,其可以包括至少一层节点。节点为具有转发功能的线结构,节点本身不具备运算功能。最下层的节点与从处理子模块连接,以转发主处理子模块121和从处理子模块122之间的数据和/或运算指令。特殊地,如树型子模块具有零层节点,该装置则无需树型子模块。

在一种可能的实现方式中,树型子模块124可以包括n叉树结构的多个节点,n叉树结构的多个节点可以具有多个层。举例来说,图4e示出根据本公开一实施例的指令处理装置的框图。如图4e所示,n叉树结构可以是二叉树结构,树型子模块包括2层节点01。最下层节点01与从处理子模块122连接,以转发主处理子模块121和从处理子模块122之间的数据和/或运算指令。在该实现方式中,n叉树结构还可以是三叉树结构等,n为大于或等于2的正整数。本领域技术人员可以根据需要对n叉树结构中的n以及n叉树结构中节点的层数进行设置,本公开对此不作限制。

本公开提供一种机器学习运算装置,该机器学习运算装置可以包括一个或多个上述数据迁移指令处理装置,用于从其他处理装置中获取待迁移数据和控制信息,执行指定的机器学习运算。该机器学习运算装置可以从其他机器学习运算装置或非机器学习运算装置中获得数据迁移指令,并将执行结果通过i/o接口传递给外围设备(也可称其他处理装置)。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上数据迁移指令处理装置时,数据迁移指令处理装置间可以通过特定的结构进行链接并传输数据,譬如,通过pcie总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。

该机器学习运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。

图5a示出根据本公开一实施例的组合处理装置的框图。如图4a所示,该组合处理装置包括上述机器学习运算装置、通用互联接口和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。

其他处理装置包括中央处理器cpu、图形处理器gpu、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。

通用互联接口用于在机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。

图5b示出根据本公开一实施例的组合处理装置的框图。在一种可能的实现方式中,如图5b所示,该组合处理装置还可以包括存储装置,存储装置分别与机器学习运算装置和所述其他处理装置连接。存储装置用于保存在机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。

该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。

本公开提供一种机器学习芯片,该芯片包括上述机器学习运算装置或组合处理装置。

本公开提供一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。

本公开提供一种板卡,图6示出根据本公开一实施例的板卡的结构示意图。如图6所示,该板卡包括上述机器学习芯片封装结构或者上述机器学习芯片。板卡除了包括机器学习芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392。

存储器件390与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)通过总线连接,用于存储数据。存储器件390可以包括多组存储单元393。每一组存储单元393与机器学习芯片389通过总线连接。可以理解,每一组存储单元393可以是ddrsdram(英文:doubledataratesdram,双倍速率同步动态随机存储器)。ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。

在一个实施例中,存储器件390可以包括4组存储单元393。每一组存储单元393可以包括多个ddr4颗粒(芯片)。在一个实施例中,机器学习芯片389内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组存储单元393中采用ddr4-3200颗粒时,数据传输的理论带宽可达到25600mb/s。

在一个实施例中,每一组存储单元393包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在机器学习芯片389中设置控制ddr的控制器,用于对每个存储单元393的数据传输与数据存储的控制。

接口装置391与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)电连接。接口装置391用于实现机器学习芯片389与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置391可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至机器学习芯片289,实现数据转移。优选的,当采用pcie3.0x16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,接口装置391还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,接口装置能够实现转接功能即可。另外,机器学习芯片的计算结果仍由接口装置传送回外部设备(例如服务器)。

控制器件392与机器学习芯片389电连接。控制器件392用于对机器学习芯片389的状态进行监控。具体的,机器学习芯片389与控制器件392可以通过spi接口电连接。控制器件392可以包括单片机(microcontrollerunit,mcu)。如机器学习芯片389可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,机器学习芯片389可以处于多负载和轻负载等不同的工作状态。通过控制器件可以实现对机器学习芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。

本公开提供一种电子设备,该电子设备包括上述机器学习芯片或板卡。

电子设备可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

交通工具可以包括飞机、轮船和/或车辆。家用电器可以包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机。医疗设备可以包括核磁共振仪、b超仪和/或心电图仪。

在本公开所提供的实施例中,应该理解到,所揭露的系统、装置,可通过其它的方式实现。例如,以上所描述的系统、装置实施例仅仅是示意性的,例如设备、装置、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备、装置或模块的间接耦合或通信连接,可以是电性或其它的形式。

作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

图7示出根据本公开一实施例的数据迁移指令处理方法的流程图。如图7所示,该方法可以应用于上述数据迁移指令处理装置。上述指令处理方法包括如下操作:

s700、对编译后的数据迁移指令进行解析,得到所述数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获得待迁移数据的源操作数信息、所述目标操作数以及迁移参数;其中,所述操作域包括所述源操作数信息、所述目标操作数和所述迁移参数,所述迁移参数包括数据迁移方向和迁移循环参数;

s710、根据所述迁移循环参数,至少执行一次数据迁移操作,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数信息,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。

可选地,所述源操作数信息还包括所述待迁移数据的源地址和待迁移数据的数据迁移量;上述数据迁移操作包括:

根据所述待迁移数据的源地址和所述数据迁移量,确定所述待迁移数据;

按照所述数据迁移方向,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。

可选地,所述方法用于指令存储装置中,该装置还包括存储模块,所述存储模块包括第一片上存储和第二片上存储、通用存储器和所述处理模块的各个计算核对应的私有存储器;

所述待迁移数据的源地址对应的初始存储空间和所述目标操作数对应的目标存储空间为所述第一片上存储、所述第二片上存储、所述通用存储器或所述计算核对应的私有存储器中的至少一种;所述数据迁移方向包括所述初始存储空间到所述目标存储空间的方向。

可选地,所述数据迁移方向包括以下至少一种:

将所述待迁移数据从所述通用存储器搬运至所述第一片上存储或所述第二片上存储;

将所述待迁移数据从所述第一片上存储或所述第二片上存储搬运至所述通用存储器;

将所述待迁移数据从所述计算核的所述第一片上存储或所述第二片上存储搬运至所述计算核对应的私有存储器;

将所述待迁移数据从所述计算核对应的私有存储器搬运至所述计算核上的所述第一片上存储或所述第二片上存储;

将所述待迁移数据从第一片上存储的第一存储空间搬运至所述第一片上存储的第二存储空间;

将所述待迁移数据从所述第一片上存储搬运至所述第二片上存储;

将所述待迁移数据从所述第二片上存储搬运至所述第一片上存储。

可选地,所述存储模块还包括寄存器,所述数据迁移方向还包括:

将所述待迁移数据从所述通用存储器搬运至对应寄存器上;

将所述待迁移数据从所述寄存器搬运至对应的通用存储器上;

将所述待迁移数据从寄存器搬运至寄存器所在计算核对应的私有存储器上;

将所述待迁移数据从计算核对应的私有存储器搬运至所述计算核对应的寄存器中;

将所述待迁移数据从寄存器搬运至寄存器所在计算核对应的第一片上存储上;

将所述待迁移数据从所述第一片上存储搬运至所述第一片上存储对应的计算核上的寄存器中。

可选地,所述迁移循环参数还包括待迁移数据数量、源地址偏移量和目标地址偏移量;所述源操作数信息包括所述待迁移数据的源地址,所述目标操作数包括所述待迁移数据的目标地址;如图8所示,上述步骤s710中,所述根据所述迁移循环参数,至少执行一次数据迁移操作,包括:

s711、根据所述待迁移数据数量确定数据迁移次数,其中,所述数据迁移次数为正整数;

s712、在每确定一次所述数据迁移操作的待迁移数据之后,根据所述待迁移数据的源地址和所述源地址偏移量,更新所述待迁移数据的源地址,获得更新后的源地址;根据所述目标地址和所述目标地址偏移量,更新所述目标地址,获得更新后的目标地址;

s713、根据更新后的源地址和所述更新后的目标地址执行所述数据迁移操作;

s714、确定数据迁移次数是否满足预设条件,若该数据迁移次数满足预设条件,则表明完成该数据迁移指令的执行过程。若该数据迁移次数不满足预设条件,则返回上述步骤s712,并重复执行步骤s712~s714,直至所述计数器控制的所述数据迁移次数满足预设条件。

可选地,所述源操作数信息还包括数据迁移量;

所述源地址偏移量大于或等于所述数据迁移量,所述目标地址偏移量大于或等于所述数据迁移量。

可选地,所述待迁移数据为标量数据或张量数据。

上述方法实施例中各个步骤的具体实现与上述装置中的步骤的实现过程基本一致。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

需要说明的是,尽管以上述实施例作为示例介绍了指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

在一个实施例中,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质中设置存储有计算机程序,该计算机程序被一个或多个处理器执行时,具体实现上述方法中的步骤。具体地,该计算机程序被一个或多个处理器执行时,具体实现如下步骤:

对编译后的数据迁移指令进行解析,得到所述数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获得待迁移数据的源操作数信息、所述目标操作数以及迁移参数;其中,所述操作域包括所述源操作数信息、所述目标操作数和所述迁移参数,所述迁移参数包括数据迁移方向和迁移循环参数;

根据所述迁移循环参数,至少执行一次数据迁移操作,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数信息,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。

上述实施例中各个步骤的具体实现与上述方法中的步骤的实现过程基本一致。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

根据以下条款可以更好地理解前述内容:

条款1:一种指令处理装置,所述装置包括:

控制模块,用于对编译后的数据迁移指令进行解析,得到所述数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获得待迁移数据的源操作数信息、目标操作数以及迁移参数;其中,所述操作域包括所述源操作数信息、所述目标操作数和所述迁移参数,所述迁移参数包括数据迁移方向和迁移循环参数;以及

处理模块,用于根据所述迁移循环参数,至少执行一次数据迁移操作,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数信息,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。

条款2:根据权利要求1所述的装置,所述源操作数信息还包括所述待迁移数据的源

地址和待迁移数据的数据迁移量;所述数据访存电路用于:

根据所述待迁移数据的源地址和所述数据迁移量,确定所述待迁移数据;

按照所述数据迁移方向,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。

条款3:根据权利要求1或2所述的装置,所述装置还包括存储模块,所述存储模块包括第一片上存储和第二片上存储、通用存储器和所述处理模块的各个计算核对应的私有存储器;

所述待迁移数据的源地址对应的初始存储空间和所述目标操作数对应的目标存储空间为所述第一片上存储、所述第二片上存储、所述通用存储器或所述计算核对应的私有存储器中的至少一种;

所述数据迁移方向包括所述初始存储空间到所述目标存储空间的方向。

条款4:根据权利要求1-3任一项所述的装置,所述数据迁移方向包括以下至少一种:

将所述待迁移数据从所述通用存储器搬运至所述第一片上存储或所述第二片上存储;

将所述待迁移数据从所述第一片上存储或所述第二片上存储搬运至所述通用存储器;

将所述待迁移数据从所述计算核的所述第一片上存储或所述第二片上存储搬运至所述计算核对应的私有存储器;

将所述待迁移数据从所述计算核对应的私有存储器搬运至所述计算核上的所述第一片上存储或所述第二片上存储;

将所述待迁移数据从第一片上存储的第一存储空间搬运至所述第一片上存储的第二存储空间;

将所述待迁移数据从所述第一片上存储搬运至所述第二片上存储;

将所述待迁移数据从所述第二片上存储搬运至所述第一片上存储。

条款5:根据权利要求3所述的装置,所述存储模块还包括寄存器,所述数据迁移方向还包括:

将所述待迁移数据从所述通用存储器搬运至对应寄存器上;

将所述待迁移数据从所述寄存器搬运至对应的通用存储器上;

将所述待迁移数据从寄存器搬运至寄存器所在计算核对应的私有存储器上;

将所述待迁移数据从计算核对应的私有存储器搬运至所述计算核对应的寄存器中;

将所述待迁移数据从寄存器搬运至寄存器所在计算核对应的第一片上存储上;

将所述待迁移数据从所述第一片上存储搬运至所述第一片上存储对应的计算核上的寄存器中。

条款6:根据权利要求1-5任一项所述的装置,所述迁移循环参数还包括待迁移数据数量、源地址偏移量和目标地址偏移量;所述源操作数信息包括所述待迁移数据的源地址,所述目标操作数包括所述待迁移数据的目标地址;所述处理模块还包括:

计数器,用于根据所述待迁移数据数量确定数据迁移次数,其中,所述数据迁移次数为正整数;

地址偏移电路,用于在每确定一次所述数据迁移操作的待迁移数据之后,根据所述待迁移数据的源地址和所述源地址偏移量,更新所述待迁移数据的源地址,获得更新后的源地址;根据所述目标地址和所述目标地址偏移量,更新所述目标地址,获得更新后的目标地址;

数据访存电路,用于根据更新后的源地址和所述更新后的目标地址执行所述数据迁移操作,直至所述计数器控制的所述数据迁移次数满足预设条件。

条款7:根据权利要求6所述的装置,所述源操作数信息还包括数据迁移量;

所述源地址偏移量大于或等于所述数据迁移量,所述目标地址偏移量大于或等于所述数据迁移量。

条款8:根据权利要求1-6任一项所述的装置,所述待迁移数据为标量数据或张量数据。

条款9:根据权利要求1-6任一项所述的装置,所述控制模块包括:

指令存储子模块,用于存储所述编译后的数据迁移指令;

指令处理子模块,用于对所述编译后的向量数据迁移指令进行解析,得到所述数据迁移指令的操作码和操作域;

队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述编译后的数据迁移指令。

条款10:一种指令处理方法,所述方法包括:

对编译后的数据迁移指令进行解析,得到所述数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获得待迁移数据的源操作数信息、所述目标操作数以及迁移参数;其中,所述操作域包括所述源操作数信息、所述目标操作数和所述迁移参数,所述迁移参数包括数据迁移方向和迁移循环参数;

根据所述迁移循环参数,至少执行一次数据迁移操作,所述数据迁移操作包括:按照所述数据迁移方向和所述源操作数信息,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。

条款11:根据权利要求1所述的方法,所述源操作数信息还包括所述待迁移数据的

源地址和待迁移数据的数据迁移量;所述数据迁移操作具体包括:

根据所述待迁移数据的源地址和所述数据迁移量,确定所述待迁移数据;

按照所述数据迁移方向,将所述待迁移数据搬运至所述目标操作数对应的目标存储空间中。

条款12:根据权利要求10或11所述的方法,所述方法用于指令存储装置中,所述装置包括存储模块,所述存储模块包括第一片上存储和第二片上存储、通用存储器和所述处理模块的各个计算核对应的私有存储器;

所述待迁移数据的源地址对应的初始存储空间和所述目标操作数对应的目标存储空间为所述第一片上存储、所述第二片上存储、所述通用存储器或所述计算核对应的私有存储器中的至少一种;

所述数据迁移方向包括所述初始存储空间到所述目标存储空间的方向。

条款13:根据权利要求10-12任一项所述的方法,所述数据迁移方向包括以下至少一种:

将所述待迁移数据从所述通用存储器搬运至所述第一片上存储或所述第二片上存储;

将所述待迁移数据从所述第一片上存储或所述第二片上存储搬运至所述通用存储器;

将所述待迁移数据从所述计算核的所述第一片上存储或所述第二片上存储搬运至所述计算核对应的私有存储器;

将所述待迁移数据从所述计算核对应的私有存储器搬运至所述计算核上的所述第一片上存储或所述第二片上存储;

将所述待迁移数据从第一片上存储的第一存储空间搬运至所述第一片上存储的第二存储空间;

将所述待迁移数据从所述第一片上存储搬运至所述第二片上存储;

将所述待迁移数据从所述第二片上存储搬运至所述第一片上存储。

条款14:根据权利要求10-13所述的方法,所述存储模块还包括寄存器,所述数据迁移方向还包括:

将所述待迁移数据从所述通用存储器搬运至对应寄存器上;

将所述待迁移数据从所述寄存器搬运至对应的通用存储器上;

将所述待迁移数据从寄存器搬运至寄存器所在计算核对应的私有存储器上;

将所述待迁移数据从计算核对应的私有存储器搬运至所述计算核对应的寄存器中;

将所述待迁移数据从寄存器搬运至寄存器所在计算核对应的第一片上存储上;

将所述待迁移数据从所述第一片上存储搬运至所述第一片上存储对应的计算核上的寄存器中。

条款15:根据权利要求10-14任一项所述的方法,所述迁移循环参数还包括待迁移数据数量、源地址偏移量和目标地址偏移量;所述源操作数信息包括所述待迁移数据的源地址,所述目标操作数包括所述待迁移数据的目标地址;所述根据所述迁移循环参数,至少执行一次数据迁移操作,包括:

根据所述待迁移数据数量确定数据迁移次数,其中,所述数据迁移次数为正整数;

在每确定一次所述数据迁移操作的待迁移数据之后,根据所述待迁移数据的源地址和所述源地址偏移量,更新所述待迁移数据的源地址,获得更新后的源地址;根据所述目标地址和所述目标地址偏移量,更新所述目标地址,获得更新后的目标地址;

根据更新后的源地址和所述更新后的目标地址执行所述数据迁移操作,直至所述计数器控制的所述数据迁移次数满足预设条件。

条款16:根据权利要求10-15任一项所述的方法,所述源操作数信息还包括数据迁移量;

所述源地址偏移量大于或等于所述数据迁移量,所述目标地址偏移量大于或等于所述数据迁移量。

条款17:根据权利要求10-16任一项所述的方法,所述待迁移数据为标量数据或张量数据。

条款18:一种计算机可读存储介质,所述存储介质用于存储计算机程序,该计算机程序被一个或多个处理器执行时,实现如条款10-17任一项所述的方法的步骤。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1