掌桥专利:专业的专利平台
掌桥专利
首页

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

文献发布时间:2023-06-19 09:57:26


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

技术领域

本公开涉及计算机技术领域,尤其涉及一种数据类型转换指令运算方法、装置及相关产品。

背景技术

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

发明内容

有鉴于此,本公开提出了一种运算方法、装置及相关产品,以提高数据类型转换运算的效率和速度。

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

控制模块,用于对获取到的数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域,并根据所述操作码获取与所述数据类型转换指令对应的取整方式、初始数据类型以及目标数据类型,根据所述操作域获取执行所述数据类型转换指令所需的初始数据以及目的地址;

运算模块,与所述控制模块耦合,用于根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据。

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

一个或多个上述第一方面所述的数据类型转换指令处理装置,用于从其他处理装置中获取半精度数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;

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

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

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

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

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

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

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

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

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

根据本公开的第八方面,提供了一种数据类型转换指令处理方法,所述方法应用于数据类型转换指令处理装置,所述方法包括:

对获取到的数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域,并根据所述操作码获取与所述数据类型转换指令对应的取整方式、初始数据类型以及目标数据类型,根据所述操作域获取执行所述数据类型转换指令所需的初始数据以及目的地址;

根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据。

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

在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。

本公开实施例所提供的数据类型转换指令处理方法、装置及相关产品,该装置包括控制模块和运算模块。控制模块用于对获取到的数据类型转换指令进行解析,得到数据类型转换指令的操作码和操作域,并根据操作码和操作域获取执行数据类型转换指令所需的半精度数据和目标地址,以及确定目标数据类型和半精度数据的初始数据类型。运算模块用于根据目标数据类型对初始数据类型的半精度数据进行数据类型转换运算,获得运算结果,并将运算结果存入目标地址中。本公开实施例所提供的数据类型转换指令处理方法、装置及相关产品的适用范围广,对数据类型转换指令的处理效率高、处理速度快。

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

附图说明

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

图1示出根据本公开一实施例的数据类型转换指令处理装置的框图。

图2a-图2f示出根据本公开一实施例的数据类型转换指令处理装置的框图。

图3示出根据本公开一实施例的数据类型转换指令处理装置的应用场景的示意图。

图4a、图4b示出根据本公开一实施例的组合处理装置的框图。

图5示出根据本公开一实施例的板卡的结构示意图。

图6示出根据本公开一实施例的数据类型转换指令处理方法的流程图。

具体实施方式

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

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

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

图1示出根据本公开一实施例的数据类型转换指令处理装置的框图。如图1所示,该装置包括控制模块11和转数单元12。

控制模块11,用于对获取到的数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域,并根据所述操作码获取与所述数据类型转换指令对应的取整方式、初始数据类型以及目标数据类型,根据所述操作域获取执行所述数据类型转换指令所需的初始数据。

转数单元12,与所述控制模块耦合,用于根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得对应的目标数据。

在本实施例中,指令可以包括操作码和操作域。操作码和操作域可以根据需求,按照预设的组成顺序及格式组成指令。其中,操作码可以有字符、代码或数字等各种形式表现形式,本申请对此不做限定。操作域可以包括执行指令所需数据的参数(例如来源、类型、地址等)及指令执行所需的其他参数等。

在一种可能的实现方式中,操作域可以包括初始数据地址,控制模块可以从初始数据地址中获取初始数据。其中,初始数据的地址可以为片上存储器的地址(以下简称片上地址)或片外存储器的地址(以下简称片外地址),目的地址也可以为片上地址或片外地址。当初始数据地址为片外地址时,控制模块可以通过数据输入输出单元对该片外地址进行访问,并获得初始数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。

在一种可能的实现方式中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),也可以是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令对应的操作。在一种可行的实施例中,对于本披露中涉及的数据类型转换指令来说,操作码用于指示取整方式、初始数据类型以及目标数据类型。可选地,目的数据类型可以为整型数或者短整型,初始数据类型可以为单精度浮点数或半精度浮点数。其中,半精度浮点数可以为16位浮点数,包括1位符号位、5位指数位和10位尾数位。单精度浮点数可以为32位浮点数,包括1位符号位、8位指数位和23位尾数位。整型数和短整型均可以是不包含小数部分的数值型数据,其中整型数可以是32位,短整型数可以是16位。

