CN103038753B - 用基于日志的缓冲向基于nand存储块的文件系统写入的方法 - Google Patents
用基于日志的缓冲向基于nand存储块的文件系统写入的方法 Download PDFInfo
- Publication number
- CN103038753B CN103038753B CN201180027058.XA CN201180027058A CN103038753B CN 103038753 B CN103038753 B CN 103038753B CN 201180027058 A CN201180027058 A CN 201180027058A CN 103038753 B CN103038753 B CN 103038753B
- Authority
- CN
- China
- Prior art keywords
- block
- data
- data group
- temporary storage
- page
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
示出了一种操作控制器以便控制NAND存储器芯片的编程的方法。NAND存储器芯片具有多个块,其中每个块具有一定存储量,其中,每个块中的存储量是最小可擦除单元。该方法包括在临时存储器中存储第一多个数据组,其中,每个数据组将被存储在NAND存储器芯片的块中。每个数据组被索引至其将被存储到的块。最后,与同一块相关联的数据组在同一编程操作中被编程到同一块中。
Description
技术领域
本发明涉及一种操作NAND存储器控制器的方法以及用以操作包括NAND存储器控制器和NAND集成电路芯片的存储设备的方法。本发明的方法增加NAND存储器对基于块的闪速文件系统执行随机写入的性能。
背景技术
NAND存储器集成电路芯片在本领域中是众所周知的。在NAND存储器芯片中,该存储器的特征在于许多存储块,每个块包含许多页面。块是最小可擦除单元。因此,如果NAND存储块中的页面已被写入或编程,则在该页面相关联的整个块被擦除之前,其不能被再次重新编程或重新写入。因此,在基于块的闪速文件系统(FFS)中,当替换或重写预写块的一部分(诸如一页)时,必须将该块的重写数据和未改变数据部分合并到新擦除块中。因此,如图1所示,如果要对原始块的页面2和3进行重写,则首先将用于那些页面的新数据保存在临时块中,并且然后与原始块的其他页面合并成合并块。因此,从原始块拷贝页面0和1,从临时块拷贝页面2和3,并将从页面4至原始块结尾的其余页面从原始块拷贝到合并块。然后可以擦除原始和临时块以供未来使用。
当NAND的块具有128或256个页面且移动每个页面可能花费数毫秒时,合并操作可能非常长。另外,随着块的大小和编程时间增加,合并时间将增加。
此外,在基于NAND存储器的芯片中,存在许多块,只有几个块被分配为临时块。参考图2,示出了具有一千(1,000)个块的NAND芯片的示意层级图,其中的九百九十二(992)个块被分配给存储数据的指定数据块,而八(8)个块被分配给临时块。典型的写入操作可以如下。让我们假设要将数据页面写入数据块0中,在其中已存在预写数据的位置上。因此,作为执行上述合并操作的替代,首先将数据的(一个或多个)新页面写入临时块中,例如块992,其中块992被分配为与数据块0相关联。
如果新数据的页面被NAND芯片接收到且其被指定为用于被擦除的页面,在数据块0~991中的任何地方,则新数据的页面被写入该位置。然而,如果新数据的页面目的地是数据块0,在那里其将覆写在另一数据页面上,则将其存储在临时块992中。最后,如果新数据页面被指定为用于除数据块0之外的数据块中的页面,例如数据块4,在那里其将重写另数据页面,则新数据页面被存储在临时块993中,并且临时块993随后与数据块4相关联。由于合并操作要求长时间段,所以其被尽可能长地拖延。这是通过将新数据页面存储在临时块中来完成的。然而,由于在现有技术中,分配了非常少的临时块(例如对于每1000个数据块而言,8个块),由于使用尽可能多的数据块的期望,NAND存储器芯片将很快用完临时块。例如,在上述示例中,如果接收到用于要重写第九不同数据块的新数据页面的第九“写入”操作,则必须首先执行合并操作以释放临时块。随着NAND芯片在存储容量方面的增加和块数目的增加,NAND芯片快速要求合并操作以释放临时块的可能性增加。
更接近地类似于其中在能够对(一个或多个)新数据页面进行写入之前NAND芯片具有少数合并操作的真实随机写入操作的问题的一个现有技术解决方案是具有与数据块一样多的临时块。用临时块与数据块的1:1比例,用于合并操作的要求急剧降低。然而,这种解决方案导致非常少的数据块可用于用户数据的存储。因此期望新的解决方案。
发明内容
本发明克服了此限制,在本发明中示出了一种操作控制器以便控制NAND存储器芯片的编程的方法。NAND存储器芯片具有多个块,其中每个块具有一定存储量,其中,每个块中的存储量是最小可擦除单元。该方法包括在临时储存器中存储第一多个数据组,其中,每个数据组将被存储在一块NAND存储器芯片中,其中数据组小于数据块。每个数据组被索引至其将被存储到的块。最后,与同一块相关联的数据组在同一编程操作中被编程到同一块中。
附图说明
图1是现有技术的合并操作的方框图。
图2是现有技术的写入操作期间的临时块到被用于临时存储数据的数据块的分配的方框图。
图3是用本发明的方法进行操作以控制NAND存储器芯片并从主机设备接收命令的控制器的方框图。
图4是示出了用于在本发明的方法中使用的具有数据块和临时块的NAND存储器芯片的地址空间的图。
图5是供本发明使用的索引表的示例。
具体实施方式
参考图3,示出了用本发明的方法操作的NAND存储器控制器10的方框层级图。控制器10通过诸如地址总线14、数据总线16和控制总线18的众所周知的总线来与NAND存储器集成电路芯片12的操作对接并控制该操作。典型地,对于NAND存储器10而言,地址总线14和数据总线16是相同的,即通过同一总线来传输地址和数据。虽然本发明是一种用于操作存储器控制器10的方法,但本发明还可以用来操作存储设备,其包括作为存储器模块被封装在一起或者甚至被集成在一起的NAND存储器芯片12和控制器10。控制器10还可以与易失性存储器30对接并连接到易失性存储器30。在该情况下,地址总线14、数据总线16和控制总线18也被连接到易失性存储器30。
控制器10通过诸如PATA(并行ATA)或SATA(串行ATA)命令协议的众所周知的协议与主机设备20对接。
如前所述,本发明通过降低执行合并操作的频率而解决了改善基于块的非易失性存储器系统中的随机写入性能的问题。
如前文所讨论的,由于NAND存储器芯片12的性质,为了将数据写入块的(一个或多个)预写页面中,必须首先擦除整个块。在本发明的方法中,如果要将新数据页面写入数据块的预写页面中,而不是擦除整个数据块,则首先将新数据页面写入临时块中的下一个可用页面中。类似于现有技术,临时块可以在NAND存储器芯片12中。
然而,不同于其中每个临时块与数据块相关联且只能将与该数据块相关联的那些页面写入同一临时块中的现有技术,用本发明的方法,同一临时块中的每个页面可以存储目的地是存储在不同数据块中的数据。因此,可以在需要将新数据页面写入数据块中之前利用每个临时块来存储用于不同数据块的许多数据页面。因此,可以用一比保存在临时块中的页数的比来降低合并操作的频率。
例如,如图4所示,临时块992的页面0可以存储目的地是将被存储在数据块0中的数据。在同一临时块992中,页面1可以存储目的地是存储在数据块2中的新数据。最后,在临时块992中,页面2可以存储目的地是存储在数据块4中的数据。因此,不同于现有技术,同一临时块中的页面可以存储目的地是不同数据块的数据。此外,诸如临时块993的不同临时块可以存储目的地是存储在数据块(例如数据块0)中的新数据页面(例如页面1),临时块992中的数据页面(例如页面0)的目的地也是存储在所述数据块中。换言之,可以将目的地是存储在同一数据块中的页面存储在不同临时块中。在本发明的方法中,由于新数据页面将被存储在数据块中,并且确定的是该位置未被擦除,则将该新数据页面存储在临时块的集合中的下一个可用页面中。因此,临时块保持将被写入数据块中的新数据页面的记录。
为了跟踪临时块中的数据页面与数据块中的用于存储的最终目的地之间的相关,创建索引表。可以以许多不同的方式来完成编索引,诸如用物理地址或用逻辑地址。在图5中示出了一个示例。图5示出了物理地址索引表。索引表的每行表示存储在临时块中的数据页面,其包含关于其中临时存储该页面的物理地址和数据页面的最终目的地的页面地址的信息。这些地址可以采取如下所述的块地址或页面地址的形式。
“逻辑页号”指的是最后将用此新数据页面来更新的数据块中的页面。
“逻辑块号”指的是其中将最后写入新数据页面的数据块中的块号。
“物理块地址”指的是其中保持新数据页面的临时块的物理地址。
“物理页面地址”指的是在将新数据更新成数据块之前保持新数据的临时块中的物理页面地址。
在本发明的方法中,由NAND存储器控制器10从主机设备20接收到新数据页面。控制器10检查其中将写入新数据页面以确定该地址是否包含已擦除存储器存储单元(memorycells)或预写数据的数据块中的位置。如果该位置包含已擦除存储器存储单元,则新数据页面被写入该位置上。然而,如果该位置包含预写数据,则将新数据页面写入临时块中的下一个可用已擦除页面。控制器10然后关于将在哪里写入新数据页面而更新索引表,其包括新数据页面的逻辑地址以及其中将临时写入新数据页面的关联物理地址。必须保持并在更新NAND存储设备的操作中为常规且本领域的技术人员众所周知的其他表格,诸如逻辑到物理块的映射以及临时块号到物理块的映射。
由于每个临时块并不与唯一数据块相关联,所以目的地是存在预先存在数据的位置的新数据的累积页数可能大得多。因此,可以降低执行合并操作的频率。对于具有256个页面的临时块而言,一个临时块可以存储目的地是256个不同数据块的256个页面或每个数据块多个页面。如果存在八个临时块,则可以存在多达2048个不同数据块,其中该八个临时块可以充当其缓冲器或存储区域。此外,如果这些临时块服务于128个数据块,则每个数据块可以具有在需要执行合并操作之前在临时块中累积的16个页面的平均值。相反,在现有技术中,单个临时块可以充当用于仅一个数据块的缓冲器,并且八个临时块可以充当用于仅八个不同数据块的缓冲器。当然,权衡是需要创建索引表。可以将该索引表存储在易失性存储器30中或者甚至在NAND存储器12本身中。存储在易失性存储器30中的索引表的优点是检索的速度。缺点是易失性,这可能促使数据在突然电源切断的情况下丢失。
可以在存在要求NAND芯片12的资源方面的暂停时以机会主义方式或在指定的间隔或事件出现时以确定性方式完成将来自临时块的新数据页面合并成数据块。在机会主义合并的情况下,可以在不对主机命令引起任何延迟的情况下执行合并操作。在合并操作期间,控制器10收集来自将被存储在同一数据块中的临时块的所有新数据页面,并将那些新数据页面与来自同一数据块的未替换数据页面合并并将其写入已擦除数据块。然后擦除原始数据块,并且然后从临时块和从索引表删除新数据页面和关联数据,诸如块号、物理地址和逻辑地址。
合并操作可以以两个方式中的一个发生。以一个方式,将临时块中的所有页面写入数据块中。这后面是所有临时块以及索引表的擦除。以这种方式,由于可能存在存储在临时块中的许多页面,所以合并操作可能花费很长时间。
以第二方式,合并操作可以每次仅更新一个或几个数据块。以这种操作方式,从临时块中选择目的地是同一数据块的可以被存储在多个不同临时块中的页面并写入相同(一个或多个)数据块中。然而,在这种方法中,由于并不是来自临时块的所有数据页面都被合并操作写入数据块中,所以必须只将被写入页面从临时块擦除。然而,由于每个临时块也是数据的“块”,这意味着必须将该块中的所有数据一起擦除,所以必须完成所谓的“垃圾收集”。在本领域中众所周知的“垃圾收集”操作中,将同一临时块中的未合并数据页面传输到临时块的完全擦除块,使得然后可以擦除临时块。另外,必须同样地从索引表清除掉参考在合并操作期间写入的数据页面的那些条目。因此,虽然仅将用于仅一个或几个数据块的页面合并的第二技术不要求冗长的邻近合并操作,但其要求附加的后续“垃圾收集”过程,这产生附加开销。
如果向控制器10进行读取请求,则在新数据页面被合并到数据块中之前,控制器10使用由主机设备20供应的逻辑地址作为读取请求的一部分来从索引表读取新数据页面的位置。如果该逻辑地址未被包含于索引表中,指示该数据在数据块中且未被替换,则控制器10使用逻辑地址来搜索数据块以读取数据页面。
如从前文可以看到的,由于临时块保存每个新数据页面且不与任何一个特定数据块相关联,用本发明的方法,临时块可以在需要执行一个或多个合并操作之前保持更多的新数据页面。另外,当存在合并操作时,与现有技术的方法相比,可以在同一合并操作中存储来自同一临时块的更多页面。
Claims (8)
1.一种操作控制器以便控制NAND存储器芯片的编程的方法,其中,所述NAND存储器芯片具有多个块,其中每个块具有多个存储组,其中,每个块中的存储量是最小可擦除单元,其中,所述方法包括:
将多个数据组存储在临时存储器的多个块中,其中,在所述临时存储器的多个块之一中的数据组中的至少两个将被存储在所述NAND存储器芯片的所述多个块中的不同块中;并且其中所述临时存储器的多个块中不同块中的数据组中的至少两个将被存储在所述NAND存储器芯片的所述多个块中的相同块中;
在索引表中将临时存储器的块中的每个数据组编索引至NAND存储器芯片中的块中的一存储组,其将被存储在那里;
收集来自所有将被存储在所述NAND存储器芯片的多个块中相同块中的临时存储器中存储的多个新数据组;
将从临时存储器中收集的所有多个新数据组连同来自相同块中的未替换数据组一起写入到与所述NAND存储器芯片的相同块不同的NAND存储器芯片的擦除块中;
将被写入到擦除块的数据组从所述临时存储器中删除;以及
将用于从所述临时存储器删除的数据组的索引从所述索引表删除。
2.根据权利要求1所述的方法,其中,所述多个存储组中的每个都是页面。
3.根据权利要求1所述的方法,其中,所述编索引步骤包括:
创建到被写入临时存储器中的数据组的物理地址的逻辑地址的表。
4.根据权利要求1所述的方法,其中,所述写入步骤对来自所述临时存储器的所有数据组进行写入。
5.根据权利要求4所述的方法,其中,所述删除数据组将所有数据组从所述临时存储器删除。
6.根据权利要求5所述的方法,其中,所述从所述索引表删除步骤删除所有索引。
7.根据权利要求1所述的方法,其中,所述删除数据组步骤还包括:
仅删除被写入的数据组以及
执行垃圾收集步骤以将所述临时存储器中的其余数据组合并。
8.根据权利要求7所述的方法,其中,所述从索引表删除还包括:
仅删除用于被写入数据组的索引以及
执行垃圾收集步骤以将索引表中的其余索引合并。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/791767 | 2010-06-01 | ||
US12/791,767 | 2010-06-01 | ||
US12/791,767 US8838878B2 (en) | 2010-06-01 | 2010-06-01 | Method of writing to a NAND memory block based file system with log based buffering |
PCT/US2011/036664 WO2011152984A1 (en) | 2010-06-01 | 2011-05-16 | A method of writing to a nand memory block based file system with log based buffering |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103038753A CN103038753A (zh) | 2013-04-10 |
CN103038753B true CN103038753B (zh) | 2016-04-06 |
Family
ID=45023068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180027058.XA Active CN103038753B (zh) | 2010-06-01 | 2011-05-16 | 用基于日志的缓冲向基于nand存储块的文件系统写入的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8838878B2 (zh) |
EP (1) | EP2577469A4 (zh) |
JP (1) | JP5631486B2 (zh) |
CN (1) | CN103038753B (zh) |
WO (1) | WO2011152984A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885889A (zh) * | 2014-03-19 | 2014-06-25 | 广州市泰斗软核信息科技有限公司 | 一种基于nor flash的数据存储方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514971A (zh) * | 2001-01-19 | 2004-07-21 | 非易失性存储器中的部分分块数据编程和读取操作 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101085406B1 (ko) | 2004-02-16 | 2011-11-21 | 삼성전자주식회사 | 불 휘발성 메모리를 제어하기 위한 컨트롤러 |
JP4713867B2 (ja) | 2004-09-22 | 2011-06-29 | 株式会社東芝 | メモリコントローラ,メモリ装置及びメモリコントローラの制御方法 |
US7292476B2 (en) | 2005-08-31 | 2007-11-06 | Micron Technology, Inc. | Programming method for NAND EEPROM |
EP1895418B1 (en) * | 2005-12-09 | 2015-04-01 | Panasonic Corporation | Nonvolatile memory device, method of writing data, and method of reading out data |
US7626866B2 (en) | 2006-07-28 | 2009-12-01 | Micron Technology, Inc. | NAND flash memory programming |
JP2008152464A (ja) | 2006-12-15 | 2008-07-03 | Toshiba Corp | 記憶装置 |
KR100885181B1 (ko) | 2007-02-06 | 2009-02-23 | 삼성전자주식회사 | 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법 |
US7804718B2 (en) * | 2007-03-07 | 2010-09-28 | Mosaid Technologies Incorporated | Partial block erase architecture for flash memory |
US7751245B2 (en) | 2007-10-10 | 2010-07-06 | Micron Technology, Inc. | Programming sequence in NAND memory |
TWI398770B (zh) | 2008-07-08 | 2013-06-11 | Phison Electronics Corp | 用於快閃記憶體的資料存取方法、儲存系統與控制器 |
-
2010
- 2010-06-01 US US12/791,767 patent/US8838878B2/en active Active
-
2011
- 2011-05-16 WO PCT/US2011/036664 patent/WO2011152984A1/en active Application Filing
- 2011-05-16 CN CN201180027058.XA patent/CN103038753B/zh active Active
- 2011-05-16 JP JP2013513196A patent/JP5631486B2/ja active Active
- 2011-05-16 EP EP11790175.1A patent/EP2577469A4/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514971A (zh) * | 2001-01-19 | 2004-07-21 | 非易失性存储器中的部分分块数据编程和读取操作 |
Also Published As
Publication number | Publication date |
---|---|
EP2577469A1 (en) | 2013-04-10 |
JP2013531291A (ja) | 2013-08-01 |
US8838878B2 (en) | 2014-09-16 |
JP5631486B2 (ja) | 2014-11-26 |
CN103038753A (zh) | 2013-04-10 |
US20110296080A1 (en) | 2011-12-01 |
WO2011152984A1 (en) | 2011-12-08 |
EP2577469A4 (en) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7450420B2 (en) | Reclaiming data storage capacity in flash memories | |
US8452940B2 (en) | Optimized memory management for random and sequential data writing | |
EP2519880B1 (en) | Micro-update architecture for address tables | |
EP1920335B1 (en) | Reclaiming data storage capacity in flash memory systems | |
CN109977034B (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
CN102508788B (zh) | Ssd及ssd垃圾回收方法和装置 | |
US20100169542A1 (en) | Dynamic mapping of logical ranges to write blocks | |
CN104484283B (zh) | 一种降低固态硬盘写放大的方法 | |
CN101241471A (zh) | 快闪存储器系统及其垃圾收集方法 | |
KR20110081150A (ko) | 다중 수행 모드 메모리 시스템 | |
JP2008530708A (ja) | フラッシュメモリにおける直接データファイル記憶実施技術 | |
JP2008530710A (ja) | フラッシュメモリにおける直接データファイル記憶 | |
JP5266250B2 (ja) | 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用 | |
CN103294604A (zh) | 闪存器件和使用闪存器件的电子设备 | |
CN102662856A (zh) | 一种固态硬盘及其存取方法 | |
CN103970669A (zh) | 用于加速在固态设备中的回收操作的物理到逻辑地址映射 | |
CN104424110A (zh) | 固态驱动器的主动回收 | |
CN102279809A (zh) | 一种在固态硬盘中重定向写入及垃圾回收的方法 | |
US11269771B2 (en) | Storage device for improving journal replay, operating method thereof, and electronic device including the storage device | |
JP2010515163A (ja) | ダイレクトデータファイルメモリシステムにおけるlbaインターフェイスの管理 | |
CN101894077B (zh) | 一种数据存储方法及系统 | |
CN103038753B (zh) | 用基于日志的缓冲向基于nand存储块的文件系统写入的方法 | |
US20100306455A1 (en) | Method for managing a plurality of blocks of a flash memory, and associated memory device and controller thereof | |
CN111767007A (zh) | 用于闪存的写入管理机制 | |
CN103389943A (zh) | 控制装置、存储装置及存储控制方法 |
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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20130410 Assignee: Green core semiconductor (Xiamen) Co., Ltd. Assignor: Greenliant LLC Contract record no.: 2018990000016 Denomination of invention: A method of writing to a NAND memory block based file system with log based buffering Granted publication date: 20160406 License type: Exclusive License Record date: 20180119 |