技术领域
本发明属于数据存储技术领域,具体涉及一种基于NVME协议控制SATA盘的存储系统。
背景技术
随着闪存技术、现场可编程逻辑阵列技术以及SoC技术的快速发展,逐渐构建出计算机嵌入式领域的存储体系。其中,由控制单元和闪存组成的固态盘成为存储系统的核心部件之一。目前,SATA固态盘遵循SATA协议,最高理论带宽是600MB/s,在软件应用层使用AHCI协议。在搭建高性能存储系统时,需采用多块SATA盘,同时需求多个SATA接口。随着NVMe规范提出及发展,相比AHCI协议,NVMe规范充分利用PCIE通道的低延时、高性能和并行性,极大的提升固态硬盘的读写性能。
目前,现有技术中的存储系统采用如下技术方案:1)基于嵌入式处理器和SATA盘的存储系统,仅支持少量SATA接口,且SATA接口一般作为系统盘使用,嵌入式处理器受限于SATA接口数量和协议类型,延时较大,速率低;2)基于嵌入式处理器、PCIE转SATA桥和SATA盘的存储系统,安全性和灵活性相对较差;3)基于嵌入式处理器、PCIE交换和NVMe盘的存储系统,目前市场上的NVMe盘,在较高温时掉速,低温时易损坏。以上技术方案难以适用于安全保密领域对存储系统的高标准、高定制化和可扩展性需求。
发明内容
本发明的目的在于针对上述问题,提出一种基于NVME协议控制SATA盘的存储系统,结合NVME协议的高性能和SATA协议的易扩展性,解决目前处理器支持SATA接口不足问题,并实现存储系统持续高带宽读写,且可灵活修改SATA盘数量,功耗低、成本低、高低温工作环境稳定性好,兼容性好。
为实现上述目的,本发明所采取的技术方案为:
本发明提出的一种基于NVME协议控制SATA盘的存储系统,包括处理器和FPGA模块,处理器与FPGA模块通过PCIE总线连接,处理器挂载有第一内存,FPGA模块挂载有第二内存和SATA存储阵列,SATA存储阵列包括多个SATA盘,其中:
处理器,用于向FPGA模块发送读写指令及对SATA存储阵列中的数据进行管理,读写指令为NVME协议指令,当为写指令时,处理器通过第一外部接口接收第一数据,并将写指令和第一数据下发至第一内存,FPGA模块通过第二外部接口接收第二数据,并将第二数据下发至第二内存;当为读指令时,处理器将读指令和SATA存储阵列中的数据下发至第一内存,并通过第一外部接口对外发送第一内存中的数据,FPGA模块将SATA存储阵列中的数据下发至第二内存,并通过第二外部接口对外发送第二内存中的数据;
FPGA模块,用于获取第一内存中的读写指令并解析读写指令为SATA协议指令,根据SATA协议指令控制SATA存储阵列与第一内存或第二内存之间的数据交互;
第一内存,用于缓存第一数据或从SATA存储阵列中读出的数据;
第二内存,用于缓存第二数据或从SATA存储阵列中读出的数据;
SATA存储阵列,用于存储第一数据和第二数据。
优选地,处理器为嵌入式处理器。
优选地,FPGA模块包含用于实现NVME协议转SATA协议的协议转换模块和用于对多个SATA盘并行读写控制的RAID模块,协议转换模块与RAID模块连接,RAID模块与各SATA盘连接。
优选地,FPGA模块还包含加解密模块,协议转换模块、加解密模块与RAID模块依次连接,加解密模块用于对SATA存储阵列中的数据进行加解密处理。
与现有技术相比,本发明的有益效果为:
1)采用NVME协议控制SATA存储阵列,使得SATA盘的读写速度高于纯粹的SATA协议存储系统,同时利用FPGA高速并行特点使存储系统满足高性能需求,如持续读写性能不低于6.4GB/s,存储性能高,兼容性好,设计简单,便于快速投入使用;
2)可避免使用SATA体系相关元器件,大大减小功耗及成本,同时采用SATA盘作为存储体,保留了SATA盘功耗低,工作温度范围广的特点,能够在-55℃~+70℃环境下稳定工作,且有利于板卡小型化;
3)使用FPGA模块控制多个SATA盘,可根据需求任意修改RAID模型等级,并可进行加解密特性提高安全性,实现自主控制,系统灵活性高;
4)可用一个PCIE接口实现控制多个SATA盘,解决目前处理器支持SATA接口不足的问题。
附图说明
图1为本发明的存储系统整体结构示意图;
图2为本发明的FPGA模块内部结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本申请。
如图1-2所示,一种基于NVME协议控制SATA盘的存储系统,包括处理器和FPGA模块,处理器与FPGA模块通过PCIE总线连接,处理器挂载有第一内存,FPGA模块挂载有第二内存和SATA存储阵列,SATA存储阵列包括多个SATA盘,其中:
处理器,用于向FPGA模块发送读写指令及对SATA存储阵列中的数据进行管理,读写指令为NVME协议指令,当为写指令时,处理器通过第一外部接口接收第一数据,并将写指令和第一数据下发至第一内存,FPGA模块通过第二外部接口接收第二数据,并将第二数据下发至第二内存;当为读指令时,处理器将读指令和SATA存储阵列中的数据下发至第一内存,并通过第一外部接口对外发送第一内存中的数据,FPGA模块将SATA存储阵列中的数据下发至第二内存,并通过第二外部接口对外发送第二内存中的数据;
FPGA模块,用于获取第一内存中的读写指令并解析读写指令为SATA协议指令,根据SATA协议指令控制SATA存储阵列与第一内存或第二内存之间的数据交互;
第一内存,用于缓存第一数据或从SATA存储阵列中读出的数据;
第二内存,用于缓存第二数据或从SATA存储阵列中读出的数据;
SATA存储阵列,用于存储第一数据和第二数据。
其中,SATA盘由FPGA模块进行控制管理并进行读写,在FPGA模块的控制下,可实现第一内存、第二内存两者分别与SATA存储阵列之间的数据交互,实现存储系统持续高带宽读写。处理器搭载有文件系统,能以标准文件系统形式对SATA存储阵列中的数据进行管理,方便使用。同时处理器可获取SATA盘的个数、初始化状态和容量信息。
该存储系统使用NVME协议控制SATA存储阵列,大大优化了软件设计及数据流程,使得SATA盘的读写速度高于纯粹SATA协议存储系统,同时利用FPGA高速并行特点使存储系统满足高性能需求,持续读写性能不低于6.4GB/s,存储性能高,兼容性好,便于快速投入使用。可避免使用SATA体系相关元器件,大大减小功耗和硬件成本。同时采用SATA盘作为存储体,保留了SATA盘功耗低,工作温度范围广的特点,如能够在-55℃~+70℃环境下稳定工作,并有利于板卡小型化。便于实现一个PCIE接口实现控制多个SATA盘,解决目前处理器支持SATA接口不足的问题。
在一实施例中,处理器为嵌入式处理器。
其中,嵌入式处理器工作稳定性更高,功耗较小,环境适应性强,集成度好,适用于安全保密领域。
在一实施例中,FPGA模块包含用于实现NVME协议转SATA协议的协议转换模块和用于对多个SATA盘并行读写控制的RAID模块,协议转换模块与RAID模块连接,RAID模块与各SATA盘连接。
如图2所示,协议转换模块,可将处理器下发的读写指令即NVME协议指令转换为SATA协议指令,实现使用NVME协议控制SATA存储阵列,使得SATA盘的读写速度高于纯粹SATA协议存储系统,软件设计更加简单。RAID模块为现有技术,用于对多个SATA盘并行读写控制,实现自主控制,包括多种不同等级,如RAID0、RAID1、RAID5、RAID10、RAID50等,分别可以提供不同的速度、安全性和性价比,可根据实际情况选择适当的RAID级别以满足用户对存储系统可用性、性能和容量的要求。
在一实施例中,FPGA模块还包含加解密模块,协议转换模块、加解密模块与RAID模块依次连接,加解密模块用于对SATA存储阵列中的数据进行加解密处理。
其中,FPGA模块中设有加解密模块,例如处理器下发写指令时,在FPGA模块将NVME协议指令进行解析重组成SATA协议指令后。数据流为常见FPGA中FIFO式接口,可在此增加加解密模块,通过FPGA模块对数据进行加解密后再进行SATA存储阵列读写,进一步提高安全性高和系统灵活性,并可避免处理NVME协议或SATA协议,提高运算效率。
该存储系统的工作流程如下:
外部数据写入SATA存储阵列的过程:
1)FPGA模块接收第二数据并将第二数据缓存入第二内存,第二内存中的数据通过FPGA模块写入SATA存储阵列。
具体地,处理器通过字符设备(如键盘、鼠标等)调用FPGA模块的驱动模块通知FPGA模块开始记录,即FPGA模块开始从第二外部接口,如高速串行接口,接收第二数据并搬运第二数据到第二内存中进行缓存,在缓存完成后FPGA模块上报中断信号通知处理器,处理器接收中断信号后写文件,写地址为第二内存的地址。处理器下发写指令至第一内存,写指令为NVME协议指令,FPGA模块获取第一内存中的写指令后解析为SATA协议指令,并根据SATA协议指令中的源地址信息从第二内存搬运数据,根据SATA协议指令中的目标地址信息将搬运的第二内存中的数据存入到指定SATA存储阵列的扇区中,存储完成后,FPGA模块返回完成信息至处理器,处理器检查完成信息后,结束操作。
2)处理器接收到第一数据,并将第一数据缓存入第一内存后,通知FPGA模块将第一内存中的数据写入SATA存储阵列。
具体地,处理器通过第一外部接口接收第一数据(如网络数据等),并将第一数据缓存入第一内存,在缓存完成后上报中断信号通知处理器,处理器接收中断信号后写文件,写地址为第一内存的地址。处理器向FPGA模块发送写指令,写指令为NVME协议指令。FPGA模块获取第一内存中的写指令后解析为SATA协议指令,并根据SATA协议指令中的源地址信息从第一内存搬运数据,根据SATA协议指令中的目标地址信息将搬运的第一内存中的数据存入到指定SATA存储阵列的扇区中。存储完成后,FPGA模块返回完成信息至处理器,处理器检查完成信息后,结束操作。
SATA存储阵列中的数据读取到外部的过程:
1)处理器控制FPGA模块将SATA存储阵列中的数据读出至第二内存,FPGA模块再将第二内存中的数据发送至FPGA模块的第二外部接口。
具体地,处理器通过字符设备(如键盘、鼠标等)调用FPGA模块的驱动模块,通知FPGA模块开始回放请求。处理器下发读指令至第一内存,读指令为NVME协议指令,FPGA模块获取第一内存中的读指令后解析为SATA协议指令,并根据SATA协议指令中的源地址信息从SATA存储阵列中搬运数据,根据SATA协议指令中的目标地址信息将搬运的SATA存储阵列中的数据存入第二内存,第二内存中的数据通过FPGA模块的第二外部接口发出,并生成中断信号通知处理器完成数据的读出。
2)处理器控制FPGA模块将SATA存储阵列中的数据读出至第一内存,并将第一内存中的数据通过处理器的第一外部接口发出。
具体地,处理器下发读指令至第一内存,读指令为NVME协议指令,FPGA模块获取第一内存中的读指令后解析为SATA协议指令,并根据SATA协议指令中的源地址信息从SATA存储阵列中搬运数据,根据SATA协议指令中的目标地址信息将搬运的SATA存储阵列中的数据存入第一内存,第一内存中的数据通过处理器的第一外部接口(如网络接口等)发送至外部设备,如对端PC机等,并在写入完成后上报中断信号通知处理器。
进一步地,上电时,处理器加载FPGA模块的驱动模块,初始化FPGA模块,并根据处理器的读写指令在FPGA模块中创建admin队列和IO队列:
处理器初始化FPGA模块的NVME寄存器,并配置AQA、ASQ、ACQ。
ADMIN队列:更新第一内存中的FPGA模块DB环,然后刷新SQ0TDBL;FPGA模块检测到SQ0TDBL数值发生变化,向第一内存发起读取ADMIN_SQ信息;FPGA模块接收到反馈数据后,解析数据内容,完成IDENTIFY命令、create io sq命令与create io cq命令,即缓存io sq与io cq的物理地址;更新ADMIN_CQ,并上传中断信号通知处理器该次处理完成。
IO队列:更新第一内存中的FPGA模块DB环,然后刷新SQ1TDBL;FPGA模块检测到SQ1TDBL数值发生变化,向第一内存发起读取IO_SQ信息;FPGA模块接收到反馈数据后,解析数据内容,完成DMA读与DMA写操作,即实现第一内存数据与SATA数据的交互实现;更新IO_CQ,并上传中断信号通知处理器该次处理完成。
DMA读:在IO_SQ信息中提取第一内存数据的读地址SADR、SATA盘写地址DADR与数据长度LEN;FPGA模块向第一内存数据的读地址SADR读数据长度LEN的数据量,按照4KB的数据量轮转写入各SATA盘;SATA盘自动将接收的数据写入到SATA盘写地址DADR,从而完成DMA读操作。
DMA写:在IO_SQ信息中提取第一内存数据的写地址DADR、SATA盘读地址SADR与数据长度LEN;FPGA模块将数据长度LEN发送到每个SATA盘;SATA盘自动从SATA盘读地址SADR读取数据长度LEN的数据量,并将接收的数据按照4KB轮转的方式依次合成,然后将合成的数据写入第一内存数据的写地址DADR位置,从而完成DMA写操作。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请描述较为具体和详细的实施例,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
机译: 一种基于分组强度轴识别rtp(实时协议)和rtcp链路(实时控制协议)分组的方法
机译: 基于操作控制单元的跨协议分布式云存储系统及数据管理方法
机译: 基于操作控制单元的跨协议分布式云存储系统和数据管理方法