应当理解的是,本领域技术人员可以根据需要对数据类型转换指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。

在一种可能的实现方式中,运算模块根据操作码指示的取整方式、初始数据类型以及目标数据类型,对初始数据进行转数操作,以获得对应的目标数据。

在一种可能的实施方式中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本披露对此不作限制。

本披露实施例所提供的数据类型转换指令处理装置,该装置包括控制模块和运算模块。控制模块对获取到的数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域,并根据所述操作码获取与所述数据类型转换指令对应的取整方式、初始数据类型以及目标数据类型,根据所述操作域获取执行所述数据类型转换指令所需的初始数据。运算模块用于与所述控制模块耦合,用于根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得对应的目标数据。本公开实施例所提供通过不同的操作码来指示不同类型的转数操作,使得指令处理装置可以从一条指令的操作码中得到取整方式、初始数据类型以及目标数据类型,从而使得指令处理装置的处理数据转换运算的效率更高。

在一种可能的实现方式中,该指令处理装置还包括目的寄存器,运算模块还用于将对应的目标数据存储至目的寄存器。

在本实施例中,当运算模块根据取整方式、初始数据类型以及目标数据类型,对初始数据进行转数操作之后,还可以将获得的目标数据存放至目的寄存器中。本实例提供的指令处理装置的减少访问片外地址的次数,从而使得指令处理装置的处理数据转换运算的效率更高。

在一种可行的实施例中,运算模块包括多个转数单元,用于并行执行根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据。该运算模块可以通过多个转数单元并行处理多个数据,从而更快的提高了指令处理装置处理数据转换运算的效率。

在一种可行的实施例中,转数单元包括指数计算电路、移位电路和取整,所述指数计算电路,用于根据初始数据的指数位,获得移位次数,所述移位电路,用于根据所述对尾数位执行移位次数个移位操作,以得到所述移位结果。取整单元,用用于根据取整方式,对所述移位结果进行处理,获得所述目标数据。

具体的,取整方式包括向上取整、向下取整、向零取整、远零取整或四舍五入取整。其中,向上取整是指即取大于移位结果的最小整数值。向下取整是指取小于移位结果的最大整数值。向零取整是指取移位结果与零之间、且最接近移位结果的整数值,即当移位结果大于零时,对移位结果进行向下取整,当移位结果小于零时,对移位结果进行向上取整。远零取整是指当移位结果大于零时,对移位结果进行向上取整,当移位结果小于零时,对移位结果进行上下取整。以移位结果为1.9为例,当取整方式为向上取整时,目标数据为2。当取整方式为向下取整时,目标数据为1。当取整方式为向零取整时,目标数据为1。当取整方式为远零取整时,目标数据为2。当取整方式为四舍五入取整时,目标数据为2。

可选的,初始数据为半精度浮点数或单精度浮点数,目标数据为整型数或短整型。半精度浮点数与单精度浮点数均包括指数位和尾数位。指数计算电路首先根据初始数据的指数位计算获得移位次数,以半精度浮点数为例,半精度浮点数包括5位指数位A

在一种可行的实施例中,取整单元四舍五入取整电路、向上取整电路、向下取整电路、向零取整电路、远零取整电路的至少一种。可选的,取整当于还可以包括选择电路,选择电路根据不同的取整方式,选择不同的取整电路进行取整。

图2a示出根据本公开一实施例的数据类型转换指令处理装置的框图。在一种可能的实现方式中,如图2a所示,该运算模块12可以包括多个转数单元120,用于执行数据类型转换运算。

在该实现方式中,运算模块也可以包括一个转数单元。可以根据所需进行数据类型转换运算的数据量的大小、对数据类型转换运算的处理速度、效率等要求对转数单元的数量进行设置,本公开对此不作限制。

