[go: up one dir, main page]

CN111310908A - 深度神经网络硬件加速器与其操作方法 - Google Patents

深度神经网络硬件加速器与其操作方法 Download PDF

Info

Publication number
CN111310908A
CN111310908A CN201910065762.2A CN201910065762A CN111310908A CN 111310908 A CN111310908 A CN 111310908A CN 201910065762 A CN201910065762 A CN 201910065762A CN 111310908 A CN111310908 A CN 111310908A
Authority
CN
China
Prior art keywords
data
bandwidth
target
deep neural
processing unit
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
CN201910065762.2A
Other languages
English (en)
Other versions
CN111310908B (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.)
Industrial Technology Research Institute ITRI
Original Assignee
Industrial Technology Research Institute ITRI
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 Industrial Technology Research Institute ITRI filed Critical Industrial Technology Research Institute ITRI
Publication of CN111310908A publication Critical patent/CN111310908A/zh
Application granted granted Critical
Publication of CN111310908B publication Critical patent/CN111310908B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种深度神经网络硬件加速器及其操作方法,深度神经网络硬件加速器包括:一网络分配器,接收一输入数据,根据一目标数据量的多个频宽比率来分配该目标数据量的多个数据类型的个别频宽;以及一处理单元阵列,耦接至该网络分配器,根据所分配的这些数据类型的个别频宽,该处理单元阵列与该网络分配器之间互相传输该目标数据量的这些数据类型的各自数据。

Description

