一种固态硬盘原子写入的方法及固态硬盘技术

技术编号:18398368 阅读:29 留言:0更新日期:2018-07-08 19:17
本发明专利技术公开了一种固态硬盘原子写入的方法及固态硬盘,其特征在于增加原子写管理数据,所述原子写管理数据至少包括原子命令编号CMD_NO、命令包含的页面数CMD_SIZE和该笔数据在命令中的偏移CMD_Offset;对于非原子写命令的命令包含的页面数固定设置为0;对于非原子写命令的命令的偏移固定设置为0:增加命令解析模块用于识别主机写命令是否为原子写命令,命令解析模块根据主机写命令的数据的长度和起始地址是否满足条件来判别是否为原子写命令,将该笔数据更新到NAND FLASH的物理空间时,同时将该笔数据对应原子写管理数据也写入Meta中。在支持NVMe原子写入的同时,降低了DWB引入的写放大以及性能的下降。

【技术实现步骤摘要】
一种固态硬盘原子写入的方法及固态硬盘
本专利技术涉及固态硬盘控制技术,特别涉及一种固态硬盘原子写入的方法及固态硬盘。
技术介绍
SSD(固态硬盘)已经被广泛应用于各种场合,由于NAND的特性,在异常掉电时会导致数据的损坏。某些应用程序,如文件系统或者数据库,对于数据的完整性需求比较高,如果数据生效的顺序得不到保障,会导致数据一致性、可靠性发生问题。进一步地,在NVMe时代,对于原子写入提出了进一步的要求。对于给定上限大小的命令,硬盘需要保证要么全部写入,要么全部丢弃,而不能出现部分生效的情形。图1是典型的NAND组成示意图:通道DIE,可独立并发操作的单元;块Block,可独立擦除的单元,其内各个物理位置的数据写入后在下一次写之前必须要将整个Block擦除;Page,读写单元,同一物理块内的Page必需按顺序编程:0->1->2->3…。图2是异常掉电后引起的数据不一致问题示意,以一个SSD内部有四个独立DIE组成的情形为例。当系统正在进行主机数据读写时,如果发生异常掉电,因为各个DIE上的负载不一样,比如部分DIE上的读命令比较多等,会导致掉电时刻各个DIE上写入的Page地址不一样。当系统重新上电时,此时对于系统中最后写入的物理块中的Page状态各不一样。如图2中所示,需要原子写入的CMDX/Y的部分数据是正确的数据,部分是错误的,此时不加约束的话,则会导致命令内部分数据有效,部分无效,违背了对于原子写入的要求。图3传统原子写入系统示意图,为了支持原子写入的解决方案。在该方案中,为了对抗掉电时的不可控性,需要引入双写缓存DoubleWriteBuffer,应用程序需要原子写入数据时,需要遵循如下步骤:-S0:先将数据写入到DoubleWriteBuffer;-S1:完成DoubleWriteBuffer写入;-S2:正式更新用户数据;此处,在更新用户数据前,先写入DoubleWriteBuffer,主要是保障在用户数据写入时有一份完整的拷贝。如果掉电发生在S1完成前,则上电后通过校验可知DoubleWriteBuffer数据不完整,维持用户数据不变即可;如果掉电发生在S2中,则上电后可通过DoubleWriteBuffer中的数据继续完成用户数据更新。此方案中确实可以实现原子写入,但是由于数据需要写入2次,在SSD应用场景中会导致写放大比较高,而且也会显著地降低SSD的性能。
技术实现思路
针对以上缺陷,本专利技术目的是如何降低主机端冗余写操作,保证数据的原子写入和数据完整性。为了解决以上问题本专利技术提出了一种固态硬盘原子写入的方法,其特征在于增加原子写管理数据,所述原子写管理数据至少包括原子命令编号CMD_NO、命令包含的页面数CMD_SIZE和该笔数据在命令中的偏移CMD_Offset;对于非原子写命令的命令包含的页面数固定设置为0;对于非原子写命令的命令的偏移固定设置为0:增加命令解析模块用于识别主机写命令是否为原子写命令,命令解析模块根据主机写命令的数据的长度和起始地址是否满足条件来判别是否为原子写命令,将该笔数据更新到NANDFLASH的物理空间时,同时将该笔数据对应原子写管理数据也写入Meta中。所述固态硬盘原子写入的方法,其特征在于命令解析模块将起始地址和长度与物理页对齐的命令判定为原子写入命令,对于非对齐的判定为非原子写入命令。所述的固态硬盘原子写入的方法,其特征在于固态硬盘在初始上电时扫描找到最早数据未成功写入的位置,并扫描未成功写入的位置的前一个写入的位置,读取该页数据的Meta数据,并取出CMD_NO、CMD_SIZE和CMD_Offset,当CMD_Offset!=CMD_SIZE-1且CMD_SIZE〉0时根据写入顺序往回退CMD_Offset格物理页数据,并从该位置起依次读取各个物理页状态;对于不符合条件的则从最早数据未成功写入的位置起依次读取各个物理页状态;在扫描过程中,根据原子写命令的要求,只有在其数据全部正确时才更新映射表;而对于非原子写,只要单页数据正确则进行更新映射表。一种固态硬盘,其特征在于增加原子写管理数据,所述原子写管理数据至少包括原子命令编号CMD_NO、命令包含的页面数CMD_SIZE和该笔数据在命令中的偏移CMD_Offset;对于非原子写命令的命令包含的页面数固定设置为0;对于非原子写命令的命令的偏移固定设置为0:增加命令解析模块用于识别主机写命令是否为原子写命令,命令解析模块根据主机写命令的数据的长度和起始地址是否满足条件来判别是否为原子写命令,将该笔数据更新到NANDFLASH的物理空间时,同时将该笔数据对应原子写管理数据也写入Meta中。所述固态硬盘,其特征在于命令解析模块将起始地址和长度与物理页对齐的命令判定为原子写入命令,对于非对齐的判定为非原子写入命令。所述的固态硬盘,其特征在于固态硬盘在初始上电时扫描找到最早数据未成功写入的位置,并扫描未成功写入的位置的前一个写入的位置,读取该页数据的Meta数据,并取出CMD_NO、CMD_SIZE和CMD_Offset,当CMD_Offset!=CMD_SIZE-1且CMD_SIZE〉0时根据写入顺序往回退CMD_Offset格物理页数据,并从该位置起依次读取各个物理页状态;对于不符合条件的则从最早数据未成功写入的位置起依次读取各个物理页状态;在扫描过程中,根据原子写命令的要求,只有在其数据全部正确时才更新映射表;而对于非原子写,只要单页数据正确则进行更新映射表。本专利技术的有益效果是:通过引入该方案,在支持NVMe原子写入的同时,降低了DWB引入的写放大以及性能的下降。附图说明图1是典型的NAND组成示意图;图2是异常掉电后引起的数据不一致问题示意;图3传统原子写入系统示意图;图4是增加原子写管理表的缓存数据图图5是原子写入过程示意图;图6是异常掉电导致的原子写数据生效的处理机制示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图4是增加原子写管理表的缓存数据图,增加原子写管理表Meta管理,除传统的系统管理数据OthersSystemFields外,至少新增如下的字段:原子命令编号CMD_NO:该笔数据所对应的命令索引,该索引在运行时刻遇到原子写入时递增;命令包含的页面数CMD_SIZE:该命令所包含的页面数,对于非原子写,固定为0;该笔数据在命令中的偏移CMD_Offset:该笔数据在命令中的偏移,对于非原子写,固定为0;对于原子写,取值为0~CMD_SIZE–1。图5是原子写入过程示意图:第一步:主机提交写命令;第二步:主机提交写数据完成数据传输到SSD后,SSD报告主机写入完成。第三步:SSD接口Internal进行数据实际写入操作,为达到原子写的目的,需要引入如下的改进:1)增加了命令解析模块ATOMCMDFilter:负责对命令进行解析,识别是否为原子写命令;根据NVMeSpec(NVMe协议标准)需求,可以定义特定约本文档来自技高网
...

