一种基于高速非易失性存储器的固态硬盘掉电保护方法与流程

文档序号:20604501发布日期:2020-05-01 21:57阅读:552来源:国知局
一种基于高速非易失性存储器的固态硬盘掉电保护方法与流程

本发明属于计算机存储技术领域,尤其涉及一种基于高速非易失性存储器的固态硬盘掉电保护方法。



背景技术:

固态硬盘(solidstatedrive,ssd)相较于机械硬盘(harddiskdrive,hdd),其性能、功耗、可靠性等都有很大的优势,因此无论在企业级还是消费级市场,ssd正逐渐取代hdd,成为主流存储设备。ssd的主要存储介质为闪存,如nandflash,但一般会配有一定大小的写缓存以提高写性能,目前ssd写缓存多使用动态随机存储器(dynamicrandomaccessmemory,dram),dram属于易失性存储器,无法对其中的数据提供掉电保护。因此若系统遭遇异常掉电,那么ssd向主机回应“已完成”的写命令对应的还在dram中主机数据就会丢失。

目前,该问题的解决方案通常是在ssd中增加用于掉电保护的电池或电容,使得dram能够在系统异常掉电后再继续工作一段时间,将其中剩余的主机数据写入闪存芯片。然而,随着ssd性能的提升,dram容量也逐渐增大,因此所需电池或电容的容量也进一步增加,这将直接导致该方案成本高昂,其可靠性又难以保证。

高速非易失性存储器,如磁随机存储器(magneticrandomaccessmemory,mram),其特点为保存在其中的数据掉电后不会丢失,所以高速非易失性存储器能够在极少或无掉电保护电容的情况下实现对数据的保护。此外,高速非易失性存储器还具有与ram同一级别的读写速度,可以进行快速访问。



技术实现要素:

本发明旨在解决上述问题,提供一种利用高速非易失性存储器解决ssd异常掉电数据保护的固态硬盘掉电保护方法。

本发明所述基于高速非易失性存储器的固态硬盘掉电保护方法,包括ssd主控芯片;一组用于存储数据的闪存芯片;一组用于掉电保护和写缓存功能的高速非易失性存储芯片;所述闪存芯片、高速非易失性存储芯片均与ssd主控芯片相电连接;

系统正常上电运行产生的运行数据存储于高速非易失性存储芯片;所述运行数据包括:

主机向ssd主控芯片发送的写命令;

写命令分解的数据列表及其对应的主机数据;数据列表的每个表项包括其对应主机数据在写缓存中的位置信息;

写命令的处理和完成状态;用于标识ssd的写缓存是否已从主机端获取到该条写命令对应的全部主机数据;如果是,则该状态标识为“已完成”,ssd会向主机回复完成信息,对主机而言,该条写命令已完成,但ssd还需要将这些写缓存中的主机数据写入至闪存芯片。

需要说明的是,上述运行数据的存储结构包括但不限于列表、循环列表、数组、链表。

系统在异常掉电后重新上电启动流程包括:

首先,ssd主控芯片在高速非易失性存储芯片中逐条读取主机发生异常掉电之前下发的写命令,并查找每条写命令对应的处理和完成状态;

接着,对处理和完成状态标识为“已完成”的写命令,从高速非易失性存储芯片中读取该条命令对应的命令分解的数据列表,然后对数据列表中每个表项对应的写缓存中的主机数据执行重新写入闪存芯片的操作,并同步更新相应的系统表项数据;

对处理和完成状态标识为“未完成”的写命令,则直接将其忽略;

最后,当高速非易失性存储芯片中的所有写命令都已被读取,并按上述流程处理完毕后,将已更新的系统表项数据写入闪存芯片,上电启动流程结束。

进一步,本发明所述基于高速非易失性存储器的固态硬盘掉电保护方法,所述运行数据还包括:数据列表中每个表项的完成状态;用于标识某个表项对应的写缓存中的主机数据是否已成功写入至闪存芯片,如果是,则该状态标识为“已完成”;

需要说明的是,上述运行数据的存储结构包括但不限于列表、循环列表、数组、链表。

系统在异常掉电后重新上电启动流程包括:

首先,ssd主控芯片在高速非易失性存储芯片中逐条读取主机发生异常掉电之前下发的写命令,并查找每条写命令对应的处理和完成状态;

接着,对处理和完成状态标识为“已完成”的写命令,从高速非易失性存储芯片中读取该命令对应的命令分解的数据列表,但不直接将所有表项对应的写缓存中的主机数据全部写入闪存芯片,而是进一步读取数据列表中每个表项的完成状态:对完成状态标识为“未完成”的表项,对其对应写缓存中的主机数据执行重新写入闪存芯片的操作,并同步更新相应的系统表项数据;对完成状态标识为“已完成”的表项,则不做处理;对处理和完成状态标识为“未完成”的写命令,则直接将其忽略;

最后,当高速非易失性存储芯片中的所有写命令都已被读取,并按上述流程处理完毕,将已更新的系统表项数据写入闪存芯片,上电启动流程结束。

本发明所述基于高速非易失性存储器的固态硬盘掉电保护方法,采用高速非易失性存储器作为ssd的写缓存,系统发生异常掉电时,高速非易失性存储器会对主机数据提供保护,使其不会因掉电而丢失。系统重新上电后,查找异常掉电前未处理完毕的写命令,将其对应的主机数据重新写入闪存芯片,以保证主机数据的安全性和一致性;同时,本发明提供的掉电保护方案可以在极少或无掉电保护电容的情况下实现对主机数据的保护,相较于传统使用电容对易失性写缓存进行掉电保护的方法,本发明更具可靠性。