深度神经网络硬件加速器与其操作方法
技术领域
本发明有关于一种深度神经网络硬件加速器与其操作方法。
背景技术
深度神经网络(Deep Neural Networks,DNN)属于人工神经网络(ArtificialNeural Network,ANN)的一环,可用于深度机器学习。人工神经网络可具备学习功能。深度神经网络已经被用于解决各种各样的问题,例如机器视觉和语音识别等。
如何使得深度神经网络的内部数据传输速度最佳化进而加快其处理速度,一直是业界努力方向之一。
发明内容
根据本发明一实施例,提出一种深度神经网络硬件加速器,包括:一网络分配器,接收一输入数据,根据一目标数据量的多个频宽比率来分配该目标数据量的多个数据类型的个别频宽;以及一处理单元阵列,耦接至该网络分配器,根据所分配的这些数据类型的个别频宽,该处理单元阵列与该网络分配器之间互相传输该目标数据量的这些数据类型的各自数据。
根据本发明又一实施例,提出一种深度神经网络硬件加速器的操作方法,该深度神经网络硬件加速器包括一网络分配器与一处理单元阵列,该处理单元阵列包括多个处理单元,该操作方法包括:分析一目标数据量;根据对该目标数据量的分析结果,设定该目标数据量的多个数据类型的多个频宽比率;根据相关于该目标数据量的这些数据类型的这些频宽比率所造成的一延迟,判断是否要重新设定该目标数据量的这些数据类型的这些频宽比率;根据该目标数据量的这些数据类型的这些频宽比率,初始化该网络分配器与该处理单元阵列的这些处理单元;以及由该处理单元阵列的至少一被选处理单元来处理一输入数据。
根据本发明另一实施例,提出一种深度神经网络硬件加速器,包括:一频宽与使用率分析单元,分析一目标数据量,以得到该目标数据量的多个数据类型的分布情况并设定该目标数据量的这些数据类型的个别传输频宽;一处理单元阵列,包括多个处理单元;多个第一多工器,耦接至该处理单元阵列,这些第一多工器接收一输入数据的一第一数据与一第二数据;以及一控制器,耦接至该频宽与使用率分析单元以及这些第一多工器,该控制器根据该频宽与使用率分析单元所设定的这些数据类型的这些传输频宽来控制这些多工器,其中,这些第一多工器的一多工器输出该输入数据的该第一数据与该第二数据中的一数据量较小者给该处理单元阵列,而这些第一多工器的另一多工器输出该输入数据的该第一数据与该第二数据中的一数据量较大者给该处理单元阵列。
根据本发明又一实施例,提出一种深度神经网络硬件加速器的操作方法,该深度神经网络硬件加速器包括一处理单元阵列与一网络分配器,该操作方法包括:接收一输入数据,根据一目标数据量的多个频宽比率来分配该目标数据量的多个数据类型的个别频宽;以及根据所分配的这些数据类型的个别频宽,该处理单元阵列与该网络分配器之间互相传输该目标数据量的这些数据类型的各自数据。
为了对本发明的上述及其他方面有更佳的了解,下文特举实施例,并配合所附附图详细说明如下:。
附图说明
图1显示根据本发明一实施例的深度神经网络(DNN)硬件加速器的功能方块图。
图2显示根据本发明一实施例的网络分配器的功能方块图。
图3显示根据本发明一实施例的处理单元的功能方块图。
图4显示根据本发明一实施例的深度神经网络硬件加速器的操作方法流程图。
图5显示根据本发明一实施例的深度神经网络硬件加速器的功能方块图。
图6显示根据本发明一实施例的处理单元的功能方块图。
图7显示根据本发明一实施例的深度神经网络硬件加速器的操作方法流程图。
【附图标记】
100:深度神经网络硬件加速器
110:网络分配器 120:处理单元阵列
RI、RF、RIP、ROP:频宽比率
ifmap、filter、ipsum、opsum、ifmapA、filterA、ipsumA、opsumA、ifmapB、filterB、ipsumB、ifmapC、filterC:数据类型
122:处理单元
210:标签产生单元 220:数据分配器
231、233、235与237:FIFO
I_R_TAG、F_R_TAG、IP_R_TAG:列标签
I_C_TAG、F_C_TAG、IP_C_TAG:行标签
310:标签匹配单元 320:数据选择与调度单元
330:频宽架构储存单元 340:运算单元
352、354、356:FIFO 360:重整单元
I_C_ID、F_C_ID、IP_C_ID:行辨别号
H_I、H_F与H_IP:命中参数
I_L、F_L、IP_L、OP_L:频宽架构参数
341、343、345:内部暂存空间
347:乘加器
410-450:步骤
500:深度神经网络硬件加速器
512:频宽与使用率分析单元
514:控制器 516、518:多工器
520:处理单元阵列 522:处理单元
611与613:匹配单元 621、623与625:FIFO
631、633与635:重整单元
640:暂存器 641:处理单元控制器
643与645:多工器 650:运算单元
661与663:缓冲单元
d1:数据1 col_tag:行标签
d2:数据2 col_id:行辨别号
710-730:步骤
具体实施方式
本说明书的技术用语参照本技术领域的习惯用语,如本说明书对部分用语有加以说明或定义,该部分用语的解释以本说明书的说明或定义为准。本发明的各个实施例分别具有一个或多个技术特征。在可能实施的前提下,本技术领域技术人员可选择性地实施任一实施例中部分或全部的技术特征,或者选择性地将这些实施例中部分或全部的技术特征加以组合。
图1显示根据本发明一实施例的深度神经网络(DNN)硬件加速器的功能方块图。如图1所示,深度神经网络硬件加速器100包括网络分配器(network distribution)110与处理单元(processing element,PE)阵列120。
在本发明的一实施例中,网络分配器110可以是硬件、固件或是储存在存储器而由微处理器或数位信号处理器所载入执行的软件或机器可执行程式码。若是采用硬件来实现,则网络分配器110可以是由单一整合电路晶片所完成,也可以由多个电路晶片所完成,但本发明并不以此为限制。上述多个电路晶片或单一整合电路晶片可采用特殊功能集成电路(ASIC)或现场可编程门阵列(FPGA)来实现。而上述存储器可以是例如随机存取存储器、只读存储器或闪存存储器等等。处理单元122可例如被实施为微控制器(microcontroller)、微处理器(microprocessor)、处理器(processor)、中央处理器(central processing unit,CPU)、数位信号处理器(digital signalprocessor)、特殊应用集成电路(application specific integrated circuit,ASIC)、数位逻辑电路、现场可编程门阵列(field programmable gate array,FPGA)和/或其它具有运算处理功能的硬件元件。各处理单元122之间可以特殊应用集成电路、数位逻辑电路、现场可编程门阵列和/或其它硬件元件相互耦接。
网络分配器110根据目标数据量的多个频宽比率(RI,RF,RIP,ROP)来分配多个数据类型的各自频宽。在一实施例中,深度神经网络硬件加速器100处理完「目标数据量」后,可进行频宽调整。在此,「目标数据量」例如但不受限于,多个数据层、至少一数据层或一设定数据量。在下文的说明以「目标数据量」为多个数据层或至少一数据层为例来进行说明,但当知本发明并不受限于此。这些数据层例如卷积层(convolutional layer)、池化层(pool layer)和/或全连接层(Fully-connect layer)等。数据类型包括:输入特征图(input feature map,ifmap)、滤波器(filter)、输入部分和(input partial sum,ipsum)与输出部分和(output partial sum,opsum)。在一实施例中,各数据层包括这些数据类型的任意组合。对于各数据层而言,这些数据类型的组合比例彼此不同,也即,对于某一数据层而言,可能数据ifmap所占的比重较高(例如数据量较多),但对于另一数据层而言,可能数据filter所占的比重较高。因此,在本发明一实施例中,可以针对各数据层的数据所占比重决定各数据层的频宽比率(RI、RF、RIP和/或ROP),进而调整和/或分配该数据类型的传输频宽(例如处理单元阵列120与网络分配器110之间的传输频宽),其中,频宽比率RI、RF、RIP与ROP分别代表数据ifmap、filter、ipsum与opsum的频宽比率,网络分配器110可根据RI、RF、RIP与ROP来分配数据ifmapA、filterA、ipsumA与opsumA的频宽。
处理单元阵列120包括排列成阵列的多个处理单元122。处理单元阵列120耦接至网络分配器110。根据所分配的这些数据类型的各自频宽,处理单元阵列120与网络分配器110之间互相传输这些数据类型的各自数据。
在本发明一实施例中,深度神经网络硬件加速器100还选择性地包括:频宽参数储存单元(未示出),耦接至网络分配器110,用以储存这些数据层的这些频宽比率RI、RF、RIP和/或ROP,并将这些数据层的这些频宽比率RI、RF、RIP和/或ROP传至网络分配器110。储存于频宽参数储存单元内的频宽比率RI、RF、RIP和/或ROP可以是离线(offiine)训练获得。
在本发明一实施例中,这些数据层的这些频宽比率RI、RF、RIP和/或ROP可以是即时(real-time)获得,例如这些数据层的这些频宽比率RI、RF、RIP和/或ROP由一微处理器(未示出)动态分析这些数据层而得,并传送至网络分配器110。在一实施例中,如果是微处理器(未示出)动态产生频宽比率RI、RF、RIP和/或ROP的话,则可以不需要进行获得频宽比率RI、RF、RIP和/或ROP的离线训练。
现请参照图2,显示根据本发明一实施例的网络分配器110的功能方块图。如图2所示,网络分配器110包括:标签产生单元(tag generation unit)210、数据分配器220与多个先入先出缓冲器(first in,first out,FIFO)231、233、235与237。
标签产生单元210根据这些频宽比率RI、RF、RIP、ROP以产生多个第一标签与多个第二标签。在此以这些第一标签为列标签(rowtag)I_R_TAG、F_R_TAG、IP_R_TAG,而这些第二标签为多个行标签(column tag)I_C_TAG、F_C_TAG、IP_C_TAG为例进行说明,但当知本发明并不受限于此。I_R_TAG与I_C_TAG分别代表数据ifmap的列标签与行标签,F_R_TAG与F_C_TAG分别代表数据filter的列标签与行标签,IP_R_TAG与IP_C_TAG分别代表数据ipsum的列标签与行标签。
处理单元122根据这些列标签与行标签来决定是否需要处理该笔数据。其细节将在下文进行说明。
数据分配器220,耦接至标签产生单元210,用以接收由这些FIFO 231、233与235所传来的数据(ifmap,filter,ipsum)和/或传送数据(opsum)到FIFO237,并根据这些频宽比率RI、RF、RIP和/或ROP以分配这些数据(ifmap,filter,ipsum,opsum)的传输频宽,使得这些数据依据所分配的频宽以在网络分配器110与处理单元阵列120之间传输。
FIFO 231、233、235与237分别用以暂存数据ifmap、filter、ipsum与opsum。
在本发明一实施例中,网络分配器110以16位元频宽来接收这些输入数据ifmap、filter、ipsum,且也以16位元频宽来输出该输出数据opsum(输入数据至网络分配器110的输入传输频宽总和是固定的,网络分配器110输出至输出数据的输出传输频宽总和是固定的)。对于某一数据层而言,经数据分配器220处理输入数据(例如将8个16位元的数据集合为128位元,或将64位元的数据分开成为4个16位元的数据等)后,数据分配器220以64位元频宽传输数据ifmapA给处理单元阵列120,以128位元频宽传输数据filterA给处理单元阵列120,以16位元频宽传输数据ipsumA给处理单元阵列120,而数据分配器220以64位元频宽接收由处理单元阵列120所回传的数据opsumA。如此一来,可以更有效率地将数据传输于网络分配器110与处理单元阵列120之间,也即,如果数据filter所占比重较高,则以较高位元频宽来将数据filterA传输至处理单元阵列120;而如果数据ifmap所占比重较高,则以较高位元频宽来将数据ifmapA传输至处理单元阵列120。
现请参考图3,其显示根据本发明一实施例的处理单元122的功能方块图。如图3所示,处理单元122包括:标签匹配单元(tag match unit)310、数据选择与调度单元(dataselecting and dispatching unit)320、频宽架构储存单元(bandwidth configurationregister)330、运算单元340、FIFO 352、354、356与重整单元(reshaper)360。
在本发明一实施例中,处理单元阵列120还选择性地包括一列解码器(未示出),用以解码由标签产生单元210所产生的这些列标签I_R_TAG、F_R_TAG、IP_R_TAG,以决定哪一列要接收此笔数据。详细地说,假设处理单元阵列120包括12列的处理单元。如果这些列标签I_R_TAG、F_R_TAG、IP_R_TAG是指向第一列(例如,I_R_TAG、F_R_TAG、IP_R_TAG的值都为1),在列解码器解码后,列解码器将此笔数据送至第一列,其余可依此类推。
标签匹配单元310则用于匹配由标签产生单元210所产生的这些行标签I_C_TAG、F_C_TAG、IP_C_TAG与行辨别号(col.ID)I_C_ID、F_C_ID、IP_C_ID,以决定该处理单元是否要处理该笔数据。具体而言,假设处理单元阵列120的每一列包括14个处理单元。对于第一个处理单元,其行辨别号I_C_ID、F_C_ID、IP_C_ID都为1(其余可依此类推),如果这些行标签I_C_TAG、F_C_TAG、IP_C_TAG的值都为1,则在标签匹配单元310的匹配后,第一个处理单元会决定要处理该笔数据。在一实施例中,根据标签匹配单元310的匹配结果,标签匹配单元310产生多个命中参数H_I、H_F与H_IP。如果这些命中参数H_I、H_F或H_IP为逻辑高,则代表匹配成功;如果这些命中参数H_I、H_F或H_IP为逻辑低,则代表匹配失败。数据选择与调度单元320可以根据这些命中参数H_I、H_F与H_IP来决定是否要处理该笔数据。如果命中参数H_I为逻辑高,则数据选择与调度单元320处理该笔数据ifmapA;如果命中参数H_F为逻辑高,则数据选择与调度单元320处理该笔数据filterA;以及如果命中参数H_IP为逻辑高,则数据选择与调度单元320处理该笔数据ipsumA。
频宽架构储存单元330储存这些数据类型ifmapA、filterA、ipsumA与opsumA所对应的多个频宽架构参数I_L、F_L、IP_L与OP_L,其中,频宽架构参数I_L、F_L、IP_L与OP_L分别代表由网络分配器110的数据分配器220所分配给这些数据ifmapA、filterA、ipsumA与opsumA的传输频宽(传输频宽的单位例如是位元数)。
数据选择与调度单元320根据由频宽架构储存单元330所传来的这些频宽架构参数I_L、F_L、IP_L以及由标签匹配单元所传来的这些命中参数H_I、H_F与H_IP而从FIFO 354中选择数据,以组成数据ifmapB、filterB与ipsumB,其中,由数据选择与调度单元320所组出的数据ifmapB、filterB与ipsumB的位元假设都为16位元。也即,由数据分配器220所传来的ifmapA、filterA与ipsumA位元假设是64位元、128位元与16位元(如图2所示),则经过数据选择与调度单元320的重组后,由数据选择与调度单元320所组出的数据ifmapB、filterB与ipsumB都为16位元。
运算单元340包括内部暂存空间(Scratch Pad Memory,spad)341、343、345与乘加器347。运算单元340例如但不受限于乘加运算单元。在本发明一实施例中,数据选择与调度单元320所组出的数据ifmapB、filterB与ipsumB(例如都为16位元)放入至内部暂存空间341、343与345内(如(1)所示)。接着,由乘加器(Multiply Accumulate,MAC)347来作乘加运算,也即,乘加器347对数据ifmapB与filterB作乘法运算,所得到的乘法结果再与内部暂存空间345中的值作加法运算(如(2)所示)。作完上述乘加运算的值再写入至内部暂存空间345中,等待之后要再作加法运算时使用,之后,(2)与(3)循环进行。等到放在内部暂存空间341与343中的输入数据都已经完成运算且产生出对应的opsum后,再把opsum的值由内部暂存空间345输出至FIFO 356(如(4)所示)。如此即可完成乘加运算。当然,以上乃是用以举例说明,本发明并不受限于此。本发明其他实施例可依需要而让运算单元340执行其他运算,并据以调整运算单元340的组成单元,其都在本发明精神范围内。
FIFO 352用以暂存行标签I_C_TAG、F_C_TAG、IP_C_TAG,并输出至标签匹配单元310。FIFO 354用以暂存数据ifmapA、filterA与ipsumA,并输出至数据选择与调度单元320。FIFO 356用以暂存由运算单元340所产生的数据,并输出至重整单元360。
重整单元(reshaper)360用以根据频宽架构参数OP_L将由FIFO 356所传来的数据重整成数据opsumA(例如输出数据opsumA为64位元而由FIFO 356所传来的数据为16位元,则将4个16位元的数据重整为1个64位元的数据),并回传给网络分配器120的数据分配器220,以写入至FIFO 237中,且回传至存储器。
在本发明一实施例中,输入至网络分配器110的数据可能是来自深度神经网络硬件加速器100的一内部缓冲器(未示出),其中该内部缓冲器可能是直接耦接至网络分配器110。或者,在本发明另一可能实施例中,输入至网络分配器110的数据可能是来自通过系统总线(未示出)而连接的一存储器(未示出),也即该存储器可能是通过系统总线而耦接至网络分配器110。
图4显示根据本发明一实施例的深度神经网络硬件加速器100的操作方法流程图。如图4所示,于步骤410中,分析目标数据量。在步骤415中,根据对该目标数据量的分析结果,设定各数据类型的频宽比率(RI、RF、RIP、ROP)。在步骤420中,以目前所设定的频宽比率(RI、RF、RIP、ROP)来计算延迟。在步骤425中,判断延迟是否符合标准,也即,判断目前所设定的频宽比率(RI、RF、RIP、ROP)所造成的延迟是否符合标准。如果步骤425为否,则回到步骤415,重新设定各数据类型的频宽比率(RI、RF、RIP、ROP)。如果步骤425为是,则重复上述步骤,直到完成对该目标数据量的各数据类型的频宽比率(RI、RF、RIP、ROP)的设定(步骤430)。在一实施例中,也可在对一层数据层执行步骤410~425之后,即执行步骤435。在一实施例中,也可同时(例如平行处理)执行超过一层或所有数据层的步骤410~425。在本发明一实施例中,步骤410-430可以由一微处理器动态/即时执行。在本发明一实施例中,步骤410-430可以由离线获得。
在步骤435中,在处理目标数据量时,根据所设定好的该目标数据量的各数据类型的频宽比率(RI、RF、RIP、ROP)来初始化该网络分配器110与处理单元阵列120的各处理单元122。在一实施例中,针对该目标数据量的频宽比率(RI、RF、RIP、ROP),由网络分配器110来调整/分配该数据类型的传输频宽;以及将频宽架构参数I_L、F_L、IP_L、OP_L写入至各处理单元122。在一实施例中,将储存于频宽参数储存单元的该目标数据量的频宽比率(RI、RF、RIP、ROP)写入标签产生单元210和/或数据分配器220,并设定各处理单元122中的标签匹配单元310的行辨别号IC_ID、F_C_ID、IP_C_ID和/或频宽架构储存单元330的频宽架构参数I_L、F_L、IP_L、OP_L。在步骤440中,将数据(ifmap,filter,ipsum)由网络分配器110送至处理单元阵列120。在步骤445中,由处理单元阵列120的一个或多个被选处理单元122来处理数据。在步骤450中,判断是否已处理完目标数据量。如果步骤450为否,则流程回至步骤435,重复步骤435-445,直到处理完目标数据量。如果步骤450为是,则代表处理已完成。
现请参考图5,其显示根据本发明一实施例的实施例的深度神经网络硬件加速器的功能方块图。如图5所示,深度神经网络硬件加速器500至少包括:频宽与使用率分析(bandwidth and utilization analysis)单元512、控制器514、多工器516、518与处理单元阵列520。处理单元阵列520包括多个处理单元522。
频宽与使用率分析单元512进行目标数据量剖析(profiling),在此,目标数据量可为多个数据层、至少一数据层或一设定数据量。同样地,下文的说明以目标数据量为多个数据层为例来进行说明,但当知本发明不受限于此。频宽与使用率分析单元512进行各数据层的剖析,以得到在各数据层的各数据类型的分布情况。如此一来,频宽与使用率分析单元512可以据此得到各数据类型的适当传输频宽。在一实施例中,频宽与使用率分析单元512可以根据各数据层的频宽比率(RI、RF、RIP、ROP)得到各数据层的各数据类型的分布情况。在一实施例中,网络分配器110包括频宽与使用率分析单元512。
控制器514耦接至频宽与使用率分析单元512与多工器516与518。控制器514根据频宽与使用率分析单元512所设定的各数据类型的适当传输频宽来控制多工器516与518。
多工器516、518耦接至处理单元阵列520。多工器516、518都接收数据ifmap与filter。在本发明图5实施例中,多工器516的输出频宽(假设但不受限于为16位元)小于多工器518的输出频宽(假设但不受限于为64位元)。
举例说明如下。假设由缓冲器(未示出)送至图5的多工器516、518的数据ifmap与filter的位元分别为64位元与16位元。对于某一数据层而言,经由频宽与使用率分析单元512的剖析,数据ifmap的数据量大于数据filter。所以,经由控制器514的控制,多工器516(其输出频宽较小)选择将数据量较小的数据filter送至处理单元阵列520,而多工器518(其输出频宽较大)选择将数据量较大的数据ifmap送至处理单元阵列520。
同样地,对于另一数据层而言,经由频宽与使用率分析单元512的剖析,数据ifmap的数据量小于数据filter。所以,经由控制器514的控制,多工器516选择将数据量较小的数据ifmap送至处理单元阵列520,而多工器518选择将数据量较大的数据filter送至处理单元阵列520。
也即,在控制器514的控制下,多工器516固定输出输入数据的数据ifmap与filter中的数据量较小者给处理单元阵列520,而多工器518固定输出输入数据的数据ifmap与filter中的数据量较大者给处理单元阵列520。
通过上述的方式,可以把目前数据量需求较大的数据类型以较大的频宽送至处理单元阵列520,以提高处理效率。
现请参考图6,其显示根据本发明图5实施例的处理单元522的功能方块图。处理单元522包括匹配单元611与613,FIFO 621、623与625,重整单元631、633与635,暂存器640,处理单元控制器641,多工器643与645,运算单元650,以及缓冲单元661与663。
匹配单元611与613用以将数据1d1的行标签col_tag与数据2d2的行标签col_tag匹配于行辨别号col_id,其中数据1d1与数据2d2分别是数据ifmap与filter的其中一者与另一者。或者说,数据1d1由多工器516所传送,而数据2d2由多工器518所传送。如果行标签col_tag与行辨别号col_id两者匹配,则代表该笔数据需要该处理单元522处理,所以,数据1d1与数据2d2分别输入至FIFO 621与623。相反地,如果行标签col_tag与行辨别号col_id两者不匹配,则代表该笔数据不需要该处理单元522处理,所以,不需将数据1d1与数据2d2输入至FIFO 621与623。在一实施例中,数据1d1由图5的多工器516而来,数据2d2由图5的多工器518而来,数据1d1为16位元,数据2d2为64位元。
重整单元631、633耦接至FIFO 621、623与多工器643与645。重整单元631、633将由FIFO 621与623的输出数据给予重整,以输入至多工器643与645;重整单元可以将多位元数数据重整为少位元数数据,也可以将少位元数数据重整为多位元数数据。例如数据2d2为64位元,在将数据2d2存进FIFO 623后,以64位元输出到重整单元633,重整单元633将64位元的数据重整为16位元的数据输出到16位元的多工器643和多工器645;数据1d1为16位元,将数据1d1存进FIFO 621后,以16位元输出到重整单元631,重整单元631将16位元的数据重整为16位元的数据输出到16位元的多工器643和多工器645。在一实施例中,若是输入处理单元522的数据与输入运算单元650的数据的位元数相同,则可以省略重整单元,例如数据1d1为16位元,数据2d2为64位元,输入运算单元的数据为16位元,则重整单元631可以省略。
处理单元控制器641耦接至暂存器640与多工器643与645。处理单元控制器641根据暂存器640所暂存的频宽架构参数I_L、F_L来控制多工器643与645。详细地说,如果频宽架构参数I_L、F_L指示数据ifmap的传输频宽低于数据filter的传输频宽,则在处理单元控制器641的控制下,多工器643选择输出数据1d1(由传输频宽较小的多工器516所传来的数据)成为数据ifmapC且多工器645选择输出数据2d2(由传输频宽较大的多工器518所传来的数据)成为数据filterC。
相反地,频宽架构参数I_L、F_L指示指示数据ifmap的传输频宽高于数据filter的传输频宽,则在处理单元控制器641的控制下,多工器643选择输出数据2d2(由传输频宽较大的多工器518所传来的数据)成为数据ifmapC且多工器645选择输出数据1d1(由传输频宽较小的多工器516所传来的数据)成为数据filterC。
运算单元650耦接至多工器643与645。其组成与操作原则可相同或类似于图3的运算单元340,故其细节在此省略。
FIFO 625耦接至运算单元650与重整单元635。FIFO 625用以暂存由运算单元650所产生的数据。重整单元635用以将由FIFO 625所传来的数据重整成数据opsum(数据opsum可送至下一级处理单元522作累加,之后由最后一级处理单元522(如图5中的最右边的处理单元522)送至深度神经网络硬件加速器500的外部)。
缓冲单元661与663用以缓冲前一级处理单元522所送来的数据1及其行标签(d1,col_tag)与数据2及其行标签(d2,col_tag),并送至下一级处理单元522。缓冲单元661与663例如可以暂存器(register)实现。
图7显示根据本发明一实施例的深度神经网络硬件加速器的操作方法,包括:分析目标数据量(步骤710),以得到目标数据量的多个数据类型的分布情况并设定目标数据量的这些数据类型的个别传输频宽;由多个第一多工器接收一输入数据的一第一数据与一第二数据(步骤720);以及根据所设定的这些数据类型的这些传输频宽来控制这些第一多工器(步骤730),其中,这些第一多工器的一多工器输出该输入数据的该第一数据与该第二数据中的一数据量较小者给该深度神经网络硬件加速器的一处理单元阵列以进行处理,而这些第一多工器的另一多工器输出该输入数据的该第一数据与该第二数据中的一数据量较大者给该处理单元阵列以进行处理。至于步骤710-730的细节可参考图5与图6的说明,其细节在此省略。
在本发明一实施例中,对于同一数据层,可以使用相同的频宽分配与频宽比率,也可以使用不同的频宽分配与频宽比率,例如可以动态调整频宽分配与频宽比率,其细节在此省略,其也在本发明精神范围内。在本发明一实施例中,不同数据层可以使用不同的频宽分配与频宽比率,也可以使用相同的频宽分配与频宽比率。
本发明实施例可用于终端装置(例如但不受限于,智能型手机)上的人工智能(AI)加速器,也可用于服务器等级装置。
由上述可知,在本发明上述二个实施例中,通过离线或即时分析各数据层的数据类型的分布情况,使目前数据需求量大的数据类型以较大的频宽输入至处理单元阵列,如此可以使处理单元阵列可以较有效率的方式获得运算所需的输入数据,减少处理单元阵列因等待输入数据所造成的闲置情况。
综上所述,虽然本发明已以实施例公开如上,然其并非用以限定本发明。本发明的本领域的普通技术人员,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。