图2b示出根据本公开一实施例的数据类型转换指令处理装置的框图。在一种可能的实现方式中,如图2b所示,运算模块12可以包括主运算子模块121和多个从运算子模块122。主运算子模块121可以包括多个转数单元120(图中未示出)。

控制模块11,还用于解析数据类型转换指令得到多个运算指令,并将半精度数据以及多个运算指令发送至主运算子模块121。

主运算子模块121,用于利用多个转数单元120执行数据类型转换运算,对半精度数据执行前序处理,以及与多个从运算子模块122进行数据和运算指令的传输。

多个从运算子模块122,用于根据从主运算子模块121传输的数据和运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主运算子模块121。

主运算子模块121,还用于对多个中间结果执行后续处理,得到运算结果,并将运算结果存入目标地址中。

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

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

图2d示出根据本公开一实施例的数据类型转换指令处理装置的框图。在一种可能的实现方式中,如图2d所示,多个从运算子模块122呈阵列分布。

每个从运算子模块122与相邻的其他从运算子模块122连接,主运算子模块121连接多个从运算子模块122中的k个从运算子模块122,k个从运算子模块122为:第1行的n个从运算子模块122、第m行的n个从运算子模块122以及第1列的m个从运算子模块122。

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

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

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

在一种可能的实现方式中,树型子模块124可以包括n叉树结构的多个节点,n叉树结构的多个节点可以具有多个层。

举例来说,图2f示出根据本公开一实施例的数据类型转换指令处理装置的框图。如图2f所示,n叉树结构可以是二叉树结构,树型子模块包括2层节点01。最下层节点01与从运算子模块122连接,以转发主运算子模块121和从运算子模块122之间的数据和/或运算指令。

在该实现方式中,n叉树结构还可以是三叉树结构等,n为大于或等于2的正整数。本领域技术人员可以根据需要对n叉树结构中的n以及n叉树结构中节点的层数进行设置,本公开对此不作限制。

在一种可能的实现方式中,在根据操作码或者操作域均不能确定初始数据类型和/或目标数据类型时,可以根据预先设置的默认初始数据类型和默认目标数据类型确定初始数据类型和/或目标数据类型。可以将预先设置的默认初始数据类型确定为当前该数据类型转换指令的初始数据类型,可以将预先设置的默认目标数据类型确定为当前该数据类型转换指令的目标数据类型。本领域技术人员可以根据实际需要对目标数据类型和初始数据类型的确定方式进行设置,本公开对此不作限制。

在一种可能的实现方式中,如图2a-图2f所示,该装置还可以包括存储模块13。存储模块13用于存储初始数据。

在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存。可以根据需要将半精度数据存储在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。

在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。

在一种可能的实现方式中,如图2a-图2f所示,控制模块11可以包括指令存储子模块111、指令处理子模块112和队列存储子模块113。

指令存储子模块111用于存储数据类型转换指令。

指令处理子模块112用于对数据类型转换指令进行解析,得到数据类型转换指令的操作码和操作域。

队列存储子模块113用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括数据类型转换指令。

在该实现方式中,待执行指令还可以包括与数据类型转换指令有一定相关性、或者不相关的计算指令,本领域技术人员可以根据实际需要进行设置,本公开对此不作限制。可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。

在一种可能的实现方式中,如图2a-图2f所示,控制模块11可以包括依赖关系处理子模块114。

依赖关系处理子模块114,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块111中,在第零待执行指令执行完毕后,从指令存储子模块111中提取第一待执行指令发送至运算模块12。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。

其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。

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

下面的实施例将具体描述本披露提供的数据类型转换指令所执行不同转换操作对应的操作码,对不同操作码的具体执行过程可以参考本披露的其他实施例,不再赘述。

在实际应用中,可以设计不同的操作码来对应不同类型的初始数据类型、目的数据类型和取整方式。