附图说明

图1为本发明所述基于高速非易失性存储器的固态硬盘架构示意图;

图2为本发明实施例一所述命令处理时产生的运行数据的存储流程图;

图3为本发明实施例一所述系统异常掉电后重新上电的启动流程图;

图4为本发明实施例二所述命令处理时产生的运行数据的存储流程图;

图5为本发明实施例二所述系统异常掉电后重新上电的启动流程图。

具体实施方式

下面通过附图及实施例对本发明所述基于高速非易失性存储器的固态硬盘掉电保护方法进行详细说明。

实施例一

本发明所述基于高速非易失性存储器的固态硬盘掉电保护方法,如图1所示,包括ssd主控芯片;一组用于存储数据的闪存芯片;一组用于掉电保护和写缓存功能的高速非易失性存储芯片;所述闪存芯片、高速非易失性存储芯片均与ssd主控芯片相电连接;

系统正常上电工作时,如图2所示,运行中产生的运行数据存储于高速非易失性存储芯片,首先是主机向ssd发送的写命令;然后是写命令分解的数据列表及其对应的主机数据;最后是写命令的处理和完成状态。

运行数据具体包括:

(1)主机向ssd主控芯片发送的写命令;

(2)写命令分解的数据列表及其对应的主机数据;数据列表的每个表项包括其对应主机数据在写缓存中的位置信息;

(3)写命令的处理和完成状态;用于标识ssd的写缓存是否已从主机端获取到该条写命令对应的全部主机数据;如果是,则该状态标识为“已完成”,ssd会向主机回复完成信息,对主机而言,该条写命令已完成,但ssd还需要将这些写缓存中的主机数据写入至闪存芯片。

由于上述运行数据被高速非易失性存储器保护,因此不会因为掉电而丢失。

如图3所示,系统在异常掉电后重新上电启动流程包括如下步骤:

首先,ssd主控芯片在高速非易失性存储芯片中逐条读取主机发生异常掉电之前下发的写命令,并查找每条写命令对应的处理和完成状态;

接着,对处理和完成状态标识为“已完成”的写命令,从高速非易失性存储芯片中读取该条命令对应的命令分解的数据列表,然后对数据列表中每个表项对应的写缓存中的主机数据执行重新写入闪存芯片的操作,并同步更新相应的系统表项数据;

对处理和完成状态标识为“未完成”的写命令,则直接将其忽略;

最后,当高速非易失性存储芯片中的所有写命令都已被读取,并按上述流程处理完毕,将已更新的系统表项数据写入闪存芯片,上电启动流程结束。

实施例二

本实施例所述基于高速非易失性存储器的固态硬盘掉电保护方法,在实施例一的基础上,在系统正常上电工作时,如图4所示,运行中产生的运行数据存储于高速非易失性存储芯片,首先是主机向ssd发送的写命令;然后是写命令分解的数据列表及其对应的主机数据;接着是写命令的处理和完成状态;最后是数据列表中每个表项的完成状态。

运行数据具体包括:

(1)主机向ssd主控芯片发送的写命令;

(2)写命令分解的数据列表及其对应的主机数据;数据列表的每个表项包括其对应主机数据在写缓存中的位置信息;

(3)写命令的处理和完成状态;用于标识ssd的写缓存是否已从主机端获取到该条写命令对应的全部主机数据;如果是,则该状态标识为“已完成”,ssd会向主机回复完成信息,对主机而言,该条写命令已完成,但ssd还需要将这些写缓存中的主机数据写入至闪存芯片。

(4)数据列表中每个表项的完成状态;用于标识某个表项对应的写缓存中的主机数据是否已成功写入至闪存芯片,如果是,则该状态标识为“已完成”。

由于上述运行数据被高速非易失性存储器保护,因此不会因为掉电而丢失。

如图5所示,系统在异常掉电后重新上电启动流程包括如下步骤:

首先,ssd主控芯片在高速非易失性存储芯片中逐条读取主机发生异常掉电之前下发的写命令,并查找每条写命令对应的处理和完成状态;

接着,对处理和完成状态标识为“已完成”的写命令,从高速非易失性存储芯片中读取该命令对应的命令分解的数据列表,但不直接将所有表项对应的写缓存中的主机数据逐个写入闪存芯片,而是进一步读取数据列表中每个表项的完成状态:对完成状态标识为“未完成”的表项,对其对应写缓存中的主机数据执行重新写入闪存芯片的操作,并同步更新相应的系统表项数据;对完成状态标识为“已完成”的表项,则不做处理;对处理和完成状态标识为“未完成”的写命令,则直接将其忽略;

最后,当高速非易失性存储芯片中的所有写命令都已被读取,并按上述流程处理完毕,将已更新的系统表项数据写入闪存芯片,上电启动流程结束。

本发明所述基于高速非易失性存储器的固态硬盘掉电保护方法,在发生异常掉电时,主机通过写命令向ssd的写入的主机数据可能仅有部分被写入闪存芯片中,而其余未被写入闪存芯片的主机数据,则由高速非易失性存储器的写缓存对其提供掉电保护,以确保在掉电后数据的完整性。每一块被保护的主机数据,由数据列表的一个表项来标识其在高速非易失性存储器写缓存中的位置信息。系统再次上电时,需要继续完成异常掉电前的写操作,将高速非易失性存储器写缓存中保护的主机数据重新写入闪存芯片中,以确保主机数据的安全性和一致性。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1