一种针对大容量数据的FPGA和基于opencl的FPGA算法制造技术

技术编号:21999956 阅读:19 留言:0更新日期:2019-08-31 05:19
本发明专利技术提供一种针对大容量数据的FPGA和基于opencl的FPGA算法,属于数据计算技术领域。该FPGA包括FPGA控制器,与FPGA控制器指令通信的pcie接口、Flash控制器、DDR控制器和算法模块;还包括由所述Flash控制器控制的Flash存储器和由所述DDR控制器控制的DDR存储器;所述Flash控制器与DDR控制器指令通信,所述DDR控制器与算法模块指令通信;所述pcie接口与Flash控制器之间数据传输,所述Flash控制器与DDR控制器之间数据传输,所述DDR控制器与算法模块之间数据传输。该方法通过在原有的FPGA上设置Flash控制器和Flash存储器,使主机通过pcie接口将大量的待计算数据一次搬移到Flash存储器,再将每个待计算数据搬移到DDR存储器中,避免了多次通过pcie接口搬移数据,实现算法加速效果。

A FPGA and Opencl-based FPGA algorithm for large-capacity data

【技术实现步骤摘要】
一种针对大容量数据的FPGA和基于opencl的FPGA算法
本专利技术属于数据计算
,尤其涉及一种针对大容量数据的FPGA和基于opencl的FPGA算法。
技术介绍
在目前的基于opencl算法架构中,主机通过pcie接口将数据搬移到FPGA外挂的DDR中。kernel算法模块从DDR中取出数据,进行算法逻辑运算,运算完后再将运算好的数据发回DDR中,然后主机通过pcie接口将运算好的数据从DDR中取出。这种现有技术中,由于把DDR作为缓存,存储资源有限,且DDR的硬件比较复杂,增加DDR数量,对FPGA的硬件要求较高,而且由于每次主机收发数据时,pcie接口链路消耗的时间资源比较大,降低了kernel算法模块单位时间内的使用率,限制了算法的性能。对于需要如神经网络算法、图像处理算法等这类大容量的算法,上述技术不能快速的进行算法计算。
技术实现思路
为解决上述技术问题,本专利技术提供一种针对大容量数据的FPGA,采用该FPGA后,能够极大的加快数据的计算速度。本专利技术采用的技术方案如下:一种针对大容量数据的FPGA,包括FPGA控制器,与FPGA控制器指令通信的pcie接口、Flash控制器、DDR控制器和算法模块;还包括由所述Flash控制器控制的Flash存储器和由所述DDR控制器控制的DDR存储器;所述Flash控制器与DDR控制器指令通信,所述DDR控制器与算法模块指令通信;所述pcie接口与Flash控制器之间数据传输,所述Flash控制器与DDR控制器之间数据传输,所述DDR控制器与算法模块之间数据传输。更进一步地,所述Flash控制器控制有至少两个Flash存储器。更进一步地,所述FPGA控制器通过pcie接口与主机指令通信。更进一步地,所述Flash控制器通过pcie接口与主机数据传输。本专利技术还提供一种基于opencl的FPGA算法,实施该算法后,能够极大的加快数据的计算速度。本专利技术采用的技术方案如下:一种基于opencl的FPGA算法,包括以下步骤:Step1:主机通过pcie接口,将至少一个待计算数据搬移到第一Flash存储器;Step2:将一个所述待计算数据从第一Flash存储器搬移到DDR存储器中;Step3:算法模块从DDR存储器中读取一个所述待计算数据,并进行计算,计算完后,算法模块将一个已计算数据发回DDR存储器中;Step4:将DDR存储器中的已计算数据搬移到第二Flash存储器;Step5:重复Step2~Step4,直至第一Flash存储器内的所有待计算数据均经过算法模块计算变为已计算数据存储至第二Flash存储器;Step6:将第二Flash存储器中的已计算数据通过pcie接口,搬移到主机中。更进一步地,Step1中,主机通过dma方式将至少一个待计算数据搬移到第一Flash存储器。更进一步地,Step2包括:Step20:主机通过dma方式向Flash控制器发送读取指令,读取指令中包括源地址和目的地址,所述源地址为第一Flash存储器的内存地址,所述目的地址为DDR存储器的内存地址;Step21:将一个所述待计算数据从第一Flash存储器的内存地址搬移到DDR存储器的内存地址中。更进一步地,Step3包括:Step30:主机通过dma方式,向算法模块发送启动指令,算法模块启动;Step31:算法模块从DDR存储器中读取一个所述待计算数据,并进行计算,计算完后,算法模块将一个已计算数据发回DDR存储器中;Step32:算法模块向主机发送中断。更进一步地,Step4包括:Step40:主机收到中断后,通过dma方式,向Flash控制器发送写指令,所述写指令包括目的地址和源地址,所述目的地址为第二Flash存储器的内存地址,所述源地址为DDR存储器的内存地址;Step41:将已计算数据从DDR存储器的内存地址搬移到第二Flash存储器的内存地址。更进一步地,Step6包括:Step60:主机通过dma方式,向Flash控制器发送读取指令,所述读取指令包括目的地址和源地址,所述目的地址为主机内存地址,所述源地址为第二Flash存储器的内存地址;Step61:将已计算数据通过pcie接口,从第二Flash存储器的内存地址搬移到主机内存地址。本专利技术相比现有技术取得的有益效果如下:在现有的FPGA中是没有Flash控制器和Flash存储器的,DDR存储器中的待计算数据均由主机通过pcie接口搬移进去,DDR存储器不能容纳太多个待计算数据,所以大批量的待计算数据需要进行计算时,需分多次通过pcie接口搬移数据,pcie接口链路消耗的时间资源比较大,降低了算法模块的使用率,限制了算法的性能。本专利技术通过在原有的FPGA上设置Flash控制器和Flash存储器,使主机通过pcie接口将大量的待计算数据一次搬移到Flash存储器,再将每个待计算数据搬移到DDR存储器中,避免了多次通过pcie接口搬移数据,实现算法加速效果。另外,从Flash存储器和DDR存储器之间搬移数据远快于pcie接口和DDR存储器之间搬移数据。附图说明图1为本专利技术一种针对大容量数据的FPGA的原理框图。图2为本专利技术一种针对大容量数据的FPGA的指令通信和数据传输示意图,其中细箭头代表指令通信,粗箭头代表数据传输。图3为本专利技术一种基于上述FPGA的算法加速方法的流程图。附图标记说明:1、FPGA控制器;2、Flash控制器;3、算法模块;4、DDR控制器;5、Flash存储器;6、DDR存储器;7、主机;8、pcie接口。具体实施方式如图1和图2所示,一种针对大容量数据的FPGA,包括FPGA控制器,与FPGA控制器指令通信的pcie接口、Flash控制器、DDR控制器和算法模块;还包括由所述Flash控制器控制的Flash存储器和由所述DDR控制器控制的DDR存储器;所述Flash控制器与DDR控制器指令通信,所述DDR控制器与算法模块指令通信;所述pcie接口与Flash控制器之间数据传输,所述Flash控制器与DDR控制器之间数据传输,所述DDR控制器与算法模块之间数据传输。本实施例中,所述Flash控制器2包括Flash阵列组A控制器和Flash阵列组B控制器;Flash存储器5有96片,其中48片Flash存储器5连接Flash阵列组A控制器上的12个Flash通道,每4片Flash存储器5连接1个Flash通道;另外48片Flash存储器5连接Flash阵列组B控制器上的12个Flash通道,每4片Flash存储器5连接1个Flash通道。本实施例中,所述FPGA控制器通过pcie接口与主机指令通信。本实施例中,所述Flash控制器通过pcie接口与主机数据传输。本实施例中,所述Flash存储器5为NANDFlash。本实施例中,所述算法模块3为kernel模块。本实施例中,48片连接到Flash阵列组A控制器上的Flash存储器5,组成Flash阵列组A,48片连接到Flash阵列组B控制器上的Flash存储器5,组成Flash阵列组B。如图3所示,一种基于opencl的FPGA算法,该加速方法包括以下步骤:Step1:主机7通过pcie接口8,将至少一个待计算数据搬移到Flash阵列组A中本文档来自技高网...