Claims (26)

1.一种深度神经网络硬件加速器,包括:
网络分配器,接收输入数据,根据目标数据量的多个频宽比率来分配该目标数据量的多个数据类型的个别频宽;以及
处理单元阵列,耦接至该网络分配器,根据所分配的这些数据类型的个别频宽,该处理单元阵列与该网络分配器之间互相传输该目标数据量的这些数据类型的各自数据。
2.如权利要求1所述的深度神经网络硬件加速器,还包括:
频宽参数储存单元,储存该目标数据量的这些频宽比率,并将该目标数据量的这些频宽比率传至该网络分配器,其中,该目标数据量包括多个数据层、至少一数据层或一设定数据量。
3.如权利要求1所述的深度神经网络硬件加速器,其中,该目标数据量的这些频宽比率由微处理器动态分析该目标数据量而得,并传送至该网络分配器。
4.如权利要求1所述的深度神经网络硬件加速器,其中,该目标数据量的这些频宽比率相关于该目标数据量的这些数据类型的个别比重。
5.如权利要求1所述的深度神经网络硬件加速器,其中,该网络分配器包括:
标签产生单元,根据这些频宽比率以产生多个第一标签与多个第二标签;以及
数据分配器,用以接收该输入数据并根据这些频宽比率以分配该目标数据量的这些数据类型的个别频宽。
6.如权利要求5所述的深度神经网络硬件加速器,其中,该处理单元阵列包括排列成阵列的多个处理单元,各处理单元包括:
标签匹配单元,匹配这些第二标签与多个第一辨别号,以产生多个命中参数;
频宽架构储存单元,储存这些数据类型所对应的多个频宽架构参数;
数据选择与调度单元,耦接至该标签匹配单元与该频宽架构储存单元,用以根据这些命中参数与这些频宽架构参数,以重组该网络分配器所传来的这些数据;以及
运算单元,耦接至该数据选择与调度单元,对该数据选择与调度单元所重组的这些数据进行运算。
7.如权利要求1所述的深度神经网络硬件加速器,其中,该网络分配器所接收的该输入数据来自缓冲器或者是来自通过系统总线而连接的存储器。
8.如权利要求1所述的深度神经网络硬件加速器,其中,当该目标数据量包括多个数据层时,这些数据层具有不同的这些频宽比率,且该网络分配器对这些数据层分配不同的个别频宽。
9.如权利要求1所述的深度神经网络硬件加速器,其中,当该目标数据量包括多个数据层时,这些数据层具有相同的这些频宽比率,且该网络分配器对这些数据层分配相同的个别频宽。
10.一种深度神经网络硬件加速器的操作方法,该深度神经网络硬件加速器包括网络分配器与处理单元阵列,该处理单元阵列包括多个处理单元,该操作方法包括:
分析目标数据量;
根据对该目标数据量的分析结果,设定该目标数据量的多个数据类型的多个频宽比率;
根据相关于该目标数据量的这些数据类型的这些频宽比率所造成的延迟,判断是否要重新设定该目标数据量的这些数据类型的这些频宽比率;
根据该目标数据量的这些数据类型的这些频宽比率,初始化该网络分配器与该处理单元阵列的这些处理单元;以及
由该处理单元阵列的至少一被选处理单元来处理输入数据。
11.如权利要求10所述的操作方法,其中,该分析步骤、该设定这些频宽比率步骤与该判断步骤由微处理器动态执行。
12.如权利要求10所述的操作方法,其中,该分析步骤、该设定这些频宽比率步骤与该判断步骤以离线获得。
13.如权利要求10所述的操作方法,其中初始化该网络分配器与该处理单元阵列的这些处理单元的该步骤包括:
根据该目标数据量的这些数据类型的这些频宽比率,由该网络分配器来调整/分配这些数据类型的个别传输频宽;以及
将相关于这些频宽比率的多个频宽架构参数写入至各这些处理单元。
14.如权利要求10所述的深度神经网络硬件加速器的操作方法,其中,当该目标数据量包括多个数据层时,对这些数据层设定不同的这些频宽比率。
15.如权利要求10所述的深度神经网络硬件加速器的操作方法,其中,当该目标数据量包括多个数据层时,对这些数据层设定相同的这些频宽比率。
16.一种深度神经网络硬件加速器,包括:
频宽与使用率分析单元,分析目标数据量,以得到该目标数据量的多个数据类型的分布情况并设定该目标数据量的这些数据类型的个别传输频宽;
处理单元阵列,包括多个处理单元;
多个第一多工器,耦接至该处理单元阵列,这些第一多工器接收输入数据的第一数据与第二数据;以及
控制器,耦接至该频宽与使用率分析单元以及这些第一多工器,该控制器根据该频宽与使用率分析单元所设定的这些数据类型的这些传输频宽来控制这些多工器,其中,这些第一多工器的多工器输出该输入数据的该第一数据与该第二数据中的数据量较小者给该处理单元阵列,而这些第一多工器的另一多工器输出该输入数据的该第一数据与该第二数据中的数据量较大者给该处理单元阵列。
17.如权利要求16所述的深度神经网络硬件加速器,其中,各这些处理单元包括:
多个匹配单元,用以将该第一数据与该第二数据的行标签匹配于行辨别号以决定是否要处理该第一数据与该第二数据;
暂存器,用以暂存频宽架构参数;
处理单元控制器,耦接至该暂存器,接收该暂存器所传来的该频宽架构参数;
多个第二多工器,耦接至该处理单元控制器,该处理单元控制器根据该暂存器所传来的该频宽架构参数而控制这些第二多工器,这些第二多工器接收该第一数据与该第二数据;以及
运算单元,耦接至这些第二多工器,这些第二多工器输出该第一数据与该第二数据至该运算单元以进行运算。
18.如权利要求16所述的深度神经网络硬件加速器,其中,当该目标数据量包括多个数据层时,该频宽与使用率分析单元对这些数据层设定具有不同的个别传输频宽。
19.如权利要求16所述的深度神经网络硬件加速器,其中,当该目标数据量包括多个数据层时,该频宽与使用率分析单元对这些数据层设定具有相同的个别传输频宽。
20.一种深度神经网络硬件加速器的操作方法,该深度神经网络硬件加速器包括处理单元阵列与网络分配器,该操作方法包括:
接收输入数据,根据目标数据量的多个频宽比率来分配该目标数据量的多个数据类型的个别频宽;以及
根据所分配的这些数据类型的个别频宽,该处理单元阵列与该网络分配器之间互相传输该目标数据量的这些数据类型的各自数据。
21.如权利要求20所述的操作方法,还包括:
储存该目标数据量的这些频宽比率,并将该目标数据量的这些频宽比率传至该网络分配器,其中,该目标数据量包括多个数据层、至少一数据层或一设定数据量。
22.如权利要求20所述的操作方法,其中,该目标数据量的这些频宽比率由动态分析该目标数据量而得,并传送至该网络分配器。
23.如权利要求20所述的操作方法,其中,该目标数据量的这些频宽比率相关于该目标数据量的这些数据类型的个别比重。
24.如权利要求20所述的操作方法,还包括:
根据这些频宽比率以产生多个第一标签与多个第二标签;以及
接收该输入数据并根据这些频宽比率以分配该目标数据量的这些数据类型的个别频宽。
25.如权利要求24所述的操作方法,其中,该处理单元阵列包括排列成阵列的多个处理单元,该操作方法包括:
匹配这些第二标签与多个第一辨别号,以产生多个命中参数;
储存这些数据类型所对应的多个频宽架构参数;
根据这些命中参数与这些频宽架构参数,以重组该网络分配器所传来的这些数据;以及
对所重组的这些数据进行运算。
26.如权利要求20所述的操作方法,其中,该网络分配器所接收的该输入数据来自缓冲器或者是来自通过系统总线而连接的存储器。
CN201910065762.2A 2018-12-12 2019-01-23 深度神经网络硬件加速器与其操作方法 Active CN111310908B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW107144665 2018-12-12
TW107144665A TWI696961B (zh) 2018-12-12 2018-12-12 深度神經網路硬體加速器與其操作方法

