CN111930671A - 异构智能处理器、处理方法及电子设备 - Google Patents
异构智能处理器、处理方法及电子设备 Download PDFInfo
- Publication number
- CN111930671A CN111930671A CN202010798222.8A CN202010798222A CN111930671A CN 111930671 A CN111930671 A CN 111930671A CN 202010798222 A CN202010798222 A CN 202010798222A CN 111930671 A CN111930671 A CN 111930671A
- Authority
- CN
- China
- Prior art keywords
- circuit
- data
- bit
- processor
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/061—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
Abstract
本公开提供一种异构智能处理器、处理方法及电子设备,该异构智能处理器包括通用处理器和智能处理器,其中,该智能处理器包括:内存电路、直接内存访问电路、控制电路以及运算电路;内存电路,与控制电路相连,用于存储神经网络中模型参数的数据;直接内存访问电路,与内存电路相连,用于将数据从内存电路搬运到运算电路;控制电路,与直接内存访问电路和内存电路相连,用于接收所述神经网络专用的运算指令,并将所述运算指令转换为可直接控制运算电路、直接内存访问电路、内存电路的控制信号;运算电路,与直接内存访问电路相连,用于执行数据类型为非均匀数的数据的运算任务。可提高数据处理效率。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种异构智能处理器、处理方法及电子设备。
背景技术
数据处理是神经网络中进行的必要步骤,而神经网络运算中通常存在大量的数据,同时现有神经网络的复杂度越来越高,计算时通常采用功耗消耗巨大的浮点数或定点数乘法计算,数据处理效率低、速度慢。
发明内容
本公开的主要目的在于提供一种异构智能处理器及电子设备,可提高数据处理效率。
为实现上述目的,本公开实施例第一方面提供一种异构智能处理器,所述异构智能处理器包括通用处理器和智能处理器,其中所述智能处理器包括:内存电路、直接内存访问电路、控制电路以及运算电路;
所述内存电路,与所述控制电路相连,用于存储神经网络中模型参数的数据;
所述直接内存访问电路,与所述内存电路相连,用于将所述数据从所述内存电路搬运到所述运算电路;
所述控制电路,与所述直接内存访问电路和所述内存电路相连,用于接收所述神经网络专用的运算指令,并将所述运算指令转换为可直接控制所述运算电路、直接内存访问电路、内存电路的控制信号;
所述运算电路,与所述直接内存访问电路相连,用于执行数据类型为非均匀数的数据的运算任务。
可选的,所述运算电路包括至少一个子运算电路,所有子运算电路之间通过互联网络相连。
可选的,所述子运算电路包括至少一个运算器和至少一个寄存器,所述运算器与所述寄存器相连;
所述运算器,用于读取所述寄存器中存储的数据,实现数据的乘累加运算,所述数据的数据类型为非均匀数;
所述寄存器,用于存储实现所述乘累加运算的数据信息。
可选的,所述寄存器包括谓词寄存器和操作数寄存器;
所述谓词寄存器,用于存储控制所述乘累加运算的的谓词;
所述操作数寄存器,用于存储实现所述乘累加运算的操作数;
其中,所述谓词寄存器可以通过所述直接内存访问电路访问和/或通过所述运算器访问;所述操作数寄存器可以通过互联网络互联的邻居寄存器访问和/或通过所述直接内存访问电路访问以及所述运算器访问。
可选的,直接内存访问电路包括至少一个运算器,所述运算器用于在数据经过所述内存电路和子运算电路的数据通路上,并行完成指定的运算任务,所述运算任务包括数据格式转换以及浮点数反量化运算;
其中,所述数据格式转换包括将数据的数据类型转换为非均匀数。
可选的,所述运算器内部支持定点数算数操作、逻辑操作。
可选的,每个子运算电路可以单独完成运算任务,和/或,与其它一个或者多个子运算电路一起完成运算任务。
可选的,所述内存电路,还用于接收所述直接内存访问电路的数据搬运请求;
其中,所述数据搬运请求用于将数据从所述内存电路由所述直接内存访问电路搬运到子运算电路中。
可选的,所述运算器包括:乘运算电路和累加运算电路;
所述乘运算电路,用于对输入的数据进行指数计算和移位计算,得到多个中间结果,并将所述多个中间结果发送给所述累加运算电路;
所述累加运算电路,用于对所述多个中间结果进行循环累加运算,得到计算结果。
可选的,所述乘运算电路包括:指数计算子电路和移位计算子电路;
所述指数计算子电路,用于根据所述数据的指数位数据和非均匀位数据,得到指数位结果;
所述移位计算子电路,用于根据所述数据的尾数位数据,得到尾数位结果,并将所述尾数位结果按照所述指数位结果进行移位运算,得到所述中间结果。
可选的,所述数据类型为非均匀数的数据包括1位符号位、3位指数位、3位尾数位和1位非均匀位;
所述1位符号位,用于表示数据的正负,其中,当所述1位符号位为0时表示正数,当符号位为1时表示负数;
所述3位指数位,用于表示数据的数值,所述3位指数位为无符号定点数,所述数值的范围从0到7;
所述3位尾数位,用于表示数据的精度,所述3位尾数位为无符号定点数,数值范围从0到7;
所述1位非均匀位,用于增强有效数据表示精度。
本公开实施例第二方面提供一种处理方法,所述方法应用于异构智能处理器,所述异构智能处理器包括通用处理器和智能处理器,其中所述智能处理器包括内存电路、直接内存访问电路、控制电路以及运算电路,所述方法包括:
所述内存电路存储神经网络中模型参数的数据;
所述直接内存访问电路将所述数据从所述内存电路经过所述运算电路搬运到所述运算电路;
所述控制电路接收所述神经网络专用的运算指令,并将所述运算指令转换为可直接控制所述运算电路、直接内存访问电路、内存电路的控制信号;
所述运算电路执行数据类型为非均匀数的数据的运算任务。
本公开实施例第三方面提供了一种电子设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器包括本公开实施例第一方面提供的异构智能处理器。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一实施例提供的智能处理器的结构示意图;
图2为本公开一实施例提供的智能处理器的结构示意图;
图3为本公开一实施例提供的运算器的结构示意图;
图4为本公开一实施例提供的8位非均匀数的结构示意图;
图5为本公开一实施例提供的处理方法的流程示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开的说明书和权利要求书及所述附图中的术语″第一″、″第二″、″第三″和″第四″等是用于区别不同对象,而不是用于描述特定顺序。此外,术语″包括″和″具有″以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本公开的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本公开提供了一种异构智能处理器,该异构智能处理器包括通用处理器和智能处理器,请参阅图1,图1为本公开一实施例提供的智能处理器的结构示意图,所述智能处理器包括通用处理器和智能处理器,其中所述智能处理器包括:内存电路101、直接内存访问电路102、控制电路103以及运算电路104;
所述内存电路101,与所述控制电路103相连,用于存储神经网络中模型参数的数据;
所述直接内存访问电路102,与所述内存电路101相连,用于将所述数据从所述内存电路101搬运到所述运算电路104;
所述控制电路103,与所述直接内存访问电路102和所述内存电路101相连,用于接收所述神经网络专用的运算指令,并将所述运算指令转换为可直接控制所述运算电路104、直接内存访问电路102、内存电路101的控制信号;
所述运算电路104,与所述直接内存访问电路102相连,用于执行数据类型为非均匀数的数据的运算任务。
在本实施例中,神经网络中模型参数的数据包括神经元数据、权值数据、梯度数据等神经网络计算中常用的数据。
在本实施例中,内存电路101是异构智能处理器的核内存储单元,内存电路101作为从电路接收直接内存访问电路102的数据搬运请求,将神经网络中模型参数的数据从内存电路101经由直接内存访问电路102搬运到运算电路104中。内存电路101可充分利用神经网络中数据复用的特点,将数据从核外搬运到核内中后复用数据多次发送到运算电路104中,避免复用数据多次从核外长距离传输到核内。
在本实施例中,控制电路103采用PUSH-MODE原则,始终作为从电路被动接收外部发送过来的指令,而不会主动发送请求取得指令。被动接收指令的PUSH-MODE原则可充分利用神经网络运算形式较为固定的特点,使得处理器高能效的执行运算量最大的运算任务,将一般计算机程序中复杂并且性能开销巨大的的程序循环、程序跳转等控制流行为交给核外CPU或者上层软件来完成。
在本实施例中,控制电路103可以通过数据输入输出单元获得计算指令,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,计算指令可以是软件和硬件的交互接口的指令系统中的指令,其可以是二进制或其他形式的、供处理器(或称处理电路)等硬件接收并处理的机器语言。计算指令可以包括用于指示处理器操作的操作码和操作数。根据不同的应用场景,计算指令可以包括一个或多个操作码,而当前述计算指令包括一个操作码时,该操作码可以用于指示处理器的多个操作。
在本实施例中,数据类型为非均匀数的数据是由常用的定点数数据类型的数据或浮点数数据类型的数据转换而来。也即转换前的初始数据可以包括定点数数据类型的数据和浮点数数据类型的数据中的任意一种,转换后的数据类型可以非均匀数数据类型。也可以是,转换前为非均匀数数据类型,转换后为定点数数据类型和浮点数数据类型中的任意一种。本公开以转换后的数据类型包括非均匀数数据类型为例进行示意性说明。
其中,非均匀数数据数据类型是一种二进制表示方式。非均匀数数据位数包括8位(以下以LOGNN8表示8位非匀均数数据类型)。非均匀数数据包括符号位、指数位、尾数位和非均匀位。更多的,由于运算电路104执行数据类型为非均匀数的数据的运算任务,在本公开提供的异构智能处理器中,神经网络的运算行为可以和访存行为并行实现。
在一种可选方案中,神经网络专用的运算指令包括但不限于COMP流指令、MEMORY流指令以及SYNC同步指令等。上述指令包括至少一个操作码和至少一个操作域,所述操作码用于指示指令的功能,所述操作域用于指示执行指令所指向的输入数据的信息。以下仅对于COMP流指令、MEMORY流指令以及SYNC同步指令做出示意性说明,不可理解为对本申请的限制。应当理解的是,本领域技术人员可以根据需要对指令的格式以及所包含的操作码和操作域进行设置,本公开对此不做限制。
在一个示例中,COMP流指令具体用于在读写时控制输入数据将数据类型转换为非匀均数数据类型,MEMORY流指令用于完成处理器的核外存储空间与核内存储空间之间的数据交换,SYNC同步指令用于同步MEMORY流指令内的指令流和COMP流指令内的指令流。具体的,COMP流指令可以包括COMP核内地址配置指令、COMP核内访存指令、COMP运算配置指令、COMP内运算电路104指令等。MEMORY流指令可以包括MEMORY流配置指令、MEMORY流访存指令等等。
具体的,COMP核内地址配置指令用于配置内存电路101中读数据地址和写数据地址以配合COMP核内访存指令使用;该COMP核内地址配置指令包括READADDR域和WRITEADDR域;该READADDR域,用于表示从内存电路101读数据到运算电路104的核内内存空间基地址;该WRITEADDR域,用于表示从运算电路104写入数据到核内内存空间基地址。
具体的,COMP核内访存指令用于搬运神经网络数据,该COMP核内访存指令包括READ OP域、READ STRIDE域、READ ITER域、WRITE OP域、WRITE STRIDE域和WRITE ITER域;该READ OP域,用于指定数据从内存电路101读取到运算电路104内运算电路104过程中的数据通路上的运算;该READ STRIDE域以及该READ ITER域,用于描述从核内存储空间读取数据到运算电路104的读取行为;该WRITE OP域,用于指定数据从运算电路104写入内存电路101过程中的数据通路上的运算;该WRITE ITER域、WRITE STRIDE域,用于描述运算电路104中的数据写入到核内存储空间内的写入行为。
具体的,COMP运算配置指令用于与COMP核内访存指令中的READ OP域、WRITE OP域以及COMPVLIW指令配合使用,该COMPVLIW指令用于控制运算电路104完成神经网络运算;该COMP运算配置指令包括IMM域和USAGE域;该IMM域,用于指定操作数,该操作数为COMPIMMCONFIG指令配置的具体32位浮点数据值;该USAGE域,用于指定操作码,该操作码包括配置激活运算中的64段插值表、乘加运算中的乘数和加数、PE内谓词。
具体的,COMP内运算电路104指令用于实现运算电路104内运算电路104的运算,该COMP流内运算电路104指令包括TN域、OUT域、COMPUTE域和PETAL域。该IN域与COMP核内访存指令相互配合,用于表示从内存电路101中读出的数据写入子运算电路1041内部的寄存器号,以及,用于与COMP运算配置指令配合实现不同子运算电路1041中谓词的赋值;该OUT域,用于表示写入内存电路101中数据来自于子运算电路1041内部的数据寄存器号;该COMPUTE域,用于运算电路104内运算电路104中每个子运算电路1041需要完成的具体运算操作以及操作的寄存器号;该PETAL域,用于表示子运算电路1041之间寄存器201数据交换的方向、读寄存器号、写入寄存器号;其中IN域、OUT域、COMPUTE域和PETALK域均可以被每个子运算电路1041内的谓词寄存器屏蔽,从而实现运算电路104中子运算电路1041不同的行为。
其中,该COMPVLIW指令的操作码为OPIMM域,操作域包括IN REG域、IN PREG域、OUTREG域、OUT PREG域、CMP SRCO域、CMP SRC1域、CMP DST域、CMP PREG域、CMP OP域、PE_DIRECT域、PE_SRC域、PE_DST域和PE_PREG域;该IN_REG域,用于输入运算电路104内数据的目的寄存器号;该IN_PREG域,用于输入运算电路104操作谓词寄存器号;该OUT_REG域,用于输出运算电路104内数据的目的寄存器号;该OUT_PREG域,用于输出运算电路104操作谓词寄存器号;该CMP_SRC0域,用于子运算电路1041进行运算的第一元源寄存器号;该CMP_SRC1域,用于子运算电路1041进行计算第二元源寄存器号;该CMP_DST域,用于子运算电路1041进行计算目的寄存器号;该CMP_PREG域,用于子运算电路1041进行计算谓词寄存器号;该CMP_OP域,用于子运算电路1041进行计算操作码;该PE_DIRECT域,用于子运算电路1041进行之间数据交换方向,其中0为纵向,1为横向;该PE_SRC域,用于子运算电路1041进行之间数据交换源寄存器号;该PE_DST域,用于子运算电路1041进行之间数据交换目的寄存器号;该PE_PREG域,用于子运算电路1041之间数据交换谓词寄存器号。
具体的,MEMORY流配置指令用于配置访存基地址寄存器,该MEMORY流配置指令包括SRCIMM域和DSTIMM域;其中,高32位立即数SRCIMM域配置源基址,低32位立即数DSTIMM域配置目的基址。
具体的,MEMORY流访存指令用于二维搬运神经网络数据,MEMORY流访存指令包括SIZE域、STRIDE域和ITER域;该SIZE域,用于表示一条指令内部进行一次神经网络数据搬运需要搬运多少字节连续的数据;该STRIDE域,用于表示一次数据搬运结束后,下一次数据搬运的偏移,其中,每一次数据搬运结束后,在基地址基础上额外偏移STRIDE字节再开始下一次数据搬运;该ITER域,用于表示执行指令总共需要数据搬运的次数。
在上述本公开实施例中,异构智能处理器的运算电路104执行数据类型为非均匀数的数据的运算任务,可以规避功耗消耗巨大的浮点数乘法计算,使用尽可能简单的逻辑完成非均匀数数据乘法运算操作。非均匀数数据乘法运算相比较于传统数据表示方法的乘法运算减少了完成1次等效乘法运算的功耗,减小了乘法器单元的数字电路面积。且数据类型为非均匀数的数据在人工神经网络模型中,可以实现与数据类型为浮点数的数据的人工神经网络模型相同的神经网络识别精度。
在本公开其中一个实施例中,所述运算电路104包括至少一个子运算电路1041,所有子运算电路1041之间通过互联网络相连。
其中,神经网络的执行性能与与子运算电路1041的个数呈正相关。
可选的,在本公开其中一个实施例中,通过互联网络每个子运算电路1041可以单独完成运算任务,和/或,与其它一个或者多个子运算电路1041一起完成运算任务。
在本公开其中一个实施例中,请参阅图2,所述子运算电路1041包括至少一个运算器(LADD)200和至少一个寄存器(REG)201,所述运算器200与所述寄存器201相连;所述运算器200,用于读取所述寄存器201中存储的数据,实现数据的乘累加运算,所述数据的数据类型为非均匀数;所述寄存器201,用于存储实现所述乘累加运算的数据信息。
在图2中,每个子运算电路1041与相邻的4个子运算电路1041互联,边界处的子运算电路1041与最远端的子运算电路1041互联。
其中,寄存器201与运算器200、互联网络、直接内存访问电路102广播通路相互连接,作为运算器200直接访问的内存电路101。
其中,运算器200内部还支持数据类型为非均匀数的数据的相关运算操作。
需要说明的是,图2所示16个子运算电路1041仅为一种示意性说明,本公开不对子运算电路1041的数量做出限制,本领域技术人员可以根据需要进行其它选择。
在本公开其中一个实施例中,运算器200内部还支持定点数算数操作、逻辑操作。
具体的,直接内存访问电路102将数据从内存电路101搬运到运算电路104中子运算电路1041的寄存器201中。直接内存访问电路102作为主动电路访问被动电路内存电路101和子运算电路1041中的寄存器201,并通过广播通路将数据广播到该子运算电路1041的同一列的不同行子运算电路1041中。
需要说明的是,图2所示一个子运算电路1041中包括一个运算器200和一个寄存器201仅为一种示意性说明,本公开不对子运算电路1041中运算器200和寄存器201的数量做出限制,本领域技术人员可以根据需要进行具体选择。
在本公开一可选实施例中,寄存器201包括谓词寄存器和操作数寄存器,谓词寄存器,用于存储控制乘累加运算的谓词,操作数寄存器,用于存储实现乘累加运算的操作数。
其中,谓词寄存器可以通过直接内存访问电路102访问和/或通过运算器200访问;操作数寄存器可以通过互联网络互联的邻居寄存器201访问和/或通过直接内存访问电路102访问以及运算器200访问。
其中,每个寄存器201包含32个比特位用于存储数据。谓词寄存器和操作数寄存器的数量均可根据需要进行设定,例如,寄存器201中可以包括1个谓词寄存器和32个操作数寄存器等等。
在本公开其中一个实施例中,直接内存访问电路102包括至少一个运算器,所述运算器用于在数据经过所述内存电路101和子运算电路1041的数据通路上,并行完成指定的运算任务,所述运算任务包括数据格式转换以及浮点数反量化运算;其中,所述数据格式转换包括将数据的数据类型转换为非均匀数。例如,可以将数据的数据类型由定点数或者浮点数转换为非均匀数。
在本公开其中一个实施例中,所述内存电路101,还用于接收所述直接内存访问电路102的数据搬运请求;其中,所述数据搬运请求用于将数据从所述内存电路101由所述直接内存访问电路102搬运到子运算电路1041中。
具体的,将数据从内存电路101由直接内存访问电路102搬运到子运算电路1041的寄存器201中。其中,直接内存访问电路102作为主动电路访问被动电路内存电路101和子运算电路1041中的寄存器201,并通过广播通路将数据广播到该子运算电路1041的同一列的不同行子运算电路1041中。
在本公开其中一个实施例中,请参阅图3,所述运算器200包括:乘运算电路400和累加运算电路401;所述乘运算电路400,用于对输入的数据进行指数计算和移位计算,得到多个中间结果,并将所述多个中间结果发送给所述累加运算电路401;所述累加运算电路401,用于对所述多个中间结果进行循环累加运算,得到计算结果。
其中,累加运算电路401进行循环累加可以在任意运算周期的加法器下无空泡的执行累加运算。
在一种可能的实现方式中,可以根据装置的计算能力等实际需要对累加运算电路401的循环累加过程中进行设置,需要说明的是,本领域技术人员可以根据实际需要对循环累加过程进行设置,本公开对此不作限制。
在本实施例中,通过对多个中间结果进行循环累加可以降低数据访存量和计算量,提高数据处理效率。
在本公开其中一个实施例中,所述乘运算电路400包括:指数计算子电路和移位计算子电路;所述指数计算子电路,用于根据所述数据的指数位数据和非均匀位数据,得到指数位结果;所述移位计算子电路,用于根据所述数据的尾数位数据,得到尾数位结果,并将所述尾数位结果按照所述指数位结果进行移位运算后,得到所述中间结果。
具体的,所述指数计算子电路包括:第一加法器、第二加法器、第三加法器、第四加法器、第五加法器和第六加法器;所述第一加法器,用于将所述输入数据的指数位数据相加,得到第一和结果;所述第二加法器,用于将所述第一和结果与-6相加,得到所述指数位结果的第一行指数位;所述第三加法器,用于将所述第一和结果与-9相加,得到所述指数位结果的第二行指数位;所述第四加法器,用于将所述第二行指数位与一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第三行指数位;所述第五加法器,用于将所述第二行指数位与另一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第四行指数位;所述第六加法器,用于将所述第四行指数位与一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第五行指数位。
具体的,所述移位计算子电路包括:乘法器、第一移位器、第七加法器、第二移位器、第八加法器、第三移位器、第九加法器、第四移位器和第五移位器;所述乘法器,用于将所述输入数据的尾数位数据相乘,得到乘结果;所述第一移位器,用于将所述乘结果按照所述第五行指数位进行移位运算;所述第七加法器,用于将所述乘结果与一个所述输入数据的尾数位数据相加,得到第二和结果;所述第二移位器,用于将所述第二和结果按照所述第三行指数位进行移位运算;所述第八加法器,用于将所述乘结果与另一个所述输入数据的尾数位数据相加,得到第三和结果;所述第三移位器,用于将所述第三和结果按照所述第四行指数位进行移位运算;所述第九加法器,用于将所述第三和结果与另一个所述输入数据的尾数位数据相加,得到第四和结果;所述第四移位器,用于将所述第四和结果按照所述第二行指数位进行移位运算;所述第五移位器,用于将1按照所述第一行指数位进行移位运算。
在本公开其中一个实施例中,所述数据类型为非均匀数的数据包括1位符号位、3位指数位、3位尾数位和1位非均匀位;所述1位符号位,用于表示数据的正负,其中,当所述1位符号位为0时表示正数,当符号位为1时表示负数;所述3位指数位,用于表示数据的数值,所述3位指数位为无符号定点数,所述数值的范围从0到7;所述3位尾数位,用于表示数据的精度,所述3位尾数位为无符号定点数,数值范围从0到7;所述1位非均匀位,用于增强有效数据表示精度。
具体的,如图4所示,8位非均匀数中包括1比特符号位SIGN、3比特指数位EXPONENT、3比特尾数位MANTISSA和1比特非均匀位EQU。8位非均匀数定义如下:
当3位指数位等于23-1并且3位尾数位不等于0时,8位非均匀数表示的是非数(NAN);
当3位指数位等于23-1并且3位尾数位等于0时,8位非均匀数表示的是无穷数(INF)。其中,符号位为0时表示正无穷数,符号位为1时,符号位为1时表示负无穷数;
当3位指数位不等于23-1或者0时,为8位非均匀数的标准模式,8位非均匀数表示的数据a=(-1)SIGN×2EXPONENT-3×(1+MATISSA×2-3×(1+2-EQU));
当3位指数位不等于0时,为8位非均匀数的非标准模式8位非均匀数表示的数据a=(-1)SIGN×2-3×1+MATISSA×2-3×(1+2-EQU)。
可理解的,8位非均匀数表示的数据范围为从-1×24×(1+7×2-3×(1+20))=-44到1×24×(1+7×2-3×(1+20))=44。
在本实施例中,8位非均匀数仅使用了8位二进制序列用来表示数据。相比较于传统深度神经网络中使用的32位浮点数,数据存储量减少到四分之一,极大的缓解了深度神经网络算法在CPU、GPU等传统计算机硬件系统中的访存瓶颈问题。数据存储量的减少也使得深度神经网络模型在移动终端设备中的运行成为了可能。8位非均匀数能够表示从较高精度的小数数据以及跨越从负44到正44的实数范围。可较好的适配32位浮点数表示的深度神经网络模型中不同层数据各自独立的高斯分布特点,对于较高精度小数数据的支持也满足了不同深度神经网络模型的特异性需求。
请参阅图5,图5为本公开一实施例提供的处理方法的流程示意图,所述方法应用于异构智能处理器,所述异构智能处理器包括通用处理器和智能处理器,其中所述智能处理器包括内存电路、直接内存访问电路、控制电路以及运算电路,所述方法包括:
S501、所述内存电路存储神经网络中模型参数的数据;
S502、所述直接内存访问电路将所述数据从所述内存电路经过所述运算电路搬运到所述运算电路;
S503、所述控制电路接收所述神经网络专用的运算指令,并将所述运算指令转换为可直接控制所述运算电路、直接内存访问电路、内存电路的控制信号。
所述运算电路执行数据类型为非均匀数的数据的运算任务。
所述运算电路包括至少一个子运算电路,所有子运算电路之间通过互联网络相连。
在本公开其中一个实施例中,所述子运算电路包括至少一个运算器和至少一个寄存器,所述运算器与所述寄存器相连;
所述运算器,用于读取所述寄存器中存储的数据,实现数据的乘累加运算,所述数据的数据类型为非均匀数;
所述寄存器,用于存储实现所述乘累加运算的数据信息。
在本公开其中一个实施例中,所述寄存器包括谓词寄存器和操作数寄存器;
所述谓词寄存器,用于存储控制所述乘累加运算的的谓词;
所述操作数寄存器,用于存储实现所述乘累加运算的操作数;
其中,所述谓词寄存器可以通过所述直接内存访问电路访问和/或通过所述运算器访问;所述操作数寄存器可以通过互联网络互联的邻居寄存器访问和/或通过所述直接内存访问电路访问以及所述运算器访问。
在本公开其中一个实施例中,直接内存访问电路包括至少一个运算器,所述运算器用于在数据经过所述内存电路和子运算电路的数据通路上,并行完成指定的运算任务,所述运算任务包括数据格式转换以及浮点数反量化运算;
其中,所述数据格式转换包括将数据的数据类型转换为非均匀数。
在本公开其中一个实施例中,所述运算器内部支持定点数算数操作、逻辑操作。
在本公开其中一个实施例中,每个子运算电路可以单独完成运算任务,和/或,与其它一个或者多个子运算电路一起完成运算任务。
在本公开其中一个实施例中,所述内存电路,还用于接收所述直接内存访问电路的数据搬运请求;
其中,所述数据搬运请求用于将数据从所述内存电路由所述直接内存访问电路搬运到子运算电路中。
在本公开其中一个实施例中,所述子运算电路包括:乘运算电路和累加运算电路;
所述乘运算子电路,用于对输入的数据进行指数计算和移位计算,得到多个中间结果,并将所述多个中间结果发送给所述累加运算电路;
所述累加运算子电路,用于对所述多个中间结果进行循环累加运算,得到计算结果。
在本公开其中一个实施例中,所述乘运算子电路包括:指数计算子电路和移位计算子电路;
所述指数计算子电路,用于根据所述数据的指数位数据和非均匀位数据,得到指数位结果;
所述移位计算子电路,用于根据所述数据的尾数位数据,得到尾数位结果,并将所述尾数位结果按照所述指数位结果进行移位运算,得到所述中间结果。
在本公开其中一个实施例中,所述数据类型为非均匀数的数据包括1位符号位、3位指数位、3位尾数位和1位非均匀位;
所述1位符号位,用于表示数据的正负,其中,当所述1位符号位为0时表示正数,当符号位为1时表示负数;
所述3位指数位,用于表示数据的数值,所述3位指数位为无符号定点数,所述数值的范围从0到7;
所述3位尾数位,用于表示数据的精度,所述3位尾数位为无符号定点数,数值范围从0到7;
所述1位非均匀位,用于增强有效数据表示精度。
本公开还提供了一种电子设备,存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器为图1至图4所示的异构智能处理器。
在一些实施例中,电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器((RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指示相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROMD、随机存取器(英文:Random Access Memory,简称:RAMD、磁盘或光盘等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种异构智能处理器,其特征在于,所述异构智能处理器包括通用处理器和智能处理器,其中所述智能处理器包括:内存电路、直接内存访问电路、控制电路以及运算电路;
所述内存电路,与所述控制电路相连,用于存储神经网络中模型参数的数据;
所述直接内存访问电路,与所述内存电路相连,用于将所述数据从所述内存电路搬运到所述运算电路;
所述控制电路,与所述直接内存访问电路和所述内存电路相连,用于接收所述神经网络专用的运算指令,并将所述运算指令转换为可直接控制所述运算电路、直接内存访问电路、内存电路的控制信号;
所述运算电路,与所述直接内存访问电路相连,用于执行数据类型为非均匀数的数据的运算任务。
2.根据权利要求1所述的异构智能处理器,其特征在于,所述运算电路包括至少一个子运算电路,所有子运算电路之间通过互联网络相连。
3.根据权利要求2所述的异构智能处理器,其特征在于,所述子运算电路包括至少一个运算器和至少一个寄存器,所述运算器与所述寄存器相连;
所述运算器,用于读取所述寄存器中存储的数据,实现数据的乘累加运算,所述数据的数据类型为非均匀数;
所述寄存器,用于存储实现所述乘累加运算的数据信息。
4.根据权利要求3所述的异构智能处理器,其特征在于,所述寄存器包括谓词寄存器和操作数寄存器;
所述谓词寄存器,用于存储控制所述乘累加运算的的谓词;
所述操作数寄存器,用于存储实现所述乘累加运算的操作数;
其中,所述谓词寄存器可以通过所述直接内存访问电路访问和/或通过所述运算器访问;所述操作数寄存器可以通过互联网络互联的邻居寄存器访问和/或通过所述直接内存访问电路访问以及所述运算器访问。
5.根据权利要求1至4任意一项所述的异构智能处理器,其特征在于,直接内存访问电路包括至少一个运算器,所述运算器用于在数据经过所述内存电路和子运算电路的数据通路上,并行完成指定的运算任务,所述运算任务包括数据格式转换以及浮点数反量化运算;
其中,所述数据格式转换包括将数据的数据类型转换为非均匀数。
6.根据权利要求3或4所述的异构智能处理器,其特征在于,所述运算器内部支持定点数算数操作、逻辑操作。
7.根据权利要求2所述的异构智能处理器,其特征在于,每个子运算电路可以单独完成运算任务,和/或,与其它一个或者多个子运算电路一起完成运算任务。
8.根据权利要求1所述的异构智能处理器,其特征在于,所述内存电路,还用于接收所述直接内存访问电路的数据搬运请求;
其中,所述数据搬运请求用于将数据从所述内存电路由所述直接内存访问电路搬运到子运算电路中。
9.根据权利要求2所述的异构智能处理器,其特征在于,所述运算器包括:乘运算电路和累加运算电路;
所述乘运算电路,用于对输入的数据进行指数计算和移位计算,得到多个中间结果,并将所述多个中间结果发送给所述累加运算电路;
所述累加运算电路,用于对所述多个中间结果进行循环累加运算,得到计算结果。
10.根据权利要求9所述的异构智能处理器,其特征在于,所述乘运算电路包括:指数计算子电路和移位计算子电路;
所述指数计算子电路,用于根据所述数据的指数位数据和非均匀位数据,得到指数位结果;
所述移位计算子电路,用于根据所述数据的尾数位数据,得到尾数位结果,并将所述尾数位结果按照所述指数位结果进行移位运算,得到所述中间结果。
11.根据权利要求1所述的异构智能处理器,其特征在于,所述数据类型为非均匀数的数据包括1位符号位、3位指数位、3位尾数位和1位非均匀位;
所述1位符号位,用于表示数据的正负,其中,当所述1位符号位为0时表示正数,当符号位为1时表示负数;
所述3位指数位,用于表示数据的数值,所述3位指数位为无符号定点数,所述数值的范围从0到7;
所述3位尾数位,用于表示数据的精度,所述3位尾数位为无符号定点数,数值范围从0到7;
所述1位非均匀位,用于增强有效数据表示精度。
12.一种处理方法,其特征在于,所述方法应用于异构智能处理器,所述异构智能处理器包括通用处理器和智能处理器,其中所述智能处理器包括内存电路、直接内存访问电路、控制电路以及运算电路,所述方法包括:
所述内存电路存储神经网络中模型参数的数据;
所述直接内存访问电路将所述数据从所述内存电路经过所述运算电路搬运到所述运算电路;
所述控制电路接收所述神经网络专用的运算指令,并将所述运算指令转换为可直接控制所述运算电路、直接内存访问电路、内存电路的控制信号;
所述运算电路执行数据类型为非均匀数的数据的运算任务。
13.一种电子设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器为权利要求1至9中的任一项所述的异构智能处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010798222.8A CN111930671A (zh) | 2020-08-10 | 2020-08-10 | 异构智能处理器、处理方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010798222.8A CN111930671A (zh) | 2020-08-10 | 2020-08-10 | 异构智能处理器、处理方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111930671A true CN111930671A (zh) | 2020-11-13 |
Family
ID=73308145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010798222.8A Pending CN111930671A (zh) | 2020-08-10 | 2020-08-10 | 异构智能处理器、处理方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930671A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733412A (zh) * | 2017-04-19 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 一种运算装置和方法 |
CN109121435A (zh) * | 2017-04-19 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 处理装置和处理方法 |
CN109902811A (zh) * | 2017-12-11 | 2019-06-18 | 北京中科寒武纪科技有限公司 | 神经网络运算设备和方法 |
US20200097799A1 (en) * | 2017-06-30 | 2020-03-26 | Intel Corporation | Heterogeneous multiplier |
CN111047022A (zh) * | 2018-10-12 | 2020-04-21 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
US20200242474A1 (en) * | 2019-01-24 | 2020-07-30 | Microsoft Technology Licensing, Llc | Neural network activation compression with non-uniform mantissas |
-
2020
- 2020-08-10 CN CN202010798222.8A patent/CN111930671A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733412A (zh) * | 2017-04-19 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 一种运算装置和方法 |
CN109121435A (zh) * | 2017-04-19 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 处理装置和处理方法 |
US20200097799A1 (en) * | 2017-06-30 | 2020-03-26 | Intel Corporation | Heterogeneous multiplier |
CN109902811A (zh) * | 2017-12-11 | 2019-06-18 | 北京中科寒武纪科技有限公司 | 神经网络运算设备和方法 |
CN111047022A (zh) * | 2018-10-12 | 2020-04-21 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
US20200242474A1 (en) * | 2019-01-24 | 2020-07-30 | Microsoft Technology Licensing, Llc | Neural network activation compression with non-uniform mantissas |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531540B2 (en) | Processing apparatus and processing method with dynamically configurable operation bit width | |
CN111381871B (zh) | 运算方法、装置及相关产品 | |
CN107957976B (zh) | 一种计算方法及相关产品 | |
CN110163360B (zh) | 一种计算装置及方法 | |
CN101116053A (zh) | 适用于高效数字信号处理的数据处理器及其方法 | |
CN111047022B (zh) | 一种计算装置及相关产品 | |
US9563401B2 (en) | Extensible iterative multiplier | |
KR20190107091A (ko) | 계산 장치 및 방법 | |
CN110163350B (zh) | 一种计算装置及方法 | |
CN111626413A (zh) | 一种计算装置及方法 | |
CN110163349B (zh) | 一种网络模型的计算方法及装置 | |
CN107943756B (zh) | 一种计算方法及相关产品 | |
CN111045728A (zh) | 一种计算装置及相关产品 | |
CN109389213B (zh) | 存储装置及方法、数据处理装置及方法、电子装置 | |
CN113918221A (zh) | 运算模块、流水优化方法及相关产品 | |
CN111047021B (zh) | 一种计算装置及相关产品 | |
CN111930674B (zh) | 乘累加运算装置及方法、异构智能处理器及电子设备 | |
CN111930671A (zh) | 异构智能处理器、处理方法及电子设备 | |
CN111930672B (zh) | 异构智能处理器及电子设备 | |
CN109558109B (zh) | 数据运算装置及相关产品 | |
CN109542837B (zh) | 运算方法、装置及相关产品 | |
CN109558565B (zh) | 运算方法、装置及相关产品 | |
CN115329923A (zh) | 用于神经网络模型的编译方法和相关产品 | |
CN111401536A (zh) | 运算方法、装置及相关产品 | |
CN111381872A (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 |