运算方法、装置及相关产品与流程

文档序号:24046081发布日期:2021-02-23 18:48阅读:77来源:国知局
运算方法、装置及相关产品与流程

[0001]
本公开涉及计算机技术领域,尤其涉及一种运算方法、装置及相关产品。


背景技术:

[0002]
随着科技的不断发展,机器学习,尤其是神经网络算法的使用越来越广泛。其在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。但由于神经网络算法的复杂度越来越高,需要写入多个默认数值的需求不断增多。但是现有的指令和技术当中,往往支持固定数量的数据写入,而无法高效的支持指定数据的灵活且动态数量的数据写入操作,执行效率低、执行速度慢。


技术实现要素:

[0003]
有鉴于此,本公开提出了一种运算方法、装置及相关产品,以提高对数据进行写数操作的效率和速度。
[0004]
根据本公开的第一方面,提供了一种写数指令处理装置,所述装置包括:
[0005]
控制模块,用于对获取到的写数指令进行解析,得到所述写数指令的操作码和操作域,根据所述操作码生成待写数,根据所述操作域获取所述待写数的数量参数、目标地址;
[0006]
执行模块,用于根据所述数量参数向所述目标地址写入所述待写数。
[0007]
根据本公开的第二方面,提供了一种机器学习运算装置,所述装置包括:
[0008]
一个或多个上述第一方面所述的写数指令处理装置,用于从其他处理装置中获取待执行数据和控制信息,并执行指定的机器学习运算和任务,将执行结果通过i/o接口传递给其他处理装置;
[0009]
当所述机器学习运算装置包含多个所述写数指令处理装置时,所述多个所述写数指令处理装置间可以通过特定的结构进行连接并传输数据;
[0010]
其中,多个所述写数指令处理装置通过快速外部设备互连总线pcie总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述写数指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述写数指令处理装置共享内存或者拥有各自的内存;多个所述写数指令处理装置的互联方式是任意互联拓扑。
[0011]
根据本公开的第三方面,提供了一种组合处理装置,所述装置包括:
[0012]
上述第二方面所述的机器学习运算装置、通用互联接口和其他处理装置;
[0013]
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的操作。
[0014]
根据本公开的第四方面,提供了一种机器学习芯片,所述机器学习芯片包括上述第二方面所述的机器学习络运算装置或上述第三方面所述的组合处理装置。
[0015]
根据本公开的第五方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述第四方面所述的机器学习芯片。
[0016]
根据本公开的第六方面,提供了一种板卡,该板卡包括上述第五方面所述的机器学习芯片封装结构。
[0017]
根据本公开的第七方面,提供了一种电子设备,所述电子设备包括上述第四方面所述的机器学习芯片或上述第六方面所述的板卡。
[0018]
根据本公开的第八方面,提供了一种写数指令处理方法,所述方法应用于写数指令处理装置,所述方法包括:
[0019]
对获取到的写数指令进行解析,得到所述写数指令的操作码和操作域,根据所述操作码生成待写数,根据所述操作域获取执行所述写数指令所需的待写数的数量参数和目标地址;
[0020]
根据所述数量参数向所述目标地址写入所述待写数。
[0021]
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0022]
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。
[0023]
本公开实施例所提供的写数指令处理方法、装置及相关产品,该装置包括控制模块和执行模块,控制模块,用于对获取到的写数指令进行解析,得到所述写数指令的操作码和操作域,根据所述操作码生成待写数,根据所述操作域获取所述待写数的数量参数、目标地址;执行模块,用于根据所述数量参数向所述目标地址写入所述待写数。本公开实施例所提供的写数指令处理方法、装置及相关产品的适用范围广,对写数指令的处理效率高、处理速度快。
[0024]
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
[0025]
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
[0026]
图1示出根据本公开一实施例的写数指令处理装置的框图。
[0027]
图1a、图1b示出了根据本公开一实施例的写数指令处理装置的框图。
[0028]
图2a-图2e示出根据本公开一实施例的写数指令处理装置的框图。
[0029]
图3示出根据本公开一实施例的写数指令处理装置的应用场景的示意图。
[0030]
图4a、图4b示出根据本公开一实施例的组合处理装置的框图。
[0031]
图5示出根据本公开一实施例的板卡的结构示意图。
[0032]
图6示出根据本公开一实施例的写数指令处理方法的流程图。
具体实施方式
[0033]
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同
的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0034]
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0035]
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
[0036]
图1示出根据本公开一实施例的写数指令处理装置的框图。如图1所示,该装置包括控制模块11和执行模块12。
[0037]
控制模块11,用于对获取到的写数指令进行解析,得到所述写数指令的操作码和操作域,根据所述操作码生成待写数,根据所述操作域获取所述待写数的数量参数、目标地址。
[0038]
执行模块12,用于根据所述数量参数向所述目标地址写入所述待写数。
[0039]
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的数据的来源,执行对应的指令所需的数据包括待写数的数量参数、目标地址以及对应的运算方法,或者存储待写数数量地址、对应的运算数据的地址以及对应的运算方法的地址、或者上述或者其他组合等等。对于一个写数指令其必须包括操作码和操作域,其中,操作域至少包括待写数的数量参数和目标地址。待写数的数量参数可以为所述待写数数量,也可以为存储所述待写数数量的地址。
[0040]
在一种可能的实现方式中,待写数的数量参数为待写数数量。控制模块对获取到的写数指令进行解析,得到写数指令的操作码和操作域。根据操作码生成待写数,根据操作域,得到直接获取待写数数量和目标地址。这里假定待写数为0,待写数数量为64,目标地址为0000。执行单元执行向目标地址写入所述待写数数量的待写数,即从地址为0000的地方开始,写入64个0。
[0041]
在一种可能的实现方式中,待写数的数量参数为存储待写数数量的地址。控制模块对获取到的写数指令进行解析,得到写数指令的操作码和操作域。根据操作码生成待写数。根据操作域中的待写数的数量参数,解析出待写数数量的地址,根据所述待写数数量的地址获取到待写数数量。控制单元还根据操作域获取目标地址。这里假定,根据操作域获得待写数为1,待写数数量地址为1000,目标地址为0000。根据待写数数量地址获取待写数数量为256。执行单元向目标地址写入所述待写数数量的待写数,即从地址为0000的地方开始,写入256个1。
[0042]
应当理解的是,本领域技术人员可以根据需要对写数指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
[0043]
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个执行模块,可以根据实际需要对控制模块和执行模块的数量进行设置,本公开对此不作限制。
[0044]
本公开实施例所提供的写数指令处理装置,该装置包括控制模块和执行模块,控制模块用于对获取到的写数指令进行解析,得到所述写数指令的操作码和操作域,根据所述操作码生成待写数,根据所述操作域获取所述待写数的数量参数、目标地址;执行模块,
用于根据所述数量参数向所述目标地址写入所述待写数。本公开实施例所提供的写数指令处理装置的适用范围广,对写数指令的处理效率高、处理速度快。
[0045]
在一种可能的实现方式中,执行模块包括一或多个执行子模块;所述控制模块,还用于为执行子模块分配对应的子待写数数量和对应的子目标地址;所述执行子模块,用于根据所述对应的子待写数数量向所述对应的子目标地址写入所述待写数。
[0046]
如图1a示出了根据本公开一实施例的写数指令处理装置的框图。执行模块12可以包括一个执行子模块120。控制模块11对写数指令进行解析,得到写数指令的操作码和操作域,根据所述操作码生成待写数,根据操作域为执行子模块分配对应的子待写数数量和对应的子目标地址。执行子模块120用于根据对应的子待写数数量和对应的子目标地址写入所述待写数。例如,待写数数量为256位,待写数为0,目的地址为0000。则执行子模块120的待写数数量为256位,子待写数为0,子目的地址为0000,从而向0000地址处写入256位0。
[0047]
图1b示出了根据本公开一实施例的写数指令处理装置的框图。在一种可能的实现方式中,如图1b所示,执行模块12可以包括多个执行子模块120。控制模块11对写数指令进行解析,得到写数指令的操作码和操作域,根据所述操作码生成待写数,根据操作域获取执行写数指令所需的待写数的数量参数和目标地址。还为各执行子模块分配对应的子待写数数量和对应的子目标地址。执行子模块120用于根据所述对应的子待写数数量串行或者并行的向对应的子目标地址写入所述待写数。例如,执行模块12可以包括4个执行子模块120,待写数数量为256位,待写数为0,目的地址为0000。4个执行子模块的子待写数地址分别为0000、0064、0128和196,对应的子待写数数量均为64位。4个执行子模块可以并行的完成写零操作,即4个执行子模块同时且分别从0000地址处、0064地址处、0128地址处和00196地址处写入64位0,从而完成从0000地址处并行写入256位0的需求。4个执行子模块还可以串行的完成写零操作,即4个执行子模块依次且分别从0000地址处、0064地址处、0128地址处和00196地址处写入64位0,从而完成从0000地址处串行写入256位0的需求。4个执行子模块的子待写数地址还可以分别为0000、0032、0128和0196,对应的子待写数数量分别为32位、96位、64位、64位。4个执行子模块可以并行的完成写零操作,如4个执行子模块同时且分别从0000地址处、0064地址处、0128地址处和0196地址处写入32个0、96个0、64个0、64个0,从而完成从0000地址处写入256位0的需求。4个执行子模块可以串行的完成写零操作,如4个执行子模块还可以依次且分别从0000地址处、0064地址处、0128地址处和0196地址处写入32个0、96个0、64个0、64个0,从而完成串行从0000地址处写入256位0的需求。
[0048]
图2a示出根据本公开一实施例的写数指令处理装置的框图。在一种可能的实现方式中,如图2a所示,执行模块12可以包括主执行子模块121和多个从执行子模块122。
[0049]
控制模块11,用于解析写数指令,生成待写数,并得到多条子写数指令和所需要的数据和/或地址,发送至主执行子模块121。
[0050]
主执行子模块121,用于与所述多个从执行子模块进行子写数指令、数据和/或地址的分配和传输。其中,主执行子模块可以直接将子写数指令、数据和/或地址传输给从执行子模块,也可以进行分配后传输。例如,目标地址为100个单位(该单位可以为1byte,也可以是多位,如4bits等),待写数数量为40,包括4个从执行子模块,一个数据为2个单位。主执行子模块直接将上述参数传输给从执行子模块,也可以进行分配后传输,其中可以均匀分配,即传输给第一个从执行子模块的地址为目标地址为100,待写数数量为10;传输给第二
个从执行子模块的地址为目标地址为120,待写数数量为10;传输给第三个从执行子模块的地址为目标地址为140,待写数数量为10;传输给第四个从执行子模块的地址为目标地址为160,待写数数量为10。也可以根据需求,进行非均匀分配。如第一个从执行子模块写20个数,目标地址为100;第二个从执行子模块写10个数,目标地址为140;第三个从执行子模块写5个数,目标地址为160;第四个从执行子模块写5个数,目标地址为170。
[0051]
从执行子模块122,用于根据从所述主执行子模块121传输的子写数指令、数据和/或地址,向对应的目标地址写入对应的待写数数量的所述待写数。可以理解的是,若主执行单元直接将参数传输给各从执行子模块,那么各从执行子模块则需要根据已知的默认编号进行处理后完成写数操作;若主执行单元对参数进行了分配和传输给各从执行子模块,那么各从执行子模块可以直接完成写数操作。例如,目标地址为100个单位(该单位可以为1byte,也可以是多位,如4bits等),待写数数量为40,包括4个从执行子模块,一个数据为2个单位。主执行子模块直接将上述参数传输给从执行子模块,且多个从执行子模块采用均匀分配任务的方式,那么每个待写数数量为40/4=10。第一个从执行子模块需根据传输来的数据计算得到对应的目标地址为100+(1-1)*10*2=100;第二个从执行子模块需根据传输来的数据计算得到对应的目标地址为100+(2-1)*10*2=120;第三个从执行子模块需根据传输来的数据计算得到对应的目标地址为100+(3-1)*10*2=140;第四个从执行子模块需根据传输来的数据计算得到对应的目标地址为100+(4-1)*10*2=160。如果主执行子模块已分配,并将分配后的参数传输给从执行子模块,从执行子模块可以进行处理后执行,也可以直接执行。其中,多个从执行子模块可以同时的向对应的目标地址并行写入所述待写数数量的所述待写数,也可以依次向对应的目标地址串行写入所述待写数数量的所述待写数。
[0052]
需要说明的是,本领域技术人员可以根据实际需要对主执行子模块和多个从执行子模块之间的连接方式进行设置,以实现对执行模块的架构设置,例如,执行模块的架构可以是“h”型架构、阵列型架构、树型架构等,本公开对此不作限制。
[0053]
图2b示出根据本公开一实施例的写数指令处理装置的框图。在一种可能的实现方式中,如图2b所示,执行模块12还可以包括一个或多个分支执行子模块123,该分支执行子模块123用于转发主执行子模块121和从执行子模块122之间的数据、地址和/或运算指令。其中,主执行子模块121与一个或多个分支执行子模块123连接。这样,执行模块中的主执行子模块、分支执行子模块和从执行子模块之间采用“h”型架构连接,通过分支执行子模块转发数据、地址和/或运算指令,节省了对主执行子模块的资源占用,进而提高指令的处理速度。
[0054]
图2c示出根据本公开一实施例的写数指令处理装置的框图。在一种可能的实现方式中,如图2c所示,多个从执行子模块122呈阵列分布。
[0055]
每个从执行子模块122与相邻的其他从执行子模块122连接,主执行子模块121连接多个从执行子模块122中的k个从执行子模块122,k个从执行子模块122为:第1行的n个从执行子模块122、第m行的n个从执行子模块122以及第1列的m个从执行子模块122。
[0056]
其中,如图2c所示,k个从执行子模块仅包括第1行的n个从执行子模块、第m行的n个从执行子模块以及第1列的m个从执行子模块,即该k个从执行子模块为多个从执行子模块中直接与主执行子模块连接的从执行子模块。其中,k个从执行子模块,用于在主执行子
模块以及多个从执行子模块之间的数据以及指令的转发。这样,多个从执行子模块呈阵列分布,可以提高主执行子模块向从执行子模块发送数据、地址和/或运算指令速度,进而提高指令的处理速度。
[0057]
图2d示出根据本公开一实施例的写数指令处理装置的框图。在一种可能的实现方式中,如图2d所示,执行模块还可以包括树型子模块124。该树型子模块124包括一个根端口401和多个支端口402。根端口401与主执行子模块121连接,多个支端口402与多个从执行子模块122分别连接。其中,树型子模块124具有收发功能,用于转发主执行子模块121和从执行子模块122之间的数据、地址和/或运算指令。这样,通过树型子模块的作用使得执行模块呈树型架构连接,并利用树型子模块的转发功能,可以提高主执行子模块向从执行子模块发送数据、地址和/或运算指令速度,进而提高指令的处理速度。
[0058]
在一种可能的实现方式中,树型子模块124可以为该装置的可选结果,其可以包括至少一层节点。节点为具有转发功能的线结构,节点本身不具备运算功能。最下层的节点与从执行子模块连接,以转发主执行子模块121和从执行子模块122之间的数据、地址和/或运算指令。特殊地,如树型子模块具有零层节点,该装置则无需树型子模块。
[0059]
在一种可能的实现方式中,树型子模块124可以包括n叉树结构的多个节点,n叉树结构的多个节点可以具有多个层。
[0060]
举例来说,图2e示出根据本公开一实施例的写数指令处理装置的框图。如图2e所示,n叉树结构可以是二叉树结构,树型子模块包括2层节点01。最下层节点01与从执行子模块122连接,以转发主执行子模块121和从执行子模块122之间的数据、地址和/或指令。
[0061]
在该实现方式中,n叉树结构还可以是三叉树结构等,n为大于或等于2的正整数。本领域技术人员可以根据需要对n叉树结构中的n以及n叉树结构中节点的层数进行设置,本公开对此不作限制。
[0062]
在一种可能的实现方式中,如图1、图1a、图1b和图2a-图2e所示,该装置还可以包括存储模块13。存储模块13用于存储待写数数量的待写数。
[0063]
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存。可以根据需要将待写数数量和写入的待写数数量的待写数存储在存储模块的内存、缓存和/或寄存器中,本公开对此不作限制。
[0064]
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
[0065]
在一种可能的实现方式中,如图1、图1a、图1b和图2a-图2e所示,控制模块11可以用于判断待写数数量是否为预设数的整数倍,并只执行待写数数量为预设数的整数倍的指令。其中,预设数可以为用户提前指定的数据,也可以是和硬件结构相关的数据。例如当预设数为64时,只执行待写数数量为64的整数倍的指令,如待写数数量为64、128等。
[0066]
在该实现方式中,可以保证待写数数量与硬件结果或者用户指定的数据地址的单位不会产生矛盾,从而便于管理,方便对数据地址的管理。
[0067]
在一种可能的实现方式中,如图1、图1a、图1b和图2a-图2e所示,控制模块11可以用于判断待写数数量是否为预设数的整数倍。当待写数数量不为预设数的整数倍时,将所述待写数数量调整为所述待写数数量的所述预设数的整数倍。例如,当待写数数量为128,预设数为64时,控制单元11判断出待写数数量为预设数的整数倍,则直接执行该指令。当待
写数数量为75,预设数为32时,控制模块11判断出该待写数数量不为预设数的整数倍,可以根据用户的设定或者硬件的需求进行向上调整,例如向上调整至与所述待写数数量最接近的所述预设数的整数倍,即不小于待写数数量,且与该待写数数量最接近的预设数的整数倍。一种计算方式是,通过利用进一的近似方法对待写数数量与预设数之间的比值取整,并利用该取整后的比值与预设数的乘积得到所述预设数的整数倍。如对应上例,当待写数数量为75,预设数为32时,将待写数数量调整为还可以根据用户的设定或者硬件的需求进行向下调整,例如向下调整至与所述待写数数量的最接近的所述预设数的整数倍,即不大于待写数数量,且与该待写数数量最接近的预设数的整数倍。一种计算方式是,通过利用去尾的近似方法对待写数数量与预设数的比值取整,并利用该取整后的比值与预设数的乘积得到所述预设数的整数倍。如对应上例,当待写数数量为75,预设数为32时,将待写数数量调整为
[0068]
在该实现方式中,既可以保证待写数数量与硬件结果或者用户指定的数据地址的单位不会产生矛盾,又可以提高灵活性,减轻对程序员管理数据地址的负担,方便对数据地址的管理。
[0069]
在一种可能的实现方式中,如图1、图1a、图1b和图2a-图2e所示,控制模块11可以包括指令存储子模块111、指令处理子模块112和队列存储子模块113。
[0070]
指令存储子模块111用于存储指令,包括写数指令。
[0071]
指令处理子模块112用于对写数指令进行解析,得到写数指令的操作码和操作域。
[0072]
队列存储子模块113用于存储指令队列,指令队列包括按照执行顺序依次排列的多个指令,包括写数指令。
[0073]
在该实现方式中,可以根据指令的接收时间、优先级别等对多个指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个指令,其中包括写数指令。
[0074]
在一种可能的实现方式中,如图1、图1a、图1b和图2a-图2e所示,控制模块11可以包括依赖关系处理子模块114。
[0075]
依赖关系处理子模块114,用于在确定多个指令中的第一写数指令与第一写数指令之前的第零指令存在关联关系时,将第一写数指令缓存在指令存储子模块111中,在第零指令执行完毕后,从指令存储子模块111中提取第一写数指令发送至执行模块12。其中,第一写数指令和第零指令是多个指令中的指令。
[0076]
其中,第一写数指令与第一写数指令之前的第零指令存在关联关系包括:存储第一写数指令所需数据的第一存储地址区间与存储第零指令所需数据的第零存储地址区间具有重叠的区域。反之,第一写数指令与第零指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
[0077]
通过这种方式,可以根据写数指令与之前的指令之间的依赖关系,使得在先的指令执行完毕之后,再执行在后的写数指令,保证运算结果的准确性。
[0078]
在一种可能的实现方式中,写数指令的指令格式可以是:
[0079]
write_zero dst,num
[0080]
其中,write_zero是写数指令的操作码,其中,表示待写数的待写数为0。dst、num是写数指令的操作域。其中,dst是目标地址,num是待写数的数量参数,这里即为待写数数
量。
[0081]
在一种可能的实现方式中,写数指令的指令格式可以是:
[0082]
write_zero_addr dst,num_addr
[0083]
其中,write_zero_addr是写数指令的操作码,其中,表示待写数的待写数为0。dst、num_addr是写数指令的操作域。其中,dst是目标地址,num_addr是待写数的数量参数,这里即为存储待写数数量的地址。
[0084]
在一种可能的实现方式中,写数指令的指令格式可以是:
[0085]
write_one dst,num
[0086]
其中,write_one是写数指令的操作码,其中,表示待写数的待写数为1。dst、num是写数指令的操作域。其中,dst是目标地址,num是待写数的数量参数,这里即为待写数数量。
[0087]
在一种可能的实现方式中,写数指令的指令格式可以是:
[0088]
write_one_addr dst,num_addr
[0089]
其中,write_one_addr是写数指令的操作码,其中,表示待写数的待写数为0。dst、num_addr是写数指令的操作域。其中,dst是目标地址,num_addr是待写数的数量参数,这里即为存储待写数数量的地址。
[0090]
应当理解的是,本领域技术人员可以根据需要对写数指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
[0091]
在一种可能的实现方式中,该装置可以设置于图形处理器(graphics processing unit,简称gpu)、中央处理器(central processing unit,简称cpu)和嵌入式神经网络处理器(neural-network processing unit,简称npu)的一种或多种之中。
[0092]
需要说明的是,尽管以上述实施例作为示例介绍了写数指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
[0093]
应用示例
[0094]
以下结合“利用写数指令处理装置进行写数操作”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解写数指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
[0095]
图3示出根据本公开一实施例的写数指令处理装置的应用场景的示意图。如图3所示,写数指令处理装置对写数指令进行处理的过程如下:
[0096]
在一种可能的实现方式中,控制模块11对获取到的写数指令1(如写零指令1为@write_zero#500#64)进行解析,得到写数指令1的操作码和操作域。其中,写数指令1的操作码为write_zero,目标地址为500,待写数数量为64。控制模块11生成待写数,即0。执行模块12执行写数操作,即向目标地址500写入64个0。
[0097]
在一种可能的实现方式中,控制模块11对获取到的写数指令2(如写零指令2为@write_zero#500#250)进行解析,得到写数指令2的操作码和操作域。其中,写数指令2的操作码为write_zero,目标地址为500,待写数数量为250。硬件特性决定了预设数为64。控制模块11生成待写数,即0。控制模块11判断待写数数量不为预设数的整数倍,则对其向上取整为最接近的预设数的整数倍,即执行模块12执行写数操作,即
向目标地址500写入256个0。
[0098]
在一种可能的实现方式中,控制模块11对获取到的写数指令3(如写一指令3为@write_one#1000#250)进行解析,得到写数指令3的操作码和操作域。其中,写数指令3的操作码为write_one,目标地址为1000,待写数数量为250。用户指定了预设数为64。控制模块11生成待写数,即1。控制模块11判断待写数数量不为预设数的整数倍,则根据用户指定的方式,对其向下取整为不大于待写数数量的预设数的整数倍,即执行模块12执行写数操作,即向目标地址1000写入192个1。
[0099]
以上各模块的工作过程可参考上文的相关描述。
[0100]
这样,写数指令处理装置可以高效、快速地对写数指令进行处理。
[0101]
本公开提供一种机器学习运算装置,该机器学习运算装置可以包括一个或多个上述写数指令处理装置,用于从其他处理装置中获取待执行数据和控制信息,执行指定的机器学习运算。该机器学习运算装置可以从其他机器学习运算装置或非机器学习运算装置中获得写数指令,并将执行结果通过i/o接口传递给外围设备(也可称其他处理装置)。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上写数指令处理装置时,写数指令处理装置间可以通过特定的结构进行链接并传输数据,譬如,通过pcie总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
[0102]
该机器学习运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。
[0103]
图4a示出根据本公开一实施例的组合处理装置的框图。如图4a所示,该组合处理装置包括上述机器学习运算装置、通用互联接口和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。
[0104]
其他处理装置,包括中央处理器cpu、图形处理器gpu、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
[0105]
通用互联接口,用于在机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
[0106]
图4b示出根据本公开一实施例的组合处理装置的框图。在一种可能的实现方式中,如图4b所示,该组合处理装置还可以包括存储装置,存储装置分别与机器学习运算装置和所述其他处理装置连接。存储装置用于保存在机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
[0107]
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理
装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
[0108]
本公开提供一种机器学习芯片,该芯片包括上述机器学习运算装置或组合处理装置。
[0109]
本公开提供一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
[0110]
本公开提供一种板卡,图5示出根据本公开一实施例的板卡的结构示意图。如图5所示,该板卡包括上述机器学习芯片封装结构或者上述机器学习芯片。板卡除了包括机器学习芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392。
[0111]
存储器件390与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)通过总线连接,用于存储数据。存储器件390可以包括多组存储单元393。每一组存储单元393与机器学习芯片389通过总线连接。可以理解,每一组存储单元393可以是ddr sdram(英文:double data rate sdram,双倍速率同步动态随机存储器)。
[0112]
ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。
[0113]
在一个实施例中,存储器件390可以包括4组存储单元393。每一组存储单元393可以包括多个ddr4颗粒(芯片)。在一个实施例中,机器学习芯片389内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。
[0114]
在一个实施例中,每一组存储单元393包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在机器学习芯片389中设置控制ddr的控制器,用于对每个存储单元393的数据传输与数据存储的控制。
[0115]
接口装置391与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)电连接。接口装置391用于实现机器学习芯片389与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置391可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至机器学习芯片289,实现数据转移。在另一个实施例中,接口装置391还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,接口装置能够实现转接功能即可。另外,机器学习芯片的计算结果仍由接口装置传送回外部设备(例如服务器)。
[0116]
控制器件392与机器学习芯片389电连接。控制器件392用于对机器学习芯片389的状态进行监控。具体的,机器学习芯片389与控制器件392可以通过spi接口电连接。控制器件392可以包括单片机(micro controller unit,mcu)。如机器学习芯片389可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,机器学习芯片389可以处于多负载和轻负载等不同的工作状态。通过控制器件可以实现对机器学习芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
[0117]
本公开提供一种电子设备,该电子设备包括上述机器学习芯片或板卡。
[0118]
电子设备可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0119]
交通工具可以包括飞机、轮船和/或车辆。家用电器可以包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机。医疗设备可以包括核磁共振仪、b超仪和/或心电图仪。
[0120]
图6示出根据本公开一实施例的写数指令处理方法的流程图。如图6所示,该方法应用于上述写数指令处理装置,该方法包括步骤s51和步骤s52。
[0121]
在步骤s51中,对获取到的写数指令进行解析,得到写数指令的操作码和操作域,根据操作码生成待写数,根据操作域获取执行写数指令所需的待写数的数量参数和目标地址。
[0122]
在步骤s52中,根据所述数量参数向所述目标地址写入所述待写数。
[0123]
在一种可能的实现方式中,步骤s51可以包括,当所述待写数的数量参数为待写数数量时,对获取到的写数指令进行解析,得到写数指令的操作码和操作域。根据操作码生成待写数,根据操作域得到直接获取待写数的数量参数和目标地址。
[0124]
在一种可能的实现方式中,步骤s51可以包括,当所述待写数的数量参数为存储所述待写数数量的地址时,对获取到的写数指令进行解析,得到写数指令的操作码和操作域。根据操作码生成待写数。根据操作域中的待写数的数量参数,即存储待写数数量的地址,根据所述待写数数量的地址获取到待写数数量。控制单元还根据操作域获取目标地址。
[0125]
在一种可能的实现方式中,步骤s52可以包括:
[0126]
为执行子模块分配对应的子待写数数量和对应的子目标地址;
[0127]
根据所述对应的子待写数数量向所述对应的子目标地址写入所述待写数。
[0128]
在一种可能的实现方式中,解析写数指令,得到多条子写数指令,以及所需要的数据和/或地址;分配和传输子写数指令、数据和/或地址;根据从所述主执行子模块传输的子写数指令、数据和/或地址,向所述目标地址写入所述待写数数量的所述待写数。
[0129]
在一种可能的实现方式中,所述待写数数量为预设数的整数倍。
[0130]
在一种可能的实现方式中,判断所述待写数数量是否为预设数的整数倍,当不为其整数倍时,调整所述待写数数量为所述预设数的整数倍。
[0131]
在一种可能的实现方式中,调整所述待写数数量为所述预设数的整数倍,可以包括:
[0132]
将所述待写数数量增加至与待写数数量最接近的所述预设数的整数倍。
[0133]
在一种可能的实现方式中,调整所述待写数数量为所述预设数的整数倍,可以包括:
[0134]
将所述待写数数量减少至与待写数数量最接近的所述预设数的整数倍。
[0135]
在一种可能的实现方式中,对获取到的写数指令进行解析,得到写数指令的操作码和操作域,可以包括:
[0136]
存储指令,包括写数指令;
[0137]
对写数指令进行解析,得到写数指令的操作码和操作域;
[0138]
存储指令队列,指令队列包括按照执行顺序依次排列的多个指令,其中包括写数指令。
[0139]
在一种可能的实现方式中,该方法还可以包括:
[0140]
在确定多个指令中的第一写数指令与第一写数指令之前的第零指令存在关联关
系时,缓存第一写数指令,在第零指令执行完毕后,执行第一写数指令。
[0141]
其中,第一写数指令与第一写数指令之前的第零指令存在关联关系可以包括:
[0142]
存储第一写数指令所需数据的第一存储地址区间与存储第零指令所需数据的第零存储地址区间具有重叠的区域。
[0143]
需要说明的是,尽管以上述实施例作为示例介绍了写数指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
[0144]
本公开实施例所提供的写数指令处理方法的适用范围广,对写数指令的处理效率高、处理速度快。
[0145]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
[0146]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0147]
在本公开所提供的实施例中,应该理解到,所揭露的系统、装置,可通过其它的方式实现。例如,以上所描述的系统、装置实施例仅仅是示意性的,例如设备、装置、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备、装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0148]
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0149]
另外,在本公开各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0150]
集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0151]
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-only memory,简称:rom)、随机存取器(英文:random access memory,简称:ram)、磁盘或光盘等。
[0152]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0153]
依据以下条款可以更好的理解前述内容:
[0154]
条款a1、一种写数指令处理装置,其特征在于,所述装置包括:
[0155]
控制模块,用于对获取到的写数指令进行解析,得到所述写数指令的操作码和操作域,根据所述操作码生成待写数,根据所述操作域获取所述待写数的数量参数、目标地址;
[0156]
执行模块,用于根据所述数量参数向所述目标地址写入所述待写数。
[0157]
条款a2、根据条款a1所述的装置,其特征在于,
[0158]
所述待写数的数量参数为待写数数量,或存储待写数数量的地址。
[0159]
条款a3、根据条款a2所述的装置,其特征在于,
[0160]
所述控制模块,还用于根据所述存储所述待写数数量的地址获取所述待写数数量。
[0161]
条款a4、根据条款a1所述的装置,其特征在于,
[0162]
所述执行模块包括一或多个执行子模块;
[0163]
所述控制模块,还用于为执行子模块分配对应的子待写数数量和对应的子目标地址;
[0164]
所述执行子模块,用于根据所述对应的子待写数数量向所述对应的子目标地址写入所述待写数。
[0165]
条款a5、根据条款a1所述的装置,其特征在于,
[0166]
所述执行模块包括主执行子模块和多个从执行子模块;
[0167]
所述控制模块,还用于对所述写数指令进行解析,得到多条子写数指令,以及所需要的数据和/或地址,发送至所述主执行子模块;
[0168]
所述主执行子模块,用于与所述多个从执行子模块进行子写数指令、数据和/或地址的分配和传输;
[0169]
所述从执行子模块,用于根据从所述主执行子模块传输的子写数指令、数据和地址,向所述目标地址写入所述待写数数量的所述待写数。
[0170]
条款a6、根据条款a1至条款a5所述的装置,其特征在于,所述装置还包括:
[0171]
存储模块,用于存储所述待写数数量的所述待写数。
[0172]
条款a7、根据条款a1所述的装置,其特征在于,
[0173]
所述待写数数量为预设数的整数倍。
[0174]
条款a8、根据条款a1所述的装置,其特征在于,
[0175]
所述控制单元还用于判断所述待写数数量是否为预设数的整数倍,当不为其整数倍时,将所述待写数数量调整至所述待写数数量的所述预设数的整数倍。
[0176]
条款a9、根据条款a8所述的装置,其特征在于,所述将所述待写数数量调整至所述待写数数量的所述预设数的整数倍,包括
[0177]
将所述待写数数量增加至与所述待写数数量最接近的所述预设数的整数倍。
[0178]
条款a10、根据条款a8所述的装置,其特征在于,所述将所述待写数数量调整至所述待写数数量的所述预设数的整数倍,包括
[0179]
将所述待写数数量减少至与所述待写数数量最接近的所述预设数的整数倍。
[0180]
条款a11、根据条款a1所述的装置,其特征在于,所述控制模块,包括:
[0181]
指令存储子模块,用于存储指令,包括所述写数指令;
[0182]
指令处理子模块,用于对所述写数指令进行解析,得到所述写数指令的操作码和操作域;
[0183]
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个指令,包括写数指令。
[0184]
条款a12、根据条款a11所述的装置,其特征在于,所述控制模块,还包括:
[0185]
依赖关系处理子模块,用于在确定所述多个指令中的第一写数指令与所述第一写数指令之前的第零指令存在关联关系时,将所述第一写数指令缓存在所述指令存储子模块中,在所述第零指令执行完毕后,从所述指令存储子模块中提取所述第一写数指令发送至所述执行模块,
[0186]
其中,所述第一写数指令与所述第一写数指令之前的第零指令存在关联关系包括:
[0187]
存储所述第一写数指令所需数据的第一存储地址区间与存储所述第零指令所需数据的第零存储地址区间具有重叠的区域。
[0188]
条款a13、一种机器学习运算装置,其特征在于,所述装置包括:
[0189]
一个或多个如条款a1至条款a12任一项所述的写数指令处理装置,用于从其他处理装置中获取待执行数据和控制信息,并执行指定的机器学习运算和任务,将执行结果通过i/o接口传递给其他处理装置;
[0190]
当所述机器学习运算装置包含多个所述写数指令处理装置时,所述多个所述写数指令处理装置间可以通过特定的结构进行连接并传输数据;
[0191]
其中,多个所述写数指令处理装置通过快速外部设备互连总线pcie总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述写数指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述写数指令处理装置共享内存或者拥有各自的内存;多个所述写数指令处理装置的互联方式是任意互联拓扑。
[0192]
条款a14、一种组合处理装置,其特征在于,所述组合处理装置包括:
[0193]
如条款a13所述的机器学习运算装置、通用互联接口和其他处理装置;
[0194]
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的操作,
[0195]
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
[0196]
条款a15、一种机器学习芯片,其特征在于,所述机器学习芯片包括:
[0197]
如条款a13所述的机器学习运算装置或如条款a14所述的组合处理装置。
[0198]
条款a16、一种电子设备,其特征在于,所述电子设备包括:
[0199]
如条款a15所述的机器学习芯片。
[0200]
条款a17、一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如条款a15所述的机器学习芯片;
[0201]
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
[0202]
所述存储器件,用于存储数据;
[0203]
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
[0204]
所述控制器件,用于对所述机器学习芯片的状态进行监控。
[0205]
条款a18、一种写数指令处理方法,其特征在于,所述方法应用于写数指令处理装置,所述方法包括:
[0206]
对获取到的写数指令进行解析,得到所述写数指令的操作码和操作域,根据所述操作码生成待写数,根据所述操作域获取执行所述写数指令所需的待写数的数量参数和目标地址;
[0207]
根据所述数量参数向所述目标地址写入所述待写数。
[0208]
条款a19、根据条款a18所述的方法,其特征在于,
[0209]
所述待写数的数量参数为待写数数量,或为存储待写数数量的地址。
[0210]
条款a20、根据条款a19所述的方法,其特征在于,
[0211]
根据所述存储待写数数量的地址获取待写数数量。
[0212]
条款a21、根据条款a18所述的方法,其特征在于,
[0213]
为执行子模块分配对应的子待写数数量和对应的子目标地址;
[0214]
根据所述对应的子待写数数量向所述对应的子目标地址写入所述待写数。
[0215]
条款a22、根据条款a18至条款a21所述的方法,其特征在于,
[0216]
解析写数指令,得到多条子写数指令,以及所需要的数据和/或地址;
[0217]
分配和传输子写数指令、数据和/或地址;
[0218]
根据从所述主执行子模块传输的子写数指令、数据和/或地址,向所述目标地址写入所述待写数数量的所述待写数。
[0219]
条款a23、根据条款a18所述的方法,其特征在于,所述方法还包括:
[0220]
存储所述待写数数量的所述待写数。
[0221]
条款a24、根据条款a18所述的方法,其特征在于,
[0222]
所述待写数数量为预设数的整数倍。
[0223]
条款a25、根据条款a18所述的方法,其特征在于,:
[0224]
判断所述待写数数量是否为预设数的整数倍,当不为其整数倍时,将所述待写数数量调整至所述待写数数量的所述预设数的整数倍。
[0225]
条款a26、根据条款a25所述的方法,其特征在于,所述将所述待写数数量调整至所述待写数数量的所述预设数的整数倍,包括
[0226]
将所述待写数数量增加至与所述待写数数量最接近的所述预设数的整数倍。
[0227]
条款a27、根据条款a25所述的方法,其特征在于,所述将所述待写数数量调整至所述待写数数量的所述预设数的整数倍,包括
[0228]
将所述待写数数量减小至与所述待写数数量最接近的所述预设数的整数倍。
[0229]
条款a28、根据条款a17所述的方法,其特征在于,对获取到的写数指令进行解析,
得到所述写数指令的操作码和操作域,包括:
[0230]
存储指令,包括所述写数指令;
[0231]
对所述写数指令进行解析,得到所述写数指令的操作码和操作域;
[0232]
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个指令,包括写数指令。
[0233]
条款a29、根据条款a28所述的方法,其特征在于,所述方法还包括:
[0234]
在确定所述多个指令中的第一写数指令与所述第一写数指令之前的第零指令存在关联关系时,缓存所述第一写数指令,在所述第零指令执行完毕后,执行所述第一写数指令;
[0235]
其中,所述第一写数指令与所述第一写数指令之前的第零指令存在关联关系包括:
[0236]
存储所述第一写数指令所需数据的第一存储地址区间与存储所述第零指令所需数据的第零存储地址区间具有重叠的区域。
[0237]
条款a30、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款a18至条款a29任一项所述的方法。
[0238]
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1