CN110333827B - 一种数据加载装置和数据加载方法 - Google Patents
一种数据加载装置和数据加载方法 Download PDFInfo
- Publication number
- CN110333827B CN110333827B CN201910624711.9A CN201910624711A CN110333827B CN 110333827 B CN110333827 B CN 110333827B CN 201910624711 A CN201910624711 A CN 201910624711A CN 110333827 B CN110333827 B CN 110333827B
- Authority
- CN
- China
- Prior art keywords
- data
- neural network
- module
- ping
- loading
- 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
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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
- 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/0688—Non-volatile semiconductor memory arrays
-
- 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
-
- 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
Abstract
本发明提供了一种数据加载装置和数据加载方法,该数据加载装置包括:指令解析模块,用于接收来自上位机的数据加载指令;数据分发模块,用于根据数据加载指令,将读取到的用于描述特征图的源数据分发给至少两个数据通道,以通过至少两个数据通道将源数据发送给数据整形模块;数据整形模块,用于根据数据加载指令对接收到的源数据进行整形处理获得整形数据,并将整形数据发送给乒乓读写控制模块;乒乓读写控制模块,用于针对每一个随机存取存储器,在与该随机存取存储器相对应的神经网络计算单元进行计算时,向该随机存取存储器中加载神经网络计算单元下次计算时所使用的整形数据。本方案能够提升神经网络计算的速度。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据加载装置和数据加载方法。
背景技术
随着计算机技术的不断发展与进步,神经网络计算被广泛应用于图像处理领域,以实现人脸识别、指纹识别、图像美化等操作。神经网络计算是数据密集型计算,数据的加载和存储是影响神经网络计算速度的一个重要因素。
目前,主要通过提升存储介质的读写速度来提升数据加载和数据存储的速度,比如利用DDR4内存代替DDR3内存,以此来提升神经网络的计算速度。
针对目前通过更高性能的存储设备来提升数据加载和数据存储速度的方法,虽然能够达到提升神经网络计算速度的目的,但是存储设备的性能具有上限,因此受存储设备性能的制约而无法进一步提升神经网络计算的速度。
发明内容
本发明实施例提供了一种数据加载装置和数据加载方法,能够进一步提升神经网络计算的速度。
第一方面,本发明实施例提供了一种数据加载装置,包括:指令解析模块、数据分发模块、数据整形模块和乒乓读写控制模块;
所述指令解析模块,用于接收来自上位机的数据加载指令;
所述数据分发模块,用于根据所述指令解析模块接收到的所述数据加载指令,将读取到的用于描述特征图的源数据分发给至少两个数据通道,以通过所述至少两个数据通道将所述源数据发送给所述数据整形模块;
所述数据整形模块,用于根据所述指令解析模块接收到的所述数据加载指令,对接收到的所述源数据进行整形处理获得整形数据,以完成对所述特征图的Padding操作,并将所述整形数据发送给所述乒乓读写控制模块;
所述乒乓读写控制模块,用于针对每一个随机存取存储器,在与该随机存取存储器相对应的神经网络计算单元进行计算时,向该随机存取存储器中加载所述神经网络计算单元下次计算时所使用的所述整形数据,其中,每一个所述神经网络计算单元对应有一个数据缓存模块,每一个所述数据缓存模块包括有至少一个所述随机存取存储器。
可选地,
所述指令解析模块,进一步用于根据所述数据加载指令包括的加载行数、顶Padding数目、循环加载移位标志值以及列宽度,通过如下第一公式计算时钟节拍数,以通过时钟节拍控制所述数据分发模块、所述数据整形模块和所述乒乓读写控制模块的工作节拍,并根据已完成时钟节拍的数量确定数据加载是否完成;
所述第一公式包括:
T=(H-P)·(C+1)·L
其中,所述T表征所述时钟节拍数;所述H表征所述加载行数,所述加载行数用于表征需要加载的所述特征图的数据总行数;所述P表征所述顶Padding数目,所述顶Padding数目用于表征在所述特征图顶行需要Padding的行数;所述C表征所述循环加载移位标志值,所述循环加载移位标志值用于表征循环在所述数据缓存模块加载数据的移位跨度;所述L表征加载深度,当所述列宽度的0~2位为0时所述加载深度等于所述列宽度的3~9位,当所述列宽度的0~2位不为0时所述加载深度等于所述列宽度的3~9位加1。
可选地,
所述数据分发模块,用于获取所述数据加载指令包括的数据分享标志值,将在每一个时钟拍读取到的所述源数据平均划分为份数与所述数据分享标志值相等的分发数据,若所述分发数据的位宽小于所述数据通道的位宽,则在所述分发数据的高位补0,并将各份所述分发数据循环分配给每一个所述数据通道,以通过所述数据通道将所述分发数据传输给所述数据整形模块,其中,每一个所述数据缓存模块对应一个所述数据通道,且不同的所述数据缓存模块对应不同的所述数据通道,所述数据通道的位宽与所述随机存取存储器的位宽相等。
可选地,
所述数据整形模块,用于执行如下处理:
S1:将左侧列Padding数据放在低位与从所述数据通道接收到的所述特征图当前行的第一拍数据进行拼接,根据所述随机存取存储器的位宽,将因拼接而溢出的数据暂存在中间寄存器中,并将拼接好的数据发送给所述乒乓读写控制模块;
S2:从数据通道接收下一拍数据,将暂存在所述中间寄存器中的数据放在低位与接收到的所述下一拍数据进行拼接,根据所述随机存取存储器的位宽,将因拼接而溢出的数据暂存在所述中间寄存器中,覆盖所述中间寄存器中原有的数据,并将拼接好的数据发送给所述乒乓读写控制模块,直至从数据通道接收到所述特征图当前行的最后一拍数据;
S3:将所述中间寄存器中的数据放在最低位与放在中间的所述最后一拍数据和放在最高位的右侧列Padding数据进行拼接;
S4:判断拼接后数据的位宽是否大于所述随机存取存储器的位宽,如果是,执行S5,否则执行S6;
S5:将溢出的数据暂存在所述中间寄存器中,将拼接好的数据发送给所述乒乓读写控制模块,并在下一时钟周期将所述中间寄存器中暂存的数据放在最低位并在高位补0后发送给所述乒乓读写控制模块,并结束当前流程;
S6:将拼接好的数据发送给所述乒乓读写控制模块。
可选地,
每一个所述随机存取存储器存放用于神经网络计算的所述特征图的一行数据,且每一个所述数据缓存模块包括的所述随机存取存储器的个数满足如下第二公式;
所述第二公式包括:
其中,所述n表征每一个所述数据缓存模块包括的所述随机存取存储器的个数,所述m表征所述特征图的列数,所述w表征所述源数据的位宽,所述j表征神经网络计算阵列包括的所述神经网络计算单元的个数。
可选地,
所述乒乓读写控制模块,用于针对每一个所述神经网络计算单元,在该神经网络计算单元发出计算完成信号时,将对应于该神经网络计算单元的读指针的值加1,以及在开始加载数据时将乒乓写空闲标志的值置为1,并在数据加载完成后且对应于该神经网络计算单元的写指针的值与所述读指针的值相等时,将所述乒乓写空闲标志的值置为0,且对所述写指针的值加1,其中,指针的值为0表征当前读取或写入的地址为该神经网络计算单元对应的各个所述随机存取存储器的低半部分地址,指针的值为1表征当前读取或写入的地址为该神经网络计算单元对应的各个所述随机存取存储器的高半部分地址,所述乒乓写空闲标志的值为0表征与该神经网络计算单元相对应的所述数据缓存模块可以接收新一次的数据乒乓写入,所述乒乓写空闲标志的值为1表征与该神经网络计算单元相对应的所述数据缓存模块中没有空闲存储空间。
第二方面,本发明实施例还提供了一种基于第一方面所提供的任一数据加载装置的数据加载方法,包括:
利用所述指令解析模块接收来自上位机的数据加载指令;
利用所述数据分发模块,根据所述数据加载指令将读取到的用于描述特征图的源数据分发给至少两个数据通道,以通过所述至少两个数据通道将所述源数据发送给数据整形模块;
利用所述数据整形模块,根据所述数据加载指令对所述源数据进行整形处理,以完成对所述特征图的Padding操作,并将整形处理获得的整形数据发送给乒乓读写控制模块;
针对每一个随机存取存储器,在与该随机存取存储器相对应的神经网络计算单元进行计算时,利用所述乒乓读写控制模块向该随机存取存储器中加载所述神经网络计算单元下次计算时所使用的所述整形数据,其中,每一个所述神经网络计算单元对应有一个数据缓存模块,每一个所述数据缓存模块包括有至少一个所述随机存取存储器。
可选地,所述根据所述数据加载指令将读取到的用于描述特征图的源数据分发给至少两个数据通道,包括:
获取所述数据加载指令包括的数据分享标志值;
将在每一个时钟周期读取到的所述源数据平均划分为份数与所述数据分享标志值相等的分发数据;
判断所述分发数据的位宽是否小于所述数据通道的位宽,其中,每一个所述数据缓存模块对应一个所述数据通道,不同的所述数据缓存模块对应不同的所述数据通道,所述数据通道的位宽与所述随机存取存储器的位宽相等;
若所述分发数据的位宽小于所述数据通道的位宽,则在所述分发数据的高位补0;
将各份所述分发数据循环分配给每一个所述数据通道。
可选地,所述根据所述数据加载指令对所述源数据进行整形处理以完成对所述特征图的Padding操作,并将整形处理获得的整形数据发送给乒乓读写控制模块,包括:
S1:将左侧列Padding数据放在低位与从所述数据通道接收到的所述特征图当前行的第一拍数据进行拼接,根据所述随机存取存储器的位宽,将因拼接而溢出的数据暂存在中间寄存器中,并将拼接好的数据发送给所述乒乓读写控制模块;
S2:从数据通道接收下一拍数据,将暂存在所述中间寄存器中的数据放在低位与接收到的所述下一拍数据进行拼接,根据所述随机存取存储器的位宽,将因拼接而溢出的数据暂存在所述中间寄存器中,覆盖所述中间寄存器中原有的数据,并将拼接好的数据发送给所述乒乓读写控制模块,直至从数据通道接收到所述特征图当前行的最后一拍数据;
S3:将所述中间寄存器中的数据放在最低位与放在中间的所述最后一拍数据和放在最高位的右侧列Padding数据进行拼接;
S4:判断拼接后数据的位宽是否大于所述随机存取存储器的位宽,如果是,执行S5,否则执行S6;
S5:将溢出的数据暂存在所述中间寄存器中,将拼接好的数据发送给所述乒乓读写控制模块,并在下一时钟周期将所述中间寄存器中暂存的数据放在最低位并在高位补0后发送给所述乒乓读写控制模块,并结束当前流程;
S6:将拼接好的数据发送给所述乒乓读写控制模块。
可选地,所述向该随机存取存储器中加载所述神经网络计算单元下次计算时所使用的所述整形数据,包括:
针对每一个所述神经网络计算单元,在该神经网络计算单元发出计算完成信号时,将对应于该神经网络计算单元的读指针的值加1,其中,指针的值为0表征当前读取或写入的地址为该神经网络计算单元对应的各个所述随机存取存储器的低半部分地址,指针的值为1表征当前读取或写入的地址为该神经网络计算单元对应的各个所述随机存取存储器的高半部分地址;
在开始加载数据时将乒乓写空闲标志的值置为1,其中,所述乒乓写空闲标志的值为0表征与该神经网络计算单元相对应的所述数据缓存模块可以接收新一次的数据乒乓写入,所述乒乓写空闲标志的值为1表征与该神经网络计算单元相对应的所述数据缓存模块中没有空闲存储空间;
在数据加载完成后且对应于该神经网络计算单元的写指针的值与所述读指针的值相等时,将所述乒乓写空闲标志的值置为0,且对所述写指针的值加1。
由上述技术方案可知,指令解析模块接收到数据加载指令后,数据分发模块根据数据加载指令读取源数据,并将源数据分发给多个数据通道,由各个数据通道将源数据发送给整形模块,整形模块对源数据进行整形处理获得整形数据,并将所获得整形数据发送给乒乓读写控制模块,由乒乓读写控制模块将整形数据加载到各个神经网络计算单元对应的数据缓存模块中,使得神经网络计算单元在进行当前次计算时向与该神经网络计算单元所对应的随机存取存储器中加载下一次计算时使用的整形数据。由此可见,数据分发模块通过多个数据通道对源数据进行分发传输,从而可以将源数据加载到不同神经网络计算单元所对应的数据缓存模块中,使得各个神经网络计算单元可以同时进行神经网络计算,从而可以提高神经网络计算的速度,另外乒乓读取控制模块可以在神经网络计算单元进行计算时向相应随机读取存储器中加载其下次计算时所使用的整形数据,缩短神经网络计算单元的空闲时间,从而能够进一步提升神经网络计算的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种数据加载装置的示意图;
图2是本发明一个实施例提供的一种数据分发模块进行数据分发的方法流程图;
图3是本发明一个实施例提供的一种数据整形模块进行数据整形的方法流程图;
图4是本发明一个实施例提供的一种数据加载方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种数据加载装置,该装置可以包括:指令解析模块101、数据分发模块102、数据整形模块103和乒乓读写控制模块104;
指令解析模块101可以接收来自上位机的数据加载指令;
数据分发模块102可以根据指令解析模块101接收到的数据加载指令读取用于描述特征图的源数据,并可以将读取到的源数据分发给至少两个数据通道,以通过各个数据通道将源数据发送给数据整形模块103;
数据整形模块103可以根据指令解析模块101接收到的数据加载指令,对接收到的源数据进行整形处理而获得整形数据,已完成对特征图的Padding操作,并可以将所获得的整形数据发送给乒乓读写控制模块104;
乒乓读写控制模块104可以针对每一个随机存取存储器,在与该随机存取存储器相对应的神经网络计算单元进行计算时,向该随机存取存储器中加载该神经网络计算单元下次计算时所使用的整形数据,其中,每一个神经网络计算单元对应有一个数据缓存模块,每一个数据缓存模块包括有至少一个随机存取存储器。
在本发明实施例中,指令解析模块接收到数据加载指令后,数据分发模块根据数据加载指令读取源数据,并将源数据分发给多个数据通道,由各个数据通道将源数据发送给整形模块,整形模块对源数据进行整形处理获得整形数据,并将所获得整形数据发送给乒乓读写控制模块,由乒乓读写控制模块将整形数据加载到各个神经网络计算单元对应的数据缓存模块中,使得神经网络计算单元在进行当前次计算时向与该神经网络计算单元所对应的随机存取存储器中加载下一次计算时使用的整形数据。由此可见,数据分发模块通过多个数据通道对源数据进行分发传输,从而可以将源数据加载到不同神经网络计算单元所对应的数据缓存模块中,使得各个神经网络计算单元可以同时进行神经网络计算,从而可以提高神经网络计算的速度,另外乒乓读取控制模块可以在神经网络计算单元进行计算时向相应随机读取存储器中加载其下次计算时所使用的整形数据,缩短神经网络计算单元的空闲时间,从而能够进一步提升神经网络计算的速度。
可选地,在图1所示数据加载装置的基础,指令解析模块101可以接收来自上位机的数据加载指令,数据加载指令可以包括如下各项字段中的部分或全部:
1、列宽度:指示被加载特征图的列数,即被加载特征图有多少列;
2、数据分享标志:指示源数据同时加载给多少个神经网络计算单元对应的数据缓存模块;
3、加载行数:本次数据加载需要加载特征图的多少行数据,当特征图需要被Padding后使用时,加载行数为Padding行数加上特征图行数之和;
4、顶Padding数目:指示特征图顶行需要Padding的行数;
5、写入指向标志:指示循环加载模式时,第一拍数据加载给哪些神经网络计算单元对应的数据缓存模块;
6、循环加载总个数标志:指示循环加载模式时,总共需要加载哪些神经网络计算单元对应的数据缓存模块;
7、循环加载移位标志:该标志与数据分享标志一起配合使用;比如,根据当前神经网络计算阵列的规格,当循环加载移位标志的值为0,数据分享标志的值为4,写入指向标志的值为2时,代表不循环加载,每一拍数据都写入第2-5个神经网络计算单元对应的数据缓存模块;再比如,当循环加载移位标志的值为1,数据分享标志的值为8,写入指向标志的值为0时,表示第一拍数据加载给第0-7个神经网络计算单元对应的数据缓存模块,第二拍数据加载给第8-15个神经网络计算单元对应的数据缓存模块,第三拍数据又循环加载给第0-7个神经网络计算单元对应的数据缓存模块,第四拍数据加载给第8-15个神经网络计算单元对应的数据缓存模块,如此循环往复,直至数据加载完成;
8、单轮运算数据加载完成标志:有多个神经网络计算单元需要加载数据,不同神经网络计算单元数据加载的完成时间不同,当各个神经网络计算单元均完成数据加载后同时开始计算,该标志的值为0指示当前指令不是最后一条数据加载指令,该标志的值为1指示当前指令是最后一条数据加载指令;
9、数据来源指示标志:神经网络计算框架中由CPU、神经网络计算阵列等多个运算核心,用于神经网络计算单元的数据来源有多种,比如CPU控制的DDR内存和神经网络计算阵列控制的DDR内存等,该标志用于指示数据的来源;
10、DDR地址:指示所要加载的源数据保存在神经网络计算阵列控制的DDR的起始地址;
11、整层运算加载完成标志:指示当前指令是否是神经网络当前层运算的最后一条数据加载指令;
12、左侧Padding数目:指示特征图左侧列需要Padding的列数;
13、右侧Padding数目:指示特征图右侧列需要Padding的列数。
在本发明实施例中,通过定义包括有上述字段的数据加载指令,上位机发送数据加载指令后,可以对数据加载过程进行各种形式的控制,以满足不同用户的个性化需求,从而可以提升用户的使用体验。
可选地,在图1所示数据加载装置的基础上,指令解析模块101可以对上位机发送给神经网络计算阵列的数据加载指令进行解析,进而根据数据加载指令配置其他模块的控制寄存器,使各个模块完成对应的动作。同时,当数据加载指令包括有加载行数、顶Padding数目、循环加载移位标志和列宽度这四个字段时,指令解析模块101可以根据这四个字段的值来计算本次进行数据加载需要的时钟节拍数,以通过时钟节拍控制数据分发模块102、数据整形模块103和乒乓读写控制模块104的工作节拍,并根据已完成时钟节拍的数量和计算出的时钟节拍数来确定数据加载是否完成,以在数据加载完成后向上位机发送加载完成信号。
具体地,指令解析模块101可以通过如下第一公式计算一次加载需要的时钟节拍数,其中,第一公式如下:
T=(H-P)·(C+1)·L
在上述第一公式中,T表征时钟节拍数,H表征加载行数,P表征顶Padding数目,C表征循环加载移位标志值,L表征加载深度,当列宽度的0~2位为0时加载深度等于列宽度的3~9位,当列宽度的0~2位不为0时加载深度等于列宽度的3~9位加1。
可选地,在图1所示数据加载装置的基础上,数据分发模块102可以根据数据加载指令所包括的数据分享标志对源数据进行分发,以将源数据分发给多个数据通道进行传输,进而将源数据加载到多个神经网络计算单元对应的数据缓存模块中。具体地,如图2所示,数据分发模块102可以通过如下步骤将源数据分发给各个数据通道:
步骤201:获取数据加载指令包括的数据分享标志值;
步骤202:将在每一个时钟拍读取到的源数据平均划分为份数与数据分享标志值相等的分发数据;
步骤203:判断分发数据的位宽是否小于数据通道的位宽,如果是,执行步骤204,否则执行步骤205;
步骤204:针对每一个分发数据,在该分发数据的高位补0,使该分发数据的位宽与数据通道的位宽相等;
步骤205:将各个分发数据循环分配给各个数据通道,由各个数据通道将分发数据传输给数据整形模块。
在本发明实施例中,在每一个时钟拍读取到源数据后,数据分发模块根据数据加载指令包括的数据分享标志值,将读取到的数据平均划分为多个分发数据,使得分发数据的个数与数据分享标志值相等。在划分出分发数据后,如果分发数据的位宽小于数据通道的位宽,则在分发数据的高位补0,之后将分发数据循环分配给各个数据通道,由各个数据通道将分发数据传输给数据整形模块进行整形。
在本发明实施例中,每一个神经网络计算单元对应一个数据缓存模块,每一个数据缓存模块包括有多个RAM(Random Access Memory,随机读取存储器),每一个数据缓存模块对应一个数据通道,并且不同的数据缓存模块对应有不同的数据通道,另外数据通道的位宽等于RAM的位宽。针对每一个数据通道,由该数据通道传输给数据整形模块的分发数据,在经过数据整形模块整形处理后会被加载到与该数据通道相对应的数据缓存模块。
在本发明实施例中,数据缓存模块的个数与神经网络计算单元的个数相等,数据通道的个数也与神经网络计算单元的个数相等,且数据通道的位宽等于数据缓存模块中每一个RAM的位宽,保证可以分别向每一个数据缓存模块中加载数据,以供相对应的神经网络计算单元进行神经网络计算,从而保证神经网络计算可以正常进行。另外,数据分发模块将数据划分为多个分发数据后,如果分发数据的位宽与RAM的位宽不同,则对分发数据高位补0,使其的位宽与RAM的位宽相等,进而保证数据通道可以正常对数据进行传输,避免数据传输过程中出现数据丢失或错乱的情况,保证数据传输的准确性。
下面举例说明数据分发模块102通过数据通道对源数据进行传输:
神经网络计算阵列包括有16个神经网络计算单元,每一个神经网络计算单元有一个对应的数据缓存模块,数据缓存模块写入数据位宽64bit。上级数据来源有两个:一是来自CPU控制的DDR,以AXI STREAM总线传输,数据位宽128bit,称该数据来源为数据来源一;二是来自神经网络计算阵列控制的DDR,以内部总线传输,数据位宽256bit,称该数据来源为数据来源二。数据通道的个数为16,数据通道的位宽为64bit。
数据分发模块根据数据加载指令中的数据来源指示标志确定使用数据来源一或数据来源二,并根据数据加载指令中的数据分享标志的值确定将上级数据平均分为多少份循环分配给每一个数据通道,如果均分后的数据位宽小于64bit,则高位补0。
当数据加载指令中的数据分享标志的值为2,数据来源指示标志指示数据来源一时,数据分配情况如下:
数据通道1<=数据来源一[63:0];
数据通道2<=数据来源一[127:64];
数据通道3<=数据来源一[63:0];
数据通道4<=数据来源一[127:64];
……
数据通道13<=数据来源一[63:0];
数据通道14<=数据来源一[127:64];
数据通道15<=数据来源一[63:0];
数据通道16<=数据来源一[127:64]。
当数据加载指令中的数据分享标志的值为4,数据来源指示标志指示数据来源二时,数据分配情况如下:
数据通道1<=数据来源二[63:0];
数据通道2<=数据来源二[127:64];
数据通道3<=数据来源二[191:128];
数据通道4<=数据来源二[255:192];
……
数据通道13<=数据来源二[63:0];
数据通道14<=数据来源二[127:64];
数据通道15<=数据来源二[191:128];
数据通道16<=数据来源二[255:192]。
可选地,在图1所示数据加载装置的基础上,如图3所示,数据整形模块103可以通过如下方式来对数据进行Padding处理:
步骤301:将左侧列Padding数据放在低位与从数据通道接收到的特征图当前行的第一拍数据进行拼接,根据RAM的位宽,将因拼接而溢出的数据暂存在中间寄存器中,并将拼接好的数据发送给数据乒乓读写控制模块;
步骤302:从数据通道接收下一拍数据,将暂存在中间寄存器中的数据放在低位与接收到的下一拍数据进行拼接,根据RAM的位宽,将因拼接而溢出的数据暂存到中间寄存器中对中间寄存器中原来的数据进行覆盖,并将拼接好的数据发送给乒乓读写控制模块;
步骤303:判断是否接收到特征图当前行的最后一拍数据,如果是,执行步骤304,否则执行步骤302;
步骤304:将中间寄存器中的数据放在最低位与放在中间的最后一拍数据和放在最高位的右侧列Padding数据进行拼接;
步骤305:判断拼接后数据的位宽是否大于RAM的位宽,如果是,执行步骤306,否则执行步骤307;
步骤306:将溢出的数据暂存在中间寄存器中,将拼接好的数据发送给乒乓读写控制模块,并在下一时钟周期将中间寄存器中暂存的数据放在最低位并在高位补0后,发送给乒乓读写控制模块,并结束当前流程;
步骤307:将拼接好的数据发送给乒乓读写控制模块。
在本发明实施例中,数据整形模块在从数据通道接收到第一拍数据后,将左侧列Padding数据放在低位与第一拍数据拼接,将因拼接溢出RAM位宽的数据暂存到中间寄存器中,然后将拼接好的数据发送给乒乓读写控制模块,之后在接收到下一拍数据后将中间寄存器中的数据放在低位与接收到的下一拍数据进行拼接,同样将溢出的数据占存到中间寄存器中并将拼接好的数据发送给乒乓读写控制模块,直至接收到最后一拍数据。在将最后一拍数据与中间寄存器中的数据以及右侧列Padding数据进行拼接后,如果拼接后的数据没有溢出RAM的位宽,则在高位补0后直接发送给乒乓读写控制模块,如果拼接后的数据溢出RAM的位宽,则将溢出部分数据暂存到中间寄存器中,在下一时钟周期将中间寄存器中的数据在高位补0后发送给乒乓读写控制模块。这样,数据整形模块通过将拼接后溢出RAM位宽的数据暂存到中间寄存器中,并将下一拍接收到的数据与中间寄存器中的数据进行拼接,在保证数据连续性的同时实现在特征图的左侧和右侧分别添加左侧列Padding数据和右侧列Padding数据。
在本发明实施例中,Padding操作时神经网络计算中常用的操作,用于在特征图的边界上添加空白或具有特定色值的像素行列,以在神经网络计算过程中可以覆盖到特征图中的每一个像素。将Padding操作放在特征图缓存过程中完成,可以降低神经网络计算单元的设计复杂度。
在本发明实施例中,可以根据神经网络计算中使用的最大Padding列数和特征图像素点位宽确定中间寄存器的位宽,比如最大Padding列数为2,特征图像素点位宽为8bit,则中间寄存器的位宽为16bit以上即可,比如中间寄存器的位宽可以为32bit。在数据整形模块开始对数据进行整形时,将数据整形未结束标志置为0,将左侧列Padding数据放在低位与从数据通道接收到的64bit数据拼接,将因拼接溢出的接收数据的高位数据放在中间寄存器的低位,将拼接好的数据写入乒乓读写控制模块,然后从数据通道接收下一拍64bit数据,将中间寄存器中暂存的数据放在低位与新接收到的数据拼接,将新接收数据的溢出高位暂存在中间寄存器中,覆盖上次放入中间寄存器中的数据,循环往复,直至数据通道发来特征图当前行最后一拍数据,将中间寄存器中的数据放在最低位,接收到的数据放在中间,右侧列Padding数据放在最高位进行拼接,如果完成数据拼接后总位宽不超过64bit,则完成当前行数据整形,如果完整数据拼接后总位宽超过64bit,则将数据整形未结束标志置为1,将溢出数据放在中间寄存器中,下一时钟周期将中间寄存器中的数据放在最低位,高位补0后发送给乒乓读写控制模块,完成当前行数据整形。循环往复上述步骤,完成所有输入数据的列Padding操作。
需要说明的是,图3所示Padding操作方法为数据整形模块针对特征图中其中一行所进行的整形操作,数据整形模块可以按照图3的方法分别对特征图中每一行进行Padding操作。另外,根据神经网络计算的需求,如果需要对特征图的列进行Padding操作,数据整形模块同样可以按照图3所示的方法分别对特征图的每一列进行整形操作。
可选地,在图1所示数据加载装置的基础上,神经网络计算阵列中的每一个神经网络计算单元对应有一个数据缓存模块,每一个数据缓存模块由多个RAM组成。数据缓存模块中每个RAM存放用于计算的特征图的一行数据,可以根据所使用芯片的存储资源、神经网络计算阵列规则以及神经网络计算单元计算速度来确定每一个数据缓存模块中RAM的个数、RAM的数据位宽以及RAM的深度,以保证数据加载数据超过神经网络计算单元的计算速度。
在本发明实施例中,每一个数据缓存模块包括的RAM的个数应满足如下第二公式:
在上述第二公式中,n表征每一个数据缓存模块包括的RAM的个数,m表征特征图的列数,w表征源数据的位宽,j表征神经网络计算阵列包括的神经网络计算单元的个数。
在本发明实施例中,特征图有m列,每次加载n行,上位机源数据位宽w字节,神经网络计算阵列包括有j个神经网络计算单元,因此计算所需时间为(n-2)*m,加载时间为(n*m)*j/w,只要(n-2)*m≥(n*m)*j/w即可满足数据加载速度大于或等于神经网络计算单元的计算速度的需求。
例如,神经网络计算阵列包括有16个神经网络计算单元,每一个神经网络计算单元有4个卷积单元,可以同时对一个特征图做四个不同的卷积,特征图每行512个像素点,当做3×3卷积时,当上级数据源在神经网络计算阵列控制的DDR时,根据第二公式(n-2)*512≥(n*512)*16/32,n>=4即可,当上级数据源在CPU控制的DDR时,将数据代入第二公式,得到1-(2/n)≥1,因此要求n在存储资源充足情况下尽量大,综上两种情况,根据存储资源情况,每个数据缓存模块包括有16个RAM,由16个位宽为64bit深度为256的双口RAM并行组成每个数据缓存模块,数据加载速度可以最大限度满足神经网络计算单元的数据加载需求。
在本发明实施例中,根据所使用芯片的存储资源、神经网络计算阵列规则以及神经网络计算单元计算速度来确定每一个数据缓存模块中RAM的个数、RAM的数据位宽以及RAM的深度,保证数据缓存模块能够满足乒乓读写控制模块实现乒乓读写的需求,进而保证数据加载的速度大于或等于神经网络计算单元进行神经网络计算的速度,解决数据加载速度较慢抑制神经网络计算速度的问题,从而可以提高神经网络计算的数据。
可选地,在图1所示数据加载装置的基础上,乒乓读写控制模块104可以通过控制读指针、写指针和乒乓写空闲标识的值来实现乒乓读写,其中,指针的值为0表征当前读取或写入的地址为RAM的低半部分地址,指针的值为1表征当前读取或写入的地址为RAM的高半部分地址,乒乓写空闲标志的值为0表征RAM可以接收新一次的数据乒乓写入,乒乓写空闲标志的值为1表征RAM中没有空闲存储空间。
具体地,针对每一个神经网络计算单元,在该神经网络计算单元发出计算完成信号时,乒乓读写控制模块104可以将对应于该神经网络计算单元的读指针加1,在开始加载数据时将乒乓写空闲标志的置为1,并在数据加载完成后且对应于该神经网络计算单元的写指针的值与读指针的值相等时,将乒乓写空闲标志的置为0,且对写指针的值加1。
在本发明实施例中,当神经网络计算单元发出计算完成信号时,说明神经网络计算单元已经完成了读指针所指向地址中数据的计算,此时将读指针加1使神经网络计算单元开始对RAM的第一半地址进行读取,在开始加载数据后将乒乓写空闲标志的值置为1,以保证向RAM中加载数据的单一操作,在向RAM的第二半地址加载数据完成后,判断写指针的值和读指针的值是否相等,如果相等说明神经网络计算单元已经对RAM第一半地址中的数据计算完成,此时需要向RAM的第一半地址中写入数据,因此将乒乓写空闲标志的值置为0,并对写指针的值加1,开始向RAM的第一半地址中写入数据。
在本发明实施例中,乒乓读写控制模块根据神经网络计算单元的计算进度控制读指针、写指针和乒乓写空闲标志的值,在进行数据读取的同时实现数据写入,使得神经网络计算单元可以连续进行神经网络计算,避免由于数据加载未完成导致神经网络计算单元进行进度中断出现等待的情况,从而可以提高进行神经网络计算的效率。
下面举例说明乒乓读写控制模块实现乒乓数据读写的过程。
乒乓读写控制模块可以包括写入地址重映射单元、读取地址重映射单元和乒乓状态控制单元三个部分。
乒乓状态控制单元中有当前读指针和当前写指针及乒乓写空闲标志,指针值为0代表当前读取或写入的地址应该为每个RAM的低半部分地址,为1代表每个RAM的高半部分地址,乒乓写空闲标志为0代表该缓存模块可以接收新一次的数据乒乓写入,为1代表没有空闲存储空间。当神经网络计算单元发出计算完成信号时,将当前读指针值加1,实现读指针乒乓翻转。当开始加载数据时,将乒乓写空闲标志置1,加载完成后,如果当前读指针指向当前写指针指向的地址,将乒乓写空闲标志置0,并将当前写指针加1,否则保持乒乓写空闲标志和当前写指针的值,直到检测到当前读指针和当前写指针指向地址一致时完成前述操作。
写入地址重映射单元根据当前写指针的值将上级模块发送的写入地址加上段地址,实现写地址重映射。读取地址重映射单元根据当前读指针的值将计算单元发送的读取地址加上段地址,实现读地址重映射。
当神经网络计算单元正在计算时,利用RAM模块深度优势,加载该神经网络计算单元下次运算所使用的数据,实现乒乓流水工作,提高运算效率。举例,特征图每行最多有512个像素点,加上Padding操作,每行最多可能有2+512+2个像素点,每个RAM深度为256,存储一行深度不超过128,因此可以乒乓存储两行像素,地址指针0指向地址范围0-127,地址指针1指向地址范围128-255,使用双口RAM,可以在读取同时实现写入,使用乒乓状态控制单元对16个双口RAM进行读写控制,实现乒乓数据读写。
如图4所示,本发明一个实施例提供了一种基于上述任意一个实施例所提供数据加载装置的数据加载方法,该方法可以包括如下步骤:
步骤401:利用指令解析模块接收来自上位机的数据加载指令;
步骤402:利用数据分发模块,根据数据加载指令将读取到的用于描述特征图的源数据分发给至少两个数据通道,以通过至少两个数据通道将源数据发送给数据整形模块;
步骤403:利用数据整形模块,根据数据加载指令对源数据进行整形处理,以完成对特征图的Padding操作,并将整形处理获得的整形数据发送给乒乓读写控制模块;
步骤404:针对每一个随机存取存储器,在与该随机存取存储器相对应的神经网络计算单元进行计算时,利用乒乓读写控制模块向该随机存取存储器中加载神经网络计算单元下次计算时所使用的整形数据,其中,每一个神经网络计算单元对应有一个数据缓存模块,每一个数据缓存模块包括有至少一个随机存取存储器。
在本发明实施例中,通过多个数据通道对源数据进行分发传输,从而可以将源数据加载到不同神经网络计算单元所对应的数据缓存模块中,使得各个神经网络计算单元可以同时进行神经网络计算,从而可以提高神经网络计算的速度,另外可以在神经网络计算单元进行计算时向相应随机读取存储器中加载其下次计算时所使用的整形数据,缩短神经网络计算单元的空闲时间,从而能够进一步提升神经网络计算的速度。
可选地,在图4所示数据加载方法的基础上,步骤402具体可以通过如下方式实现:
获取数据加载指令包括的数据分享标志值;
将在每一个时钟周期读取到的源数据平均划分为份数与数据分享标志值相等的分发数据;
判断分发数据的位宽是否小于数据通道的位宽,其中,每一个数据缓存模块对应一个数据通道,不同的数据缓存模块对应不同的数据通道,数据通道的位宽与随机存取存储器的位宽相等;
若分发数据的位宽小于数据通道的位宽,则在分发数据的高位补0;
将各份分发数据循环分配给每一个数据通道。
可选地,在图4所示数据加载方法的基础上,步骤403具体可以通过如下方式实现:
S1:将左侧列Padding数据放在低位与从数据通道接收到的特征图当前行的第一拍数据进行拼接,根据随机存取存储器的位宽,将因拼接而溢出的数据暂存在中间寄存器中,并将拼接好的数据发送给乒乓读写控制模块;
S2:从数据通道接收下一拍数据,将暂存在中间寄存器中的数据放在低位与接收到的下一拍数据进行拼接,根据随机存取存储器的位宽,将因拼接而溢出的数据暂存在中间寄存器中,覆盖中间寄存器中原有的数据,并将拼接好的数据发送给乒乓读写控制模块,直至从数据通道接收到特征图当前行的最后一拍数据;
S3:将中间寄存器中的数据放在最低位与放在中间的最后一拍数据和放在最高位的右侧列Padding数据进行拼接;
S4:判断拼接后数据的位宽是否大于随机存取存储器的位宽,如果是,执行S5,否则执行S6;
S5:将溢出的数据暂存在中间寄存器中,将拼接好的数据发送给乒乓读写控制模块,并在下一时钟周期将中间寄存器中暂存的数据放在最低位并在高位补0后发送给乒乓读写控制模块,并结束当前流程;
S6:将拼接好的数据发送给乒乓读写控制模块。
可选地,在图4所示数据加载方法的基础上,步骤404具体可以通过如下方式实现:
针对每一个神经网络计算单元,在该神经网络计算单元发出计算完成信号时,将对应于该神经网络计算单元的读指针的值加1,其中,指针的值为0表征当前读取或写入的地址为该神经网络计算单元对应的各个随机存取存储器的低半部分地址,指针的值为1表征当前读取或写入的地址为该神经网络计算单元对应的各个随机存取存储器的高半部分地址;
在开始加载数据时将乒乓写空闲标志的值置为1,其中,乒乓写空闲标志的值为0表征与该神经网络计算单元相对应的数据缓存模块可以接收新一次的数据乒乓写入,乒乓写空闲标志的值为1表征与该神经网络计算单元相对应的数据缓存模块中没有空闲存储空间;
在数据加载完成后且对应于该神经网络计算单元的写指针的值与读指针的值相等时,将乒乓写空闲标志的值置为0,且对写指针的值加1。
需要说明的是,方法实施例所包括的各个步骤,由于与本发明装置实施例基于同一构思,具体内容可参见本发明装置实施例中的叙述,此处不再赘述。
本发明实施例还提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行上述各个实施例提供的数据加载方法。
本发明实施例还提供了一种存储控制器,包括:处理器、存储器和总线;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行上述各个实施例提供的数据加载方法。
综上所述,本发明各个实施例提供的数据加载装置和数据加载方法,至少具有如下有益效果:
1、在本发明实施例中,指令解析模块接收到数据加载指令后,数据分发模块根据数据加载指令读取源数据,并将源数据分发给多个数据通道,由各个数据通道将源数据发送给整形模块,整形模块对源数据进行整形处理获得整形数据,并将所获得整形数据发送给乒乓读写控制模块,由乒乓读写控制模块将整形数据加载到各个神经网络计算单元对应的数据缓存模块中,使得神经网络计算单元在进行当前次计算时向与该神经网络计算单元所对应的随机存取存储器中加载下一次计算时使用的整形数据。由此可见,数据分发模块通过多个数据通道对源数据进行分发传输,从而可以将源数据加载到不同神经网络计算单元所对应的数据缓存模块中,使得各个神经网络计算单元可以同时进行神经网络计算,从而可以提高神经网络计算的速度,另外乒乓读取控制模块可以在神经网络计算单元进行计算时向相应随机读取存储器中加载其下次计算时所使用的整形数据,缩短神经网络计算单元的空闲时间,从而能够进一步提升神经网络计算的速度。
2、在本发明实施例中,通过定义包括有列宽度、数据分享标志、加载行数、顶Padding数目、写入指向标志、循环加载总个数标志、循环加载移位标志、单轮运算数据加载完成标志、数据来源指示标志、DDR地址、整层运算加载完成标志、左侧Padding数目、右侧Padding数目等字段的数据加载指令,上位机发送数据加载指令后,可以对数据加载过程进行各种形式的控制,以满足不同用户的个性化需求,从而可以提升用户的使用体验。
3、在本发明实施例中,数据缓存模块的个数与神经网络计算单元的个数相等,数据通道的个数也与神经网络计算单元的个数相等,且数据通道的位宽等于数据缓存模块中每一个RAM的位宽,保证可以分别向每一个数据缓存模块中加载数据,以供相对应的神经网络计算单元进行神经网络计算,从而保证神经网络计算可以正常进行。
4、在本发明实施例中,数据分发模块将数据划分为多个分发数据后,如果分发数据的位宽与RAM的位宽不同,则对分发数据高位补0,使其的位宽与RAM的位宽相等,进而保证数据通道可以正常对数据进行传输,避免数据传输过程中出现数据丢失或错乱的情况,保证数据传输的准确性。
5、在本发明实施例中,Padding操作时神经网络计算中常用的操作,用于在特征图的边界上添加空白或具有特定色值的像素行列,以在神经网络计算过程中可以覆盖到特征图中的每一个像素。将Padding操作放在特征图缓存过程中完成,可以降低神经网络计算单元的设计复杂度。
6、在本发明实施例中,根据所使用芯片的存储资源、神经网络计算阵列规则以及神经网络计算单元计算速度来确定每一个数据缓存模块中RAM的个数、RAM的数据位宽以及RAM的深度,保证数据缓存模块能够满足乒乓读写控制模块实现乒乓读写的需求,进而保证数据加载的速度大于或等于神经网络计算单元进行神经网络计算的速度,解决数据加载速度较慢抑制神经网络计算速度的问题,从而可以提高神经网络计算的数据。
7、在本发明实施例中,乒乓读写控制模块根据神经网络计算单元的计算进度控制读指针、写指针和乒乓写空闲标志的值,在进行数据读取的同时实现数据写入,使得神经网络计算单元可以连续进行神经网络计算,避免由于数据加载未完成导致神经网络计算单元进行进度中断出现等待的情况,从而可以提高进行神经网络计算的效率。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (2)
1.一种数据加载装置,其特征在于,包括:指令解析模块、数据分发模块、数据整形模块和乒乓读写控制模块;
所述指令解析模块,用于接收来自上位机的数据加载指令;
所述数据分发模块,用于根据所述指令解析模块接收到的所述数据加载指令,将读取到的用于描述特征图的源数据分发给至少两个数据通道,以通过所述至少两个数据通道将所述源数据发送给所述数据整形模块;
所述数据整形模块,用于根据所述指令解析模块接收到的所述数据加载指令,对接收到的所述源数据进行整形处理获得整形数据,以完成对所述特征图的Padding操作,并将所述整形数据发送给所述乒乓读写控制模块;
所述乒乓读写控制模块,用于针对每一个随机存取存储器,在与该随机存取存储器相对应的神经网络计算单元进行计算时,向该随机存取存储器中加载所述神经网络计算单元下次计算时所使用的所述整形数据,其中,每一个所述神经网络计算单元对应有一个数据缓存模块,每一个所述数据缓存模块包括有至少一个所述随机存取存储器;
所述指令解析模块,进一步用于根据所述数据加载指令包括的加载行数、顶Padding数目、循环加载移位标志值以及列宽度,通过如下第一公式计算时钟节拍数,以通过时钟节拍控制所述数据分发模块、所述数据整形模块和所述乒乓读写控制模块的工作节拍,并根据已完成时钟节拍的数量确定数据加载是否完成;
所述第一公式包括:
T=(H-P)·(C+1)·L
其中,所述T表征所述时钟节拍数;所述H表征所述加载行数,所述加载行数用于表征需要加载的所述特征图的数据总行数;所述P表征所述顶Padding数目,所述顶Padding数目用于表征在所述特征图顶行需要Padding的行数;所述C表征所述循环加载移位标志值,所述循环加载移位标志值用于表征循环在所述数据缓存模块加载数据的移位跨度;所述L表征加载深度,当所述列宽度的0~2位为0时所述加载深度等于所述列宽度的3~9位,当所述列宽度的0~2位不为0时所述加载深度等于所述列宽度的3~9位加1;
所述数据分发模块,用于获取所述数据加载指令包括的数据分享标志值,将在每一个时钟拍读取到的所述源数据平均划分为份数与所述数据分享标志值相等的分发数据,若所述分发数据的位宽小于所述数据通道的位宽,则在所述分发数据的高位补0,并将各份所述分发数据循环分配给每一个所述数据通道,以通过所述数据通道将所述分发数据传输给所述数据整形模块,其中,每一个所述数据缓存模块对应一个所述数据通道,且不同的所述数据缓存模块对应不同的所述数据通道,所述数据通道的位宽与所述随机存取存储器的位宽相等;
所述数据整形模块,用于执行如下处理:
S1:将左侧列Padding数据放在低位与从所述数据通道接收到的所述特征图当前行的第一拍数据进行拼接,根据所述随机存取存储器的位宽,将因拼接而溢出的数据暂存在中间寄存器中,并将拼接好的数据发送给所述乒乓读写控制模块;
S2:从数据通道接收下一拍数据,将暂存在所述中间寄存器中的数据放在低位与接收到的所述下一拍数据进行拼接,根据所述随机存取存储器的位宽,将因拼接而溢出的数据暂存在所述中间寄存器中,覆盖所述中间寄存器中原有的数据,并将拼接好的数据发送给所述乒乓读写控制模块,直至从数据通道接收到所述特征图当前行的最后一拍数据;
S3:将所述中间寄存器中的数据放在最低位与放在中间的所述最后一拍数据和放在最高位的右侧列Padding数据进行拼接;
S4:判断拼接后数据的位宽是否大于所述随机存取存储器的位宽,如果是,执行S5,否则执行S6;
S5:将溢出的数据暂存在所述中间寄存器中,将拼接好的数据发送给所述乒乓读写控制模块,并在下一时钟周期将所述中间寄存器中暂存的数据放在最低位并在高位补0后发送给所述乒乓读写控制模块,并结束当前流程;
S6:将拼接好的数据发送给所述乒乓读写控制模块;
每一个所述随机存取存储器存放用于神经网络计算的所述特征图的一行数据,且每一个所述数据缓存模块包括的所述随机存取存储器的个数满足如下第二公式;
所述第二公式包括:
其中,所述n表征每一个所述数据缓存模块包括的所述随机存取存储器的个数,所述m表征所述特征图的列数,所述w表征所述源数据的位宽,所述j表征神经网络计算阵列包括的所述神经网络计算单元的个数;
所述乒乓读写控制模块,用于针对每一个所述神经网络计算单元,在该神经网络计算单元发出计算完成信号时,将对应于该神经网络计算单元的读指针的值加1,以及在开始加载数据时将乒乓写空闲标志的值置为1,并在数据加载完成后且对应于该神经网络计算单元的写指针的值与所述读指针的值相等时,将所述乒乓写空闲标志的值置为0,且对所述写指针的值加1,其中,指针的值为0表征当前读取或写入的地址为该神经网络计算单元对应的各个所述随机存取存储器的低半部分地址,指针的值为1表征当前读取或写入的地址为该神经网络计算单元对应的各个所述随机存取存储器的高半部分地址,所述乒乓写空闲标志的值为0表征与该神经网络计算单元相对应的所述数据缓存模块可以接收新一次的数据乒乓写入,所述乒乓写空闲标志的值为1表征与该神经网络计算单元相对应的所述数据缓存模块中没有空闲存储空间。
2.一种基于权利要求1所述数据加载装置的数据加载方法,其特征在于,包括:
利用所述指令解析模块接收来自上位机的数据加载指令;
利用所述数据分发模块,根据所述数据加载指令将读取到的用于描述特征图的源数据分发给至少两个数据通道,以通过所述至少两个数据通道将所述源数据发送给数据整形模块;
利用所述数据整形模块,根据所述数据加载指令对所述源数据进行整形处理,以完成对所述特征图的Padding操作,并将整形处理获得的整形数据发送给乒乓读写控制模块;
针对每一个随机存取存储器,在与该随机存取存储器相对应的神经网络计算单元进行计算时,利用所述乒乓读写控制模块向该随机存取存储器中加载所述神经网络计算单元下次计算时所使用的所述整形数据,其中,每一个所述神经网络计算单元对应有一个数据缓存模块,每一个所述数据缓存模块包括有至少一个所述随机存取存储器;
所述根据所述数据加载指令将读取到的用于描述特征图的源数据分发给至少两个数据通道,包括:
获取所述数据加载指令包括的数据分享标志值;
将在每一个时钟周期读取到的所述源数据平均划分为份数与所述数据分享标志值相等的分发数据;
判断所述分发数据的位宽是否小于所述数据通道的位宽,其中,每一个所述数据缓存模块对应一个所述数据通道,不同的所述数据缓存模块对应不同的所述数据通道,所述数据通道的位宽与所述随机存取存储器的位宽相等;
若所述分发数据的位宽小于所述数据通道的位宽,则在所述分发数据的高位补0;
将各份所述分发数据循环分配给每一个所述数据通道;
所述根据所述数据加载指令对所述源数据进行整形处理以完成对所述特征图的Padding操作,并将整形处理获得的整形数据发送给乒乓读写控制模块,包括:
S1:将左侧列Padding数据放在低位与从所述数据通道接收到的所述特征图当前行的第一拍数据进行拼接,根据所述随机存取存储器的位宽,将因拼接而溢出的数据暂存在中间寄存器中,并将拼接好的数据发送给所述乒乓读写控制模块;
S2:从数据通道接收下一拍数据,将暂存在所述中间寄存器中的数据放在低位与接收到的所述下一拍数据进行拼接,根据所述随机存取存储器的位宽,将因拼接而溢出的数据暂存在所述中间寄存器中,覆盖所述中间寄存器中原有的数据,并将拼接好的数据发送给所述乒乓读写控制模块,直至从数据通道接收到所述特征图当前行的最后一拍数据;
S3:将所述中间寄存器中的数据放在最低位与放在中间的所述最后一拍数据和放在最高位的右侧列Padding数据进行拼接;
S4:判断拼接后数据的位宽是否大于所述随机存取存储器的位宽,如果是,执行S5,否则执行S6;
S5:将溢出的数据暂存在所述中间寄存器中,将拼接好的数据发送给所述乒乓读写控制模块,并在下一时钟周期将所述中间寄存器中暂存的数据放在最低位并在高位补0后发送给所述乒乓读写控制模块,并结束当前流程;
S6:将拼接好的数据发送给所述乒乓读写控制模块;
所述向该随机存取存储器中加载所述神经网络计算单元下次计算时所使用的所述整形数据,包括:
针对每一个所述神经网络计算单元,在该神经网络计算单元发出计算完成信号时,将对应于该神经网络计算单元的读指针的值加1,其中,指针的值为0表征当前读取或写入的地址为该神经网络计算单元对应的各个所述随机存取存储器的低半部分地址,指针的值为1表征当前读取或写入的地址为该神经网络计算单元对应的各个所述随机存取存储器的高半部分地址;
在开始加载数据时将乒乓写空闲标志的值置为1,其中,所述乒乓写空闲标志的值为0表征与该神经网络计算单元相对应的所述数据缓存模块可以接收新一次的数据乒乓写入,所述乒乓写空闲标志的值为1表征与该神经网络计算单元相对应的所述数据缓存模块中没有空闲存储空间;
在数据加载完成后且对应于该神经网络计算单元的写指针的值与所述读指针的值相等时,将所述乒乓写空闲标志的值置为0,且对所述写指针的值加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910624711.9A CN110333827B (zh) | 2019-07-11 | 2019-07-11 | 一种数据加载装置和数据加载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910624711.9A CN110333827B (zh) | 2019-07-11 | 2019-07-11 | 一种数据加载装置和数据加载方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110333827A CN110333827A (zh) | 2019-10-15 |
CN110333827B true CN110333827B (zh) | 2023-08-08 |
Family
ID=68146303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910624711.9A Active CN110333827B (zh) | 2019-07-11 | 2019-07-11 | 一种数据加载装置和数据加载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110333827B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111358496A (zh) * | 2020-03-05 | 2020-07-03 | 成都翼诚电子有限公司 | 一种背膘自动测量大角度显像兽用b超机的测量方法 |
WO2022027172A1 (zh) * | 2020-08-03 | 2022-02-10 | 深圳市大疆创新科技有限公司 | 数据处理装置、方法和系统以及神经网络加速器 |
CN112486901A (zh) * | 2020-11-30 | 2021-03-12 | 清华大学 | 基于乒乓缓冲的存内计算系统及方法 |
CN117391149B (zh) * | 2023-11-30 | 2024-03-26 | 爱芯元智半导体(宁波)有限公司 | 神经网络输出数据的处理方法、装置及芯片 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100426681C (zh) * | 2005-05-10 | 2008-10-15 | 华为技术有限公司 | Turbo编码方法及编码装置 |
CN105260773B (zh) * | 2015-09-18 | 2018-01-12 | 华为技术有限公司 | 一种图像处理装置以及图像处理方法 |
CN107704922B (zh) * | 2017-04-19 | 2020-12-08 | 赛灵思公司 | 人工神经网络处理装置 |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
CN109996023B (zh) * | 2017-12-29 | 2021-06-29 | 华为技术有限公司 | 图像处理方法和装置 |
CN109104197B (zh) * | 2018-11-12 | 2022-02-11 | 合肥工业大学 | 应用于卷积神经网络的非还原稀疏数据的编译码电路及其编译码方法 |
CN109550249B (zh) * | 2018-11-28 | 2022-04-29 | 腾讯科技(深圳)有限公司 | 一种目标对象的控制方法、装置及设备 |
CN109902821B (zh) * | 2019-03-06 | 2021-03-16 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置及相关组件 |
CN109934339B (zh) * | 2019-03-06 | 2023-05-16 | 东南大学 | 一种基于一维脉动阵列的通用卷积神经网络加速器 |
-
2019
- 2019-07-11 CN CN201910624711.9A patent/CN110333827B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110333827A (zh) | 2019-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110333827B (zh) | 一种数据加载装置和数据加载方法 | |
US20210201124A1 (en) | Systems and methods for neural network convolutional layer matrix multiplication using cache memory | |
CN104077233B (zh) | 多通道卷积层处理方法和装置 | |
KR100862124B1 (ko) | 하위 포트 카운트 메모리를 이용하여 멀티포트 메모리를시뮬레이션하는 시스템 및 방법 | |
US10346507B2 (en) | Symmetric block sparse matrix-vector multiplication | |
CN103493026B (zh) | 存取存储器单元的方法、分配存储器请求的方法、系统及存储器控制器 | |
CN111240744B (zh) | 一种提高涉及稀疏矩阵并行计算效率的方法和系统 | |
CN113867644B (zh) | 磁盘阵列优化方法、装置、计算机设备及存储介质 | |
WO2021232769A1 (zh) | 一种存储数据的方法及数据处理装置 | |
US9946461B2 (en) | In-flash immutable object processing | |
CN110515872B (zh) | 直接内存存取方法、装置、专用计算芯片及异构计算系统 | |
CN112988080A (zh) | 多数据页同时写入方法、3d闪存装置及计算机存储介质 | |
US20220188380A1 (en) | Data processing method and apparatus applied to graphics processing unit, and electronic device | |
CN112433847B (zh) | 一种OpenCL内核提交的方法及装置 | |
CN116048770A (zh) | 用于进程调度的方法和设备 | |
CN115775199A (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
CN113253939B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US20220100814A1 (en) | Graphics processor and acceleration method thereof | |
CN111078589B (zh) | 一种应用于深度学习计算的数据读取系统、方法及芯片 | |
CN116048377A (zh) | 固态硬盘的数据处理方法及相关设备 | |
CN110162483B (zh) | 静态内存碎片整理方法、装置、计算机设备及存储介质 | |
CN112036370A (zh) | 一种人脸特征比对方法、系统、设备及计算机存储介质 | |
CN112991144B (zh) | 针对神经网络的图像数据进行分块的方法和系统 | |
EP4150467B1 (en) | Two-way interleaving in a three-rank environment | |
CN104268101B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230711 Address after: Building S02, 1036 Gaoxin Langchao Road, Jinan, Shandong 250100 Applicant after: Shandong Inspur Scientific Research Institute Co.,Ltd. Address before: North 6th floor, S05 building, Langchao Science Park, 1036 Langchao Road, hi tech Zone, Jinan City, Shandong Province, 250100 Applicant before: SHANDONG INSPUR ARTIFICIAL INTELLIGENCE RESEARCH INSTITUTE Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |