CN114492776A - 一种数据处理方法及装置、存储介质 - Google Patents
一种数据处理方法及装置、存储介质 Download PDFInfo
- Publication number
- CN114492776A CN114492776A CN202210044147.5A CN202210044147A CN114492776A CN 114492776 A CN114492776 A CN 114492776A CN 202210044147 A CN202210044147 A CN 202210044147A CN 114492776 A CN114492776 A CN 114492776A
- Authority
- CN
- China
- Prior art keywords
- storage
- data
- output data
- cache unit
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 94
- 230000005055 memory storage Effects 0.000 claims abstract description 59
- 238000013528 artificial neural network Methods 0.000 claims abstract description 45
- 238000000034 method Methods 0.000 claims abstract description 24
- 238000013507 mapping Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 20
- 230000001360 synchronised effect Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
- G06F2015/765—Cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供了一种数据处理方法及装置、存储介质,包括:神经网络处理器、缓冲存储器和内存存储器;其中,缓冲存储器中包括缓存单元,每个缓存单元包括一个缓存数据块和一个缓存计数器;缓存数据块,用于缓存内存存储器中的存储数据和/或神经网络处理器生成的输出数据;缓存计数器,用于缓存存储数据和/或输出数据对应的读取次数,读取次数与根据算法网络的网络结构确定出的读取存储数据和/或输出数据的算法层数量相同。
Description
技术领域
本申请涉及人工智能领域,尤其涉及一种数据处理方法及装置、存储介质。
背景技术
人工智能处理器的架构设计中,多采用计算和存储分离的结构,其中,人工智能处理器中采用的是分层存储的结构,即在计算引擎和内存存储器之间设置缓冲存储器,缓冲存储器中存储一些数据供计算引擎进行临时数据交互。当计算引擎读取的数据没有在缓冲存储器中命中时,需要把新数据从内存存储器中调入缓冲存储器中,进而使得计算引擎从缓冲存储器中读取。
目前,针对CPU设计了内存存储器和缓冲存储器的数据映射方式,考虑到了CPU执行过程中灵活性高,数据访问地址不确定的特点,而在嵌入式神经网络处理器(Neural-network Processing Unit,NPU)架构中,若需添加数据缓存机制,则复用CPU的缓冲存储器的设计方案,导致针对NPU的数据缓存效率低的问题。
发明内容
本申请实施例提供一种数据处理方法及装置、存储介质,能够提高针对NPU的数据缓存效率的过程。
本申请的技术方案是这样实现的:
第一方面,本申请实施例提出一种数据处理装置,所述装置包括:神经网络处理器、缓冲存储器和内存存储器;其中,所述缓冲存储器中包括缓存单元,每个缓存单元包括一个缓存数据块和一个缓存计数器;
所述缓存数据块,用于缓存所述内存存储器中的存储数据和/或神经网络处理器生成的输出数据;
所述缓存计数器,用于缓存所述存储数据和/或所述输出数据对应的读取次数,所述读取次数与根据算法网络的网络结构确定出的读取存储数据和/或输出数据的算法层数量相同。
第二方面,本申请实施例提出一种数据处理方法,应用于上述数据处理装置,所述方法包括:
获取待执行的算法网络的网络结构,并根据所述网络结构、确定读取内存存储器中的存储数据和/或所述算法网络中的每一个算法层的输出数据的算法层数量;
将所述算法层数量确定为所述存储数据的读取次数和/或所述输出数据的读取次数;并将所述存储数据和所述存储数据的读取次数、和/或所述输出数据和所述输出数据的读取次数添加至缓冲存储器中。
第三方面,本申请实施例提出一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述的数据处理方法。
本申请实施例提供了一种数据处理方法及装置、存储介质,该装置包括:神经网络处理器、缓冲存储器和内存存储器;其中,缓冲存储器中包括缓存单元,每个缓存单元包括一个缓存数据块和一个缓存计数器;缓存数据块,用于缓存内存存储器中的存储数据和/或神经网络处理器生成的输出数据;缓存计数器,用于缓存存储数据和/或输出数据对应的读取次数,读取次数与根据算法网络的网络结构确定出的读取所述存储数据和/或所述输出数据的算法层数量相同。采用上述装置实现方案,针对神经网络处理器的数据流固定、可预先判断的特点,预先根据算法网络的网络结构得知读取缓冲存储器中数据的算法层数量,在缓冲存储器中设置缓存计数器来存储该算法层数量,能够保证即将处理的数据缓存在缓冲存储器中,大大减少了数据从内存存储器写入缓冲存储器的次数,进而提高了针对NPU的数据缓存效率。
附图说明
图1为本申请实施例提供的一种数据处理装置的结构示意图;
图2为本申请实施例提供的一种示例性的数据处理装置采用计算和存储分离的结构示意图;
图3为本申请实施例提供的一种示例性的NPU执行的算法网络的网络结构示意图;
图4为本申请实施例提供的一种示例性的内存存储器和缓冲存储器之间的存储映射方式的示意图;
图5为本申请实施例提供的一种数据处理方法的流程图。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。还需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
本申请实施例提供一种数据处理装置1,如图1所示,该装置1包括:神经网络处理器10、缓冲存储器11和内存存储器12;其中,所述缓冲存储器11中包括缓存单元110,每个缓存单元110包括一个缓存数据块1100和一个缓存计数器1101;
所述缓存数据块1100,用于缓存所述内存存储器12中的存储数据和/或神经网络处理器10生成的输出数据;
所述缓存计数器1101,用于缓存所述存储数据和/或所述输出数据对应的读取次数,所述读取次数与根据算法网络的网络结构确定出的读取所述存储数据和/或所述输出数据的算法层数量相同。
本申请实施例提出的数据处理装置为一种针对NPU架构设计的数据缓存装置。
在本申请实施例中,神经网络处理器为NPU,缓冲存储器为cache存储器,内存存储器可以为同步动态随机存取内存(SDRAM,synchronous dynamic random-access memory)、双倍速率同步动态随机存储器(DDR,Double Data Rate SDRAM)等存储器。
在本申请实施例中,数据处理装置采用计算和存储分离的结构,如图2所示,数据处理装置包括NPU计算引擎、cache存储器和内存存储器,其中,NPU计算引擎中包含大量的计算单元,而cache存储器为靠近NPU计算引擎的缓冲存储器,在缓冲存储器中存储一定量的数据供NPU计算引擎进行临时数据交互,读写速度快,但是存储容量小,内存存储器为远离NPU计算引擎的存储器,其中存储了全部数据,存储容量大,但是读写速度慢,且每次读取路径较长,故读写效率低。
需要说明的是,由于NPU具有固定的数据流,且可预先判断的特点,因此,在执行算法网络之前,可通过对NPU执行的算法网络的网络结构进行解析,确定出算法网络中的算法层之间的数据依赖关系,如图3所示,为NPU执行的算法网络的网络结构示意图,每一个圆圈为一个算法层,对于一个算法层而言,其工作流程为读入源数据,进行算子处理,其中,算子可以为卷积、池化、激活、全连接等,在算子处理完成之后,进入下一个算法层进行处理,如0号算法层的输出数据会作为输入数据被1号算法层和2号算法层读取,1号算法层的输出数据会作为输入数据被3号算法层和4号算法层读取,2号算法层的输出数据会作为输入数据被5号算法层、6号算法层和7号算法层读取,因此,通过对算法网络的网络结构的分析,可以得知算法网络中每个算法层的输出数据后续被读出的次数,如0号算法层的输出数据被读出的次数为2,1号算法层的输出数据被读出的次数为2,2号算法层的输出数据被读出的次数为3。
基于上述构思,本申请实施例中,在NPU和内存存储器之间的cache存储器中,为每一个缓存数据块设置一个缓存计数器,一个缓存数据块和对应的一个缓存计数器共同组成了一个缓存单元,其中,缓存计数器中填写的是对应的缓存数据块中的数据被读出的次数。
需要说明的是,cache存储器中存储的数据可以是来自内存存储器的存储数据,也可以来自神经网络处理器对存储数据进行算子处理后、生成的输出数据,具体的可以根据实际情况进行选择,本申请实施例不做具体的限定。
可选的,所述缓冲存储器11,还用于在每检测到一次对所述存储数据和/或所述输出数据的读取操作时,将所述缓存数据块对应的缓存计数器中的读取次数减一;直至所述缓存计数器中的读取次数置零,则删除所述存储数据和/或所述输出数据。
在本申请实施例中,NPU中的算子层会从缓冲存储器中读取存储数据和/或输出数据,每从缓冲存储器中读取一次存储数据和/或输出数据时,缓冲存储器确定缓存该存储数据和/或输出数据的缓存单元,并将缓存单元的计数器中的读取次数减一;直至缓存计数器中的读取次数置零,表征该缓存单元中的数据后续不会再被读出,此时将存储数据和/或输出数据从缓冲存储器中删除,并清空对应的缓冲存储器的缓存单元,以供后续将数据写入该缓存单元中。
需要说明的是,读取次数也反应了对应的缓存数据块的重要程度,读取次数越大,表明缓存数据块中存储的数据会被后续的算法层读取的次数越多,也就说明缓存数据块中存储的数据越重要,相反,读取次数越小,表明缓存数据块中存储的数据会被后续的算法层读取的次数越少,也就说明缓存数据块中存储的数据越不重要。
可选的,所述神经网络处理器10,用于根据读取所述输出数据的算法层数量,确定所述输出数据的读取次数;根据所述输出数据在所述内存存储器中的目的地址、以及所述内存存储器和所述缓冲存储器之间的存储映射方式,从所述缓冲存储器和/或所述内存存储器中确定第一存储单元;将所述输出数据的读取次数和所述输出数据、和/或所述输出数据缓存至所述第一存储单元中。
在本申请实施例中,神经网络处理器可以根据算法网络的网络结构,确定出读取输出数据的算法层数量,之后根据算法层数量确定输出数据的读取次数。
在本申请实施例中,内存存储器和缓冲存储器之间的存储映射方式可以根据硬件参数和cache效率来确定,如图4所示,内存存储器中的每个存储数据块中的存储数据可以映射到cache存储器中的四个缓存数据块中,如,缓存数据块包括0-15这16个缓存数据块,每个缓存数据块之前都对应有一个缓存计数器cnt,共同组成了16个缓存单元,内存存储器中的0号、8号、…、2040号存储数据块映射到cache存储器中的0-3号缓存数据块,依次类推,内存存储器中的7号、15号、2047号存储数据块映射到cache存储器中的12-15号缓存数据块,现了内存存储器和缓冲存储器之间的存储映射方式。
在本申请实施例中,NPU接收到一条指令,该指令中包含源数据地址、目标数据地址和卷积运算命令,其中的目标数据地址即为本申请中输出数据在内存存储器中的目的地址,NPU可以根据目的地址以及存储映射关系,从缓冲存储器和/或内存存储器中确定第一存储单元。
具体的,所述神经网络处理器10,还用于根据所述输出数据在所述内存存储器中的目的地址和所述存储映射方式,从所述缓冲存储器中确定所述输出数据对应的第一缓存单元组;若所述第一缓存单元组中包括处于第一空闲缓存单元,则将所述第一空闲缓存单元确定为所述第一缓存单元中;
所述神经网络处理器10,还用于若所述第一缓存单元组中不包括所述第一空闲缓存单元,且未从所述第一缓存单元组中查找到读取次数小于所述输出数据的读取次数的缓存单元,则根据所述目的地址,从所述内存存储器中确定所述第一存储单元;
所述神经网络处理器10,还用于若所述第一缓存单元组中不包括所述第一空闲的第一缓存单元,且从所述第一缓存单元组中查找到读取次数小于所述输出数据的读取次数的缓存单元,则将读取次数小于所述输出数据的读取次数的缓存单元确定为所述第一缓存单元;
所述缓冲存储器11,还用于删除读取次数小于所述输出数据的读取次数的缓存单元中的当前存储的输出数据和当前存储的输出数据对应的剩余读取次数。
在本申请实施例中,神经网络处理器将输出数据写回cache存储器或内存存储器,具体的,神经网络处理器先根据输出数据在内存存储器中的目的地址和存储映射方式,从缓冲存储器中确定第一缓存单元组,并判断第一缓存单元组中是否存在第一空闲缓存单元;若第一缓存单元组中存在第一空闲缓存单元,则将第一空闲缓存单元确定为第一缓存单元,并将输出数据和输出数据的读取次数直接缓存在缓冲存储器的第一空闲缓存单元中。
在本申请实施例中,若第一缓存单元组中不存在第一空闲缓存单元,则将输出数据的读取次数与第一缓存单元组中存储的读取次数依次进行比较,若第一缓存单元组中存在读取次数小于输出数据的读取次数的缓存单元,表征输出数据的重要性高于读取次数小于输出数据的读取次数的缓存单元中缓存的数据;此时将读取次数小于输出数据的读取次数的缓存单元确定为第一缓存单元,并删除输出数据的读取次数的缓存单元中的当前存储的输出数据和当前存储的输出数据对应的剩余读取次数,之后再将输出数据和输出数据的读取次数缓存在缓冲存储器中的读取次数小于输出数据的读取次数的缓存单元中。
在本申请实施例中,若第一缓存单元组中不存在读取次数小于输出数据的读取次数的缓存单元,表征第一缓存单元组中缓存的数据中不存在重要性低于输出数据的数据,此时,直接根据目的地址,从内存存储器中确定第一缓存单元,并将输出数据、和/或输出数据和输出数据的读取次数存储至内存存储器中的第一缓存单元中。
可选的,所述神经网络处理器10,还用于在将所述输出数据的读取次数和所述输出数据缓存至所述缓冲存储器时,将所述输出数据、和/或所述输出数据和所述输出数据的读取次数更新至所述内存存储器;
或,所述神经网络处理器10,还用于在将所述输出数据的读取次数和所述输出数据缓存至所述缓冲存储器时,为所述输出数据设置待同步标志,在所述缓冲存储器将所述输出数据和所述输出数据的读取次数删除时,根据所述待同步标志,将所述输出数据、和/或所述输出数据和所述输出数据的读取次数更新至所述内存存储器中。
需要说明的是,cache存储器中的数据相当于内存存储器中的数据的备份,所以,在神经网络存储器将输出数据和输出数据的读取次数缓存至缓冲存储器时,也需要将输出数据、和/或输出数据和输出数据的读取次数同步至内存存储器中,以保证cache存储器和内存存储器中的数据一致性。对于同步过程,有两种方式,一种是在将输出数据的读取次数和输出数据缓存至缓冲存储器时,将输出数据、和/或输出数据和输出数据的读取次数更新至内存存储器,另一种是为输出数据设置待同步标志,在缓冲存储器将输出数据和输出数据的读取次数删除时,根据待同步标志,将输出数据、和/或输出数据和输出数据的读取次数更新至内存存储器中。
需要说明的是,缓冲存储器删除输出数据和输出数据的读取次数的场景可以是输出数据的读取次数减少至零;也可以是NPU向缓冲存储器中缓存新的输出数据时,判断出输出数据对应的缓存单元组中无处于空闲状态的缓存单元、且输出数据的读取次数小于新的输出数据的读取次数;还可以是内存存储器向缓冲存储器中写入新的存储数据时,判断出输出数据对应的缓存单元组中无处于空闲状态的缓存单元、且输出数据的读取次数为对应的缓存单元组中读取次数最小的。
可选的,所述内存存储器12,用于根据所述存储数据的存储地址和所述存储映射方式,从所述缓冲存储器中确定所述存储数据对应的第二缓存单元组,若所述第二缓存单元组中存在第二空闲存储单元,则将所述存储数据缓存至所述第二空闲存储单元中,若所述第二缓存单元组中不存在第二空闲存储单元,则从所述第二缓存单元组中查找读取次数最小的第二缓存单元,并将所述存储数据缓存至所述第二缓存单元中;
所述神经网络处理器10,还用于确定所述存储数据的读取次数;若所述第二缓存单元组中存在第二空闲存储单元,则将所述存储数据的读取次数缓存至所述第二空闲存储单元中,若所述第二缓存单元组中不存在第二空闲存储单元,则将所述存储数据的读取次数缓存至所述第二缓存单元中。
在本申请实施例中,在内存存储器将存储数据缓存至cache存储器时,神经网络处理器还确定存储数据的读取次数,内存存储器先根据存储数据的存储地址和存储映射关系,从缓冲存储器中确定存储数据对应的第二缓存单元组,并判断第二缓存单元组中是否存在第二空闲存储单元;若第二缓存单元组中存在第二空闲存储单元,则将存储数据和存储数据的读取次数缓存至第二空闲存储单元中;若第二缓存单元组中不存在第二空闲存储单元,则查找第二缓存单元组中查找读取次数最小的第二缓存单元,之后将存储数据和存储数据的读取次数缓存至第二缓存单元中。
可选的,若所述内存存储器12中包括:存储数据块和所述存储数据块对应的存储计数器;则所述神经网络处理器10,还用于从所述存储计数器中获取所述存储数据的读取次数,所述存储计数器中的读取次数根据读取所述存储数据块中数据的算法层数量确定、和/或根据所述神经网络处理器传输的读取次数确定;
若所述内存存储器中12仅包括:所述存储数据块;则所述神经网络处理器10,还用于从所述缓冲存储器中确定所述第二缓存单元中当前存储的读取次数,根据所述第二缓存单元中当前存储的读取次数,确定所述存储数据的读取次数,和/或根据读取所述存储数据的算法层数量确定所述存储数据的读取次数。
在一种可选的实施例中,可以为内存存储器中的每个存储数据块对应设置存储计数器,将存储数据的读取次数存储至对应的存储计数器中;神经网络处理器可直接从存储计数器中获取存储数据的读取次数。
在另一种可选的实施例中,也可以只在内存存储器中设置存储数据块,此时,内存存储器中不对存储数据的读取次数进行存储;神经网络处理器可以根据读取存储数据的算法层数量确定存储数据的读取次数、也可以根据第二缓存单元中当前存储的读取次数确定存储数据的读取次数,其中,存储数据的读取次数大于第二缓存单元中当前存储的读取次数,具体的存储数据的读取次数与第二缓存当前中当前存储的读取次数之间的差值可基于前期对算法网络的评估得到。
可以理解的是,针对神经网络处理器的数据流固定、可预先判断的特点,预先根据算法网络的网络结构得知读取缓冲存储器中数据的算法层数量,在缓冲存储器中设置缓存计数器来存储该算法层数量,能够保证即将处理的数据缓存在缓冲存储器中,大大减少了数据从内存存储器写入缓冲存储器的次数,进而提高了针对NPU的数据缓存效率。
基于上述实施例,本申请实施例还提出一种数据处理方法,如图5所示,应用于上述数据处理装置,该方法包括:
S101、获取待执行的算法网络的网络结构,并根据网络结构、确定读取内存存储器中的存储数据和/或算法网络中的每一个算法层的输出数据的算法层数量。
在本申请实施例中,由于NPU具有固定的数据流,且可预先判断的特点,因此,在执行算法网络之前,可通过对NPU执行的算法网络的网络结构进行解析,确定出算法网络中的算法层之间的数据依赖关系,如图2所示,为NPU执行的算法网络的网络结构示意图,每一个圆圈为一个算法层,对于一个算法层而言,其工作流程为读入源数据,进行算子处理,其中,算子可以为卷积、池化、激活、全连接等,在算子处理完成之后,进入下一个算法层进行处理,如0号算法层的输出数据会作为输入数据被1号算法层和2号算法层读取,1号算法层的输出数据会作为输入数据被3号算法层和4号算法层读取,2号算法层的输出数据会作为输入数据被5号算法层、6号算法层和7号算法层读取,因此,通过对算法网络的网络结构的分析,可以得知算法网络中每个算法层的输出数据后续被读出的次数,如0号算法层的输出数据被读出的次数为2,1号算法层的输出数据被读出的次数为2,2号算法层的输出数据被读出的次数为3。
S102、将算法层数量确定为存储数据的读取次数和/或输出数据的读取次数;并将存储数据和存储数据的读取次数、和/或输出数据和输出数据的读取次数添加至缓冲存储器中。
在本申请实施例中,将输出数据和输出数据的读取次数添加至缓冲存储器中,包括:根据输出数据在内存存储器中的目的地址、以及内存存储器和缓冲存储器之间的存储映射方式,从缓冲存储器确定第一存储单元;将输出数据的读取次数和输出数据缓存至第一存储单元中。
具体的,根据输出数据在内存存储器中的目的地址、以及内存存储器和缓冲存储器之间的存储映射方式,从缓冲存储器中确定第一存储单元,包括:根据输出数据在内存存储器中的目的地址和存储映射方式,从缓冲存储器中确定输出数据对应的第一缓存单元组;若第一缓存单元组中包括处于第一空闲缓存单元,则将第一空闲缓存单元确定为第一缓存单元;若第一缓存单元组中不包括第一空闲的第一缓存单元,且从第一缓存单元组中查找到读取次数小于输出数据的读取次数的缓存单元,则将输出数据的读取次数的缓存单元确定为第一缓存单元。
进一步地,若第一缓存单元组中不包括第一空闲缓存单元,且未从第一缓存单元组中查找到读取次数小于输出数据的读取次数的缓存单元,则根据目的地址,从内存存储器确定第一存储单元。
在本申请实施例中,将存储数据和存储数据的读取次数添加至缓冲存储器中,包括:确定存储数据的读取次数;根据存储数据的存储地址和存储映射方式,从缓冲存储器中确定存储数据对应的第二缓存单元组;若第二缓存单元组中存在第二空闲存储单元,则将存储数据和存储数据的读取次数缓存至第二空闲存储单元中;若第二缓存单元组中不存在第二空闲存储单元,则从第二缓存单元组中查找读取次数最小的第二缓存单元,并将存储数据的读取次数缓存至第二缓存单元中。
在本申请实施例中,在每检测到一个算法层对存储数据和/或输出数据的读取操作时,将缓冲存储器中、存储数据的读取次数和/或输出数据的读取次数减一;直至缓冲存储器中、存储数据的读取次数和/或输出数据的读取次数置零,则将对应的存储数据和/或输出数据从缓冲存储器中删除。
需要说明的是,将输出数据和输出数据的读取次数添加至缓冲存储器中之后,还执行数据同步的过程,具体的:将输出数据、和/或输出数据和输出数据的读取次数更新至内存存储器中;或,为输出数据设置待同步标志,并在缓冲存储器将输出数据和输出数据的读取次数删除时,根据待同步标志,将输出数据、和/或输出数据和输出数据的读取次数更新至内存存储器中。
可以理解的是,针对神经网络处理器的数据流固定、可预先判断的特点,预先根据算法网络的网络结构得知读取缓冲存储器中数据的算法层数量,在缓冲存储器中设置缓存计数器来存储该算法层数量,能够保证即将处理的数据缓存在缓冲存储器中,大大减少了数据从内存存储器写入缓冲存储器的次数,进而提高了针对NPU的数据缓存效率。
本申请实施例提供一种存储介质,其上存储有计算机程序,上述计算机可读存储介质存储有一个或者多个程序,上述一个或者多个程序可被一个或者多个神经网络处理器执行,应用于数据处理装置中,该计算机程序实现如上述的数据处理方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台图像显示设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例所述的方法。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
Claims (15)
1.一种数据处理装置,其特征在于,所述装置包括:神经网络处理器、缓冲存储器和内存存储器;其中,所述缓冲存储器中包括缓存单元,每个缓存单元包括一个缓存数据块和一个缓存计数器;
所述缓存数据块,用于缓存所述内存存储器中的存储数据和/或神经网络处理器生成的输出数据;
所述缓存计数器,用于缓存所述存储数据和/或所述输出数据对应的读取次数,所述读取次数与根据算法网络的网络结构确定出的读取所述存储数据和/或所述输出数据的算法层数量相同。
2.根据权利要求1所述的装置,其特征在于,
所述缓冲存储器,还用于在每检测到一次对所述存储数据和/或所述输出数据的读取操作时,将所述缓存数据块对应的缓存计数器中的读取次数减一;直至所述缓存计数器中的读取次数置零,则删除所述存储数据和/或所述输出数据。
3.根据权利要求1所述的装置,其特征在于,
所述神经网络处理器,用于根据读取所述输出数据的算法层数量,确定所述输出数据的读取次数;根据所述输出数据在所述内存存储器中的目的地址、以及所述内存存储器和所述缓冲存储器之间的存储映射方式,从所述缓冲存储器和/或所述内存存储器中确定第一存储单元;将所述输出数据的读取次数和所述输出数据、和/或所述输出数据缓存至所述第一存储单元中。
4.根据权利要求3所述的装置,其特征在于,
所述神经网络处理器,还用于根据所述输出数据在所述内存存储器中的目的地址和所述存储映射方式,从所述缓冲存储器中确定所述输出数据对应的第一缓存单元组;若所述第一缓存单元组中包括处于第一空闲缓存单元,则将所述第一空闲缓存单元确定为所述第一缓存单元;
所述神经网络处理器,还用于若所述第一缓存单元组中不包括所述第一空闲缓存单元,且未从所述第一缓存单元组中查找到读取次数小于所述输出数据的读取次数的缓存单元,则根据所述目的地址,从所述内存存储器中确定所述第一存储单元;
所述神经网络处理器,还用于若所述第一缓存单元组中不包括所述第一空闲的第一缓存单元,且从所述第一缓存单元组中查找到读取次数小于所述输出数据的读取次数的缓存单元,则将读取次数小于所述输出数据的读取次数的缓存单元确定为所述第一缓存单元;
所述缓冲存储器,还用于删除读取次数小于所述输出数据的读取次数的缓存单元中的当前存储的输出数据和当前存储的输出数据对应的剩余读取次数。
5.根据权利要求3所述的装置,其特征在于,
所述神经网络处理器,还用于在将所述输出数据的读取次数和所述输出数据缓存至所述缓冲存储器时,将所述输出数据、和/或所述输出数据和所述输出数据的读取次数更新至所述内存存储器;
或,所述神经网络处理器,还用于在将所述输出数据的读取次数和所述输出数据缓存至所述缓冲存储器时,为所述输出数据设置待同步标志,在所述缓冲存储器将所述输出数据和所述输出数据的读取次数删除时,根据所述待同步标志,将所述输出数据、和/或所述输出数据和所述输出数据的读取次数更新至所述内存存储器中。
6.根据权利要求2所述的装置,其特征在于,
所述内存存储器,用于根据所述存储数据的存储地址和所述存储映射方式,从所述缓冲存储器中确定所述存储数据对应的第二缓存单元组,若所述第二缓存单元组中存在第二空闲存储单元,则将所述存储数据缓存至所述第二空闲存储单元中,若所述第二缓存单元组中不存在第二空闲存储单元,则从所述第二缓存单元组中查找读取次数最小的第二缓存单元,并将所述存储数据缓存至所述第二缓存单元中;
所述神经网络处理器,还用于确定所述存储数据的读取次数;若所述第二缓存单元组中存在第二空闲存储单元,则将所述存储数据的读取次数缓存至所述第二空闲存储单元中,若所述第二缓存单元组中不存在第二空闲存储单元,则将所述存储数据的读取次数缓存至所述第二缓存单元中。
7.根据权利要求6所述的装置,其特征在于,
若所述内存存储器中包括存储数据块和所述存储数据块对应的存储计数器,则所述神经网络处理器,还用于从所述存储计数器中获取所述存储数据的读取次数,所述存储计数器中的读取次数根据读取所述存储数据块中数据的算法层数量确定、和/或根据所述神经网络处理器传输的读取次数确定;
若所述内存存储器中仅包括所述存储数据块,则所述神经网络处理器,还用于从所述缓冲存储器中确定所述第二缓存单元中当前存储的读取次数,并根据所述第二缓存单元中当前存储的读取次数,确定所述存储数据的读取次数,和/或根据读取所述存储数据的算法层数量确定所述存储数据的读取次数。
8.一种数据处理方法,其特征在于,应用于上述权利要求1-7任一项所述的数据处理装置,所述方法包括:
获取待执行的算法网络的网络结构,并根据所述网络结构、确定读取内存存储器中的存储数据和/或所述算法网络中的每一个算法层的输出数据的算法层数量;
将所述算法层数量确定为所述存储数据的读取次数和/或所述输出数据的读取次数;并将所述存储数据和所述存储数据的读取次数、和/或所述输出数据和所述输出数据的读取次数添加至缓冲存储器中。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在每检测到一个算法层对所述存储数据和/或所述输出数据的读取操作时,将所述缓冲存储器中、所述存储数据的读取次数和/或所述输出数据的读取次数减一;
直至所述缓冲存储器中、所述存储数据的读取次数和/或所述输出数据的读取次数置零,则将对应的所述存储数据和/或所述输出数据从所述缓冲存储器中删除。
10.根据权利要求8所述的方法,其特征在于,所述将所述输出数据和所述输出数据的读取次数添加至缓冲存储器中,包括:
根据所述输出数据在所述内存存储器中的目的地址、以及所述内存存储器和所述缓冲存储器之间的存储映射方式,从所述缓冲存储器确定第一存储单元;
将所述输出数据的读取次数和所述输出数据缓存至所述第一存储单元中。
11.根据权利要求10所述的方法,其特征在于,所述根据所述输出数据在所述内存存储器中的目的地址、以及所述内存存储器和所述缓冲存储器之间的存储映射方式,从所述缓冲存储器中确定第一存储单元,包括:
根据所述输出数据在所述内存存储器中的目的地址和所述存储映射方式,从所述缓冲存储器中确定所述输出数据对应的第一缓存单元组;
若所述第一缓存单元组中包括处于第一空闲缓存单元,则将所述第一空闲缓存单元确定为所述第一缓存单元;
若所述第一缓存单元组中不包括所述第一空闲的第一缓存单元,且从所述第一缓存单元组中查找到读取次数小于所述输出数据的读取次数的缓存单元,则将所述输出数据的读取次数的缓存单元确定为所述第一缓存单元。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
若所述第一缓存单元组中不包括所述第一空闲缓存单元,且未从所述第一缓存单元组中查找到读取次数小于所述输出数据的读取次数的缓存单元,则根据所述目的地址,从所述内存存储器确定所述第一存储单元。
13.根据权利要求8所述的方法,其特征在于,所述将所述输出数据和所述输出数据的读取次数添加至缓冲存储器中之后,所述方法还包括:
将所述输出数据、和/或所述输出数据和所述输出数据的读取次数更新至所述内存存储器中;
或,为所述输出数据设置待同步标志,并在所述缓冲存储器将所述输出数据和所述输出数据的读取次数删除时,根据所述待同步标志,将所述输出数据、和/或所述输出数据和所述输出数据的读取次数更新至所述内存存储器中。
14.根据权利要求8所述的方法,其特征在于,所述将所述存储数据和所述存储数据的读取次数添加至缓冲存储器中,包括:
确定所述存储数据的读取次数;
根据所述存储数据的存储地址和所述存储映射方式,从所述缓冲存储器中确定所述存储数据对应的第二缓存单元组;
若所述第二缓存单元组中存在第二空闲存储单元,则将所述存储数据和所述存储数据的读取次数缓存至所述第二空闲存储单元中;
若所述第二缓存单元组中不存在第二空闲存储单元,则从所述第二缓存单元组中查找读取次数最小的第二缓存单元,并将所述存储数据的读取次数缓存至所述第二缓存单元中。
15.一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被神经网络处理器执行时实现如权利要求8-14任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210044147.5A CN114492776A (zh) | 2022-01-14 | 2022-01-14 | 一种数据处理方法及装置、存储介质 |
PCT/CN2022/138424 WO2023134360A1 (zh) | 2022-01-14 | 2022-12-12 | 一种数据处理方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210044147.5A CN114492776A (zh) | 2022-01-14 | 2022-01-14 | 一种数据处理方法及装置、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114492776A true CN114492776A (zh) | 2022-05-13 |
Family
ID=81512398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210044147.5A Pending CN114492776A (zh) | 2022-01-14 | 2022-01-14 | 一种数据处理方法及装置、存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114492776A (zh) |
WO (1) | WO2023134360A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023134360A1 (zh) * | 2022-01-14 | 2023-07-20 | 哲库科技(上海)有限公司 | 一种数据处理方法及装置、存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060112226A1 (en) * | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
US11295205B2 (en) * | 2018-09-28 | 2022-04-05 | Qualcomm Incorporated | Neural processing unit (NPU) direct memory access (NDMA) memory bandwidth optimization |
CN112712167B (zh) * | 2020-12-31 | 2024-07-05 | 北京清微智能科技有限公司 | 支持多种卷积神经网络加速的存储器访问方法及系统 |
CN112732591B (zh) * | 2021-01-15 | 2023-04-07 | 杭州中科先进技术研究院有限公司 | 一种缓存深度学习的边缘计算架构 |
CN114492776A (zh) * | 2022-01-14 | 2022-05-13 | 哲库科技(上海)有限公司 | 一种数据处理方法及装置、存储介质 |
-
2022
- 2022-01-14 CN CN202210044147.5A patent/CN114492776A/zh active Pending
- 2022-12-12 WO PCT/CN2022/138424 patent/WO2023134360A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023134360A1 (zh) * | 2022-01-14 | 2023-07-20 | 哲库科技(上海)有限公司 | 一种数据处理方法及装置、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023134360A1 (zh) | 2023-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9542409B2 (en) | Deduplicated file system | |
US8615635B2 (en) | Database management methodology | |
US9727479B1 (en) | Compressing portions of a buffer cache using an LRU queue | |
US10747593B2 (en) | Lock free container packing | |
US8887127B2 (en) | Web browsing apparatus and method through storing and optimizing JAVASCRIPT® code | |
US10353636B2 (en) | Write filter with dynamically expandable overlay | |
CN110069431B (zh) | 基于RDMA和HTM的弹性Key-Value键值对数据存储方法 | |
US9026523B2 (en) | Efficient selection of queries matching a record using a cache | |
US10552371B1 (en) | Data storage system with transparent presentation of file attributes during file system migration | |
CN107562806B (zh) | 混合内存文件系统的自适应感知加速方法及系统 | |
WO2023134360A1 (zh) | 一种数据处理方法及装置、存储介质 | |
CN113127438B (zh) | 用于存储数据的方法、装置、服务器和介质 | |
CN112286457A (zh) | 对象重删方法、装置、电子设备及机器可读存储介质 | |
US20050027933A1 (en) | Methods and systems for managing persistent storage of small data objects | |
CN115495020A (zh) | 文件处理方法、装置、电子设备和可读存储介质 | |
CN112286448B (zh) | 对象访问方法、装置、电子设备及机器可读存储介质 | |
CN114048847A (zh) | 一种图神经网络数据缓存方法、装置、设备及存储介质 | |
KR20210100347A (ko) | 가시화 플랫폼에서 사전 샘플을 생성하는 방법 | |
US20190227734A1 (en) | Tracking information related to free space of containers | |
CN117667964B (zh) | 数据处理方法、装置、设备、数据库及计算机程序产品 | |
US20140095792A1 (en) | Cache control device and pipeline control method | |
CN114579609A (zh) | 一种lsm数据的查询优化方法及装置 | |
CN118132461A (zh) | 一种数据依赖感知的动态图处理加速系统 | |
WO2018040600A1 (zh) | 基于转发表的信息处理方法、装置及计算机可读存储介质 | |
CN117992547A (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 |