CN111047023A - 一种计算装置及相关产品 - Google Patents

一种计算装置及相关产品 Download PDF

Info

Publication number
CN111047023A
CN111047023A CN201811194528.1A CN201811194528A CN111047023A CN 111047023 A CN111047023 A CN 111047023A CN 201811194528 A CN201811194528 A CN 201811194528A CN 111047023 A CN111047023 A CN 111047023A
Authority
CN
China
Prior art keywords
data
power
unit
storage unit
power data
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
Application number
CN201811194528.1A
Other languages
English (en)
Other versions
CN111047023B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201811194528.1A priority Critical patent/CN111047023B/zh
Publication of CN111047023A publication Critical patent/CN111047023A/zh
Application granted granted Critical
Publication of CN111047023B publication Critical patent/CN111047023B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Power Sources (AREA)

Abstract

本申请提供了一种神经网络计算装置及相关产品,所述计算装置包括:所述计算装置包括:存储单元,用于存储数据以及计算指令;控制单元,用于获取计算指令,解析所述计算指令得到多个运算指令,并将所述多个运算指令发送给所述运算单元;第一数据转换单元,用于将接收到的数据中的非幂次数据转换为幂次数据;运算单元,用于根据所述运算指令获取输入数据,并根据所述运算指令以及所述输入数据执行神经网络运算,其中,所述输入数据包括所述第一数据转换单元转换得到的幂次数据,所述运算单元包括加法器,所述加法器用于完成包含幂次数据的乘法运算。本申请揭露的计算装置,可减少神经网络计算中数据的存储量以及运算量,提高效率,降低功耗。

Description