Publications (2)

Publication Number Publication Date
CN111310908A true CN111310908A (zh) 2020-06-19
CN111310908B CN111310908B (zh) 2023-03-24

Family

ID=71072169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910065762.2A Active CN111310908B (zh) 2018-12-12 2019-01-23 深度神经网络硬件加速器与其操作方法

Country Status (3)

Country Link
US (1) US11551066B2 (zh)
CN (1) CN111310908B (zh)
TW (1) TWI696961B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI696961B (zh) * 2018-12-12 2020-06-21 財團法人工業技術研究院 深度神經網路硬體加速器與其操作方法
US11005689B2 (en) * 2019-07-11 2021-05-11 Wangsu Science & Technology Co., Ltd. Method and apparatus for bandwidth filtering based on deep learning, server and storage medium
CN112149816B (zh) * 2020-11-25 2021-02-12 之江实验室 支持深度神经网络推理加速的异构存算融合系统及方法
US12430100B2 (en) * 2021-06-01 2025-09-30 Ceremorphic, Inc. Analog multiplier accumulator with unit element gain balancing
GB2620113B (en) * 2022-06-21 2024-09-18 Imagination Tech Ltd Mapping neural networks to hardware

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW584835B (en) * 2002-12-13 2004-04-21 Univ Nat Chiao Tung Method and architecture of digital coding for transmitting and packing audio signals
US20130135523A1 (en) * 2011-11-29 2013-05-30 Cisco Technology, Inc. Managing The Bandwidth Of A Communication Session
TW201341860A (zh) * 2012-03-05 2013-10-16 Enchroma Inc 多頻帶色覺濾光器及使用線性規劃最佳化之方法
US20150326481A1 (en) * 2014-05-09 2015-11-12 Nexgen Storage, Inc. Adaptive bandwidth throttling
CN106228238A (zh) * 2016-07-27 2016-12-14 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4518887B2 (ja) * 2004-09-10 2010-08-04 株式会社日立製作所 ストレージエリアネットワーク管理システム及び管理装置とボリューム割当て方法並びにコンピュータ・ソフトウエア
CN100469072C (zh) * 2005-09-29 2009-03-11 西安交通大学 多源流媒体传输QoS控制方法
GB2443229B (en) * 2006-08-23 2009-10-14 Cramer Systems Ltd Capacity management for data networks
US9465620B2 (en) * 2012-12-20 2016-10-11 Intel Corporation Scalable compute fabric
US9596647B2 (en) * 2014-07-21 2017-03-14 International Business Machines Corporation Secure WiFi using predictive analytics
US9548872B2 (en) * 2014-09-26 2017-01-17 Dell Products, Lp Reducing internal fabric congestion in leaf-spine switch fabric
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US20160379109A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
GB2535819B (en) * 2015-07-31 2017-05-17 Imagination Tech Ltd Monitoring network conditions
US20170094296A1 (en) * 2015-09-28 2017-03-30 Cybrook Inc. Bandwidth Adjustment For Real-time Video Transmission
JP2017194931A (ja) * 2016-04-22 2017-10-26 富士通株式会社 ストレージ管理装置、ストレージ装置管理方法及びストレージ装置管理プログラム
CN109086877B (zh) 2016-04-29 2020-05-08 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络正向运算的装置和方法
US20170330069A1 (en) * 2016-05-11 2017-11-16 Kneron Inc. Multi-layer artificial neural network and controlling method thereof
KR20180012439A (ko) 2016-07-27 2018-02-06 삼성전자주식회사 회선 신경망에서 가속기 및 이의 동작 방법
US10891538B2 (en) 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US10997496B2 (en) 2016-08-11 2021-05-04 Nvidia Corporation Sparse convolutional neural network accelerator
TWI616813B (zh) 2016-11-14 2018-03-01 耐能股份有限公司 卷積運算方法
EP3336774B1 (en) * 2016-12-13 2020-11-25 Axis AB Method, computer program product and device for training a neural network
US10394929B2 (en) * 2016-12-20 2019-08-27 Mediatek, Inc. Adaptive execution engine for convolution computing systems
US10838910B2 (en) * 2017-04-27 2020-11-17 Falcon Computing Systems and methods for systolic array design from a high-level program
EP3622438A4 (en) * 2017-05-09 2021-03-10 Neurala, Inc. SYSTEMS AND PROCEDURES TO ENABLE CONTINUOUS MEMORY-LIMITED LEARNING IN ARTIFICIAL INTELLIGENCE AND DEEP LEARNING, CONTINUOUSLY WORKING APPLICATIONS VIA NETWORKED COMPUTER EDGES
US11321604B2 (en) * 2017-06-21 2022-05-03 Arm Ltd. Systems and devices for compressing neural network parameters
US11270201B2 (en) * 2017-12-29 2022-03-08 Intel Corporation Communication optimizations for distributed machine learning
TWI696961B (zh) * 2018-12-12 2020-06-21 財團法人工業技術研究院 深度神經網路硬體加速器與其操作方法
JP2022520403A (ja) * 2019-02-15 2022-03-30 アップル インコーポレイテッド ユーザ機器(ue)節電のための基準信号(rs)監視の適応システム及び方法
US20210201118A1 (en) * 2019-12-26 2021-07-01 Industrial Technology Research Institute Deep neural networks (dnn) hardware accelerator and operation method thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW584835B (en) * 2002-12-13 2004-04-21 Univ Nat Chiao Tung Method and architecture of digital coding for transmitting and packing audio signals
US20130135523A1 (en) * 2011-11-29 2013-05-30 Cisco Technology, Inc. Managing The Bandwidth Of A Communication Session
TW201341860A (zh) * 2012-03-05 2013-10-16 Enchroma Inc 多頻帶色覺濾光器及使用線性規劃最佳化之方法
US20150326481A1 (en) * 2014-05-09 2015-11-12 Nexgen Storage, Inc. Adaptive bandwidth throttling
CN106228238A (zh) * 2016-07-27 2016-12-14 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统

