一种存储磁盘以及存取数据的方法
技术领域
本发明涉及一种电子数据存储***,尤其涉及一种能够大大提升企业数据处理能力存储磁盘、以及一种存取数据的方法。
背景技术
计算机之父冯·诺依曼提出了计算机五大部件:输入设备、输出设备、存储器、运算器和控制器。处理器(CPU,中央处理单元)是计算机的运算核心,磁盘是存储资料数据的设备。
传统存储盘一直以来单纯的作为数据存储介质,数据计算则通过相关处理器进行处理,两者分工协作看似协调,但随着人工智能等涉及大数据领域的兴起,单纯依靠***处理器做计算已经不能满足日益增长的数据计算需求,而且在一套***中同时挂载存储介质和计算介质不仅增加资金成本,也占用了过多的硬件结构空间,而且管理上过于分化。
发明内容
为解决上述问题,本申请提供了一种存储磁盘、以及一种存取数据的方法。
本申请第一个方面是提供一种存储磁盘,包括:
接口单元,用于与存储磁盘外部进行数据通讯;
存储单元,用于存储数据;
磁盘控制单元,用于将接口单元或者运算单元传来的数据存储于存储单元,和/或从存储单元中共读取存储数据发送给接口单元或者运算单元;
所述存储磁盘还包括运算单元,运算单元接收来自接口单元的指令,根据指令进行运算,并将运算结果发送给磁盘控制单元或接口单元。
在本申请的一种优选实施例中,所述接口单元向磁盘控制单元发送指令。
在本申请的一种优选实施例中,所述存储磁盘优选为SSD固态硬盘。
在本申请的一种优选实施例中,所述接口单元优选为包括PCIe IP硬核。
更优选地,所述接口单元包括通讯接口,所述通讯接口可以是与互联网数据连接的接口、与计算机CPU数据连接的接口。
在本申请的一种优选实施例中,所述存储单元包括FLASH芯片,优选为NAND FLASH存储器,所述磁盘控制单元与所述FLASH芯片、优选为NAND FLASH存储器进行数据通讯。
在本申请的一种优选实施例中,所述存储磁盘还包括DRAM芯片,优选为SDRAM存储器,更优选为DDR4 SDRAM存储器;所述磁盘控制单元与所述DRAM芯片、优选为SDRAM存储器、更优选为DDR4 SDRAM存储器进行数据通讯。更优选地,所述DRAM芯片与接口单元之间进行数据通讯。
更优选地,所述DDR4 DRAM存储器与接口单元、运算单元、磁盘控制单元进行数据通讯。
在本申请的一种更优选实施例中,所述DRAM芯片接收来自接口单元的数据,更优选地,磁盘控制单元从DRAM芯片中读取数据并将读取的数据发送给FLASH芯片。
在本申请的一种更优选实施例中,所述磁盘控制单元从FLASH芯片读取数据,并将读取的数据发送给DRAM芯片。
在本申请的一种更优选实施例中,所述存储磁盘还包括PR(PartialReconfiguration,部分重配置)模块,用于更新运算单元中的算法程序。优选地,所述PR模块可以是一种可重利用的、具有某种确定功能的IC模块,如IP核。
在一种更优选实施例中,运算单元读取所述DRAM芯片的数据,并在进行运算之后发送回DRAM芯片。
本申请第二个方面是提供一种存储数据的方法,包括:
接口单元将接收的数据发送给DRAM芯片,同时发送运算指令给运算单元,运算单元接收到运算指令后,读取DRAM芯片中的数据进行运算;
运算单元将运算后的数据发送给DRAM芯片,磁盘控制单元从DRAM芯片中读取数据并将数据发送给FLASH芯片进行存储。
优选地,运算单元将运算后的数据发送给DRAM芯片后,接口单元接收外部发送给磁盘控制单元的指令,磁盘控制单元从DRAM芯片内部取运算后的数据,存储到FLASH芯片。
优选地,Host通过接口单元发送数据给DRAM芯片,并发送运算指令给运算单元;运算单元读取DRAM芯片中的数据,进行运算之后,将数据发送给DRAM芯片,然后,磁盘控制单元读取DRAM芯片中的数据,并存储到FLASH芯片中。
但是,本申请存储数据的方法,也可以包括判断是否进行运算的情况,如果判断不需要进行运算,则接口单元发送给磁盘控制单元存储到FLASH芯片;更优选地,接口单元收到外部指令,激活磁盘控制单元对应的FLASH芯片通道寄存器,磁盘控制单元启动DMA读操作通过接口单元从磁盘外部读取FLASH控制指令,并解析命令为写操作,提取源地址和目标地址,再次启动DMA读操作通过接口单元从磁盘外部的源地址读取数据,接口单元将返回的数据发送给磁盘控制单元,磁盘控制单元为数据生成ECC校验码并***数据内部,写入FLASH芯片。
优选的,如果判断为需要进行运算,则按照本发明第二个方面所述的方法,运算单元接收到运算指令后,读取DRAM芯片中的数据进行运算。
本申请第三个方面是提供一种读取数据的方法,包括:
接口单元发送指令给运算单元和磁盘控制单元,磁盘控制单元从FLASH芯片读取数据后发送给DRAM芯片,运算单元读取DRAM芯片中的数据进行运算;运算单元进行运算之后,将数据发送给DRAM芯片,接口单元将数据从DRAM芯片中读取。
在本申请的一种优选实施例中,所述读取数据的方法还包括:
接口单元收到外部指令,激活磁盘控制单元对应的FLASH芯片通道寄存器,磁盘控制单元启动DMA读操作,通过接口单元从磁盘外部读取FLASH控制指令,并解析命令为写操作,提取源地址和目标地址,
再次启动DMA读操作,通过接口单元从磁盘外部的源地址读取数据,接口单元将返回的数据发送给磁盘控制单元,磁盘控制单元为数据生成ECC校验码并***数据内部,写入FLASH芯片。
在一种更优选实施例中,接口单元发送运算指令给运算单元,并将数据发送给DRAM芯片,或者将数据发送给磁盘控制单元,磁盘将数据发送给DRAM芯片;运算单元读取DRAM芯片中的数据,进行运算之后,将数据发送给DRAM芯片,然后,磁盘控制单元读取DRAM芯片中的数据,并存储到FLASH芯片中。
在一种优选实施例中,本申请读取数据的方法也可以包括判断是否进行运算的情况,如果判断不需要进行运算,则接口单元收到外部指令,激活磁盘控制单元对应的FLASH芯片通道寄存器,磁盘控制单元启动DMA读操作通过接口单元从磁盘外部读取FLASH控制指令,并解析命令为读操作,提取源地址和目标地址,磁盘控制单元将数据从FLASH芯片读出,读出的数据进行ECC校验和纠错;校验和纠错成功后,启动DMA写操作,将数据通过接口单元输出。
优选的,如果判断为需要进行运算,则按照本发明第三个方面所述的方法,运算单元读取DRAM芯片中的数据进行运算。
在本申请的一种优选实施例中,所述存储数据过程还包括:
数据写入FLASH芯片后,采集FLASH芯片的RB信号(RB信号为ready/busy状态信息,或:是否空闲的状态信息),当状态为空闲(ready)时;读取Flash内部操作状态,根据状态值判断操作结果;
发送操作完成指令,接口单元不再接收数据。
在本申请的一种优选实施例中,所述判断操作结果时,如果写操作成功,则更新映射表和可用表;如果写操作不成功,则重复上述存储数据过程,或者写操作不成功次数达到预定值,则判断对应的存储区域存在故障。
在本申请的一种优选实施例中,所述读取数据过程包括:
接口单元收到外部指令,激活磁盘控制单元对应的FLASH芯片通道寄存器,磁盘控制单元启动DMA读操作,通过接口单元从磁盘外部读取FLASH控制指令,并解析命令为读操作,提取源地址和目标地址,
磁盘控制单元将数据从FLASH芯片读出,读出的数据进行ECC校验和纠错;校验和纠错成功后,启动DMA写操作,将数据通过接口单元输出。
在一种更优选实施例中,接口单元发送指令给运算单元,磁盘控制单元将读取的数据发送给DRAM芯片,运算单元读取DRAM芯片中的数据,并进行运算,运算后将数据发送回DRAM芯片;然后,外部通过接口单元读取DRAM芯片中的数据。
在本申请的一种优选实施例中,如果校验和纠错失败,则磁盘控制单元在上发接口单元的操作完成信息中标识。
在本申请上述内容中,所述运算可以是加密运算、解密运算、数据压缩、数据解压恢复等可行的运算方式中的一种或几种。
本申请提出一种存储磁盘以及存取数据的方法,依靠硬件逻辑做运算,将相应结果保存在存储介质中,能够处理存储TB级的大数据,大大提升企业数据处理能力。
本申请存储磁盘以及存取数据的方法,读写速度快,支持加密算法,存储容量大,单模块读写速度可超过6GB/s,单板可支持48TB以上存储容量。
附图说明
图1为本申请存储磁盘硬件设计拓扑示意图;
图2为本申请存储磁盘与外部通讯连接示意图;
图3为本申请存储数据方法流程示意图;
图4为本申请读取数据方法流程示意图。
具体实施方式
本申请提供了一种存储磁盘,参照图1和图2,存储磁盘优选为SSD磁盘,包括FPGA控制器1进行运算加速和闪存控制,FPGA控制器1包括接口单元6,用于对外接收数据,接收单位包括对外数据接口以及PCIe IP硬核,如图2所示,对外数据接口可以是连接网络接口子***11,也可以是连接单机设备的CPU 14(可以是PPC、x86、申威、龙芯、飞腾等CPU)。连接网络接口子***11可以连接到互联网或局域网,如IP网络12和/或Rapid IO网络13。
参照图1,FPGA控制器1上,接口单元6与磁盘控制器3之间可以进行数据通讯。接口单元6、磁盘控制器3均可以与至少一个DDR4 DRAM芯片2进行数据通讯。
在FPGA控制器1上,还设有运算单元5,DDR4 DRAM芯片2与运算单元5之间进行数据通讯。
接口单元6将指令直接发送给运算单元5,并可以通过PR IP核7更新运算单元5内的算法程序。接口单元6将指令直接发送给磁盘控制器3。PR是一种动态修改逻辑模块的技术,通过在不妨碍其它逻辑运行的同时下载部分比特位文件来实现,既:动态配置部分芯片时,芯片的其他部分可正常工作,且向芯片中下载部分配置bit文件时,芯片的DONE脚不被拉低。使用FPGA的这一特性,可实现对芯片的分时复用。IP核是一种己验证的、可重利用的、具有某种确定功能的IC模块。
磁盘控制器3与一个或多个NAND FLASH芯片4进行数据通讯。
参照图3,在一种实施例中,本申请存储磁盘进行存储数据的过程如下:外部Host构造命令,写doorbell寄存器,磁盘控制器3根据doorbell寄存器的指示准备DMA读操作,更新对应于NAND FLASH芯片4的通道的寄存器;启动DMA读操作,命令从host内存向磁盘控制器3的指定通道的缓存空间转移;
磁盘控制器将命令解析为写操作,解析数据和目标地址,通过一次或多次DMA操作,将数据从主机转移至磁盘控制器3的闪存空间;
磁盘控制器3为数据生成ECC校验码,磁盘控制器3将带有ECC校验码的数据写入相应通道的NAND FLASH芯片4;
采集RB信号,读取FLASH IO,判断操作结果,如果写操作成功,则更新映射表和可用表;如果写操作失败,则重复发起写操作,或者判断相关NAND FLASH芯片4内的存储区域出现故障。
如果存储过程中,需要对数据进行额外计算,如加密计算、压缩计算或其他处理,接口单元发送信号给运算单元,接口单元将数据发送给DDR4 DRAM芯片2,磁盘控制器2将数据发送给DDR4 DRAM芯片2。运算单元5读取DDR4DRAM芯片2中的数据,进行相关运算之后,将数据发回DDR4 DRAM芯片2,磁盘控制器3读取DDR4 DRAM芯片2中的数据后,进行存储。
参照图4,在一种实施例中,本申请存储磁盘进行读取数据的过程如下:构造命令,写doorbell寄存器,根据doorbell寄存器的指示读取命令;
准备DMA读操作,更新对应于NAND FLASH芯片4的通道的寄存器;
启动DMA读操作,数据从host内存向指定通道的DDR4 DRAM芯片2闪存空间转移;
磁盘控制器3将命令解析为读操作,解析源地址;磁盘控制器3对NAND FLASH芯片4内的数据进行读操作,放入内部缓存;
磁盘控制器3对缓存数据进行ECC校验和纠错
如果ECC校验和纠错成功,通过一种或多次操作,将数据从存储磁盘转移至主机内存;如果校验或纠错失败,则中断读取操作。
如果读取过程中,需要对数据进行额外计算,如加密计算、压缩计算或其他处理,接口单元发送信号给运算单元,磁盘控制器2读取存储设备中的数据,发送给DDR4 DRAM芯片2。运算单元5读取DDR4 DRAM芯片2中的数据,进行相关运算之后,将数据发回DDR4 DRAM芯片2,磁盘控制器3读取DDR4DRAM芯片2中的数据后,或者,接口单元6读取DDR4 DRAM芯片2的数据。
本申请存储磁盘以及数据存取方法,支持国密、普密等加密算法,单模块读写速度可超过6GB/s,单板可支持48TB以上存储容量。
以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。