一种计算装置及相关产品
技术领域
本申请涉及信息处理技术领域,具体涉及一种神经网络计算装置及相关产品。
背景技术
神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,这种网络由大量的节点(或称神经元)之间相互连接构成,通过调整内部大量节点之间相互连接的关系,利用输入数据、权值产生输出数据模拟人脑的信息处理过程处理信息并生成模式识别之后的结果。
随着神经网络技术特别是人工神经网络中深度学习(deep learning)技术的发展,神经网络模型规模越来越大,随之而来的运算量也呈现几何倍数增长,这意味着神经网络需要大量的计算资源和存储资源。大量的计算资源和存储资源的开销会降低神经网络的运算速度,同时,对硬件的传输带宽以及运算器的要求也大大提高了,因此,降低神经网络运算中数据的存储量以及计算量变得十分重要。
发明内容
本申请实施例提供了一种神经网络计算装置及相关产品,可以通过幂次数据表示神经网络中的数据,降低神经网络运算中数据的存储量以及计算量,提高效率、节省功耗。
第一方面,提供一种计算装置,所述计算装置用于执行神经网络计算,所述计算装置包括:存储单元、控制单元、第一数据转换单元以及运算单元;
所述存储单元,用于存储数据以及计算指令;
所述控制单元,用于获取计算指令,并解析所述计算指令得到多个运算指令,将所述多个运算指令发送给所述运算单元;
所述第一数据转换单元,用于将获取到的数据中的非幂次数据转换为幂次数据;
所述运算单元,用于根据所述运算指令获取输入数据,并根据所述运算指令以及所述输入数据执行神经网络运算,得到运算结果,其中,所述输入数据包括所述第一数据转换单元转换得到的幂次数据,所述运算单元包括加法器,所述加法器用于完成包含幂次数据的乘法运算。
本申请提供的计算装置,可以通过数据转换单元将非幂次数据转换为幂次数据,可以减少存储数据所需的存储空间。通过采用基于加法器的乘法单元,替代传统运算单元中的浮点定点乘法器,可以有效减少运算量大的乘法运算,从而提高神经网络运算速度,降低功耗。
第二方面,本申请实施例提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个如上述第一方面所述的计算装置,用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
第三方面,本申请实施例提供了一种组合处理装置,所述组合处理装置包括如第二方面所述的神经网络运算装置,通用互联接口和其他处理装置;所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。该组合装置还可以包括存储装置,该存储装置分别与所述神经网络运算装置和所述其他处理装置连接,用于保存所述神经网络运算装置和所述其他处理装置的数据。
第四方面,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的计算装置、上述第二方面所述的神经网络运算装置或者上述第三方面所述的组合处理装置。
第五方面,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第四方面所述的神经网络芯片;
第六方面,本申请实施例提供了一种板卡,该板卡包括上述第五方面所述的神经网络芯片封装结构。
第七方面,本申请实施例提供了一种电子装置,该电子装置包括上述第六方面所述的神经网络芯片或者上述第六方面所述的板卡。
第八方面,本申请实施例还提供一种执行神经网络模型的计算方法,所述计算方法应用于计算装置,所述计算装置用于执行神经网络计算;所述计算装置包括:存储单元、控制单元、第一数据转换单元以及运算单元;
所述存储单元存储数据以及计算指令;
所述控制单元获取计算指令,并解析所述计算指令得到多个运算指令,将所述多个运算指令发送给所述运算单元;
所述第一数据转换单元将获取到的数据中的非幂次数据转换为幂次数据;
所述运算单元根据所述运算指令获取输入数据,并根据所述运算指令以及所述输入数据执行神经网络运算,得到运算结果,其中,所述输入数据包括所述第一数据转换单元转换得到的幂次数据,所述运算单元包括加法器,所述加法器用于完成包含幂次数据的乘法运算。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算装置的结构示意图。
图2是本申请实施例提供的幂次数据的表示方法示意图。
图3是本申请实施例提供的一种乘法单元的结构示意图。
图4是本申请实施例提供一种幂次神经元数据与幂次权值数据的乘法操作示意图。
图5是本申请实施例提供的另一种乘法器的结构示意图。
图6是本申请实施例提供的一种神经元数据与幂次权值数据的乘法操作示意图。
图7是本申请实施例提供的另一种计算装置的结构示意图。
图8是本申请实施例提供的一种神经网络运算方法的流程示意图。
图9是本申请实施例提供的另一种神经网络运算方法的流程示意图。
图10是本申请实施例提供的一种组合处理装置的结构示意图。
图11是本申请实施例提供的另一种组合处理装置的结构示意图。
图12是本申请实施例提供的一种板卡的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参阅图1,图1是本申请提供的一种计算装置的结构示意图,该计算装置用于执行神经网络计算,该计算装置包括:存储单元10、控制单元11、运算单元12以及数据转换单元13,其中,存储单元10、控制单元11、运算单元12以及数据转换单元13四个单元两两相互连接,其中,所述数据转换单元包括第一数据转换,
存储单元10,用于存储数据以及计算指令,所述数据的存储格式包括非幂次格式和/或幂次数据格式,所述数据包括神经元数据以及权值数据,所述神经元数据包括幂次神经元数据或非幂次神经元数据,所述权值数据包括幂次权值数据或非幂次神经元数据;
所述控制单元11,用于获取计算指令,并解析上述计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述运算单元12;
在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
所述数据转换单元13中的所述第一数据转换单元将获取到的数据中的非幂次数据转换为幂次数据,其中,所述非幂次数据为所述数据转换单元从存储单元或运算单元获取到的需要转换为幂次数据的数据;
所述运算单元12,用于根据所述控制单元下发的所述运算指令获取输入数据,并根据所述运算指令以及所述输入数据执行神经网络运算,得到运算结果,其中,所述输入数据包括所述第一数据转换单元转换得到的幂次数据,所述运算单元包括加法器,所述加法器用于完成包含幂次数据的乘法运算。
在一种可能的实施方式中,所述存储单元10包括指令存储单元100以及数据存储单元101,所述指令存储单元用于存储指令,所述数据存储单元用于存储神经元数据、权值数据以及运算结果等。其中,所述数据存储单元可以包括神经元存储单元、权值存储单元以及结果存储单元,所述神经元存储单元用于存储神经元数据,所述权值存储单元用于存储权值数据,所述结果存储单元用于存储运算单元的运算结果。其中,所述数据存储单元中数据的存储格式可以为浮点数据、定点数据、动态范围定点数据以及幂次数据中的任意一种或者几种的组合,例如,所述神经元数据采用幂次数据存储在所述神经元存储单元,所述权值数据采用浮点数据的形式存储在所述权值存储单元,本申请实施例不做具体限定。
本申请实施例中,神经网络运算中的数据包括非幂次数据以及幂次数据。其中,非幂次数据指代的是通用的计算机数据,包括浮点数据、定点数据以及动态范围定点数据等,例如32位浮点数据、16位浮点数据、32位定点数据等等,幂次数据是指采用幂次格式表示的数据。本申请中运算单元执行神经网络运算时,参与运算的数据中部分数据为幂次数据或者全部数据为幂次数据。
本申请实施例中,所述存储单元10对数据的存储格式可以为浮点数据、定点数据、动态范围定点数据以及幂次数据中的任意一种或者多种。在所述存储单元采用幂次数据存储所述输入数据的情况下,幂次数据采用指定的幂次表示格式,可以为公式表达的方式,也可以采用编码表的方式。其幂次表示方式为幂次数据包括符号位和幂次位,符号位用一位或多位比特位表示数据的符号,幂次位用m位比特位表示数据的幂次位数据,m为大于1的正整数。幂次位编码方式可以直接采用二进制的补码形式表示数据的幂次位,即(-1)^(符号位)*2^(幂次位)。当采用编码表的方式表示幂次数据时,可以在存储单元预存有编码表,提供幂次数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次数据为0。也就是说,当幂次数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次数据为0。
在一种可能的实施例中,其中,所述编码表的对应关系可以是任意的。例如,所述编码表的对应关系可以是乱序的。如表1所示,一种m为5的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0,幂次位数据为00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应幂次数据为0。
表1编码表
幂次位数据 00000 00001 00010 00011 00100
指数数值 0 3 4 1 置零
在一种可能的实施例中,所述编码表的对应关系也可以是正相关的,存储单元预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,可以使本申请提供的计算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
可选地,y为1,x的数值等于-2m-1,则此幂次数据所表示的数值的指数范围为-2m-1~2m-1-1。可选地,如表2所示,一种m为5,x为0,y为1的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次数据为0。如表3所示,另一种m为5,x为0,y为2的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时候对应幂次数据为0。
表2编码表
幂次位数据 00000 00001 00010 00011 11111
指数数值 0 1 2 3 置零
表3编码表
幂次位数据 00000 00001 00010 00011 11111
指数数值 0 2 4 6 置零
在一种可能的实施方式中,编码表的对应关系可以是负相关的,存储单元预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,可以使本申请提供的计算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
可选地,y为1,x的数值等于2m-1,则此幂次数据所表示的数值的指数范围为-2m-1-1~2m-1。如表4所示,一种m为5的编码表的部分内容,幂次位数据为11111的时候对应指数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为3。幂次位数据为00000的时候对应幂次数据为0。
表4编码表
幂次位数据 11111 11110 11101 11100 00000
指数数值 0 1 2 3 置零
在一种可能的实施方式中,编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次数据为0;当幂次位数据最高位为1时,对应幂次数据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次数据为0;当幂次位数据最高位为0时,对应幂次数据不为0。用另一种语言来描述,即幂次数据的幂次位被分出一个比特来指示幂次数据是否为0。
可选地,如图2所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次权值数据对应相应的二进制补码。当幂次权值数据符号位为0,幂次位为0001001,则其表示具体数值为29,即512;幂次权值数据符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过数据转换单元将非幂次数据转换为幂次数据,可以减少存储数据所需的存储空间。在本实施例所提供的示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据数据的数据范围采用不同的数据长度。
本申请实施例中,所述运算单元12包括一个或多个乘法单元120以及一个或多个加法单元121,所述一个或多个乘法单元中每个乘法单元120用于对输入的神经元数据与权值数据进行乘法运算,得到中间结果;所述一个或多个加法单元中每个加法单元用于对所述中间结果进行累加运算,以得到神经网络运算的运算结果。
在一种可能的实施方式中,所述乘法单元包括加法器,所述乘法单元可以采用加法器完成乘法运算,具体地,在所述乘法单元中参与运算的两个数据均为幂次数据的情况下,例如两个数据分别为幂次神经元数据与幂次权值数据,则首先将幂次神经元数据符号位与幂次权值数据符号位做异或操作,得到中间结果的符号位;然后在编码表的对应关系为乱序的情况下,查找编码表找出幂次神经元数据及幂次权值数据幂次位对应的指数数值,在编码表的对应关系为正相关的情况下,记录编码表的指数数值最小值并做加法找出幂次神经元数据及幂次权值数据幂次位对应的指数数值,在编码表的对应关系为负相关的情况下,记录编码表的最大值并做减法找出幂次神经元数据及幂次权值数据幂次位对应的指数数值;将幂次神经元数据对应的指数数值与幂次权值数据对应的指数数值做加法操作,得到中间结果的指数数值,将所述中间结果的符号位与所述中间结果的指数数值进行组合得到所述中间结果。在该实施方式中,乘法单元结构如图3所示,乘法单元将输入数据1和数据2的符号位进行异或操作,得到输出数据的符号位,输入数据1和输入数据2的指数数值相加得到输出数据的幂次位数据,从而得到输入数据1与输入数据2的乘积结果。
举例来讲,如图4所示,幂次神经元数据和幂次权值数据符号位为1位,幂次位数据位为4位,即m为4。编码表为幂次位数据为1111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元数据为00010,则其表示的实际数值为22。幂次权值为00110,则其表示的实际数值为64,即26。幂次神经元数据和幂次权值数据的乘积为01000,其表示的实际数值为28
在一种可能的实施方式中,所述乘法单元包括加法器,所述乘法单元可以采用加法器完成乘法运算,具体地,在所述乘法单元中参与运算的两个数据分别为浮点数据和幂次数据的情况下,例如神经元数据为幂次神经元数据,权值数据为浮点数据,则首先将幂次神经元数据符号位与权值数据符号位做异或操作,得到中间结果的符号位;然后在编码表的对应关系为乱序的情况下,查找编码表找出幂次神经元数据幂次位对应的指数数值,在编码表的对应关系为正相关的情况下,记录编码表的指数数值最小值并做加法找出幂次神经元数据幂次位对应的指数数值,在编码表的对应关系为负相关的情况下,记录编码表的最大值并做减法找出幂次神经元数据幂次位对应的指数数值;将幂次神经元数据的指数数值与权值数据幂次位做加法操作,权值数据有效位保持不变,得到所述中间结果的幂次位,将所述中间结果的符号位、所述中间结果的幂次位以及所述权值数据的有效位进行组合得到所述中间结果。在该实施方式中,乘法单元结构如图5所示,乘法单元将输入数据1和输入数据2的符号位进行异或操作,得到输出数据的符号位,输入数据1和输入数据2的幂次位数据相加得到输出数据的幂次位数据,输入数据2的有效位保留,从而得到输入数据1与输入数据2的乘积结果。
举例来讲,如图6所示,若权值数据为16位浮点数据,符号位为0,幂次位为10101,有效位为0110100000,则其表示的实际数值为1.40625*26。幂次神经元数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元数据为000110,则其表示的实际数值为64,即26。幂次神经元数据的指数数值加上权值数据的幂次位结果为11011,则结果的实际数值为1.40625*212,即为幂次神经元数据与权值数据的乘积得到的中间结果。通过该运算操作,可以使得乘法操作变为加法操作,减小计算所需的运算量。需要说明的是,上述举例中非幂次数据为浮点数据,所述非幂次数据还可以是其他形式的数据,例如定点数据,本申请对非幂次数据的形式不做具体限制,同样,上述举例中也可以是神经元数据为非幂次数据,权值数据为幂次数据,本申请不做具体限定。
通过上述两个实施例可知,本申请的实施例通过采用基于加法器的乘法单元,替代传统运算单元中的浮点定点乘法器,可以有效减少运算量大的乘法运算,从而提高神经网络运算速度,降低功耗。
在另一种可能的实施方式中,所述乘法单元包括移位器,所述乘法单元可以采用移位器完成乘法运算,具体地,在所述乘法单元中参与运算的数据包括至少一个幂次数据的情况下,例如神经元数据为幂次神经元数据,权值数据为浮点数据,比较幂次神经元数据与幂次权值数据的符号位,在所述幂次神经元数据与权值数据的符号位相反的情况下获取所述权值数据的补码,或者在所述幂次神经元数据与权值数据的符号位相同的情况下保持所述权值数据不变,并通过移位器根据幂次数据对所述非幂次数据(或所述非幂次数据非补码)进行左移或者右移,以得到所述中间结果。
通过上述实施例可知,本申请的实施例通过可以采用基于移位器的乘法单元,替代传统运算单元中的浮点定点乘法器,可以有效减少运算量大的乘法运算,从而提高神经网络运算速度,降低功耗。
可选地,所述运算单元还可以包括缓存单元,所述缓存单元用于缓存所述乘法单元得到的中间结果以及所述加法单元得到的运算结果。
本申请提供的计算装置,可以通过数据转换单元将非幂次数据转换为幂次数据,可以减少存储数据所需的存储空间。通过采用基于加法器和/或移位器的乘法单元,替代传统运算单元中的浮点定点乘法器,可以有效减少运算量大的乘法运算,从而提高神经网络运算速度,降低功耗。
本申请实施例中,所述第一数据转换单元用于将非幂次数据转换为幂次数据,具体的,如图1所示,所述第一数据转换单元用于在所述运算单元从所述存储单元中读取输入数据时,根据所述运算单元的运算需求,将所述输入数据中需要转换的非幂次数据转换为幂次数据,并将转换后得到的幂次数据发送给所述运算单元,其中,所述非幂次数据包括非幂次神经元数据以及非幂次权值数据。
所述数据转换单元13还包括第二数据转换单元131,所述第二数据转换单元用于将幂次数据转换为非幂次数据,具体的,所述运算单元执行完神经网络运算得到所述运算结果之后,若所述运算结果为幂次数据,所述存储单元需要以非幂次数据格式保存所述运算结果,则所述第二数据转换单元将幂次运算结果转换为非幂次运算结果,并将所述非幂次运算结果发送给所述存储单元进行存储。
在一种可能的实施方式中,如图7所示,所述计算装置包括全局存储单元14,所述全局存储单元为片下存储单元,用于在片下存储神经元数据、权值数据以及运算结果等,所述全局存储单元的组成单元以及各组成单元的作用可以参照上述存储单元,在此不再赘述。
可选地,当所述计算装置包括所述全局存储单元的情况下,所述第一数据转换单元可以在所述存储单元从所述全局存储单元中读取数据时,将从所述全局存储单元获取的所述输入数据中的非幂次数据转换为幂次数据,并将转换后得到的幂次数据传送给所述数据存储单元;所述第二数据转换单元将从所述存储单元获取的幂次数据转换为非幂次数据,并将转换后得到的幂次数据传送给所述全局存储单元。或者,所述存储单元从所述全局存储单元中读取数据之后存储在所述存储单元中,在所述运算单元读取数据时,所述第一数据转换单元将从所述数据存储单元获取的所述输入数据中的非幂次数据转换为幂次数据,并将转换后得到的幂次数据传送给所述运算单元,所述第二数据转换单元将从所述运算单元获取的幂次数据转换为非幂次数据,并将转换后得到的幂次数据传送给所述存储单元。即所述数据转换单元可以在所述存储单元与所述全局存储单元进行数据交互时执行数据的转换,也可以在所述存储单元与所述运算单元进行数据交互时执行数据的转换。
基于上述实施例提供的计算装置,本申请还提供基于幂次数据的神经网络的运算方法。在一种可能的实施方式中,如图8所示,图8是在计算装置包括全局存储单元,神经元数据以及所述权值数据均以幂次数据的形式存储在所述全局存储单元中时,基于幂次数据的神经网络运算的运算流程,本实施方式提供的基于幂次数据的神经网络运算方法包括:
步骤S101,控制单元读取载入指令,对所述载入指令进行译码。
所述控制单元读取载入指令,经过译码将译码后的载入指令发送给所述存储单元。
步骤S102,存储单元接收译码后的载入指令,根据译码后的载入指令从全局存储单元读取输入数据。
所述存储单元根据接收到的经过译码后的载入指令,从所述全局存储单元中读取所述载入指令指示读取的幂次神经元数据以及幂次权值数据,分别存入存储单元中的神经元存储单元以及权值存储单元。
步骤S103,控制单元读取计算指令,将所述计算指令经过译码得到运算指令,并将所述运算指令传送给运算单元。
步骤S104,运算单元接收所述运算指令,根据所述运算指令执行神经网络运算,得到运算结果。
所述运算单元根据所述运算指令,从所述存储单元中读取幂次神经元数据以及幂次权值数据,运算单元各个乘法单元对每个乘法单元中的幂次神经元数据以及幂次权值数据进行乘法运算,得到中间结果,并将所述中间结果传送给加法单元进行加法运算得到运算结果。
步骤S105,运算单元将神经网络运算得到的运算结果发送给存储单元进行存储。
在一种可能的实施方式中,如图9所示,图9是在计算装置包括全局存储单元,神经元数据以及所述权值数据均以浮点数据的形式存储在所述全局存储单元中,所述神经网络运算需求为神经元数据为幂次数据,权值数据为浮点数据时,基于幂次数据的神经网络运算的运算流程,本实施方式提供的基于幂次数据的神经网络运算方法包括:
步骤S201,控制单元读取载入指令,对所述载入指令进行译码。
所述控制单元读取载入指令,经过译码将译码后的载入指令发送给所述存储单元。
步骤S202,所述存储单元接收译码后的载入指令,根据译码后的载入指令从全局存储单元读取输入数据。
所述存储单元根据接收到的经过译码后的载入指令,从所述全局存储单元中读取所述载入指令指示读取的神经元数据以及权值数据,分别存入存储单元中的神经元存储单元以及权值存储单元。
步骤S203,控制单元读取计算指令,将所述计算指令经过译码得到运算指令,并将所述运算指令传送给运算单元和数据转换单元。
步骤S204,数据转换单元接收所述运算指令,根据运算需求执行数据转换。
所述数据转换单元根据运算指令,获取所述运算指令需要幂次神经元数据,所述数据转换单元从所述神经元存储单元获取神经元数据,利用第一数据转换单元将所述神经元数据转换为幂次神经元数据,并将所述幂次神经元数据传送给所述运算单元。
步骤S205,运算单元接收所述运算指令,根据所述运算指令执行神经网络运算,得到运算结果。
所述运算单元根据所述运算指令,从所述数据转换单元中读取幂次神经元数据,从所述权值存储单元读取权值数据,运算单元的各个乘法单元对每个乘法单元中的幂次神经元数据以及权值数据进行乘法运算,得到中间结果,并将所述中间结果传送给加法单元进行加法运算得到运算结果。
步骤S206,运算单元将神经网络运算得到的运算结果发送给存储单元进行存储。
需要说明的是,上述两个实施例中基于幂次数据的神经网络运算流程只用于举例说明,不能理解为具体限定,所述神经网络运算流程还可以包括其他步骤或者需求,例如神经元数据以及权值数据均以定点数据存储,运算需求为权值数据为幂次数据,神经元数据为定点数据等,本申请不做你具体限定。
本申请还揭露了一个神经网络运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。图10为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对神经网络神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图11所示,还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
本申请还揭露了一种芯片,其包括了上述神经网络运算装置或组合处理装置。
本申请还揭露了一种芯片封装结构,其包括了上述芯片。
本申请还揭露了一种板卡,其包括了上述芯片封装结构。参阅图12,图12提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
本申请还揭露了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (28)