Also Published As

Publication number Publication date
CN111310908B (zh) 2023-03-24
US11551066B2 (en) 2023-01-10
US20200193275A1 (en) 2020-06-18
TWI696961B (zh) 2020-06-21
TW202022707A (zh) 2020-06-16

Similar Documents

Publication Publication Date Title
CN111310908B (zh) 深度神经网络硬件加速器与其操作方法
US7453898B1 (en) Methods and apparatus for simultaneously scheduling multiple priorities of packets
CN111142938A (zh) 一种异构芯片的任务处理方法、任务处理装置及电子设备
US6901496B1 (en) Line rate buffer using single ported memories for variable length packets
CN116151334B (zh) 一种基于多通道脉动阵列的神经网络加速器
CN107800700B (zh) 一种路由器和片上网络传输系统及方法
CN113051214A (zh) 深度神经网络硬件加速器与其操作方法
US7606250B2 (en) Assigning resources to items such as processing contexts for processing packets
CN110555512B (zh) 一种二值卷积神经网络数据重用方法及装置
CN100593312C (zh) 使用定额和差额值进行调度
CN112035898A (zh) 多节点多通道高速并行处理方法及系统
CN109947390B (zh) 缓冲器系统及其操作方法
US7350208B1 (en) Method and apparatus for scheduling using a resource variable decreased by amounts corresponding to the efficiency of the resource
EP2829028B1 (en) Memory architecture determining the number of replicas stored in memory banks or devices according to a packet size
CN118509399B (zh) 一种报文处理方法、装置、电子设备及存储介质
CN110197274B (zh) 集成电路芯片装置及相关产品
CN103827836A (zh) 存储数据的方法和装置
US7565496B2 (en) Sharing memory among multiple information channels
CN106355543A (zh) 数据处理系统
CN118568742A (zh) 数据处理方法、可重构数据处理芯片和电子设备
CN113434299B (zh) 基于MapReduce框架的编码分布式计算方法
WO2002035859A2 (en) Method and apparatus for determining connections in a crossbar switch
CN118733243A (zh) 关系图处理方法、计算装置及系统
CN116450338A (zh) Gpu最大连续资源块的获取方法
CN119011578B (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