CN112328172B - 数据存储方法、装置及数据读取方法、装置 - Google Patents
数据存储方法、装置及数据读取方法、装置 Download PDFInfo
- Publication number
- CN112328172B CN112328172B CN202011165682.3A CN202011165682A CN112328172B CN 112328172 B CN112328172 B CN 112328172B CN 202011165682 A CN202011165682 A CN 202011165682A CN 112328172 B CN112328172 B CN 112328172B
- Authority
- CN
- China
- Prior art keywords
- data
- column
- storage
- row
- stored
- 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
- 238000000034 method Methods 0.000 title claims abstract description 122
- 238000013500 data storage Methods 0.000 title claims abstract description 108
- 230000015654 memory Effects 0.000 claims abstract description 293
- 238000013528 artificial neural network Methods 0.000 claims description 44
- 238000012545 processing Methods 0.000 claims description 26
- 238000003062 neural network model Methods 0.000 claims description 13
- 230000002401 inhibitory effect Effects 0.000 claims description 4
- 238000013473 artificial intelligence Methods 0.000 abstract description 12
- 238000013135 deep learning Methods 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 11
- 230000003993 interaction Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- 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
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/0614—Improving the reliability of storage systems
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
本申请公开了数据存储方法、装置及数据读取方法、装置,涉及数据存储和读取、深度学习等人工智能技术领域。实现方案为:获取待存储的数据及存储阵列中当前可用存储单元的起始地址;根据起始地址及待存储的数据,确定当前待执行的数据存储操作;将数据存储操作发送给存储阵列中的第一接口,以使第一接口,执行数据存储操作,以将待存储数据同行、逐个存储块的写入每个存储块内与起始单元标识相同的各个存储单元中。由此,通过将数据同行、逐个存储块的写入各个块内具有相同存储单元标识的存储单元内,而无需为每类数据设置专用存储器,避免了因不同类型数据不均衡而影响整体存储效率,提升了存储的灵活性。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及数据存储和读取、深度学习等人工智能技术领域,尤其涉及一种数据存储方法、装置、电子设备和存储介质,还涉及一种数据读取方法、装置、电子设备和存储介质。
背景技术
随着人工智能技术的快速发展,智能设备功能越发强大,使得以神经模型为基础的AI(Artificial Intelligence,人工智能)算法变得也越发复杂,以此带来了更大的运算和数据的存储交互。
基于神经网络需求的海量数据的高效存储一直是当前研究的重点,现有的存算一体芯片设计,均存在一定的局限性,针对神经网络算法特点的数据存储,整体效率和灵活性不是很理想。因此,如何更好的提高存储的灵活性和效率,以便更好的提升人机交互的体验,例如语音交互,是当前人工智能相关技术的关键。
发明内容
本申请提供一种用于提升存储灵活性和存储效率的数据存储方法、装置及数据读取方法、装置。
本申请的第一方面,提供了一种数据存储方法,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,该方法包括:获取待存储的数据及存储阵列中当前可用存储单元的起始地址,其中,所述起始地址中包括起始行、起始列及起始单元标识;根据所述起始地址及待存储的数据,确定当前待执行的数据存储操作;控制所述存储阵列中的第一接口执行所述数据存储操作,以将所述待存储数据同行、逐个存储块的写入每个存储块内与所述起始单元标识相同的各个存储单元中。
本申请的第二方面,提供了另一种数据存储方法,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,N和M为正整数,所述方法包括:获取数据存储操作,所述存储操作中包括待存储数据及所述待存储数据对应的起始行、起始列及起始单元标识;将所述待存储数据,逐位写入所述起始行、每个列中的第一存储单元中,其中,所述每个列中的第一存储单元的标识均与所述起始单元标识相同;在所述待存储数据未全部写入所述存储阵列、且所述起始行的第M列中的第一存储单元已写入数据的情况下,更新标识,以定位至每个列中与所述第一存储单元相邻的下一存储单元;将所述待存储数据中的剩余数据逐位写入所述起始行、每个列中的下一存储单元中,直至所述待存储数据全部写入所述存储阵列。
本申请的第三方面,提供了一种数据读取方法,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述方法包括:在获取到神经网络处理器发送的数据处理结束消息的情况下,确定所述神经网络处理器当前待获取的目标数据及所述目标数据在存储阵列中的行地址、列地址及存储单元标识;根据所述目标数据在存储阵列中的行地址、列地址及存储单元标识,确定当前待执行的数据读取操作;
控制所述存储阵列中的第三接口,由所述行地址、列地址及存储单元标识起,从所述存储阵列的各列存储块中同时读取所述存储单元标识对应的各个存储单元中的数据,并将读取的所述目标数据传输给所述神经网络处理器
本申请的第四方面,提供了另一种数据数据读取方法,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述方法包括:获取数据读取操作,其中,所述读取操作中包括待读取的目标数据、及所述目标数据在存储阵列中的起始行、起始列及起始单元标识;根据所述起始行、起始列及起始单元标识,确定待启动的数据通道;启动所述数据通道,由所述起始行、起始列中的起始单元标识开始,从所述存储阵列的各列存储块中同时读取所述存储单元标识对应的各个存储单元中的数据,并将读取的所述目标数据传输给神经网络处理器。
本申请的第五方面,提供了一种数据存储装置,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述装置,包括:第一获取模块,用于获取待存储的数据及存储阵列中当前可用存储单元的起始地址,其中,所述起始地址中包括起始行、起始列及起始单元标识;第一确定模块,用于根据所述起始地址及待存储的数据,确定当前待执行的数据存储操作;第一控制模块,用于控制所述存储阵列中的第一接口执行所述数据存储操作,以将所述待存储数据同行、逐个存储块的写入每个存储块内与所述起始单元标识相同的各个存储单元中。
本申请的第六方面,提供了另一种数据存储装置,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,N和M为正整数,所述装置包括:第二获取模块,用于获取数据存储操作,所述存储操作中包括待存储数据及所述待存储数据对应的起始行、起始列及起始单元标识;第一写入模块,用于以所述起始行、起始列及起始单元标识为起始地址,将所述待存储数据,逐位写入所述起始行、每个列中的第一存储单元中,其中,所述每个列中的第一存储单元的标识均与所述起始单元标识的地址相同;第一更新模块,用于在所述待存储数据未全部写入所述存储阵列、且所述起始行的第M列中的第一存储单元已写入数据的情况下,更新标识,以定位至每个列中与所述第一存储单元相邻的下一存储单元;第二写入模块,用于将所述待存储数据中的剩余数据逐位写入所述起始行、每个列中的下一存储单元中,直至所述待存储数据全部写入所述存储阵列。
根据本申请的第七方面,提供了一种数据读取装置,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述装置包括:第二确定模块,用于在获取到神经网络处理器发送的数据处理结束消息的情况下,确定所述神经网络处理器当前待获取的目标数据及所述目标数据在存储阵列中的行地址、列地址及存储单元标识;第三确定模块,用于根据所述目标数据在存储阵列中的行地址、列地址及存储单元标识,确定当前待执行的数据读取操作;第二控制模块,用于控制所述存储阵列中的第三接口,由所述行地址、列地址及存储单元标识起,从所述存储阵列的各列存储块中同时读取相同存储单元标识对应的存储单元中的数据,并将读取的所述目标数据传输给所述神经网络处理器。
根据本申请的第八方面,提供了另一种数据读取装置,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述装置包括:第三获取模块,用于获取数据读取操作,其中,所述读取操作中包括待读取的目标数据、及所述目标数据在存储阵列中的起始行、起始列及起始单元标识;第五确定模块,用于根据所述起始行、起始列及起始单元标识,确定待启动的数据通道;第一读取模块,用于启动所述数据通道,由所述起始行、起始列中的起始单元标识开始,从所述存储阵列的各列存储块中同时读取所述存储单元标识对应的各个存储单元中的数据,并将读取的所述目标数据传输给神经网络处理器。
根据本申请的第八方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如第一方面和第二方面所述的数据存储方法,或如第三方面和第四方面所述的数据读取方法。
根据本申请的第九方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如第一方面和第二方面所述的数据存储方法,或如第三方面和第四方面所述的数据读取方法。
本申请的技术方案,通过将NPU计算所用各种数据同行、逐个存储块的写入各个块内具有相同存储单元标识的存储单元内,而无需为每类数据设置专用存储器,避免了因不同类型数据不均衡而影响整体存储效率,提升了存储的灵活性。进一步的,该存储方式,为增加数据读取通道的带宽提供了条件,使得在进行数据读取时,可以多通道同时读取多个数据,提升了读取的灵活性。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1a为本申请实施例提供的一存储阵列的示意图;
图1b为本申请实施例提供的一种数据存储方法的流程示意图;
图2为本申请实施例提供的一种确定起始地址的流程示意图;
图3为本申请实施例提供的一种存储阵列的结构示意图;
图4为本申请实施例提供的一种存储阵列设置在语音芯片中的连接示意图;
图5为本申请实施例提供的一种存储阵列的方框图;
图6为本申请实施例提供的另一种数据存储方法的流程示意图;
图7为本申请实施例提供的又一种数据存储方法的流程示意图;
图8为本申请实施例提供的再一种数据存储方法的流程示意图;
图9为本申请实施例提供的一种数据读取方法的流程示意图;
图10为本申请实施例提供的一种确定目标数据及目标数据的地址的流程示意图;
图11为本申请实施例提供的另一种数据读取方法的流程示意图;
图12为本申请实施例提供的一种数据存储装置的结构示意图;
图13为本申请实施例提供的另一种数据存储装置的结构示意图;
图14为本申请实施例提供的一种数据读取装置的结构示意图;
图15为本申请实施例提供的另一种数据读取装置的结构示意图;
图16为用来实现本申请实施例的数据存储方法或者数据读取方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
数据处理是对数据(包括数值的和非数值的)进行分析和加工的技术过程。包括对各种原始数据的分析、整理、计算、编辑等的加工和处理。随着计算机的日益普及,在人工智能技术领域中,通过计算机数据处理进行信息管理已成为主要的应用。人工智能是研究计算机来模拟人的某些视为过程和智能行为的学科,既有硬件层面的技术也有软件层面的技术,人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理以及机器学习/深度学习、大数据处理技术、知识图谱技术等几个大方向。
需要说明的是,目前主要的AI技术仍然依赖云端的强大运算和超量存储,然AI技术终端化必然是市场需求主流趋势,一种智能语音芯片开始应用于智能音箱,家用电器控制,现代智能车载系统。智能车载语音芯片将会有广阔的市场前景,其主要包括基于端侧的语音唤醒和语音识别,文本语音播报(TTS),以及低延时离线语音交互控制应用等等。而每一种语音功能所需要存储的神经网络模型数据通常在几兆,几十兆,甚至上百兆,而实际运行中,每秒模型数据需要大量反复加载数倍到数十倍次,以此带来的超高带宽的数据存储及存储效率是新一代智能语音芯片的核心重点之一,数据存储的效率直接影响数据读取的效率,从而进一步影响人工交互的体验。
相关技术中,神经网络处理器NPU的内部存储单元通常分为三个部分存储,独立的输入数据存储、神经网络模型数据(权重数据)存储及输出数据存储。该技术采用专用存储存专用数据的方式,不够灵活,当神经网络模型因精度要求,数据量化差异变化较大时/或每秒要求输入图像/音频数据帧变化时,会造成数据存储不均衡,或多或少影响整体存储效率。
为此,本申请实施例提出了一种数据存储方法、装置及数据读取方法、装置。本申请实施例,通过将NPU计算所用各种数据同行、逐个存储块的写入各个块内具有相同存储单元标识的存储单元内,而无需为每类数据设置专用存储器,避免了因不同类型数据不均衡而影响整体存储效率,提升了存储的灵活性。进一步的,该存储方式,为增加数据读取通道的带宽提供了条件,使得在进行数据读取时,可以多通道同时读取多个数据,提升了读取的灵活性。
下面参考附图描述本申请实施例的数据方法、装置及数据读取方法、装置。
本申请提供的数据存储、读取方法应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数。为对本申请提供的数据存储及读取方法进行清楚的说明,下面先对本申请提供的存储阵列的结构进行解释说明。
下面结合图1a,以N=5、M=4为例对本申请提供的存储阵列的结构进行解释说明。
如图1a所示,该存储阵列中的每个存储块中包含4个存储单元,在进行数据存储时,则可以首先在第一行的各个存储块的首个存储单元中依次存入数据,之后,再在第一行的各个存储块的第二个存储单元中依次存入数据,依次类推,直至第一行的各个存储块的各个存储单元中均存入数据后,即可在第二行的各个存储块的首个存储单元中依次存入数据。
在实际使用时,每个存储块内的存储单元可能成矩阵式分布,如图1a中虚线所在的存储块所示。可以理解的是,当存储块内的存储单元如图1a中虚线所在的存储块所示的形式时,数据的存储方式依然是先将每个块内第一行中的各个存储单元依次存满后、再在存储块内的第二行中的各个存储单元中存储数据。
图1b为本申请实施例提供的一种数据存储方法的流程示意图。
本申请实施例的数据存储方法的执行主体是中央处理器(Central ProcessingUnit,简称CPU),该CPU基于神经网络模型的终端芯片或装置内。
如图1b所示,该数据存储方法包括以下步骤:
S101,获取待存储的数据及存储阵列中当前可用存储单元的起始地址,其中,起始地址中包括起始行、起始列及起始单元标识。
通常,神经网络的计算数据包括经过数字信号处理器(Digital SgnalProcessor,简称DSP)处理的流式语音数据及神经网络模型数据(权重数据),其中,神经网络模型数据主要存储在CPU外部的双倍速率同步动态随机存储器(Double Date RateSynchronous Dynamic Random Access Memor,简称DDR或DDR SDRAM)中。由于存储阵列的存储空间有限,并不是将全部数据存储于存储阵列中,而是仅存储部分的流式语音数据和神经网络模型数据。
具体地,CPU可实时监控神经网络处理器(Neural network Processing Unit,简称NPU)的数据处理进度,以及时确定需要获取的模型数据。比如,NPU已经对要处理的时序数据进行了前3层的模型运算,那么CPU就可以获取第4层的模型数据了,或者,如果存储阵列的存储空间允许,还可以在NPU进行第3层运算时,CPU获取第4层的模型数据。获取待存储的数据的目的是将其存储于存储阵列中,供NPU读取,因此还需获取存储阵列中当前可用存储单元的包括起始行、起始列及起始单元标识的起始地址。
S102,根据起始地址及待存储的数据,确定当前待执行的数据存储操作。
其中,存储操作包括待存储的数据及起始地址。
S103,控制存储阵列中的第一接口执行数据存储操作,以将待存储数据同行、逐个存储块的写入每个存储块内与起始单元标识相同的各个存储单元中。
其中,第一接口为数据写入接口,第一接口的一端连接标准的外部系统总线,如包括但不限AHB/AXI3/AXI4等,另一端连接存储阵列的总线接口控制单元。
具体地,CPU在生成数据存储操作之后,将数据存储操作发送给存储阵列中的第一接口,以使第一接口,将待存储数据同行、逐个存储块的写入每个存储块内与起始单元标识相同的各个存储单元中。
本申请实施例的数据存储方法,通过将NPU计算所用各种数据同行、逐个存储块的写入各个块内具有相同存储单元标识的存储单元内,而无需为每类数据设置专用存储器,避免了因不同类型数据不均衡而影响整体存储效率,提升了存储灵活性。
需要说明的是,在获取存储阵列中当前可用存储单元的起始地址时,当前可用存储单元所在的存储块内可能未存储数据,此时可将当前可用存储块内的第一个存储单元作为当前可用存储单元;当前可用存储块内也可能已存储了部分数据(未存满),此时在获取起始地址时需考虑到已存储数据的结束地址,即最后一个数据存储的地址。
即在本申请地一个实施例中,如图2所示,上述步骤S101,可包括:
S201,获取待存储的数据。
S202,根据待存储的数据类型,确定存储阵列中的目标存储块。
其中,待存储的数据的类型可能是模型数据,也可能是待处理的时序数据。模型数据和时序数据可以分不同的行存,通常时序数据的量很小,比如可以固定存储在存储阵列的最后一行,其他所有行,可以用来存储模型各层的数据。
S203,根据目标存储块中已存储数据的结束地址,确定当前可用存储单元的起始地址。
需要说明的是,如图3所示,存储阵列可包括N行(Tier)、M列(Bank)个存储块、且每个存储块中包括多个存储单元S,目标存储块中已存储数据的结束地址包括结束行、结束列及结束单元,其中,N和M为正整数。
其中,存储单元S可以代表一个数据存储单元。
本申请实施例中,可用DW、DW分别表示存储单元S的数据宽度和地址宽度,进而每个S的存储容量可表示为2DW*2AW。CE代表组合存储(一个存储块),可由L个S组成,channel代表连接NPU内部的存储通道个数,可等同存储阵列的列数量,因此,存储阵列的总容量C=N*M*L*2DW*2AW/8字节,该存储阵列可通过参数化设计存储容量的大小,即通过修改上述参数设计便可得到所需的各种存储阵列类型。
需要说明的是,在进行数据写入时,可从起始列、起始行及起始单元标识开始,按照存储单元→存储列→存储行的优先级顺序进行数据的写入,基于此,可通过下列示例确定当前可用存储单元的起始地址:
在本申请的一个示例中,上述步骤S203,可包括:在结束单元为结束列的最后一个存储单元、且结束列为第M列的情况下,确定起始行为结束行的下一行、起始列为第一列、且起始单元标识为下一行、第一列中的第一个存储单元。
具体地,在目标存储块中已存储数据的结束单元,为结束列的最后一个存储单元、且结束列为第M列的情况下,说明结束行中的所有存储单元均已存储了数据,此时只能在结束行的下一行开始存储数据,因此在确定起始地址时,确定起始行为结束行的下一行、起始列为第一列、且起始单元标识为下一行、第一列中的第一个存储单元。
例如,存储阵列包括3行、4列,每个存储块包括3个存储单元,如果结束行为第1行、结束单元为第4列的第3个存储单元,那么确定起始行为第2行、起始列为第1列、且起始单元标识为第2行、第1列中的第1个存储单元。在逐位写入数据时,存储单元的写入顺序便是:第2行、第1列中的第1个存储单元→…→第2行、第4列中的第1个存储单元→第2行、第1列中的第2个存储单元…,直至待存储的数据全部写入存储阵列。
进一步地,上述步骤S203,还可包括:在结束列非第M列的情况下,确定起始列为结束列的下一列、起始行为结束行、且起始单元标识与结束单元的地址相同。
具体地,在目标存储块中已存储数据的结束列,不是最后一列的情况下,说明结束行中还存在可存储的存储单元,此时可在起始行的空余存储单元存储数据,因此在确定起始地址时,确定起始行为结束行、起始列为结束列的下一列、且起始单元标识与结束单元的地址相同。
例如,存储阵列包括3行、4列,每个存储块包括3个存储单元,如果结束行为第1行、结束列为第2列的第2个存储单元,那么确定起始行为第1行、起始列为第3列、且起始单元标识为第1行、第3列中的第2个存储单元。
也就是说,该示例中采用先逐列逐存储单元、再逐行的方式将数据写入存储阵列,由于存储阵列的每一列对应一个通道,因而存储阵列的各个列可同时进行数据的写入,即实现并行存储,以提高数据的存储效率。
由此,根据目标存储块中已存储数据的结束地址,确定起始地址,不仅能够有效、快速地确定出起始地址,而且通过逐列逐位的方式写入数据,能够实现并行写入,从而提高数据的存储效率。
通常,神经网络模型数据是存储在DDR中的,当需要将模型数据的存入存储阵列中时,模型数据经第一接口存入存储阵列。除了模型数据,还需对流式语音数据进行存储,若语音数据不经过任何处理直接进行存储,则可通过第一接口可以直接存入存储阵列。若语音数据通过DSP的预处理,例如降噪等处理后存入存储阵列,则需要设置了另一个写入接口,负责将经DSP处理过的语音数据存入存储阵列。
即如图4所示,存储阵列包括两个接口,第一接口和第二接口,其中,第一接口即为上述实施例的数据接口,第二接口为处理器/协处理器存储接口,如TCM等类型接口,这里的处理器包括但不限CPU/DSP/GPU等,连接到存储阵列时转换成通用的SRAM/FIFO接口。
在存储阵列有多个接口时,数据存储方法还可包括:在两个数据写入接口均有待存储数据的情况下,根据多个接口中的每个接口分别对应的待存储数据的类型,设置每个接口的优先级,以使优先级高的接口将对应的待存储数据先写入存储阵列。
具体地,在两个接口均有待存储数据的情况下,对应的两个存储地址可能会发生冲突,为了避免发生冲突引起的存储无效,根据两个接口分别对应的待存储数据的类型,例如,模型数据还是时序数据,设置接口的优先级,以使优先级高的接口,将对应的待存储数据先写入存储阵列。需要说明的是,如果第一接口和第二接口的存储数据的地址不冲突,例如,第一接口和第二接口分别以不同的写入规则进行数据的写入,则两个接口可同时写入不同类型的数据,以进一步提高存储效率。
例如,当第一接口的待存储数据为模型数据,第二接口的待存储数据为语音数据时,可设置第二接口的优先级高于第一接口的优先级,待第二接口写入数据后,第一优先级进行数据的写入。
本申请实施例中,第二接口可直接连接DSP的数据TCM端口,处理后的语音数据传输效率,高过传统的标准总线的数据交互方式。另外,DSP可通过第二接口扩展数据空间,也可解决DSP自身因数据空间不足等问题。同时当DSP负载不是很大时也可进行神经网络的辅助运算,增加计算力,并将结果数据通过第二接口进行共享。
如图5所示,存储阵列还包括:第三接口(数据读取接口)、总线接口控制单元和并行多通道存储接口单元。
其中,第三接口为多通道存储接口,可以是SRAM接口类型,也可以是FIFO接口类型,可连接NPU内部的数据桥/路由交换/计算单元等。总线接口控制单元,支持标准总线协议及控制,支持Master及Slave功能,实现Master功能时控制单元需具备DMA的存储特性,连接存储阵列时采用通用的SRAM/FIFO接口、与第二接口一致。并行多通道存储接口单元连接NPU内部的存储通道,每个通道具有独立的第三接口,可同时并行进行数据操作。
下面参照图3-图5描述本申请实施例的存储方法:
可设定当前几帧数据如Fn,并通过第一接口和第二接口进行数据的交替更新,其中第一接口通过内部的DMA数据搬移功能,从外部DDR将待存储的模型数据传输到存储阵列中,第二接口接收经过DSP处理过的语音数据,传输到存储阵列中,这部分数据可设定Fn+1。这两种接口数据是可分别存储到不同的行,由于是对不同行的操作,就能达到第一二接口完全并行存储,大大提高了存储效率。
第三接口可同时将当前帧的模型数据和语音数据Fn传输给NPU计算单元进行相关的运算,Fn和Fn+1帧数据可存放在不同的行,这个可由软件控制实现。因此可保证三个接口不在同一时间存储同一个行操作,达到了三个接口能同时并行存储,整体存储效率最高的效果。
本申请实施例还提出了另一种数据存储方法,图6为本申请实施例提出的另一种数据存储方法的流程示意图。
本申请实施例的数据存储方法的执行主体是写入接口(第一接口),CPU将数据存储操作发送给该写入接口,以使该写入接口,根据起始行、起始列及起始单元标识将待存储数据逐个存储块的存入存储阵列中。
本申请实施例的数据存储方法应用于包括N行、M列个存储块的存储阵列,且每个存储块中包括多个存储单元,N和M为正整数。
如图6所示,该数据存储方法包括以下步骤:
S601,获取数据存储操作,存储操作中包括待存储数据及待存储数据对应的起始行、起始列及起始单元标识。
其中,CPU将根据起始地址及待存储的数据生成的数据存储操作,发送给写入接口。
S602,将待存储数据,逐位写入起始行、每个列中的第一存储单元中,其中,每个列中的第一存储单元的标识均与起始单元标识的地址相同。
例如,当起始单元标识为第1个存储单元时,第一存储单元为第1个存储单元;当起始单元标识为第2个存储单元时,第一存储单元为第2个存储单元;当起始单元标识为第3个存储单元时,第一存储单元为第3个存储单元。
S603,在待存储数据未全部写入存储阵列、且起始行的第M列中的第一存储单元已写入数据的情况下,更新标识,以定位至每个列中与第一存储单元相邻的下一存储单元。
S604,将待存储数据中的剩余数据逐位写入起始行、每个列中的下一存储单元中,直至待存储数据全部写入存储阵列。
举例说明,存储阵列包括3行、4列,每个存储块包括3个存储单元,如果起始行为第1行、起始列为第3列、且起始单元标识为第1行、第3列中的第2个存储单元,那么写入接口将待存储数据,逐位写入第1行、每个列中的第2个存储单元中,直至写入第1行、最后一列的第2个存储单元中之后,且数据还没有存储完成时,继续将剩余数据数据写入第1行、每个列中的第3个存储单元中,直至待存储数据全部写入存储阵列。
由此,本申请实施例的数据存储方法,通过将NPU计算所用各种数据同行、逐个存储块的写入各个块内具有相同存储单元标识的存储单元内,而无需为每类数据设置专用存储器,避免了因不同类型数据不均衡而影响整体存储效率,提升了存储灵活性。
需要说明的是,本申请实施例中在逐个存储块的写入数据时,存在将起始行的全部存储单元均写入数据的情况,此时,则需换行继续进行数据的写入。
即在本申请的一个实施例中,如图7所示,上述步骤S604,可包括以下步骤:
S701,将待存储数据中的剩余数据逐位写入起始行、每个列中的下一存储单元中。
S702,在待存储数据未全部写入存储阵列、且起始行的每个列中的全部存储单元已写入数据的情况下,更新行地址,以定位至存储阵列中与起始行相邻的下一行。
S703,将待存储数据中的剩余数据继续逐位写入下一行、每个列的起始存储单元中,直至待存储数据全部写入存储阵列。
举例而言,在将剩余数据数据写入第1行、每个列中的第3个存储单元中之后、且数据还没有存储完毕时,继续将剩余数据写入第2行、每个列中的第1个存储单元,直至待存储数据全部写入存储阵列。
由此,在起始行对应的全部存储单元均写入数据后,进行换行逐位写入,有利于实现并行输入数据,提高存储的灵活性。
需要说明的是,第一/二接口和第三接口可以同时进行操作的前提是,第一/二接口要写入的地址与第三接口要读取的地址不同。若第三接口要读取的地址,正好是第一/二接口要写入的地址,则此时禁止写入数据,待读取数据读取完毕,且该位置的数据不再使用后再写入数据。
即在本申请的一个实施例中,数据存储方法,还可包括:在存储阵列的任一存储单元处于读数据状态的情况下,禁止向该任一存储单元写入新数据。
例如,如果第2行第1列的第2个存储单元处于读数据状态,那么禁止向该存储单元写入新数据,也就是说,在读数据与写入数据发生冲突时,读数据的优先级高于写入数据的优先级。
由此,避免读数据和写入数据之间,发生冲突导致读取或者存入错乱的现象,保证了数据存储以及读取的有效性。
在本申请的一个实施例中,如图8所示,在上述步骤S703之后,可包括:
S801,返回待存储数据在存储阵列中的结束地址,其中,结束地址,包括结束行、结束列及结束单元标识。
具体地,在待存储数据全部写入存储阵列之后,为了便于下一数据的存储,写入接口需返回待存储数据在存储阵列中的结束地址,其中,结束地址,包括结束行、结束列及结束单元,并将结束地址发送至CPU,以使CPU根据结束地址,确定下一存储操作时可用存储单元的起始地址。
由此,在当前数据存储完毕后,返回待存储数据在存储阵列中的结束地址,方便CPU快速、及时的根据结束地址确定起始地址,进一步提高了存储数据的效率。
本申请实施例还提供了一种数据读取方法,图9为本申请实施例提供的一种数据读取方法的流程示意图。
本申请实施例的数据读取方法的执行主体是中央处理器CPU。该数据读取方法应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数。
如图9所示,该数据读取方法包括:
步骤S901,在获取到神经网络处理器发送的数据处理结束消息的情况下,确定神经网络处理器当前待获取的目标数据及目标数据在存储阵列中的行地址、列地址及存储单元标识。
具体地,神经网络处理器NPU每用一层模型参数,对一帧语音数据进行处理后,即可向CPU发送数据处理结束的消息,进而CPU即可根据NPU刚处理结束的数据,确定NPU当前待获取的目标数据、及目标数据的地址。
举例来说,若NPU发送是数据处理结束消息,对应的是用第三层的模型参数对第一帧语音数据进行了处理,那么该NPU待获取的目标数据即为第二帧的语音数据。或者,若NPU发送是数据处理结束消息,对应的是用第三层的模型参数对最后一帧语音数据进行了处理,那么该NPU待获取的目标数据即为第四层的模型参数。
可以理解的是,CPU可以在每控制NPU获取一次数据后,记录NPU已获取数据的信息,比如已获取的是第几层的模型参数,或者第几帧语音数据。进而在获取到NPU发送的数据处理结束消息时,即可根据记录的NPU已获取数据的信息,确定待获取的目标数据。
另外,由于各个数据的存储地址,为数据存储过程中CPU控制生成的,即CPU中记录了各个数据的存储地址,从而在确定了目标数据后,即可确定目标数据的地址。
步骤S902,根据目标数据在存储阵列中的行地址、列地址及存储单元标识,确定当前待执行的数据读取操作。
其中,数据读取操作中包括待读取的目标数据、及目标数据在存储阵列中的起始行、起始列及起始单元标识。
步骤S903,控制存储阵列中的第三接口,由行地址、列地址及存储单元标识起,从存储阵列的各列存储块中同时读取存储单元标识对应的各个存储单元中的数据,并将读取的目标数据传输给神经网络处理器。
具体地,CPU在生成数据读取操作之后,将数据读取操作发送至存储阵列的第三接口,进而第三接口根据目标数据,在存储阵列中的起始行、起始列及起始单元标识,确定待启动的数据通道,并启动数据通道,由起始行、起始列中的起始单元标识开始,从存储阵列中读取目标数据,并将目标数据传输给NPU。
本申请实施例的数据读取方法,根据起始行、起始列及起始单元标识仅在一个存储阵列中进行数据读取,无需专用数据专用读取,提升了读取的灵活性,避免因数据存储不均衡而影响整体读取效率,提升了读取灵活性。
本申请实施例中神经网络处理器当前处理的序列数据中包括K帧数据,其中,K为正整数。在本申请的一个实施例中,如图10所示,上述步骤S901中的确定神经网络处理器当前待获取的目标数据及目标数据在存储阵列中的行地址、列地址及存储单元标识,可包括:
步骤S1001,确定结束消息对应的已处理数据及第一网络层。
步骤S1002,在已处理数据为序列数据中的第K帧的关联数据的情况下,确定目标数据包括与第一网络层相邻的下一层对应的网络参数、及序列数据中第一帧的关联数据,其中,关联数据,为对应帧的原始数据或者原始数据经过网络层处理后生成的数据。
具体地,序列数据的语音帧有多帧,其中每一帧均需模型的每一个网络层处理,在每一帧处理完毕后,如果已处理数据为序列数据中的第K帧数据,或者,第K帧数据经过网络层处理后生成的数据,则确定要读取的目标数据,包括与第一网络层相邻的下一层对应的网络参数、及序列数据中第一帧的关联数据。
即在上述步骤S1001之后,还可包括:在已处理数据为序列数据中的第i帧关联数据情况下,确定目标数据为与第i帧数据相邻的第i+1帧关联数据,其中,i为小于K的正整数。
例如,序列数据有5帧,如果已处理数据为序列数据中的第3帧关联数据,那么目标数据为与第4帧关联数据。
由此,在确定要读取的目标数据时,如果已处理的数据为序列数据中的第i帧关联数据,则确定目标数据为第i+1帧关联数据。保证了读取数据的准确性,且提高了读取效率。
本申请实施例提出了另一种数据读取方法,图11为本申请实施例提供的另一种数据读取方法的流程示意图。
该数据读取方法的执行主体为存储阵列的第三接口(第三接口),且应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数。
如图11所示,该数据读取方法,包括:
步骤S1101,获取数据读取操作,其中,读取操作中包括待读取的目标数据、及目标数据在存储阵列中的起始行、起始列及起始单元标识。
步骤S1102,根据起始行、起始列及起始单元标识,确定待启动的数据通道。
其中,每一条数据通道对应存储阵列的一列。
步骤S1103,启动数据通道,由起始行、起始列中的起始单元标识开始,从存储阵列的各列存储块中同时读取存储单元标识对应的各个存储单元中的目标数据,并将读取的目标数据传输给神经网络处理器。
具体而言,在第三接口接收到CPU发送的数据读取操作之后,根据起始行、起始列及起始单元标识,确定待启动的数据通道,然后,启动数据通道,由起始行、起始列中的起始单元标识开始,从存储阵列的各列存储块中同时读取存储单元标识对应的各个存储单元中的数据,并将读取到的数据传输给神经网络处理器。
例如,存储阵列为3行4列,如果起始行、起始列及起始单元标识,分别为第2行、第3列及第2个存储单元,则可同时启动第3列、第4列对应的数据通道。
由此,根据起始行、起始列及起始单元标识,同时从存储阵列中各个对应存储单元读取数据,通过数据并行读取,提高了读取效率。
在本申请的一个实施例中,上述步骤S1102,可包括:在起始列为第一列、且目标数据所占的存储单元大于M的情况下,确定待启动的数据通道为与每一列对应的数据通道。
具体地,在目标数据所占的存储单元大于存储阵列的列数时,则需启动每列对应的通道进行数据读取,因此,则确定待启动的数据通道为与每一列对应的数据通道。
在本申请的一个实施例中,上述步骤S1102,还可包括:在起始列为第j列、且目标数据对应的存储单元大于M-j的情况下,确定待启动的初始数据通道为第j个通道至第M个通道、及补充数据通道为第第一个通道至第j-1个通道,其中,j为大于1的整数,补充数据通道为,在第j个通道至第M个通道,从起始行中、第j列至第M列中的起始单元标识中读取数据后,继续启动的数据通道。
也就是说,在目标数据对应的存储单元,大于起始行对应的可存储的存储单元的情况下,即说明需要换行继续启动数据通道。
例如,存储阵列包括3行4列、且每个存储块包括3个存储单元,如果起始列为第3列、且目标数据对应的存储单元大于1的情况下,确定待启动的初始数据通道为,第3个通道至第4个通道、及补充数据通道为第1个通道至第2个通道。
需要说明的是,在基于待启动的初始通道数读取完毕之后,若目标数据还没有全部被读取,则将剩余的目标数据按照上述读取方法继续读取,直至目标数据全部读取完毕。
由此,可通过目标数据的起始行、起始列及起始单元标识确定出待启动的初始通道数,以实现多个通道的并行读取,提高了读取效率。
在本申请的一个实施例中,每个存储块包含L个存储单元,L为大于1的正整数,目标数据所占的存储单元大于M。
上述步骤S1103中的由起始行、起始列中的起始单元标识开始,从存储阵列的各列存储块中读取存储单元标识对应的各个存储单元中的目标数据,可包括:
通过数据通道,读取起始行、起始列之后每一列中与起始单元标识对应的每个存储单元中的第一数据;在起始单元标识小于L的情况下,更新标识,以定位至每个列中与起始单元标识相邻的下一存储单元;通过数据通道,从起始行、每个列中的下一存储单元中继续读取数据,直至将目标数据全部读取完毕。
例如,存储阵列包括3行4列、且每个存储块包括3个存储单元,如果目标数据所占的存储单元为5,那么在读取目标数据时,通过数据通道,读取起始行、起始列之后每一列中与起始单元标识对应的每个存储单元中的第一数据;之后,如果起始单元标识小于3,则更新标识,并从起始行、每个列中的下一存储单元中继续读取数据,直至将目标数据全部读取完毕。
在一个实施例中,在读取起始行、起始列之后每一列中与起始单元标识对应的每个存储单元中的第一数据之后,还可包括:
在起始单元标识为第L位的情况下,更新行地址,以定位至与起始行相邻的下一行;通过数据通道,从下一行、每个列中的第一个存储单元中继续读取数据,直至将目标数据全部读取完毕。
例如,存储阵列包括3行4列、且每个存储块包括3个存储单元,如果目标数据所占的存储单元为5,那么在读取目标数据时,通过数据通道,读取起始行、起始列之后每一列中与起始单元标识对应的每个存储单元中的第一数据;之后,如果起始单元标识为第3位,则更新行地址,并从起始行的下一行、每个列中的第一存储单元中继续读取数据,直至将目标数据全部读取完毕。
综上,本申请的技术方案,采用符合神经网络模型处理器的高效存储结构需求,三种存储接口协同,第一写入接口用于对外部总线存储DDR的数据更新,第二写入可用于外部处理器/协处理器数据扩展,交换和共享,第三接口用于NPU内部存储多通道并行到计算单元的高速交互;采用矩阵的存储阵列,无需区分存储神经网络输入层、中间层、输出层,以及外部处理器交换等各种数据,有别于专用的神经网络数据存储方式,使得存储有更强的灵活性和扩展性;存储阵列实现灵活,参数可配,不仅实用设计阶段的不确定性存储容量,存储宽度,存储深度,以及设计实现时,需要多少存储单元拼接,利于芯片设计阶段的实现,同时可复用性强,不仅可用于现有神经网络处理器设计中,也可用于类似对存储效率要求很高的超算等技术领域。
本申请实施例还提出了一种数据存储装置,图12为本申请实施例提供的一种数据存储装置的结构示意图。
如图12所示,该数据存储装置100包括:第一获取模块110、第一确定模块120和第一控制模块130。
其中,第一获取模块110用于获取待存储的数据及存储阵列中当前可用存储单元的起始地址,其中,起始地址中包括起始行、起始列及起始单元标识;第一确定模块120用于根据起始地址及待存储的数据生成数据存储操作;第一控制模块130用于控制存储阵列中的第一接口执行数据存储操作,以将待存储数据同行、逐个存储块的写入每个存储块内与起始单元标识相同的各个存储单元中。
在本申请的一个实施例中,第一获取模块110,具体用于:获取待存储的数据;根据待存储的数据类型,确定存储阵列中的目标存储块;根据目标存储块中已存储数据的结束地址,确定当前可用存储单元的起始地址。
在本申请的一个实施例中,存储阵列包括N行、M列个存储块、且每个存储块中包括多个存储单元,目标存储块中已存储数据的结束地址包括结束行、结束列及结束单元,其中,N和M为正整数,第一获取模块110,具体用于:在结束单元为结束列的最后一个存储单元、且结束列为第M列的情况下,确定起始行为结束行的下一行、起始列为第一列、且起始单元标识为下一行、第一列中的第一个存储单元。
在本申请的一个实施例中,第一获取模块110,具体还用于:在结束列非第M列的情况下,确定起始列为结束列的下一列、起始行为结束行、且起始单元标识与结束单元的地址相同。
在本申请的一个实施例中,存储阵列包括两个接口,数据处理装置还包括:设置模块,用于在两个接口均有待存储数据的情况下,根据两个接口分别对应的待存储数据的类型,设置接口的优先级,以使优先级高的接口将对应的待存储数据先写入存储阵列。
需要说明的是,本申请实施例的数据存储装置的其他具体实施方式可参见前述数据处理方法的具体实施方式,为避免冗余,此处不再赘述。
本申请实施例的数据存储装置,通过将NPU计算所用各种数据同行、逐个存储块的写入各个块内具有相同存储单元标识的存储单元内,而无需为每类数据设置专用存储器,避免了因不同类型数据不均衡而影响整体存储效率。
为了实现上述实施例,本申请实施例还提出另一种数据存储装置,图13为本申请实施例提供的另一种数据存储装置的结构示意图。
该装置应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,N和M为正整数。
如图13所示,该数据存储装置200包括:第二获取模块210、第一写入模块220、第一更新模块230及第二写入模块240。
其中,第二获取模块210用于获取数据存储操作,存储操作中包括待存储数据及待存储数据对应的起始行、起始列及起始单元标识;第一写入模块220用于以起始行、起始列及起始单元标识为起始地址,将待存储数据,逐位写入起始行、每个列中的第一存储单元中,其中,每个列中的第一存储单元的标识均与起始单元标识的地址相同;第一更新模块230用于在待存储数据未全部写入存储阵列、且起始行的第M列中的第一存储单元已写入数据的情况下,更新标识,以定位至每个列中与第一存储单元相邻的下一存储单元;第二写入模块240用于将待存储数据中的剩余数据逐位写入起始行、每个列中的下一存储单元中,直至待存储数据全部写入存储阵列。
在本申请的一个实施例中,数据存储装置还包括:第二更新模块,用于在待存储数据未全部写入存储阵列、且起始行的每个列中的全部存储单元已写入数据的情况下,更新行地址,以定位至存储阵列中与起始行相邻的下一行;第三写入模块,用于将待存储数据中的剩余数据继续逐位写入下一行、每个列的起始存储单元中。
在本申请的一个实施例中,数据存储装置还包括:禁止模块,用于在存储阵列的任一存储单元处于读数据状态的情况下,禁止向任一存储单元写入新数据。
在本申请的一个实施例中,数据存储装置还包括:返回模块,用于返回待存储数据在存储阵列中的结束地址,其中,结束地址,包括结束行、结束列及结束单元。
需要说明的是,本申请实施例的数据存储装置的具体实施方式可参见前述数据存储方法的具体实施方式,故在此不再赘述。
本申请实施例的数据存储装置,根据起始行、起始列及起始单元标识将数据逐位存储至一个存储阵列,无需专用数据专用存储,提升了存储的灵活性,避免因数据存储不均衡而影响整体存储效率。
本申请还提出了一种数据读取装置,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数。图14为本申请实施例提供的一种数据读取装置的结构示意图。
如图14所示,该数据读取装置300包括:第二确定模块310、第三确定模块320和第二控制模块330。
其中,第二确定模块310用于在获取到神经网络处理器发送的数据处理结束消息的情况下,确定神经网络处理器当前待获取的目标数据及目标数据在存储阵列中的行地址、列地址及存储单元标识;第三确定模块320用于用于根据目标数据在存储阵列中的行地址、列地址及存储单元标识,确定当前待执行的数据读取操作;第二控制模块330用于控制存储阵列中的第三接口,由行地址、列地址及存储单元标识起,从存储阵列的各列存储块中同时读取相同存储单元标识对应的存储单元中的数据,并将读取的目标数据传输给神经网络处理器。
在本申请的一个实施例中,神经网络处理器当前处理的序列数据中包括K帧数据,其中,K为正整数,第二确定模块310,具体用于:确定结束消息对应的已处理数据及第一网络层;在已处理数据为序列数据中的第K帧关联的情况下,确定目标数据包括与第一网络层相邻的下一层对应的网络参数、及序列数据中第一帧的关联数据,其中,关联数据,为对应帧的原始数据或者原始数据经过网络层处理后生成的数据。
在本申请的一个实施例中,数据读取装置还包括:第四确定模块,用于在已处理数据为序列数据中的第i帧关联数据情况下,确定目标数据为与第i帧数据相邻的第i+1帧关联数据,其中,i为小于K的正整数。
需要说明的是,本申请实施例的数据存储装置的具体实施方式可参见前述数据存储方法的具体实施方式,故在此不再赘述。
本申请实施例的数据读取装置,根据起始行、起始列及起始单元标识仅在一个存储阵列中进行数据读取,无需专用数据专用读取,提升了读取的灵活性,而且可以实现并行读取,提高了读取效率。
本申请提出了另一种数据读取装置,图15为本申请实施例提供的另一种数据读取装置的结构示意图。
该数据读取装置应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数。
如图15所示,该数据读取装置400包括:第三获取模块410、第五确定模块420和第一读取模块430。
其中,第三获取模块410用于获取数据读取操作,其中,读取操作中包括待读取的目标数据、及目标数据在存储阵列中的起始行、起始列及起始单元标识;第五确定模块420用于根据起始行、起始列及起始单元标识,确定待启动的数据通道;第一读取模块430用于启动数据通道,由起始行、起始列中的起始单元标识开始,从存储阵列的各列存储块中读取目标数据,并将读取的目标数据传输给神经网络处理器。
在本申请的一个实施例中,第五确定模块420具体用于:在起始列为第一列、且目标数据所占的存储单元大于M的情况下,确定待启动的数据通道为与每一列对应的数据通道。
在本申请的一个实施例中,第五确定模块420具体用于:在起始列为第j列、且目标数据对应的存储单元大于M-j的情况下,确定待启动的初始数据通道为第j个通道至第M个通道、及补充数据通道为第第一个通道至第j-1个通道,其中,j为大于1的整数,补充数据通道为,在第j个通道至第M个通道,从起始行中、第j列至第M列中的起始单元标识中读取数据后,继续启动的数据通道。
在本申请的一个实施例中,每个存储块包含L个存储单元,L为大于1的正整数,目标数据所占的存储单元大于M,第三读取模块,具体用于:通过数据通道,读取起始行、起始列之后每一列中与起始单元标识对应的每个存储单元中的第一数据;在起始单元标识小于L的情况下,更新标识,以定位至每个列中与起始单元标识相邻的下一存储单元;通过数据通道,从起始行、每个列中的下一存储单元中继续读取数据,直至将目标数据全部读取完毕。
在本申请的一个实施例中,数据读取装置还包括:第三更新模块,用于在起始单元标识为第L位的情况下,更新行地址,以定位至与起始行相邻的下一行;第二读取模块,用于通过数据通道,从下一行、每个列中的第一个存储单元中继续读取数据,直至将目标数据全部读取完毕。
需要说明的是,本申请实施例的数据存储装置的具体实施方式可参见前述数据存储方法的具体实施方式,故在此不再赘述。
本申请实施例的数据读取装置,根据起始行、起始列及起始单元标识仅在一个存储阵列中进行数据读取,无需专用数据专用读取,提升了读取的灵活性,而且可以实现并行读取,提高了读取效率。
根据本申请的实施例,本申请还提供了一种数据存储方法或者数据读取方法的电子设备和可读存储介质。本申请实施例还提出一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如上述实施例的数据存储方法或者数据读取方法。下面结合图16进行说明。
如图16所示,是根据本申请实施例的数据存储方法或者数据读取方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图16所示,该电子设备包括:一个或多个处理器101、存储器102,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图16中以一个处理器101为例。
存储器102即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据存储方法或者数据读取方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据存储方法或者数据读取方法。
存储器102作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据存储方法对应的程序指令/模块(例如,附图12所示的第一获取模块110、第一确定模块120及第一控制模块130,或者,附图13所示的第二获取模块210、第一写入模块220、第一更新模块230及第二写入模块240)。处理器101通过运行存储在存储器102中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据存储方法或者数据读取方法。
存储器102可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据存储或者数据读取电子设备的使用所创建的数据等。此外,存储器102可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器102可选包括相对于处理器101远程设置的存储器,这些远程存储器可以通过网络连接至数据存储方法或者数据读取方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
数据存储方法或者数据读取方法的电子设备还可以包括:输入装置103和输出装置104。处理器101、存储器102、输入装置103和输出装置104可以通过总线或者其他方式连接,图13中以通过总线连接为例。
输入装置103可接收输入的数字或字符信息,以及产生与语音交互方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置104可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS(VirtualPrivate Server,虚拟专用服务器)服务中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
根据本申请实施例的技术方案,通过将NPU计算所用各种数据同行、逐个存储块的写入各个块内具有相同存储单元标识的存储单元内,而无需为每类数据设置专用存储器,避免了因不同类型数据不均衡而影响整体存储效率,提升了存储的灵活性。进一步的,该存储方式,为增加数据读取通道的带宽提供了条件,使得在进行数据读取时,可以多通道同时读取多个数据,提升了读取的灵活性。
在本说明书的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (28)
1.一种数据存储方法,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述方法包括:
获取待存储的数据及存储阵列中当前可用存储单元的起始地址,其中,所述起始地址中包括起始行、起始列及起始单元标识,所述待存储的数据为待神经网络处理器处理的数据,包括:模型数据和待处理的时序数据;
根据所述起始地址及待存储的数据,确定当前待执行的数据存储操作;
控制所述存储阵列中的第一接口执行所述数据存储操作,以将所述待存储的数据同行、逐个存储块的写入每个存储块内与所述起始单元标识相同的各个存储单元中,其中,所述模型数据和所述待处理的时序数据存储于不同的行中;
所述存储阵列包括多个接口,所述方法还包括:
在所述多个接口均有待存储数据的情况下,根据所述多个接口中的每个接口分别对应的待存储数据的类型,设置每个接口的优先级,以使优先级高的接口将对应的待存储数据先写入所述存储阵列。
2.如权利要求1所述的方法,其中,所述获取待存储的数据及存储阵列中当前可用存储单元的起始地址,包括:
获取待存储的数据;
根据所述待存储的数据类型,确定所述存储阵列中的目标存储块;
根据所述目标存储块中已存储数据的结束地址,确定当前可用存储单元的起始地址。
3.如权利要求2所述的方法,其中,所述目标存储块中已存储数据的结束地址包括结束行、结束列及结束单元,所述根据所述目标存储块中已存储数据的结束地址,确定当前可用存储单元的起始地址,包括:
在所述结束单元为所述结束列的最后一个存储单元、且所述结束列为第M列的情况下,确定所述起始行为所述结束行的下一行、所述起始列为第一列、且所述起始单元标识为所述下一行、第一列中的第一个存储单元。
4.如权利要求3所述的方法,其中,所述根据所述目标存储块中已存储数据的结束地址,确定当前可用存储单元的起始地址,包括:
在所述结束列非第M列的情况下,确定所述起始列为所述结束列的下一列、所述起始行为所述结束行、且所述起始单元标识与所述结束单元的地址相同。
5.一种数据存储方法,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,N和M为正整数,所述方法包括:
获取数据存储操作,所述存储操作中包括待存储数据及所述待存储数据对应的起始行、起始列及起始单元标识,所述待存储的数据为待神经网络处理器处理的数据,包括:模型数据和待处理的时序数据;
将所述待存储数据,逐位写入所述起始行、每个列中的第一存储单元中,其中,所述每个列中的第一存储单元的标识均与所述起始单元标识相同,其中,所述模型数据和所述待处理的时序数据存储于不同的行中;
在所述待存储数据未全部写入所述存储阵列、且所述起始行的第M列中的第一存储单元已写入数据的情况下,更新标识,以定位至每个列中与所述第一存储单元相邻的下一存储单元;
将所述待存储数据中的剩余数据逐位写入所述起始行、每个列中的下一存储单元中,直至所述待存储数据全部写入所述存储阵列;
在所述将所述待存储数据中的剩余数据逐位写入所述起始行、每个列中的下一存储单元中之后,还包括:
在所述待存储数据未全部写入所述存储阵列、且所述起始行的每个列中的全部存储单元已写入数据的情况下,更新行地址,以定位至所述存储阵列中与所述起始行相邻的下一行;
将所述待存储数据中的剩余数据继续逐位写入所述下一行、每个列的起始存储单元中。
6.如权利要求5所述的方法,其中,还包括:
在所述存储阵列的任一存储单元处于读数据状态的情况下,禁止向所述任一存储单元写入新数据。
7.如权利要求5-6任一所述的方法,其中,在所述待存储数据全部写入所述存储阵列之后,还包括:
返回所述待存储数据在所述存储阵列中的结束地址,其中,所述结束地址,包括结束行、结束列及结束单元标识。
8.一种数据读取方法,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述方法包括:
在获取到神经网络处理器发送的数据处理结束消息的情况下,确定所述神经网络处理器当前待获取的目标数据及所述目标数据在存储阵列中的行地址、列地址及存储单元标识,其中,所述目标数据包括神经网络模型参数或语音数据帧;
根据所述目标数据在存储阵列中的行地址、列地址及存储单元标识,确定当前待执行的数据读取操作;
控制所述存储阵列中的第三接口,由所述行地址、列地址及存储单元标识起,从所述存储阵列的各列存储块中同时读取所述存储单元标识对应的各个存储单元中的数据,并将读取的所述目标数据传输给所述神经网络处理器;
所述神经网络处理器当前处理的序列数据中包括K帧数据,其中,K为正整数,所述确定所述神经网络处理器当前待获取的目标数据及所述目标数据在存储阵列中的行地址、列地址及存储单元标识,包括:
确定所述结束消息对应的已处理数据及第一网络层;
在所述已处理数据为所述序列数据中的第K帧的关联数据的情况下,确定所述目标数据包括与所述第一网络层相邻的下一层对应的网络参数、及所述序列数据中第一帧的关联数据,其中,所述关联数据,为对应帧的原始数据或者所述原始数据经过网络层处理后生成的数据。
9.如权利要求8所述的方法,其中,在所述确定所述结束消息对应的已处理数据及第一网络层之后,还包括:
在所述已处理数据为序列数据中的第i帧关联数据情况下,确定所述目标数据为与所述第i帧数据相邻的第i+1帧关联数据,其中,i为小于K的正整数。
10.一种数据读取方法,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述方法包括:
获取数据读取操作,其中,所述读取操作中包括待读取的目标数据、及所述目标数据在存储阵列中的起始行、起始列及起始单元标识,其中,所述目标数据包括神经网络模型参数或语音数据帧;
根据所述起始行、起始列及起始单元标识,确定待启动的数据通道;
启动所述数据通道,由所述起始行、起始列中的起始单元标识开始,从所述存储阵列的各列存储块中同时读取所述存储单元标识对应的各个存储单元中的目标数据,并将读取的所述目标数据传输给神经网络处理器;
其中,每个存储块包含L个存储单元,L为大于1的正整数,所述目标数据所占的存储单元大于M,所述由所述起始行、起始列中的起始单元标识开始,从所述存储阵列的各列存储块中同时读取所述存储单元标识对应的各个存储单元中的目标数据,包括:
通过所述数据通道,读取所述起始行、起始列之后每一列中与所述起始单元标识对应的每个存储单元中的第一数据;
在所述起始单元标识小于L的情况下,更新标识,以定位至每个列中与所述起始单元标识相邻的下一存储单元;
通过所述数据通道,从所述起始行、每个列中的下一存储单元中继续读取数据,直至将所述目标数据全部读取完毕。
11.如权利要求10所述的方法,其中,所述根据所述起始行、起始列及起始单元标识,确定待启动的数据通道,包括:
在所述起始列为第一列、且所述目标数据所占的存储单元大于M的情况下,确定待启动的数据通道为与每一列对应的数据通道。
12.如权利要求10所述的方法,其中,所述根据所述起始行、起始列及起始单元标识,确定待启动的数据通道,包括:
在所述起始列为第j列、且所述目标数据对应的存储单元大于M-j的情况下,确定待启动的初始数据通道为第j个通道至第M个通道、及补充数据通道为第一个通道至第j-1个通道,其中,j为大于1的整数,所述补充数据通道为,在所述第j个通道至第M个通道,从所述起始行中、第j列至第M列中的所述起始单元标识中读取数据后,继续启动的数据通道。
13.如权利要求10所述的方法,其中,在所述读取所述起始行、起始列之后每一列中与所述起始单元标识对应的每个存储单元中的第一数据之后,还包括:
在所述起始单元标识为第L位的情况下,更新行地址,以定位至与所述起始行相邻的下一行;
通过所述数据通道,从所述下一行、每个列中的第一个存储单元中继续读取数据,直至将所述目标数据全部读取完毕。
14.一种数据存储装置,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述装置,包括:
第一获取模块,用于获取待存储的数据及存储阵列中当前可用存储单元的起始地址,其中,所述起始地址中包括起始行、起始列及起始单元标识,所述待存储的数据为待神经网络处理器处理的数据,包括:模型数据和待处理的时序数据;
第一确定模块,用于根据所述起始地址及待存储的数据,确定当前待执行的数据存储操作;
第一控制模块,用于控制所述存储阵列中的第一接口执行所述数据存储操作,以将所述待存储的数据同行、逐个存储块的写入每个存储块内与所述起始单元标识相同的各个存储单元中,其中,所述模型数据和所述待处理的时序数据存储于不同的行中;
所述存储阵列包括多个接口,所述装置还包括:
设置模块,用于在所述多个接口均有待存储数据的情况下,根据所述多个接口分别对应的待存储数据的类型,设置每个接口的优先级,以使优先级高的接口将对应的待存储数据先写入所述存储阵列。
15.如权利要求14所述的装置,其中,所述第一获取模块,具体用于:
获取待存储的数据;
根据所述待存储的数据类型,确定所述存储阵列中的目标存储块;
根据所述目标存储块中已存储数据的结束地址,确定当前可用存储单元的起始地址。
16.如权利要求15所述的装置,其中,所述目标存储块中已存储数据的结束地址包括结束行、结束列及结束单元,所述第一获取模块,具体用于:
在所述结束单元为所述结束列的最后一个存储单元、且所述结束列为第M列的情况下,确定所述起始行为所述结束行的下一行、所述起始列为第一列、且所述起始单元标识为所述下一行、第一列中的第一个存储单元。
17.如权利要求16所述的装置,其中,所述第一获取模块,具体用于:
在所述结束列非第M列的情况下,确定所述起始列为所述结束列的下一列、所述起始行为所述结束行、且所述起始单元标识与所述结束单元的地址相同。
18.一种数据存储装置,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,N和M为正整数,所述装置包括:
第二获取模块,用于获取数据存储操作,所述存储操作中包括待存储数据及所述待存储数据对应的起始行、起始列及起始单元标识,所述待存储的数据为待神经网络处理器处理的数据,包括:模型数据和待处理的时序数据;
第一写入模块,用于将所述待存储数据,逐位写入所述起始行、每个列中的第一存储单元中,其中,所述每个列中的第一存储单元的标识均与所述起始单元标识相同,其中,所述模型数据和所述待处理的时序数据存储于不同的行中;
第一更新模块,用于在所述待存储数据未全部写入所述存储阵列、且所述起始行的第M列中的第一存储单元已写入数据的情况下,更新标识,以定位至每个列中与所述第一存储单元相邻的下一存储单元;
第二写入模块,用于将所述待存储数据中的剩余数据逐位写入所述起始行、每个列中的下一存储单元中,直至所述待存储数据全部写入所述存储阵列;
第二更新模块,用于在所述待存储数据未全部写入所述存储阵列、且所述起始行的每个列中的全部存储单元已写入数据的情况下,更新行地址,以定位至所述存储阵列中与所述起始行相邻的下一行;
第三写入模块,用于将所述待存储数据中的剩余数据继续逐位写入所述下一行、每个列的起始存储单元中。
19.如权利要求18所述的装置,其中,所述装置还包括:
禁止模块,用于在所述存储阵列的任一存储单元处于读数据状态的情况下,禁止向所述任一存储单元写入新数据。
20.如权利要求18-19任一所述的装置,其中,所述装置还包括:
返回模块,用于返回所述待存储数据在所述存储阵列中的结束地址,其中,所述结束地址,包括结束行、结束列及结束单元。
21.一种数据读取装置,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述装置包括:
第二确定模块,用于在获取到神经网络处理器发送的数据处理结束消息的情况下,确定所述神经网络处理器当前待获取的目标数据及所述目标数据在存储阵列中的行地址、列地址及存储单元标识,其中,所述目标数据包括神经网络模型参数或语音数据帧;
第三确定模块,用于根据所述目标数据在存储阵列中的行地址、列地址及存储单元标识,确定当前待执行的数据读取操作;
第二控制模块,用于控制所述存储阵列中的第三接口,由所述行地址、列地址及存储单元标识起,从所述存储阵列的各列存储块中同时读取相同存储单元标识对应的存储单元中的数据,并将读取的所述目标数据传输给所述神经网络处理器;
所述神经网络处理器当前处理的序列数据中包括K帧数据,其中,K为正整数,所述第二确定模块,具体用于:
确定所述结束消息对应的已处理数据及第一网络层;
在所述已处理数据为所述序列数据中的第K帧的关联数据的情况下,确定所述目标数据包括与所述第一网络层相邻的下一层对应的网络参数、及所述序列数据中第一帧的关联数据,其中,所述关联数据,为对应帧的原始数据或者所述原始数据经过网络层处理后生成的数据。
22.如权利要求21所述的装置,其中,所述装置还包括:
第四确定模块,用于在所述已处理数据为序列数据中的第i帧关联数据情况下,确定所述目标数据为与所述第i帧数据相邻的第i+1帧关联数据,其中,i为小于K的正整数。
23.一种数据读取装置,应用于包括N行、M列个存储块的存储阵列、且每个存储块中包括多个存储单元,其中,N和M为正整数,所述装置包括:
第三获取模块,用于获取数据读取操作,其中,所述读取操作中包括待读取的目标数据、及所述目标数据在存储阵列中的起始行、起始列及起始单元标识,其中,所述目标数据包括神经网络模型参数或语音数据帧;
第五确定模块,用于根据所述起始行、起始列及起始单元标识,确定待启动的数据通道;
第一读取模块,用于启动所述数据通道,由所述起始行、起始列中的起始单元标识开始,从所述存储阵列的各列存储块中同时读取所述存储单元标识对应的各个存储单元中的目标数据,并将读取的所述目标数据传输给神经网络处理器;
其中,每个存储块包含L个存储单元,L为大于1的正整数,所述目标数据所占的存储单元大于M,所述第一读取模块,具体用于:
通过所述数据通道,读取所述起始行、起始列之后每一列中与所述起始单元标识对应的每个存储单元中的第一数据;
在所述起始单元标识小于L的情况下,更新标识,以定位至每个列中与所述起始单元标识相邻的下一存储单元;
通过所述数据通道,从所述起始行、每个列中的下一存储单元中继续读取数据,直至将所述目标数据全部读取完毕。
24.如权利要求23所述的装置,其中,所述第五确定模块,具体用于:
在所述起始列为第一列、且所述目标数据所占的存储单元大于M的情况下,确定待启动的数据通道为与每一列对应的数据通道。
25.如权利要求23所述的装置,其中,所述第五确定模块,具体用于:
在所述起始列为第j列、且所述目标数据对应的存储单元大于M-j的情况下,确定待启动的初始数据通道为第j个通道至第M个通道、及补充数据通道为第一个通道至第j-1个通道,其中,j为大于1的整数,所述补充数据通道为,在所述第j个通道至第M个通道,从所述起始行中、第j列至第M列中的所述起始单元标识中读取数据后,继续启动的数据通道。
26.如权利要求23所述的装置,其中,所述装置还包括:
第三更新模块,用于在所述起始单元标识为第L位的情况下,更新行地址,以定位至与所述起始行相邻的下一行;
第二读取模块,用于通过所述数据通道,从所述下一行、每个列中的第一个存储单元中继续读取数据,直至将所述目标数据全部读取完毕。
27.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的数据存储方法,或执行权利要求8-13中任一项所述的数据读取方法。
28.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的数据存储方法,或执行权利要求8-13中任一项所述的数据读取方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011165682.3A CN112328172B (zh) | 2020-10-27 | 2020-10-27 | 数据存储方法、装置及数据读取方法、装置 |
US17/357,579 US20210373799A1 (en) | 2020-10-27 | 2021-06-24 | Method for storing data and method for reading data |
JP2021147028A JP7216781B2 (ja) | 2020-10-27 | 2021-09-09 | データ記憶方法、データ記憶装置、データ読み取り方法及びデータ読み取り装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011165682.3A CN112328172B (zh) | 2020-10-27 | 2020-10-27 | 数据存储方法、装置及数据读取方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112328172A CN112328172A (zh) | 2021-02-05 |
CN112328172B true CN112328172B (zh) | 2022-04-19 |
Family
ID=74296596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011165682.3A Active CN112328172B (zh) | 2020-10-27 | 2020-10-27 | 数据存储方法、装置及数据读取方法、装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210373799A1 (zh) |
JP (1) | JP7216781B2 (zh) |
CN (1) | CN112328172B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596684B (zh) * | 2021-03-08 | 2021-06-22 | 成都启英泰伦科技有限公司 | 一种用于语音深度神经网络运算的数据存储方法 |
CN113031865B (zh) * | 2021-03-23 | 2023-12-22 | 北京和利时系统集成有限公司 | 一种实现数据存储的方法、装置、计算机存储介质及终端 |
CN113487020B (zh) * | 2021-07-08 | 2023-10-17 | 中国科学院半导体研究所 | 用于神经网络计算的参差存储结构及神经网络计算方法 |
CN114356793B (zh) * | 2021-11-25 | 2024-02-27 | 苏州浪潮智能科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115951842A (zh) * | 2023-02-23 | 2023-04-11 | 摩尔线程智能科技(北京)有限责任公司 | 基于单路输入的数据处理装置、方法和计算机设备 |
CN116069260B (zh) * | 2023-02-23 | 2024-03-22 | 摩尔线程智能科技(北京)有限责任公司 | 数据处理装置、方法、计算机设备以及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240453A (ja) * | 1997-02-28 | 1998-09-11 | Nec Corp | ディスクアレイ装置 |
JP2000148656A (ja) | 1998-11-09 | 2000-05-30 | Mitsubishi Electric Corp | メモリシステム |
US8266367B2 (en) * | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
US10089017B2 (en) * | 2011-07-20 | 2018-10-02 | Futurewei Technologies, Inc. | Method and apparatus for SSD storage access |
CN102541774B (zh) * | 2011-12-31 | 2015-02-04 | 中国科学院自动化研究所 | 多粒度并行存储系统与存储器 |
US9916248B2 (en) | 2013-12-12 | 2018-03-13 | Hitachi, Ltd. | Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache |
US20160283864A1 (en) * | 2015-03-27 | 2016-09-29 | Qualcomm Incorporated | Sequential image sampling and storage of fine-tuned features |
JP2018073040A (ja) | 2016-10-27 | 2018-05-10 | 東芝メモリ株式会社 | メモリシステム |
JP2018163434A (ja) | 2017-03-24 | 2018-10-18 | 東芝メモリ株式会社 | メモリシステム |
JP7074453B2 (ja) | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN111368250B (zh) * | 2018-12-26 | 2023-08-15 | 北京欣奕华科技有限公司 | 基于傅里叶变换/逆变换的数据处理系统、方法及设备 |
-
2020
- 2020-10-27 CN CN202011165682.3A patent/CN112328172B/zh active Active
-
2021
- 2021-06-24 US US17/357,579 patent/US20210373799A1/en not_active Abandoned
- 2021-09-09 JP JP2021147028A patent/JP7216781B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
CN112328172A (zh) | 2021-02-05 |
JP7216781B2 (ja) | 2023-02-01 |
US20210373799A1 (en) | 2021-12-02 |
JP2021193591A (ja) | 2021-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112328172B (zh) | 数据存储方法、装置及数据读取方法、装置 | |
EP3698294B1 (en) | Machine learning runtime library for neural network acceleration | |
TWI803663B (zh) | 一種運算裝置和運算方法 | |
US8656117B1 (en) | Read completion data management | |
JP7454529B2 (ja) | 分散型モデルトレーニング装置および方法、電子機器、記憶媒体、ならびに、コンピュータプログラム | |
CN101176159B (zh) | 在dram存储器中处理写屏蔽的方法 | |
US9378533B2 (en) | Central processing unit, GPU simulation method thereof, and computing system including the same | |
CN105138281B (zh) | 一种物理磁盘的共享方法及装置 | |
CN106462496A (zh) | 在基于中央处理单元cpu的系统中使用经压缩存储器控制器cmc来提供存储器带宽压缩 | |
CN104731569A (zh) | 一种数据处理方法及相关设备 | |
CN109902056A (zh) | 一种串行传输的方法、装置、设备及计算机可读存储介质 | |
CN106227506A (zh) | 一种内存压缩系统中的多通道并行压缩解压系统及方法 | |
CN113344074B (zh) | 模型训练方法、装置、设备及存储介质 | |
CN104252416A (zh) | 一种加速器以及数据处理方法 | |
CN116431562B (zh) | 一种基于加速处理器的多头注意力机制融合计算分配方法 | |
JP7256857B2 (ja) | 対話処理方法、装置、電子機器及び記憶媒体 | |
CN102200961B (zh) | 一种动态可重构处理器内子单元的扩展方法 | |
CN112560928B (zh) | 负样本挖掘方法、装置、电子设备及存储介质 | |
CN107025064B (zh) | 一种低延迟高iops的数据访问方法 | |
US11372756B2 (en) | Memory pool management | |
CN108780422A (zh) | 在基于中央处理单元cpu的系统中使用压缩指示符ci提示目录来提供存储器带宽压缩 | |
CN104050131A (zh) | 片上系统及其操作方法 | |
CN114329859A (zh) | 箱体走线配置方法、系统、电子设备和存储介质 | |
CN102521180A (zh) | 一种多通道实时直读存储器结构 | |
CN115080492B (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 |