1.一种计算装置,其特征在于,所述计算装置用于执行神经网络计算,所述计算装置包括:存储单元、控制单元、第一数据转换单元以及运算单元;
所述存储单元,用于存储数据以及计算指令;
所述控制单元,用于获取计算指令,并解析所述计算指令得到多个运算指令,将所述多个运算指令发送给所述运算单元;
所述第一数据转换单元,用于将获取到的数据中的非幂次数据转换为幂次数据;
所述运算单元,用于根据所述运算指令获取输入数据,并根据所述运算指令以及所述输入数据执行神经网络运算,其中,所述输入数据包括所述第一数据转换单元转换得到的幂次数据,所述运算单元包括加法器,所述加法器用于完成包含幂次数据的乘法运算。
2.根据权利要求1所述的装置,其特征在于,幂次数据表示数据的数值采用其幂指数值形式表示,其中,所述幂次数据包括符号位和幂次位,符号位采用一位或多位比特位表示神经元数据的符号,幂次位采用m位比特位表示幂次位数据,m为大于1的正整数。
3.根据权利要求2所述的装置,其特征在于,所述存储单元存储有编码表,所述编码表包括幂次数据的每个幂次位与指数数值的对应关系,所述编码表设置一个或者多个幂次位数据为置零幂次位数据,其对应的幂次数据为0。
4.根据权利要求3所述的装置,其特征在于,所述编码表的对应关系为乱序关系;或所述编码表的对应关系为正相关关系,最大的幂次位数据对应幂次数据为0;或所述编码表的对应关系为负相关关系,最小的幂次位数据对应幂次数据为0;或所述编码表的对应关系满足幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。
5.根据权利要求1-4任意一项所述的装置,其特征在于,所述运算单元包括:一个或多个乘法单元以及一个或多个加法单元;
所述一个或多个乘法单元,用于对输入的神经元数据与权值数据进行乘法运算,得到中间结果;所述一个或多个加法单元,用于对所述中间结果进行累加运算,以得到神经网络运算的运算结果。
6.根据权利要求5所述的装置,其特征在于,所述乘法单元包括加法器,在所述乘法单元中参与运算的数据全部为幂次数据的情况下,或者在所述乘法单元中参与运算的两个数据分别为浮点数据与幂次数据的情况下,所述乘法单元采用加法器完成数据的乘法运算。
7.根据权利要求5或6所述的装置,其特征在于,所述乘法单元包括移位器,在所述乘法单元中参与运算的数据中包括至少一个幂次数据的情况下,所述乘法器采用移位器完成数据的乘法运算。
8.根据权利要求6所述的装置,其特征在于,
在所述乘法单元中参与运算的数据全部为幂次数据的情况下,将两个乘数的符号位进行异或操作得到中间结果的符号位,将两个乘数的指数数值相加得到中间结果的指数数值,对所述中间结果的符号位与指数数值进行组合得到所述中间结果。
9.根据权利要求7所述的装置,其特征在于,
在所述乘法单元中参与运算的数据包括至少一个幂次数据的情况下,比较非幂次数据与幂次数据的符号位,在所述非幂次数据与幂次数据的符号位相反的情况下获取所述非幂次数据的补码,或者在所述非幂次数据与幂次数据的符号位相同的情况下保持所述非幂次数据不变,并通过移位器根据幂次数据对所述非幂次数据进行左移或者右移,以得到所述中间结果。
10.根据权利要求5所述的装置,其特征在于,所述存储单元包括指令存储单元以及数据存储单元;
所述指令存储单元,用于存储所述计算指令;
所述数据存储单元,用于存储所述输入数据以及运算结果,所述数据存储单元包括神经元存储单元、权值存储单元以及结果存储单元,所述神经元存储单元存储用于存储神经元数据或者幂次神经元数据,所述权值存储单元用于存储权值数据或者幂次权值数据。
11.根据权利要求10所述的装置,其特征在于,所述第一数据转换单元具体用于:
将从全局存储单元获取的所述数据中的非幂次数据转换为幂次数据,并将转换后得到的幂次数据传送给所述数据存储单元,其中,所述非幂次数据包括非幂次神经元数据;
或者,将从所述数据存储单元获取的所述数据中的非幂次数据转换为幂次数据,并将转换后得到的幂次数据传送给所述运算单元。
12.根据权利要求11所述的装置,其特征在于,所述计算装置还包括第二数据转换单元;
所述第二数据转换单元用于将从所述存储单元获取的幂次数据转换为非幂次数据,并将转换后得到的非幂次数据传送给所述全局存储单元;
或者,所述第二数据转换单元用于将从所述运算单元获取的幂次数据转换为非幂次数据,并将转换后得到的非幂次数据传送给所述存储单元。
13.一种组合处理装置,其特征在于,所述组合处理装置包括一个或多个如权利要求1-12任一项所述的计算装置、通用互联接口、存储装置和其他处理装置,所述计算装置用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的神经网络运算,将执行结果通过通用互联接口传递给其他处理装置;
当所述组合处理装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑;
存储装置,所述存储装置分别与所述多个所述计算装置和所述其他处理装置连接,用于保存所述组合处理装置和所述其他处理装置的数据。
14.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求13所述的组合处理装置。
15.一种电子设备,其特征在于,所述电子设备包括如所述权利要求14所述的芯片。
16.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求14所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
17.一种执行神经网络模型的计算方法,其特征在于,所述计算方法应用于计算装置,所述计算装置用于执行神经网络计算,所述计算装置包括:存储单元、控制单元、第一数据转换单元以及运算单元;
所述存储单元存储数据以及计算指令;
所述控制单元获取计算指令,并解析所述计算指令得到多个运算指令,将所述多个运算指令发送给所述运算单元;
所述第一数据转换单元将获取到的数据中的非幂次数据转换为幂次数据;
所述运算单元根据所述运算指令获取输入数据,并根据所述运算指令以及所述输入数据执行神经网络运算,得到运算结果,其中,所述输入数据包括所述第一数据转换单元转换得到的幂次数据,所述运算单元包括加法器,所述加法器用于完成包含幂次数据的乘法运算。
18.根据权利要求17所述方法,其特征在于,幂次数据表示数据的数值采用其幂指数值形式表示,其中,所述幂次数据包括符号位和幂次位,符号位采用一位或多位比特位表示神经元数据的符号,幂次位采用m位比特位表示幂次位数据,m为大于1的正整数。
19.根据权利要求18所述的方法,其特征在于,所述存储单元存储有编码表,所述编码表包括幂次数据的每个幂次位与指数数值的对应关系,所述编码表设置一个或者多个幂次位数据为置零幂次位数据,其对应的幂次数据为0。
20.根据权利要求19所述的方法,其特征在于,所述编码表的对应关系为乱序关系;或所述编码表的对应关系为正相关关系,最大的幂次位数据对应幂次数据为0;或所述编码表的对应关系为负相关关系,最小的幂次位数据对应幂次数据为0;或所述编码表的对应关系满足幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。
21.根据权利要求17-20任意一项所述的方法,其特征在于,所述运算单元包括:一个或多个乘法单元以及一个或多个加法单元;
所述一个或多个乘法单元对输入的神经元数据与权值数据进行乘法运算,得到中间结果;所述一个或多个加法单元对所述中间结果进行累加运算,以得到神经网络运算的运算结果。
22.根据权利要求21所述的方法,其特征在于,所述乘法单元包括加法器,在所述乘法单元中参与运算的数据全部为幂次数据的情况下,或者在所述乘法单元中参与运算的两个数据分别为浮点数据与幂次数据的情况下,所述乘法单元可以采用加法器完成数据的乘法运算。
23.根据权利要求21或22所述的方法,其特征在于,所述乘法单元包括移位器,在所述乘法单元中参与运算的数据中包括至少一个幂次数据的情况下,所述乘法器可以采用移位器完成数据的乘法运算。
24.根据权利要求22所述的方法,其特征在于,
在所述乘法单元中参与运算的数据全部为幂次数据的情况下,将两个乘数的符号位进行异或操作得到中间结果的符号位,将两个乘数的指数数值相加得到中间结果的指数数值,对所述中间结果的符号位与指数数值进行组合得到所述中间结果。
25.根据权利要求23所述的方法,其特征在于,
在所述乘法单元中参与运算的数据包括至少一个幂次数据的情况下,比较非幂次数据与幂次数据的符号位,在所述非幂次数据与幂次数据的符号位相反的情况下获取所述非幂次数据的补码,或者在所述非幂次数据与幂次数据的符号位相同的情况下保持所述非幂次数据不变,并通过移位器根据幂次数据对所述非幂次数据进行左移或者右移,以得到所述中间结果。
26.根据权利要求21所述的方法,其特征在于,所述存储单元包括指令存储单元以及数据存储单元;
所述指令存储单元存储所述计算指令;
所述数据存储单元存储所述输入数据以及运算结果,所述数据存储单元包括神经元存储单元、权值存储单元以及结果存储单元,所述神经元存储单元存储用于存储神经元数据或者幂次神经元数据,所述权值存储单元用于存储权值数据或者幂次权值数据。
27.根据权利要求26所述的方法,其特征在于,所述第一数据转换单元用于将接收到的数据中的非幂次数据转换为幂次数据,包括:
所述第一数据转换单元将从全局存储单元获取的所述数据中的非幂次数据转换为幂次数据,并将转换后得到的幂次数据传送给所述数据存储单元,其中,所述非幂次数据包括非幂次神经元数据;
或者,所述第一数据转换单元将从所述数据存储单元获取的所述数据中的非幂次数据转换为幂次数据,并将转换后得到的幂次数据传送给所述运算单元。
28.根据权利要求27所述的方法,其特征在于,所述计算装置还包括第二数据转换单元;
所述第二数据转换单元将从所述存储单元获取的幂次数据转换为非幂次数据,并将转换后得到的非幂次数据传送给所述全局存储单元;
或者,所述第二数据转换单元将从所述运算单元获取的幂次数据转换为非幂次数据,并将转换后得到的非幂次数据传送给所述存储单元。
CN201811194528.1A 2018-10-12 2018-10-12 一种计算装置及相关产品 Active CN111047023B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811194528.1A CN111047023B (zh) 2018-10-12 2018-10-12 一种计算装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811194528.1A CN111047023B (zh) 2018-10-12 2018-10-12 一种计算装置及相关产品

