固态硬盘的数据写入方法及系统的制作方法

文档序号:6371940阅读:269来源:国知局
专利名称:固态硬盘的数据写入方法及系统的制作方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种固态硬盘的数据写入方法及系统。
背景技术
MLC(Multi-Level Cell,多层单兀)Nand Flash 相对 SLC(Single-Level Cell,单层单元)Nand flash有更高的存储密度,在固态硬盘领域有着越来越广泛的应用。MLCNand Flash 一个存储单元(memory cell)可以存储2bits的信息,这2bits分属于两个不同的page,这样的一组page叫couple pages,存低位比特的叫low page,存高位比特的叫up page,它执行写有以下两个约束1) Low page必须在up page之前被写入;2) Up page在写入过程中被打断,比如异常掉电,up page的信息会丢失,而且它对应的low page的信息也可能会丢失,而low page不会影响其up page。现有技术通过额外提供备用电源或超级电容,当主电源断电时,由备用电源供电保证当前正在写的数据成功写入到Nand Flash中。但这种解决方式需要提供外部的硬件支持,增加了成本和硬件复杂性,仍然无法解决备用电源同样会失效造成相同的问题;另外,现有技术没有考虑到MLC Nand Flash独有的特点,即当前写命令执行过程中异常掉电还可能会破坏此前已经写入到Nand Flash中的数据。在固态硬盘领域,可以允许异常掉电造成当前部分数据的丢失,但是不允许异常掉电破坏此前已经写入Nand Flash的数据。这种异常掉电造成的影响是MLC Nand Flash独有的特点。综上可知,现有的固态硬盘的数据写入技术,在实际使用上显然存在不便与缺陷,所以有必要加以改进。

发明内容
针对上述的缺陷,本发明的目的在于提供一种固态硬盘的数据写入方法及系统,可以确保固态硬盘当前执行的写命令不会破坏之前已写入Nand Flash的数据。为了实现上述目的,本发明提供一种固态硬盘的数据写入方法,所述方法包括将逻辑块内包含的逻辑页划分为若干第一写入点和第二写入点,当所述固态硬盘接收写命令时,选择其中的一个所述第一写入点作为所述写命令的起始写入点。根据本发明的固态硬盘的数据写入方法,所述逻辑块的一个存储单元包括两个所述逻辑页,所述两个逻辑页分别被划分为对应的所述第一写入点和第二写入点。根据本发明的固态硬盘的数据写入方法,若所述写命令的结束写入点之后排列有第二写入点,则所述固态硬盘再次接收写命令时,将所述第二写入点之后的首个第一写入点作为所述写命令的起始写入点。根据本发明的固态硬盘的数据写入方法,所述存储单元存储2bit数据,所述数据包括低位数据和高位数据。根据本发明的固态硬盘的数据写入方法,所述第一写入点对应的逻辑页用于存储所述低位数据,所述第二写入点对应的逻辑页用于存储所述高位数据。
根据本发明的固态硬盘的数据写入方法,所述固态硬盘接收到写命令时,先将所述低位数据写入,再将所述高位数据写入。根据本发明的固态硬盘的数据写入方法,所述方法还包括将所述逻辑块中的有效页搬移到其它逻辑块中。根据本发明的固态硬盘的数据写入方法,所述方法还包括固态硬盘上电时,检查所述数据搬移是否完成;若所述数据搬移未完成,则继续搬移对应的 逻辑页,并判断该逻辑页是否为所述第二写入点,若是,则对该逻辑页对应的第一写入点进行读操作,如果所述读操作失败,则对该第一写入点重新做数据搬移。本发明还相应的提供一种固态硬盘的数据写入系统,所述系统包括写入点划分模块,用于将逻辑块内包含的逻辑页划分为若干第一写入点和第二写入点;选择模块,用于当所述固态硬盘接收写命令时,选择其中的一个所述第一写入点为所述写命令的起始写入点。根据本发明的固态硬盘的数据写入系统,所述系统还包括搬移模块,用于将所述逻辑块中的有效页搬移到其它逻辑块中。本发明通过将固态硬盘内逻辑块包含的逻辑页划分为若干第一写入点和第二写入点,且优选的,第一写入点为写入安全点,当固态硬盘接收写命令时,选择其中的一个第一写入点为所述写命令的起始写入点。借此,若固态硬盘在执行写命令时,发生异常掉电,不会破坏已经写入到NAND Flash中的数据。更好的,本发明还可以在一个逻辑块写入完成后进行数据搬移,保证有足够的写入空间。