【技术保护点】
1.一种针对大容量数据的FPGA,其特征在于,包括FPGA控制器,与FPGA控制器指令通信的pcie接口、Flash控制器、DDR控制器和算法模块;还包括由所述Flash控制器控制的Flash存储器和由所述DDR控制器控制的DDR存储器;所述Flash控制器与DDR控制器指令通信,所述DDR控制器与算法模块指令通信;所述pcie接口与Flash控制器之间数据传输,所述Flash控制器与DDR控制器之间数据传输,所述DDR控制器与算法模块之间数据传输。

【技术特征摘要】
1.一种针对大容量数据的FPGA,其特征在于,包括FPGA控制器,与FPGA控制器指令通信的pcie接口、Flash控制器、DDR控制器和算法模块;还包括由所述Flash控制器控制的Flash存储器和由所述DDR控制器控制的DDR存储器;所述Flash控制器与DDR控制器指令通信,所述DDR控制器与算法模块指令通信;所述pcie接口与Flash控制器之间数据传输,所述Flash控制器与DDR控制器之间数据传输,所述DDR控制器与算法模块之间数据传输。2.根据权利要求1所述的一种针对大容量数据的FPGA,其特征在于,所述Flash控制器控制有至少两个Flash存储器。3.根据权利要求1或2所述的一种针对大容量数据的FPGA,其特征在于,所述FPGA控制器通过pcie接口与主机指令通信。4.根据权利要求1或2所述的一种针对大容量数据的FPGA,其特征在于,所述Flash控制器通过pcie接口与主机数据传输。5.一种基于opencl的FPGA算法,包括以下步骤:Step1:主机通过pcie接口,将至少一个待计算数据搬移到第一Flash存储器;Step2:将一个所述待计算数据从第一Flash存储器搬移到DDR存储器中;Step3:算法模块从DDR存储器中读取一个所述待计算数据,并进行计算,计算完后,算法模块将一个已计算数据发回DDR存储器中;Step4:将DDR存储器中的已计算数据搬移到第二Flash存储器;Step5:重复Step2~Step4,直至第一Flash存储器内的所有待计算数据均经过算法模块计算变为已计算数据存储至第二Flash存储器;Step6:将第二Flash存储器中的已计算数据通过pcie接口,搬移到主机中。6.根据权利要求5所述的一种基于FPGA的算法加速方...

【专利技术属性】
技术研发人员:杨威锋云飞龙
申请(专利权)人:方一信息科技上海有限公司
类型:发明
国别省市:上海,31

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

1