Publications (2)

Publication Number Publication Date
CN111047023A true CN111047023A (zh) 2020-04-21
CN111047023B CN111047023B (zh) 2023-11-24

Family

ID=70230142

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811194528.1A Active CN111047023B (zh) 2018-10-12 2018-10-12 一种计算装置及相关产品

Country Status (1)

Country Link
CN (1) CN111047023B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339322A (ja) * 2004-05-28 2005-12-08 Kddi Corp 多層ニューラルネットワーク学習装置及びソフトウェア
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
CN107992329A (zh) * 2017-07-20 2018-05-04 上海寒武纪信息科技有限公司 一种计算方法及相关产品

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339322A (ja) * 2004-05-28 2005-12-08 Kddi Corp 多層ニューラルネットワーク学習装置及びソフトウェア
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
CN107992329A (zh) * 2017-07-20 2018-05-04 上海寒武纪信息科技有限公司 一种计算方法及相关产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨银涛;汪海波;张志;周建华;: "基于FPGA的人工神经网络实现方法的研究" *

Also Published As

Publication number Publication date
CN111047023B (zh) 2023-11-24

Similar Documents

Publication Publication Date Title
CN109543832B (zh) 一种计算装置及板卡
CN109522052B (zh) 一种计算装置及板卡
CN110163363B (zh) 一种计算装置及方法
CN111381871B (zh) 运算方法、装置及相关产品
CN111047022B (zh) 一种计算装置及相关产品
CN111045728B (zh) 一种计算装置及相关产品
CN110059797B (zh) 一种计算装置及相关产品
CN111353598A (zh) 一种神经网络压缩方法、电子设备及计算机可读介质
CN111488976A (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN111930681B (zh) 一种计算装置及相关产品
CN109711540B (zh) 一种计算装置及板卡
CN110059809B (zh) 一种计算装置及相关产品
CN111488963A (zh) 神经网络计算装置和方法
CN111047021B (zh) 一种计算装置及相关产品
CN109740730B (zh) 运算方法、装置及相关产品
CN111368967A (zh) 一种神经网络计算装置和方法
CN111368987B (zh) 一种神经网络计算装置和方法
CN111047023A (zh) 一种计算装置及相关产品
CN111047024B (zh) 一种计算装置及相关产品
CN111198714B (zh) 重训练方法及相关产品
CN111368990B (zh) 一种神经网络计算装置和方法
CN111723920A (zh) 人工智能计算装置及相关产品
CN111382835A (zh) 一种神经网络压缩方法、电子设备及计算机可读介质
CN111382850A (zh) 运算方法、装置及相关产品
CN111382852A (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