技术领域
[0001] 本
发明涉及数据存储技术领域,尤其涉及一种神经网络加速器的存储控制方法、装置、电子设备及介质。
背景技术
[0002] 随机存取
存储器(random access memory,RAM)又称为“随机存储器”是与芯片直接交换数据的内部存储器,它可以随时读写,而且速度很快,通常作为
操作系统或其他正在运行中的程序的临时数据存储媒介。RAM可以分为两类静态RAM(Static RAM,SRAM)和动态RAM(Dynamic RAM,DRAM),DRAM只能将数据保持很短的时间,读写速度也比SRAM慢,常用于系统的内存;SRAM是目前读写速度最快的存储器,但是它也非常昂贵,所以只在要求很苛刻的地方使用,如芯片内部设备的高速缓存等。
[0003] 随着
机器学习和
人工智能的兴起,用以提高运算速度的神经网络加速器受到了广泛的关注,神经网络加速器在工作时,首先将需要处理的数据写入神经网络加速器中设置的片上存储器,再从片上存储器读取数据进行处理,以提高处理效率,其中所述片上存储器通常为SRAM。然而,对于分批处理的数据在片上存储器进行存储时,通常采用反复从片上存储器的0地址存储的方式,例如:片上存储器的存储空间为15(地址0-地址14),第一批次数据存储在片上存储器的地址0~9,那么片上存储器的地址10-14空闲;第二批次数据等第一批次
数据处理完成释放片上存储器的存储空间之后,从地址0开始存储数据,造成了存储空间的浪费,也影响了数据调度效率。
发明内容
[0004] 本发明提供一种神经网络加速器的存储控制方法、装置、电子设备及介质,用以解决
现有技术中存在片上存储器的存储空间浪费,影响数据调度效率的问题。
[0005] 第一方面,本发明公开了一种神经网络加速器的存储控制方法,所述方法包括:
[0006] 针对分批处理的数据中当前待写入片上存储器的批次数据,检测所述片上存储器是否存在剩余存储空间;
[0007] 当检测结果为是时,根据所述剩余存储空间的大小,将所述批次数据写入所述片上存储器。
[0008] 在一个可选的设计中,所述根据所述剩余存储空间的大小,将所述批次数据写入所述片上存储器包括:
[0009] 判断所述剩余存储空间的大小是否不小于所述批次数据的大小;
[0010] 如果是,将所述批次数据写入所述片上存储器;
[0011] 如果否,将所述批次数据中与所述剩余存储空间的大小相等的数据写入所述片上存储器。
[0012] 在一个可选的设计中,所述将所述批次数据中与所述剩余存储空间的大小相等的数据写入所述片上存储器之后,所述方法还包括:
[0013] 检测到所述片上存储器释放存储空间时,将所述批次数据中未写入所述片上存储器的数据写入所述片上存储器。
[0014] 在一个可选的设计中,所述片上存储器为循环寻址片上存储器。
[0015] 第二方面,本发明公开了一种神经网络加速器的存储控制装置,所述装置包括:
[0016] 检测模
块,用于针对分批处理的数据中当前待写入片上存储器的批次数据,检测所述片上存储器是否存在剩余存储空间,如果检测结果为是,触发存储模块;
[0017] 存储模块,用于根据所述剩余存储空间的大小,将所述批次数据写入所述片上存储器。
[0018] 在一个可选的设计中,所述存储模块,具体用于判断所述剩余存储空间的大小是否不小于所述批次数据的大小;如果是,将所述批次数据写入所述片上存储器;如果否,将所述批次数据中与所述剩余存储空间的大小相等的数据写入所述片上存储器。
[0019] 在一个可选的设计中,所述存储模块,还用于检测到所述片上存储器释放存储空间时,将所述批次数据中未写入所述片上存储器的数据写入所述片上存储器。
[0020] 在一个可选的设计中,所述片上存储器为循环寻址片上存储器。
[0021] 第三方面,本发明公开了一种电子设备,包括:存储器和神经网络加速器;
[0022] 所述神经网络加速器,用于读取存储器中的程序,执行下列过程:针对当前待写入片上存储器的批次数据,检测所述片上存储器是否存在剩余存储空间;当检测结果为是时,根据所述剩余存储空间的大小,将所述批次数据写入所述片上存储器。
[0023] 在一个可选的设计中,所述神经网络加速器,具体用于判断所述剩余存储空间的大小是否不小于所述批次数据的大小;如果是,将所述批次数据写入所述片上存储器;如果否,将所述批次数据中与所述剩余存储空间的大小相等的数据写入所述片上存储器。
[0024] 在一个可选的设计中,所述神经网络加速器,还用于检测到所述片上存储器释放存储空间时,将所述批次数据中未写入所述片上存储器的数据写入所述片上存储器。
[0025] 在一个可选的设计中,所述片上存储器为循环寻址片上存储器。
[0026] 第四方面,本发明公开了一种计算机可读存储介质,其存储有可由神经网络加速器执行的
计算机程序,当所述程序在所述神经网络加速器上运行时,使得所述神经网络加速器执行上述第一方面或第一方面的任一种可选的设计中所述的方法。
[0027] 本发明有益效果如下:
[0028] 由于在本发明
实施例中,针对分批处理的数据中当前待写入片上存储器的批次数据,如果检测到片上存储器存在剩余存储空间,根据剩余存储空间的大小,将所述批次数据写入所述片上存储器,避免了在对分批处理的数据在片上存储器进行写入时,仅能在片上存储器写入同一批次数据,造成的存储空间的浪费,提高了片上存储器的存储空间利用率和数据调度效率。
附图说明
[0029] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030] 图1为本发明实施例提供的一种神经网络加速器的存储控制方法示意图;
[0031] 图2为本发明实施例提供的一种神经网路加速器的存储控制装置结构示意图;
[0032] 图3为本发明实施例提供的一种电子设备示意图之一;
[0033] 图4为本发明实施例提供的一种电子设备示意图之二。
具体实施方式
[0034] 为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035] 实施例1:
[0036] 图1为本发明实施例提供的一种神经网络加速器的存储控制方法示意图,所述方法包括:
[0037] S101:针对分批处理的数据中当前待写入片上存储器的批次数据,检测所述片上存储器是否存在剩余存储空间,如果是,进行S102,如果否,返回S101。
[0038] S102:根据所述剩余存储空间的大小,将所述批次数据写入所述片上存储器。
[0039] 本发明实施例提供的神经网络加速器的存储控制方法应用于神经网络加速器,该神经网络加速器中设置有片上存储器,该神经网络加速器可以是现场可编程
门阵列(Field-Programmable Gate Array,FPGA)加速器芯片、图形处理器(Graphics Processing Unit,GPU)芯片、人工智能(Artificial Intelligence,AI)芯片等。
[0040] 为了提高数据调度效率,在神经网络加速器处理数据时,通常需要先将待处理的数据写入神经网络加速器中设置的读写速度较快的片上存储器,再从片上存储器读取数据进行处理,而现有技术对分批处理的数据在片上存储器进行存储时,通常采用反复从片上存储器的0地址存储的方式,在对片上存储器存储的数据进行读取时,也采用反复从片上存储器的0地址读取的方式,导致片上存储器只能同时存储同一批次数据,造成了片上存储器的存储空间的浪费,也影响了数据调度效率,本发明实施例提供的神经网络加速器的存储控制方法,是对分批处理的数据写入片上存储器的存储控制方式进行改进,以提高片上存储器存储空间的利用率和数据调度效率。
[0041] 具体的,在对分批处理的数据进行处理时,神经网络加速器针对当前待写入片上存储器的批次数据,检测片上存储器是否存在剩余存储空间,如果检测结果为否,则说明片上存储器的存储空间全被占用,片上存储器已写满数据,神经网络加速器继续检测片上存储器是否存在剩余存储空间,等待片上存储器中存储的数据被神经网络加速器读取,释放片上存储器的存储空间。
[0042] 如果检测结果为是,则说明片上存储器存在未被占用的存储空间,片上存储器未写满数据,根据片上存储器剩余存储空间的大小,将当前待写入片上存储器的批次数据,写入片上存储器。
[0043] 其中,所述根据所述剩余存储空间的大小,将所述批次数据写入所述片上存储器包括:
[0044] 判断所述剩余存储空间的大小是否不小于所述批次数据的大小;
[0045] 如果是,将所述批次数据写入所述片上存储器;
[0046] 如果否,将所述批次数据中与所述剩余存储空间的大小相等的数据写入所述片上存储器。
[0047] 例如:分批处理的数据包括5个批次数据,依次为第一批次数据、第二批次数据、第三批次数据、第四批次数据和第五批次数据,第一批次数据已写入片上存储器,则确定第二批次数据为当前待写入片上存储器的批次数据,检测片上存储器是否存在剩余存储空间,如果片上存储器存在剩余存储空间,剩余存储空间的大小为5MB,第二批次数据的大小为3MB,将第二批次数据写入片上存储器,此时片上存储器存储有第一批次数据和第二批次数据,确定第三批次数据为当前待写入片上存储器的批次数据,检测到片上存储器存在剩余存储空间,且剩余存储空间的大小为2MB,第三批次数据大小为6MB,根据剩余存储空间的大小,将第三批次数据中2MB的数据写入片上存储器,片上存储器中存储有第一批次数据、第二批次数据和第三批次数据中的2MB,不存在剩余存储空间。等待片上存储器中存储的数据被神经网络加速器读取释放存储空间后,继续进行第三批次剩余数据、第四批次数据和第五批次数据的写入。
[0048] 由于在本发明实施例中,神经网络加速器针对分批处理的数据中当前待写入片上存储器的批次数据,如果检测到片上存储器存在剩余存储空间,根据剩余存储空间的大小,将所述批次数据写入所述片上存储器,避免了在对分批处理的数据在片上存储器进行写入时,仅能在片上存储器写入同一批次数据,造成的存储空间的浪费,提高了片上存储器的存储空间利用率和数据调度效率。
[0049] 实施例2:
[0050] 在上述各实施例的
基础上,在本发明实施例中,为了保证数据存储的准确性,所述将所述批次数据中与所述剩余存储空间的大小相等的数据写入所述片上存储器之后,所述方法还包括:
[0051] 检测到所述片上存储器释放存储空间时,将所述批次数据中未写入所述片上存储器的数据写入所述片上存储器。
[0052] 示例性的:片上存储器的存储空间的大小为10MB,对应的存储地址为地址0-地址9,其中每个地址对应的存储空间为1MB,需要分批处理的数据为5层神经网络的权重和特征图构成的数据,其中每层数据为分批处理的数据的一个批次数据,第一层数据至第五层数据的大小依次为4MB、4MB、6MB、6MB、8MB。(1)当前待写入片上存储器的批次数据为第一层数据,检测到片上存储器存在剩余空间,且剩余空间的大小(10MB)不小于第一层数据的大小(4MB),将第一层数据写入片上存储器,占用片上存储器的地址为地址0-地址3;(2)第一层数据写入片上存储器后,当前待写入片上存储器的批次数据为第二层数据,检测到片上存储器存在剩余空间,且剩余空间的大小(6MB)不小于第二层数据的大小(4MB),将第二层数据写入片上存储器,占用片上存储器的地址为地址4-地址7;(3)第二层数据写入片上存储器后,当前待写入片上存储器的批次数据为第三层数据,检测到片上存储器存在剩余空间,且剩余空间的大小(2MB)小于第三层数据的大小(6MB),根据剩余空间的大小(2MB)将第三层数据中2MB的数据写入片上存储器,占用片上存储器的地址为地址8-地址9,此时片上存储器的存储空间被占满,等待片上存储器存储的数据被神经网络加速器调用,片上存储器释放存储空间后,如第一层数据被调用后,片上存储器释放地址0-地址3的存储空间,片上存储器存在剩余存储空间,大小为4MB不小于第三层数据中未写入片上存储器的数据的大小,将第三层数据中未写入片上存储器的4MB的数据写入片上存储器,占用片上存储器的存储空间为地址0-地址3;(4)第三层数据写入片上存储器后,当前待写入片上存储器的批次数据为第四层数据,如果片上存储器中写入的第二层数据还未被神经网络加速器调用,则片上存储器不存在剩余存储空间,继续对片上存储器是否存在存储空间进行检测,直至片上存储器存在剩余存储空间,根据剩余存储空间的大小,将第四层数据写入片上存储器,直至将第五层数据全部写入片上存储器后结束。
[0053] 优选地,在本发明实施例中,片上存储器为循环寻址片上存储器,例如:片上存储器的存储地址为地址0-地址9,则片上存储器按照地址0、地址1…地址9、地址0、地址1…的方式进行寻址。即片上存储器按照地址0、地址1…地址9、地址0、地址1…的循环方式进行数据的写入和读取。
[0054] 实施例3:
[0055] 图2为本发明实施例提供的一种神经网络加速器的存储控制装置结构示意图,所述装置包括:
[0056] 检测模块21,用于针对分批处理的数据中当前待写入片上存储器的批次数据,检测所述片上存储器是否存在剩余存储空间,如果检测结果为是,触发存储模块;
[0057] 存储模块22,用于根据所述剩余存储空间的大小,将所述批次数据写入所述片上存储器。
[0058] 优选地,所述存储模块22,具体用于判断所述剩余存储空间的大小是否不小于所述批次数据的大小;如果是,将所述批次数据写入所述片上存储器;如果否,将所述批次数据中与所述剩余存储空间的大小相等的数据写入所述片上存储器。
[0059] 优选地,所述存储模块22,还用于检测到所述片上存储器释放存储空间时,将所述批次数据中未写入所述片上存储器的数据写入所述片上存储器。
[0060] 优选地,所述片上存储器为循环寻址片上存储器。
[0061] 实施例4:
[0062] 基于同一发明构思,本发明实施例中还提供了一种电子设备,由于上述电子设备解决问题的原理与存储控制方法相似,因此上述电子设备的实施可以参见方法的实施,重复之处不再赘述。
[0063] 如图3所示,其为本发明实施例提供的电子设备的结构示意图,其中在图3中,总线架构可以包括任意数量的互联的总线和桥,具体有神经网络加速器31代表的一个或多个神经网络加速器31和存储器32代表的存储器32的各种
电路链接在一起。总线架构还可以将诸如
外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线
接口提供接口。存储器32可以存储神经网络加速器31在执行操作时所使用的数据。
[0064] 在本发明实施例提供的电子设备中:
[0065] 所述神经网络加速器31,用于读取存储器32中的程序,执行下列过程:针对当前待写入片上存储器的批次数据,检测所述片上存储器是否存在剩余存储空间;当检测结果为是时,根据所述剩余存储空间的大小,将所述批次数据写入所述片上存储器。
[0066] 优选地,所述神经网络加速器31,具体用于判断所述剩余存储空间的大小是否不小于所述批次数据的大小;如果是,将所述批次数据写入所述片上存储器;如果否,将所述批次数据中与所述剩余存储空间的大小相等的数据写入所述片上存储器。
[0067] 优选地,所述神经网络加速器31,还用于检测到所述片上存储器释放存储空间时,将所述批次数据中未写入所述片上存储器的数据写入所述片上存储器。
[0068] 优选地,所述片上存储器为循环寻址片上存储器。
[0069] 实施例5:
[0070] 在上述各实施例的基础上,本发明实施例还提供了一种电子设备,如图4所示,包括:神经网络加速器41、
通信接口42、存储器43和通信总线44,其中,神经网络加速器41、通信接口42、存储器43通过通信总线44完成相互间的通信;
[0071] 所述存储器43中存储有计算机程序,当所述程序被所述神经网络加速器41执行时,使得所述神经网络加速器41执行上述实施例描述的存储控制方法。
[0072] 在上述各实施例的基础上,本发明实施例还提供了一种计算机存储可读存储介质,所述计算机可读存储介质内存储有可由神经网络加速器执行的计算机程序,当所述程序在所述神经网络加速器上运行时,使得所述神经网络加速器执行上述实施例描述的存储控制方法。
[0073] 在上述各实施例的基础上,本发明实施例还提供了一种计算机程序产品,当神经网络加速器读取并执行所述计算机程序产品时,使得所述神经网络加速器执行上述实施例描述的存储控制方法。
[0074] 对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0075] 本领域内的技术人员应明白,本
申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全
硬件实施例、完全
软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0076] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的
流程图和/或方
框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中
指定的功能的装置。
[0077] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0078] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0079] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和
修改。所以,所附
权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0080] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。