【技术保护点】
1.一种固态硬盘原子写入的方法,其特征在于增加原子写管理数据,所述原子写管理数据至少包括原子命令编号CMD_NO、命令包含的页面数CMD_SIZE和该笔数据在命令中的偏移CMD_Offset;对于非原子写命令的命令包含的页面数固定设置为0;对于非原子写命令的命令的偏移固定设置为0:增加命令解析模块用于识别主机写命令是否为原子写命令,命令解析模块根据主机写命令的数据的长度和起始地址是否满足条件来判别是否为原子写命令,将该笔数据更新到NAND FLASH的物理空间时,同时将该笔数据对应原子写管理数据也写入Meta中。

【技术特征摘要】
1.一种固态硬盘原子写入的方法,其特征在于增加原子写管理数据,所述原子写管理数据至少包括原子命令编号CMD_NO、命令包含的页面数CMD_SIZE和该笔数据在命令中的偏移CMD_Offset;对于非原子写命令的命令包含的页面数固定设置为0;对于非原子写命令的命令的偏移固定设置为0:增加命令解析模块用于识别主机写命令是否为原子写命令,命令解析模块根据主机写命令的数据的长度和起始地址是否满足条件来判别是否为原子写命令,将该笔数据更新到NANDFLASH的物理空间时,同时将该笔数据对应原子写管理数据也写入Meta中。2.根据权利要求1所述固态硬盘原子写入的方法,其特征在于命令解析模块将起始地址和长度与物理页对齐的命令判定为原子写入命令,对于非对齐的判定为非原子写入命令。3.根据权要求1或2所述的固态硬盘原子写入的方法,其特征在于固态硬盘在初始上电时扫描找到最早数据未成功写入的位置,并扫描未成功写入的位置的前一个写入的位置,读取该页数据的Meta数据,并取出CMD_NO、CMD_SIZE和CMD_Offset,当CMD_Offset!=CMD_SIZE-1且CMD_SIZE〉0时根据写入顺序往回退CMD_Offset格物理页数据,并从该位置起依次读取各个物理页状态;对于不符合条件的则从最早数据未成功写入的位置起依次读取各个物理页状态;在扫描过程中,根据原子写命令的要求,只有在其数据全部正确时才更新映射表;而对于非原子写,只要单页数据...

【专利技术属性】
技术研发人员:王猛徐伟华
申请(专利权)人:深圳忆联信息系统有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1