一种在FPGA上实现缓存数据的系统及方法与流程

文档序号:16900425发布日期:2019-02-19 17:55阅读:1684来源:国知局
一种在FPGA上实现缓存数据的系统及方法与流程

本发明涉及嵌入式系统的缓存技术,特别涉及一种在现场可编程门阵列(fpga)上实现缓存数据的系统及方法。



背景技术:

在fpga上实现大数据量的计算,诸如实现卷积神经网络(cnn)的计算,需要进行大数据量的数据读写。由于fpga的内部模块存储资源有限,诸如cnn计算所需的输入特征数据及参数等大数据量的数据需要存储在外部存储器上,与fpga之间进行读写操作。鉴于集成度和成本考虑,往往选择使用更大容量及更低功耗的动态随机存取存储器(dram)作为外部存储器。图1为现有技术提供的fpga提取缓存数据的结构示意图,如图所示,包括fpga和dram,其中,在fpga中设置有双倍速率同步动态随机存储器控制器(ddrcontroller)及cnn计算单元,ddrcontroller与dram交互,控制将dram中缓存的数据发送给cnn计算单元处理。

采用图1所示的结构为fpga的cnn计算单元提供所需的数据量大的数据,重点关注dram的大容量和低功耗特点,但是,dram也有缺点:其每隔设定的时间就需要刷新(refresh)一次,且与fpga之间传输数据的速度也不高,从而会影响fpga的cnn计算单元的读写数据带宽,降低fpga读写数据的速度。



技术实现要素:

有鉴于此,本发明实施例提供一种在fpga上实现缓存数据的系统,该系统能够提高fpga中的cnn计算单元的读写数据带宽,提高读写数据的速度。

本发明实施例还提供一种在fpga上实现缓存数据的方法,该方法能够提高fpga中的cnn计算单元的读写数据带宽,提高读写数据的速度。

本发明实施例是这样实现的:

一种在现场可编程门阵列上实现缓存数据的系统,包括:双倍速率同步动态随机存储器ddr控制器、第一级缓存单元、第二级缓存单元及卷积神经网络cnn计算单元,其中,

ddr控制器,用于控制将从动态随机存取存储器dram中的数据发送给第二级缓存单元;

第二级缓存单元,用于在ddr控制器的控制下,将来自于dram的数据对应于存储地址进行缓存;

第一级缓存单元,用于根据cnn计算单元在一个以上时钟周期内所需数据对应的存储地址,从第二级缓存单元中获取对应所述存储地址的数据,缓存在设置的数据先进先出队列中;

cnn计算单元,用于从第一级缓存单元中的数据先进先出队列中按顺序提取一个以上时钟周期内所需数据,进行计算。

一种在现场可编程门阵列上实现缓存数据的方法,在fpga的ddr控制器与cnn计算单元之间设置第一级缓存单元及第二级缓存单元,包括:

在ddr控制器的控制下,将从dram中的数据对应于存储地址缓存到设置的第二级缓存单元中;

第一级缓存单元根据cnn计算单元在一个以上时钟周期内所需数据对应的存储地址,从第二级缓存单元中获取对应所述存储地址的数据,缓存在设置的数据先进先出队列中;

cnn计算单元从第一级缓存单元中的数据先进先出队列中按顺序提取一个以上时钟周期内所需数据,进行计算。

如上可见,本发明实施例采用两级缓存单元,使得dram中缓存的数据在ddrcontroller的控制下,先对应存储地址缓存在第二级缓存单元中,第一级缓存单元经过基于cnn计算单元在一个以上的时钟周期所需数据的存储地址仲裁计算,将对应存储地址的数据从第二级缓存单元中提取,并采用数据先进先出队列方式缓存,cnn计算单元直接从数据先进先出队列中将一个时钟或一个以上周期所需数据提取,并进行cnn计算。由于本发明实施例在fpga设置了两级缓存单元,且在第一级缓存单元中仲裁计算后缓存了cnn计算单元一个时钟或一个以上时钟周期所需数据的数据先进先出队列,提供给cnn计算单元,从而有效提升了fpga中的cnn计算单元的读写数据带宽,提高读写数据的速度。

附图说明

图1为现有技术提供的fpga提取缓存数据的结构示意图;

图2为本发明实施例提供在fpga上实现缓存数据的系统结构示意图;

图3为本发明实施例提供在fpga上实现缓存的方法流程图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。

本发明实施例有效提升了fpga中的cnn计算单元的读写数据带宽,提高读写数据的速度,采用两级缓存单元,使得dram中缓存的数据在ddrcontroller的控制下,先对应存储地址缓存在第二级缓存单元中,第一级缓存单元经过基于cnn计算单元在一个以上的时钟周期所需数据的存储地址仲裁计算,将对应存储地址的数据从第二级缓存单元中提取,并采用数据先进先出队列方式缓存,cnn计算单元直接从数据先进先出队列中将一个时钟或一个以上周期所需数据提取,并进行cnn计算。

