发明名称 一种基于FPGA的多虚拟队列数据存储的方法
摘要 一种基于FPGA的多虚拟队列数据存储的方法,本发明设计基于FPGA中实现高速网卡数据读写技术,特别是涉及一种多虚拟队列的数据存储方法,本设计采用接收引擎模块、读写模块、块状存储器的多个寄存器组,每个寄存器组都属于其中的一个队列、块状存储器设有读写模式状态转换模块、块状存储器和读写模式状态转换模块均支持三种操作模式,对所有大量的(如2048个)队列中的寄存器使用FPGA中的块RAM进行存储和处理,实现对同一队列的相关寄存器进行同时读写。解决了现有技术中逻辑存储和外部存储的逻辑资源不足、存储速度慢、存储周期长等问题。
申请公布号 CN101599294B 申请公布日期 2012.01.25
申请号 CN200910083892.5 申请日期 2009.05.11
申请人 曙光信息产业(北京)有限公司 发明人 曾宇;方信我;郑臣明;白宗元
分类号 G11C7/00(2006.01)I;G11C11/401(2006.01)I;G11C16/06(2006.01)I 主分类号 G11C7/00(2006.01)I
代理机构 北京安博达知识产权代理有限公司 11271 代理人 徐国文
主权项 一种多虚拟队列数据存储的方法,基于网卡、FPGA,所述FPGA包括块状存储器、MAC控制器模块、DMA控制器、PCIe接口,其特征在于:所述FPGA中设有接收引擎模块、发送引擎模块、读写模块,接收引擎模块通过读写模块与发送引擎模块连接,接收引擎模块实现对从主机发送过来的数据包进行处理分类,发送引擎模块实现将用户发往主机的数据打包,按照相应的时序发送给接口,读写模块实现数据的存储与提取;所述接收引擎模块包括接收有限状态机模块、接收Posted包模块、接收NonPosted包模块、接收Completion包模块;所述发送引擎模块包括发送有限状态机模块、发送Completion包模块;所述块状存储器内虚拟设有已编址的多个寄存器组,多个寄存器组包括发送端寄存器组、接收端寄存器组、中断频率控制寄存器组,每个寄存器虚拟设有多个队列;所述的数据存储的方法步骤如下:a、主机将数据包发送到PCIe接口,由PCIe接口传递到接收引擎模块,由接收引擎模块进行处理,执行b操作;b、接收到的数据包有三种:posted request、non‑posted request、rx completion,由发送有限状态机模块对三种数据包进行处理分类,发送有限状态机模块对posted request执行c操作,发送有限状态机模块对non‑posted request执行d操作,c、posted request由接收Posted包模块通过读写模块分配给寄存器进行写操作,执行c1操作,c1、接收Posted包模块根据数据包中的地址判断是进行逻辑存储还是块状存储器存储,如果是块状存储器存储,执行c2操作,c2、接收Posted包模块根据数据包中的地址判断是对发送端寄存器还是接收端寄存器操作,如果是接收端寄存器操作,执行c3操作,c3、接收Posted包模块根据数据包中的地址判断确定对接收端寄存器的具体块状存储器写操作,再根据地址判断具体要向该块状存储器的哪一个队列进行写操作,执行c4操作;c4、由读写模块将数据写入块状存储器的队列中,以实现数据的写操作,写操作完毕;d、non‑posted request由接收NonPosted包模块通过读写模块分配给寄存器进行读操作,执行d1操作,d1、接收NonPosted包模块根据数据包中的地址判断是进行逻辑存储还是块状存储器存储,如果是块状存储器存储,执行d2操作,d2、接收NonPosted包模块根据数据包中的地址判断是对发送端寄存器还是接收端寄存器操作,如果是接收端寄存器操作,执行d3操作,d3、接收NonPosted包模块根据数据包中的地址判断确定对接收端寄存器的具体块状存储器读操作,再根据数据包中的地址判断具体要向该块状存储器的哪一个队列进行读操作,执行d4操作,d4、由读写模块将数据从块状存储器的队列中读出,以实现数据的读操作,读操作完毕,执行d5操作;d5、读写模块将具体块状存储器的具体队列中读取到的数据通过发送Completion包模块返回给主机。
地址 100084 北京市海淀区水磨西街64号