[发明专利]一种基于FPGA的多虚拟队列数据存储的方法有效
申请号: | 200910083892.5 | 申请日: | 2009-05-11 |
公开(公告)号: | CN101599294A | 公开(公告)日: | 2009-12-09 |
发明(设计)人: | 曾宇;方信我;郑臣明;白宗元 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | G11C7/00 | 分类号: | G11C7/00;G11C11/401;G11C16/06 |
代理公司: | 北京安博达知识产权代理有限公司 | 代理人: | 徐国文 |
地址: | 100084*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 fpga 虚拟 队列 数据 存储 方法 | ||
技术领域
本发明设计基于FPGA中实现高速网卡数据读写技术,特别是涉及一种多虚拟队列的数 据存储方法。
背景技术
虚拟化技术是当前市场的一个热点,采用虚拟化技术可以节省了高达70%的硬件成本。 因为虚拟化技术可以帮助用户合并多种应用工作负荷,在单个系统上运行多种操作环境; 优化应用开发,在单一系统上进行测试和开发;提高系统可用性,在系统之间迁移虚拟环 境。当前设计主要是通过逻辑存储和外部存储,外部存储主要是采用DDR2_SDRAM、FLASH 等存储。
逻辑存储的情况下:在FPGA中实现高速虚拟网卡设计就是采用的虚拟化技术,在虚拟 网卡设计过程中需要用到大量的队列,如2048个,每个队列中又存在大量的32-bit的寄 存器,图1是虚拟网卡芯片按照2048、512、128和64队列设计的资源需求表。为节约设 计成本,FPGA采用Xilinx的XC5VLX50T芯片,该芯片的Slices大小为7200Clbs,经过 计算总共是28Kb的FF。如果按照要求设计2048个虚拟队列,某些寄存器与队列一一对应 的,需要2048个32-bit的寄存器,所占用的总资源大小为1047.6Kb,见图1所示;逻辑 存储适用于占用资源量不多的情况,很显然,这些寄存器若完全使用逻辑单元进行存储, 将会占用全部的逻辑资源,最终会使设计无法实现。
在外部存储的情况下:如果采用DDR2_SDRAM对大量数据进行存储,时钟333MHz,对 DDR2存储器进行写操作,命令字为0,地址维持两个周期有效,写使能维持一个周期有效, 数据在两个周期内给出(每个周期128bits),这样实现了burst length=4的操作,4x 64bit=2x128bit。地址是按照4的倍数给出,也就是说每个64bit一个地址,一次写 操作要使用4个地址。读取命令字为1,地址维持1个周期有效,读使能维持一个周期有 效,地址也是4的倍数,在读数据有效时,数据出现在读数据输出端口上,每128bit维 持1个周期;但是从发出读取命令字到读出数据则需要8个周期,并且DDR2 SDRAM控制 器比较复杂,数据存储周期长、数据存储速度慢且不灵活。
因此,需要设计一种能够提供数据存储速度快、控制便捷灵活、可用于大量数据的存 储的存储机制,以解决上述现有技术的缺陷。
发明内容
为了解决上述逻辑资源不足、存储速度慢、存储周期长等问题,本设计采用一种巧妙 的设计方法对所有大量的(如2048个)队列中的寄存器使用FPGA中的块RAM进行存储和处 理,实现对同一队列的相关寄存器进行同时读写。
为了实现上述目的,本发明提供了一种基于FPGA的多虚拟队列数据存储的方法,包括 网卡、FPGA,所述FPGA包括块状存储器(块ram)、MAC控制器模块、DMA控制器、PCIe 控制器模块,其特殊之处在于:
所述FPGA中设有接收引擎模块(Rx engine)、发送引擎模块(Tx engine)、读写模块 (Reg_Rd_Wr),接收引擎模块(Rx engine)通过读写模块(Reg_Rd_Wr)与发送引擎模块 (Tx engine)连接,接收引擎模块(Rx engine)实现从主机发送过来的数据包进行处理 分类,发送引擎模块(Tx engine)实现将用户发往主机的数据打包,按照相应的时序发 送给核接口,读写模块(Reg_Rd_Wr)实现数据的存储与提取;
所述接收引擎模块(Rx engine)包括接收有限状态机模块(Rx FSM)、接收Posted 包模块(Rx posted)、接收NonPosted包模块(Rx Nonposted)、接收Completion包模块 (Rx Completion);
所述发送引擎模块(Tx engine)包括发送有限状态机模块(Tx FSM)、发送Completion 包模块(Tx Completion);
所述块状存储器(块ram)内虚拟设有已编址的多个寄存器组,多个寄存器组包括发 送端寄存器组(TX reg),接收端寄存器组(RX reg),中断频率控制寄存器组,每个寄存 器虚拟设有多个队列;
一种基于FPGA的多虚拟队列数据存储的方法步骤如下:
a、主机将数据包发送到PCIe模块,由PCIe模块传递到接收引擎模块(Rx engine), 由接收引擎模块(Rx engine)进行处理,执行b操作;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910083892.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用红柱石矿制备化学品氧化铝的方法
- 下一篇:一种纳米铜粉的制备方法