一种基于FPGA片外存储器的数据调用方法技术

技术编号:21201108 阅读:33 留言:0更新日期:2019-05-25 01:36
本发明专利技术提供一种基于FPGA片外存储器的数据调用方法,将特征图的数据逐行按顺序存储在fifo中,每次读写操作,前M个fifo输出当前存储的第一个数据,后M个fifo将当前存储的第一个数据回写到比其编号小L‑M的编号对应的fifo存储的数据尾部,同时,将特征图第L+1行的第一个数据写入第L‑1个fifo存储的数据尾部,将特征图第L+2行的第一个数据写入第L个fifo存储的数据尾部,这样使得fifo不断将数据按序输出fifo组外时,特征图剩下的数据又按序写入到fifo组中等待读取,直到完成整幅特征图的数据遍历;因此,本发明专利技术没有直接去调用FPGA片外存储器的数据,避免了复杂的地址跳变,大大提高了调用FPGA片外存储器数据的效率。

A Data Call Method Based on FPGA Out-of-Chip Memory

The invention provides a data call method based on the off-chip memory of the FPGA, which stores the data of the feature graph in FIFO row by row in order. Each read-write operation, the first M FIFO outputs the first data currently stored, and the latter M FIFO writes back the first data currently stored to the end of the data stored in FIFO corresponding to the number of L_M smaller than its number. At the same time, the L+1 line of the feature graph is stored. The first data is written to the end of the data stored in L_1 fifo, and the first data in line L+2 of the feature graph is written to the end of the data stored in L fifo, so that when FIFO continuously outputs the data out of the FIFO group in sequence, the remaining data of the feature graph is written to the FIFO group in order for reading until the data traversal of the whole feature graph is completed; therefore, the present invention does not directly debug the data. Using the data of the off-chip memory of the FPGA, the complex address jump is avoided, and the efficiency of calling the data of the off-chip memory of the FPGA is greatly improved.

【技术实现步骤摘要】
一种基于FPGA片外存储器的数据调用方法
本专利技术属于图像分类识别
,尤其涉及一种基于FPGA片外存储器的数据调用方法。
技术介绍
近五年来,卷积神经网络在图像特征提取、分类识别等领域取得了很好的效果。由于卷积神经网络架构灵活多变,现在的卷积神经网络主要通过CPU和GPU等软件平台实现。但是,现在的工程应用中,对于系统实时性、低功耗的需求越来越突出,因此利用硬件平台对卷积神经网络的计算进行加速并达到降低系统功耗的目的,日益成为卷积神经网络在工程应用中的研究热点问题。现场可编程门阵列(FPGA)就是其中一种很有前途的解决方案。但是,FPGA的片上存储资源很难满足卷积神经网络中图像数据、参数以及中间结果的存储,因此在利用FPGA加速卷积神经网络的计算时,需要调用FPGA片外的存储资源来满足系统的存储需求。因此,研究FPGA的片外存储的合理调用问题成为当前研究的重点。由于FPGA片外存储的合理调用,可以使得基于FPGA设计的卷积神经网络计算单元,充分发挥卷积神经网络算法中并行计算的特点,最大程度地加速卷积计算,提高系统的吞吐量。因此,FPGA片外存储的调用优化问题已成为未来卷积神经网络在FPGA上实现加速计算发展的重要研究方向之一。现有的关于FPGA片外存储调用的优化方法中,主要是基于FPGA片外存储器的结构进行存储的优化。FPGA的片外存储器中数据分Bank存储,当前的方法主要的思路是将卷积神经网络中不同的输入特征图数据尽量的存储在FPGA片外存储器不同的Bank中,但是这样的方法需要频繁地跳址访问片外存储器,读写效率低下,特别是在遇到大规模的卷积神经网络计算时,更加无法满足数据调用的效率要求。
技术实现思路
为解决上述问题,本专利技术提供一种基于FPGA片外存储器的数据调用方法,没有直接去调用FPGA片外存储器的数据,避免了复杂的地址跳变,大大提高了调用FPGA片外存储器数据的效率。一种基于FPGA片外存储器的数据调用方法,应用于卷积神经网络,包括以下步骤:S1:在FPGA片内存储器中设置fifo组,其中,fifo组包括L个fifo,然后将各fifo依次编号为1至L,并确定需要同时向fifo组外输出数据的fifo的个数M,具体的:L=2×kernel+Stride×(N-2)M=kernel+Stride×(N-1)其中,kernel为预设的卷积核大小,Stride为卷积计算中所采用的滑窗的步长,N为需要同时生成的滑窗数据的组数,其中,N≥2;S2:将FPGA片外存储器中特征图中的前L行数据逐行存入fifo组中,其中,每一个fifo存储特征图的一行数据,且fifo的深度depth大于特征图的尺寸;S3:对fifo组中各fifo进行读写操作,其中所述读写操作具体为:对于从前面数的前M个fifo,每个fifo存储的第一个数据输出fifo组外作为卷积神经网络的滑窗数据,同时第二个数据成为第一个数据;对于倒数的后M个fifo,每个fifo存储的第一个数据写入比其编号小L-M的编号对应的fifo存储的数据尾部,同时,将特征图第L+1行的第一个数据写入第L-1个fifo存储的数据尾部,将特征图第L+2行的第一个数据写入第L个fifo存储的数据尾部,完成fifo组中各fifo的更新;S4:重复步骤S3,将更新后的fifo组中各fifo重新进行读写操作,直到完成特征图所有数据的遍历。有益效果:本专利技术提供一种基于FPGA片外存储器的数据调用方法,将特征图的数据逐行按顺序存储在fifo中,每次读写操作前M个fifo输出当前存储的第一个数据,后M个fifo将当前存储的第一个数据会写到比其编号小L-M的编号对应的fifo存储的数据尾部,同时,将特征图第L+1行的第一个数据写入第L-1个fifo存储的数据尾部,将特征图第L+2行的第一个数据写入第L个fifo存储的数据尾部,这样使得fifo不断将数据按序输出fifo组外时,特征图剩下的数据又按序写入到fifo组中等待读取,直到完成整幅特征图的数据遍历;因此,本专利技术在FPGA片内利用fifo构建fifo组,按照卷积计算所需的数据顺序要求,各fifo将存储于FPGA片外存储器的整幅特征图的数据逐一输出到组外的卷积计算单元,则在这个由FPGA片外存储器到FPGA片内存储器数据调用的过程中,没有直接去调用FPGA片外存储器的数据,避免了复杂的地址跳变,大大提高了调用FPGA片外存储器数据的效率。附图说明图1为本专利技术提供的一种基于FPGA片外存储器的数据调用方法的流程图;图2为本专利技术提供的未进行读写操作时,fifo组中各fifo的数据存储示意图;图3为本专利技术提供的进行第一次读写操作后,fifo组中各fifo的数据存储示意图;图4为本专利技术提供的进行第二次读写操作后,fifo组中各fifo的数据存储示意图;图5为本专利技术提供的进行第三次读写操作后,fifo组中各fifo的数据存储示意图。具体实施方式为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。实施例一参见图1,该图为本实施例提供的一种基于FPGA片外存储器的数据调用方法的流程图。一种基于FPGA片外存储器的数据调用方法,应用于卷积神经网络,特别是卷积神经网络计算中采用滑窗的方式对大小为S×S的特征图的进行数据提取的过程,包括以下步骤:S1:在FPGA片内存储器中设置fifo组,其中,fifo组包括L个fifo(firstinputfirstoutput,先入先出队列),然后将各fifo依次编号为1至L,并确定需要同时向fifo组外输出数据的fifo的个数M,具体的:L=2×kernel+Stride×(N-2)(1)M=kernel+Stride×(N-1)(2)其中,kernel为预设的卷积核大小,Stride为卷积计算中所采用的滑窗的步长,N为需要同时生成的滑窗数据的组数,其中,N≥2。需要说明的是,在计算机中,先入先出队列是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。S2:将FPGA片外存储器中特征图中的前L行数据逐行存入fifo组中,其中,每一个fifo存储特征图的一行数据,且fifo的深度depth大于特征图的尺寸S。S3:对fifo组中各fifo进行读写操作,其中所述读写操作具体为:对于从前面数的前M个fifo,每个fifo存储的第一个数据输出fifo组外作为卷积神经网络的滑窗数据,对于倒数的后M个fifo,每个fifo存储的第一个数据写入比其编号小L-M的编号对应的fifo存储的数据尾部,同时,将特征图第L+1行的第一个数据写入第L-1个fifo存储的数据尾部,将特征图第L+2行的第一个数据写入第L个fifo存储的数据尾部,完成fifo组中各fifo的更新。需要说明的是,对于倒数的后M个fifo,每个fifo存储的第一个数据写入比其编号小L-M的编号对应的fifo存储的数据尾部,就是将第L-M+1个fifo中的第一个数据回写入第一个fifo存储的数据尾部,第L-M+2个fifo中的第一个数据回写入第二个fifo存储的数据尾部,依次类推,直到将第L个fifo中的第一个数据回写入第M个fifo存储数据尾部。需要说明的是,本文档来自技高网
...

