CN102789422A - 固态硬盘的数据写入方法及系统 - Google Patents
固态硬盘的数据写入方法及系统 Download PDFInfo
- Publication number
- CN102789422A CN102789422A CN2012102097214A CN201210209721A CN102789422A CN 102789422 A CN102789422 A CN 102789422A CN 2012102097214 A CN2012102097214 A CN 2012102097214A CN 201210209721 A CN201210209721 A CN 201210209721A CN 102789422 A CN102789422 A CN 102789422A
- Authority
- CN
- China
- Prior art keywords
- write
- little
- data
- solid state
- hard disc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 239000007787 solid Substances 0.000 claims description 58
- 238000002679 ablation Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明适用于计算机技术领域,提供了一种固态硬盘的数据写入方法,所述方法包括:将逻辑块内包含的逻辑页划分为若干第一写入点和第二写入点,当所述固态硬盘接收写命令时,选择其中的一个所述第一写入点作为所述写命令的起始写入点。更好的是,逻辑块的一个存储单元包括两个所述逻辑页,分别被划分为第一写入点和第二写入点,用于存储低位数据和高位数据。借此保证主机的当前写命令不会破坏之前已写入逻辑块内的数据。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种固态硬盘的数据写入方法及系统。
背景技术
MLC(Multi-Level Cell,多层单元)Nand Flash相对SLC(Single-Level Cell,单层单元)Nand flash有更高的存储密度,在固态硬盘领域有着越来越广泛的应用。MLC Nand Flash一个存储单元(memory cell)可以存储2bits的信息,这2bits分属于两个不同的page,这样的一组page叫couple pages,存低位比特的叫low page,存高位比特的叫up page,它执行写有以下两个约束:1)Low page必须在up page之前被写入;2)Up page在写入过程中被打断,比如异常掉电,uppage的信息会丢失,而且它对应的low page的信息也可能会丢失,而low page不会影响其up page。
现有技术通过额外提供备用电源或超级电容,当主电源断电时,由备用电源供电保证当前正在写的数据成功写入到Nand Flash中。但这种解决方式需要提供外部的硬件支持,增加了成本和硬件复杂性,仍然无法解决备用电源同样会失效造成相同的问题;另外,现有技术没有考虑到MLC Nand Flash独有的特点,即当前写命令执行过程中异常掉电还可能会破坏此前已经写入到Nand Flash中的数据。在固态硬盘领域,可以允许异常掉电造成当前部分数据的丢失,但是不允许异常掉电破坏此前已经写入Nand Flash的数据。这种异常掉电造成的影响是MLC Nand Flash独有的特点。
综上可知,现有的固态硬盘的数据写入技术,在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种固态硬盘的数据写入方法及系统,可以确保固态硬盘当前执行的写命令不会破坏之前已写入Nand Flash的数据。
为了实现上述目的,本发明提供一种固态硬盘的数据写入方法,所述方法包括:
将逻辑块内包含的逻辑页划分为若干第一写入点和第二写入点,当所述固态硬盘接收写命令时,选择其中的一个所述第一写入点作为所述写命令的起始写入点。
根据本发明的固态硬盘的数据写入方法,所述逻辑块的一个存储单元包括两个所述逻辑页,所述两个逻辑页分别被划分为对应的所述第一写入点和第二写入点。
根据本发明的固态硬盘的数据写入方法,若所述写命令的结束写入点之后排列有第二写入点,则所述固态硬盘再次接收写命令时,将所述第二写入点之后的首个第一写入点作为所述写命令的起始写入点。
根据本发明的固态硬盘的数据写入方法,所述存储单元存储2bit数据,所述数据包括低位数据和高位数据。
根据本发明的固态硬盘的数据写入方法,所述第一写入点对应的逻辑页用于存储所述低位数据,所述第二写入点对应的逻辑页用于存储所述高位数据。
根据本发明的固态硬盘的数据写入方法,所述固态硬盘接收到写命令时,先将所述低位数据写入,再将所述高位数据写入。
根据本发明的固态硬盘的数据写入方法,所述方法还包括:将所述逻辑块中的有效页搬移到其它逻辑块中。
根据本发明的固态硬盘的数据写入方法,所述方法还包括:
固态硬盘上电时,检查所述数据搬移是否完成;
若所述数据搬移未完成,则继续搬移对应的逻辑页,并判断该逻辑页是否为所述第二写入点,若是,则对该逻辑页对应的第一写入点进行读操作,如果所述读操作失败,则对该第一写入点重新做数据搬移。
本发明还相应的提供一种固态硬盘的数据写入系统,所述系统包括:
写入点划分模块,用于将逻辑块内包含的逻辑页划分为若干第一写入点和第二写入点;
选择模块,用于当所述固态硬盘接收写命令时,选择其中的一个所述第一写入点为所述写命令的起始写入点。
根据本发明的固态硬盘的数据写入系统,所述系统还包括搬移模块,用于将所述逻辑块中的有效页搬移到其它逻辑块中。
本发明通过将固态硬盘内逻辑块包含的逻辑页划分为若干第一写入点和第二写入点,且优选的,第一写入点为写入安全点,当固态硬盘接收写命令时,选择其中的一个第一写入点为所述写命令的起始写入点。借此,若固态硬盘在执行写命令时,发生异常掉电,不会破坏已经写入到NAND Flash中的数据。更好的,本发明还可以在一个逻辑块写入完成后进行数据搬移,保证有足够的写入空间。
附图说明
图1是本发明一实施例的固态硬盘的结构示意图;
图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的信息也可能会丢失,而low page信息的丢失则不会影响其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情况如下表1所示,表中只列举了前12个page的情况,后续的page与此类似。
表1
本发明的系统100保证当前写命令执行过程中的异常掉电不会破坏在此之前所有写入的数据。这种写分配不会造成额外的写放大,但是每个逻辑块内真实可用的page数量会低于实际page数量。本发明可以结合两种办法解决该问题:1)增加OP(over provision),即额外提供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,本发明提供了一种固态硬盘的数据写入方法,其可以通过如图1所示的系统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进行读操作,如果失败,则对该lowpage也重新做搬迁。更好的,为保证重新做搬迁时源数据仍然存在,本发明做以下限制:只有当“源block”内数据已搬迁完毕,并且“目的block”落在安全点上,“源block”才能被擦除,借此保证数据的安全性和完整性。
综上所述,本发明通过将固态硬盘内逻辑块包含的逻辑页划分为若干第一写入点和第二写入点,且优选的,第一写入点为写入安全点,当固态硬盘接收写命令时,选择其中的一个第一写入点为所述写命令的起始写入点。借此,若固态硬盘在执行写命令时,发生异常掉电,不会破坏已经写入到NAND Flash中的数据。更好的,本发明还可以在一个逻辑块写入完成后进行数据搬移,保证有足够的写入空间。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1.一种固态硬盘的数据写入方法,其特征在于,所述方法包括:
将逻辑块内包含的逻辑页划分为若干第一写入点和第二写入点,当所述固态硬盘接收写命令时,选择其中的一个所述第一写入点作为所述写命令的起始写入点。
2.根据权利要求1所述的固态硬盘的数据写入方法,其特征在于,所述逻辑块的一个存储单元包括两个所述逻辑页,所述两个逻辑页分别被划分为对应的所述第一写入点和第二写入点。
3.根据权利要求1所述的固态硬盘的数据写入方法,其特征在于,若所述写命令的结束写入点之后排列有第二写入点,则所述固态硬盘再次接收写命令时,将所述第二写入点之后的首个第一写入点作为所述写命令的起始写入点。
4.根据权利要求2所述的固态硬盘的数据写入方法,其特征在于,所述存储单元存储2bit数据,所述数据包括低位数据和高位数据。
5.根据权利要求4所述的固态硬盘的数据写入方法,其特征在于,所述第一写入点对应的逻辑页用于存储所述低位数据,所述第二写入点对应的逻辑页用于存储所述高位数据。
6.根据权利要求4所述的固态硬盘的数据写入方法,其特征在于,所述固态硬盘接收到写命令时,先将所述低位数据写入,再将所述高位数据写入。
7.根据权利要求2所述的固态硬盘的数据写入方法,其特征在于,所述方法还包括:将所述逻辑块中的有效页搬移到其它逻辑块中。
8.根据权利要求7所述的固态硬盘的数据写入方法,其特征在于,所述方法还包括:
固态硬盘上电时,检查所述数据搬移是否完成;
若所述数据搬移未完成,则继续搬移对应的逻辑页,并判断该逻辑页是否为所述第二写入点,若是,则对该逻辑页对应的第一写入点进行读操作,如果所述读操作失败,则对该第一写入点重新做数据搬移。
9.一种固态硬盘的数据写入系统,其特征在于,所述系统包括:
写入点划分模块,用于将逻辑块内包含的逻辑页划分为若干第一写入点和第二写入点;
选择模块,用于当所述固态硬盘接收写命令时,选择其中的一个所述第一写入点作为所述写命令的起始写入点。
10.根据权利要求9所述的固态硬盘的数据写入系统,其特征在于,所述系统还包括搬移模块,用于将所述逻辑块中的有效页搬移到其它逻辑块中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210209721.4A CN102789422B (zh) | 2012-06-25 | 2012-06-25 | 固态硬盘的数据写入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210209721.4A CN102789422B (zh) | 2012-06-25 | 2012-06-25 | 固态硬盘的数据写入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102789422A true CN102789422A (zh) | 2012-11-21 |
CN102789422B CN102789422B (zh) | 2016-03-23 |
Family
ID=47154827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210209721.4A Expired - Fee Related CN102789422B (zh) | 2012-06-25 | 2012-06-25 | 固态硬盘的数据写入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102789422B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019616A (zh) * | 2012-11-23 | 2013-04-03 | 记忆科技(深圳)有限公司 | 一种固态硬盘及闪存芯片的充放电控制方法 |
CN103279402A (zh) * | 2013-05-13 | 2013-09-04 | 记忆科技(深圳)有限公司 | 基于多层单元固态硬盘的数据恢复方法及固态硬盘 |
CN103092765B (zh) * | 2012-12-31 | 2015-08-05 | 记忆科技(深圳)有限公司 | 固态存储系统、装置及数据写入方法 |
CN105955669A (zh) * | 2016-05-10 | 2016-09-21 | 记忆科技(深圳)有限公司 | 一种提升固态硬盘写性能的方法 |
CN107885459A (zh) * | 2017-09-30 | 2018-04-06 | 记忆科技(深圳)有限公司 | 一种软件实现固态硬盘写入数据加扰的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101194238A (zh) * | 2005-06-24 | 2008-06-04 | 松下电器产业株式会社 | 存储器控制器、非易失性存储装置、非易失性存储系统及数据写入方法 |
CN101339806A (zh) * | 2007-07-04 | 2009-01-07 | 三星电子株式会社 | 防止非易失性存储器中的数据丢失的设备和方法 |
US20090172256A1 (en) * | 2007-12-31 | 2009-07-02 | Phison Electronics Corp. | Data writing method for flash memory, and flash memory controller and storage device thereof |
CN101620513A (zh) * | 2008-07-03 | 2010-01-06 | 慧国(上海)软件科技有限公司 | 资料储存方法及其储存装置 |
CN101625897A (zh) * | 2008-07-11 | 2010-01-13 | 群联电子股份有限公司 | 用于快闪存储器的数据写入方法、储存系统与控制器 |
-
2012
- 2012-06-25 CN CN201210209721.4A patent/CN102789422B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101194238A (zh) * | 2005-06-24 | 2008-06-04 | 松下电器产业株式会社 | 存储器控制器、非易失性存储装置、非易失性存储系统及数据写入方法 |
CN101339806A (zh) * | 2007-07-04 | 2009-01-07 | 三星电子株式会社 | 防止非易失性存储器中的数据丢失的设备和方法 |
US20090172256A1 (en) * | 2007-12-31 | 2009-07-02 | Phison Electronics Corp. | Data writing method for flash memory, and flash memory controller and storage device thereof |
CN101620513A (zh) * | 2008-07-03 | 2010-01-06 | 慧国(上海)软件科技有限公司 | 资料储存方法及其储存装置 |
CN101625897A (zh) * | 2008-07-11 | 2010-01-13 | 群联电子股份有限公司 | 用于快闪存储器的数据写入方法、储存系统与控制器 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019616A (zh) * | 2012-11-23 | 2013-04-03 | 记忆科技(深圳)有限公司 | 一种固态硬盘及闪存芯片的充放电控制方法 |
CN103019616B (zh) * | 2012-11-23 | 2015-11-25 | 记忆科技(深圳)有限公司 | 一种固态硬盘及闪存芯片的充放电控制方法 |
CN103092765B (zh) * | 2012-12-31 | 2015-08-05 | 记忆科技(深圳)有限公司 | 固态存储系统、装置及数据写入方法 |
CN103279402A (zh) * | 2013-05-13 | 2013-09-04 | 记忆科技(深圳)有限公司 | 基于多层单元固态硬盘的数据恢复方法及固态硬盘 |
CN103279402B (zh) * | 2013-05-13 | 2016-08-10 | 记忆科技(深圳)有限公司 | 基于多层单元固态硬盘的数据恢复方法及固态硬盘 |
CN105955669A (zh) * | 2016-05-10 | 2016-09-21 | 记忆科技(深圳)有限公司 | 一种提升固态硬盘写性能的方法 |
CN107885459A (zh) * | 2017-09-30 | 2018-04-06 | 记忆科技(深圳)有限公司 | 一种软件实现固态硬盘写入数据加扰的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102789422B (zh) | 2016-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9400744B2 (en) | Magnetic random access memory journal for multi-level cell flash memory | |
US10389380B2 (en) | Efficient data path architecture for flash devices configured to perform multi-pass programming | |
KR100823170B1 (ko) | 배드 블록을 싱글 레벨 셀 모드로 사용하는 메모리 시스템및 메모리 카드 | |
CN105808455B (zh) | 访问内存的方法、存储级内存及计算机系统 | |
CN102722455B (zh) | 一种闪存设备中数据存储的方法及装置 | |
US8656090B2 (en) | Method for performing block management, and associated memory device and controller thereof | |
CN101963891A (zh) | 数据存储处理方法与装置、固态硬盘系统与数据处理系统 | |
US20140328127A1 (en) | Method of Managing Non-Volatile Memory and Non-Volatile Storage Device Using the Same | |
US8549214B2 (en) | Protection against data corruption for multi-level memory cell (MLC) flash memory | |
JP2012234254A (ja) | メモリシステム | |
US10108342B2 (en) | Method for reducing use of DRAM in SSD and the SSD using the same | |
KR20100104903A (ko) | 디램 버퍼 관리 장치 및 방법 | |
US20110060865A1 (en) | Systems and Methods for Flash Memory Utilization | |
CN102298543A (zh) | 一种存储器管理方法和装置 | |
CN102789422A (zh) | 固态硬盘的数据写入方法及系统 | |
US9639441B2 (en) | Solid-state storage system, apparatus and method of writing data | |
CN102981969A (zh) | 重复数据删除的方法及其固态硬盘 | |
CN115437580B (zh) | 一种数据存储设备的管理方法、系统及数据存储设备 | |
US20120206981A1 (en) | Method and device for writing data | |
US20140258606A1 (en) | Storage control device, storage device, information processing system, and storage control method | |
US20210181976A1 (en) | Write operations to mitigate write disturb | |
CN102789813B (zh) | 一种控制存储设备内非最低有效位页使用的方法及装置 | |
US20150261448A1 (en) | Memory system, memory controller and control method of non-volatile memory | |
CN102362263A (zh) | Ssd控制器与ssd控制器的操作方法 | |
CN105677244A (zh) | 一种降低tlc闪存的固态硬盘写放大的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160323 |