在一种可行的实施例中,数据类型转换指令的操作码为:half2int_tz。该操作码用于指示初始数据类型为半精度浮点数,目的数据类型为整型数,取整方式为向零取整。在本实施例中,指令的具体形式可以是int32_t__half2int_tz(half src0),其中,int32_t用于指示目标数据地址,src0用于指示初始数据地址。如图3所示,图3示出根据本公开一实施例的数据类型转换指令处理装置的应用场景的示意图。如图3所示,数据类型转换指令处理装置对数据类型转换指令进行处理的过程如下:控制模块11对获取到的数据类型转换指令1(int32_t__half2int_tz(half src0)进行解析,得到数据类型转换指令1的操作码和操作域。其中,数据类型转换指令1的操作码为half2int_tz,即初始数据的数据类型为半精度浮点数,目标数据的数据类型为整型数,取整方式为向零取整,并获得目标地址以及初始数据地址。运算模块12对初始数据进行半精度转整型且向零取整的运算,即得到目标数据。这样,数据类型转换指令处理装置可以高效、快速地对数据类型转换指令进行处理。

在一种可行的实施例中,数据类型转换指令的操作码为:half2int_oz。该操作码用于指示初始数据类型为半精度浮点数,目的数据类型为整型数,取整方式为远零取整。

在一种可行的实施例中,数据类型转换指令的操作码为:half2int_up。该操作码用于指示初始数据类型为半精度浮点数,目的数据类型为整型数,取整方式为向上取整。

在一种可行的实施例中,数据类型转换指令的操作码为:half2int_dn。该操作码用于指示初始数据类型为半精度浮点数,目的数据类型为整型数,取整方式为向下取整。

在一种可行的实施例中,数据类型转换指令的操作码为:half2int_rd。该操作码用于指示初始数据类型为半精度浮点数,目的数据类型为整型数,取整方式为四舍五入取整。

在一种可行的实施例中,数据类型转换指令的操作码为:float2int_tz。该操作码用于指示初始数据类型为单精度浮点数,目的数据类型为整型数,取整方式为向零取整。

在一种可行的实施例中,数据类型转换指令的操作码为:float2int_oz。该操作码用于指示初始数据类型为单精度浮点数,目的数据类型为整型数,取整方式为远零取整。

在一种可行的实施例中,数据类型转换指令的操作码为:float 2int_up。该操作码用于指示初始数据类型为单精度浮点数,目的数据类型为整型数,取整方式为向上取整。

在一种可行的实施例中,数据类型转换指令的操作码为:float 2int_dn。该操作码用于指示初始数据类型为单精度浮点数,目的数据类型为整型数,取整方式为向下取整。

在一种可行的实施例中,数据类型转换指令的操作码为:float 2int_rd。该操作码用于指示初始数据类型为单精度浮点数,目的数据类型为整型数,取整方式为四舍五入取整。

在一种可行的实施例中,数据类型转换指令的操作码为:half2short_tz。该操作码用于指示初始数据类型为半精度浮点数,目的数据类型为短整数,取整方式为向零取整。

在一种可行的实施例中,数据类型转换指令的操作码为:half2short_oz。该操作码用于指示初始数据类型为半精度浮点数,目的数据类型为短整数,取整方式为远零取整。

在一种可行的实施例中,数据类型转换指令的操作码为:half2short_up。该操作码用于指示初始数据类型为半精度浮点数,目的数据类型为短整数,取整方式为向上取整。

在一种可行的实施例中,数据类型转换指令的操作码为:half2short_dn。该操作码用于指示初始数据类型为半精度浮点数,目的数据类型为短整数,取整方式为向下取整。

在一种可行的实施例中,数据类型转换指令的操作码为:half2short_rd。该操作码用于指示初始数据类型为半精度浮点数,目的数据类型为短整数,取整方式为四舍五入取整。

在一种可行的实施例中,数据类型转换指令的操作码为:float2short_tz。该操作码用于指示初始数据类型为单精度浮点数,目的数据类型为短整数,取整方式为向零取整。

在一种可行的实施例中,数据类型转换指令的操作码为:float2short_oz。该操作码用于指示初始数据类型为单精度浮点数,目的数据类型为短整数,取整方式为远零取整。

在一种可行的实施例中,数据类型转换指令的操作码为:float 2short_up。该操作码用于指示初始数据类型为单精度浮点数,目的数据类型为短整数,取整方式为向上取整。

在一种可行的实施例中,数据类型转换指令的操作码为:float2short_dn。该操作码用于指示初始数据类型为单精度浮点数,目的数据类型为短整数,取整方式为向下取整。

在一种可行的实施例中,数据类型转换指令的操作码为:float2short_rd。该操作码用于指示初始数据类型为单精度浮点数,目的数据类型为短整数,取整方式为四舍五入取整。

应当理解的是,本领域技术人员可以根据需要对数据类型转换指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。

在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics ProcessingUnit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。

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

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

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

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

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

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

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

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

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

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

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

存储器件390与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)通过总线连接,用于存储数据。存储器件390可以包括多组存储单元393。每一组存储单元393与机器学习芯片389通过总线连接。可以理解,每一组存储单元393可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。

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,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,接口装置391还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,接口装置能够实现转接功能即可。另外,机器学习芯片的计算结果仍由接口装置传送回外部设备(例如服务器)。

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

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

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

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

图6示出根据本公开一实施例的数据类型转换指令处理方法的流程图。如图6所示,该方法应用于上述数据类型转换指令处理装置,该方法包括步骤S51和步骤S52。

在步骤S51中,用于对获取到的数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域,并根据所述操作码获取与所述数据类型转换指令对应的取整方式、初始数据类型以及目标数据类型,根据所述操作域获取执行所述数据类型转换指令所需的初始数据以及目的地址。

在步骤S52中,根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据。

在一种可能的实现方式中,根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据可以包括:

利用运算模块将所述目标数据存储至所述目的寄存器。

在一种可能的实现方式中,根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据,可以包括:

利用多个转数单元并行执行根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据。

在一种可能的实现方式中,初始数据包括指数位以及尾数位,利用多个转数单元并行执行根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据,可以包括:

根据初始数据的指数位,获得移位次数;根据所述移位次数对尾数位执行移位操作,以得到所述移位结果;根据取整方式,对所述移位结果进行处理,获得所述目标数据。

在一种可能的实现方式中,该方法还可以包括:解析数据类型转换指令得到多个运算指令。其中,步骤S52可以包括:

利用所述多个转数单元并行执行根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据,以及与所述多个从运算子模块进行目标数据和运算指令的传输;

根据传输的数据和运算指令并行执行中间运算得到多个中间结果;

对多个中间结果执行后续处理,得到运算结果,并将运算结果存入目标地址中。

在一种可能的实现方式中,操作域还可以包括初始数据类型和目标数据类型,步骤S51可以包括:根据操作域确定目标数据类型和半精度数据的初始数据类型。

在一种可能的实现方式中,该方法还可以包括:存储半精度数据。

在一种可能的实现方式中,步骤S51可以包括:

存储数据类型转换指令;

对数据类型转换指令进行解析,得到数据类型转换指令的操作码和操作域;

存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括数据类型转换指令。

在一种可能的实现方式中,该方法还可以包括:

在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,

其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:

存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。

在一种可能的实施方式中,上述方法实施例所述的初始数据类型包括单精度浮点数或半精度浮点数;所述目标数据类型包括整型数或短整数。

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

本公开实施例所提供的数据类型转换指令处理方法的适用范围广,对数据类型转换指令的处理效率高、处理速度快。

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

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

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

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

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

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

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

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

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

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

条款1.一种数据类型转换指令的指令处理装置,包括:

控制模块,用于对获取到的数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域,并根据所述操作码获取与所述数据类型转换指令对应的取整方式、初始数据类型以及目标数据类型,根据所述操作域获取执行所述数据类型转换指令所需的初始数据以及目的地址;

运算模块,与所述控制模块耦合,用于根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据。

条款2.根据条款1所述的装置,所述装置还包括目的寄存器;

所述运算模块还用于将所述目标数据存储至所述目的寄存器。