【技术保护点】
1.一种基于FPGA片外存储器的数据调用方法,应用于卷积神经网络,其特征在于,包括以下步骤:S1:在FPGA片内存储器中设置fifo组,其中,fifo组包括L个fifo,然后将各fifo依次编号为1至L,并确定需要同时向fifo组外输出数据的fifo的个数M,具体的:L=2×kernel+Stride×(N‑2)M=kernel+Stride×(N‑1)其中,kernel为预设的卷积核大小,Stride为卷积计算中所采用的滑窗的步长,N为需要同时生成的滑窗数据的组数,其中,N≥2;S2:将FPGA片外存储器中特征图中的前L行数据逐行存入fifo组中,其中,每一个fifo存储特征图的一行数据,且fifo的深度depth大于特征图的尺寸;S3:对fifo组中各fifo进行读写操作,其中所述读写操作具体为:对于从前面数的前M个fifo,每个fifo存储的第一个数据输出fifo组外作为卷积神经网络的滑窗数据,同时第二个数据成为第一个数据;对于倒数的后M个fifo,每个fifo存储的第一个数据写入比其编号小L‑M的编号对应的fifo存储的数据尾部,同时,将特征图第L+1行的第一个数据写入第L‑1个fifo存储的数据尾部,将特征图第L+2行的第一个数据写入第L个fifo存储的数据尾部,完成fifo组中各fifo的更新;S4:重复步骤S3,将更新后的fifo组中各fifo重新进行读写操作,直到完成特征图所有数据的遍历。...

【技术特征摘要】
1.一种基于FPGA片外存储器的数据调用方法,应用于卷积神经网络,其特征在于,包括以下步骤:S1:在FPGA片内存储器中设置fifo组,其中,fifo组包括L个fifo,然后将各fifo依次编号为1至L,并确定需要同时向fifo组外输出数据的fifo的个数M,具体的:L=2×kernel+Stride×(N-2)M=kernel+Stride×(N-1)其中,kernel为预设的卷积核大小,Stride为卷积计算中所采用的滑窗的步长,N为需要同时生成的滑窗数据的组数,其中,N≥2;S2:将FPGA片外存储器中特征图中的前L行数据逐行存入fifo组中,其中,每一个fifo存储特征图的一行数据,且fifo的深...

【专利技术属性】
技术研发人员:龙腾魏鑫陈禾陈磊陈亮
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1