CN110705702A - 一种动态可扩展的卷积神经网络加速器 - Google Patents
一种动态可扩展的卷积神经网络加速器 Download PDFInfo
- Publication number
- CN110705702A CN110705702A CN201910929674.2A CN201910929674A CN110705702A CN 110705702 A CN110705702 A CN 110705702A CN 201910929674 A CN201910929674 A CN 201910929674A CN 110705702 A CN110705702 A CN 110705702A
- Authority
- CN
- China
- Prior art keywords
- data
- external
- multiply
- calculation
- memory
- 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
- 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/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种动态可扩展的卷积神经网络加速器,属于计算、推算、计数的技术领域。该加速器包括自适应数据存储模块和高效计算阵列调度模块。其中,自适应数据存储模块包括层次化存储模块和外部二维数据转换定制接口模块。高效计算阵列调度模块包括基于乘加逻辑的神经元处理单元阵列数据调度模块和基于查找表的神经元处理单元阵列数据调度模块。整个卷积神经网络加速器通过设计合理的多级存储结构来掩盖外存访问的数据延迟。通过根据网络层特点和任务需求对计算阵列进行数据调度,可以实现数据的重复利用和提高计算阵列查找表的访问并行度,提高运算速度,从而能够适应各种复杂的计算任务。
Description
技术领域
本发明公开了一种动态可扩展的卷积神经网络加速器,涉及神经网络的物理实现,属于计算、推算、计数的技术领域。
背景技术
随着计算机和通讯技术的进步,互联网数据呈爆炸式增长。海量数据的处理成为一个极大的挑战,传统方式已经无法应对当前的局面。深度学习已成为大数据处理的一个可行方法。深度学习是人工智能的重要组成部分,可以更真实地模拟人类大脑的工作机制从而实现更好的效果。其中,深度学习中的卷积神经网络在图像处理领域中取得了引人注目的成就。
卷积神经网络可以部署在云端,但是在很多应用场景中卷积神经网络本地化运行成为迫切的需求。在视频追踪等计算机视觉任务中,海量视频数据的网络传输成本很高,因此需要在本地完成特征提取和识别。自动驾驶对数据处理的实时性要求极高,大量的数据通过网络传输会导致很大的延迟,并且网络连接容易受环境影响,稳定性和可靠性都难以满足需求,因此基于云端的神经网络难以符合自动驾驶的需要。很多手机语音助手严重依赖云端处理,但是当网络通讯不良时,手机助手的流畅运行就需要通过本地化处理保障。神经网络的本地化处理可以减少对网络的依赖,降低网络传输延迟,并且有利于隐私保护。随着移动互联网的发展,在嵌入式移动设备上实现神经网络的本地化处理也成为一个迫切的需求。
卷积神经网络具有计算密集和存储密集两个特征。卷积神经网络包含大量的二维卷积、非线性激活以及池化等操作。每层网络计算都需要读取大量的权重、输入数据并产生大量的中间结果,频繁的数据交换会导致较大的访存延迟和访存功耗。由于运算量巨大,卷积网络的海量计算给嵌入式设备的本地化处理带来更加严峻的挑战,嵌入式设备对功耗更加敏感。近年来,卷积神经网络加速器逐渐成为研究热点,许多公司如谷歌、英伟达及众多高等院校都在进行相关的研究。卷积神经网络加速器可以为嵌入式设备带来低功耗、高性能的计算能力。因此卷积神经网络加速器的设计与研究具有重要意义。现有神经网络加速器通过设置卷积核输入输出缓冲单元或者生成操作数地址模块进行数据调度,存在数据读取功耗大的缺陷,基于单一结构计算阵列的神经网络加速器无法在高性能应用场景下较低延时、较少占用带宽地满足任务需求,本申请旨在通过多层次化存储的架构设计和灵活分配计算资源的卷积单元根据任务负载实现计算阵列的动态扩展。
发明内容
本发明的发明目的是针对上述背景技术的不足,提出了一种动态可扩展的卷积神经网络加速器以提升卷积神经网络的运算效率,实现数据复用,降低神经网络运作延迟,降低带宽,解决了现有神经网络加速器无法在高性能应用场景下较低延时、较少占用带宽地满足任务需求的技术问题。
本发明为解决上述技术问题采用以下技术方案:一种动态可扩展的卷积神经网络加速器,包括:自适应数据存储模块和高效计算阵列调度模块。其中,自适应数据存储模块又包括层次化存储模块和外部二维数据转换定制接口模块。高效计算阵列调度模块又由MA-NPEA数据调度模块和LUT-NPEA数据调度模块组成。
高能效动态可扩展卷积神经网络加速器中卷积处理单元CNPU组成的计算阵列采用异构设计。CNPU计算阵列包括基于乘加电路的计算阵列MA-NPEA、基于查找表乘法器的计算阵列LUT-NPEA和阵列间的共享存储器(Shared Memory)。每种计算阵列各有两个子模块。MA-NPEA由近似乘法器和近似加法器等基本电路组成。LUT-NPEA主要由基于一写多读SRAM的查找表和算术逻辑单元组成。
自适应数据存储模通过层次化存储模块实现设计合理的多级存储模块掩盖外存访问的数据延迟,将卷积神经网络加速器存储架构分为5个等级。五个等级如下所述:
Level 0:计算单元内部临时数据寄存器。临时数据寄存器(Temp Data Register)与神经元处理单元NPE紧密耦合,临时数据寄存器分为两类,一类是MA-NPEA中每个神经元处理单元NPE内部的寄存器,另一部分是LUT-NPEA中每个计算单元的查找表存储体、累加寄存器等。每个计算单元NPE都有相应的临时寄存器用于暂存中间结果。
Level 1:与计算阵列紧耦合的分布式数据缓存。与计算阵列紧耦合的分布式数据缓存(Distributed Memory,DM)用于存储来自特征图的输入数据。分布式数据缓存DM由k+1个存储块(Bank)构成。每个Bank通过灵活路由结构分别与MA-NPEA计算阵列的每一行相连。每一时刻总有k个Bank为计算阵列提供数据,另外一个Bank进行数据预取,以便在下一个周期使用。
Level 2:加速器与外部存储之间的数据缓存。加速器与外存之间的数据缓存主要包括外部数据装载缓存(External Load Data FIFO,ELDF)、外部数据存储缓存(ExternalStore Data FIFO,ESDF)、计算阵列间数据共享缓存(Shared Memory)。ELDF是加速器读取外部数据时的缓存。外部数据经过ELDF的缓冲,送入到加速器计算阵列内的各级缓存中。ESDF用于缓冲加速器需要写入外存中的数据。当需要把计算阵列的结果存储到外部存储时,可以先通过ESDF进行缓冲,可以缓解因外存访问接口繁忙造成数据通路阻塞。ESDF中需要写回的数据累积到一定数量,才会一次性写回外存,可以有效提高外存访问接口(External Memory Interface,EMI)利用率。计算阵列间数据共享存储器用于四个计算阵列之间的数据交互。对于不同的卷积并行计算策略,当两个或者两个以上阵列使用相同的数据时,共享存储器就可以存储这部分数据。在其它数据通路阻塞或者目标计算阵列繁忙的情况下,也可以把数据送入共享存储器进行缓冲。
Level 3:预取缓存。预取缓存(Prefetch Buffer)是用于从外存中预取数据,然后存入分布式SRAM中。利用卷积操作中的数据局部性,根据网络的参数以及当前任务的状态可以精确地从外部存储中预取出阵列计算所需要的数据。
Level 4:外部存储器。卷积网络加速器的存储系统包括片上存储和片外存储两部分。片上存储器一般由SRAM构成。SRAM是高速存储器,但是其成本高占用面积大,无法大规模使用。为了解决片上存储资源有限的问题,可以采用片外存储进行容量扩充。片外存储器一般采用同步动态随机存储器(Synchronous Dynamic RAM,SDRAM)。SDRAM是按照块(Bank)、页(Page)、列(Column)的三维物理结构组织的,并支持猝发(Burst)读取和写回方式,可以一次性连续传输多个数据。因此结合SDRAM的特性,能够充分发挥外部存储器的性能。本文使用DDR SDRAM(Double Data Rate SDRAM)作为外部存储器。与单倍数据速率相比,双倍速率技术可以在一个时钟周期内的上升沿和下降沿进行两次读写操作,速度提升两倍。
卷积处理单元CNPU与外存进行数据传输是通过外部存储访问接口EMI实现的。由于卷积网络计算需要读取大量的二维数据,但是传统的EMI并不适合二维数据的访问,读取的数据很大部分会浪费掉。因此外部二维数据转换接口模块可以对特征图和卷积核数据等二维数据进行转换和传输。外部二维数据转换接口模块把CNPU的16位特征图数据请求和混合位宽的权重数据请求转化为64位的数据请求。
外部二维数据转换接口模块主要由数据传输控制模块、数据读取模块和数据写回模块三个独立模块组成。数据读取模块(Data Read,DR)把数据访问请求发送给EMI后,把返回的数据送入ELDF。数据写回模块(Data Write,DW)把来自卷积处理单元的数据暂存到ESDF中。当ESDF中的数据累积到一定的数量后,通过EMI一次性写到外部存储的对应位置。当DR和DW同时访问EMI时,数据传输控制模块DTC可以决定把外存访问权限授权给哪个模块。为了保证数据的一致性,数据传输控制模块(Data Transfer Control,DTC)优先把外存访问权限授权给DW。
当从外存中读取数据时,外部二维数据转换接口模块把卷积处理单元CNPU的多种位宽的读数据访问请求转换成以64bit为单位的外存访问请求并发送给EMI。EMI根据数据请求从外存中读取所需的数据并传送给外部二维数据转换接口模块。外部二维数据转换接口模块对EMI返回的数据进行拆分,并把数据传送给分布式存储单元DM。当向外存写数据时,外部二维数据转换接口模块仍然先把卷积处理单元CNPU的数据访问请求转换为以64bit为单位的写数据请求,然后把写请求发送给EMI。同时外部二维数据转换接口模块把要写回外存的数据进行拼接。外存访问接口EMI根据写请求把数据写到外部存储的对应位置。
高效计算阵列调度模块由MA-NPEA数据调度模块和LUT-NPEA数据调度模块组成。
高效计算阵列调度模块由基于乘加逻辑的神经元处理单元阵列数据调度模块(MA-NPEA)和基于查找表的神经元处理单元阵列数据调度模块(LUT-NPEA)组成。这两者的数据调度方法如下所示:
1) MA-NPEA的数据调度
若MA-NPEA有k行计算单元,则分布式存储DM有k+1个存储体(Bank)。MA-NPEA k行计算单元围成一个外部圆环,外部圆环的每一个圆弧表示MA-NPEA的一行计算单元,分布式存储DM的 k+1个存储体围成一个内部圆环,内部的每一个圆弧表示分布式存储(DM)的一个存储块(Bank)分布式存储与计算阵列采用全连接的灵活路由互联结构,每个Bank可以为MA-NPEA计算阵列的任意一行计算单元提供计算数据。分布式存储的第1~k个Bank预先装载特征图的前k行数据。在第一个运行周期,第1~k个Bank的数据送入MA-NPEA进行计算。此时,第i个Bank与MA-NPEA的第i行计算单元一一映射。在MA-NPEA阵列计算的同时,第k+1个Bank开始预装载第k+1行输入数据。在完成第一个周期的计算后,卷积核向下移动一行,开始新的卷积运算,内部圆环逆时针旋转一个单位,表示分布式存储与MA-NPEA的行计算单元产生新的映射关系,此时,第i+1个Bank为第i行计算单元提供输入数据。计算阵列不再使用第1个Bank的数据,因此,第1个Bank数据失效,不再为阵列提供数据。而第k+1个Bank在上一周期预装载的数据,在本周期可用于第k行计算单元的计算。在第二个运行周期,当MA-NPEA进行计算时,第1个Bank开始预装载第k+2行数据。当第二个运行周期完成计算后,内部圆环继续逆时针转一个单位,分布式存储与计算阵列开始新的互联并进入第三个运行周期。在第三个运行周期内,第2个Bank空闲出来用于预装载第k+3行数据,而第1个 Bank为第k行计算单元提供数据。重复上述过程直至完成卷积操作。
每完成一个周期的计算任务,分布式存储都要按照逆时针旋转一个单位与计算阵列进行新的映射,分布式存储DM中大部分Bank的数据还可以继续被其它行的计算单元使用。每进入一个新的运行周期,总会空闲出一个Bank用于预取数据,同时,总会有一个Bank加入阵列计算中。这种分布式存储配合灵活的路由结构充分实现数据重用。除了第一个周期的第1个Bank以外,每个Bank中的数据都可以重复利用多次,实现了卷积运算的行间数据重用。通过分布式缓存和灵活的路由实现了数据的重用,避免了从外存中重复获取数据,减少访存功耗。
2)LUT-NPEA的数据调度
LUT-NPEA计算阵列继承了查找表乘法器的两种工作模式:乘法拆分模式和乘积查询模式。
在乘法拆分工作模式下,为了充分利用查找表资源,结合卷积算法的并行性特性,通过对特征图数据进行串行化处理提高查找表的有效利用率。特征图串行化调度方法基于特征图改变、卷积核固定的卷积并行计算策略。对于n张特征图,每一个像素点用两位数的索引表示,第一个数表示特征图的编号,第二个数表示该像素点在本特征图中的索引。通过本文的卷积网络压缩策略可以使多个特征图共享一个二维卷积核。例如,图中每张特征图的第一个像素点均与卷积核的第一个权重w1相乘,并把结果存入第一个查找表中。第一个查找表至少需要查询n次。实际上,每个查找表的平均重复使用次数远远大于n。
把n张特征图对应位置的元素排列成一维的数据,存入到查找表的地址FIFO中,然后,按照先进先出的顺序依次送入查找表,并得到卷积权重与对应像素数据的乘积。考虑特征图数据存在重用性,因此,采用灵活的路由结构把每个地址FIFO的输出端口连接到其它FIFO的输入端口,实现特征图的数据重用。当步长为1时,每个FIFO的输出连接到左侧相邻FIFO的输入端口。当步长为2时,每个FIFO的输出连接到间隔一个查找表地址FIFO的输入端口。地址FIFO之间路由关系根据卷积核移动的步长配置。
在乘积查询工作模式下,通过对卷积核数据串行化处理提高查找表的并行访问率。卷积核串行化调度需要配合特征图不变、卷积核改变的卷积并行计算策略。设卷积核权重进行了4bit量化,则有16种可能。乘积查询模式下,查找表存储的是输入数据与16种权值的乘积结果。与乘法拆分模式类似,同一张特征图可以与n个卷积核进行卷积操作。特征图的第1个元素可以与每个卷积核的第一个权值相乘,因此,可以把n个卷积核对应位置的权值组成一维的数据送入查找表的地址FIFO中。与乘法拆分模式不同的是,此模式的特征图数据无法实现重用。但是由于卷积核数据是重复使用的,因此每个地址FIFO采取首尾相连的方式实现卷积核的重复循环利用。
本发明采用上述技术方案,具有以下有益效果:本申请通过多层次化存储结构的自适应数据存储模块以及根据任务特点灵活分配计算资源的计算阵列调度模块实现卷积神经网络加速器的动态可扩展,发挥每种阵列的优势,并根据任务负载实现计算阵列的动态扩展。层次化的存储模块,可保证计算阵列的数据供应,提高了数据重复利用率,减少外部存储的访问并实现内部数据的灵活交互。对于大尺寸卷积操作通过拼接同类型的计算阵列实现同构阵列的扩展,最大限度地提高数据重用率和计算性能,降低存储资源和带宽的占用;对于大量重复乘法运算操作调度基于乘加电路的计算阵列和基于查找表乘法器的计算阵列实现异构阵列扩展,查找表的更新数据由基于乘加电路的计算阵列提供,降低神经网络运作延迟;在对性能要求极高的应用场景下,CNPU允许至少两组异构阵列同时运行,实现阵列的完全扩展,最大化计算资源的利用率。
附图说明
图1为本发明的卷积加速器CNPU计算阵列示意图。
图2为本发明的层次化存储结构模块示意图。
图3为本发明的外部二维数据转换接口模块示意图。
图4(a)、图4(b)、图4(c)为本发明MA-NPEA数据调度策略在初始化阶段、第一阶段、第二阶段的示意图。
图5为本发明的LUT-NPEA乘法拆分模式数据调度示意图。
图6为本发明的LUT-NPEA乘法查询模式数据调度示意图。
具体实施方式
下面结合具体实施例进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1所示,卷积处理单元(Convolutional Neuron Processing Unit,CNPU)的计算阵列采用异构设计。CNPU计算子系统包括基于乘加电路的计算阵列MA-NPEA、基于查找表乘法器的计算阵列LUT-NPEA和阵列间共享存储器(Shared Memory)。每种计算阵列各两个。MA-NPEA由近似乘法器和近似加法器等基本电路组成,适合计算任务量大、权重量化位宽大的卷积层。LUT-NPEA主要由基于一写多读SRAM的查找表和算术逻辑单元组成,适合权重量化位宽小、存在大量重复乘法计算的卷积层。卷积处理单元根据各个网络层的特点以及任务优先级,灵活地分配计算阵列。阵列扩展包含异构阵列扩展和同构阵列扩展。
对于大尺寸特征图或卷积核的卷积计算任务,虽然可以采取切割的方式进行,但是图片切割会造成数据冗余,浪费存储资源,增加访存带宽要求。为了最大限度的提高数据重用率和计算性能,节省存储资源,CNPU可以把相同类型的NPEA阵列进行拼接,实现同构阵列的扩展,这样可以增大图像分块的大小,降低存储资源和带宽的占用,提高计算性能,满足任务需求。
对于存在大量重复乘法运算的卷积层,调度LUT-NPEA实现基于查找表的乘法运算,由于LUT-NPEA采用查找表的方式实现乘法计算,查找表数据更新是在预处理阶段依靠MA-NPEA的计算单元实现的。为了减少阵列之间数据传输的延迟,在MA-NPEA#0和LUT-NPEA#0之间以及MA-NPEA#1和LUT-NPEA#1之间各增加了一个单向的数据传输通路。通过这个数据传输通道可以实现异构阵列扩展。通过流水操作可以实现各异构阵列的协同工作。
在对性能要求极高的应用场景下,CNPU允许四个阵列同时运行,实现阵列的完全扩展,最大化计算资源的利用率。
如图2所示,在与外存进行数据交互的时候,通过对存储器的存储架构分级来优化数据存储。level 0为计算单元内部临时数据寄存器。临时数据寄存器(Temp DataRegister)与神经元处理单元NPE紧密耦合,每个计算单元NPE都有相应的临时寄存器用于暂存中间结果。Level 1为计算阵列紧耦合的分布式数据缓存,Level 2为加速器与外部存储之间的数据缓存。Level 3为预取缓存。Level 4外部存储器。
如图3所示,卷积处理单元CNPU与外存进行数据传输是通过外部存储访问接口EMI实现的。由于卷积网络计算需要读取大量的二维数据,但是传统的EMI并不适合二维数据的访问,读取的数据很大部分会浪费掉。因此本文定制的外部二维数据转换接口(External2D Data Transfer Interface,E2DTI)可以对特征图和卷积核数据等二维数据进行转换和传输。E2DTI把CNPU的16位特征图数据请求和混合位宽的权重数据请求转化为64位的数据请求。外部二维数据转换接口E2DTI主要由数据传输控制模块、数据读取模块和数据写回模块三个独立模块组成。数据读取模块(Data Read,DR)把数据访问请求发送给EMI后,把返回的数据送入ELDF。数据写回模块(Data Write,DW)把来自卷积处理单元的数据暂存到ESDF中。当ESDF中的数据累积到一定的数量后,通过EMI一次性写到外部存储的对应位置。当DR和DW同时访问EMI时,数据传输控制模块DTC可以决定把外存访问权限授权给哪个模块。为了保证数据的一致性,数据传输控制模块(Data Transfer Control,DTC)优先把外存访问权限授权给DW。
当从外存中读取数据时,外部二维数据转换接口E2DTI把卷积处理单元CNPU的多种位宽的读数据访问请求转换成以64bit为单位的外存访问请求并发送给EMI。EMI根据数据请求从外存中读取所需的数据并传送给E2DTI。E2DTI对EMI返回的数据中进行拆分,并把数据传送给分布式存储单元DM。当向外存写数据时,外部二维数据转换接口E2DTI仍然先把卷积处理单元CNPU的数据访问请求转换为以64bit为单位的写数据请求,然后把写请求发送给EMI。同时E2DTI把要写回外存的数据进行拼接。外存访问接口EMI根据写请求把数据写到外部存储的对应位置。
MA-NPEA的数据调度如图4所示,若MA-NPEA有k行计算单元,则分布式存储DM有k+1个存储体(Bank)。以k等于8为例,MA-NPEA的数据调度如图4所示。外部圆环的一个圆弧表示MA-NPEA一行计算单元,共8行计算单元。内部的圆弧表示分布式存储(DM)的存储块(Bank),分布式存储包含9个Bank。分布式存储与计算阵列采用全连接的灵活路由互联结构,每个Bank可以为MA-NPEA计算阵列的任意一行计算单元提供计算数据。如图4(a)所示,分布式存储的第1~8个Bank预先装载特征图的前8行数据。在第一个运行周期,第1~8个Bank的数据送入MA-NPEA进行计算。此时,第i个Bank与MA-NPEA的第i行计算单元一一映射。在MA-NPEA阵列计算的同时,第9个Bank开始预装载第9行输入数据。如图4(b)所示,在完成第一个周期的计算后,卷积核向下移动一行,开始新的卷积运算,内部圆环逆时针旋转一个单位,表示分布式存储与MA-NPEA的行计算单元产生新的映射关系,此时,第i+1个Bank为第i行计算单元提供输入数据。计算阵列不再使用第1个Bank的数据,因此,第1个Bank数据失效,不再为阵列提供数据。而第9个Bank在上一周期预装载的数据,在本周期可用于第8行计算单元的计算。在第二个运行周期,当MA-NPEA进行计算时,第1个Bank开始预装载第10行数据。如图4(c)所示,当第二个运行周期完成计算后,内部圆环继续逆时针转一个单位,分布式存储与计算阵列开始新的互联并进入第三个运行周期。在第三个运行周期内,第2个Bank空闲出来用于预装载第11行数据,而第1个 Bank为第8行计算单元提供数据。重复上述过程直至完成卷积操作。每完成一个周期的计算任务,分布式存储都要按照逆时针旋转一个单位与计算阵列进行新的映射,分布式存储DM中大部分Bank的数据还可以继续被其他行的计算单元使用。每进入一个新的运行周期,总会空闲出一个Bank用于预取数据,同时,总会有一个Bank加入阵列计算中。这种分布式存储配合灵活的路由结构充分实现数据重用。除了第一个周期的第1个Bank以外,每个Bank中的数据都可以重复利用多次,实现了卷积运算的行间数据重用。通过分布式缓存和灵活的路由实现了数据的重用,避免了从外存中重复获取数据,减少访存功耗。
LUT-NPEA计算阵列继承了查找表乘法器的两种工作模式:如图5所示的乘法拆分模式和如图6所示的乘积查询模式。
在乘法拆分工作模式下,为了充分利用查找表资源,结合卷积算法的并行性特性,通过对特征图数据进行串行化处理提高查找表的有效利用率。特征图串行化调度方法基于特征图改变、卷积核固定的卷积并行计算策略。如图5所示,图中共有n张特征图,每一个像素点用两位数的索引表示,第一个数表示特征图的编号,第二个数表示该像素点在本特征图中的索引。通过本文的卷积网络压缩策略,可以使多个特征图共享一个二维卷积核。例如,图中每张特征图的第一个像素点均与卷积核的第一个权重w1相乘,并把结果存入第一个查找表中。第一个查找表至少需要查询n次。实际上,每个查找表的平均重复使用次数远远大于n。
如图5所示,把n张特征图对应位置的元素排列成一维的数据,存入到查找表的地址FIFO中,然后,按照先进先出的顺序依次送入查找表,并得到卷积权重与对应像素数据的乘积。考虑特征图数据存在重用性,因此,采用灵活的路由结构把每个地址FIFO的输出端口连接到其他FIFO的输入端口,实现特征图的数据重用。当步长为1时,每个FIFO的输出连接到左侧相邻FIFO的输入端口,如图5中实线所示。当步长为2时,每个FIFO的输出连接到间隔一个查找表地址FIFO的输入端口,如图5中虚线所示。地址FIFO之间路由关系根据卷积核移动的步长配置。
在乘积查询工作模式下,通过对卷积核数据串行化处理提高查找表的并行访问率。卷积核串行化调度需要配合特征图不变、卷积核改变的卷积并行计算策略。设卷积核权重进行了4bit量化,则有16种可能。乘积查询模式下,查找表存储的是输入数据与16种权值的乘积结果。与乘法拆分模式类似,同一张特征图可以与n个卷积核进行卷积操作。如图6所示,特征图的第1个元素可以与每个卷积核的第一个权值相乘,因此,可以把n个卷积核对应位置的权值组成一维的数据送入查找表的地址FIFO中。与乘法拆分模式不同的是,此模式的特征图数据无法实现重用。但是由于卷积核数据是重复使用的,因此,每个地址FIFO采取首尾相连的方式,实现卷积核的重复循环利用。
Claims (9)
1.一种动态可扩展的卷积神经网络加速器,其特征在于,包括:
自适应数据存储模块,通过多层次化存储结构读写数据,及,
计算阵列调度模块,包含至少一个基于乘加电路的计算子阵列和至少一个基于查找表乘法器的计算子阵列,调度至少两个相同类型的计算子阵列完成大尺寸数据的计算任务,调度至少一个基于乘加电路的计算子阵列和至少一个基于查找表乘法器的计算子阵列完成高任务负载的计算任务,基于查找表乘法器的计算子阵列所需的查找表数据由基于乘加电路的计算子阵列提供。
2.根据权利要求1所述一种动态可扩展的卷积神经网络加速器,其特征在于,所述自适应存储模块包含五级存储器,
第一级存储器为计算单元内部临时数据存储器,包括:基于乘加电路的计算子阵列中每个神经处理单元内部的寄存器,及,基于查找表乘法器的计算子阵列中每个神经处理单元的查找表存储体、累加寄存器;
第二级存储器为与基于乘加电路的计算子阵列紧耦合的分布式数据缓存,由多个存储体构成,存储体个数大于基于乘加电路的计算子阵列的行数,基于乘加电路的计算子阵列的每一行通过灵活路由结构与一个存储体相连,剩余的存储体预取用于下一运行周期的数据;
第三级存储器为加速器与外部存储之间的数据缓存,包括:用于缓存从外部存储读入的数据的外部数据装载缓存、用于缓存加速器需要写入外部存储的数据的外部数据存储缓存、计算子阵列间数据共享缓存;
第四级存储器为预取缓存,用户缓存从外部存储中预取的基于乘加电路的计算子阵列所需的数据,经缓存的预取数据存入与基于乘加电路的计算子阵列紧耦合的分布式数据缓存;
第五级存储器为外部存储器,用于存储基于乘加电路的计算子阵列所需的数据及中间计算结果。
3.根据权利要求1所述一种动态可扩展的卷积神经网络加速器,其特征在于,基于乘加电路的计算子阵列包含k行计算单元,与基于乘加电路的计算子阵列紧耦合的分布式数据缓存包含k+1个存储体,在第n个运行周期内,第i+(n-1)个存储体与i行计算单元映射以提供计算数据,第k+n个存储体预装载第k+n行计算数据,i=1,2,…,k。
4.据权利要求1所述一种动态可扩展的卷积神经网络加速器,其特征在于,基于查找表乘法器的计算子阵列工作于乘法拆分模式,基于特征图改变、卷积核固定的卷积并行计算策略串行化调度特征图实现乘法计算。
5.据权利要求1所述一种动态可扩展的卷积神经网络加速器,其特征在于,基于查找表乘法器的计算子阵列工作于乘积查询模式,基于特征图不变、卷积核改变的卷积并行计算策略串行化调度卷积核实现乘法计算。
6.根据权利要求2所述一种动态可扩展的卷积神经网络加速器,其特征在于,基于乘加电路的计算子阵列通过外部二维数据转换接口优先传输写数据的请求至外部存储访问接口,基于乘加电路的计算子阵列通过外部存储访问接口与外部存储进行数据交互。
7.根据权利要求6所述一种动态可扩展的卷积神经网络加速器,其特征在于,所述外部二维数据转换接口包括:数据传输控制模块、数据读取模块和数据写回模块,数据传输控制模块接收数据读取模块发出的读数据请求和数据写回模块发出的写数据请求后优先传输数据写请求至外部存储访问接口,数据读取模块在外部存储访问接口响应数据读请求后将从外部存储器读取的数据传输至外部数据装载缓存,数据写回模块在外部存储访问接口响应数据写请求后将外部数据存储缓存中的数据写入外部存储。
8.根据权利要求4所述一种动态可扩展的卷积神经网络加速器,其特征在于,基于特征图改变、卷积核固定的卷积并行计算策略串行化调度特征图的方法为:将每张特征图中相同位置的像素排列为一维数据后出入FIFO,根据卷积步长将各FIFO与其相邻的FIFO首尾相连,对各FIFO存储的数据与相应位置权重的乘积进行查表。
9.根据权利要求5所述一种动态可扩展的卷积神经网络加速器,其特征在于,基于特征图不变、卷积核改变的卷积并行计算策略串行化调度卷积核的方法为:将各卷积核对应位置的权值排列成一维数据后存入FIFO,每个FIFO的首尾相连,对各FIFO存储的数据与对应特征图像素点的乘积进行查表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910929674.2A CN110705702A (zh) | 2019-09-29 | 2019-09-29 | 一种动态可扩展的卷积神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910929674.2A CN110705702A (zh) | 2019-09-29 | 2019-09-29 | 一种动态可扩展的卷积神经网络加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110705702A true CN110705702A (zh) | 2020-01-17 |
Family
ID=69197952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910929674.2A Pending CN110705702A (zh) | 2019-09-29 | 2019-09-29 | 一种动态可扩展的卷积神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110705702A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111832719A (zh) * | 2020-07-28 | 2020-10-27 | 电子科技大学 | 一种定点量化的卷积神经网络加速器计算电路 |
CN111914999A (zh) * | 2020-07-30 | 2020-11-10 | 云知声智能科技股份有限公司 | 一种减小神经网络加速器计算带宽的方法和设备 |
CN112070217A (zh) * | 2020-10-15 | 2020-12-11 | 天津大学 | 一种卷积神经网络加速器的内部存储带宽优化方法 |
CN112269751A (zh) * | 2020-11-12 | 2021-01-26 | 浙江大学 | 一种面向亿级神经元类脑计算机的芯片扩展方法 |
CN112488305A (zh) * | 2020-12-22 | 2021-03-12 | 西北工业大学 | 一种神经网络存储组织结构及其可配置管理方法 |
CN113435570A (zh) * | 2021-05-07 | 2021-09-24 | 西安电子科技大学 | 可编程卷积神经网络处理器、方法、设备、介质、终端 |
CN117217274A (zh) * | 2023-11-08 | 2023-12-12 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3035203A1 (en) * | 2014-12-19 | 2016-06-22 | Intel Corporation | Fine-grain storage interface and method for low power accelerators |
CN107341544A (zh) * | 2017-06-30 | 2017-11-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
CN108564168A (zh) * | 2018-04-03 | 2018-09-21 | 中国科学院计算技术研究所 | 一种对支持多精度卷积神经网络处理器的设计方法 |
-
2019
- 2019-09-29 CN CN201910929674.2A patent/CN110705702A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3035203A1 (en) * | 2014-12-19 | 2016-06-22 | Intel Corporation | Fine-grain storage interface and method for low power accelerators |
CN107341544A (zh) * | 2017-06-30 | 2017-11-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
CN108564168A (zh) * | 2018-04-03 | 2018-09-21 | 中国科学院计算技术研究所 | 一种对支持多精度卷积神经网络处理器的设计方法 |
Non-Patent Citations (1)
Title |
---|
陈 壮: "基于动态精度的可扩展高能效CNN加速器设计", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑 (月刊)》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111832719A (zh) * | 2020-07-28 | 2020-10-27 | 电子科技大学 | 一种定点量化的卷积神经网络加速器计算电路 |
CN111914999A (zh) * | 2020-07-30 | 2020-11-10 | 云知声智能科技股份有限公司 | 一种减小神经网络加速器计算带宽的方法和设备 |
CN111914999B (zh) * | 2020-07-30 | 2024-04-19 | 云知声智能科技股份有限公司 | 一种减小神经网络加速器计算带宽的方法和设备 |
CN112070217A (zh) * | 2020-10-15 | 2020-12-11 | 天津大学 | 一种卷积神经网络加速器的内部存储带宽优化方法 |
CN112070217B (zh) * | 2020-10-15 | 2023-06-06 | 天津大学 | 一种卷积神经网络加速器的内部存储带宽优化方法 |
CN112269751A (zh) * | 2020-11-12 | 2021-01-26 | 浙江大学 | 一种面向亿级神经元类脑计算机的芯片扩展方法 |
CN112488305A (zh) * | 2020-12-22 | 2021-03-12 | 西北工业大学 | 一种神经网络存储组织结构及其可配置管理方法 |
CN112488305B (zh) * | 2020-12-22 | 2023-04-18 | 西北工业大学 | 一种神经网络存储装置及其可配置管理方法 |
CN113435570A (zh) * | 2021-05-07 | 2021-09-24 | 西安电子科技大学 | 可编程卷积神经网络处理器、方法、设备、介质、终端 |
CN113435570B (zh) * | 2021-05-07 | 2024-05-31 | 西安电子科技大学 | 可编程卷积神经网络处理器、方法、设备、介质、终端 |
CN117217274A (zh) * | 2023-11-08 | 2023-12-12 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
CN117217274B (zh) * | 2023-11-08 | 2024-06-04 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110705702A (zh) | 一种动态可扩展的卷积神经网络加速器 | |
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
CN110097174B (zh) | 基于fpga和行输出优先的卷积神经网络实现方法、系统及装置 | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN109948774A (zh) | 基于网络层捆绑运算的神经网络加速器及其实现方法 | |
TWI718336B (zh) | Dpu操作用的系統 | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
CN111124675A (zh) | 一种面向图计算的异构存内计算设备及其运行方法 | |
CN111898733A (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN111582465B (zh) | 基于fpga的卷积神经网络加速处理系统、方法以及终端 | |
CN112905530B (zh) | 片上架构、池化计算加速器阵列、单元以及控制方法 | |
Biookaghazadeh et al. | Toward multi-fpga acceleration of the neural networks | |
CN113222130A (zh) | 一种基于fpga的可重构卷积神经网络加速器 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
Min et al. | NeuralHMC: An efficient HMC-based accelerator for deep neural networks | |
CN113191491B (zh) | 多维度并行的人工智能处理器架构 | |
CN111610963B (zh) | 芯片结构及其乘加计算引擎 | |
CN117234720A (zh) | 动态可配置的存算融合数据缓存结构、处理器及电子设备 | |
CN109948787B (zh) | 用于神经网络卷积层的运算装置、芯片及方法 | |
CN113128688B (zh) | 通用型ai并行推理加速结构以及推理设备 | |
CN113392963B (zh) | 基于fpga的cnn硬件加速系统设计方法 | |
CN114912596A (zh) | 面向稀疏卷积神经网络的多chiplet系统及其方法 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200117 |
|
RJ01 | Rejection of invention patent application after publication |