基于FPGA实现的高带宽NVMeSSD读写系统与方法技术方案

技术编号:37636334 阅读:13 留言:0更新日期:2023-05-20 08:56
本发明专利技术提供了一种FPGA实现的高带宽NVMe SSD读写系统与方法,能够大幅提高读写和存储性能。本发明专利技术利用FPGA内嵌PCIE硬核,以RTL逻辑实现NVMe主机控制器,并搭建整体系统实现对数据流的高速读写以及SSD管理控制。SSD落盘操作全部由逻辑实现,没有增加CPU芯片,满足高带宽存储情况下,降低了硬件成本及PCB尺寸;快速接口数据直接由逻辑写入SSD,没有经过CPU中转,减小了软件开销,提升了速度,不加载文件系统的情况下读写SSD速度可达到2.8GBps,加载文件系统的情况下读写SSD速度可达到2.5GBps。系统的情况下读写SSD速度可达到2.5GBps。系统的情况下读写SSD速度可达到2.5GBps。

【技术实现步骤摘要】
基于FPGA实现的高带宽NVMe SSD读写系统与方法


[0001]本专利技术涉及数据存储
,具体涉及一种基于FPGA实现的高带宽NVMe SSD读写系统与方法。

技术介绍

[0002]FPGA是一种可以重构电路的芯片,是一种硬件可重构的体系结构。它的英文全称是Field Programmable Gate Array,中文名是现场可编程门阵列。通过编程,用户可以随时改变它的应用场景,它可以模拟CPU、GPU等硬件的各种并行运算。通过与目标硬件的高速接口互联,FPGA可以完成目标硬件运行效率比较低的部分,从而在系统层面实现加速。
[0003]NVMExpress(NVMe),或称非易失性内存主机控制器接口规范(英语:Non

VolatileMemoryHostControllerInterfaceSpecification,缩写:NVMHCIS),是一个逻辑设备接口规范。它是与AHCI类似的、基于设备逻辑接口的总线传输协议规范(相当于通讯协议中的应用层),用于访问通过PCI Express(PCIe)总线附加的非易失性存储器介质(例如采用闪存的固态硬盘驱动器),虽然理论上不一定要求PCIe总线协议。
[0004]固态硬盘(Solid State Disk/Solid State Drive,简称SSD,又称固态驱动器),是指利用固态电子存储芯片阵列制成的硬盘,使用电子存储芯片作为介质,通常由控制芯片和闪存芯片(也称FLASH芯片)组成。
[0005]传统方案SATA 3.0 总线接口最大吞吐量仅 600MBps 的带宽限制已难以满足如今日益提高的性能要求,使其成为限制 SSD 性能的关键因素;若要达到高带宽,需多个总线接口组成RAID,同时带来了高成本、高功耗及大面积等缺陷。所述RAID是指多片独立的SSD组成的SSD阵列。
[0006]目前FPGA内比较主流的总线为AXI总线,FPGA芯片厂商提供了大量的AXI总线相关的IP核。因此本方案的难点是将PCIe总线转换为AXI总线,PCIe事务层协议较复杂,而FPGA的特点决定其不擅长实现调度、管理、排序类的逻辑,因此FPGA实现NVMe控制器有一定的难度,不能实现高带宽读写和存储。

技术实现思路

[0007]有鉴于此,本专利技术提供了一种FPGA实现的高带宽NVMe SSD读写系统与方法,能够大幅提高读写和存储性能。
[0008]为实现上述目的,本专利技术的技术方案为:一种基于FPGA实现的高带宽NVMe SSD读写系统,包括FPGA和存储卡;所述FPGA分为PS端和PL端,其中PS端专注于数据记录业务流程控制和文件系统实现,PL端专注于Aurora大数据的采集、缓冲和处理;所述存储卡包括一个PCIe桥和多个SSD;所述系统的对外接口包括慢速接口和快速接口,所述慢速接口为SGMII接口,所述快速接口为GTX接口;文件由FPGA的PS端管理,采用裁剪后的ext4文件系统,所有还未关闭的文件都统一由一个单向链表管理;PS端为每一个快速接口和慢速接口都分别开一个接收线程,再为
快速接口和慢速接口分别开一个记录线程,两个记录线程加锁互斥;针对快速接口,FPGA的PS端接收线程采集每帧的中断信息,并将中断信息通过消息队列发送给记录线程,记录线程接收中断信息并解析,通过文件系统通知PL端将该帧数据写到SSD的指定位置;针对慢速接口,FPGA的PS端接收线程采集每帧的数据,并将数据地址通过消息队列发送给记录线程,记录线程解析数据帧头信息,通过文件系统通知PL端将该帧数据写到SSD的指定位置。
[0009]其中,待写入数据来源于慢速接口和快速接口,读到的数据也通过慢速接口和快速接口导出去,执行慢速接口数据记录、慢速接口数据卸载、快速接口数据记录以及快速接口数据卸载,具体如下:慢速接口数据记录:FPGA的PS端从慢速接口收到数据,通过prp列表的方式将数据写入DDR中,FPGA的PL端再将数据从DDR写到SSD中。所述prp是自定义的数据内存信息,包含数据内存地址和长度;慢速接口数据卸载:FPGA的PL端将数据从SSD读到DDR中, 通过prp列表的方式将数据传到FPGA的PS端,PS端再将数据发往慢速接口;快速接口数据记录:FPGA的PL端从快速接口收到数据,直接写入DDR中,满足中断要求后,传递中断信息给FPGA的PS端,在PS端的控制下,PL端将数据从DDR写到SSD中;快速接口数据卸载:在FPGA的PS端的控制下,PL端将数据从SSD读到DDR中,再从DDR读取数据发往快速接口。
[0010]其中,所述SSD为NVME固态硬盘。
[0011]其中,FPGA的PCIe2.0 x8接口挂接PCIe桥,PCIe桥向下挂接两片SSD,数据记录或卸载时可同时读写两片SSD。
[0012]其中,中断要求连续写入DDR 8MB的数据或者写入DDR一条记录结束,所述一帧数据最大长度为8MB,一条记录可分为多个帧,中断信息包含:基地址、大小和附加信息。
[0013]其中,所述中断信息缓存于FPGA的PL端的FIFO中,缓存次数表示为FIFO现有数据量。
[0014]一种FPGA实现的高带宽NVMe SSD读写方法,,采用本专利技术所述系统实现,包括如下步骤:步骤1,FPGA的PS端数据处理,具体地,FPGA的PS端使用Linux操作系统,加载裁剪后的ext4文件系统,其中ext4文件系统是开源的,可根据实际使用环境作相应裁剪修改;FPGA的PS端按照预定的文件名创建文件,并监控文件大小,当文件大小超用户限制,则关闭该文件,再新建文件;其中创建链表同时管理多个文件,当需要记录SGMII通道数据时,FPGA的PS端从SGMII接口接收数据,且从数据里面提取帧头信息以生成文件名,创建文件将数据写入SSD,写入流程具体为:PS向PL写入prp链表,PL根据prp信息将数据写入DDR中,再将数据从DDR搬到SSD,其中所述prp是自定义的数据内存信息,包含数据内存地址和长度;当需要卸载数据到SGMII通道时,FPGA的PS端可从文件系统请求数据,并通过SGMII接口发送出去,读出流程具体为:PS向PL写入prp链表,PL将数据从SSD搬移到DDR,再根据prp信息将数据发送给PS;当需要记录GTX通道数据时,FPGA的PS端获取到帧头信息后即创建文件,并通过文件系统控制PL端将数据写入SSD;当需要卸载数据到GTX通道时, FPGA的PS端传递指定地址和长度给PL端,PL端从SSD读取数据,并通过GTX接口发送出去;步骤2,FPGA的PL端数据处理,具体地,FPGA的PL端包括控制模块和接口适配模块;
控制模块完成数据记录、数据卸载的控制;接口适配模块包适Aurora控制单元、PCIe控制单元、NVMe Host单元和DDR3控制单元,完成各种接口操作;其中Aurora控制单元负责收发GTX接口数据,PCIe控制单元负责读写SSD数据,NVMe Host单元负责调度PCIe控制单元,DDR3控制单元负责缓存读本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA实现的高带宽NVMeSSD读写系统,其特征在于,包括FPGA和存储卡;所述FPGA分为PS端和PL端,其中PS端专注于数据记录业务流程控制和文件系统实现,PL端专注于Aurora大数据的采集、缓冲和处理;所述存储卡包括一个PCIe桥和多个SSD;所述系统的对外接口包括慢速接口和快速接口,所述慢速接口为SGMII接口,所述快速接口为GTX接口;文件由FPGA的PS端管理,采用裁剪后的ext4文件系统,所有还未关闭的文件都统一由一个单向链表管理;PS端为每一个快速接口和慢速接口都分别开一个接收线程,再为快速接口和慢速接口分别开一个记录线程,两个记录线程加锁互斥;针对快速接口,FPGA的PS端接收线程采集每帧的中断信息,并将中断信息通过消息队列发送给记录线程,记录线程接收中断信息并解析,通过文件系统通知PL端将该帧数据写到SSD的指定位置;针对慢速接口,FPGA的PS端接收线程采集每帧的数据,并将数据地址通过消息队列发送给记录线程,记录线程解析数据帧头信息,通过文件系统通知PL端将该帧数据写到SSD的指定位置。2.如权利要求1所述的系统,其特征在于,待写入数据来源于慢速接口和快速接口,读到的数据也通过慢速接口和快速接口导出去,执行慢速接口数据记录、慢速接口数据卸载、快速接口数据记录以及快速接口数据卸载,具体如下:慢速接口数据记录:FPGA的PS端从慢速接口收到数据,通过prp列表的方式将数据写入DDR中,FPGA的PL端再将数据从DDR写到SSD中;所述prp是自定义的数据内存信息,包含数据内存地址和长度;慢速接口数据卸载:FPGA的PL端将数据从SSD读到DDR中, 通过prp列表的方式将数据传到FPGA的PS端,PS端再将数据发往慢速接口;快速接口数据记录:FPGA的PL端从快速接口收到数据,直接写入DDR中,满足中断要求后,传递中断信息给FPGA的PS端,在PS端的控制下,PL端将数据从DDR写到SSD中;快速接口数据卸载:在FPGA的PS端的控制下,PL端将数据从SSD读到DDR中,再从DDR读取数据发往快速接口。3.如权利要求1或2所述的系统,其特征在于,所述SSD为NVME固态硬盘。4.如权利要求1或2所述的系统,其特征在于,FPGA的PCIe2.0 x8接口挂接PCIe桥,PCIe桥向下挂接两片SSD,数据记录或卸载时可同时读写两片SSD。5.如权利要求1或2所述的系统,其特征在于,中断要求连续写入DDR 8MB的数据或者写入DDR一条记录结束,所述一帧数据最大长度为8MB,一条记录可分为多个帧,中断信息包含:基地址、大小和附加信息。6.如权利要求4所述的系统,其特征在于,所述中断信息缓存于FPGA的PL端的FIFO中,缓存次数表示为FIFO现有数据量。7.一种FPGA实现的高带宽NVMe SSD读写方法,其特征在于,采用如权利要求1

6所述系统实现,包括如下步骤:步骤1,FPGA的PS端数据处理,具体地,FPGA的PS端使用Linux操作系统,加载裁剪后的ext4文件系统,其中ext4文件系统是开源的,可根据实际使用环境作相应裁剪修改;FPGA的PS端按照预定的文件名创建文件,并监控文件大小,当文件大小超用户限制,则关闭该文件,再新建文件;其...

【专利技术属性】
技术研发人员:余强李青松金山丁可
申请(专利权)人:中勍科技股份有限公司
类型:发明
国别省市:

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

1