条款3.根据条款1所述的装置,所述运算模块,包括:

多个转数单元,用于并行执行根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据。

条款4.根据条款3所述的装置,所述初始数据包括指数位以及尾数位;所述转数单元包括:

所述指数计算电路,用于根据初始数据的指数位,获得移位次数;

所述移位电路,用于根据所述移位次数对尾数位执行移位操作,以得到所述移位结果;

取整单元,用于根据取整方式,对所述移位结果进行处理,获得所述目标数据。

条款5.根据条款4中所述的装置,所述取整单元包括四舍五入取整电路、向上取整电路、向下取整电路、向零取整电路、远零取整电路的至少一种。

条款6.根据条款3-5中任一项所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个转数单元,

所述控制模块,还用于解析数据类型转换指令得到多个运算指令,并将所述初始数据和所述多个运算指令发送至所述主运算子模块;

所述主运算子模块,用于利用所述多个转数单元并行执行根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据,以及与所述多个从运算子模块进行目标数据和运算指令的传输;

所述多个从运算子模块,用于根据从所述主运算子模块传输的数据和运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主运算子模块;

所述主运算子模块,还用于对所述多个中间结果执行后续处理,得到运算结果。

条款7.根据条款1所述的装置,所述控制模块包括:

指令存储子模块,用于存储所述数据类型转换指令;

指令处理子模块,用于对所述数据类型转换指令进行解析,得到数据类型转换指令的操作码和操作域;

队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述数据类型转换指令。

条款8.根据条款7所述的装置,所述控制模块,还包括:

依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,

其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:

存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。

条款9.根据条款1-8中所述的装置,所述初始数据类型包括单精度浮点数或半精度浮点数;所述目标数据类型包括整型数或短整数。

条款10.一种机器学习运算装置,所述装置包括:

一个或多个如条款1-9任一项所述的数据类型转换指令处理装置,用于从其他处理装置中获取半精度数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;

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

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

条款11.一种组合处理装置,所述组合处理装置包括:

如条款10所述的机器学习运算装置、通用互联接口和其他处理装置;

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

其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。

条款12.一种机器学习芯片,所述机器学习芯片包括:

如条款10所述的机器学习运算装置或如权利要求11所述的组合处理装置。

条款13.一种电子设备,所述电子设备包括:

如条款12所述的机器学习芯片。

条款14.一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款12所述的机器学习芯片;

其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;

所述存储器件,用于存储数据;

所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;

所述控制器件,用于对所述机器学习芯片的状态进行监控。

条款15.一种数据类型转换指令的处理方法,包括:

对获取到的数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域,并根据所述操作码获取与所述数据类型转换指令对应的取整方式、初始数据类型以及目标数据类型,根据所述操作域获取执行所述数据类型转换指令所需的初始数据以及目的地址;

根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据。

条款16.根据条款15所述的方法,所述根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据,包括:

利用多个转数单元并行执行根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据。

条款17.根据条款15所述的方法,所述初始数据包括指数位以及尾数位;根据所述取整方式、初始数据类型以及目标数据类型,对所述初始数据进行转数操作,获得目标数据,包括:

根据初始数据的指数位,获得移位次数;

根据所述移位次数对尾数位执行移位操作,以得到所述移位结果;

根据取整方式,对所述移位结果进行处理,获得所述目标数据。

条款18.根据条款15中所述的方法,所述取整方式包括四舍五入取整、向上取整、向下取整、向零取整、远零取整的至少一种。

条款19.根据条款15所述的方法,所述控制模块包括:

存储所述数据类型转换指令;

对所述数据类型转换指令进行解析,得到数据类型转换指令的操作码和操作域;

存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述数据类型转换指令。

条款20.根据条款15所述的方法,所述方法包括:

在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,

其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:

存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。

条款21.根据条款15-20中所述的方法,所述初始数据类型包括单精度浮点数或半精度浮点数;所述目标数据类型包括整型数或短整数。

相关技术
  • 运算方法、装置及相关产品
  • 运算方法、装置及相关产品
技术分类

06120112365949