CN115952116A - 一种基于FPGA的嵌入式NVMe固态硬盘存储系统 - Google Patents
一种基于FPGA的嵌入式NVMe固态硬盘存储系统 Download PDFInfo
- Publication number
- CN115952116A CN115952116A CN202211698928.2A CN202211698928A CN115952116A CN 115952116 A CN115952116 A CN 115952116A CN 202211698928 A CN202211698928 A CN 202211698928A CN 115952116 A CN115952116 A CN 115952116A
- Authority
- CN
- China
- Prior art keywords
- data
- command
- nvme
- user
- host controller
- 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.)
- Pending
Links
Images
Classifications
-
- 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
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明涉及固态硬盘存储系统技术领域,公开了一种基于FPGA的嵌入式NVMe固态硬盘存储系统,包括三种系统组成结构,第一种系统组成结构由单片FPGA控制单片NVMe SSD,第二种系统组成结构由单片FPGA控制多片NVMe SSD,第三种系统组成结构由多个存储系统通过板间同步控制总线连接,并且基于FPGA的嵌入式NVMe固态硬盘存储系统的工作流程:包括以下步骤:数据写入控制、同步总线模块处理、NVMe主机控制器进行处理、数据读出控制四个步骤,该基于FPGA的嵌入式NVMe固态硬盘存储系统,通过使用单颗FPGA芯片,节省了电路板的面积,有利于存储系统的小型化,通过设计三种不同的存储系统架构,能适应多种不同要求的应用,通过设计了NVMe主机控制器的工作流程,实现了NVMe SSD的管理和控制。
Description
技术领域
本发明涉及固态硬盘存储系统技术领域,具体为一种基于FPGA的嵌入式NVMe固态硬盘存储系统。
背景技术
现场可编辑逻辑闸阵列,它是在PAL、GAL、CPLD等可编程逻辑器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了全定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点。NVMe或NVM Express,全称Non-Volatile Memory Host Controller Interface Specification(缩写NVMHCI),可译作“非易失性内存主机控制器界面规范”,是与AHCI类似的、基于设备逻辑界面的总线传输协议规范,主要用于通过PCI Express(PCIe)总线与电脑连接的非易失性内存设备(例如,采用闪存的固态硬盘驱动器),英文名称缩写的前三个字母“NVM”就代表“非易失性内存”。本规范主要是为基于闪存的存储设备提供一个低延时、内部并发化的原生界面规范,也为现代CPU、电脑平台及相关应用提供原生存储并发化的支持,令主机硬件和软件可以充分利用固态存储设备的并行化存储能力。相比此前机械硬盘驱动器时代的AHCI,NVMe/NVMHCI降低了I/O操作等待时间、提升同一时间内的操作数、更大容量的操作队列等。独立硬盘冗余阵列,简称磁盘阵列。其基本思想就是把多个相对便宜的硬碟组合起来,成为一个硬碟阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬碟。根据选择的版本不同,RAID比单颗硬碟有以下一个或多个方面的好处:增强资料整合度,增强容错功能,增加处理量或容量。
NVMe协议的处理流程分为三步,一般为:
1)命令提交:首先,NVMe主机向提交队列SQ(Submission Queue)写入待执行的NVMe命令;然后将新的SQ队列尾指针写入SQTB(Submission Queue Tail Doorbell,提交队列门铃寄存器),通知SSD硬盘控制器有新的命令要处理;
2)命令处理:SSD硬盘控制器主动从NVMe主机的内存中取回待执行的NVMe命令,命令执行完成后,SSD硬盘控制器向完成队列CQ(Complete Queue)中写入命令执行的结果,并产生中断,指示主机处理;
3)命令完成:NVMe主机处理对应的CQ后,更新CQHB(Complete Queue HeadDoorbell)寄存器的头指针地址,通知SSD控制器命令已经处理完毕。
当前的嵌入式存储方案多是基于SATA接口的SSD,该方案的缺点是单个SSD体积偏大、读写速度相对较慢(相对于NVMe SSD),制约着嵌入式存储系统的小型化和高速化发展。本发明针对以上不足,提供一种基于FPGA的NVMe SSD的嵌入式存储系统,来解决存储系统的高速化和小型化的问题。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种基于FPGA的嵌入式NVMe固态硬盘存储系统,具备有利于存储系统的小型化、能适应多种对速度和容量有不同要求的应用以及实现了NVMe SSD的管理和控制等优点,解决了背景技术中提出的问题。
(二)技术方案
为实现上述目的,本发明提供如下技术方案:
本发明要解决的另一技术问题是提供一种基于FPGA的嵌入式NVMe固态硬盘存储系统,包括三种系统组成结构,第一种系统组成结构由单片FPGA控制单片NVMe SSD,第二种系统组成结构由单片FPGA控制多片NVMe SSD,第三种系统组成结构由多个存储系统通过板间同步控制总线连接。现场可编辑逻辑闸阵列(FPGA)由数据写入控制、同步总线模块、数据读出控制、NVMe主机控制器组成,FPGA与NVMe SSD之间通过PCIe总线进行连接。
一种基于FPGA的嵌入式NVMe固态硬盘存储系统的工作流程:包括以下步骤:1)数据写入控制:写入数据步骤如下:第一步,用户发送帧起始脉冲信号,向系统请求写入新的数据帧;第二步,用户查询系统缓冲区状态,如果缓冲区有足够的空间存储当前子帧,则转入第二步,否则等待;第三步,用户同步发送当前子帧的数据有效指示和数据;第四步,如果一帧数据发送完毕,则转入第五步,否则转入第二步;第五步,用户向系统发送数据帧结束信号;第六步,系统将当前帧的文件信息,存储到存储列表区。
2)同步总线模块处理:将数据写入控制经过多个存储板间的同步和控制操作然后传导到NVMe主机控制器上,并且PCIe总线接口用于连接NVMeSSD,此接口为标准接口。
3)NVMe主机控制器进行处理:NVMe主机控制器的主要工作流程分为两部分,系统初始化和用户命令操作;初始化流程为第一步,系统上电后,NVMe主机控制器首先对PCIe的配置空间进行配置;第二步,NVMe主机控制器对内存空间的NVMe寄存器进行配置;用户命令操作流程为NVMe主机控制器响应用户发送的三种命令:识别命令、写入数据和读出数据命令
4)数据读出控制:数据读出步骤如下:第一步,系统发送帧起始脉冲信号,向用户请求读出数据帧;第二步,系统查询用户缓冲区状态,如果缓冲区有足够的空间存储当前子帧,则转入第二步,否则等待;第三步,系统同步发送当前子帧的数据有效指示和数据;第四步,如果一帧数据发送完毕,则转入第五步,否则转入第二步;第五步,系统向用户发送数据帧结束信号。
优选的:所述步骤3中的用户命令操作的识别命令为NVMe主机控制器收到用户发送的“识别命令”后,首先向NVMe SSD发送IDENTIFY命令;当NVMe SSD收到IDENTIFY命令后,则将描述SSD特性信息的数据发送给主机控制器;最后主机控制器根据返回的信息,向用户发送所连接SSD的容量信息、健康信息等。
优选的:所述步骤3中的用户命令操作的写入数据命令为NVMe主机控制器收到用户发送的“写入数据”命令后,等待用户写入待写入的数据;当用户写入的数据足够一次写操作后,主机控制器向SSD发送写入数据命令;当SSD收到WRITE命令后,主动从NVMe主机内存空间读取待写入的数据,将其写入到SSD存储单元中,完成写入操作后,向主机发送命令执行状态;当主控制器收到SSD发送的命令状态后,根据状态的返回值确定命令执行的状态,如果命令执行成功,则等待执行下一次命令,如果发生错误,则将错误信息反馈给用户
优选的:所述步骤3中的用户命令操作的读出数据命令为NVMe主机控制器收到用户发送的“写入数据”命令后,首先查询用户缓冲区状态,当用户缓冲区空闲空间能够存储一次读命令返回的数据时,发送READ命令向SSD;SSD收到READ命令后,从存储单元中读取数据后,将其写入到主机控制器的内存空间中,同时向主机控制器发送命令执行状态;主机控制器收到SSD发送的命令状态后,根据状态的返回值确定命令执行的状态,如果命令执行成功,则将读出的数据发送给用户读出总线,如果发生错误,则将错误信息反馈给用户。
(三)有益效果
与现有技术相比,本发明提供了一种基于FPGA的嵌入式NVMe固态硬盘存储系统,具备以下有益效果:
1、该基于FPGA的嵌入式NVMe固态硬盘存储系统,通过使用单颗FPGA芯片,具备了集成了数据写入、读出、NVMe SSD识别多种功能,实现了NVMe SSD的完全控制,节省了电路板的面积,有利于存储系统的小型化。
2、该基于FPGA的嵌入式NVMe固态硬盘存储系统,通过设计三种不同形式的基于NVMe SSD的嵌入式存储系统架构,能适应多种对速度和容量有不同要求的应用。
3、该基于FPGA的嵌入式NVMe固态硬盘存储系统,通过设计了NVMe主机控制器的工作流程,实现了NVMe SSD的管理和控制。
附图说明
图1为本发明的单FPGA单SSD方案结构框图;
图2为本发明的单FPGA多SSD方案结构框图;
图3为本发明的多存储板RAID方案结构框图;
图4为本发明存储系统的总体结构框图;
图5为本发明的写入数据总线时序图;
图6为本发明的NVMe主机控制器控制流程图;
图7为本发明的读出数据总线时序图。
具体实施方式
下面将结合本发明的实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:一种基于FPGA的嵌入式NVMe固态硬盘存储系统,包括三种系统组成结构,第一种系统组成结构由单片FPGA控制单片NVMe SSD,第二种系统组成结构由单片FPGA控制多片NVMe SSD,第三种系统组成结构由多个存储系统通过板间同步控制总线连接。现场可编辑逻辑闸阵列(FPGA)由数据写入控制、同步总线模块、数据读出控制、NVMe主机控制器组成,FPGA与NVMe SSD之间通过PCIe总线进行连接;第一种系统组成结构如图1所示。
第一种系统组成结构的工作流程,如图4所示:包括以下步骤:
步骤一:数据写入控制,如图5所示:写入数据步骤如下:第一步,用户发送帧起始脉冲信号,向系统请求写入新的数据帧;第二步,用户查询系统缓冲区状态,如果缓冲区有足够的空间存储当前子帧,则转入第二步,否则等待;第三步,用户同步发送当前子帧的数据有效指示和数据;第四步,如果一帧数据发送完毕,则转入第五步,否则转入第二步;第五步,用户向系统发送数据帧结束信号;第六步,系统将当前帧的文件信息,存储到存储列表区。
步骤二:同步总线模块处理:将数据写入控制经过多个存储板间的同步和控制操作然后传导到NVMe主机控制器上,并且PCIe总线接口用于连接NVMeSSD,此接口为标准接口。
步骤三:NVMe主机控制器进行处理,如图6所示:NVMe主机控制器的主要工作流程分为两部分,系统初始化和用户命令操作;初始化流程为第一步,系统上电后,NVMe主机控制器首先对PCIe的配置空间进行配置;第二步,NVMe主机控制器对内存空间的NVMe寄存器进行配置;用户命令操作流程为NVMe主机控制器响应用户发送的三种命令:识别命令、写入数据和读出数据命令;用户命令操作的识别命令为NVMe主机控制器收到用户发送的“识别命令”后,首先向NVMe SSD发送IDENTIFY命令;当NVMe SSD收到IDENTIFY命令后,则将描述SSD特性信息的数据发送给主机控制器;最后主机控制器根据返回的信息,向用户发送所连接SSD的容量信息、健康信息等。用户命令操作的写入数据命令为NVMe主机控制器收到用户发送的“写入数据”命令后,等待用户写入待写入的数据;当用户写入的数据足够一次写操作后,主机控制器向SSD发送写入数据命令;当SSD收到WRITE命令后,主动从NVMe主机内存空间读取待写入的数据,将其写入到SSD存储单元中,完成写入操作后,向主机发送命令执行状态;当主控制器收到SSD发送的命令状态后,根据状态的返回值确定命令执行的状态,如果命令执行成功,则等待执行下一次命令,如果发生错误,则将错误信息反馈给用户。用户命令操作的读出数据命令为NVMe主机控制器收到用户发送的“写入数据”命令后,首先查询用户缓冲区状态,当用户缓冲区空闲空间能够存储一次读命令返回的数据时,发送READ命令向SSD;SSD收到READ命令后,从存储单元中读取数据后,将其写入到主机控制器的内存空间中,同时向主机控制器发送命令执行状态;主机控制器收到SSD发送的命令状态后,根据状态的返回值确定命令执行的状态,如果命令执行成功,则将读出的数据发送给用户读出总线,如果发生错误,则将错误信息反馈给用户。
步骤4:数据读出控制,如图7所示:数据读出步骤如下:第一步,系统发送帧起始脉冲信号,向用户请求读出数据帧;第二步,系统查询用户缓冲区状态,如果缓冲区有足够的空间存储当前子帧,则转入第二步,否则等待;第三步,系统同步发送当前子帧的数据有效指示和数据;第四步,如果一帧数据发送完毕,则转入第五步,否则转入第二步;第五步,系统向用户发送数据帧结束信号。
该实施例采用单片FPGA控制单片NVMe SSD,适用于对体积或者成本敏感的应用。
实施例二:一种基于FPGA的嵌入式NVMe固态硬盘存储系统,包括三种系统组成结构,第一种系统组成结构由单片FPGA控制单片NVMe SSD,第二种系统组成结构由单片FPGA控制多片NVMe SSD,第三种系统组成结构由多个存储系统通过板间同步控制总线连接。现场可编辑逻辑闸阵列(FPGA)由数据写入控制、同步总线模块、数据读出控制、NVMe主机控制器组成,FPGA与NVMe SSD之间通过PCIe总线进行连接;第二种系统组成结构如图2所示。
第二种系统组成结构的工作流程:包括以下步骤:
步骤一:数据写入控制,写入数据步骤如下:第一步,用户发送帧起始脉冲信号,向系统请求写入新的数据帧;第二步,用户查询系统缓冲区状态,如果缓冲区有足够的空间存储当前子帧,则转入第二步,否则等待;第三步,用户同步发送当前子帧的数据有效指示和数据;第四步,如果一帧数据发送完毕,则转入第五步,否则转入第二步;第五步,用户向系统发送数据帧结束信号;第六步,系统将当前帧的文件信息,存储到存储列表区。
步骤二:同步总线模块处理:将数据写入控制经过多个存储板间的同步和控制操作然后传导到NVMe主机控制器上,并且PCIe总线接口用于连接NVMeSSD,可连接多个NVMeSSD,每个NVMeSSD均对应一个PCIe总线接口,且PCIe总线接口接口为标准接口。
步骤三:NVMe主机控制器进行处理,NVMe主机控制器的主要工作流程分为两部分,系统初始化和用户命令操作;初始化流程为第一步,系统上电后,NVMe主机控制器首先对PCIe的配置空间进行配置;第二步,NVMe主机控制器对内存空间的NVMe寄存器进行配置;用户命令操作流程为NVMe主机控制器响应用户发送的三种命令:识别命令、写入数据和读出数据命令;用户命令操作的识别命令为NVMe主机控制器收到用户发送的“识别命令”后,首先向NVMe SSD发送IDENTIFY命令;当NVMe SSD收到IDENTIFY命令后,则将描述SSD特性信息的数据发送给主机控制器;最后主机控制器根据返回的信息,向用户发送所连接SSD的容量信息、健康信息等。用户命令操作的写入数据命令为NVMe主机控制器收到用户发送的“写入数据”命令后,等待用户写入待写入的数据;当用户写入的数据足够一次写操作后,主机控制器向SSD发送写入数据命令;当SSD收到WRITE命令后,主动从NVMe主机内存空间读取待写入的数据,将其写入到SSD存储单元中,完成写入操作后,向主机发送命令执行状态;当主控制器收到SSD发送的命令状态后,根据状态的返回值确定命令执行的状态,如果命令执行成功,则等待执行下一次命令,如果发生错误,则将错误信息反馈给用户。用户命令操作的读出数据命令为NVMe主机控制器收到用户发送的“写入数据”命令后,首先查询用户缓冲区状态,当用户缓冲区空闲空间能够存储一次读命令返回的数据时,发送READ命令向SSD;SSD收到READ命令后,从存储单元中读取数据后,将其写入到主机控制器的内存空间中,同时向主机控制器发送命令执行状态;主机控制器收到SSD发送的命令状态后,根据状态的返回值确定命令执行的状态,如果命令执行成功,则将读出的数据发送给用户读出总线,如果发生错误,则将错误信息反馈给用户。
步骤4:数据读出控制,数据读出步骤如下:第一步,系统发送帧起始脉冲信号,向用户请求读出数据帧;第二步,系统查询用户缓冲区状态,如果缓冲区有足够的空间存储当前子帧,则转入第二步,否则等待;第三步,系统同步发送当前子帧的数据有效指示和数据;第四步,如果一帧数据发送完毕,则转入第五步,否则转入第二步;第五步,系统向用户发送数据帧结束信号。
该实施例采用单片FPGA控制多片NVMe SSD(被控制NVMe固态的数量由FPGA支持的最大PCIe接口确定),适用于对体积和速度有较高要求,而对成本不敏的应用。
实施例三:一种基于FPGA的嵌入式NVMe固态硬盘存储系统,包括三种系统组成结构,第一种系统组成结构由单片FPGA控制单片NVMe SSD,第二种系统组成结构由单片FPGA控制多片NVMe SSD,第三种系统组成结构由多个存储系统通过板间同步控制总线连接。现场可编辑逻辑闸阵列(FPGA)由数据写入控制、同步总线模块、数据读出控制、NVMe主机控制器组成,FPGA与NVMe SSD之间通过PCIe总线进行连接;第三种系统组成结构如图3所示。
第二种系统组成结构的工作流程:包括以下步骤:
步骤一:数据写入控制,写入数据步骤如下:第一步,用户发送帧起始脉冲信号,向系统请求写入新的数据帧;第二步,用户查询系统缓冲区状态,如果缓冲区有足够的空间存储当前子帧,则转入第二步,否则等待;第三步,用户同步发送当前子帧的数据有效指示和数据;第四步,如果一帧数据发送完毕,则转入第五步,否则转入第二步;第五步,用户向系统发送数据帧结束信号;第六步,系统将当前帧的文件信息,存储到存储列表区。
步骤二:同步总线模块处理:将数据写入控制经过多个存储板间的同步和控制操作然后传导到NVMe主机控制器上,并且PCIe总线接口用于连接NVMeSSD,可连接多个NVMeSSD,每个NVMeSSD均对应一个PCIe总线接口,且PCIe总线接口接口为标准接口。
步骤三:NVMe主机控制器进行处理,NVMe主机控制器的主要工作流程分为两部分,系统初始化和用户命令操作;初始化流程为第一步,系统上电后,NVMe主机控制器首先对PCIe的配置空间进行配置;第二步,NVMe主机控制器对内存空间的NVMe寄存器进行配置;用户命令操作流程为NVMe主机控制器响应用户发送的三种命令:识别命令、写入数据和读出数据命令;用户命令操作的识别命令为NVMe主机控制器收到用户发送的“识别命令”后,首先向NVMe SSD发送IDENTIFY命令;当NVMe SSD收到IDENTIFY命令后,则将描述SSD特性信息的数据发送给主机控制器;最后主机控制器根据返回的信息,向用户发送所连接SSD的容量信息、健康信息等。用户命令操作的写入数据命令为NVMe主机控制器收到用户发送的“写入数据”命令后,等待用户写入待写入的数据;当用户写入的数据足够一次写操作后,主机控制器向SSD发送写入数据命令;当SSD收到WRITE命令后,主动从NVMe主机内存空间读取待写入的数据,将其写入到SSD存储单元中,完成写入操作后,向主机发送命令执行状态;当主控制器收到SSD发送的命令状态后,根据状态的返回值确定命令执行的状态,如果命令执行成功,则等待执行下一次命令,如果发生错误,则将错误信息反馈给用户。用户命令操作的读出数据命令为NVMe主机控制器收到用户发送的“写入数据”命令后,首先查询用户缓冲区状态,当用户缓冲区空闲空间能够存储一次读命令返回的数据时,发送READ命令向SSD;SSD收到READ命令后,从存储单元中读取数据后,将其写入到主机控制器的内存空间中,同时向主机控制器发送命令执行状态;主机控制器收到SSD发送的命令状态后,根据状态的返回值确定命令执行的状态,如果命令执行成功,则将读出的数据发送给用户读出总线,如果发生错误,则将错误信息反馈给用户。
步骤4:数据读出控制,数据读出步骤如下:第一步,系统发送帧起始脉冲信号,向用户请求读出数据帧;第二步,系统查询用户缓冲区状态,如果缓冲区有足够的空间存储当前子帧,则转入第二步,否则等待;第三步,系统同步发送当前子帧的数据有效指示和数据;第四步,如果一帧数据发送完毕,则转入第五步,否则转入第二步;第五步,系统向用户发送数据帧结束信号。
该实施例为实施例1或实施例2的混合应用,多个存储系统通过板间同步控制总线连接,适用于对速度和数据安全有较高要求,而对成本和体积不敏感的应用。
本发明的有益效果是:、该基于FPGA的嵌入式NVMe固态硬盘存储系统,通过使用单颗的FPGA芯片,具备了集成了数据写入、读出、NVMe SSD识别多种功能,实现了NVMe SSD的完全控制,节省了电路板的面积,有利于存储系统的小型化,通过设计三种不同形式的基于NVMe SSD的嵌入式存储系统架构,能适应多种对速度和容量有不同要求的应用,通过设计了NVMe主机控制器的工作流程,实现了NVMe SSD的管理和控制。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (5)
1.一种基于FPGA的嵌入式NVMe固态硬盘存储系统,包括三种系统组成结构,其特征在于:第一种系统组成结构由单片FPGA控制单片NVMe SSD,第二种系统组成结构由单片FPGA控制多片NVMe SSD,第三种系统组成结构由多个存储系统通过板间同步控制总线连接。现场可编辑逻辑闸阵列(FPGA)由数据写入控制、同步总线模块、数据读出控制、NVMe主机控制器组成,FPGA与NVMe SSD之间通过PCIe总线进行连接。
2.一种基于FPGA的嵌入式NVMe固态硬盘存储系统的工作流程:其特征在于:包括以下步骤:
1)数据写入控制:写入数据步骤如下:第一步,用户发送帧起始脉冲信号,向系统请求写入新的数据帧;第二步,用户查询系统缓冲区状态,如果缓冲区有足够的空间存储当前子帧,则转入第二步,否则等待;第三步,用户同步发送当前子帧的数据有效指示和数据;第四步,如果一帧数据发送完毕,则转入第五步,否则转入第二步;第五步,用户向系统发送数据帧结束信号;第六步,系统将当前帧的文件信息,存储到存储列表区。
2)同步总线模块处理:将数据写入控制经过多个存储板间的同步和控制操作然后传导到NVMe主机控制器上,并且PCIe总线接口用于连接NVMeSSD,此接口为标准接口。
3)NVMe主机控制器进行处理:NVMe主机控制器的主要工作流程分为两部分,系统初始化和用户命令操作;初始化流程为第一步,系统上电后,NVMe主机控制器首先对PCIe的配置空间进行配置;第二步,NVMe主机控制器对内存空间的NVMe寄存器进行配置;用户命令操作流程为NVMe主机控制器响应用户发送的三种命令:识别命令、写入数据和读出数据命令
4)数据读出控制:数据读出步骤如下:第一步,系统发送帧起始脉冲信号,向用户请求读出数据帧;第二步,系统查询用户缓冲区状态,如果缓冲区有足够的空间存储当前子帧,则转入第二步,否则等待;第三步,系统同步发送当前子帧的数据有效指示和数据;第四步,如果一帧数据发送完毕,则转入第五步,否则转入第二步;第五步,系统向用户发送数据帧结束信号。
3.根据权利要求2所述的一种基于FPGA的嵌入式NVMe固态硬盘存储系统,其特征在于:所述步骤3中的用户命令操作的识别命令为NVMe主机控制器收到用户发送的“识别命令”后,首先向NVMe SSD发送IDENTIFY命令;当NVMe SSD收到IDENTIFY命令后,则将描述SSD特性信息的数据发送给主机控制器;最后主机控制器根据返回的信息,向用户发送所连接SSD的容量信息、健康信息等。
4.根据权利要求2所述的一种基于FPGA的嵌入式NVMe固态硬盘存储系统,其特征在于:所述步骤3中的用户命令操作的写入数据命令为NVMe主机控制器收到用户发送的“写入数据”命令后,等待用户写入待写入的数据;当用户写入的数据足够一次写操作后,主机控制器向SSD发送写入数据命令;当SSD收到WRITE命令后,主动从NVMe主机内存空间读取待写入的数据,将其写入到SSD存储单元中,完成写入操作后,向主机发送命令执行状态;当主控制器收到SSD发送的命令状态后,根据状态的返回值确定命令执行的状态,如果命令执行成功,则等待执行下一次命令,如果发生错误,则将错误信息反馈给用户。
5.根据权利要求2所述的一种基于FPGA的嵌入式NVMe固态硬盘存储系统,其特征在于:所述步骤3中的用户命令操作的读出数据命令为NVMe主机控制器收到用户发送的“写入数据”命令后,首先查询用户缓冲区状态,当用户缓冲区空闲空间能够存储一次读命令返回的数据时,发送READ命令向SSD;SSD收到READ命令后,从存储单元中读取数据后,将其写入到主机控制器的内存空间中,同时向主机控制器发送命令执行状态;主机控制器收到SSD发送的命令状态后,根据状态的返回值确定命令执行的状态,如果命令执行成功,则将读出的数据发送给用户读出总线,如果发生错误,则将错误信息反馈给用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211698928.2A CN115952116A (zh) | 2022-12-28 | 2022-12-28 | 一种基于FPGA的嵌入式NVMe固态硬盘存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211698928.2A CN115952116A (zh) | 2022-12-28 | 2022-12-28 | 一种基于FPGA的嵌入式NVMe固态硬盘存储系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115952116A true CN115952116A (zh) | 2023-04-11 |
Family
ID=87287401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211698928.2A Pending CN115952116A (zh) | 2022-12-28 | 2022-12-28 | 一种基于FPGA的嵌入式NVMe固态硬盘存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115952116A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116136748A (zh) * | 2023-04-17 | 2023-05-19 | 中勍科技股份有限公司 | 基于FPGA实现的高带宽NVMe SSD读写系统与方法 |
-
2022
- 2022-12-28 CN CN202211698928.2A patent/CN115952116A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116136748A (zh) * | 2023-04-17 | 2023-05-19 | 中勍科技股份有限公司 | 基于FPGA实现的高带宽NVMe SSD读写系统与方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10725871B2 (en) | Storage device capable of performing peer-to-peer communication and data storage system including the same | |
US10970003B2 (en) | Scalable low-latency storage interface | |
TWI454906B (zh) | 資料讀取方法、快閃記憶體控制器與儲存系統 | |
US8386699B2 (en) | Method for giving program commands to flash memory for writing data according to a sequence, and controller and storage system using the same | |
US9542271B2 (en) | Method and apparatus for reducing read latency | |
CN112256601A (zh) | 数据存取控制方法、嵌入式存储系统及嵌入式设备 | |
CN103282887A (zh) | 用于进行后台操作的控制器和方法 | |
WO2000030116A1 (en) | Method and apparatus for memory control circuit | |
TWI698749B (zh) | 資料儲存裝置與資料處理方法 | |
US7725621B2 (en) | Semiconductor device and data transfer method | |
KR20220045548A (ko) | 호스트 메모리 버퍼를 사용하는 커맨드 배출 | |
CN110941395A (zh) | 动态随机存取存储器、内存管理方法、系统及存储介质 | |
CN115952116A (zh) | 一种基于FPGA的嵌入式NVMe固态硬盘存储系统 | |
CN111258918A (zh) | 数据存储装置及其操作方法、存储系统 | |
JP5896328B2 (ja) | 高性能ahciインターフェイス | |
CN110874190A (zh) | 闪存控制器及方法 | |
TWI714116B (zh) | 記憶體控制器、記憶體控制方法、以及電腦系統 | |
TWI537726B (zh) | 資料讀取方法、快閃記憶體控制器與儲存系統 | |
CN111831227A (zh) | 一种nvme协议命令加速处理系统 | |
CN115857805B (zh) | 人工智能可计算存储系统 | |
CN101751982B (zh) | 闪存存储装置中闪存控制器与闪存芯片之间的连接方法 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
CN110968537B (zh) | 一种基于pcie ssd的fpga搜索匹配方法 | |
WO2011119151A1 (en) | Communication between a computer and a data storage device | |
WO2019237535A1 (zh) | 一种存储控制芯片、存储设备及自适应接口方法 |
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 |