CN116136748B - 基于FPGA实现的高带宽NVMe SSD读写系统与方法 - Google Patents
基于FPGA实现的高带宽NVMe SSD读写系统与方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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是一种可以重构电路的芯片,是一种硬件可重构的体系结构。它的英文全称是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。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117744118B (zh) * | 2023-12-21 | 2024-05-28 | 北京星驰致远科技有限公司 | 一种基于fpga的高速加密存储装置和方法 |
Family Cites Families (3)
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固态硬盘存储系统 |
-
2023
- 2023-04-17 CN CN202310402710.6A patent/CN116136748B/zh active Active
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 |