CN116136748B - 基于FPGA实现的高带宽NVMe SSD读写系统与方法 - Google Patents

基于FPGA实现的高带宽NVMe SSD读写系统与方法 Download PDF

Info

Publication number
CN116136748B
CN116136748B CN202310402710.6A CN202310402710A CN116136748B CN 116136748 B CN116136748 B CN 116136748B CN 202310402710 A CN202310402710 A CN 202310402710A CN 116136748 B CN116136748 B CN 116136748B
Authority
CN
China
Prior art keywords
data
file
fpga
interface
ssd
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310402710.6A
Other languages
English (en)
Other versions
CN116136748A (zh
Inventor
余强
李青松
金山
丁可
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongying Technology Co ltd
Original Assignee
Zhongying Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongying Technology Co ltd filed Critical Zhongying Technology Co ltd
Priority to CN202310402710.6A priority Critical patent/CN116136748B/zh
Publication of CN116136748A publication Critical patent/CN116136748A/zh
Application granted granted Critical
Publication of CN116136748B publication Critical patent/CN116136748B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

基于FPGA实现的高带宽NVMe SSD读写系统与方法
技术领域
本发明涉及数据存储技术领域,具体涉及一种基于FPGA实现的高带宽NVMe SSD读写系统与方法。
背景技术
FPGA是一种可以重构电路的芯片,是一种硬件可重构的体系结构。它的英文全称是Field Programmable Gate Array,中文名是现场可编程门阵列。通过编程,用户可以随时改变它的应用场景,它可以模拟CPU、GPU等硬件的各种并行运算。通过与目标硬件的高速接口互联,FPGA可以完成目标硬件运行效率比较低的部分,从而在系统层面实现加速。
NVMExpress(NVMe),或称非易失性内存主机控制器接口规范(英语:Non-VolatileMemoryHostControllerInterfaceSpecification,缩写:NVMHCIS),是一个逻辑设备接口规范。它是与AHCI类似的、基于设备逻辑接口的总线传输协议规范(相当于通讯协议中的应用层),用于访问通过PCI Express(PCIe)总线附加的非易失性存储器介质(例如采用闪存的固态硬盘驱动器),虽然理论上不一定要求PCIe总线协议。
固态硬盘(Solid State Disk/Solid State Drive,简称SSD,又称固态驱动器),是指利用固态电子存储芯片阵列制成的硬盘,使用电子存储芯片作为介质,通常由控制芯片和闪存芯片(也称FLASH芯片)组成。
传统方案SATA 3.0 总线接口最大吞吐量仅 600MBps 的带宽限制已难以
满足如今日益提高的性能要求,使其成为限制 SSD 性能的关键因素;若要达到高带宽,需多个总线接口组成RAID,同时带来了高成本、高功耗及大面积等缺陷。所述RAID是指多片独立的SSD组成的SSD阵列。
目前FPGA内比较主流的总线为AXI总线,FPGA芯片厂商提供了大量的AXI总线相关的IP核。因此本方案的难点是将PCIe总线转换为AXI总线,PCIe事务层协议较复杂,而FPGA的特点决定其不擅长实现调度、管理、排序类的逻辑,因此FPGA实现NVMe控制器有一定的难度,不能实现高带宽读写和存储。
发明内容
有鉴于此,本发明提供了一种FPGA实现的高带宽NVMe SSD读写系统与方法,能够大幅提高读写和存储性能。
为实现上述目的,本发明的技术方案为:
一种基于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的指定位置。
其中,待写入数据来源于慢速接口和快速接口,读到的数据也通过慢速接口和快速接口导出去,执行慢速接口数据记录、慢速接口数据卸载、快速接口数据记录以及快速接口数据卸载,具体如下:
慢速接口数据记录: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读取数据发往快速接口。
其中,所述SSD为NVME固态硬盘。
其中,FPGA的PCIe2.0 x8接口挂接PCIe桥,PCIe桥向下挂接两片SSD,数据记录或卸载时可同时读写两片SSD。
其中,中断要求连续写入DDR 8MB的数据或者写入DDR一条记录结束,所述一帧数据最大长度为8MB,一条记录可分为多个帧,中断信息包含:基地址、大小和附加信息。
其中,所述中断信息缓存于FPGA的PL端的FIFO中,缓存次数表示为FIFO现有数据量。
一种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控制单元负责缓存读写数据;
FPGA的PL端的NVMe Host单元通过PCIe控制单元控制NVMe SSD进行数据读写,缓存的数据和与PS端的交互信息都存放于DDR中;当需要记录SGMII通道数据时,FPGA的PL端根据prp信息将按raid要求的格式将数据写入DDR中,再将数据从DDR搬到SSD;当需要卸载数据到SGMII通道时, FPGA的PL端将数据从SSD搬移到DDR,并根据prp信息将数据发送给PS;当需要记录GTX通道数据时,FPGA的PL端从GTX接口读取数据,提取帧头并放入缓存中供PS端获取,PS端获取到帧头信息后即创建文件,并通过文件系统控制PL端将数据写入SSD;当需要卸载数据到GTX通道时,FPGA的PL端在PS端文件系统的控制下从SSD读取数据,并通过GTX接口发送出去。
其中,所述步骤2中,记录线程的具体工作流程如下:
步骤21,解析一帧的中断信息或数据帧头信息,获取该帧的数据类型,在已打开的文件链表中查找是否存在该类型的文件,如果存在,则通知PL端将数据添加到该文件中;如果不存在,则根据信息生成文件名,在指定目录下新建文件,通知PL端将数据写入到该文件中,并将该文件添加到文件链表的尾部。
步骤22,当一帧数据记录完后,判断文件大小是否超过文件大小限制-8MB,如果超过,则关闭文件,将文件移出文件链表;否则,更新文件链表中该文件的信息;
步骤23,按上述步骤处理下一帧数据;
其中,文件分配与删除原则为:慢速接口数据文件和快速接口数据文件各自建立list,将建立的文件名称按照顺序写入该list中,当存储文件的量超过记录模块的90%容量,删除list[0]存储文件名称对应的文件,并执行list[m]=list[m+1],n=n-1。
有益效果:
1、本发明的SSD落盘操作全部由逻辑实现,没有增加CPU芯片,满足高带宽存储情况下,降低了硬件成本及PCB尺寸;快速接口数据直接由逻辑写入SSD,没有经过CPU中转,减小了软件开销,提升了速度,不加载文件系统的情况下读写SSD速度可达到2.8GBps,加载文件系统的情况下读写SSD速度可达到2.5GBps。
2、本发明系统中,为扩展存储容量和提高存储速度,FPGA的PCIe2.0 x8接口挂接PCIe桥,PCIe桥向下挂接两片SSD,数据记录或卸载时可同时读写两片SSD。
3、本发明系统中,为提高效率,中断信息缓存于FPGA的PL端的FIFO中,缓存次数表示为FIFO现有数据量。FIFO是FPGA设计中基本的构建模块之一,是一种专用于先进先出的缓存模块。
4、本发明方法基于本发明系统,其中SSD落盘操作全部由逻辑实现,没有增加CPU芯片,满足高带宽存储情况下,降低了硬件成本及PCB尺寸;快速接口数据直接由逻辑写入SSD,没有经过CPU中转,减小了软件开销,提升了速度,不加载文件系统的情况下读写SSD速度可达到2.8GBps,加载文件系统的情况下读写SSD速度可达到2.5GBps。
5、本发明利用FPGA内嵌PCIe硬核,以FPGA的PL端的RTL逻辑实现NVMe主机控制器,并搭建整体系统实现对数据流的高速读写以及 SSD 管理控制。其中,PCIe硬核是FPGA内部的部件,可以直接SSD,也可以接PCIe桥片;所述RTL指不关注寄存器和组合逻辑的细节,通过描述寄存器到寄存器之间的逻辑功能描述电路的硬件描述层次,可更好的体现NVMe高并行性特点,由此大幅提高存储性能。
附图说明
图1为根据本发明实施例的原理框图。
图2为根据本发明实施例的记录控制流和数据流图。
图3为根据本发明实施例的卸载控制流和数据流图。
图4为根据本发明实施例的功能单元示意图。
图5为根据本发明实施例的PS写入数据到SSD示意图。
图6为根据本发明实施例的PS从SSD读出数据示意图。
图7为根据本发明实施例的PL传入数据到FIFO,PS从FIFO获取数据写入到SSD示意图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明利用SSD进行存储,SSD使用Flash芯片(或称闪存芯片)作为存储介质,数据读写通过SSD控制器进行寻址,无需机械操作,故而随机读写能力极优,可应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等诸多领域。NVMe协议因其具有高带宽、低延迟、高并行性等特点,逐渐成为当今市场中的主流选择。由于FPGA具有并行执行的特点,因此相比于顺序执行的软件应用程序,FPGA实现的NVMe控制器模块可更好的体现NVMe高并行性特点,由此大幅提高存储性能。本发明利用FPGA内嵌PCIe硬核,以FPGA的PL端的RTL逻辑实现NVMe主机控制器,并搭建整体系统实现对数据流的高速读写以及 SSD 管理控制。其中,PCIe硬核是FPGA内部的部件,可以直接SSD,也可以接PCIe桥片;所述RTL指不关注寄存器和组合逻辑的细节,通过描述寄存器到寄存器之间的逻辑功能描述电路的硬件描述层次。
本发明的一种基于FPGA实现的高带宽NVMe SSD读写系统,包括FPGA和存储卡。所述FPGA分为PS端和PL端,其中PS端专注于数据记录业务流程控制和文件系统实现,PL端专注于Aurora大数据的采集、缓冲、处理;所述存储卡包括一个PCIe桥和多个SSD。所述系统的对外接口包括慢速接口和快速接口,所述慢速接口为SGMII接口,所述快速接口为GTX接口;待写入数据来源于慢速接口和快速接口,读到的数据也通过慢速接口和快速接口导出去,执行慢速接口数据记录、慢速接口数据卸载、快速接口数据记录以及快速接口数据卸载,具体如下:
慢速接口数据记录: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读取数据发往快速接口。
具体地,在本发明系统实际记录过程中,会同时收到来自多个快速接口和慢速接口的不同类型的数据,而不同类型的数据需要存储在不同的文件中,文件依据数据类型和时间信息命名,单文件大小可达40GB。文件由FPGA的PS端管理,采用裁剪后的ext4文件系统,满足文件大小和文件数量的要求,所有还未关闭的文件都统一由一个单向链表管理。PS端为每一个快速接口和慢速接口都分别开一个接收线程,再为快速接口和慢速接口分别开一个记录线程,两个记录线程加锁互斥,避免同时操作SSD。针对快速接口,FPGA的PS端接收线程采集每帧的中断信息,并将中断信息通过消息队列发送给记录线程,记录线程接收中断信息并解析,通过文件系统通知PL端将该帧数据写到SSD的指定位置;针对慢速接口,FPGA的PS端接收线程采集每帧的数据,并将数据地址通过消息队列发送给记录线程,记录线程解析数据帧头信息,通过文件系统通知PL端将该帧数据写到SSD的指定位置。
可选地,所述SSD为NVME固态硬盘。
可选地,为扩展存储容量和提高存储速度,FPGA的PCIe2.0 x8接口挂接PCIe桥,PCIe桥向下挂接两片SSD,数据记录或卸载时可同时读写两片SSD。
可选地,中断要求连续写入DDR 8MB的数据或者写入DDR一条记录结束,所述一帧数据最大长度为8MB,一条记录可分为多个帧,中断信息包含:基地址、大小和附加信息(如帧头内容)。
可选地,为提高效率,所述中断信息缓存于FPGA的PL端的FIFO中,缓存次数表示为FIFO现有数据量。FIFO是FPGA设计中基本的构建模块之一,是一种专用于先进先出的缓存模块。
在本发明实施例中,数据记录模块选择FPGA+NVMe SSD阵列方案。FPGA分为PS和PL两部分,PL专注于Aurora大数据的采集、缓冲、处理,PS专注于数据记录业务流程控制和文件系统实现。NVMe SSD阵列采用2张M.2形式的2TB NVMe SSD,总存储容量为4TB。总体框图如图1所示。
在本发明实施例中,FPGA的PS端和PL端都会从外部接口采集数据。此外, FPGA的PS端和PL端还有自己的专属角色,PS端用于管理文件系统,FPGA的PL端用于写入和读取SSD。
在本发明实施例中,背板为IO板,主要负责提供对外接口(即所述慢速接口和快速接口),包括1个千兆网数据接口、多路GTX总线接口和调测接口(用于故障调试),背板上安装有主控板和存储卡,对外接口通过背板与主控板连接,供电后,可以实现主控板、存储卡的交联以及通信。主控板通过接插件插入背板,利用FPGA的PS端控制数据的访存处理,包括GTX数据、网络数据等数据的读写、存储、毁钥等操作。存储板为数据存储介质,作为存储数据的记录载体,存储板上挂载了2块2TBSSD,其总容量为4TB。存储板上的SSD的接口为M.2接口,2块SSD都通过PCIe接口与PCIe交换机X4端口连接,而PCIe交换机的x8端口与主控板上的FPGA连接并通信,实现主控板向存储卡写入数据、主控板从存储卡读取数据的目的,记录数据流如图2所示,卸载数据流如图3所示。
本发明以2个2TB SSD作为存储介质,数据记录模块设备的FPGA将发送方的待写入文件存储至存储卡的SSD。
在本发明实施例中,数据记录模块设备的FPGA的PS端对存储卡上的2个SSD进行并行管理,控制2个SSD同时写入文件,以满足技术协议的存储带宽要求。其中:上电后,在处理数据写入请求之前,FPGA的PS端创建一个数据处理线程和多个接收线程,分别为每一个GTX通道和SGMII通道都分配一个接收线程,多个接收线程可以同时接收数据。
本发明还提供了一种FPGA实现的高带宽NVMe SSD读写方法,利用本发明系统实现,包括如下步骤:
步骤1,FPGA的PS端数据处理,具体地,FPGA的PS端使用Linux操作系统,加载裁剪后的ext4文件系统,其中ext4文件系统是开源的,可根据实际使用环境作相应裁剪修改。
在本发明实施例中,FPGA的PS端按照预定的文件名创建文件,并监控文件大小,当文件大小超用户限制,则关闭该文件,再新建文件。因为存在同时接收多种数据类型的情况,而不同类型的数据对应不同的文件,故需要创建链表同时管理多个文件。当需要记录SGMII通道数据时,FPGA的PS端从SGMII接口接收数据,且从数据里面提取帧头信息以生成文件名,创建文件将数据写入SSD,写入流程如图5所示,PS向PL写入prp链表,PL根据prp信息将数据写入DDR中,再将数据从DDR搬到SSD。所述prp是自定义的数据内存信息,包含数据内存地址和长度;当需要卸载数据到SGMII通道时,FPGA的PS端可从文件系统请求数据,并通过SGMII接口发送出去,读出流程如图6所示,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控制单元负责缓存读写数据。FPGA软件架构如图4所示。
在本发明实施例中,FPGA的PL端的NVMeHost单元通过PCIe控制单元控制NVMe SSD进行数据读写,缓存的数据和与PS端的交互信息都存放于DDR中。当需要记录SGMII通道数据时,FPGA的PL端根据prp信息将按raid要求的格式将数据写入DDR中,再将数据从DDR搬到SSD;当需要卸载数据到SGMII通道时, FPGA的PL端将数据从SSD搬移到DDR,并根据prp信息将数据发送给PS;当需要记录GTX通道数据时,FPGA的PL端从GTX接口读取数据,提取帧头并放入缓存中供PS端获取,PS端获取到帧头信息后即创建文件,并通过文件系统控制PL端将数据写入SSD,流程如图7所示;当需要卸载数据到GTX通道时,FPGA的PL端在PS端文件系统的控制下从SSD读取数据,并通过GTX接口发送出去。
进一步地,本发明记录线程的具体工作流程如下:
步骤21,解析一帧的中断信息或数据帧头信息,获取该帧的数据类型,在已打开的文件链表中查找是否存在该类型的文件,如果存在,则通知PL端将数据添加到该文件中;如果不存在,则根据信息生成文件名,在指定目录下新建文件,通知PL端将数据写入到该文件中,并将该文件添加到文件链表的尾部。
步骤22,当一帧数据记录完后,判断文件大小是否超过文件大小限制-8MB,如果超过,则关闭文件,将文件移出文件链表;否则,更新文件链表中该文件的信息。
步骤23,按上述步骤处理下一帧数据。
其中,文件分配与删除原则为:慢速接口数据文件和快速接口数据文件各自建立list,将建立的文件名称按照顺序写入该list中,当存储文件的量超过记录模块的90%容量,删除list[0]存储文件名称对应的文件,并执行list[m]=list[m+1],n=n-1。
在本发明实施例中,实测数据如下:
写GTX通道0数据到SSD,速度2.5GB/s;
读SSD数据到GTX通道0,速度2.4GB/s;
写GTX通道1数据到SSD,速度2.5GB/s;
读SSD数据到GTX通道1,速度2.4GB/s;
写SGMII数据到SSD,速度85MB/s(以太网速度限制);
读SSD数据到SGMII,速度80MB/s(以太网速度限制)。
可见,本发明系统和方法实现了高带宽的读写。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

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端按照预定的文件名创建文件,并监控文件大小,当文件大小超用户限制,则关闭该文件,再新建文件;其中创建链表同时管理多个文件,当需要记录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控制单元、NVMeHost单元和DDR3控制单元;其中Aurora控制单元负责收发GTX接口数据, PCIe控制单元负责读写SSD数据,NVMe Host单元负责调度PCIe控制单元,DDR3控制单元负责缓存读写数据;
FPGA的PL端的NVMe Host单元通过PCIe控制单元控制NVMe SSD进行数据读写,缓存的数据和与PS端的交互信息都存放于DDR中;当需要记录SGMII通道数据时,FPGA的PL端根据prp信息将按raid要求的格式将数据写入DDR中,再将数据从DDR搬到SSD;当需要卸载数据到SGMII通道时, FPGA的PL端将数据从SSD搬移到DDR,并根据prp信息将数据发送给PS;当需要记录GTX通道数据时,FPGA的PL端从GTX接口读取数据,提取帧头并放入缓存中供PS端获取,PS端获取到帧头信息后即创建文件,并通过文件系统控制PL端将数据写入SSD;当需要卸载数据到GTX通道时,FPGA的PL端在PS端文件系统的控制下从SSD读取数据,并通过GTX接口发送出去。
8.如权利要求7所述的方法,其特征在于,所述系统中,记录线程的具体工作流程如下:
步骤21,解析一帧的中断信息或数据帧头信息,获取该帧的数据类型,在已打开的文件链表中查找是否存在该类型的文件,如果存在,则通知PL端将数据添加到该文件中;如果不存在,则根据信息生成文件名,在指定目录下新建文件,通知PL端将数据写入到该文件中,并将该文件添加到文件链表的尾部;
步骤22,当一帧数据记录完后,判断文件大小是否超过文件大小限制-8MB,如果超过,则关闭文件,将文件移出文件链表;否则,更新文件链表中该文件的信息;
步骤23,按步骤21和步骤22处理下一帧数据;
其中,文件分配与删除原则为:慢速接口数据文件和快速接口数据文件各自建立list,将建立的文件名称按照顺序写入该list中,当存储文件的量超过记录模块的90%容量,删除第一个存储文件,并执行将后一个存储文件命名为第一个存储文件,总文件数减1。
CN202310402710.6A 2023-04-17 2023-04-17 基于FPGA实现的高带宽NVMe SSD读写系统与方法 Active CN116136748B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310402710.6A CN116136748B (zh) 2023-04-17 2023-04-17 基于FPGA实现的高带宽NVMe SSD读写系统与方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310402710.6A CN116136748B (zh) 2023-04-17 2023-04-17 基于FPGA实现的高带宽NVMe SSD读写系统与方法

Publications (2)

Publication Number Publication Date
CN116136748A CN116136748A (zh) 2023-05-19
CN116136748B true CN116136748B (zh) 2023-06-27

Family

ID=86334744

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310402710.6A Active CN116136748B (zh) 2023-04-17 2023-04-17 基于FPGA实现的高带宽NVMe SSD读写系统与方法

Country Status (1)

Country Link
CN (1) CN116136748B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117744118B (zh) * 2023-12-21 2024-05-28 北京星驰致远科技有限公司 一种基于fpga的高速加密存储装置和方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11157356B2 (en) * 2018-03-05 2021-10-26 Samsung Electronics Co., Ltd. System and method for supporting data protection across FPGA SSDs
CN114116527A (zh) * 2021-12-01 2022-03-01 中船重工(武汉)凌久电子有限责任公司 基于可编程融合芯片的NVMe SSD存储方法及系统
CN115952116A (zh) * 2022-12-28 2023-04-11 西安旷世航空光电科技有限公司 一种基于FPGA的嵌入式NVMe固态硬盘存储系统

Also Published As

Publication number Publication date
CN116136748A (zh) 2023-05-19

Similar Documents

Publication Publication Date Title
US20230297271A1 (en) Nand-based storage device with partitioned nonvolatile write buffer
KR102584018B1 (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
US8583839B2 (en) Context processing for multiple active write commands in a media controller architecture
US20060112232A1 (en) Method and apparatus for managing a cache memory in a mass-storage system
US8719490B2 (en) Storage array, storage system, and data access method
US10540307B1 (en) Providing an active/active front end by coupled controllers in a storage system
US9384147B1 (en) System and method for cache entry aging
US9411519B2 (en) Implementing enhanced performance flash memory devices
CN116136748B (zh) 基于FPGA实现的高带宽NVMe SSD读写系统与方法
US9672180B1 (en) Cache memory management system and method
CN113031862B (zh) 一种基于nvme协议控制sata盘的存储系统
CN108205478B (zh) 智能序列式小型计算机系统接口物理层功率管理
CN115993930A (zh) 用于有序访问块修改存储器中的数据的系统、方法和装置
CN111176566A (zh) 一种支持queue命令的eMMC读写控制方法及存储介质
CN112732176B (zh) 基于fpga的ssd访问方法及装置、存储系统及存储介质
CN106155583B (zh) 缓存固态设备读取请求结果的系统和方法
US7287102B1 (en) System and method for concatenating data
CN114265791A (zh) 一种数据调度方法、芯片以及电子设备
CN113590528B (zh) 基于hp接口的多通道数据采集存储回放卡、系统及方法
CN114706807B (zh) 一种高速易失性可扩展存储设备及其存储方法
CN113805809B (zh) 一种基于qsfp接口的存储微阵列设备
KR102343599B1 (ko) 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
US11861224B2 (en) Data transfer management from host buffers
US20240086108A1 (en) Parallel fragmented sgl fetching for hiding host turnaround time
CN115562574A (zh) 一种NVMe加速系统、方法、设备及可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant