CN110222818A - 一种用于卷积神经网络数据存储的多bank行列交织读写方法 - Google Patents

一种用于卷积神经网络数据存储的多bank行列交织读写方法 Download PDF

Info

Publication number
CN110222818A
CN110222818A CN201910395235.8A CN201910395235A CN110222818A CN 110222818 A CN110222818 A CN 110222818A CN 201910395235 A CN201910395235 A CN 201910395235A CN 110222818 A CN110222818 A CN 110222818A
Authority
CN
China
Prior art keywords
array
bank
data
intermediate result
storage
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
CN201910395235.8A
Other languages
English (en)
Other versions
CN110222818B (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.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
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 Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN201910395235.8A priority Critical patent/CN110222818B/zh
Publication of CN110222818A publication Critical patent/CN110222818A/zh
Application granted granted Critical
Publication of CN110222818B publication Critical patent/CN110222818B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Abstract

本发明一种用于卷积神经网络数据存储的多bank行列交织读写方法,设计多bank的存储结构,多bank存储器根据不同的运算模式调整数据存储通路,各阵列子集与卷积核一一对应,各阵列子集产生的不同通道的中间结果数据,直接分bank写入多bank存储器中,在中间结果数据读出的过程,采用逐bank读出的方法,这样每次读取的中间结果数据都是属于同一个通道内的中间结果数据,再进行下一次的数据调用时即可直接调用。本发明提高了数据调度效率。

Description

一种用于卷积神经网络数据存储的多bank行列交织读写方法
技术领域
本发明涉及基于动态可重构阵列对卷积神经网络进行加速的数据存储机制,具体为一种用于卷积神经网络数据存储的多bank行列交织读写方法。
背景技术
人工智能是目前热门的计算机科学之一,作为实现人工智能的主要方式,深度学习也得到了深远的发展。卷积神经网络(Convolution Neural Network,CNN)是人工神经网络结构研究最多应用最广的网络结构之一,目前已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于CNN避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。近年来卷积神经网络在计算机视觉领域取得了很不错的成就,同时也让卷积神经网络得到了发展。神经网络的核心是运算,CNN在应用于计算机视觉领域时,利用卷积核对图像数据进行特征提取,其核心运算是卷积运算操作。通常,在CNN网络中,卷积运算占总运算操作数的90%左右。因此目前来说,如何高效的完成CNN网络中的卷积运算操作,是CNN加速器设计的核心问题。
随着CNN网络层数和神经元个数的增加,模型的计算复杂度以指数级增长,深度学习算法的学习速度和运行速度瓶颈越来越依赖于硬件计算平台。对于深度学习算法的硬件加速,目前通常有三类实现方式——多核CPU、GPU和FPGA,它们的共同特点是可以实现高并行度的计算。然而,现有的硬件实现方式功耗较高,还存在着能量效率(性能/功耗)较低的问题,并不能应用在智能移动终端上,例如智能手机、可穿戴设备或者是自动驾驶汽车等。在此背景下,可重构处理器已经被证明是一种兼具高灵活性和高能量效率的并行计算架构形式,它的优势在于可以根据不同的模型大小来选择合适的资源配置策略,扩大专用处理器使用范围的同时提高处理性能,是多核CPU和FPGA技术进一步发展受到限制的解决途径之一,有可能成为未来实现高效能深度学习SoC的方案之一。和通用处理器之间的区别在于它不仅可以改变控制流,还可以动态地改变数据通路的结构,具有高性能、低硬件开销和功耗、灵活性好、扩展性好的优点;同时,在处理速度上,可重构处理器的性能正在接近专用定制芯片。可重构计算阵列使用多个处理单元(Processing Elements,PEs)构成的阵列来满足不同应用程序的不同需求。未来的计算系统往往需要兼具多功能和高性能的特点,当前的趋势是在计算系统中加入多个可重构计算阵列,来自适应地支持不同的标准,同时满足日益增加的性能需求。
基于SoC实现的神经网络加速器一般是通过设计处理单元阵列实现神经网络的并行运算。加速器的性能往往取决于PE阵列的并行度以及工作的频率,在进行加速器设计时也会通过增加PE单元和优化电路提高工作频率来提高电路的性能。目前深度神经网络是多层网络排布,如图1所示,是一个8层网络排布的深度神经网络。对于神经网络来说,中间层的数据在运算中产生,并且需要作为下一层网络的输入,对中间层数据的调度会影响到神经网络加速器的整体性能。然而,基于SoC实现的神经网络加速器,往往片上存储有限,难以对中间结果数据完全进行存储。此外,随着神经网络的层数的增加,中间层往往包含有很多的通道数据。对于不同通道之间的数据,如果不分别对其进行存储,则会影响下一层网络运算时的数据流调度,甚至会影响到运算的准确率。中间结果数据的存储策略不仅仅会影响到神经网络的加速性能,更有可能影响到功能。因此很多设计神经网络加速的工作都会考虑到对中间结果数据的存储调度。MIT的Eyeriss采用一个global buffer对神经网络的中间结果数据进行调度,清华的DNA在片上用SRAM作为中间缓存,与DRAM相连进行数据的访存调度。然而,现在Eyeriss和DNA等采用的单一bank的中间结果数据缓存难以达到对运算的中间结果数据进行规则的组织排布这个目的。
发明内容
针对现有技术中存在的问题,本发明提供一种用于卷积神经网络数据存储的多bank行列交织读写方法,能够实现对运算的中间结果数据进行规则的组织排布的目的。
本发明是通过以下技术方案来实现:
一种用于卷积神经网络数据存储的多bank行列交织读写方法,包括如下步骤:
步骤1,根据PE阵列的运算模式,将PE阵列分成多个PE阵列子集,每个PE阵列子集对应一个卷积核;设计多bank存储器,根据PE阵列的运算模式,确定PE阵列与多bank存储器之间数据选择器的选通,使不同PE阵列子集的输出对应不同的bank进行存储,PE阵列子集与bank一一对应;
步骤2,不同的PE阵列子集同时完成不同卷积核的运算并输出不同通道的中间结果数据,各PE阵列子集的中间结果数据输出到多bank存储器的相应bank中;
步骤3,从多bank存储器中逐bank读出中间结果数据。
优选的,PE阵列的每行分别对应一个多bank存储器。
优选的,步骤1中,将PE阵列分成多个PE阵列子集具体是:PE阵列各行中多个PE单元与一个SPE单元相互连接组成一个PE阵列子集;步骤2中,PE阵列子集完成卷积核运算具体是:PE单元内运算的中间数据传入到SPE内做累加,经过SPE内的激活函数模块输出,作为PE阵列子集的中间结果数据输出。
优选的,步骤1中,PE阵列的运算模式为3*3的模式,PE阵列为22*22,PE阵列的每行分别对应一个多bank存储器,多bank存储器为8bank存储器,PE阵列的每行分成7个PE阵列子集;步骤2中,同一行的7个PE阵列子集输出的中间结果数据并行写入到该行对应的多bank存储器的bank1~bank7中。
优选的,步骤1中,PE阵列的运算模式为5*5的模式,PE阵列为22*22,PE阵列的每行分别对应一个多bank存储器,多bank存储器为8bank存储器,PE阵列的每行分成4个PE阵列子集;步骤2中,同一行的4个PE阵列子集输出的中间结果数据先并行写入到该行对应的多bank存储器的bank1~bank4中,当bank1~bank4存储满以后,数据选择器跳转到bank5~bank8进行数据传输。
优选的,步骤1中,PE阵列的运算模式为11*11的模式,PE阵列为22*22,PE阵列的每行分别对应一个多bank存储器,多bank存储器为8bank存储器,PE阵列的每行分成2个PE阵列子集;步骤2中,同一行的2个PE阵列子集输出的中间结果数据先并行写入到该行对应的多bank存储器的bank1~bank2中,bank1~bank2存储满以后,数据选择器选通中间结果数据写入到bank3~bank4中,bank3~bank4存储满以后,数据选择器选通中间结果数据写入到bank5~bank6中,bank5~ban6存储满以后,数据选择器选通中间结果数据写入到bank7~bank8中。
优选的,步骤3中,从多bank存储器中逐bank读出中间结果数据具体是:每次先将上一个bank内的中间结果数据读取完毕,再进行下一个bank内中间结果数据的读取。
与现有技术相比,本发明具有以下有益的技术效果:
本发明设计多bank的存储结构,多bank存储器根据不同的运算模式调整数据存储通路,各阵列子集与卷积核一一对应,各阵列子集产生的不同通道的中间结果数据,直接分bank写入多bank存储器中,由于中间结果数据在写入的过程中是分通道进行的多bank存储,在中间结果数据读出的过程,采用逐bank读出的方法,这样每次读取的中间结果数据都是属于同一个通道内的中间结果数据,再进行下一次的数据调用时即可直接调用。本发明直接分bank写入多bank存储器中,而不需要增加额外的数据存储模式,减小了数据写入时的控制,直接让中间结果数据规则的排布在输出存储中。因此,多bank存储器更加适用于高并行度阵列的卷积运算,当运算的并行度提高时,增加存储器的bank数量即可。与全局存储器相比,多bank存储器本身的读写功能也无需做额外的设计,控制方面多bank存储器也更为简单,并且多bank存储器的数据排布组织更为规则。多bank存储器应用于卷积神经网络加速器比现有的全局存储器的数据调度效率更高。本发明以动态可重构技术为基础,结合硬件提出的针对CNN网络进行加速的数据流存储调度机制,对卷积神经网络运算产生的多通道并行数据分bank存储,可以高效的对运算阵列中高并行度运算产生的运算数据进行有效存储,符合卷积神经网络的运算特点,使数据调度的效率提高了,在满足神经网络算法中间结果数据存储的同时,简化了数据的二级调度。
附图说明
图1为AlexNet的架构。
图2为CNN加速器的动态可重构运算阵列及输出存储架构。
图3为CNN加速器的动态可重构运算模式。
图4为本发明所述SPE与输出存储的连接关系。
图5为本发明所述PE阵列与输出存储的示意图。
图6为本发明所述不同计算模式下PE阵列与multi-bank的连接。
图7为本发明所述3*3卷积核运算模式下的数据并行列写入模式。
图8为本发明所述3*3卷积核运算模式下的数据行读出模式。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
CNN算法包含大量的计算,片上实现CNN算法的优化加速通过增加运算阵列提高运算的并行度,可以并行地执行CNN算法。以AlexNet为例,其架构如图1所示,卷积神经网络在运算时,层与层之间是相连的,前一个卷积层产生的输出结果是接下来一个卷积层的输入数据。然而,对于片上系统来说硬件资源是有限的,CNN的算法无法完全映射到硬件架构上,前一层所产生的输出结果需要进行存储,等待硬件资源空闲后再作为下一个卷积层的输入进行运算。对于CNN算法来说,上一层网络卷积运算得到的数据与接下来一个卷积层之间的数据映射是有关联的,在对这些中间结果数据进行存储调度时需要进行规则的组织和排布,以利于数据的存储和再次使用时读取,这是提高CNN硬件加速时数据访存效率的关键。从CNN算法的特点可以看到,CNN在运算的过程中,每一层内的卷积核与该层的输入图像进行卷积运算,得到的结果是下一层的数据。每个卷积核运算会得到不同通道的数据,例如AlexNet的第一个卷积层,输入图像与96个卷积核分别进行卷积运算,得到的输出图像通道数为96个通道。因此,在运算过程中对运算的中间结果数据进行规则的组织排布会直接影响网络的数据访问效率。然而,现在Eyeriss和DNA等采用的单一bank的中间结果数据缓存难以达到这个目的。
CNN网络加速器的动态可重构运算模块如图2所示,加速器的运算单元是一个22*22的运算单元(PE)阵列。PE阵列的每行形成PE子阵列,包含有15个PE单元和7个SPE单元,行与行之间是并行的关系。PE阵列可以完成3种卷积核尺寸的计算模式,分别为3*3,5*5,11*11大小的卷积核。以一个3*3的PE阵列子集为例,说明PE阵列所设计加速器的运算阵列工作模式:
PE阵列根据卷积核的尺寸分配运算单元,图3中的PE阵列子集是可以进行卷积核尺寸为3*3的卷积神经网络算法。在运算单元分配好以后,图像存储器和权值存储器将所存储的图像数据和权值数据映射到PE单元内。
具体过程如下:
首先,将卷积核逐行的形式映射到PE阵列上,每个PE单元上映射一行卷积核数据,图3中第一个卷积核的第一行映射到PE阵列第一行的第一个PE单元,第一个卷积核的第二行映射到PE阵列第一行的第二个PE单元,第一个卷积核的最后一行映射到一个SPE单元内。这个PE阵列子集每次可以映射三个卷积核,每个卷积核运算得到的数据是不同通道的数据,即每次可以运算三个通道的数据。
其次,将图像数据逐行广播映射到整个PE阵列上,并进行卷积计算,图像数据经过逐行广播的形式,映射到整个PE阵列上,然后与已经映射在PE单元内的卷积核数据进行卷积运算。
最后,每个PE单元内的卷积计算完毕后会产生中间数据,此时每个PE单元内部的数据为部分的卷积乘数据,完整的卷积核所映射的PE单元内运算所得到的结果再进行累加,就得到最终的输出数据,即中间结果数据。此时,将所计算得到的中间数据传输到下一级PE单元,直到SPE单元为最后一级运算单元,得到中间结果数据,进行输出。从例子中可以看出来,不同的PE子阵列完成的是不同卷积核的卷积运算,通过SPE单元输出的中间结果数据即为下一个卷积层的输入数据。在神经网络加速器工作过程中,运算阵列上会形成多个子阵列。因此会映射多个卷积核,这些卷积核的工作过程是并行的,运算所得到的结果是不同通道内数据。对中间结果数据进行规则的组织和存储,可以提高数据二次访问的效率。
本发明为动态可重构运算阵列提出一个针对卷积神经网络的数据存储调度技术,称为多bank的行列交织读写技术。应用于基于FPGA实现的卷积神经网络加速器阵列数据输出调度,可以应用于LeNet、AlexNet、VGG等多种网络结构。
本发明提出的用于卷积神经网络的多bank行列交织读写技术,对CNN算法在硬件实现时产生的中间结果数据,分通道进行规则的组织和排布,大大的提高了数据访存效率。
本发明提出的多bank行列交织读写技术,是针对卷积神经网络加速器中这种多通道并行数据运算方式而提出的高效的数据调度方法。如图5所示,多个PE单元与一个SPE单元相互连接组成一个PE阵列子集,根据前面所介绍的卷积神经网络在PE阵列上的工作模式,阵列内的运算单元之间有数据连接,PE单元内运算的中间数据传入到SPE内做累加,经过SPE内的激活函数模块输出中间结果数据。整个PE阵列的输出是SPE单元的输出,多个SPE单元同时工作完成并行运算并输出数据,即输出中间结果数据。即,多个PE单元和一个SPE单元组成一个PE阵列子集,可以完成一个卷积核的卷积操作运算;多个SPE单元完成多个不同卷积核的卷积操作运算,根据卷积神经网络算法可以得出,在卷积神经网络中不同的卷积核与输入图像做卷积进行特征提取,输出图像是不同通道的图像数据,即多个SPE单元输出的是不同通道的图像数据。多bank存储器根据不同的运算模式调整数据存储通路,将不同通道的中间结果数据,分bank写入多bank存储器中。多bank行列交织读写技术是对PE阵列运算的中间结果数据进行组织存储。PE阵列每行对应一个多bank存储器,以PE阵列的一行为例,该行的多个PE阵列子集与其多bank存储器的连接关系如图4所示。在进行卷积神经网络运算过程中,通过电路进行配置不同的运算模式。在不同的运算模式下,通过数据选择器可以改变数据存储的模式。存储器的模式根据阵列进行配置,可以提高存储器的存储利用率。
以PE阵列的一行为例,多bank存储器的容量为8个bank,具体的调度步骤如下:
1、卷积神经网络算法在PE阵列上进行运算时,首先确定PE阵列的运算模式,即卷积核的尺寸。根据PE阵列的运算模式,确定PE阵列与存储器之间数据选择器的选通。不同的PE阵列子集的输出对应不同的bank进行存储;
2、根据前面对阵列运算时输入数据映射模式的介绍可知,在PE阵列开始进行运算的时候,不同的PE阵列子集同时输出不同通道的中间结果数据。每个PE阵列子集的中间结果数据对应传输到多bank存储器的某一bank中,各个bank之间的存储空间是相互独立的。即与PE阵列对应,可以并行的往多个bank中写入中间结果数据。将多bank存储器视为一个二维的存储器,bank在存储器内逐行排布,那么中间结果数据并行写入多bank中即为数据列写入过程。如图6所示,对于3*3模式下的卷积运算,SPE1~SPE7的中间结果数据并行写入到bank1~bank7。5*5模式下的卷积运算,有4个SPE作为输出,中间结果数据先并行写入到bank1~bank4,当bank1~bank4的存储器存储满了以后,数据选择器跳转到bank5~bank8进行数据传输。11*11模式下的卷积运算,有2个SPE作为输出,数据先并行输入到bank1~bank2,bank1~bank2存储满了以后,数据选择器选通中间结果数据写入到bank3~bank4,bank3~bank4存储满了以后,数据选择器选通中间结果数据写入到bank5~bank6,bank5~ban6存储满了以后,数据选择器选通中间结果数据写入到bank7~bank8。
3、存储在输出存储器中的数据需要进行二次调度,作为下一个卷积层的输入数据,因此需要将多bank存储器中的中间结果数据读出。中间结果数据在写入的过程中是分通道进行的多bank存储,在中间结果数据读出的过程,采用逐bank读出的方法。每次先将上一个bank内的中间结果数据读取完毕,再进行下一个bank内中间结果数据的读取,这样每次读取的中间结果数据都是属于同一个通道内的中间结果数据。再进行下一次的数据调用时即可直接调用。同理,bank在存储器内是逐行排布的,因此中间结果数据的逐bank读出即为数据的行读出过程。
综上即为多bank行列交织读写技术应用于卷积神经网络运算的调度步骤。
具体的实施措施如下:
以3*3的运算模式为例,对于22*22的PE阵列的一行来说,可以配置形成7个PE阵列子集,7个PE阵列子集的输出通过数据选择器按顺序与存储器的bank1~bank7相连接。
如图7所示,当PE阵列运行时,7个PE阵列子集输出的中间结果数据并行的写入到bank1~bank7中。以二维的存储结构来说,中间结果数据是列写入到多bank存储器中的。
如图8所示,当多bank存储器中的中间结果数据读出时,对多bank存储器内的中间结果数据按照bank顺序逐一读出,不同bank内存储的不同通道的数据。这样行读出的形式直接对中间结果数据进行了分通道的组织排布,提高了数据调度的效率。
之前的研究工作中,MIT和清华的研究团队通过在系统中加入一个大容量的全局存储器实现对中间结果数据的存储调度。然而这样的调度方式没有去结合卷积神经网络算法的特点进行考虑,会产生以下的问题:多个通道数据存储在一片存储上,在进行二次调度时,需要额外的控制数据的访问模式,例如同一个通道数据存储的地址不相连,在读取的过程中需要间隔的读取数据。或者在写入时增加额外的数据排布模式。随着运算并行度的增加,数据调度的困难性也会大幅度增加,而运算并行度是神经网络加速器性能的关键。本发明所设计的多bank的行列交织读写技术应用在卷积神经网络运算加速方面时,通过设计多bank的存储结构,使并行的多通道数据可以直接的写入到多bank存储器中,而不需要增加额外的数据存储模式。减小了数据写入时的控制,直接让中间结果数据规则的排布在输出存储中。在对多bank存储器中的中间结果数据读出时,分通道进行读出的模式也可以让中间结果数据可以直接地作为下一个卷积层的输入数据。因此,多bank存储器更加适用于高并行度阵列的卷积运算。当运算的并行度提高时,增加存储器的bank数量即可,而全局存储器则需要增加更为复杂的数据读写控制。与全局存储器相比,多bank存储器本身的读写功能也无需做额外的设计,控制方面多bank存储器也更为简单,并且多bank存储器的数据排布组织更为规则。综上多bank存储器应用于卷积神经网络加速器比全局存储器的数据调度效率更高。

Claims (7)

1.一种用于卷积神经网络数据存储的多bank行列交织读写方法,其特征在于,包括如下步骤:
步骤1,根据PE阵列的运算模式,将PE阵列分成多个PE阵列子集,每个PE阵列子集对应一个卷积核;设计多bank存储器,根据PE阵列的运算模式,确定PE阵列与多bank存储器之间数据选择器的选通,使不同PE阵列子集的输出对应不同的bank进行存储,PE阵列子集与bank一一对应;
步骤2,不同的PE阵列子集同时完成不同卷积核的运算并输出不同通道的中间结果数据,各PE阵列子集的中间结果数据输出到多bank存储器的相应bank中;
步骤3,从多bank存储器中逐bank读出中间结果数据。
2.一种用于卷积神经网络数据存储的多bank行列交织读写方法,其特征在于,PE阵列的每行分别对应一个多bank存储器。
3.根据权利要求1所述的用于卷积神经网络数据存储的多bank行列交织读写方法,其特征在于,步骤1中,将PE阵列分成多个PE阵列子集具体是:PE阵列各行中多个PE单元与一个SPE单元相互连接组成一个PE阵列子集;步骤2中,PE阵列子集完成卷积核运算具体是:PE单元内运算的中间数据传入到SPE内做累加,经过SPE内的激活函数模块输出,作为PE阵列子集的中间结果数据输出。
4.根据权利要求1所述的用于卷积神经网络数据存储的多bank行列交织读写方法,其特征在于,步骤1中,PE阵列的运算模式为3*3的模式,PE阵列为22*22,PE阵列的每行分别对应一个多bank存储器,多bank存储器为8bank存储器,PE阵列的每行分成7个PE阵列子集;步骤2中,同一行的7个PE阵列子集输出的中间结果数据并行写入到该行对应的多bank存储器的bank1~bank7中。
5.根据权利要求1所述的用于卷积神经网络数据存储的多bank行列交织读写方法,其特征在于,步骤1中,PE阵列的运算模式为5*5的模式,PE阵列为22*22,PE阵列的每行分别对应一个多bank存储器,多bank存储器为8bank存储器,PE阵列的每行分成4个PE阵列子集;步骤2中,同一行的4个PE阵列子集输出的中间结果数据先并行写入到该行对应的多bank存储器的bank1~bank4中,当bank1~bank4存储满以后,数据选择器跳转到bank5~bank8进行数据传输。
6.根据权利要求1所述的用于卷积神经网络数据存储的多bank行列交织读写方法,其特征在于,步骤1中,PE阵列的运算模式为11*11的模式,PE阵列为22*22,PE阵列的每行分别对应一个多bank存储器,多bank存储器为8bank存储器,PE阵列的每行分成2个PE阵列子集;步骤2中,同一行的2个PE阵列子集输出的中间结果数据先并行写入到该行对应的多bank存储器的bank1~bank2中,bank1~bank2存储满以后,数据选择器选通中间结果数据写入到bank3~bank4中,bank3~bank4存储满以后,数据选择器选通中间结果数据写入到bank5~bank6中,bank5~ban6存储满以后,数据选择器选通中间结果数据写入到bank7~bank8中。
7.根据权利要求1所述的用于卷积神经网络数据存储的多bank行列交织读写方法,其特征在于,步骤3中,从多bank存储器中逐bank读出中间结果数据具体是:每次先将上一个bank内的中间结果数据读取完毕,再进行下一个bank内中间结果数据的读取。
CN201910395235.8A 2019-05-13 2019-05-13 一种用于卷积神经网络数据存储的多bank行列交织读写方法 Active CN110222818B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910395235.8A CN110222818B (zh) 2019-05-13 2019-05-13 一种用于卷积神经网络数据存储的多bank行列交织读写方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910395235.8A CN110222818B (zh) 2019-05-13 2019-05-13 一种用于卷积神经网络数据存储的多bank行列交织读写方法

Publications (2)

Publication Number Publication Date
CN110222818A true CN110222818A (zh) 2019-09-10
CN110222818B CN110222818B (zh) 2021-08-13

Family

ID=67820908

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910395235.8A Active CN110222818B (zh) 2019-05-13 2019-05-13 一种用于卷积神经网络数据存储的多bank行列交织读写方法

Country Status (1)

Country Link
CN (1) CN110222818B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110717583A (zh) * 2019-09-30 2020-01-21 上海寒武纪信息科技有限公司 卷积电路、处理器、芯片、板卡和电子设备
CN110738310A (zh) * 2019-10-08 2020-01-31 清华大学 一种稀疏神经网络加速器及其实现方法
CN110930290A (zh) * 2019-11-13 2020-03-27 东软睿驰汽车技术(沈阳)有限公司 一种数据处理方法及装置
CN111126593A (zh) * 2019-11-07 2020-05-08 复旦大学 可重构的自然语言深度卷积神经网络加速器
CN113138957A (zh) * 2021-03-29 2021-07-20 北京智芯微电子科技有限公司 用于神经网络推理的芯片及加速神经网络推理的方法
CN113469350A (zh) * 2021-07-07 2021-10-01 武汉魅瞳科技有限公司 一种适于npu的深度卷积神经网络加速方法和系统
CN113962361A (zh) * 2021-10-09 2022-01-21 西安交通大学 一种面向基于Winograd的CNN加速器系统的数据无冲突调度方法
CN114385089A (zh) * 2022-03-22 2022-04-22 北京清微智能信息技术有限公司 一种基于交叉编址的动态bank存储方法、装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3330861A1 (en) * 2016-12-01 2018-06-06 VIA Alliance Semiconductor Co., Ltd. Processor with memory array operable as either victim cache or neural network unit memory
CN108537334A (zh) * 2018-04-26 2018-09-14 济南浪潮高新科技投资发展有限公司 一种针对cnn卷积层运算的加速阵列设计方法
CN108628799A (zh) * 2018-04-17 2018-10-09 上海交通大学 可重构的单指令多数据脉动阵列结构、处理器及电子终端
CN109409511A (zh) * 2018-09-25 2019-03-01 西安交通大学 一种用于动态可重构阵列的卷积运算数据流调度方法
CN208766715U (zh) * 2018-07-26 2019-04-19 珠海市一微半导体有限公司 3*3卷积算法的加速电路

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3330861A1 (en) * 2016-12-01 2018-06-06 VIA Alliance Semiconductor Co., Ltd. Processor with memory array operable as either victim cache or neural network unit memory
CN108628799A (zh) * 2018-04-17 2018-10-09 上海交通大学 可重构的单指令多数据脉动阵列结构、处理器及电子终端
CN108537334A (zh) * 2018-04-26 2018-09-14 济南浪潮高新科技投资发展有限公司 一种针对cnn卷积层运算的加速阵列设计方法
CN208766715U (zh) * 2018-07-26 2019-04-19 珠海市一微半导体有限公司 3*3卷积算法的加速电路
CN109409511A (zh) * 2018-09-25 2019-03-01 西安交通大学 一种用于动态可重构阵列的卷积运算数据流调度方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蒋林 等: "阵列处理器分布式存储的簇内全访问结构设计", 《西安科技大学学报》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110717583B (zh) * 2019-09-30 2020-08-25 上海寒武纪信息科技有限公司 卷积电路、处理器、芯片、板卡和电子设备
CN110717583A (zh) * 2019-09-30 2020-01-21 上海寒武纪信息科技有限公司 卷积电路、处理器、芯片、板卡和电子设备
CN110738310A (zh) * 2019-10-08 2020-01-31 清华大学 一种稀疏神经网络加速器及其实现方法
CN110738310B (zh) * 2019-10-08 2022-02-01 清华大学 一种稀疏神经网络加速器及其实现方法
CN111126593B (zh) * 2019-11-07 2023-05-05 复旦大学 可重构的自然语言深度卷积神经网络加速器
CN111126593A (zh) * 2019-11-07 2020-05-08 复旦大学 可重构的自然语言深度卷积神经网络加速器
CN110930290A (zh) * 2019-11-13 2020-03-27 东软睿驰汽车技术(沈阳)有限公司 一种数据处理方法及装置
CN110930290B (zh) * 2019-11-13 2023-07-07 东软睿驰汽车技术(沈阳)有限公司 一种数据处理方法及装置
CN113138957A (zh) * 2021-03-29 2021-07-20 北京智芯微电子科技有限公司 用于神经网络推理的芯片及加速神经网络推理的方法
CN113469350A (zh) * 2021-07-07 2021-10-01 武汉魅瞳科技有限公司 一种适于npu的深度卷积神经网络加速方法和系统
CN113962361A (zh) * 2021-10-09 2022-01-21 西安交通大学 一种面向基于Winograd的CNN加速器系统的数据无冲突调度方法
CN113962361B (zh) * 2021-10-09 2024-04-05 西安交通大学 一种面向基于Winograd的CNN加速器系统的数据无冲突调度方法
CN114385089B (zh) * 2022-03-22 2022-08-05 北京清微智能信息技术有限公司 一种基于交叉编址的动态bank存储方法、装置及电子设备
CN114385089A (zh) * 2022-03-22 2022-04-22 北京清微智能信息技术有限公司 一种基于交叉编址的动态bank存储方法、装置及电子设备

Also Published As

Publication number Publication date
CN110222818B (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
CN110222818A (zh) 一种用于卷积神经网络数据存储的多bank行列交织读写方法
US11726950B2 (en) Compute near memory convolution accelerator
Yin et al. A high energy efficient reconfigurable hybrid neural network processor for deep learning applications
Lu et al. Flexflow: A flexible dataflow accelerator architecture for convolutional neural networks
CN109598338B (zh) 一种基于fpga的计算优化的卷积神经网络加速器
CN108171317B (zh) 一种基于soc的数据复用卷积神经网络加速器
CN106779060B (zh) 一种适于硬件设计实现的深度卷积神经网络的计算方法
CN108805266A (zh) 一种可重构cnn高并发卷积加速器
EP3757901A1 (en) Schedule-aware tensor distribution module
CN109409511A (zh) 一种用于动态可重构阵列的卷积运算数据流调度方法
CN106875011A (zh) 二值权重卷积神经网络加速器的硬件架构及其计算流程
CN109447241B (zh) 一种面向物联网领域的动态可重构卷积神经网络加速器架构
CN110334799A (zh) 基于存算一体的神经网络推理与训练加速器及其运行方法
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
CN111488051A (zh) 基于cpu和fpga协同计算的云端深度神经网络优化方法
CN109993293A (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
Chen et al. An efficient accelerator for multiple convolutions from the sparsity perspective
Li et al. Fsa: A fine-grained systolic accelerator for sparse cnns
US11599181B1 (en) Systems and methods for reducing power consumption of convolution operations of artificial neural networks
Liu et al. A cloud server oriented FPGA accelerator for LSTM recurrent neural network
Diamantopoulos et al. A system-level transprecision FPGA accelerator for BLSTM using on-chip memory reshaping
EP3971787A1 (en) Spatial tiling of compute arrays with shared control
CN115238879A (zh) 深度神经网络的架构搜索方法及硬件加速器
CN114819124A (zh) 一种深度神经网络推断处理器的访存性能提升方法
CN106569968A (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