图I是本发明一实施例的固态硬盘的结构示意图;图2是本发明一实施例的逻辑块的页分页结构示意图;图3是本发明一实施例的数据搬移结构示意图;图4是本发明一实施例的上电处理方法流程图;图5是本发明的固态硬盘的数据写入方法流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。参见图1,本发明提供了一种固态硬盘的数据写入系统,该系统100包括写入点划分模块10、选择模块20及搬移模块30。其中写入点划分模块10用于将逻辑块(block)内包含的逻辑页(page)划分为若干第一写入点和第二写入点。本发明的实施例中,固态硬盘采用的储存结构为MLCNand Flash,其包括若干逻辑块,每个逻辑块包含有若干逻辑页。当固态硬盘接收并执行写命令时,是以其中的一逻辑页为起始写入点或结束写入点。
进一步的,如背景技术中所述,逻辑块的一个存储单元包括两个逻辑页,有这两个逻辑页分别被划分为对应的所述第一写入点和第二写入点,且一个存储单元可以存储2bit数据,该数据包括低位数据和高位数据。在具体的执行写入命令时,按照写入规则,低位数据被写入第一写入点对应的逻辑页(low page),高位数据被写入第二写入点对应的逻辑页(up page),并且这一对数据在写入时,首先将低位数据写入,然后再写入高位数据。选择模块20用于当固态硬盘接收写命令时,选择其中的一个所述第一写入点为写命令的起始写入点。本发明背景技术中已经描述,Up page在写入过程中被打断,比如异常掉电,则该up page的信息会丢失,而且它对应的low page的信息也可能会丢失,而lowpage信息的丢失则不会影响其up page。因此,当固态硬盘执行主机(host)写命令时,若该写命令的最后写入点落在某个page上时,选择模块20会选择跳过随后的若干个第二写入点,跳到一个合适的第一写入点上,作为下次写命令的起始 写入点,当然,若该写命令的最后写入点之后的page为low page,则无需跳过,直接作为下次写命令的起始写入点。本发明的一实施例中,固态硬盘一逻辑块的page分布如图2所示,需要说明的,其它逻辑块的实际分布情况因Nand Flash产品而异,并不限于此分布。Flash写入按page序号从小到大。图2中page 0,1,4,5,8,9……划分为第一写入点,因为写这些page过程中出现异常掉电不会破坏在它之前的page,这些page都是low page ;与其相对的,page 2,3,6,7,10,11……定义为第二写入点,因为这些page写过程中异常掉电可能会破坏与它对应的low page,这些 page 都是 up page。具体应用中,假定当前写命令最后写入点落在page 6上,选择模块20会选择跳过page 7、10和11,下一个写命令将会从page 12开始写起,因为page 7、10和11属于第二写入点,且其low page已被当前写命令写入数据。同样的,对于该逻辑块内每个page作为最后写入点时,写分配需要跳过的page情况如下表I所示,表中只列举了前12个page的情况,后续的page与此类似。
^最后写入点需要跳过的 ^最后写入点需要跳过的
Up PageUp Pagc
_PO__P2/P3/P6__P6__P7/P10/P11
Pl__P2/P3/ P6/P7__Pl__P10/P11_
P2__P3/P6/P7__P8__P10/P11/P14
P3__P6/P7__P9__P1Q/P11/P14/P15
P4__P6/P7./P10__PlO__P11/P14/P15
P5__P6/P7/P10/P11 Pl I__PI4/P15_表I本发明的系统100保证当前写命令执行过程中的异常掉电不会破坏在此之前所有写入的数据。这种写分配不会造成额外的写放大,但是每个逻辑块内真实可用的page数量会低于实际page数量。本发明可以结合两种办法解决该问题1)增加OP(overprovision),即额外提供Nand Flash空间。2)内部数据搬迁,通过将多个没写满的block数据搬移到另外一个block内。具体的,本发明可通过搬移模块30将逻辑块中的有效页搬移到其它逻辑块中。实际应用中,主机读写固态硬盘的同时,搬移模块30对这些block进行搬迁,将多个没写满的block搬迁到一个block内,及时确保有足够的Nand Flash空间供主机写入。而“内部数据搬迁”的写分配按page序号从小到大依次写入,不会跳过任何page,如图3所示,将多个“源block”中的page搬移到“目的block”。需要说明的是,该过程也可能会发生异常断电,本发明可采用如图4所示方法解决,上电时会检查上次是否发生异常掉电,若是,则进一步检查上次“内部数据搬迁”是否完成,若没有,则继续搬移该page,并判断是否为第二写入点,如果是的话,还要对该page对应的low page进行读操作,如果失败,则对该low page也重新做搬迁。更好的,为保证重新做搬迁时源 数据仍然存在,本发明做以下限制只有当“源block”内数据已搬迁完毕,并且“目的block”落在安全点上,“源block”才能被擦除,借此保证数据的安全性和完整性。参见图5,本发明提供了一种固态硬盘的数据写入方法,其可以通过如图I所示的系统100实现,该方法包括步骤S501,写入点划分模块10将逻辑块内包含的逻辑页划分为若干第一写入点
和第二写入点。固态硬盘的Nand Flash包括若干block,每个block分布有若干page,这些page由写入点划分模块10划分为若干第一写入点和第二写入点。具体的,Block的一个存储单元包括两个page,且这两个page分别被划分为对应的第一写入点(对应page为low page)和第二写入点(对应page为up page)。每个储存单元存储2bit数据,且该数据包括低位数据和高位数据,第一写入点对应的page用于存储所述低位数据,第二写入点对应的page用于存储所述高位数据,当固态硬盘接收到写命令时,先将所述低位数据写入,再将所述高位数据写入。步骤S502,固态硬盘接收写命令时,选择模块20选择其中的一个第一写入点作为所述写命令的起始写入点。当固态硬盘执行写命令时,若该写命令的最后写入点落在某个page上,选择模块20会选择跳过随后的若干个第二写入点,跳到一个合适的第一写入点上,作为下次写命令的起始写入点。优选的,若该写命令的最后写入点之后的page为low page,则无需跳过,直接作为下次写命令的起始写入点。若所述写命令的结束写入点之后排列up page,固态硬盘再次接收写命令时,选择模块20将所述第二写入点之后的首个第一写入点作为所述写命令的起始与入点。更好的是,为保证硬盘数据的充分利用,在某block写完成之后,可以进行数据搬移,将当前block中的有效page搬移到其它block中。当然,在此搬移过程中也可能会发生异常掉电,本发明通过图4所示的方法流程进行解决,具体包括上电时会检查上次是否发生异常掉电,若是,则进一步检查上次“内部数据搬迁”是否完成,若没有,则继续搬移该page,并判断是否为第二写入点,如果是的话,还要对该page对应的low page进行读操作,如果失败,则对该Iowpage也重新做搬迁。更好的,为保证重新做搬迁时源数据仍然存在,本发明做以下限制只有当“源block”内数据已搬迁完毕,并且“目的block”落在安全点上,“源block”才能被擦除,借此保证数据的安全性和完整性。
综上所述,本发明通过将固态硬盘内逻辑块包含的逻辑页划分为若干第一写入点和第二写入点,且优选的,第一写入点为写入安全点,当固态硬盘接收写命令时,选择其中的一个第一写入点为所述写命令的起始写入点。借此,若固态硬盘在执行写命令时,发生异常掉电,不会破坏已经写入到NAND Flash中的数据。更好的,本发明还可以在一个逻辑块写入完成后进行数据搬移,保证有足够的写入空间。当然,本发明还可有其它多种实施例,在不背 离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种固态硬盘的数据写入方法,其特征在于,所述方法包括 将逻辑块内包含的逻辑页划分为若干第一写入点和第二写入点,当所述固态硬盘接收写命令时,选择其中的一个所述第一写入点作为所述写命令的起始写入点。
2.根据权利要求I所述的固态硬盘的数据写入方法,其特征在于,所述逻辑块的一个存储单元包括两个所述逻辑页,所述两个逻辑页分别被划分为对应的所述第一写入点和第二写入点。
3.根据权利要求I所述的固态硬盘的数据写入方法,其特征在于,若所述写命令的结束写入点之后排列有第二写入点,则所述固态硬盘再次接收写命令时,将所述第二写入点之后的首个第一写入点作为所述写命令的起始写入点。
4.根据权利要求2所述的固态硬盘的数据写入方法,其特征在于,所述存储单元存储2bit数据,所述数据包括低位数据和高位数据。
5.根据权利要求4所述的固态硬盘的数据写入方法,其特征在于,所述第一写入点对应的逻辑页用于存储所述低位数据,所述第二写入点对应的逻辑页用于存储所述高位数据。
6.根据权利要求4所述的固态硬盘的数据写入方法,其特征在于,所述固态硬盘接收到写命令时,先将所述低位数据写入,再将所述高位数据写入。
7.根据权利要求2所述的固态硬盘的数据写入方法,其特征在于,所述方法还包括将所述逻辑块中的有效页搬移到其它逻辑块中。
8.根据权利要求7所述的固态硬盘的数据写入方法,其特征在于,所述方法还包括 固态硬盘上电时,检查所述数据搬移是否完成; 若所述数据搬移未完成,则继续搬移对应的逻辑页,并判断该逻辑页是否为所述第二写入点,若是,则对该逻辑页对应的第一写入点进行读操作,如果所述读操作失败,则对该第一写入点重新做数据搬移。
9.一种固态硬盘的数据写入系统,其特征在于,所述系统包括 写入点划分模块,用于将逻辑块内包含的逻辑页划分为若干第一写入点和第二写入占. 选择模块,用于当所述固态硬盘接收写命令时,选择其中的一个所述第一写入点作为所述写命令的起始写入点。
10.根据权利要求9所述的固态硬盘的数据写入系统,其特征在于,所述系统还包括搬移模块,用于将所述逻辑块中的有效页搬移到其它逻辑块中。
全文摘要
本发明适用于计算机技术领域,提供了一种固态硬盘的数据写入方法,所述方法包括将逻辑块内包含的逻辑页划分为若干第一写入点和第二写入点,当所述固态硬盘接收写命令时,选择其中的一个所述第一写入点作为所述写命令的起始写入点。更好的是,逻辑块的一个存储单元包括两个所述逻辑页,分别被划分为第一写入点和第二写入点,用于存储低位数据和高位数据。借此保证主机的当前写命令不会破坏之前已写入逻辑块内的数据。
文档编号G06F12/02GK102789422SQ20121020972
公开日2012年11月21日 申请日期2012年6月25日 优先权日2012年6月25日
发明者徐伟华, 王猛, 郁志平 申请人:记忆科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1