这样,本发明实施例在fpga设置了两级缓存单元,且在第一级缓存单元中仲裁计算后缓存了cnn计算单元一个时钟或一个以上时钟周期所需数据的数据先进先出队列,提供给cnn计算单元,从而有效提升了fpga中的cnn计算单元实现算力。

图2为本发明实施例提供在fpga上实现缓存数据的系统结构示意图,包括:ddr控制器、第一级缓存单元、第二级缓存单元及cnn计算单元,其中,

ddr控制器,用于控制将从dram中的数据发送给第二级缓存单元;

第二级缓存单元,用于在ddr控制器的控制下,将来自于dram的数据对应于存储地址进行缓存;

第一级缓存单元,用于基于cnn计算单元在一个以上时钟周期内所需数据对应的存储地址,从第二级缓存单元中获取对应所述存储地址的数据,缓存在设置的数据先进先出队列中;

cnn计算单元,用于从第一级缓存单元中的数据先进先出队列中按顺序提取一个以上时钟周期内所需数据,进行计算。

在该系统中,第一级缓存单元,还包括:存储地址计算模块、存储地址先进先出队列、仲裁器及数据先进先出队列,其中,

存储地址计算单元,用于获取cnn计算单元在一个以上时钟周期内所需数据对应的存储地址,计算得到先后顺序,缓存到存储地址先进先出队列中;

存储地址先进先出队列,用于按照先后顺序缓存cnn计算单元在一个以上时钟周期内所需数据对应的存储地址;

仲裁器,用于从存储地址先进先出队列读取cnn计算单元在一个以上时钟周期内所需数据对应的存储地址,判别后将第二级缓存单元中与对应地址匹配的数据,缓存在数据先进先出队列中;

数据先进先出队列,用于按照先后顺序缓存cnn计算单元在一个以上时钟周期内所需数据,并按照先后顺序将cnn计算单元在一个以上时钟周期内所需数据发送给cnn计算单元。

在该系统中,所述cnn计算单元在一个以上时钟周期内所需数据可以为cnn计算单元在一个时钟周期内所需数据,或者在多个时钟周期内所需数据。

在该系统中,所述仲裁器,具体进行仲裁计算,通过cnn计算单元在一个以上时钟周期内所需数据对应的存储地址,与第二级缓存单元中缓存数据的存储地址的计算和比较,就可以确定出cnn计算单元在一个以上时钟周期内所需数据。

在该系统中,存储地址计算单元,从fpga外部或内部的处理单元中获取存储数据的存储规则,按照设置的存储规则计算得到cnn计算单元在一个以上时钟周期内所需数据对应的存储地址。

在这里,所述设置的存储规则是由两个因素决定的,一个是cnn单元进行卷积神经网络计算时采用的方式,以及ddr存储数据的顺序结构。其中,卷积神经网络计算的方式决定了需要使用哪几个数据,而ddr存储数据的顺序结构则能够确定所需要的数据在ddr的相对存储位置。而本发明实施例设置的第二级缓存单元的存储数据的顺序结构与ddr存储数据的顺序结构相同,所以在计算时就可以确定所需数据在第二级存储数据的相对存储位置。

在该系统中,所述第二级缓存单元包括两个第二级子缓存单元,将来自于dram的数据对应于存储地址进行缓存时进行乒乓切换缓存,进一步提升读写数据的效率。

所述两个第二级子缓存单元采用两组n行大小的bram,n为自然数。

在该系统中,cnn运算单元根据bram、数据信号处理dsp资源基于cnn网络模型配置情况选用不同规格的基本运算单元,例如3*3、4*4或16*16等运算单元。

图3为本发明实施例提供在fpga上实现缓存的方法流程图,在fpga的ddr控制器与cnn计算单元之间设置第一级缓存单元及第二级缓存单元,其具体步骤为:

步骤301、在ddr控制器的控制下,将从dram中的数据对应于存储地址缓存到设置的第二级缓存单元中;

步骤302、第一级缓存单元根据cnn计算单元在一个以上时钟周期内所需数据对应的存储地址,从第二级缓存单元中获取对应所述存储地址的数据,缓存在设置的数据先进先出队列中;

步骤303、cnn计算单元从第一级缓存单元中的数据先进先出队列中按顺序提取一个以上时钟周期内所需数据,进行计算。

在该方法中,所述在一个以上时钟周期内所需数据可以为一个时钟周期,或者为一个以上时钟周期。

在该方法中,所述第一级缓存单元包括两个第二级子缓存单元,将来自于dram的数据对应于存储地址进行缓存时进行乒乓切换缓存。

在该方法中,步骤302的具体过程为:

获取cnn计算单元在一个以上时钟周期内所需数据对应的存储地址,计算得到先后顺序,缓存到设置的存储地址先进先出队列中;

从存储地址先进先出队列读取cnn计算单元在一个以上时钟周期内所需数据对应的存储地址,判别后将第二级缓存单元中与对应地址匹配的数据,缓存在数据先进先出队列中。

本发明实施例可以有效提升cnn计算单元和dram之间数据交互带宽,最大可能发挥fpga计算能力,提高算力。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1