CN111105033A - 神经网络处理器板卡及相关产品 - Google Patents

神经网络处理器板卡及相关产品 Download PDF

Info

Publication number
CN111105033A
CN111105033A CN201911335145.6A CN201911335145A CN111105033A CN 111105033 A CN111105033 A CN 111105033A CN 201911335145 A CN201911335145 A CN 201911335145A CN 111105033 A CN111105033 A CN 111105033A
Authority
CN
China
Prior art keywords
data
processing circuit
circuit
neural network
basic
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
CN201911335145.6A
Other languages
English (en)
Other versions
CN111105033B (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201911335145.6A priority Critical patent/CN111105033B/zh
Publication of CN111105033A publication Critical patent/CN111105033A/zh
Application granted granted Critical
Publication of CN111105033B publication Critical patent/CN111105033B/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/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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/061Physical 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本披露提供一种神经网络处理器板卡及相关产品,所述神经网络处理器板卡包括:神经网络芯片封装结构、第一电气及非电气连接装置和第一基板;所述神经网络芯片封装结构包括:神经网络芯片、第二电气及非电气连接装置和第二基板,所述第二基板承载所述神经网络芯片,所述第二基板通过所述第二电气及非电气连接装置与所述神经网络芯片连接。本披露提供的技术方案具有计算量小,功耗低的优点。

Description

神经网络处理器板卡及相关产品
技术领域
本披露涉及神经网络领域,尤其涉及一种神经网络处理器板卡及相关产品。
背景技术
人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现神经网络的运算,此种运算的计算量大,功耗高。
发明内容
本披露实施例提供了一种神经网络处理器板卡及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种神经网络处理器板卡,所述神经网络处理器板卡包括:神经网络芯片封装结构、第一电气及非电气连接装置和第一基板;所述神经网络芯片封装结构包括:神经网络芯片、第二电气及非电气连接装置和第二基板,所述第二基板承载所述神经网络芯片,所述第二基板通过所述第二电气及非电气连接装置与所述神经网络芯片连接;
所述神经网络芯片包括:主处理电路、k个分支电路以及k组基础处理电路,所述主处理电路与所述k个分支电路分别连接,k个分支电路中每个分支电路对应k组基础处理电路中的一组基础处理电路,所述一组基础处理电路包括至少一个基础处理电路;
所述分支电路包括:数据类型运算电路,用于执行浮点类型数据与定点类型数据之间的转换;
所述主处理电路,用于执行神经网络运算中的各个连续的运算以及和与其相连的所述k个分支电路传输数据;
所述k个分支电路,用于在主处理电路与k组基础处理电路之间转发所述传输数据,依据所述传输数据的运算控制是否启动所述数据类型运算电路对所述传输数据的类型执行转换;
所述k个基础处理电路,用于依据所述传输数据或转换后的传输数据以并行方式执行神经网络中的运算,并将运算结果通过与所述主处理电路连接的分支电路传输给所述主处理电路。
第二方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第一方面提供的神经网络处理器板卡。
第三方面,提供一种组合处理装置,所述组合处理装置包括:第二方面提供的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
可以看出,通过本披露实施例,提供数据转换运算电路将数据块的类型进行转换后运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。
附图说明
图1a是一种神经网络芯片结构示意图。
图1b是另一种神经网络芯片结构示意图。
图1c是一种基础处理电路的结构示意图。
图1d为一种定点数据类型的示意结构图。
图2为一种矩阵乘以向量流程示意图。
图2a是矩阵乘以向量的示意图。
图2b为一种矩阵乘以矩阵流程示意图。
图2c是矩阵Ai乘以向量B的示意图。
图2d是矩阵A乘以矩阵B的示意图。
图2e是矩阵Ai乘以矩阵B的示意图。
图3a为神经网络训练示意图。
图3b为卷积运算示意图。
图4a为神经网络正向运算示意图。
图4b为神经网络反向运算示意图。
图4c为本披露还揭露了一个组合处理装置结构示意图。
图4d为本披露还揭露了一个组合处理装置另一种结构示意图。
图5a为神经网络另一种正向运算示意图。
图5b为神经网络另一种反向运算示意图。
图5c为本披露实施例提供的一种神经网络处理器板卡的结构示意图;
图5d为本披露实施例提供的一种神经网络芯片封装结构的结构示意图;
图5e为本披露实施例提供的一种神经网络芯片的结构示意图;
图6为本披露实施例流提供的一种神经网络芯片封装结构的示意图;
图6a为本披露实施例流提供的另一种神经网络芯片封装结构的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
在第一方面提供的板卡中,所述神经网络芯片封装结构还包括:散热装置。
在第一方面提供的板卡中,所述神经网络芯片封装结构的封装结构为下述封装的任意一种:
倒装芯片球栅阵列封装、薄型四方扁平式封装、带散热器的四方扁平封装、无引脚四方扁平封装、小间距四方扁平式封装。
在第一方面提供的板卡中,所述主处理电路,用于获取待计算的数据块以及运算指令,依据该运算指令对所述待计算的数据块划分成分发数据块以及广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至与其连接的所述k个分支电路,将所述广播数据块广播至与其连接的所述k个分支电路;
所述k个分支电路,用于接收基本数据块以及广播数据块,启动数据类型运算电路将该基本数据块以及广播数据块转换成定点数据类型;将基本数据块以及广播数据块以定点数据类型转发至k组基础处理电路;
所述基础处理电路,用于对所述基本数据块与所述广播数据块以定点数据类型执行内积运算得到运算结果,将所述运算结果发送至所述k个分支电路;
所述k个分支电路,用于将所述运算结果转换成浮点类型的运算结果,将浮点类型的运算结果发送至主处理电路;
所述主处理电路,用于对所述浮点类型的运算结果处理得到所述待计算的数据块以及运算指令的指令结果。
在第一方面提供的板卡中,所述主处理电路,具体用于将所述广播数据块通过一次广播至所述k个分支电路。
在第一方面提供的板卡中,所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述K个分支电路。
在第一方面提供的板卡中,所述基础处理电路,具体用于将所述部分广播数据块与所述基本数据块以定点类型执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述k个分支电路,
所述k个分支电路,用于将所述部分运算结果转换成浮点类型数据发送至所述主处理电路。
在第一方面提供的板卡中,所述基础处理电路,具体用于复用n次该部分广播数据块以定点数据类型执行该部分广播数据块与该n个基本数据块内积运算得到定点数据类型的n个部分处理结果,将定点数据类型的n个部分处理结果分别累加后得到定点类型的n个部分运算结果,将所述定点类型的n个部分运算结果发送至分支电路;
所述分支电路,用于将所述定点类型的n个部分运算结果转换成浮点类型的n个部分运算结果,将浮点类型的n个部分运算结构发送至主处理电路,所述n为大于等于2的整数。
在第一方面提供的板卡中,所述主处理电路包括:主寄存器或主片上缓存电路;
或所述分支电路包括:基本寄存器或基本片上缓存电路;
或所述基础处理电路包括:基本寄存器或基本片上缓存电路。
在第一方面提供的板卡中,所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路、数据类型运算电路或数据重排电路中的一种或任意组合。
在第一方面提供的板卡中,所述数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
在第一方面提供的板卡中,如所述运算指令为乘法指令,所述主处理电路确定乘数数据块为广播数据块,被乘数数据块为分发数据块;
如所述运算指令为卷积指令,所述主处理电路确定输入数据块为广播数据块,卷积核为分发数据块。
参阅图1a,图1a为一种神经网络芯片的结构示意图,如图1a所示,该芯片装置包括:主处理电路、基本处理电路和分支处理电路。其中,具体的,神经网络芯片包括:主处理电路、k个分支电路(如图1a所示,k=4,当然在实际应用中也可以为其他数值,例如8、16等等数值)以及k组基础处理电路,所述主处理电路与所述k个分支电路分别连接,k个分支电路中每个分支电路对应k组基础处理电路中的一组基础处理电路,所述一组基础处理电路包括至少一个基础处理电路;所述分支电路包括:数据类型运算电路,用于执行浮点类型数据与定点类型数据之间的转换;所述主处理电路,用于执行神经网络运算中的各个连续的运算以及和与其相连的所述k个分支电路传输数据;所述k个分支电路,用于在主处理电路与k组基础电路之间转发所述传输数据,依据所述传输数据的运算控制是否启动所述数据类型运算电路对所述传输数据的类型执行转换;所述k个基础处理电路,用于依据所述传输数据或转换后的传输数据以并行方式执行神经网络中的运算,并将运算结果通过与所述主处理电路连接的分支电路传输给所述主处理电路
主处理电路可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、ALU(arithmetic and logic unit,算数逻辑单元)电路、累加器电路、DMA(Direct Memory Access,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路;
可选的,主处理电路可以包括:数据类型转换运算电路,数据类型转换运算电路可以用于将接收或发送的数据从浮点类型数据转换成定点类型数据,当然在实际应用中,也可以将定点类型数据转换成浮点类型数据。本发明并不限制上述数据类型转换运算电路的具体形式。
主处理电路还包括数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置;在实际应用中上述数据发送电路以及数据接收电路也可以集成在一起形成数据收发电路。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的选择方式可以由主处理电路依据负载以及计算方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本申请具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。
在实现分发数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据(该数据可以相同,也可以不同,具体的,如果采用分发的方式发送数据,各个接收数据的基础处理电路收到的数据可以不同,当然也可以有部分基础处理电路收到的数据相同;
具体地,广播数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据,各个接收数据的基础处理电路可以收到相同的数据。
可选的,上述主处理电路的向量运算器电路可以执行向量运算,包括但不限于:两个向量加减乘除,向量与常数加、减、乘、除运算,或者对向量中的每个元素执行任意运算。其中,连续的运算具体可以为,向量与常数加、减、乘、除运算、激活运算、累加运算等等。
每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。
该芯片装置可选的还可以包括一个或多个分支处理电路,如具有分支处理电路时,其中主处理电路与分支处理电路连接,该分支处理电路与基本处理电路连接,该基本处理电路的内积运算器电路用于执行数据块之间的内积运算,该主处理电路的控制电路控制数据接收电路或数据发送电路收发外部数据,以及通过控制电路控制数据发送电路将外部数据分发至分支处理电路,该分支处理电路用于收发主处理电路或基本处理电路的数据。如图1a所示的结构适合复杂数据的计算,因为对于主处理电路来说,其连接的单元的数量有限,所以需要在主处理电路与基本处理电路之间添加分支处理电路以实现更多的基本处理电路的接入,从而实现对复杂数据块的计算。分支处理电路和基础处理电路的连接结构可以是任意的,不局限在图1a的H型结构。可选的,主处理电路到基础处理电路是广播或分发的结构,基础处理电路到主处理电路是收集(gather)的结构。广播,分发和收集的定义如下,对于分发或广播结构,此时的基础处理电路的数量大于主处理电路,即1个主处理电路对应多个基础处理电路,即从主处理电路到多个基础处理电路为广播或分发的结构,反之,从多个基础处理电路到主处理电路可以为收集结构。
基础处理电路,接收主处理电路分发或者广播的数据保存到基础处理电路的片上缓存中,可以进行运算产生结果,可以向主处理电路发送数据。
基础处理电路中所涉及到的数据可以是任意数据类型的数据,可以是任意位宽的浮点数表示的数据也可以是任意位宽的定点数表示的数据;涉及到的所有运算电路和存储电路都可以是能够处理的任意数据类型的运算电路和存储电路,可以是任意位宽的浮点数的运算电路和存储电路也可以是任意位宽的定点数的运算电路和存储电路。
可选的,每个基础处理电路均可以包括数据类型转换运算电路,也可以在部分基础处理电路配置数据类型转换运算电路;数据类型转换运算电路可以用于将接收或发送的数据从浮点类型数据转换成定点类型数据,也可以将定点类型数据转换成浮点类型数据。本发明并不限制上述数据类型转换运算电路的具体形式。
可选的,该基础处理电路的向量运算器电路可以对数据类型转换后的两个向量执行的向量运算,当然在实际应用中,基础处理电路的内积运算器电路可以对数据类型转换后的两个向量执行内积运算,累加器电路也可以对内积运算的结果进行累加。
在一种可选方案中,两个向量可以存放在片上缓存和/或寄存器中,基础处理电路可以根据实际计算的需要提取两个向量执行运算。该运算包括但不限于:内积运算、乘法运算、加法运算或其他的运算。
在一种可选方案中,内积运算的结果可以累加到片上缓存和/或寄存器上;其可选方案的优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。
在一种可选方案中,内积运算的结果不进行累加,直接作为结果传输;此技术方案的优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
在一种可选方案中,每个基础处理电路可以执行多组两个向量的内积运算,也可以对多组内积运算的结果分别进行累加;
在一种可选方案中,多组的两个向量数据可以存放在片上缓存和/或寄存器中;
在一种可选方案中,多组内积运算的结果可以分别累加到片上缓存和/或寄存器中;
在一种可选方案中,各组内积运算的结果可以不进行累加,直接作为结果传输;
在一种可选方案中,每个基础处理电路可以执行同一个向量与多个向量分别进行内积运算的操作(“一对多”内积,即多组内积里每组的两个向量中有一个向量是共享的),并将每个向量对应的内积结果分别进行累加。此技术方案可以实现同一套权值对不同的输入数据进行多次计算,增加了数据复用,减少基础处理电路内部数据的数据传输量,提高计算效率,降低功耗。
具体地,计算内积使用的数据中,各组共享的向量和每组的另一个向量(即每组之间不同的那个向量)的数据来源可以不同:
在一种可选方案中,在计算内积时,各组共享的向量来自主处理电路或者分支处理电路的广播或者分发;
在一种可选方案中,在计算内积时,各组共享的向量来自片上缓存;
在一种可选方案中,在计算内积时,各组共享的向量来自寄存器;
在一种可选方案中,在计算内积时,每组的另一个非共享向量来自主处理电路或者分支处理电路的广播或者分发;
在一种可选方案中,在计算内积时,每组的另一个非共享向量来自从片上缓存;
在一种可选方案中,在计算内积时,每组的另一个非共享向量来自寄存器;
在一种可选方案中,在进行多组的内积运算时,每组共享的向量在基础处理电路的片上缓存和/寄存器中保留任意份数;
在一种可选方案中,共享向量可以对应每组内积各保留一份;
在一种可选方案中,共享向量可以只保留一份;
具体地,多组内积运算的结果可以分别累加到片上缓存和/或寄存器中;
具体地,各组内积运算的结果可以不进行累加,直接作为结果传输;
参阅图1a所示的结构,其包含一主处理电路(可以执行向量操作),多基础处理电路(可以执行内积操作)。这样组合的好处是:装置不仅能使用基础处理电路执行矩阵和向量乘法运算,也能使用主处理电路执行其他任意的向量运算,使装置在有限的硬件电路的配置下,能够更快的完成更多的运算,减少了与装置外部进行数据传输的次数,提高了计算效率,降低了功耗。另外,本芯片在基础处理电路和/或主处理电路均可以设置数据类型转换运算电路,这样在进行神经网络计算时能够将浮点类型数据转换成定点类型数据,也可以将定点类型数据转换成浮点类型数据,并且本芯片可以依据各个电路(主要是主处理电路和基础处理电路)的运算量(即负载量)动态的分配由那个电路将数据类型进行转换,这样能够减少数据计算的复杂程序,降低功耗,并且动态的分配数据类型的转换能够实现不影响芯片的计算效率。该分配的方式包括但不限于:负载均衡、负载最小值分配等等方式。
参阅图1b所示的装置,图1b所示的装置为分支处理电路单独连接基础处理电路的计算装置,如图1b所示的装置,其包括:主处理电路以及N个基础处理电路,其中,主处理电路(具体的结构如图1c所示)与N个基础处理电路可以直接或间接连接,如为间接连接的方式时,一种可选的方案如图1a所示可以包括N/4个分支处理电路,每个分支处理电路分别连接4个基础处理电路,对于主处理电路以及N个基础处理电路分别包含的电路可以参见上述如图1a所示的描述,这里不再赘述,这里需要说明的是,上述基础处理电路还可以设置在分支处理电路内,另外,每个分支处理电路连接基础处理电路的数量也可以不局限于4个,厂家可以根据实际需要进行配置。该上述主处理电路和/或N个基础处理电路均可以包括数据类型转换运算电路,具体的,可以是主处理电路包括数据类型运算电路,也可以是N个基础处理电路或其中的一部分包括数据类型转换电路,也可以是主处理电路和N个基础处理电路或其中的一部分均包括。上述主处理电路可以根据神经网络计算指令动态的分配数据类型转换步骤的操作实体,具体的,主处理电路可以根据自身的负载确定是否对接收到的数据执行数据类型转换步骤,具体的,可以将负载的值设置多个区间,每个区间对应分配数据类型转换步骤的执行主体,例如,以3个区间为例,区间1的负载值较低,可以由主处理电路单独执行数据类型转换步骤,区间2负载值位于区间1以及区间3之间,可以由主处理电路或N个基础处理电路共同执行数据类型转换步骤,区间3负载值较高,可以由N个基础处理电路执行数据类型转换步骤。对此,可以以明示的方式来执行,例如主处理电路可以配置一个特殊指示或指令,当基础处理电路接收到该特殊指示或指令时,确定执行数据类型转换步骤,如基础处理电路未接收到特殊指示或指令时,确定不执行数据类型转换步骤。又如,可以以暗示的方式来执行,例如,基础处理电路接收到数据类型为浮点类型的数据且确定需要执行内积运算时,将该数据类型转换成定点类型的数据。
下面提供一种采用如图1a所示的装置实现计算的方法,该计算的方法具体可以为神经网络的计算方式,例如神经网络的正向运算,神经网络的训练,在实际应用中,正向运算依据不同的输入数据可以执行矩阵乘矩阵、卷积运算、激活运算、变换运算等等运算,上述运算均可以采用如图1a所示的装置实现。
主处理电路的数据转换运算电路先对数据的类型进行转换然后由控制电路传输给基础处理电路运算,例如,主处理电路的数据转换运算电路可以将浮点数转换成位宽更低的定点数再传输给基础处理电路,其优点是可以减少传输数据的位宽,减少传输的总比特数量,基础处理电路执行地位宽定点运算的效率也更高,功耗更低。
如基础处理电路接收到的数据为浮点数据,那么基础处理电路可以收到数据后由数据转换运算电路先进行数据类型转化然后再进行计算,例如,基础处理电路收到主处理电路传输过来的浮点数,数据转换运算电路然后转换为定点数,然后基础处理电路的内积运算器电路、向量运算器电路或累加器电路进行运算,提高运算效率,降低功耗。
基础处理电路计算出结果之后可以先进行数据类型转换然后再传输给主处理电路,例如,基础处理电路计算出的浮点数运算结果可以先转换为低位宽的定点数然后再传输给主处理电路,其好处是降低了传输过程的数据位宽,效率更高,而且节约了功耗。
主处理电路将待计算的数据传输到全部或者一部分基础处理电路上;以矩阵乘以向量计算为例,主处理电路的控制电路可以将矩阵数据拆分每列作为一个基础数据,例如m*n矩阵,可以拆分成n个m行的向量,主处理电路的控制电路将拆分后的n个m行的向量分发给多个基础处理电路。对于向量,主处理电路的控制电路可以将向量整体广播给每个基础处理电路。如果m的值比较大,那么控制电路可以先将m*n矩阵拆分成x*n个向量,以x=2为例,具体的可以拆分成,2n个向量,每个向量包含m/2行,即将n个m行的向量中每个向量均分成2个向量,以第一行为例,如n个m行的向量的第一个向量为1000行,那么均分成2个向量可以为,将前500行组成第一向量,将后500行组成第二向量,控制电路通过2个广播将2个向量广播给多个基础处理电路。
所述数据传输的方式可以是广播或者分发,或者其他任何可能的传输方式;
基础处理电路接收到数据后,执行运算,得到运算结果;
基础处理电路将运算结果传输回主处理电路;
所述运算结果可以是中间运算结果,也可以是最终运算结果。
使用如图1a所示装置完成矩阵乘向量的运算;
(矩阵乘向量可以是矩阵中的每一行分别与向量进行内积运算,并将这些结果按对应行的顺序摆放成一个向量。)
下面描述计算尺寸是M行L列的矩阵S和长度是L的向量P的乘法的运算,如下图2a所示,(矩阵S中的每一行与向量P长度相同,他们中的数据按位置一一对应)所述神经网络计算装置拥有K个基础处理电路:
参阅图2,图2提供了了一种矩阵乘向量的实现方法,具体可以包括:
步骤S201、主处理电路的数据转换运算电路将矩阵S中的每一行数据转换成定点类型的数据,主处理电路的控制电路分发到K个基础处理电路中的某一个上,基础处理电路将接收到的分发数据保存在基础处理电路的片上缓存和/或寄存器中;
在一种可选方案中,如果矩阵S的行数M<=K则,主处理电路的控制电路给K个基础处理电路分别分发S矩阵的一行;
在一种可选方案中,如果矩阵S的行数M>K,则主处理电路的控制电路给每个基础处理电路分别分发S矩阵中一行或多行的数据。
分发到第i个基础处理电路的S中的行的集合为Ai,共有Mi个行,如图2c表示第i个基础处理电路上将要执行的计算。
在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中,可以将接收到的分发数据例如矩阵Ai保存在第i个基础处理电路的寄存器和/或片上缓存中;优点是减少了之后的分发数据的数据传输量,提高了计算效率,降低了功耗。
步骤S202、主处理电路的数据类型运算电路将向量P转换成定点类型的数据,主处理电路的控制电路将定点类型的向量P中各部分以广播的方式传输给K个基础处理电路;
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的向量P的数据进行充分地复用,完成对应与矩阵Ai中每一行的内积运算。优点是,减少从主处理电路到基础处理电路的向量P的重复传输的数据传输量,提高执行效率,降低传输功耗。
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量P的数据不进行复用,分次完成对应于矩阵Ai中的每一行的内积运算;优点是,减少基础处理电路内部的单次传输的向量P的数据传输量,并可以降低基础处理电路缓存和/或寄存器的容量,提高执行效率,降低传输功耗,降低成本。
在一种可选方案中,主处理电路的控制电路可以将向量P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量P的数据进行部分复用,完成对应于矩阵Ai中的每一行的内积运算;优点是,减少从主处理电路到基础处理电路的数据传输量,也减少基础处理电路内部的数据传输量,提高执行效率,降低传输功耗。
步骤S203、K个基础处理电路的内积运算器电路计算矩阵S和向量P的数据的内积,例如第i个基础处理电路,计算矩阵Ai的数据和向量P的数据的内积;
步骤S204、K个基础处理电路的累加器电路将内积运算的结果进行累加得到累加结果,将累加结果以定点类型形式传输回主处理电路。
在一种可选方案中,可以将每次基础处理电路执行内积运算得到的部分和(部分和即累加结果的一部分,例如累加结果为:F1*G1+F2*G2+F3*G3+F4*G4+F5*G5,那么部分和可以为:F1*G1+F2*G2+F3*G3的值)传输回主处理电路进行累加;优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。
参阅图2b,使用如图1a所示的装置完成矩阵乘矩阵的运算;
下面描述计算尺寸是M行L列的矩阵S和尺寸是L行N列的矩阵P的乘法的运算,(矩阵S中的每一行与矩阵P的每一列长度相同,如图2d所示)所述神经网络计算装置拥有K个基础处理电路:
步骤S201b、主处理电路的控制电路将矩阵S中的每一行数据分发到K个基础处理电路中的某一个上,基础处理电路将接收到的数据保存在片上缓存和/或寄存器中;
在一种可选方案中,如果S的行数M<=K则,主处理电路的控制电路给M个基础处理电路分别分发S矩阵的一行;
在一种可选方案中,如果S的行数M>K,主处理电路的控制电路给每个基础处理电路分别分发S矩阵中一行或多行的数据。
S中有Mi行分发到第i个基础处理电路,这Mi行的集合称为Ai,如图2e表示第i个基础处理电路上将要执行的计算。
在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:
接收的由主处理电路分发的矩阵Ai,将矩阵Ai保存在第i个基础处理电路寄存器和/或片上缓存中;优点是减少了之后的数据传输量,提高了计算效率,降低了功耗。
步骤S202b、主处理电路的控制电路将矩阵P中各部分以广播的方式传输给各个基础处理电路;
在一种可选方案中,可以将矩阵P中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的矩阵P的数据进行充分地复用,完成对应与矩阵Ai中每一行的内积运算;本实施例中的复用具体可以为基础处理电路在计算中重复使用,例如矩阵P的数据的复用,可以是对矩阵P的数据在多次使用。
在一种可选方案中,主处理电路的控制电路可以将矩阵P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵P的数据不进行复用,分次完成对应于矩阵Ai中的每一行的内积运算;
在一种可选方案中,主处理电路的控制电路可以将矩阵P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵P的数据进行部分复用,完成对应于矩阵Ai中的每一行的内积运算;
在一种可选方案中,每个基础处理电路,例如第i个基础处理电路,计算矩阵Ai的数据和矩阵P的数据的内积;
步骤S203b、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路。
在一种可选方案中,基础处理电路可以将每次执行内积运算得到的部分和传输回主处理电路进行累加;
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;
在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;
参阅图3a,使用如图1a所示的装置完成全连接运算:
如果全连接层的输入数据是一个向量(即神经网络的输入是单个样本的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为向量P,按照所述装置的使用方法一执行如图2所示的矩阵乘向量的运算;
如果全连接层的输入数据是一个矩阵(即神经网络的输入是多个样本作为batch的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为矩阵P,或者以全连接层的权值矩阵作为矩阵P,输入向量作为矩阵S,按照所述装置的使用如图2c所示的矩阵乘矩阵的执行运算;
参阅图3b,使用如图1a所示的装置完成卷积运算:
对于一个卷积层,记其卷积核的数量为M;
步骤S301、主处理电路的控制电路将卷积层权值中的每一个卷积核的权值分发到K个基础处理电路中的某一个上,保存在基础处理电路的片上缓存和/或寄存器中;
在一种可选方案中,如果卷积核的个数M<=K则,主处理电路的控制电路给M个基础处理电路分别分发一个卷积核的权值;
在一种可选方案中,如果卷积核的个数M>K,主处理电路的控制电路给每个基础处理电路分别分发一个或多个卷积核的权值。
共有Mi个卷积核分发到第i个基础处理电路,这些卷积核权值的集合称为Ai。
在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:
将收到的由主处理电路分发的卷积核权值Ai保存在其寄存器和/或片上缓存中;
步骤S302、主处理电路的控制电路将输入数据P中各部分以广播的方式传输给各个基础处理电路;
在一种可选方案中,主处理电路的控制电路可以将输入数据P中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的输入数据P的数据进行充分地复用,完成对应与Ai中每一个卷积核的内积运算;
在一种可选方案中,主处理电路的控制电路可以将输入数据P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的输入数据P的数据不进行复用,分次完成对应于Ai中的每一个卷积核的内积运算;
在一种可选方案中,主处理电路的控制电路可以将输入数据P中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的输入数据P的数据进行部分复用,完成对应于Ai中的每一个卷积核的内积运算;
步骤S303、每个基础处理电路计算卷积核和输入数据P的数据内积,例如第i个基础处理电路,计算Ai的每一个卷积核和输入数据P的数据的内积;
步骤S304、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路:
在一种可选方案中,可基础处理电路以将每次执行内积运算得到的部分和传输回主处理电路进行累加;
在一种可选方案中,基础处理电路也可以将每次执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;
在一种可选方案中,基础处理电路也可以将每次执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;
使用如图1a所示的装置更新权值的方法:
利用主处理电路的向量运算器电路实现神经网络训练过程中的权值更新功能,具体地,权值更新是指使用权值的梯度来更新权值的方法。
在一种可选方案中,使用主处理电路的向量运算器电路对权值和权值梯度这两个向量进行加减运算得到运算结果,该运算结果即为更新权值。
在一种可选方案中,使用主处理电路的向量运算器电路在权值以及权值梯度乘以或除以一个数得到中间权值和中间权值梯度值,向量运算器电路对中间权值和中间权值梯度值进行加减运算得到运算结果,该运算结果即为更新权值。
在一种可选方案中,可以先使用权值的梯度计算出一组动量,然后再使用动量与权值进行加减计算得到更新后的权值;
使用如图1a所示的装置实现全连接层的反向运算的方法
全连接层的反向运算可以分成两部分,如下图4a所示,实线箭头表示全连接层的正向计算过程,如图4b所示,表示全连接层的反向计算过程。
图4a、图4b所示的全连接层的反向运算,可以使用如图1a所示的装置如图2b所示的矩阵乘矩阵方法来完成;
使用如图1a所示的装置实现卷积层的反向运算;
卷积层的反向运算可以分成两部分,如下图5a中,实线箭头表示卷积层的正向计算过程,如图5b所示,表示卷积层的反向计算过程。
图5a、图5b所示的卷积层的反向运算,可以使用如图1a所示装置采用如图3b所示的方法完成卷积层的反向运算。
使用如图1a所示的装置实现BLAS(Basic Linear Algebra Subprograms)函数的方法
GEMM计算是指:BLAS库中的矩阵-矩阵乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*op(P)+beta*C,其中,S和P为输入的两个矩阵,C为输出矩阵,alpha和beta为标量,op代表对矩阵S或P的某种操作,此外,还会有一些辅助的整数作为参数来说明矩阵的S和P的宽高;
使用如图1a的装置实现GEMM计算的步骤包括:
主处理电路的数据类型转换运算电路可以对矩阵S以及矩阵P进行数据类型转换;
主处理电路的转换电路对输入矩阵S和矩阵P进行各自相应的op操作;
在一种可选方案中,op可以为矩阵的转置操作;可以利用主处理电路的矩阵转置电路实现该矩阵转置操作;
在一种可选方案中,在执行完矩阵S和矩阵P的OP操作以后,还可以由主处理电路的数据转换运算电路执行数据类型转换操作,即数据转换运算电路将op(S)以及op(P)的数据类型由浮点类型数据转换成定点类型数据,然后执行如图2b所示的矩阵乘法运算。
在一种可选方案中,某个矩阵的op可以为空,op操作不进行;
用如图1a所示的装置的使用如图2b中所述矩阵乘矩阵的计算方法完成op(S)与op(P)之间的矩阵乘法计算;
利用主处理电路的算术逻辑单元对op(S)*op(P)的结果中的每一个值进行乘以alpha的操作;
本发明还提供一种芯片,该芯片包含计算装置,该计算装置包括:
包括一个主处理电路,主处理电路中所涉及到的数据可以是任意数据类型的数据,在一种可选方案中,可以是任意位宽的浮点数表示的数据也可以是任意位宽的定点数表示的数据;涉及到的所有运算电路和存储电路都可以是任意数据类型的运算电路和存储电路,在一种可选方案中,可以是任意位宽的浮点数的运算电路和存储电路也可以是任意位宽的定点数的运算电路和存储电路。
在一种可选方案中,主处理电路包括数据类型转换运算电路;
在一种可选方案中,主处理电路包括执行数据类型转换的向量运算单元;
具体地,包含接收输入数据的数据输入接口;
在一种可选方案中,所述接收的数据来源可以是:所述神经网络运算电路装置的外部或所述神经网络运算电路装置的部分或全部基础处理电路;
在一种可选方案中,所述数据输入接口可以有多个;具体地,可以包含输出数据的数据输出接口;
在一种可选方案中,所述输出的数据的去向可以是:所述神经网络运算装置的外部或所述神经网络运算电路装置的部分或全部基础处理电路;
在一种可选方案中,所述数据输出接口可以有多个;
在一种可选方案中,所述主处理电路包括片上缓存和/或寄存器;
在一种可选方案中,所述主处理电路中包含运算单元,可以执行数据运算;
在一种可选方案中,所述主处理电路中包含算术运算单元;
在一种可选方案中,所述主处理电路中包含向量运算单元,可以同时对一组数据执行运算;具体地,所述算术运算和/或向量运算可以是任意类型的运算,包括但不限于:两个数相加减乘除,一个数与常数加减乘除,对一个数执行指数运算,幂次运算,对数运算,以及各种非线性运算,对两个数执行比较运算,逻辑运算等。两个向量相加减乘除,一个向量中的每一个元素与常数加减乘除,对向量中的每一个元素执行指数运算,幂次运算,对数运算,以及各种非线性运算等,对一个向量中的每两个对应的元素执行比较运算,逻辑运算等。
在一种可选方案中,所述主处理电路包括数据重排列单元,用于按照一定的顺序向基础处理电路传输数据,或者按照一定的顺序原地重新排列数据;
在一种可选方案中,所述数据排列的顺序包括:对一个多维数据块进行维度顺序的变换;所述数据排列的顺序还可以包括:对一个数据块进行分块以发送到不同的基础处理电路。
该计算装置还包括多个基础处理电路:每一个基础处理电路用于计算两个向量的内积,计算的方法是,基础处理电路收到的两组数,将这两组数中的元素对应相乘,并且将相乘的结果累加起来;内积的结果传输出去,这里传输出去根据基础处理电路的位置,有可能传输给其他基础处理电路,也可以直接传输给主处理电路。
基础处理电路中所涉及到的数据可以是任意数据类型的数据,在一种可选方案中,可以是任意位宽的浮点数表示的数据也可以是任意位宽的定点数表示的数据;涉及到的所有运算电路和存储电路都可以是任意数据类型的运算电路和存储电路,在一种可选方案中,可以是任意位宽的浮点数的运算电路和存储电路也可以是任意位宽的定点数的运算电路和存储电路。
在一种可选方案中,基础处理电路包括数据类型转换运算电路;
在一种可选方案中,基础处理电路包括执行数据类型转换的向量运算单元;
具体地,包括由片上缓存和/或寄存器构成的存储单元;
具体地,包括一个或多个接收数据的数据输入接口;
在一种可选方案中,包括两个数据输入接口,每次从两个数据输入接口处可以分别获得一个或多个数据;
在一种可选方案中,基础处理电路可以将从数据输入接口接收到输入数据后保存在寄存器和/或片上缓存中;
上述数据输入接口接收数据的来源可以是:其他基础处理电路和/或主处理电路。
所述神经网络运算电路装置的主处理电路;
所述神经网络运算电路装置的其他基础处理电路(所述神经网络运算电路装置拥有多个基础处理电路);
具体地,包括一个或多个传输输出数据的数据输出接口;
在一种可选方案中,可以将一个或多个数据从数据输出接口传输出去;
具体地,通过数据输出接口传输出去的数据可以是:从数据输入接口接收到的数据、保存在片上缓存和/或寄存器中的数据、乘法器运算结果、累加器运算结果或内积运算器运算结果中的一种或任意组合。
在一种可选方案中,包含三个数据输出接口,其中的两个分别对应于两个数据输入接口,每一层出上一层从数据输入接口接收到的数据,第三个数据输出接口负责输出运算结果;
具体地,所述数据输出接口传输数据的去向可以是:上文数据来源和此处的数据去向决定了基础处理电路在装置中的连接关系。
所述神经网络运算电路装置的主处理电路;
所述神经网络运算电路装置的其他基础处理电路,所述神经网络运算电路装置拥有多个基础处理电路;
具体地,包括算术运算电路:该算术运算电路具体可以为:一个或多个乘法器电路、一个或多个累加器电路、一个或多个执行两组数内积运算的电路中的一个或任意组合。
在一种可选方案中,可以执行两个数的乘法运算,其结果可以保存在片上缓存和/或寄存器上,也可以直接累加到寄存器和/或片上缓存中;
在一种可选方案中,可以执行两组数据的内积运算,其结果可以保存在片上缓存和/或寄存器中,也可以直接累加到寄存器和/或片上缓存中;
在一种可选方案中,可以执行数据的累加运算,将数据累加到片上缓存和或寄存器中;
具体地,累加器电路被累加的数据,可以是:从数据输入接口接收到的数据、保存在片上缓存和/或寄存器中的数据、乘法器运算结果、累加器运算结果、内积运算器运算结果中的一个或任意组合。
需要说明的是,上述对基础处理电路的描述中所用到的“数据输入接口”和“数据输出接口”是指每一个基础处理电路的数据输入与输出接口,而不是整个装置的数据输入与输出接口。
本披露还揭露了一个神经网络运算装置,其包括一个或多个在如图1a或如图1b所示的芯片,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上神如图1a或如图1b所示的芯片时,如图1a或如图1b所示的芯片间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本披露还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置(即通用处理装置)。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。如4c下图为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
如图4d所示,可选的,该结构还包括存储装置,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
本披露实施例提供了一种神经网络处理器板卡,可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、智能家居、家电、多处理器系统、基于微处理器的系统、机器人、可编程的消费电子设备、网络个人计算机(personal computer,PC)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
请参照图5c,图5c为本披露实施例提供的一种神经网络处理器板卡的结构示意图。如图5c所示,上述神经网络处理器板卡10包括神经网络芯片封装结构11、第一电气及非电气连接装置12和第一基板(substrate)13。
本披露对于神经网络芯片封装结构11的具体结构不作限定,可选的,如图5d所示,上述神经网络芯片封装结构11包括:神经网络芯片111、第二电气及非电气连接装置112、第二基板113。
本披露所涉及的神经网络芯片111的具体形式不作限定,上述的神经网络芯片111包含但不限于将神经网络处理器集成的神经网络晶片,上述晶片可以由硅材料、锗材料、量子材料或分子材料等制成。根据实际情况(例如:较严苛的环境)和不同的应用需求可将上述神经网络晶片进行封装,以使神经网络晶片的大部分被包裹住,而将神经网络晶片上的引脚通过金线等导体连到封装结构的外边,用于和更外层进行电路连接。
本披露对于神经网络芯片111的具体结构不作限定,可选的,请参照图1a或图1b所示的装置。
本披露对于第一基板13和第二基板113的类型不做限定,可以是印制电路板(printed circuit board,PCB)或(printed wiring board,PWB),还可能为其它电路板。对PCB的制作材料也不做限定。
本披露所涉及的第二基板113用于承载上述神经网络芯片111,通过第二电气及非电气连接装置112将上述的神经网络芯片111和第二基板113进行连接得到的神经网络芯片封装结构11,用于保护神经网络芯片111,便于将神经网络芯片封装结构11与第一基板13进行进一步封装。
对于上述具体的第二电气及非电气连接装置112的封装方式和封装方式对应的结构不作限定,可根据实际情况和不同的应用需求选择合适的封装方式并进行简单地改进,例如:倒装芯片球栅阵列封装(Flip Chip Ball Grid Array Package,FCBGAP),薄型四方扁平式封装(Low-profile Quad Flat Package,LQFP)、带散热器的四方扁平封装(QuadFlat Package with Heat sink,HQFP)、无引脚四方扁平封装(Quad Flat Non-leadPackage,QFN)或小间距四方扁平式封装(Fine-pitch Ball Grid Package,FBGA)等封装方式。
倒装芯片(Flip Chip),适用于对封装后的面积要求高或对导线的电感、信号的传输时间敏感的情况下。除此之外可以用引线键合(Wire Bonding)的封装方式,减少成本,提高封装结构的灵活性。
球栅阵列(Ball Grid Array),能够提供更多引脚,且引脚的平均导线长度短,具备高速传递信号的作用,其中,封装可以用引脚网格阵列封装(Pin Grid Array,PGA)、零插拔力(Zero Insertion Force,ZIF)、单边接触连接(Single Edge Contact Connection,SECC)、触点阵列(Land Grid Array,LGA)等来代替。
可选的,采用倒装芯片球栅阵列(Flip Chip Ball Grid Array)的封装方式对神经网络芯片111和第二基板113进行封装,具体的神经网络芯片封装结构的示意图可参照图6。如图6所示,上述神经网络芯片封装结构包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26。
其中,焊盘22与神经网络芯片21相连,通过在焊盘22和第二基板24上的连接点25之间焊接形成焊球23,将神经网络芯片21和第二基板24连接,即实现了神经网络芯片21的封装。
引脚26用于与封装结构的外部电路(例如,神经网络处理器板卡10上的第一基板13)相连,可实现外部数据和内部数据的传输,便于神经网络芯片21或神经网络芯片21对应的神经网络处理器对数据进行处理。对于引脚的类型和数量本披露也不作限定,根据不同的封装技术可选用不同的引脚形式,并遵从一定规则进行排列。
可选的,上述神经网络芯片封装结构还包括绝缘填充物,置于焊盘22、焊球23和连接点25之间的空隙中,用于防止焊球与焊球之间产生干扰。
其中,绝缘填充物的材料可以是氮化硅、氧化硅或氧氮化硅;干扰包含电磁干扰、电感干扰等。
可选的,上述神经网络芯片封装结构还包括散热装置,用于散发神经网络芯片21运行时的热量。其中,散热装置可以是一块导热性良好的金属片、散热片或散热器,例如,风扇。
举例来说,如图6a所示,神经网络芯片封装结构11包括:神经网络芯片21、焊盘22、焊球23、第二基板24、第二基板24上的连接点25、引脚26、绝缘填充物27、散热膏28和金属外壳散热片29。其中,散热膏28和金属外壳散热片29用于散发神经网络芯片21运行时的热量。
可选的,上述神经网络芯片封装结构11还包括补强结构,与焊盘22连接,且内埋于焊球23中,以增强焊球23与焊盘22之间的连接强度。
其中,补强结构可以是金属线结构或柱状结构,在此不做限定。
本披露对于第一电气及非电气装置12的具体形式也不作限定,可参照第二电气及非电气装置112的描述,即通过焊接的方式将神经网络芯片封装结构11进行封装,也可以采用连接线连接或插拔方式连接第二基板113和第一基板13的方式,便于后续更换第一基板13或神经网络芯片封装结构11。
可选的,第一基板13包括用于扩展存储容量的内存单元的接口等,例如:同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)、双倍速率同步动态随机存储器(Double Date Rate SDRAM,DDR)等,通过扩展内存提高了神经网络处理器的处理能力。
第一基板13上还可包括快速外部设备互连总线(Peripheral ComponentInterconnect-Express,PCI-E或PCIe)接口、小封装可热插拔(Small Form-factorPluggable,SFP)接口、以太网接口、控制器局域网总线(Controller Area Network,CAN)接口等等,用于封装结构和外部电路之间的数据传输,可提高运算速度和操作的便利性。
将神经网络处理器封装为神经网络芯片111,将神经网络芯片111封装为神经网络芯片封装结构11,将神经网络芯片封装结构11封装为神经网络处理器板卡10,通过板卡上的接口(插槽或插芯)与外部电路(例如:计算机主板)进行数据交互,即直接通过使用神经网络处理器板卡10实现神经网络处理器的功能,并保护神经网络芯片111。且神经网络处理器板卡10上还可添加其他模块,提高了神经网络处理器的应用范围和运算效率。
在一个实施例里,本公开公开了一个电子装置,其包括了上述神经网络处理器板卡10或神经网络芯片封装结构11。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。

Claims (10)

1.一种神经网络处理器板卡,其特征在于,所述神经网络处理器板卡包括:神经网络芯片封装结构、第一电气及非电气连接装置和第一基板;所述神经网络芯片封装结构包括:神经网络芯片、第二电气及非电气连接装置和第二基板,所述第二基板承载所述神经网络芯片,所述第二基板通过所述第二电气及非电气连接装置与所述神经网络芯片连接;
所述神经网络芯片包括:主处理电路、k个分支电路以及k组基础处理电路,所述主处理电路与所述k个分支电路分别连接,k个分支电路中每个分支电路对应k组基础处理电路中的一组基础处理电路,所述一组基础处理电路包括至少一个基础处理电路;
所述分支电路包括:数据类型运算电路,用于执行浮点类型数据与定点类型数据之间的转换;
所述主处理电路,用于执行神经网络运算中的各个连续的运算以及和与其相连的所述k个分支电路传输数据;
所述k个分支电路,用于在主处理电路与k组基础处理电路之间转发所述传输数据,依据所述传输数据的运算控制是否启动所述数据类型运算电路对所述传输数据的类型执行转换;
所述k个基础处理电路,用于依据所述传输数据或转换后的传输数据以并行方式执行神经网络中的运算,并将运算结果通过与所述主处理电路连接的分支电路传输给所述主处理电路。
2.根据权利要求1所述的神经网络处理器板卡,其特征在于,
所述神经网络芯片封装结构还包括:焊盘、焊球,补强结构,所述第二基板包括:连接点和引脚;
所述焊盘与所述神经网络芯片连接,所述焊球形成于所述焊盘与所述第二基板的连接点之间;所述引脚与所述第一基板相连,实现外部数据和内部数据的传输;所述补强结构与焊盘连接,所述补强结构内埋于所述焊球中。
3.根据权利要求2所述的神经网络处理器板卡,其特征在于,所述第二基板还包括:绝缘填充物、散热膏和金属外壳散热片;所述散热膏和所述金属外壳散热片用于散发所述神经网络芯片运行时的热量。
4.根据权利要求1-3任意一项所述的神经网络处理器板卡,其特征在于,所述第一基板还包括:快速外部设备互连总线接口、小封装可热插拔接口、以太网接口或控制器局域网总线接口。
5.根据权利要求1-3任意一项所述的神经网络处理器板卡,其特征在于,所述神经网络芯片封装结构的封装结构为下述封装的任意一种:
倒装芯片球栅阵列封装、薄型四方扁平式封装、带散热器的四方扁平封装、无引脚四方扁平封装、小间距四方扁平式封装。
6.根据权利要求1所述的神经网络处理器板卡,其特征在于,
所述主处理电路,用于获取待计算的数据块以及运算指令,依据该运算指令对所述待计算的数据块划分成分发数据块以及广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至与其连接的所述k个分支电路,将所述广播数据块广播至与其连接的所述k个分支电路;
所述k个分支电路,用于接收基本数据块以及广播数据块,启动数据类型运算电路将该基本数据块以及广播数据块转换成定点数据类型;将基本数据块以及广播数据块以定点数据类型转发至k组基础处理电路;
所述基础处理电路,用于对所述基本数据块与所述广播数据块以定点数据类型执行内积运算得到运算结果,将所述运算结果发送至所述k个分支电路;
所述k个分支电路,用于将所述运算结果转换成浮点类型的运算结果,将浮点类型的运算结果发送至主处理电路;
所述主处理电路,用于对所述浮点类型的运算结果处理得到所述待计算的数据块以及运算指令的指令结果;
所述主处理电路,具体用于将所述广播数据块通过一次广播至所述k个分支电路;
所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述k个分支电路;
所述基础处理电路,具体用于将所述部分广播数据块与所述基本数据块以定点类型执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述k个分支电路,
所述k个分支电路,用于将所述部分运算结果转换成浮点类型数据发送至所述主处理电路;
所述基础处理电路,具体用于复用n次该部分广播数据块以定点数据类型执行该部分广播数据块与该n个基本数据块内积运算得到定点数据类型的n个部分处理结果,将定点数据类型的n个部分处理结果分别累加后得到定点类型的n个部分运算结果,将所述定点类型的n个部分运算结果发送至分支电路;
所述分支电路,用于将所述定点类型的n个部分运算结果转换成浮点类型的n个部分运算结果,将浮点类型的n个部分运算结构发送至主处理电路,所述n为大于等于2的整数。
7.根据权利要求1所述的神经网络处理器板卡,其特征在于,
所述主处理电路包括:主寄存器或主片上缓存电路;
或所述分支电路包括:基本寄存器或基本片上缓存电路;
或所述基础处理电路包括:基本寄存器或基本片上缓存电路;
所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路、数据类型运算电路或数据重排电路中的一种或任意组合。
8.根据权利要求1所述的神经网络处理器板卡,其特征在于,
所述数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
如所述运算指令为乘法指令,所述主处理电路确定乘数数据块为广播数据块,被乘数数据块为分发数据块;
如所述运算指令为卷积指令,所述主处理电路确定输入数据块为广播数据块,卷积核为分发数据块。
9.一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求1-8任意一项所述的神经网络处理器板卡。
10.一种组合处理装置,其特征在于,所述组合处理装置包括:如权利要求9所述的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
CN201911335145.6A 2017-12-14 2017-12-14 神经网络处理器板卡及相关产品 Active CN111105033B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911335145.6A CN111105033B (zh) 2017-12-14 2017-12-14 神经网络处理器板卡及相关产品

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711347406.7A CN109961134B (zh) 2017-12-14 2017-12-14 集成电路芯片装置及相关产品
CN201911335145.6A CN111105033B (zh) 2017-12-14 2017-12-14 神经网络处理器板卡及相关产品

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201711347406.7A Division CN109961134B (zh) 2017-12-14 2017-12-14 集成电路芯片装置及相关产品

Publications (2)

Publication Number Publication Date
CN111105033A true CN111105033A (zh) 2020-05-05
CN111105033B CN111105033B (zh) 2024-01-12

Family

ID=67018575

Family Applications (4)

Application Number Title Priority Date Filing Date
CN201911401047.8A Active CN111126588B (zh) 2017-12-14 2017-12-14 集成电路芯片装置及相关产品
CN201911390541.9A Active CN111160541B (zh) 2017-12-14 2017-12-14 集成电路芯片装置及相关产品
CN201711347406.7A Active CN109961134B (zh) 2017-12-14 2017-12-14 集成电路芯片装置及相关产品
CN201911335145.6A Active CN111105033B (zh) 2017-12-14 2017-12-14 神经网络处理器板卡及相关产品

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN201911401047.8A Active CN111126588B (zh) 2017-12-14 2017-12-14 集成电路芯片装置及相关产品
CN201911390541.9A Active CN111160541B (zh) 2017-12-14 2017-12-14 集成电路芯片装置及相关产品
CN201711347406.7A Active CN109961134B (zh) 2017-12-14 2017-12-14 集成电路芯片装置及相关产品

Country Status (2)

Country Link
CN (4) CN111126588B (zh)
TW (1) TWI768159B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109978147A (zh) * 2017-12-27 2019-07-05 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品
CN109978150A (zh) * 2017-12-27 2019-07-05 北京中科寒武纪科技有限公司 神经网络处理器板卡及相关产品
CN109978155A (zh) * 2017-12-28 2019-07-05 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103199806A (zh) * 2013-02-04 2013-07-10 中国科学院电子学研究所 对传感器信号处理的可编程的模拟单元
US20150277912A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Sort acceleration processors, methods, systems, and instructions
CN106126481A (zh) * 2016-06-29 2016-11-16 华为技术有限公司 一种计算引擎和电子设备
US20160342888A1 (en) * 2015-05-20 2016-11-24 Nec Laboratories America, Inc. Memory efficiency for convolutional neural networks operating on graphics processing units
CN106570559A (zh) * 2015-10-09 2017-04-19 阿里巴巴集团控股有限公司 一种基于神经网络的数据处理方法和装置
CN107016175A (zh) * 2017-03-23 2017-08-04 中国科学院计算技术研究所 适用神经网络处理器的自动化设计方法、装置及优化方法
CN107330515A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行人工神经网络正向运算的装置和方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0276062A (ja) * 1988-09-12 1990-03-15 Nippon Telegr & Teleph Corp <Ntt> 神経回路網の構成方法および神経回路網
JPH064504A (ja) * 1992-06-18 1994-01-14 Matsushita Electric Ind Co Ltd ニューラルネットワーク回路
EP1102163A3 (en) * 1999-11-15 2005-06-29 Texas Instruments Incorporated Microprocessor with improved instruction set architecture
GB2471067B (en) * 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
CN101673645B (zh) * 2009-10-28 2012-01-25 胡聪娟 一种断路器额定保护电流自动调节器
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US20160026912A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
CN104518567B (zh) * 2014-11-26 2016-11-23 国家电网公司 一种用电设备状态在线跟踪方法
US9678749B2 (en) * 2014-12-22 2017-06-13 Intel Corporation Instruction and logic for shift-sum multiplier
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US10789545B2 (en) * 2016-04-14 2020-09-29 Oath Inc. Method and system for distributed machine learning
CN105956660A (zh) * 2016-05-16 2016-09-21 浪潮集团有限公司 一种用于实时图像识别的神经元网络芯片实现方法
CN107229967B (zh) * 2016-08-22 2021-06-15 赛灵思公司 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法
CN106940815B (zh) * 2017-02-13 2020-07-28 西安交通大学 一种可编程卷积神经网络协处理器ip核

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103199806A (zh) * 2013-02-04 2013-07-10 中国科学院电子学研究所 对传感器信号处理的可编程的模拟单元
US20150277912A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Sort acceleration processors, methods, systems, and instructions
US20160342888A1 (en) * 2015-05-20 2016-11-24 Nec Laboratories America, Inc. Memory efficiency for convolutional neural networks operating on graphics processing units
CN106570559A (zh) * 2015-10-09 2017-04-19 阿里巴巴集团控股有限公司 一种基于神经网络的数据处理方法和装置
CN107330515A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行人工神经网络正向运算的装置和方法
CN106126481A (zh) * 2016-06-29 2016-11-16 华为技术有限公司 一种计算引擎和电子设备
CN107016175A (zh) * 2017-03-23 2017-08-04 中国科学院计算技术研究所 适用神经网络处理器的自动化设计方法、装置及优化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李元元 等, 华南理工大学出版社 *

Also Published As

Publication number Publication date
CN111105033B (zh) 2024-01-12
CN111160541B (zh) 2023-05-19
TW201931220A (zh) 2019-08-01
CN111160541A (zh) 2020-05-15
CN111126588A (zh) 2020-05-08
TWI768159B (zh) 2022-06-21
CN109961134B (zh) 2020-06-23
CN109961134A (zh) 2019-07-02
CN111126588B (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
US11748605B2 (en) Integrated circuit chip device
TWI791725B (zh) 神經網絡運算方法、集成電路芯片裝置及相關產品
CN109961136B (zh) 集成电路芯片装置及相关产品
CN109961134B (zh) 集成电路芯片装置及相关产品
WO2019114842A1 (zh) 一种集成电路芯片装置
CN109961135B (zh) 集成电路芯片装置及相关产品
CN110197267B (zh) 神经网络处理器板卡及相关产品
CN109978152B (zh) 集成电路芯片装置及相关产品
CN109978156B (zh) 集成电路芯片装置及相关产品
CN109978157B (zh) 集成电路芯片装置及相关产品
CN109978148B (zh) 集成电路芯片装置及相关产品
CN109977446B (zh) 集成电路芯片装置及相关产品
CN109961137B (zh) 集成电路芯片装置及相关产品
CN109978153B (zh) 集成电路芯片装置及相关产品
CN109960673B (zh) 集成电路芯片装置及相关产品
CN109961133B (zh) 集成电路芯片装置及相关产品
US11983621B2 (en) Integrated circuit chip device
CN109978158B (zh) 集成电路芯片装置及相关产品
WO2019165940A1 (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