一种固态硬盘数据保护方法及固态硬盘与流程

文档序号:11775173阅读:530来源:国知局
一种固态硬盘数据保护方法及固态硬盘与流程

本发明涉及固态硬盘控制技术,特别涉及一种固态硬盘数据保护方法及固态硬盘。



背景技术:

图1是典型的nand组成示意图:die,可独立并发操作的单元;block,可独立擦除的单元,其内各个物理位置的数据写入后在下一次写之前必须要将整个block擦除;page,读写单元。

ssd(固态硬盘)已经被广泛应用于各种场合,其逐步在替换传统的hdd存储设备。为了获取最大的nand并发写入速度,需要在内存(dram)中维护用户数据cache,在缓存足够的数据后发起对nand的并发写入,从而获取最高的性能。

由于nand的特性,以mlc为例,当某个页面(uppage)正在编程时,如果出现programfail,不但该页面会损坏,对应的coupling页面(lowpage)也会损坏,导致数据丢失。

同时还存在当系统在往nand写入数据的过程中,发生系统掉电的异常是正在写入的数据将发生损坏,且系统重新上电还无法恢复。特别是进一步地,如果在lowpage编程完成后,系统发生过掉电,重新上电后,在编程对应的uppage发生programfail,由于存储lowpage的dram掉电易失性问题,使得lowpage数据恢复变得不可行。

图2是编程出错对其它page的影响示意图,以mlc颗粒为例说明,每个数据块都由page0~page255构成,pagen-2和pagen为一对耦合页couplingpage,且pagen-2为lowpage,n为uppage。page0–n-1已经完成数据写入,pagen正在编程,发生编程错误,pagen-2的drambuffer在完成pagen-2编程后即已经释放,因此当pagen正在编程,发生编程错误时造成pagen-2数据的损坏,该数据无法恢复。因此出现了当pagen编程出错时,可能导致pagen-2已经写入的数据损坏的问题。

如果在pagen-1编程完成后发生掉电,缓存在dram中的pagen-2的数据已经丢失。重新上电后,在进行pagen编程时发生错误,则pagen-2的数据也无法恢复。



技术实现要素:

针对以上缺陷,本发明目的避免某个页编程出错时造成已存储的其它耦合页数据损坏且无法恢复的问题。

为了解决以上问题本发明提出了一种固态硬盘数据保护方法,其特征在于在固态硬盘中增加scm,硬盘控制器将scm作为固态硬盘数据缓存,后台设置更新程序,主动或者被动触发将数据缓存中的数据写入到nand中,记录缓存数据的逻辑地址,将该缓存的有效性标志设置为y;在向nand写入前增加判断当前写入的nand所在的物理页是否为lowpage,如果是则将有效性标志valid设置为t,表示该页数据对应的数据缓存为不可释放状态;否则将有效性标志valid设置为n,表示该页数据对应的数据缓存为可释放状态;当数据写入发生错误时,如果是uppage,则将该数据页对应在数据缓存中可能存在的lowpage读出重新写入nand中。

所述的固态硬盘数据保护方法,其特征在于在固态硬盘重新上电时,扫描scm数据缓存的数据,检测各个数据的有效标志,将有效标志为y的缓存数据写入到nand中;将有效标志为的缓存数据继续保持。

所述的固态硬盘数据保护方法,其特征在于当向nand写入的数据为uppage时,如果成功写入nand,则将数据缓存中可能存在的lowpage的有效标志设置为n。

任意一项所述的固态硬盘数据保护方法,其特征在于将主机数据写入scm实现数据缓存时,将主机数据的地址信息、逻辑地址和有效性标志validflag按照预先设定的格式写入scm,有效性标志初始状态设为y。

所述的固态硬盘数据保护方法,其特征在于按照如下步骤完成数据写入操作:

步骤1:硬盘控制器接收到主机下发的写数据指令;

步骤2:在scm中的空闲空间中分配缓存内存,将主机数据、地址信息和有效性标志写入缓存内存;

步骤3:更新程序在后台运行,定时或随机被触发判定scm中缓存的数据是否满足nand并发编程条件或则预先设定的条件,如果满足则触发将scm中缓存的数据更新到固态硬盘的nand存储单元。

一种固态硬盘,其特征在于采用了权利要求1至5任意一项所述的固态硬盘数据保护方法。

本发明通过增加对已完成编程的lowpage继续保存到其coupling页面数据的也正常写入后再释放,在编程uppage时或异常掉电造成数据破坏时可以对数据进行恢复,起到了对固态硬盘数据保护的作用。

附图说明

图1是典型的nand组成示意图;

图2是编程出错对其它page的影响示意图;

图3是增加数据保护后编程出错的处理示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

scm(storage-classmemory),储存级存储器,能够提供比快闪存储器更快速的读写速度,在成本上则比动态随机存取存储器(dram)更为便宜.即使是在失去电源的状态下依旧可以不间断保存资料,支持字节级别的操作。写入、写操作和编程都是指的像nand写入数据的操作。

图3是增加数据保护后编程出错的处理示意图;在固态硬盘中增加scm,硬盘控制器将scm作为固态硬盘数据缓存,后台设置更新程序,主动或者被动触发将数据缓存中的数据写入到nand中,记录缓存数据的逻辑地址,将该缓存的有效性标志设置为y;在向nand写入前增加判断当前写入的nand所在的物理页是否为lowpage,如果是则将有效性标志valid设置为t,表示该页数据对应的数据缓存为不可释放状态;则将有效性标志valid设置为n,表示该页数据对应的数据缓存为可释放状态;当数据写入发生错误时,如果是uppage,则将该数据页对应在数据缓存中可能存在的lowpage读出重新写入nand中。

具体为当主机新写入用户数据时,在scm中分配空余的空间写入用户数据、逻辑地址、并且标志validflag为y。当拼凑起足够多的数据或者其他特定的策略触发,将scm中的数据写入到nand上完成nand成功写入后,如果所在的nand物理页是lowpage,则将对应的valid标志修改为t,表示该数据尚不可释放;如果所在的nand物理页是uppage,则将该数据以及lowpage对应的数据的valid标志修改为n,表示该数据可释放。若发生nand写入错误,则将该笔数据以及可能存在的couplinglowpage的数据重新写入到新的nand物理地址。

若在编程uppage前发生掉电,重新上电后,scm中的数据仍然存在,此时只需要扫描scm,将validflag标志为y的缓存数据cacheentry继续转移到nand上即可,同时validflag标志为t的缓存数据cacheentry继续保持到关联的uppageprogram成功后再释放。

因此无论是正常写入是发生写数据错误造成的数据破坏,还是系统异常掉电造成的数据破坏,都可以得到恢复,大大提高了数据的安全性,起到了对固态硬盘数据保护的效果。

以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。

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