CN114089911B - 基于数据复用的块切分拼接处理方法、装置、设备及介质 - Google Patents
基于数据复用的块切分拼接处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN114089911B CN114089911B CN202111043717.0A CN202111043717A CN114089911B CN 114089911 B CN114089911 B CN 114089911B CN 202111043717 A CN202111043717 A CN 202111043717A CN 114089911 B CN114089911 B CN 114089911B
- Authority
- CN
- China
- Prior art keywords
- block
- data block
- input data
- current layer
- previous layer
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 230000011218 segmentation Effects 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000012545 processing Methods 0.000 claims description 52
- 238000013507 mapping Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013528 artificial neural network Methods 0.000 description 19
- 210000002569 neuron Anatomy 0.000 description 16
- 210000003050 axon Anatomy 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 210000001787 dendrite Anatomy 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000012528 membrane Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 210000000225 synapse Anatomy 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供基于数据复用的块切分拼接处理方法、装置、设备及介质,包括:确定待处理的当前层输入数据块在当前层的位置;若为首位,则从外部存储器中读取待处理的当前层输入数据块所对应的全部的前一层输出数据块的块数据;若非首位,则从外部存储器中读取待处理的当前层输入数据块中未被在先处理的当前层输入数据块所使用的前一层输出数据块的块数据,并从在先处理的当前层输入数据块中读取已被使用的前一层输出数据块的块数据。本发明实现了数据块的复用,降低了读取外部存储器的带宽,也降低了功耗;由于数据复用方法没有使用高速缓冲存储器cache,因此复杂度低,成本较低。
Description
技术领域
本申请涉及神经网络技术领域,特别是涉及基于数据复用的块切分拼接处理方法、装置、设备及介质。
背景技术
深度神经网络(DNN)研究近年来取得了飞速发展并得到初步应用。然而实现这样的算法,通常需要消耗大量的算力。如经典的深度卷积网络(CNN)模型AlexNet,需要进行至少7.2亿次的乘法运算。大的运算量产生大的功耗,一般功耗在10瓦到100瓦左右。
另一方面,脉冲神经网络(SNN)近年来以其低功耗和更接近人脑的特点吸引了学术界和产业界的关注。在脉冲神经网络中,轴突是接收脉冲的单元,神经元是发送脉冲的单元,一个神经元通过树突连接到多个轴突,树突和轴突的连接点称为突触。轴突接收到脉冲后,所有和这一轴突有突触连接的树突会收到脉冲,进而影响到树突下游神经元。神经元将来自多个轴突的脉冲相加并与之前的膜电压累加,如果数值超过阈值,就向下游发送一个脉冲。脉冲神经网络内传播的是1比特的脉冲,脉冲的激活频率比较低,并且只需要加减法运算,没有乘法运算。相比于基于深度学习的神经网路,脉冲神经网络功耗更低。
通常的实现中一个神经元核集成了多个神经元。同一个核中所有的神经元复用计算电路。每个神经元核中有一个输入缓存,输入缓存存储特征图上的一个立方体(二维平面上的一个块乘以输入通道数),神经元核中的每个神经元进行运算后(卷积运算、全连接运算等),输出一个立方体(二维平面上的一个块乘以输出通道数)。输入立方体往往与输出立方体大小不同。
二维平面上的输入块经过卷积运算,输出块的大小一般比输入块小。另外一层一般有左填充padding,上填充padding,使得前一层的输出块和当前层的输入块坐标错位。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供,用于解决现有技术中读取外部存储器的带宽高,功耗高等技术问题。
为实现上述目的及其他相关目的,本申请的第一方面提供一种基于数据复用的块切分拼接处理方法,包括:确定待处理的当前层输入数据块在当前层的位置;若为首位,则从外部存储器中读取所述待处理的当前层输入数据块所对应的全部的前一层输出数据块的块数据;若非首位,则从外部存储器中读取所述待处理的当前层输入数据块中未被在先处理的当前层输入数据块所使用的前一层输出数据块的块数据,并从所述在先处理的当前层输入数据块中读取已被使用的前一层输出数据块的块数据;其中,所述在先处理的当前层输入数据块是指位于所述待处理的当前层输入数据块之前的已被处理的数据块。
于本申请的第一方面的一些实施例中,每个所述当前层输入数据块对应多个前一层输出数据块;所述多个前一层输出数据块构成一数据块集合并,所述数据块集合中的各个数据块形成矩形块。
于本申请的第一方面的一些实施例中,处理位于首位的当前层输入数据块的过程包括:从新块老块映射表中读取位于首位的当前层输入数据块所对应矩形块的起始块地址和终止块地址;读取缓存空闲表,按序为每个前一层输出数据块分配一块空闲缓存,该缓存块的起始块地址设置为非空闲,更新所述缓存空闲表,并在new_blk_addr_map寄存器中写入每个前一层输出数据块与其起始块地址之间的映射关系;向外部存储器发出读请求,以将所述前一层输出数据块的数据写入该块的缓存地址中。
于本申请的第一方面的一些实施例中,将所述前一层输出数据块的数据写入该块的缓存地址后,还执行:检查所述前一层输出数据块是否也在下一个当前层输入数据块所对一个的矩形块中;若是,则保留该数据块在缓存空闲表中的缓存地址;若否,则清除该数据块在缓存空闲表中的缓存地址。
于本申请的第一方面的一些实施例中,处理位于非首位的当前层输入数据块的过程包括:从新块老块映射表中读取位于非首位的当前层输入数据块所对应矩形块的起始块地址和终止块地址;检查所述矩形块中各所述前一层输出数据块是否存在于前一个当前层输入数据块所对应的矩形块中;若是,则从old_blk_addr_map寄存器中读取该前一层输出数据块的缓存地址,并在new_blk_addr_map寄存器中写入该前一层输出数据块与其起始块地址之间的映射关系;若否,则读取缓存空闲表,为该前一层输出数据块分配一块空闲缓存,该缓存块的起始块地址设置为非空闲,更新所述缓存空闲表,并在new_blk_addr_map寄存器中写入每个前一层输出数据块与其起始块地址之间的映射关系;向外部存储器发出读请求,以将所述前一层输出数据块的数据写入该块的缓存地址中。
为实现上述目的及其他相关目的,本申请的第二方面提供一种基于数据复用的块切分拼接处理装置,包括:位置确定模块,用于确定待处理的当前层输入数据块在当前层的位置;数据块处理模块,用于对于首位的当前层输入数据块,从外部存储器中读取所述待处理的当前层输入数据块所对应的全部的前一层输出数据块的块数据;对于非首位的当前层输入数据块,从外部存储器中读取所述待处理的当前层输入数据块中未被在先处理的当前层输入数据块所使用的前一层输出数据块的块数据,并从所述在先处理的当前层输入数据块中读取已被使用的前一层输出数据块的块数据;其中,所述在先处理的当前层输入数据块是指位于所述待处理的当前层输入数据块之前的已被处理的数据块。
为实现上述目的及其他相关目的,本申请的第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述基于数据复用的块切分拼接处理方法。
为实现上述目的及其他相关目的,本申请的第四方面提供一种电子终端,包括:处理器及存储器;所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行所述基于数据复用的块切分拼接处理方法。
如上所述,本申请的基于数据复用的块切分拼接处理方法、装置、设备及介质,具有以下有益效果:(1)本发明实现了数据块的复用,降低了读取外部存储器的带宽,也降低了功耗;(2)由于本发明的数据复用方法没有使用高速缓冲存储器cache,因此复杂度低,成本较低。
附图说明
图1显示为本申请一实施例中基于数据复用的块切分拼接处理方法的流程示意图。
图2显示为本申请一实施例中块切分拼接处理示意图。
图3显示为本申请一实施例中基于数据复用的块切分拼接处理方法的流程示意图。
图4显示为本申请一实施例中基于数据复用的块切分拼接处理装置的结构示意图。
图5显示为本申请一实施例中计算机设备的结构示意图。
具体实施方式
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,在下述描述中,参考附图,附图描述了本申请的若干实施例。应当理解,还可使用其他实施例,并且可以在不背离本申请的精神和范围的情况下进行机械组成、结构、电气以及操作上的改变。下面的详细描述不应该被认为是限制性的,并且本申请的实施例的范围仅由公布的专利的权利要求书所限定。这里使用的术语仅是为了描述特定实施例,而并非旨在限制本申请。空间相关的术语,例如“上”、“下”、“左”、“右”、“下面”、“下方”、“下部”、“上方”、“上部”等,可在文中使用以便于说明图中所示的一个元件或特征与另一元件或特征的关系。
在本申请中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”、“固持”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。应当进一步理解,此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
深度神经网络(DNN)可以理解为有很多隐藏层的神经网络,而神经网络是基于感知机的扩展,深度神经网络(DNN)也被称为多层感知机(MLP)。深度神经网络(DNN)按不同层的位置划分,其内部的神经网络层可以分为三类,输入层、隐藏层和输出层,层与层之间是全连接或者部分连接的,即第i层的任意一个神经元一定与第(i+1)层的一些神经元相连。简单来说,深度神经网络(DNN)可以被表示为一个线性关系和一个激活函数,即线性关系式z=∑wixi+b,以及激活函数σ(z)。
脉冲神经网络(SNN)是第三代人工神经网络,其模拟神经元更加接近实际,并把时间信息的影响也考虑其中。动态神经网络中的神经元不是在每一次迭代传播中都被激活,而是在它的膜电位达到某一个特定值才被激活。当一个神经元被激活,它会产生一个信号传递给其他神经元,提高或降低其膜电位。通常而言,脉冲神经网络(SNN)分为三种拓扑结果,它们分别是前馈型脉冲神经网络、递归型脉冲神经网络和混合型脉冲神经网络。
为解决上述背景技术中的问题,本发明重用前一层的数据块,降低数据读取次数,降低了存储带宽要求,从而有效降低了功耗。为了使本发明的目的、技术方案及优点更加清楚明白,通过下述实施例并结合附图,对本发明实施例中的技术方案的进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定发明。
如图1所示,展示了本发明在一实施例中基于数据复用的块切分拼接处理方法的流程示意图。应理解,本实施例中的基于数据复用的块切分拼接处理方法可应用于控制器,如ARM(Advanced RISC Machines)控制器、FPGA(Field Programmable Gate Array)控制器、SoC(System on Chip)控制器、DSP(Digital Signal Processing)控制器、或者MCU(Micorcontroller Unit)控制器等;也可应用于智能手机、平板电脑、台式电脑、笔记本电脑、智能手环、智能头盔等设备;还可应用于服务器,所述服务器可以根据功能、负载等多种因素布置在一个或多个实体服务器上,也可以由分布的或集中的服务器集群构成。
在本实施例中,所述基于数据复用的块切分拼接处理方法主要包括步骤S11~S13,下文将对各个步骤的实施过程及原理做详细的解释与说明。
步骤S11:确定待处理的当前层输入数据块在当前层的位置。应理解,每个所述当前层输入数据块对应一个由多个前一层输出数据块所构成的数据块集合,且该数据块集合与相邻当前层输入数据块的数据块集合部分重合。
为便于理解,现结合图2所展示的块切分拼接处理示意图来进行说明。图中的块b1,b2,b3,b4,……b15是前一层输出数据块,块A、B、C是当前层输入数据块,为方便描述,下文中用老块指代前一层输出数据块,用新块指代当前层输入数据块。每个所述当前层输入数据块覆盖多个前一层输出数据块,是指每个新块对应一个老块矩形,所述老块矩形是指由多个老块所组成的矩形形状。例如,新块A覆盖了老块b1,b2,b3,b6,b7,b8,新块B覆盖了老块b2,b3,b4,b7,b8,b9,新块C覆盖了老块b3,b4,b5,b8,b9,b10,即新块A对应由老块b1,b2,b3,b6,b7,b8所构成的数据块集合,新块B对应由老块b2,b3,b4,b7,b8,b9所构成的数据块集合,新块C对应由老块b3,b4,b5,b8,b9,b10所构成的数据块集合。应理解,数据块集合在块切分拼接处理示意图中表现为老块矩形。
通常而言,新块的处理过程是同一行从左到右,不同行从上到下。例如,先处理同一行中的新块A,再处理同一行方向上新块A的下一个新块B,以此类推。因此,所述确定待处理的当前层输入数据块的序号,是指确定当前待处理的新块所在的行与列,例如图2中位于左上角的新块A的序号是首位,新块B与新块A位于同一行且在新块A之后,因此新块B的序号是第二位,以此类推可得到每个新块的序号。
步骤S12:若为首位,则从外部存储器中读取所述待处理的当前层输入数据块所对应的全部的前一层输出数据块的块数据。
在图2中,老块b1,b2,b3,b4,……b15所对应的坐标分别是(0,0),(0,1),(0,2),(0,3)……(2,4)。新块A和新块B有重叠部分,这是因为在卷积运算中块边缘数据会参与两个块的运算,因此这部分块边缘数据左右两个块都会用到。产生新块A数据需要读入老块b1,b2,b3,b6,b7,b8,新块老块映射表newblk_oldblk_map_lut中记录了新块A所对应的老块矩形,所述老块矩形的起始块为老块b1(0,0),终止块为老块b8(1,2)。产生新块B数据需要读入老块b2,b3,b4,b7,b8,b9,新块老块映射表newblk_oldblk_map_lut中记录了新块B所对应的老块矩形,所述老块矩形的起始块为老块b2(0,1),终止块为老块b9(1,3)。因此,在产生新块A和B的过程中,老块b2,b3,b7,b8被使用了两次,即为了降低读取外部储存的带宽需求,老块b2,b3,b7,b8在处理新块A后,在处理新块B的过程中被重用。相比于现有技术,采用本实施例的技术方案后,处理新块B需要从外部存储器读取的块数从6块减少为2块。
另外,所述新块老块映射表newblk_oldblk_map_lut是指新块与老块之间关联关系的映射表,如下表所示:新块A对应的老块分别是:b1(0,0),b2(0,1),b3(0,2),b6(1,0),b7(1,1),b8(1,2),因此所述新块老块映射表newblk_oldblk_map_lut中记载其起始块坐标(0,0)及终止块坐标(1,2);新块B对应的老块分别是:b2(0,1),b3(0,2),b4(0,3),b7(1,1),b8(1,2),b9(1,3),因此所述新块老块映射表newblk_oldblk_map_lut中记载其起始块坐标(0,1)及终止块坐标(1,3);新块C对应的老块分别是:b3(0,2),b4(0,3),b5(0,4),b8(1,2),b9(1,3),b10(1,4),因此所述新块老块映射表newblk_oldblk_map_lut中记载其起始块坐标(0,2)及终止块坐标(1,4)。
新块标识 | 新块覆盖的起始老块坐标 | 新块覆盖的终止老块坐标 |
A | (0,0) | (1,2) |
B | (0,1) | (1,3) |
C | (0,2) | (1,4) |
步骤S13:若非首位,则从外部存储器中读取所述待处理的当前层输入数据块中未被在先处理的当前层输入数据块所使用的前一层输出数据块的块数据,并从所述在先处理的当前层输入数据块中读取已被使用的前一层输出数据块的块数据;其中,所述在先处理的当前层输入数据块是指位于所述待处理的当前层输入数据块之前的已被处理的数据块。
在本实施例中,在行的方向上处理新数据块时复用老数据块。通常而言,新数据块的处理过程是同一行从左到右,不同行从上到下。先处理同一行中的新块A,再处理同一行方向上新块A的下一个新块B,以此类推。
在处理新块B的过程中,检查新块B所覆盖的老块矩形中的每一个老块;若存在于新块所覆盖的老块矩形中的一老块,也存在于新块A所覆盖的老块矩形中,则说明该老块的数据存储于芯片缓存内,故可从芯片缓存中提取该老块的数据;若存在于新块所覆盖的老块矩形中的一老块并不存在于新块A所覆盖的老块矩形中,则说明需要从外部存储器来读取该老块的数据,并写入到芯片缓存内,芯片缓存得到该老块数据后,进行数据拼接处理,最终得到新块B的数据。
为进一步帮助理解,图3给出了本发明基于数据复用的块切分拼接处理方法在一实施例中的具体流程;其中,new_block_max表示当前层最大的块计数;oldblk_start表示老块的起始块坐标;oldblk_end表示老块的终止块坐标;new_blk_addr_map寄存器表示当前处理的新块中每一个老块与其缓存地址之间的映射关系;old_blk_addr_map表示前一个新块中每一个老块与其缓存地址之间的映射关系;to_clear标志表示该块缓存数据在处理完成后是否被释放(1表示释放,0表示不释放);i表示新块计数;j表示老块计数;newblk_oldblk_map_lut表示新块老块映射表;
具体而言,newblk_oldblk_map_lut存放每一个新块覆盖的老块矩形;oldblk_start是老块矩形的左上角老块坐标,oldblk_end是老块矩形的右下角老块坐标;i是新块计数;j是每一个新块覆盖的老块矩形中的老块计数。new_blk_addr_map存储了当前处理的新块中每一个老块与其缓存地址间的映射关系,old_blk_addr_map存储了前一个新块中每一个老块与其缓存地址间的映射关系;缓存空闲表标识每一块缓存是否空闲,如果空闲,从外部存储器中读出的数据可以覆盖该块缓存。to_clear标志说明该块缓存数据在数据拼接处理模块完成一个新块的处理后是否要释放,如果为1,说明后续处理不再需要这块数据,使用完毕数据被释放。
基于数据复用的块切分拼接处理方法的具体流程如下:
新块计数i=1,缓存空闲表所有地址都标志空闲。
判断i≤new_block_max?即判断当前处理中的新块i是否超过当前层最大的块计数。
若否,结束(已经完成所有新块的处理)。
若是,从新块老块映射表中读取块i的老块信息[oldblk_start,oldblk_end]。
判断j≤oldblk_end?
若否,old_blk_addr_map=new_blk_addr_map,i++。
若是,按序选取[oldblk_start,oldblk_end]中的j。即,将该矩形中的老块按从左到右从上到下的顺序排列,依次处理每个老块,并假定正在处理的老块为j。
判断老块j在块i-1的覆盖范围内&&i>1?即,判断老块j是否在前一个新块i-1的老块矩形内(要求i>1)。
若否,读取缓存空闲表,得到下一个空闲块的起始地址addr,将缓存空闲表addr对应块置为不空闲,更新new_blk_addr_map,将块j映射到该地址addr。具体来说,若老块j不在前一个新块i-1的老块矩形内,需要读取外部存储器中老块j的数据。首先要从缓存空闲表中找一个空闲缓存块,假定其缓存地址为addr,将该空闲缓存块标志为不空闲,同时将老块j与缓存地址addr建立映射写入new_blk_addr_map。然后将块j数据从外部存储器读出并写入缓存addr中。
若是,从old_blk_addr_map中读出老块j的起始地址addr,将块j与addr的映射关系写入new_blk_addr_map。即是,若老块j在前一个新块i-1的老块矩形内,说明该老块的数据已经在芯片缓存中,不需要从外部存储器读入,只要读取old_blk_addr_map就可以得到块j在芯片缓存中的地址addr,同时将老块j与addr的映射写入new_blk_addr_map。
判断i+1≤new_block_max?
若是,继续判断老块j在块i+1的覆盖范围内?
若是,设置块j的缓存to_clear=0。也即说明该老块在处理新块i+1时要用到,该老块j在新块i处理完后数据还要保留,因此置to_clear=0。
若否,设置块j的缓存to_clear=1。也即说明该老块不在下一个新块i+1的老块矩形内,该老块j在新块i处理完后数据就丢弃,占据的缓存释放,因此置to_clear=1。
将j的起始地址addr和to_clear标志发给数据拼接处理模块,数据拼接处理模块时刻检查是否有老块信息送达,有就进行处理。如果该老块j在处理本新块i的过程中已经使用完毕,同时该老块的to_clear标志为1,缓存空闲表中该块缓存将被设置为空闲,从而其他数据可以覆盖这块缓存。
结合图2进一步举例说明:
i=1时处理新块A,读出新块老块映射表newblk_oldblk_map_lut中A对应的老块矩形,oldblk_start=(0,0),oldblk_end=(1,2),老块矩形包含的老块有b1(0,0),b2(0,1),b3(0,2),b6(1,0),b7(1,1),b8(1,2)。取老块j=b1(0,0),由于i=1,所有的老块数据都不在内部缓存中,因此读取缓存空闲表,为老块j分配一块空闲缓存,设该缓存块起始地址为b1_addr,将该缓存块b1_addr设置为非空闲,更新缓存空闲表。与此同时,在new_blk_addr_map寄存器中写入b1(0,0)与b1_addr的映射关系。然后向DDR发出读请求,b1块的数据写入到b1_addr缓存地址中。然后检查b1是否在i=2新块B的老块矩形内,因为b1(0,0)不在左上角为(0,1)右下角为(1,3)组成的矩形内,b1块对应的to_clear设为1,b1块的数据在新块A数据产生后,将不再需要,占据的缓存b1_addr会被清除(缓存空闲表中b1_addr置为空闲)。
接着按序类似处理j=b2(0,1),不同的是b2(0,1)在B块的老块矩形内,b2块对应的to_clear设为0,b2块的数据在新块A数据产生后,留在缓存中,被继续使用。按上述流程处理b3,b6,b7,b8。A块处理结束,old_blk_addr_map更新为new_blk_addr_map,i增加为2,进入处理新块B的流程。
读出新块老块映射表newblk_oldblk_map_lut中新块B对应的老块矩形,oldblk_start=(0,1),oldblk_end=(1,3)。老块矩形包含的老块有b2(0,1),b3(0,2),b4(0,3),b7(1,1),b8(1,2),b9(1,3)。取老块j=b2(0,1),b2在i=1新块(A块)的老块矩形内(oldblk_start=(0,0),oldblk_end=(1,2)),说明b2块数据在内部缓存中,用b2坐标(0,1)从old_blk_addr_map读出其缓存地址b2_addr,同时new_blk_addr_map寄存器中写入b2与b2_addr的映射关系。检查老块b2是否在新块i=3(图中新块C)的老块矩形内,老块b2列坐标1小于C的左上角块的列坐标2,因此不在C的老块矩形内,to_clear置为1,b2块的起始地址b2_addr和to_clear标志传给数据拼接处理模块,新块B处理完毕后,b2块占据的缓存被释放。
接着处理j=b3(0,2),b3在i=1块(A块)的老块矩形内,从old_blk_addr_map读出其缓存地址b3_addr,并将b3与b3_addr的映射关系写入new_blk_addr_map中。检查b3在i=3(图中新块C)的老块矩形内,to_clear置为0,块B处理完毕后,b3块占据的缓存保留。类似的处理b4,b7,b8,b9等老块。B块处理结束,old_blk_addr_map更新为new_blk_addr_map。i增加为3,进入处理新块C的流程。
如图4所示,展示了本发明在一实施例中基于数据复用的块切分拼接处理装置的结构示意图。本实施例的块切分拼接处理装置400包括位置确定模块401和数据块处理模块402。
位置确定模块401用于确定待处理的当前层输入数据块在当前层的位置;数据块处理模块402用于对于首位的当前层输入数据块,从外部存储器中读取所述待处理的当前层输入数据块所对应的全部的前一层输出数据块的块数据;对于非首位的当前层输入数据块,从外部存储器中读取所述待处理的当前层输入数据块中未被在先处理的当前层输入数据块所使用的前一层输出数据块的块数据,并从所述在先处理的当前层输入数据块中读取已被使用的前一层输出数据块的块数据;其中,所述在先处理的当前层输入数据块是指位于所述待处理的当前层输入数据块之前的已被处理的数据块。
应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,数据块处理模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上数据块处理模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital signal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
如图5所示,展示了本发明在一实施例中计算机设备的结构示意图。本实例提供的计算机设备,包括:处理器51、存储器52、通信器53;存储器52通过系统总线与处理器51和通信器53连接并完成相互间的通信,存储器52用于存储计算机程序,通信器53用于和其他设备进行通信,处理器51用于运行计算机程序,使电子终端执行如上基于数据复用的块切分拼接处理方法的各个步骤。
上述提到的系统总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述基于数据复用的块切分拼接处理方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
于本申请提供的实施例中,所述计算机可读写存储介质可以包括只读存储器、随机存取存储器、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁存储设备、闪存、U盘、移动硬盘、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。另外,任何连接都可以适当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或者诸如红外线、无线电和微波之类的无线技术,从网站、服务器或其它远程源发送的,则所述同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线电和微波之类的无线技术包括在所述介质的定义中。然而,应当理解的是,计算机可读写存储介质和数据存储介质不包括连接、载波、信号或者其它暂时性介质,而是旨在针对于非暂时性、有形的存储介质。如申请中所使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。
综上所述,本申请提供基于数据复用的块切分拼接处理方法、装置、设备及介质,本发明实现了数据块的复用,降低了读取外部存储器的带宽,也降低了功耗;由于本发明的数据复用方法没有使用高速缓冲存储器cache,因此复杂度低,成本较低。所以,本申请有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (6)
1.一种基于数据复用的块切分拼接处理方法,其特征在于,包括:
确定待处理的当前层输入数据块在当前层的位置;
若为首位,则从外部存储器中读取所述待处理的当前层输入数据块所对应的全部的前一层输出数据块的块数据;其中,处理位于首位的当前层输入数据块的过程包括:从新块老块映射表中读取位于首位的当前层输入数据块所对应矩形块的起始块地址和终止块地址;读取缓存空闲表,按序为每个前一层输出数据块分配一块空闲缓存,缓存块的起始块地址设置为非空闲,更新所述缓存空闲表,并在new_blk_addr_map寄存器中写入每个前一层输出数据块与其起始块地址之间的映射关系;向外部存储器发出读请求,以将所述前一层输出数据块的数据写入该块的缓存地址中;检查所述前一层输出数据块是否也在下一个当前层输入数据块所对一个的矩形块中;若是,则保留该数据块在缓存空闲表中的缓存地址;若否,则清除该数据块在缓存空闲表中的缓存地址;
若非首位,则从外部存储器中读取所述待处理的当前层输入数据块中未被在先处理的当前层输入数据块所使用的前一层输出数据块的块数据,并从所述在先处理的当前层输入数据块中读取已被使用的前一层输出数据块的块数据;其中,所述在先处理的当前层输入数据块是指位于所述待处理的当前层输入数据块之前的已被处理的数据块。
2.根据权利要求1所述基于数据复用的块切分拼接处理方法,其特征在于,每个所述当前层输入数据块对应多个前一层输出数据块;所述多个前一层输出数据块构成一数据块集合并,所述数据块集合中的各个数据块形成矩形块。
3.根据权利要求1所述基于数据复用的块切分拼接处理方法,其特征在于,处理位于非首位的当前层输入数据块的过程包括:
从新块老块映射表中读取位于非首位的当前层输入数据块所对应矩形块的起始块地址和终止块地址;
检查所述矩形块中各所述前一层输出数据块是否存在于前一个当前层输入数据块所对应的矩形块中;
若是,则从old_blk_addr_map寄存器中读取该前一层输出数据块的缓存地址,并在new_blk_addr_map寄存器中写入该前一层输出数据块与其起始块地址之间的映射关系;
若否,则读取缓存空闲表,为该前一层输出数据块分配一块空闲缓存,该缓存块的起始块地址设置为非空闲,更新所述缓存空闲表,并在new_blk_addr_map寄存器中写入每个前一层输出数据块与其起始块地址之间的映射关系;向外部存储器发出读请求,以将所述前一层输出数据块的数据写入该块的缓存地址中。
4.一种基于数据复用的块切分拼接处理装置,其特征在于,包括:
位置确定模块,用于确定待处理的当前层输入数据块在当前层的位置;
数据块处理模块,用于对于首位的当前层输入数据块,从外部存储器中读取所述待处理的当前层输入数据块所对应的全部的前一层输出数据块的块数据;其中,处理位于首位的当前层输入数据块的过程包括:从新块老块映射表中读取位于首位的当前层输入数据块所对应矩形块的起始块地址和终止块地址;读取缓存空闲表,按序为每个前一层输出数据块分配一块空闲缓存,缓存块的起始块地址设置为非空闲,更新所述缓存空闲表,并在new_blk_addr_map寄存器中写入每个前一层输出数据块与其起始块地址之间的映射关系;向外部存储器发出读请求,以将所述前一层输出数据块的数据写入该块的缓存地址中;检查所述前一层输出数据块是否也在下一个当前层输入数据块所对一个的矩形块中;若是,则保留该数据块在缓存空闲表中的缓存地址;若否,则清除该数据块在缓存空闲表中的缓存地址;对于非首位的当前层输入数据块,从外部存储器中读取所述待处理的当前层输入数据块中未被在先处理的当前层输入数据块所使用的前一层输出数据块的块数据,并从所述在先处理的当前层输入数据块中读取已被使用的前一层输出数据块的块数据;其中,所述在先处理的当前层输入数据块是指位于所述待处理的当前层输入数据块之前的已被处理的数据块。
5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3中任一项所述基于数据复用的块切分拼接处理方法。
6.一种计算机设备,其特征在于,包括:处理器及存储器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器存储的计算机程序,以使所述设备执行如权利要求1至3中任一项所述基于数据复用的块切分拼接处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111043717.0A CN114089911B (zh) | 2021-09-07 | 2021-09-07 | 基于数据复用的块切分拼接处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111043717.0A CN114089911B (zh) | 2021-09-07 | 2021-09-07 | 基于数据复用的块切分拼接处理方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114089911A CN114089911A (zh) | 2022-02-25 |
CN114089911B true CN114089911B (zh) | 2024-01-05 |
Family
ID=80296358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111043717.0A Active CN114089911B (zh) | 2021-09-07 | 2021-09-07 | 基于数据复用的块切分拼接处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114089911B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0517473A2 (en) * | 1991-06-04 | 1992-12-09 | Quantum Corporation | Miniature disk drive having embedded sector servo with split data fields and automatic on-the-fly data block sequencing |
CN107967124A (zh) * | 2017-12-14 | 2018-04-27 | 南京云创大数据科技股份有限公司 | 一种分布式持久性内存存储系统及方法 |
CN108241890A (zh) * | 2018-01-29 | 2018-07-03 | 清华大学 | 一种可重构神经网络加速方法及架构 |
WO2020062284A1 (zh) * | 2018-09-30 | 2020-04-02 | 深圳市大疆创新科技有限公司 | 基于卷积神经网络的图像处理方法和设备,以及无人机 |
CN111368981A (zh) * | 2020-03-06 | 2020-07-03 | 上海新氦类脑智能科技有限公司 | 减小突触连接的存储面积的方法、装置、设备和存储介质 |
US10713821B1 (en) * | 2019-06-27 | 2020-07-14 | Amazon Technologies, Inc. | Context aware text-to-image synthesis |
US10824357B2 (en) * | 2016-11-07 | 2020-11-03 | Arm Limited | Updating data stored in a memory |
CN112668708A (zh) * | 2020-12-28 | 2021-04-16 | 中国电子科技集团公司第五十二研究所 | 一种提高数据利用率的卷积运算装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180034853A (ko) * | 2016-09-28 | 2018-04-05 | 에스케이하이닉스 주식회사 | 합성곱 신경망의 연산 장치 및 방법 |
US11429848B2 (en) * | 2017-10-17 | 2022-08-30 | Xilinx, Inc. | Host-directed multi-layer neural network processing via per-layer work requests |
KR102561261B1 (ko) * | 2017-11-14 | 2023-07-28 | 삼성전자주식회사 | 커널을 이용한 컨볼루션 연산 처리 방법 및 장치 |
US11436483B2 (en) * | 2018-01-17 | 2022-09-06 | Mediatek Inc. | Neural network engine with tile-based execution |
US20190251436A1 (en) * | 2018-02-14 | 2019-08-15 | Samsung Electronics Co., Ltd. | High-speed processing method of neural network and apparatus using the high-speed processing method |
US20210142154A1 (en) * | 2019-11-11 | 2021-05-13 | NextVPU (Shanghai) Co., Ltd. | Memory pre-allocation for forward calculation in a neural network |
CN111126589B (zh) * | 2019-12-31 | 2022-05-20 | 昆仑芯(北京)科技有限公司 | 神经网络数据处理装置、方法和电子设备 |
-
2021
- 2021-09-07 CN CN202111043717.0A patent/CN114089911B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0517473A2 (en) * | 1991-06-04 | 1992-12-09 | Quantum Corporation | Miniature disk drive having embedded sector servo with split data fields and automatic on-the-fly data block sequencing |
US10824357B2 (en) * | 2016-11-07 | 2020-11-03 | Arm Limited | Updating data stored in a memory |
CN107967124A (zh) * | 2017-12-14 | 2018-04-27 | 南京云创大数据科技股份有限公司 | 一种分布式持久性内存存储系统及方法 |
CN108241890A (zh) * | 2018-01-29 | 2018-07-03 | 清华大学 | 一种可重构神经网络加速方法及架构 |
WO2020062284A1 (zh) * | 2018-09-30 | 2020-04-02 | 深圳市大疆创新科技有限公司 | 基于卷积神经网络的图像处理方法和设备,以及无人机 |
US10713821B1 (en) * | 2019-06-27 | 2020-07-14 | Amazon Technologies, Inc. | Context aware text-to-image synthesis |
CN111368981A (zh) * | 2020-03-06 | 2020-07-03 | 上海新氦类脑智能科技有限公司 | 减小突触连接的存储面积的方法、装置、设备和存储介质 |
CN112668708A (zh) * | 2020-12-28 | 2021-04-16 | 中国电子科技集团公司第五十二研究所 | 一种提高数据利用率的卷积运算装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114089911A (zh) | 2022-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110046622B (zh) | 一种有目标的攻击样本生成方法、装置、设备及存储介质 | |
CN112163601A (zh) | 图像分类方法、系统、计算机设备及存储介质 | |
CN111353591A (zh) | 一种计算装置及相关产品 | |
CN111210004B (zh) | 卷积计算方法、卷积计算装置及终端设备 | |
CN110378470A (zh) | 神经网络模型的优化方法、装置以及计算机存储介质 | |
Abdelsalam et al. | An efficient FPGA-based overlay inference architecture for fully connected DNNs | |
CN113065643A (zh) | 一种用于执行多任务卷积神经网络预测的装置和方法 | |
CN110187760A (zh) | 智能交互方法和装置 | |
CN109844774B (zh) | 一种并行反卷积计算方法、单引擎计算方法及相关产品 | |
CN112966814B (zh) | 融合脉冲神经网络信息处理方法及融合脉冲神经网络 | |
CN114089911B (zh) | 基于数据复用的块切分拼接处理方法、装置、设备及介质 | |
CN116842307B (zh) | 数据处理方法、装置、设备、芯片及存储介质 | |
CN112070227B (zh) | 一种神经网络训练方法和装置以及设备 | |
CN113869495A (zh) | 神经网络卷积权重layout优化的方法、装置、设备及可读介质 | |
CN114781630A (zh) | 权重数据存储方法及装置、芯片、电子设备、可读介质 | |
CN112183725B (zh) | 提供神经网络的方法、计算装置和计算机可读存储介质 | |
KR20210151727A (ko) | 신경망 가속기의 데이터 처리 방법, 장치, 기기 및 저장 매체 | |
CN115145842A (zh) | 数据缓存处理器及方法 | |
CN108171326A (zh) | 神经网络的数据处理方法、装置、芯片、设备和存储介质 | |
CN111382848A (zh) | 一种计算装置及相关产品 | |
CN117634564B (zh) | 一种基于可编程神经拟态核的脉冲延时测量方法及系统 | |
CN113302657B (zh) | 一种神经网络压缩方法和装置 | |
WO2022206193A1 (zh) | 脉冲神经网络电路和基于脉冲神经网络的计算方法 | |
US20220011980A1 (en) | Storage device and storage control method | |
US20220044370A1 (en) | Image processing methods |
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 |