FPGA驱动多块NVMe硬盘实现高速存储

     

        本人设计了一款电路系统,通过FPGA直接驱动6块NVMe硬盘同时工作,从而实现高速数据流的存储和回放,在此分享此设计,也请各位朋友指教。

        该电路使用6U VPX 结构(也有3U VPX、7U VPX、CPCI、PXIE等形态的变种),用于实现超高速实时数据流的存储和回放,主要应用于科学仪器、雷达、电子战、卫星通信等领域。典型应用包括实现对ADC采样数据流的实时记录、DAC重构数据流的供给、光纤或RapidIO等高速数据接口的数据记录等场景。

        其主要技术特性如下。

  • 模块形态:6U VPX 标准板。

  • 主控芯片:1片XILINX XCKU115 + 1片XILINX XC7Z100。

  • 高速缓存:24GB DDR4 SDRAM。

  • 固态存储:6条NVME M.2固态盘(总容量可达48TB)。

  • 阵列模式:支持RAID0/RAID5/RAID6/RAID10动态切换。

  • 存储冗余:RAID5/RAID6模式支持任意1/2块盘丢失。

  • 存储速率:连续写入或读出速率8GBps

  • 数据接口:1条 8x Aurora高速接口(或可定制),2条千兆网(出厂选择使能其中1条)。

  • 控制协议:基于TCP IP/串口的自定义协议。

  • 文件系统:针对高速实时记录而设计的自定义文件系统。

  • 系统监测:提供各类电压/温度/IO状态/存储状态/历史统计等各类信息。

  • 主控软件:提供运行于Windows系统的主控软件以及API。

  • 供电功耗:DC 12V,待机60W,工作最大90W(基于有效的强迫风冷散热)。

  • 工作环境:(温度:-40~80℃)(海拔:<3000米)(湿度:10%~90% (不凝结))

  • 技术服务:充足的技术资料和技术支持,确保用户快速集成和使用。

电路构架如下:

其逻辑构架如下:

主FPGA的 vivado 综合结果:

该系统以Xilinx公司的UltraScale系列芯片XCKU115为核心处理器,基于片上系统SOC构架驱动6块NVME固态硬盘,实现了完整的数据存储服务,包括高速数据接口、存储介质驱动、RAID管理、缓存管理、系统调度、文件系统等各项功能。相较于使用通用计算机体系构架实现的存储系统,改系统能以更大的灵活性、更小的体积、更低的功耗实现更高的性能。

该系统另集成一片Xilinx公司的Zynq7系列芯片XC7Z100,用以扩展出千兆网接口,并实现对主芯片XCKU115的配置管理。本产品还集成总容量为24GB的DDR4 SDRAM+1GB的DDR3 SDRAM用以实现数据缓冲和系统运行支持。

该系统的核心技术是基于SOC FPGA的电路系统设计、芯片数字逻辑设计及固件驱动设计,因此可根据用户需求对PCB物理结构形式进行定制,同时也可根据用户使用场景,对数据接口进行通信协议的定制开发。

该系统采用多种技术手段,为数据存储提供极高的可靠性。

1-对外数据接口可以采用RapidIO协议或TCP协议,通过CRC校验及出错重传机制确保传输正确性;

2-数据缓冲和内部链路均采用充分的检错纠错机制保障数据完整性;

3-基于DDR4 SDRAM内存实现精巧的缓冲区管理,对内存与硬盘之间的数据交互实施充分的校验;

4-通过NVMe接口控制硬盘,基于完善的PCIE协议保证FPGA与硬盘之间数据传输的完整性;

5-共计6块硬盘可组成多种RAID模式,RAID5/6允许任意1~2块硬盘失效,RAID1模式允许3块硬盘失效;

6-硬盘内部的数据完整性由硬盘厂商保障。

在NVME硬盘控制层之上,是实现对6块硬盘进行统一管理的阵列管理层,即RAID层。该RAID模块同时实现了RAID0, RAID1, RAID5, RAID6共计4种模式,并且可以通过指令寄存器设置,实现模式之间的动态切换。

RAID0模式可获得最大存储容量,例如使用6块4TB硬盘的话,全部24TB空间均可用于数据存储。但由于没有冗余备份,一旦某块硬盘丢失或损坏,那么原始数据就不能保全恢复了。

RAID1模式将6块硬盘分为3组,每组2块硬盘,其中1块存储数据,另一块存储备份,即总共使用3块硬盘存储数据,另外3块硬盘存储备份数据,因此允许多达3块硬盘损坏的情况下保全数据。但对于3个分组,每个分组中至少需要存留1块有效硬盘。如果使用6块4TB硬盘,那么系统实际有效存储容量只有一半,即为12TB,而非24TB。

RAID5模式使用5块硬盘存储数据,1块硬盘存储冗余校验。系统允许6块硬盘中任意1块硬盘丢失或损坏,其余5块硬盘可恢复出原始数据。如果使用6块4TB硬盘,那么系统实际有效存储容量为5块硬盘容量,即为20TB,而非24TB。

RAID6模式使用4块硬盘存储数据,2块硬盘存储冗余校验。系统允许6块硬盘中任意2块硬盘丢失或损坏,其余4块硬盘可恢复出原始数据。如果使用6块4TB硬盘,那么系统实际有效存储容量为4块硬盘容量,即为16TB,而非24TB。

各RAID模式的硬盘组织形式示意如下。

该系统为用户提供运行于Windows平台的示例监控软件,接口协议开放,软件通过计算机的千兆网接口或串口与系统硬件互联。软件提供文件操作、硬件状态监测、实时数据监测等功能,可实现文件的建立、删除、格式化、命名、写入、导出等各项功能,可实时监测硬件温度、电压、存储容量、读写速率等各项参数。可选附加使用时域、频谱、瀑布图、能量图等多种形式观察接口和存盘数据,可基于多种频谱分析策略实时分析数据。

用户系统通过千兆网与本系统通信,其通信方式基于TCP/IP协议并传输本文所叙述的自定义数据流实现各种管理功能。

用户系统可通过网络与本系统直接连接,也可以通过路由器连接。

通过网线直接连接时,本产品IP地址为 192.168.0.206,用户系统需处于同一网段且使用不同的IP地址,例如配置为 192.169.0.100。

网络使用2个端口:指令端口和数据端口。指令端口号为 4000,用于传输各种控制指令;数据端口号为 8123,用于导入导出数据。指令接口采用固定264字节帧长,同时使用约定的固定字符作为“帧头”用于帧之间的断界。数据端口使用纯净的数据流,没有做帧或包的定义。如下图所示。

用户高速数据通过背板或光纤上的 8x AURORA接口与本系统实现输入输出。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值