CN102831070B - 用于存储器装置的存储地址重新映射的方法和*** - Google Patents
用于存储器装置的存储地址重新映射的方法和*** Download PDFInfo
- Publication number
- CN102831070B CN102831070B CN201210274159.3A CN201210274159A CN102831070B CN 102831070 B CN102831070 B CN 102831070B CN 201210274159 A CN201210274159 A CN 201210274159A CN 102831070 B CN102831070 B CN 102831070B
- Authority
- CN
- China
- Prior art keywords
- block
- address
- data
- sat
- lba
- 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.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 title claims abstract description 198
- 238000000034 method Methods 0.000 title claims abstract description 95
- 238000004891 communication Methods 0.000 claims abstract description 12
- 238000010586 diagram Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 6
- 239000000843 powder Substances 0.000 description 141
- 210000004027 cell Anatomy 0.000 description 42
- 230000008569 process Effects 0.000 description 42
- 230000000875 corresponding effect Effects 0.000 description 33
- 238000013507 mapping Methods 0.000 description 33
- 230000008859 change Effects 0.000 description 16
- 238000005192 partition Methods 0.000 description 15
- 230000005055 memory storage Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000013467 fragmentation Methods 0.000 description 10
- 238000006062 fragmentation reaction Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 8
- 238000013479 data entry Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000010354 integration Effects 0.000 description 6
- 230000015572 biosynthetic process Effects 0.000 description 4
- 239000004020 conductor Substances 0.000 description 4
- XDDAORKBJWWYJS-UHFFFAOYSA-N glyphosate Chemical compound OC(=O)CNCP(O)(O)=O XDDAORKBJWWYJS-UHFFFAOYSA-N 0.000 description 4
- 238000000926 separation method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 210000000352 storage cell Anatomy 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 101000666896 Homo sapiens V-type immunoglobulin domain-containing suppressor of T-cell activation Proteins 0.000 description 1
- 102100038282 V-type immunoglobulin domain-containing suppressor of T-cell activation Human genes 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- IJJVMEJXYNJXOJ-UHFFFAOYSA-N fluquinconazole Chemical compound C=1C=C(Cl)C=C(Cl)C=1N1C(=O)C2=CC(F)=CC=C2N=C1N1C=NC=N1 IJJVMEJXYNJXOJ-UHFFFAOYSA-N 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
公开了大容量存储器***和在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法。该大容量存储器***包括:可重新编程的非易失性存储器单元,该存储器单元被布置在能一起擦除的多个存储器单元块中;接口,适用于从主机***接收数据,该数据以主机逻辑块地址(LBA)地址来定址;以及与该接口通信的控制器,该控制器被配置为分配连续存储LBA地址的块用于从该主机***接收该数据,且被配置为将用于所接收的数据的主机LBA地址的每个重新映射到该连续存储LBA地址的块,其中,该控制器被配置为:将每个连续存储LBA地址顺序地按所接收的数据被接收的次序分配给所接收的数据,而不考虑与所接收的数据相关的主机LBA地址。
Description
本发明是以下发明专利申请的分案申请:申请号:200880102382.1,申请日:2008年6月3日,发明名称:用于存储器装置的存储地址重新映射的方法和***。
技术领域
本申请总体上涉及操作***和存储器装置之间的数据通信。更具体地,本申请涉及诸如可重新编程非易失性半导体闪存存储器的存储器***、以及连接或可连接该存储器的主机装置的操作。
背景技术
当将数据写入传统的闪存数据存储器***时,主机一般将独有的逻辑地址分配给存储器***的连续虚拟地址空间中的扇区、簇或其他数据单位。主机将数据写入存储器***的逻辑地址空间中的地址,并从其读取数据。然后,存储器***在逻辑地址空间和存储器的物理块或元块(metablock)之间共同地映射数据,其中数据被存储在与逻辑地址空间中的范围(range)相对应的固定逻辑组中。通常,每个固定逻辑组被存储在存储器***的分离的物理块中。存储器***保持跟踪逻辑地址空间如何映射到物理存储器中,但主机不知道这些。主机保持跟踪其数据文件在逻辑地址空间中的地址,但存储器***在不知道该映射的情况下操作。
以此方式操作的存储器***的缺点在于破碎化(fragmentation)。例如,被写入根据NTFS文件***操作的个人计算机(PC)中的固态盘(SSD)驱动器的数据常常具有如下特性:驱动器的逻辑地址空间中的广泛分布的位置处的连续地址的短区段(shortrun)的模式。即使主机所使用的文件***对于连续文件的新数据分配顺序的地址,删除的文件的任意模式也导致可用的空闲存储器区域破碎化,使得它不能以分块的单元来分配给新文件数据。
闪存存储器管理***一般通过将连续逻辑地址块映射到物理地址的元块来操作。当来自主机的短区段的地址被单独更新时,包含该区段的地址的整个逻辑块必须保持它对单个元块的长期映射。这需要逻辑到物理存储器管理***中的无用数据(garbage)收集操作,其中逻辑块内主机未更新的所有数据被重新放置(relocate),以将其与更新的数据相整合。这是非常大的开销,可能严重约束了写速度和存储器寿命。
发明内容
在与已知盘驱动器中所使用的磁存储器相比,闪存存储器目前所具有的有限次的写循环的情况下,期望利用闪存存储器改善***性能,以补偿短的逻辑地址区段和破碎化的问题。为解决这一点,描述了用于存储器装置中的存储地址重新映射的方法和***。
根据本发明的一个方面,提供一种大容量存储器***,包括:可重新编程的非易失性存储器单元,所述存储器单元被布置在能一起擦除的多个存储器单元块中;接口,适用于从主机***接收数据,所述数据以主机逻辑块地址(LBA)地址来定址;以及与所述接口通信的控制器,所述控制器被配置为分配连续存储LBA地址的块用于从所述主机***接收所述数据,且被配置为将用于所接收的数据的主机LBA地址的每个重新映射到所述连续存储LBA地址的块,其中,所述控制器被配置为:将每个连续存储LBA地址顺序地按所接收的数据被接收的次序分配给所接收的数据,而不考虑与所接收的数据相关的主机LBA地址。
根据本发明的另一方面,提供一种大容量存储器***,所述***包括:可重新编程的非易失性存储器单元,所述存储器单元被布置在能一起擦除的多个存储器单元块中;接口,适用于从主机***接收以主机逻辑块地址(LBA)格式来定址的数据;以及与所述接口通信的控制器,所述控制器包括处理器可执行指令,用于执行如下步骤:在所述大容量存储***处从所述主机***接收与主机逻辑块地址(LBA)地址相关的数据;按接收的次序连续地将接收的主机LBA地址重新映射到连续存储LBA地址的块;分配连续存储LBA地址的附加块,所述附加块在分配时不包含有效数据,且如果所述连续存储LBA地址的块被完全分配,连续地将剩余的接收的主机LBA地址重新映射到所述附加块;以及建立不包含有效数据的连续存储LBA地址的新块。
根据本发明的另一方面,提供一种在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法,该方法包括:在所述大容量存储***处从所述主机***接收与主机逻辑块地址(LBA)地址相关的数据;按接收的次序、而不考虑主机LBA地址的次序,在具有连续物理地址的写入块的连续物理地址中存储所接收的数据;分配来自多个白色块的白色块,作为当所述写入块被完全编程时存储所接收的数据的下一写入块,多个白色块的每个包括仅包含未写容量的连续物理地址的块;更新存储地址表(SAT),其将所接收的数据的主机LBA地址映射到每个写入块中的物理地址,其中,所述SAT被维持在物理地址的至少一个块中;以及建立新的白色块,其中,所述建立新的白色块包括:从多个粉色块中选择粉色块,其中,多个粉色块的每个包括具有有效数据和废弃数据两者的完全编程的物理地址的连续块,其中,所选择的粉色块具有小于阈值量的有效数据;以及将来自所选粉色块的所有有效数据重新放置到重新放置块,其中,在重新放置来自所选粉色块的所有有效数据时,所选粉色块变为新的白色块。
根据第一方面,描述了在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法。该方法包括:在大容量存储***处从主机***接收与主机逻辑块地址(LBA)地址相关联的数据。分配连续存储LBA地址块来接收主机LBA地址,其中连续存储LBA地址块仅仅包含废弃数据。该方法还包括将所接收数据的每个主机LBA地址重新映射到连续存储LBA地址块,其中按照所接收数据被接收的次序,以连续的方式将每个存储LBA地址顺序地分派给所接收数据,而不论主机LBA地址如何。
根据第二方面,描述了在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法。该方法包括:从主机***上的文件***接收与主机逻辑块地址(LBA)地址相关联的数据。所接收的主机LBA地址被按接收的次序重新映射到连续存储LBA地址块,并且在分配时仅仅对未写容量定址的连续存储LBA地址附加块被分配,并且仅仅在连续存储LBA地址块被完全编程之后,剩余的所接收的主机LBA地址才被连续地重新映射到附加块。还创建仅仅对未写容量定址的连续存储LBA地址新块。
在本发明的另一方面中,公开了在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法,包括:在大容量存储***处从主机***接收与主机逻辑块地址(LBA)地址相关联的数据,以及将所接收的主机LBA地址按接收的次序连续地重新映射到连续存储LBA地址块。该方法还包括分配连续存储LBA地址附加块,该附加块在分配时仅仅对未写容量定址,并且仅仅在连续存储LBA地址块被完全编程时,才将剩余的所接收的主机LBA地址连续地重新映射到附加块。另外,该方法还包括生成存储地址表,其在与主机LBA地址相关联的数据被重新映射到连续存储LBA地址时将主机LBA地址映射到存储LBA地址。
根据另一方面,公开了在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法,包括步骤:在大容量存储***上的应用处从主机***接收与主机逻辑块地址(LBA)地址相关联的数据,以及将所接收的主机LBA地址按接收的次序连续地重新映射到连续存储LBA地址块。该方法还包括分配连续存储LBA地址附加块,该附加块在分配时仅仅对未写容量定址,并且仅仅在连续存储LBA地址块被完全编程时,才将另外的所接收的主机LBA地址连续地重新映射到附加块。还包括如下步骤:在接收与先前接收的主机LBA地址相关联的新数据之前,标识目前对有效和废弃数据定址的连续存储LBA地址的先前完全编程的块;以及从所标识的连续存储LBA地址的先前完全编程的块,创建仅仅对未写容量定址的连续存储LBA地址新块。
在本发明的一个方面,公开了大容量存储的存储器***,包括:可重新编程的非易失性存储器单元,被布置在能一起擦除的多个存储器单元块中;接口,适用于从主机***接收以主机逻辑块地址(LBA)地址定址的数据;以及控制器,与接口通信。控制器被配置为分配用于从主机***接收数据的连续存储LBA地址块,并被配置为将所接收数据的每个主机LBA地址重新映射到连续存储LBA地址块,其中控制器被配置为按照所接收数据被接收的次序,将每个连续存储LBA地址顺序地分派给所接收数据,而不论与所接收数据相关联的主机LBA地址如何。
根据本发明的另一方面,大容量存储的存储器***包括:可重新编程的非易失性存储器单元,被布置在能一起擦除的多个存储器单元块中;接口,适用于从主机***接收以主机逻辑块地址(LBA)格式定址的数据;以及控制器,与接口通信。控制器包括用于执行以下步骤的处理器可执行指令:在大容量存储***处从主机***接收与主机LBA地址相关联的数据,将所接收的主机LBA地址按接收的次序连续地重新映射到连续存储LBA地址块,分配连续存储LBA地址附加块,其中附加块在分配时仅仅包含未写容量,以及仅仅在连续存储LBA地址块被完全编程的情况下,才将剩余的所接收的主机LBA地址连续地重新映射到附加块。该处理器可执行指令还包括用于创建不包含有效数据的连续存储LBA地址新块的指令。
如在本发明的另一方面中所公开的,用于将与主机LBA地址相关联的数据重新映射到存储LBA地址的非易失性大容量存储***包括:可重新编程的非易失性存储器单元,其中存储器单元被布置在能一起擦除的多个存储器单元块中;接口,适用于从主机***接收以主机LBA格式定址的数据;以及控制器,与接口通信。控制器被配置为:将所接收的主机LBA地址按照接收的次序连续地重新映射到连续存储LBA地址的块,分配连续存储LBA地址的附加块,其中附加块在分配时仅仅对未写容量定址,并仅仅在连续存储LBA地址的块被完全编程时,将附加接收的主机LBA地址连续地重新映射到附加块。控制器还被配置为生成在与主机LBA地址相关联的数据被重新映射到连续存储LBA地址时将主机LBA地址映射到存储LBA地址的存储地址表,以及生成标识多个存储LBA地址块中每一个的状态的块信息表。
在另一方面中,非易失性大容量存储***包括:用于在大容量存储***处从主机***接收与主机LBA地址相关联的数据的部件;用于分配用于接收主机LBA地址的连续存储LBA地址块的部件,其中连续存储LBA地址块在分配时仅仅与未写容量相关联;以及用于将所接收数据的每个主机LBA地址重新映射到连续存储LBA地址块的部件,其中按照所接收数据被接收的次序,以连续的方式将每个存储LBA地址顺序地分派给所接收数据,而不论主机LBA地址如何。
在本发明的再一方面中,在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法包括:在主机***上的主机重新映射模块处接收与主机LBA地址相关联的数据。主机重新映射模块分配用于接收主机LBA地址的连续存储LBA地址块,其中连续存储LBA地址块在分配时仅仅与未写容量相关联,并将所接收数据的每个主机LBA地址重新映射到连续存储LBA地址块,使得按照所接收数据被接收的次序,以连续的方式将每个存储LBA地址顺序地分派给所接收数据,而不论主机LBA地址如何。将重新映射到连续存储LBA地址块的所接收数据和所分派的存储LBA地址从主机***传送到大容量存储***。
在另一方面,在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法包括:在主机***上驻留的主机重新映射模块处接收与主机逻辑块地址(LBA)地址相关联的数据,以及将所接收的主机LBA地址按接收的次序连续地重新映射到连续存储LBA地址块。分配在分配时仅仅对未写容量定址的连续存储LBA地址附加块。仅仅在连续存储LBA地址块被完全编程的情况下,才将剩余的所接收的主机LBA地址连续地重新映射到附加块。该方法还包括创建仅仅对废弃数据定址的连续存储LBA地址新块,以及将重新映射到连续存储LBA地址块的所接收数据和所分派的存储LBA地址从主机***传送到大容量存储***。
根据本发明的一个方面,在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法包括:在主机***上的主机重新映射模块处接收与主机LBA地址相关联的数据;在主机***处将所接收的主机LBA地址按接收的次序连续地重新映射到连续存储LBA地址块;分配在分配时仅仅对未写容量定址的连续存储LBA地址附加块;以及仅仅在连续存储LBA地址块被完全编程时,才将附加的所接收的主机LBA地址连续地重新映射到附加块。该方法还包括在主机***处生成存储地址表,其在与主机LBA地址相关联的数据被重新映射到连续存储LBA地址时将主机LBA地址映射到存储LBA地址。
在本发明的另一方面中,公开了用于将数据传输到可重新编程的非易失性大容量存储***的主机***。该主机***包括:接口,被配置为允许与大容量存储装置通信;以及主机处理器,被配置为按照来自主机重新映射模块的指令,经由接口,在大容量存储***上存储数据。主机重新映射模块包括用于使得主机处理器执行以下操作的处理器可执行指令:在主机***上的主机重新映射模块处接收与主机逻辑块地址(LBA)地址相关联的数据;分配用于接收主机LBA地址的连续存储LBA地址块,连续存储LBA地址块在分配时仅仅对未写容量定址;将所接收数据的每个主机LBA地址重新映射到连续存储LBA地址块,其中按照所接收数据被接收的次序,以连续的方式将每个存储LBA地址顺序地分派给所接收数据,而不论主机LBA地址如何;以及将重新映射到连续存储LBA地址块的所接收数据和所分派的存储LBA地址从主机***传送到大容量存储***。
根据本发明的另一方面,公开了用于将数据传输到可重新编程的非易失性大容量存储***的主机***。该主机***包括:接口,被配置为允许与大容量存储装置通信;以及主机处理器,被配置为按照来自主机重新映射模块的指令,经由接口在大容量存储***上存储数据。主机重新映射模块包括用于使得主机处理器执行以下操作的处理器可执行指令:在主机重新映射模块处接收与主机逻辑块地址(LBA)地址相关联的数据;在主机***处将所接收的主机LBA地址按接收的次序连续地重新映射到连续存储LBA地址块;分配在分配时仅仅与未写容量相关联的连续存储LBA地址附加块;以及仅仅在连续存储LBA地址块被完全编程时,才将附加的所接收的主机LBA地址连续地重新映射到附加块。主机重新映射模块的处理器可执行指令还被布置为使得主机处理器在主机***处生成存储地址表,其在与主机LBA地址相关联的数据被重新映射到连续存储LBA地址时将主机LBA地址映射到存储LBA地址。
在本发明的另一方面中,在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法包括:在主机文件***处接收要在大容量存储***上存储的数据;分配连续主机LBA地址的第一块以与所接收数据相关联,第一块具有至少一个可用主机LBA地址;以及将第一块中每个可用主机LBA地址关联到所接收数据,其中每个可用主机LBA地址被按照所接收数据被接收的次序而顺序地分派给所接收数据。该方法还包括:分配连续主机LBA地址的第二块,连续主机LBA地址的第二块具有至少一个可用主机LBA地址,其中仅仅在将第一块中至少一个可用主机LBA地址中的每一个进行关联之后,才分配第二块。
根据另一方面,公开了用于将数据传输到可重新编程的非易失性大容量存储***的主机***。该主机***包括:接口,被配置为允许与大容量存储***通信;以及主机处理器,被配置为按照来自主机存储器的指令,经由接口在大容量存储***上存储数据。主机存储器具有用于实现使得处理器执行以下操作的主机文件***的处理器可执行指令:分配连续主机LBA地址的第一块以与在主机文件***处接收的数据相关联,将第一块中每个可用主机LBA地址关联到所接收数据,其中每个可用主机LBA地址被按照所接收数据被接收的次序而顺序地分派给所接收数据,以及分配连续主机LBA地址的第二块,用于仅仅在将第一块中至少一个可用主机LBA地址中的每一个进行关联之后才与所接收数据相关联。
在另一方面中,公开了计算机可读介质,其具有用于将数据从主机***传输到可重新编程的非易失性大容量存储***的计算机可执行指令。该计算机可执行指令被布置为使得处理器执行以下步骤:在主机文件***处接收要在大容量存储***上存储的数据;分配连续主机LBA地址的第一块以与所接收数据相关联;以及将第一块中每个可用主机LBA地址关联到所接收数据,其中每个可用主机LBA地址被按照所接收数据被接收的次序而顺序地分派给所接收数据。该计算机可执行指令还被布置为使得处理器执行以下步骤:分配连续主机LBA地址的第二块,用于仅仅在把第一块中可用主机LBA地址的每一个进行关联之后才与所接收数据相关联。
在本发明的再一方面中,在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法包括:在大容量存储***处从主机***接收与主机LBA地址相关联的数据。该方法包括:在具有连续物理地址的写入块的连续物理地址中按接收的次序存储所接收数据,而不论主机LBA地址次序如何;分配白块(whiteblock),所述白块包括仅仅包含未写容量的连续物理地址块,当写入块被完全编程时作为用于存储所接收数据的下一写入块;以及更新将用于所接收数据的主机LBA地址映射到每个写入块中的物理地址的存储地址表,其中在至少一个物理地址块中维持存储地址表。该方法还包括创建新白块,其中创建新白块包括从多个粉块(pinkblock)中选择一粉块,其中多个粉块中的每一个是具有有效数据和废弃数据这两者的完全编程物理地址的连续块,并且所选粉块具有少于阈值量的有效数据。来自所选粉块的所有有效数据被重新放置到重新放置块,使得在重新放置了来自所选粉块的所有有效数据时,所选粉块变为新白块。
根据本发明的一个方面,公开了在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法。该方法包括:在大容量存储***处从主机***接收与主机逻辑块地址(LBA)地址相关联的数据,以及在具有连续物理地址的写入块的连续物理地址中按接收的次序存储所接收数据,而不论主机LBA地址次序如何。用于所接收数据的主机LBA地址的区段被映射到存储地址表(SAT)上的单页上的物理地址的至少两个区段,其中SAT由大容量存储***中的连续物理地址的至少一个块构成。
在另一方面中,公开了在可重新编程的非易失性大容量存储***中生成仅仅具有未写容量的连续物理地址块的方法,其中大容量存储***具有多个连续物理地址块。该方法包括:确定多个块中每个粉块中所包含的有效数据量,其中每个粉块包括具有有效数据和废弃数据这两者的完全编程的连续物理地址块;以及基于所确定的有效数据量选择粉块之一。该方法还包括:将有效数据从所选的粉块之一复制到重新放置块中的连续物理地址,其中重新放置块包括连续物理地址块,通过该连续物理地址块来连续地重新放置来自所选的一个粉块的有效数据,以及其中按照出现的次序从所选的一个粉块复制有效数据,而不论与有效数据相关联的主机LBA地址如何。
在本发明的另一方面中公开了大容量存储的存储器***。该大容量存储***包括:可重新编程的非易失性存储器单元,被布置在能一起擦除的多个存储器单元块中;接口,适用于从主机***接收用主机LBA地址定址的数据;以及控制器,与接口通信。控制器被配置为分配用于从主机***接收数据的连续物理地址的第一块,以将用于所接收数据的每个主机LBA地址映射到连续物理地址块,其中所接收数据被按照所接收数据被接收的次序顺序地写入到连续物理地址,而不论与所接收数据相关联的主机LBA地址如何。主机控制器还被配置为分配用于以连续的方式接收附加的所接收数据的连续物理地址的第二块,连续物理地址的第二块在分配时仅仅具有未写容量,其中控制器仅仅在完全分派了连续物理地址的第一块时才向第二块分配数据。而且,控制器还被配置为生成将主机LBA地址和物理地址位置相联系的联系(correlation)数据,以及在大容量存储存储器***中的存储地址表中存储该联系数据,其中联系数据将每个主机LBA地址区段映射到和与主机LBA地址区段相关联的数据相对应的一个或多个物理地址区段。
根据本发明的另一方面,公开了在存储装置内对数据进行移动的方法,在存储装置中,数据由连续逻辑地址范围内的逻辑地址标识。该方法包括:将连续逻辑地址范围分为相等尺寸的连续逻辑地址块,以及标识包含被分配给该装置中存储的有效数据的至少一个逻辑地址的逻辑地址块。该方法还包括:将有效数据重新映射到未被包含在该逻辑地址块内的至少一个逻辑地址,读取与被分配给有效数据的至少一个逻辑地址相关联的有效数据,以及将有效数据写入到至少一个逻辑地址,使得所标识的块不包含被分配给有效数据的地址。
在阅读以下附图、具体说明和权利要求后,本发明的其他特征和优点将变得明显。
附图说明
图1例示了与具有非易失性存储器的存储器***连接的主机。
图2是用作图1的非易失性存储器的示例闪存存储器***的示例框图。
图3是可在图2的***中使用的存储器单元阵列的代表性电路图。
图4例示了图2的***的示例物理存储器组织。
图5示出了图4的部分物理存储器的扩展视图。
图6例示了LBA地址空间中的已分配和空闲簇的典型模式。
图7例示了根据一个所公开的实现方式通过块分配簇的模式。
图8例示了主机和存储器驱动器之间的存储地址重新映射的实现方式,其中装置的存储器管理器包含了存储地址重新映射功能。
图9例示了图8中所示的存储地址重新映射的替代实现方式。
图10例示了功能位于主机的存储地址重新映射的实现方式。
图11例示了图10的存储地址重新映射的替代实现方式。
图12是簇的块的分配的状态图。
图13是当闪存存储器包括二进制和MLC分区(partition)时图12的状态图的替代实现方式。
图14是可在图9和图10的实现方式中使用的LBA地址空间和相关联的DLBA地址空间的例子。
图15例示了从主机接收的数据的LBA到DLBA映射的例子。
图16例示了DLBA地址空间和物理地址空间中的相应更新块中的刷新(flush)操作。
图17例示了在图16的刷新操作之后的第二刷新操作。
图18是用于包含来自主机的数据的块的块刷新处理的流程图。
图19例示了主机逻辑地址被重新映射到第二逻辑地址空间的布置中的存储地址表(SAT)层级结构。
图20例示了在跟踪逻辑到逻辑映射时使用的存储地址表(SAT)写入块。
图21是在图20的SAT表的SAT页中使用的LBA条目。
图22是在图20的SAT表的SAT页中使用的DLBA条目。
图23是在图20的SAT表的SAT页中使用的SAT索引条目。
图24例示了在图9和图10的存储地址重新映射功能中使用的存储地址表变换过程。
图25是在按时间的四个实例中LBA和DLBA地址空间中的示例数据写操作的图示。
图26例示了SAT块转变的状态图。
图27是用于确定SAT块刷新次序的处理的流程图。
图28例示了块信息表(BIT)写入块。
图29例示了从主机接收的数据的LBA到物理地址映射的例子。
图30例示了基于图29中例示的数据分布的物理地址空间中的刷新操作。
图31例示了在图30的刷新操作之后的第二刷新操作。
图32例示了主机逻辑地址的区段被映射到数据区段的物理地址的布置中的存储地址表(SAT)层级结构。
图33例示了在跟踪逻辑到逻辑映射时使用的存储地址表(SAT)写入块。
图34是在图33的SAT表的SAT页中使用的LBA条目。
图35是在图33的SAT表的SAT页中使用的数据(Data)条目。
图36是在图33的SAT表的SAT页中使用的SAT索引条目。
图37例示了图32-36的SAT的替代实施例,其中将整块的逻辑地址映射到数据区段。
图38例示了在利用图11的配置的***中存储地址重新映射的实现方式。
具体实施方式
在图1-6中示出了适合于在实现本发明的各个方面时使用的闪存存储器***。图1的主机***1将数据存储到闪存存储器2中,以及从闪存存储器2提取数据。闪存存储器可嵌入主机中,例如以个人计算机中安装的固态盘(SSD)驱动器的形式。可替换地,存储器2可以是通过如图1所示的机械和电连接器的配对部件3和4而可移除地连接到主机的卡的形式。被配置用作内部或嵌入式SSD驱动器的闪存存储器可能看起来类似于图1的示意图,主要区别在于存储器***2在主机内部的位置。SSD驱动器可以是用于旋转磁盘驱动器的***(drop-in)替换物的离散模块的形式。
商业可获得的SSD驱动器的一个例子是SanDisk公司生产的32吉字节(gigabyte)SSD。商业可获得的可移除闪存存储卡的例子包括CompactFlash(CF)、多媒体卡(MMC)、安全数字(SD)、miniSD、记忆棒、SmartMedia和TransFlash卡。尽管这些卡中的每一个具有根据其标准化规范的独有机械和/或电接口,但是每个卡中包括的闪存存储器***是类似的。这些卡全部可以从本申请的受让人SanDisk公司获得。SanDisk还在其Cruzer商标下提供闪存驱动器线,其是具有用于通过***主机的通用串行总线(USB)插口而与主机连接的USB插头的小封装的手持存储器***。这些存储卡和闪存驱动器中的每一个包括与主机接口并控制它们之内的闪存存储器的操作的控制器。
可使用SSD、存储卡和闪存驱动器的主机***多种多样。它们包括诸如桌上型或膝上型和其他便携式计算机的个人计算机(PC)、蜂窝电话、个人数字助理(PDA)、数字静态相机、数字摄像机和便携式音频播放器。对于便携式存储卡应用,主机可包括用于一种或多种存储卡或闪存驱动器的内置插口,或者主机可要求其中***存储卡的适配器。存储器***通常包含其自身的存储器控制器和驱动器,但也存在一些纯存储器(memory-only)***,它们改为由连接该存储器的主机执行的软件来控制。在包含控制器的一些存储器***,尤其是嵌入在主机中的那些存储器***中,存储器、控制器和驱动器常常被形成在单个集成电路芯片上。
在考虑存储器2的情况下,图1的主机***1可被看作具有由电路块(circuitry)和软件的组合构成的两个主要部分。它们是应用部分5和与存储器2接口的驱动器部分6。在PC中,例如,应用部分5可包括运行字处理、图形、控制或其他常用应用软件的处理器9以及用于管理主机1上的数据的文件***10。在主要专用于执行单组功能的相机、蜂窝电话或其他主机***中,应用部分5包括操作相机以拍摄和存储照片、操作蜂窝电话以发起和接收呼叫的软件等。
图1的存储器***2包括闪存存储器7和电路8,二者与连接该卡以来回传递数据的主机接口并控制存储器7。典型地,在数据编程和读取期间,控制器8在主机1使用的数据的逻辑地址和存储器7的物理地址之间进行转换。
参照图2,描述了可用作图1的非易失性存储器2的典型的闪存存储器***的电路块。***控制器通常在单个集成电路芯片11上实现,集成电路芯片11通过***总线13与一个或多个集成电路存储器芯片并联,在图2中示出了单个这样的存储器芯片15。所示的特定总线13包括分离的用来携带数据的一组导体17、用于存储器地址的一组导体19和用于控制和状态信号的一组导体21。可替换地,可以在这三个功能之间时间上共享单组导体。另外,可采用其他***总线配置,如在2004年8月9日提交的题为“RingBusStructureandIt’sUseinFlashMemorySystems”的美国专利申请系列号10/915,039中描述的环状总线。
典型的控制器芯片11具有其自己的内部总线23,其通过接口电路25与***总线13接口。正常连接到总线的主要功能是处理器27(如微处理器或微控制器)、包含用来初始化(“引导”)***的代码的只读存储器(ROM)29、主要用来缓冲在存储器和主机之间传输的数据的只读存储器(RAM)31、以及对于经过存储器和主机之间的控制器的数据计算和检查纠错码(ECC)的电路33。控制器总线23通过电路35与主机***接口,在图2的***被包含在存储卡内的情况下,通过作为连接器4的一部分的卡的外部触头37实现电路35。时钟39与控制器11的每个其他组件连接并由其使用。
存储器芯片15以及与***总线13连接的任何其他芯片可包含被组织为多个子阵列或平面的存储器单元的阵列,为了简化例示了两个这样的平面41和43,但可改为使用更多个,如4个或8个这样的平面。可替换地,芯片15的存储器单元阵列可以不被分为平面。然而当这样分时,每个平面具有其自己的可彼此独立操作的列控制电路45和47。电路45和47从***总线13的地址部分19接收它们各自的存储器单元阵列的地址,并对它们解码以寻址各个位线49和51中的具体的一个或多个。响应于在地址总线19上接收的地址,通过行控制电路55对字线53寻址。源极电压控制电路57和59也与各自的平面(作为p阱电压控制电路61和63)连接。如果存储器芯片15具有存储器单元的单个阵列,并且如果在***中存在两个或更多个这样的芯片,则可类似于上述多平面芯片内的平面或子阵列来操作每个芯片的阵列。
数据被通过与***总线13的数据部分17连接的各自的数据输入/输出电路65和67而传输进或出平面41和43。电路65和67用于通过经各自的列控制电路45和47连接到平面的线69和71,将数据编程到存储器单元中以及用于从它们各自的平面的存储器单元读取数据。
尽管控制器11控制存储器芯片15的操作以编程数据、读取数据、擦除和参加各种常规事务(housekeepingmatter),但每个存储器芯片也包含执行来自控制器11的命令以执行这样的功能的某控制电路块。接口电路73连接到***总线13的控制和状态部分21。来自控制器的命令被提供给状态机75,然后状态机75提供其他电路的特定控制,以便执行这些命令。控制线77-81将状态机75与如图2所示的这些其他电路相连接。来自状态机75的状态信息被通过线83传送到接口73,以通过总线部分21发送到控制器11。
存储器单元阵列41和43的NAND体系是当前优选的,但也可改为使用其他体系,如NOR。NAND闪存存储器的例子和它们作为存储器***的一部分的操作可参照美国专利号5,570,315、5,774,397、6,046,935、6,373,746、6,456,528、6,522,580、6,771,536和6,781,877以及美国专利申请公开号2003/0147278。由图3的电路图例示了示例NAND阵列,其是图2的存储器***的存储器单元阵列41的一部分。提供了大量的全局位线,但为了简单解释,在图2中仅仅示出了四条这样的线91-94。在这些位线之一和参考电势之间连接多个串联的存储器单元单列(string)97-104。使用存储器单元单列99为代表,多个电荷存储存储器单元107-110在单列的任一端与选择晶体管111和112串联。当使得单列的选择晶体管导电时,单列被连接在其位线和参考电势之间。然后一次对该单列中的一个存储器单元进行编程或读取。
图3的字线115-118单独在存储器单元的多个单列的每一个中的一个存储器单元的电荷存储元件上延伸,并且栅极119和120控制位于单列的每个端的选择晶体管的状态。共享公用字和控制栅极线115-120的存储器单元单列被制成为形成被一起擦除的存储器单元的块123。该单元块包含一次可物理擦除的最小数目的单元。一次对沿着字线115-118之一的一行存储器单元进行编程。典型地,按规定次序对NAND阵列的行进行编程,在此情况下,从沿着最接近单列连接到地或另一公用电势的那端的字线118的行开始。然后对沿着字线117的存储器单元的行编程,如此等等,贯穿块123。最后对沿着字线115的行编程。
第二块125是类似的,其存储器单元的单列连接到与第一块123中的单列相同的全局位线,但具有不同组的字和控制栅极线。字和控制栅极线被行控制电路55驱动到它们正确的操作电压。如果***中存在多于一个的平面或子阵列,如图2的平面1和2,则一个存储器体系使用在它们之间延伸的公用字线。可替换地,可以有多于两个的平面或子阵列共享公用字线。在其他存储器体系中,分别驱动各个平面或子阵列的字线。
如在上面引用的一些NAND专利和公开申请中所描述的,存储器***可***作为在每个电荷存储元件或区域中存储多于两个的可检测电荷电平,由此在每个中存储多于一个比特的数据。存储器单元的电荷存储元件是最通常的导电浮置栅极,但可替换地,可以是不导电的介电电荷陷阱材料,如在美国专利申请公开号2003/0109093中所述的。
图4概念性地例示了被用作下面进一步描述的例子的闪存存储器单元阵列7(图1)的组织。存储器单元的四个平面或子阵列131-134可以在单个集成存储器单元芯片上、在两个芯片(每个芯片上两个平面)或在四个分离的芯片上。具体布置对于以下说明而言不重要。当然,***中可存在其他数目的平面,如1、2、8、16或更多。通过位于各个平面131-134中的矩形,如框137、138、139和140,平面被各个分为图4中所示的存储器单元的块。每个平面中可以有数十或数百个块。
如上所述,存储器单元的块是擦除的单位,可一起物理擦除的最小数目的存储器单元。然而,为了增大的并行性(parallelism),以更大的元块(metablock)为单位来操作块。来自每个平面的一个块在逻辑上链接在一起以形成元块。四个块137-140被示出为形成一个元块141。元块内的所有单元一般被一起擦除。用于形成元块的块不需限于它们各自平面内的相同的相对位置,如由块145-148构成的第二元块143所示。尽管通常优选的是在所有平面上延伸元块,但为了更高的***性能,可以利用动态形成不同平面中的一个、两个或三个块中的任一个或所有的元块的能力,操作存储器***。这允许元块的尺寸更接近地匹配可用于在一个编程操作中存储的数据的量。
随后,为了操作性目的,将各个块分到存储器单元的页(page),如图5所示。例如,块137-140的每个的存储器单元每个被分为8个页P0-P7。可替换地,每个块内可以有16、32或更多的存储器单元的页。页是块内的数据编程和读取的单位,包含一次编程或读取的最小数据量。在图3的NAND体系中,页由块内沿着字线的存储器单元形成。然而,为了增加存储器***操作并行性,两个或更多块内的这样的页可在逻辑上链接为元页(metapage)。图5中例示了元页151,由来自四个块137-140中的每个块的一个物理页形成。例如,元页151包括四个块中每个块的页P2,但元页的页不必具有每个块内的相同的相对位置。元页是编程的最大单位。
图6中所示的主机1和存储器***2之间的公用逻辑接口利用连续的逻辑地址空间160,其大到足以对存储器***2中可存储的所有数据提供地址。参照上述主机1和存储器***2,要存储在闪存存储器7中的数据一般以逻辑块地址(LBA)格式接收。主机地址空间一般被分到数据簇的增量。可在给定主机***中将每个簇设计为包含多个数据扇区,有些情况下4到64个扇区之间是典型的。标准扇区包含512字节的数据。参照图6,示出了NTFS文件***的逻辑地址空间160中已分配簇162和空闲簇164的典型模式。
图7中示出了用于解决在图6中所见的逻辑地址空间160的破碎化的组织结构。这里描述的用于存储地址重新映射的***和方法按照簇的块166(下面的描述中总称为“块”)分配LBA地址。通过始终将数据写入各个块166中,并在前进到下一可用块之前用数据完全填充该块166,来处理写操作,在以下描述中,完全用有效数据填充的块166被称为红块168,而不具有有效数据并由此仅仅包含未写容量的块被称为白块170。如果存储器***采用“使用后擦除”类型的过程,则白块170中的未写容量可处于已擦除状态。可替换地,如果存储器***采用“使用前擦除”类型的过程,则白块170中的未写容量可由需要在分配时擦除的废弃数据构成。已被完全编程并具有有效162和无效(也称为废弃)164数据簇两者的块被称为粉块172。
为了按照逻辑地址的块划分和管理逻辑地址空间160,主机和存储器***可能需要交换关于闪存存储器中的物理块的块尺寸的信息。逻辑块的尺寸优选地与物理块的尺寸相同,并且在存储器***与主机连接时通信此信息。该通信可被设置为作为加电或将存储器***连接到主机时的握手操作而发生。在一个实施例中,主机可向存储器***发送“识别驱动(IdentifyDrive)”询问,请求块尺寸和对准(alignment)信息,其中块尺寸是具体存储器***的各个物理块的尺寸,而对准信息是对于可能已经占据(takeup)每个物理块中的一些的***数据,需要考虑距离物理块的起点有多大的偏移(如果有的话)。
识别驱动命令可被实现为传统LBA接口命令组中的保留码。可经由标准通信接口中的保留或未分配命令码,将命令从主机传送到存储器***。合适的接口的例子包括用于固态盘的ATA接口,或者例如在CF或SD存储卡中使用的ATA相关接口。如果存储器***未能提供块尺寸和偏移信息二者,则主机可假设默认的块尺寸和偏移。如果存储器***仅仅用块尺寸信息响应识别驱动命令,而没有偏移信息,则主机可假设默认偏移。默认块尺寸可以是多个标准块尺寸中的任一个,并且优选地被设置为比有可能的实际物理块尺寸更大。默认偏移可以设置为零偏移,从而假设每个物理块可从主机接收从物理块中的第一地址开始的数据。如果主机被耦接到预定内部驱动器,如SSD,则可能无需执行该确定块尺寸和偏移的步骤,因为可能已经知道并预先编程了存储器装置的能力。因为即使内部驱动器可能被换掉,但是主机可被配置为始终检验存储器装置能力。对于可移除的存储器***,主机可始终通过识别驱动命令或类似机制查询块尺寸和偏移。
这里描述的用于分配和写入簇的空闲块166的***和方法可包括在主机***和存储器***之间的多个不同组合中分布的功能性或硬件。图8-11例示了实现簇的块分配的存储地址映射或重新映射算法如何可以在包括主机和固态存储装置中的文件的***的层级结构内的四个不同级别上实现的例子。
图8和图9的布置为存储地址映射或重新映射功能性被完全包含在存储装置176、178内的实施例。在这前两个布置中,存储装置176、178可利用传统主机174操作,其中对主机174无需修改。相反,图10和图11所示的布置是存储地址映射或重新映射功能性被完全包含在主机180、182内的实施例。在这后两个实施例中,主机180、182可利用无需修改的传统存储装置184操作。
在图8的例子中,存储地址映射算法可被集成到存储装置176的存储器管理177中,其中来自主机174的LBA地址被直接映射到闪存存储器中的物理块,使得在前进到下一块之前,用数据完全填充物理存储器的第一块。可替换地,在图9中,存储地址重新映射机制可在存储装置178中实现,但与装置178的存储器管理器179分开。在图9的实现方式中,来自主机174的每个逻辑地址将利用按照完整块166的写数据的技术,重新映射到第二逻辑地址,这里将其称为存储逻辑块地址(存储LBA),这里也将其称为装置逻辑块地址(DLBA),然后存储器管理器179将在DLBA布置下组织的数据变换为物理存储器的块。在同于物理元块的统一尺寸的DLBA块中构造DLBA地址空间。图10的实现方式将存储地址重新映射的功能性从存储装置184移到主机180上的应用。在此实现方式中,将LBA地址映射到DLBA地址的功能将类似于图9,主要区别在于变换将在主机180上进行,而不是在存储器装置184中。然后主机180将在主机处生成的DLBA地址信息以及与DLBA地址相关联的数据一起传送到存储器装置184。最终,在图11中示出了在主机操作***182自身中嵌入的数据分配布置。在该最后一个实现方式中,主机182的文件***185(诸如WINDOWSXP或VISTA操作***中的NTFS文件***)将被布置为按照簇的完整的逻辑块来生成存储地址,而无需中间的逻辑地址到逻辑地址的变换。由此,图11的实现方式包括主机文件***中修改的算法,使得初始生成LBA地址以在开始填充附加块之前填充全部块。
在图8-11的任一布置中,白块170被分配为用于写入数据的单独位置,并且用位于其写指针的当前位置的数据,按照其被主机提供的次序,顺序地填充。当存储地址的块被完全分配给有效数据时,其成为红块168。当文件被主机删除或者部分文件被主机更新时,则红块168中的一些地址可能不再被分配给有效数据,由此该块变为粉块172。如这里更详细讨论的,被分配为从主机接收数据的白块170被称为写入块,而被分配为在刷新操作期间接收数据的白块被称为重新放置块。可为了不同目的定义多个写指针。例如,在不同应用中,逻辑地址空间可基于地址范围(range)或基于文件尺寸而细分为多个顺序范围。逻辑地址空间的每个单独的范围可被配置为具有其自己的写入块和存储地址空间中的相关写指针。除了区段序列或文件尺寸之外,逻辑地址空间地址区段的划分可基于数据类型实现。例如,可能想要将经常更新的NTFSMFT表数据与不经常更新的数据分开。
存储地址重新映射算法通过将有效数据从粉块172重新放置(这里也称为刷新)到特殊写指针(称为重新放置指针),来管理白块170的创建。如果如上所述按范围或文件尺寸细分存储地址空间,则存储地址的每个范围可具有其自己的重新放置块和相关的重新放置指针。刷新操作通常作为背景操作执行,以将粉块变为红块和白块。粉块被根据其特性选择用于刷新操作。再次参照图7,在一个实现方式中,将选择具有最小量的有效数据(即图7中的最少阴影的簇)的粉块,因为具有有效数据的地址越少,使得在刷新该特定粉块时需要重新放置的数据越少。由此,在图7的例子中,因为粉块B含有更少的具有有效数据的地址,所以将选择粉块B,优先于粉块A。在其他实现方式中,选择用于刷新操作的粉块可以是与少于某一阈值量的有效数据相关联的一组粉块中的任一个。该阈值可以小于粉块的总集合中包含的有效数据的平均量。可以在列表中维持具有阈值量或阈值量以下的有效数据的粉块的子集,主机或存储器***可从该列表选择粉块。例如,可维持当前满足阈值要求的粉块的限定数目(例如,16)或百分比(例如,百分之30)的动态列表,并且可从该列表选择用于刷新的任何粉块,而不论所选择的该列表中的粉块是否具有绝对最少量的有效数据。形成存储器***或主机从其选择的列表的粉块的数目或百分比可以是固定值或可由用户选择的值。列表可包括按排序次序表示可用粉块中具有绝对最少量的有效数据的粉块的粉块组,或者可简单地包括落入阈值要求内的粉块。
可替换地,或者组合地,还可基于计算出的在特定粉块172中累积另外的废弃数据的概率,来选择粉块。在粉块172中累积其他废弃数据的概率可以基于如下假设:在存储器中存在得最久的数据最不可能被删除。由此,作为重新放置块的粉块172将包含比作为写入块的具有新的主机数据的粉块172更旧的健在(surviving)数据。然后,用于刷新的粉块172的选择处理将首先针对作为新近的重新放置块的粉块172,因为它们不太可能具有进一步删除的数据,由此能够期望更少的附加废弃数据。基于较新的数据更可能被删除的假设,选择先前作为写入块的粉块172用于之后的刷新,由此产生更多的废弃数据。
图12中示出了存储地址重新映射算法中的块状态改变的数据流和模式。如上所示,存储地址重新映射技术按照簇的块分配地址空间,并在分配另一簇的块之前填满簇的块166。这可通过以下实现:首先将白块分配为当前写入块(向其写入来自主机的数据),其中来自主机的数据根据其被接收的时间的顺序依次来写入到写入块中(在步骤188)。当用有效数据填充了当前写入块中的最后页面时,当前写入块变为红块(在步骤190)并且从白块列表分配新的写入块。应注意,如果在当前写入块被完全编程之前当前写入块内的某些页已经变废弃,则当前写入块也可以直接转变为粉块。为了简洁,未示出该转变;然而,其可以由从写入块到粉块的箭头表示。
再次参照图12中的数据流的具体例子,当通过删除LBA区段而使得红块内的一个或多个页废弃时,红块变为粉块(在步骤192)。当存储地址重新映射算法检测到需要更多白块时,算法启动刷新操作,以将有效数据从粉块移走,使得粉块变为白块(在步骤194)。为了刷新粉块,粉块的有效数据被顺序地重新放置到已经被指定为重新放置块的白块(在步骤194’和196)。在填充了重新放置块时,其变为红块(在步骤198)。如上参照写入块所述,如果重新放置块内的某些页已经变废弃,则它还可直接转变为粉块。为了简洁,未示出该转变,但可由图12中从重新放置块到粉块的箭头表示。
图13例示了替代数据流例子,其中存储地址重新映射功能性被应用于具有二进制200和多层单元(MLC)201的闪存存储器分区(partition)。MLC分区200中的块状态改变与图12中相同,但是二进制分区200中的块状态改变(在步骤202-205)与MLC分区201的不同。在二进制分区200中,在被顺序写入的写入块处接收从主机接收的数据,直到它被填充并变为红块为止(在202)。如果红块的页变废弃,则该块变为粉块(在203)。可如这里所讨论的那样刷新粉块,以创建新的白块(在204),其然后被指定为二进制分区中的新的白块(在205)。然而,来自二进制分区200中的粉块的有效数据以及来自红块的有效数据可被发送到MLC分区201。
在如图13所示的存储器***2中,其中闪存存储器7被分为两级(two-tier)***,二进制分区200充当从主机接收数据的高速缓存,MLC分区201充当从二进制分区接收数据的主存储区域,图8-11的“主机”可以是二进制分区。由此,这里讨论的存储地址重新映射技术可涉及完全在存储器***2的各级内的操作,其中前一级(在该例子中,二进制分区200)被当作主机,而当前级(这里,MLC分区201)被当作存储装置。预期该关系可延伸到具有超过两级布局的存储器***,其中前一级类似于主机而当前级被当作存储装置。在利用二进制和MLC分区的其他实施例中,主机1可直接写入到MLC分区201,而不必首先通过二进制分区200。
参照图9和图10所示的存储地址重新映射的实现方式,其中由存储装置(图9)或主机(图10)上的应用执行逻辑到逻辑、LBA到DLBA转变,现在参照图14-17讨论根据图12的状态图的地址操纵的详细例子。假设***已经根据图12所表示的存储地址重新映射算法操作,则可如图14所示,表示给定时间上LBA地址空间208中的主机空闲簇图和DLBA地址空间210中的空闲簇图的假想部分。在LBA地址空间208中,空闲簇164分散在基本随机的位置上。在DLBA地址空间210中,两个白块170可用,并且存在具有不同数目的废弃(空闲)簇164的三个粉块172。
当主机然后具有要写入存储装置的数据时,其分配LBA地址空间208,无论在何处可得。图15示出了存储地址重新映射算法如何将可用白块170之一分配为写入块212,以及每个LBA地址如何映射到写入块212中可用的DLBA空间中的顺序的簇。DLBA空间中的写入块212按照写入LBA地址的次序写入,而不论LBA地址位置如何。在该例子中,为了容易说明,假设主机使用的空闲LBA簇的时间次序与地址次序相同,但是存储地址重新映射算法将按照使用LBA地址的时间次序分派写入块212中的DLBA地址,而不论LBA地址号的次序如何。数据被写入到一个或多个DLBA区段中的写入块中。DLBA区段是被映射到同一LBA区段中的连续LBA地址的一组连续DLBA地址。DLBA区段必须在DLBA地址空间210的块边界处终止。当写入块212被填满时,白块170被分配为下一写入块212。
DLBA块与闪存存储器的物理地址空间中的块214对齐,因此,DLBA块尺寸和物理地址块尺寸是相同的。这样,DLBA写入块212中的地址的布局也与物理地址空间中相应更新块的布局相同。由于此对应关系,在物理更新块中不曾需要分离数据整合(通常称为无用数据收集)。在通常的无用数据收集操作中,一般始终重新汇集逻辑地址的块,以维持逻辑块中的LBA地址的特定范围,这也反映在物理块中。更具体地,当利用通常的无用数据收集操作的存储器***接收到与特定物理块中的扇区相对应的信息的更新扇区时,存储器***将分配物理存储器中的更新块以接收更新的一个或多个扇区,然后将来自原有物理块的所有剩余有效数据整合为更新块的剩余部分(remainder)。以此方式,标准无用数据收集将使得特定LBA地址范围的数据块长期继续存在,从而对应于该特定地址范围的数据将始终被整合到共同的物理块中。下面更具体讨论的刷新操作不需要整合相同地址范围中的数据。相反,这里公开的刷新操作执行地址映射(图8和图11的实现方式)或重新映射(图9和图10的实现方式),以创建可作为来自各种物理块的数据的集合的新数据块,其中不意图整合具体LBA地址范围的数据。
如前所述,存储地址重新映射算法操作以确保对于要操作的顺序的写算法,可获得足够的白块供应。存储地址重新映射算法通过将来自粉块的数据刷新到被称为重新放置块216的特殊写入块(图16),管理白块的创建。当前选中用于刷新的粉块被称为刷新块。
现在参照图15-16,示出了块刷新处理的图示。存储地址重新映射算法将白块指定为重新放置块216,将从所选的粉块向重新放置块216刷新数据以产生另外的白块。刷新块(图15的粉块A)中的有效数据(也称为红数据)被重新放置到重新放置块216中的顺序的地址中,以将刷新块转换为白块170。还分派物理地址空间218中的相应更新块214以接收刷新的数据。如同用于从主机接收的新数据的更新块214那样,用于接收刷新的数据的更新块214将不需要用来整合有效数据的无用数据收集操作,这是因为刷新操作已经完成了DLBA地址空间210中的整合。
如图17所示,从剩余粉块中标识出下一刷新块(图16的粉块B)。具有最少的红数据的粉块被再次指定为刷新块,并且该粉块的红数据(有效数据)被传输到开放的重新放置块中的顺序的位置中。还进行更新块214中的物理地址的并行分派。同样,在被映射到重新放置块216的物理更新块214中不需要数据整合。作为背景操作而对粉块进行刷新操作,以按照足以补偿被指定为写入块的白块的消耗的速率来产生白块。图14-17的例子例示了对于来自主机的新数据以及对于来自粉块的重新放置的数据,如何分开维持白块和重新放置块,以及物理地址空间中的各个分离的更新块。类似于仅仅在当前写入块被完全编程时的分配新写入块以关联从主机接收的新数据的处理,优选地,仅仅在前一重新放置块已经被完全编程之后才分配新的重新放置块。优选地,在分配时,新的重新放置块仅仅包含未写容量,即,仅仅与准备擦除的废弃数据相关,或者已经被擦除且不包含有效数据。
在上述实施例中,来自主机的新数据与仅仅从主机接收其他新数据的写入块相关,并且在刷新操作中从粉块刷新的有效数据被移动到仅仅包含来自一个或多个粉块的有效数据的重新放置块中。在其他实现方式中,新数据和重新放置的数据可被传输到单个写入块,而无需分离的写入块和重新放置块。如上所述,在其他实施例中,可选择用于刷新的粉块,其中,可选取与低于阈值(如当前粉块的平均量)的量的红数据相关的粉块列表中的任何粉块,或者该粉块可以是可用粉块中具有特定排序(基于与粉块相关的有效数据量)的粉块中的任何粉块。
刷新操作将相对“冷”的数据从“热”数据已经废弃的块重新放置到包含类似的相对冷的数据的重新放置块中。这具有产生相对热和相对冷的块的分离的填入(population)的效果。将要刷新的块始终选择为包含最少量数据的热块。通过减少需要重新放置的数据量,热块填入的创建减少了存储器压力因素。
在一个实施例中,被选作刷新块的粉块可以是最稀疏填入的粉块,即,包含最少量有效数据的粉块,并且不是响应于主机所执行的特定写入和删除操作而选择的。以此方式选择粉块作为刷新块,允许通过最少地重新放置有效数据来执行块刷新操作,因为这样选择的任何粉块将累积了最大数目的由于主机删除文件而未分配的数据地址。
粉块选择处理的一个例子可以是选择具有最低数目的有效页或簇的5%的粉块中的任何粉块。在背景处理中,建立具有最低页或簇计数值的16个粉块的列表。粉块标识处理可完成“P”个调度块刷新操作所占据的时间中的一个周期。图18中例示了刷新块标识处理中的周期。包含用于白、粉和其他类型的DLBA地址块的块地址列表的块信息表(BIT)由如下将更详细描述的存储地址重新映射功能维持,并且被读取以在前一处理周期间标识的块的组之后,标识下一组Q个粉块(在步骤220)。应该在装置初始化之后的第一处理周期中标识第一组粉块。为了确保粉块的可用性,Q的值应该大于P。在一个实现方式中,Q的值可以是8而P可以是4。对于组中每个粉块,将有效页计数值设置为零(在步骤222)。维持以跟踪LBA和DLBA关系的存储地址表(SAT)页条目一次被扫描一条,以标识位于该组中任何粉块内的有效数据页(在步骤224)。下面更详细地描述存储地址表。有效页计数值相应递增。在已经扫描了所有SAT页之后,针对低有效页计数值的列表中的粉块,评估组中每个粉块的有效页计数值,并且在必要时,用该组中的块替换列表中的块(在步骤226)。在完成块刷新操作之后,应选择用于下一块刷新操作的块。这应该是列表中具有最低有效页计数值的块。
在开始例如参照图16-17所述的块刷新操作之前,必须映射所选块,以确定必须重新放置的有效DLBA区段的位置。这通过使用从块中读取的所选数据页的标头(header)中的LBA地址以及用于这些LBA地址的SAT条目的搜索算法来实现。搜索算法使用其逐步建立的已知有效和废弃DLBA区段的映射。当SAT条目定义了其在块中出现时,有效DLBA区段被添加到块映射。当正被映射的块的数据页标头中的LBA范围的SAT条目定义了有效DLBA在另一块中出现时,废弃DLBA区段被添加到块映射。搜索处理继续,直到块中所有DLBA地址已经被明确映射为有效或废弃。
在块刷新操作中,将在上述块映射处理中标识的有效DLBA区段内的所有页从所选块重新放置到重新放置块中的重新放置指针处。在SAT列表中记录被重新放置的DLBA的条目。在图9所示的布置的情况下,可由存储器***2的控制器8执行有效和废弃DLBA区段的搜索,并且可在与控制器相关联的RAM中存储块DLBA映射。对于图10的布置,主机***1处的CPU可执行搜索并在与主机***CPU相关联的RAM中存储所得的块DLBA信息。
存储地址重新映射算法按照以下原则操作:当白块的数目落到预定阈值之下时,必须按照足以确保以与写入块中写入主机数据所消耗的白块容量相同的速率产生能分配用于写入数据的可用白块容量的速率,对粉块进行刷新操作。通过写入来自主机的数据而消耗的写入块中的页的数目必须与块刷新操作所覆盖的废弃页的数目平衡。在完成块刷新操作之后,通过如上所述从BIT和SAT读取特定条目,确定选择用于下一块刷新操作的粉块中的废弃数据的页数。下一块刷新操作被调度为在将该数目的有效页的数据写入到写入块之后立即开始。
存储地址表
为了实现上述存储地址重新映射,使用存储地址表(SAT)跟踪存储地址空间内的数据的位置。SAT中的信息也被写入作为用来完成闪存元块的顺序更新的一部分。因此,在一个实现方式中,将SAT信息写入到与用于从主机接收的数据的写入块分开、及与用于刷新操作的重新放置块分开的写入块中。在其他实现方式中,SAT信息可被存储在不同的块群组中,例如二进制闪存分区而不是由非SAT信息占据的MLC闪存分区中的块。可替换地,在相同类型的闪存块中存储SAT和非SAT数据,但由块隔开。在再一实施例中,可在同一块中混合SAT和非SAT数据。
SAT涉及图8-10的实施例,但不涉及图11,图11中主机文件***在地址的逻辑块中顺序地写入数据,并且不需要将第一逻辑地址变换为第二逻辑地址。而且,尽管以下讨论针对与从主机LBA重新映射到被称为DLBA(也称为存储LBA)的与图9-10的主机和存储器装置配置有关的第二LBA空间,但该相同的SAT技术可应用于图8的实施例,其中与主机LBA相关的数据被直接映射到物理块,而没有中间的逻辑到逻辑变换。优选地,不论所讨论的实施例如何,将SAT信息存储在存储器装置中的闪存存储器中。对于图10的实施例,其中在主机180上进行从主机LBA到DLBA的重新映射,传送SAT信息以存储在存储器装置184的闪存存储器中。对于图8的实施例,其中在存储器装置内的存储器管理器中实现存储地址重新映射算法,术语DLBA是指闪存存储器7中的物理地址而不是在图9-10的实施例中所使用的第二逻辑地址空间,并且DLBA地址的块代表物理存储器中的元块。
存储地址表(SAT)包含将主机文件***所分派的LBA地址与DLBA地址相关联的关联信息。更具体地,SAT用于记录在由主机文件***分配给有效数据的LBA地址空间中的每个地址区段和由存储地址重新映射算法产生的DLBA地址空间210中的一个或多个地址区段之间的映射。如上所述,***地址空间的单位是LBA,而LBA区段是当前由主机文件***分配给有效数据的连续的一组LBA地址。LBA区段常常与未分配的LBA地址相邻,但是如果SAT数据结构有需要,LBA区段可作为多个更小的LBA区段来管理。装置地址空间的单位是DLBA,而DLBA区段是被映射到相同LBA区段中的连续LBA地址上的连续的一组DLBA地址。DLBA区段在DLBA地址空间中的块边界处终止。每个LBA区段被SAT映射到一个或多个DLBA区段。LBA区段的长度等于其所映射到的DLBA区段的累计长度。
LBA区段的SAT条目包含到其所映射到的第一DLBA区段的条目的链接。其还可以映射到的后续DLBA区段是紧接在该区段之后的顺序条目。DLBA区段包含到其映射到的LBA区段内的偏移地址的反向链接,但不是到LBA区段的绝对LBA地址。单个LBA地址可被定义为LBA区段内的LBA偏移。SAT记录与被映射到LBA区段的每个DLBA区段的起点相对应的LBA偏移。因而,与个别LBA地址相对应的个别DLBA地址可被标识为DLBA区段内的DLBA偏移。尽管SAT中的LBA区段可仅仅用于有效数据的区段,但在其他实现方式中,SAT也可被配置为存储用于有效和废弃数据这两者的LBA区段。
在被称为SAT块的LBA地址块内实现SAT。SAT包括已定义的最大数目的SAT块,并包含已定义的最大数目的有效SAT页。因而,SAT具有其对于指定最大数目的SAT块可索引(index)的最大数目的DLBA块。尽管定义了最大数目的SAT块,但SAT是可变尺寸的表,其可自动缩放直到最大数目,因为SAT中的条目数将根据主机所分派的LBA的破碎度自己调整。由此,如果主机分派了高度破碎的LBA,则SAT将包括比主机向数据分派了没那么破碎的LBA群组的情况下更多的条目。因此,如果主机LBA变得没那么破碎,则SAT的尺寸将减小。更低的破碎度带来更少的要映射的分离区段,并且更少的分离区段带来SAT中更少的条目,因为SAT在一个条目中将主机LBA地址的区段映射到一个或多个DLBA区段,而不是严格地跟踪和更新固定数目的逻辑地址。
由于SAT的区段到区段映射的布置,主机LBA地址的区段可被映射到两个或更多个DLBA区段,其中主机LBA区段是被分配给有效数据的一组连续逻辑地址,而DLBA(或存储LBA)区段是同一元块内的且被映射到同一主机LBA区段的连续的一组DLBA地址。图19中示出了SAT索引和映射结构的层级。示出了LBA230和相应的DLBA232。LBA到DLBA映射信息被包含在SAT页234中。LBA到SAT页索引信息被包含在SAT索引页236中,并且对于图10的实现方式,主控(master)页索引238在与主机处理器相关联的RAM中高速缓存,对于图8-9的实现方式,在与控制器8相关联的RAM中高速缓存。
SAT正常包括多个SAT块,但SAT信息仅可写入到单个块目前指定的SAT写入块。所有其他SAT块已经被全部写入,并且可包含有效和废弃页的组合。SAT页包含用于可变范围的主机LBA地址空间内的所有LBA区段的条目、以及用于它们所映射到的装置地址空间中的区段的条目。可存在大量SAT页。SAT索引页包含对更大范围的主机LBA地址空间内的每个有效SAT页的位置的索引。存在少量的SAT索引页,一般为1。通过在单个SAT写入块中的下一可用位置处重新写入更新页,并将前一版本的页当作废弃的,来修改SAT中的信息。因而,SAT中可能存在大量无效页。由与上面对主机数据描述的算法类比的用于写入页和刷新块的算法,来管理SAT块。
SAT块
每个SAT块是专用于存储SAT信息的DLBA地址的块。SAT块被分为表页,可用向其中写入SAT页234或SAT索引页236。SAT块可包含有效SAT页234、有效SAT索引页236和废弃页的任何组合。参照图20,示出了示例SAT写入块240。按照由递增的SAT写指针242所定义的顺序位置,将数据写入SAT写入块240中。可将数据仅仅写入到被指定为SAT写入块240的单个SAT块。按照与前面描述的主机数据写入块(例如,图15-17中的项目212)相同的方式,当SAT写入块240被完全写满时,白块被分配为新的SAT写入块240。SAT页位置通过其在SAT块内的序号来定址。
SAT页
SAT页234是SAT中映射信息的最小可更新单位。在SAT写指针242所定义的位置处写入更新后的SAT页234。SAT页234包含具有递增LBA地址的一组LBA区段的映射信息,但是连续LBA区段的地址无需是连续的。SAT页234中的LBA地址的范围与任何其他SAT页234中的LBA地址的范围不重叠。SAT页234可以分布在整组SAT块上,没有限制。任何范围的LBA地址的SAT页234可以在任何SAT块中。SAT页234可包括索引缓冲器字段244、LBA字段246、DLBA字段248和控制指针250。参数备用条目还包含易失性RAM中存储的一些参数值。
SAT页234内的LBA字段246包含一定范围的LBA地址内被分配用于数据存储的连续LBA地址的区段的条目。SAT页234跨越的LBA地址的范围与任何其他SAT页234跨越的LBA条目的范围不重叠。LBA字段是可变的长度,并包含可变数目的LBA条目。在LBA字段246内,存在用于由SAT页234索引的该范围的LBA地址内每个LBA区段的LBA条目252。LBA区段被映射到一个或多个DLBA区段。如图21所示,LBA条目252包含以下信息:区段中的第一LBA254,扇区中LBA区段的长度256、以及LBA区段所映射到的第一DLBA区段的、同一SAT页234中的DLBA字段内的DLBA条目数258。
SAT页234内的DLBA字段248包含被映射到同一SAT页234中的LBA字段内的LBA区段的所有DLBA地址区段的条目。DLBA字段248是可变长度的,并且包含可变数目的DLBA条目260。在DLBA字段248内,存在用于被映射到相同SAT页234中的LBA字段246内的LBA区段的每个DLBA区段的DLBA条目260。如图22所示,每个DLBA条目260包含以下信息:区段中的第一DLBA地址262;以及第一DLBA地址所映射到的LBA区段中的LBA偏移264。作为每个SAT页234的一部分写入、但仅仅在最新近写入的SAT页234中保持有效的SAT页/索引缓冲器字段包含SAT索引条目266。
存在用于当前在相关SAT索引页236中没有有效条目的SAT中的每个SAT页234的SAT索引条目266。在每当写入SAT页234时创建或更新SAT索引条目,并在更新相关SAT索引页236时删除。它包含由SAT页234索引的第一LBA268、由SAT页234索引的最后LBA270、包含SAT页234的SAT块编号272、以及SAT块内的SAT页234的页编号274。SAT索引字段276具有用于固定数目的SAT索引条目278的容量。该数目确定了可写入SAT页234和SAT索引页236的相对频率。在一个实现方式中,该固定数目为32。
SAT页字段指针250定义了从LBA字段的起点到DLBA字段的起点的偏移。它包含作为LBA条目数的偏移值。SAT页234中的参数备用条目包含在易失性RAM中存储的参数的值。在功率周期之后,在(对于图8-9的实现方式,与控制器8相关联,或者对于图10的实现方式,与主机CPU相关联的)RAM中的信息的初始化期间使用这些参数值。它们仅仅在最新近写入的SAT页234中有效。
SAT索引页
一组SAT索引页236提供了对SAT中每个有效SAT页234的位置的索引。各个SAT索引页236包含定义了与一定范围的LBA地址有关的有效SAT页位置的条目278。SAT索引页236所跨越的LBA地址的范围与任何其他SAT索引页236所跨越的LBA地址的范围不重叠。根据条目相关的SAT页的LBA地址范围值来对条目排序。SAT索引页236包含固定数目的条目。SAT索引页236可分布在整组SAT块上,没有限制。用于任何范围的LBA地址的SAT索引页236可在任何SAT块中。SAT索引页236包括SAT索引字段和页索引字段。
SAT索引字段276包含用于SAT索引页236所跨越的LBA地址范围内的所有有效SAT页的SAT索引条目。SAT索引条目278关于单个SAT页234,并包含以下信息:由SAT页234索引的第一LBA,包含SAT页234的SAT块编号,以及SAT块内的SAT页234的页编号。页索引字段包含SAT中所有有效SAT索引页236的页索引条目。存在用于SAT中每个有效SAT索引页236的页索引条目,其包含以下信息:由SAT索引页索引的第一LBA,包含SAT索引页的SAT块编号,以及SAT块内的SAT索引页的页编号。页索引条目仅仅在最新近写入的SAT索引页236中有效。
临时SAT数据结构
尽管不是用于图19所示的地址映射的长期存储的SAT层级的一部分,但可在用于更新SAT的层级过程中使用附加数据结构。一种这样的结构是SAT列表,包括LBA条目和从对LBA区段的更新操作或还未被写入SAT页234中的块刷新操作而得到的新地址映射的新条目的相应DLBA映射。SAT列表可以是RAM中的易失性结构。当在SAT页更新期间将SAT列表中的条目写入到SAT页234时清除所述SAT列表中的条目。
表页
表页是用于存储一个SAT页234或一个SAT索引页236的SAT块内DLBA地址空间的固定尺寸的单元。表页的最小尺寸是一页,而最大尺寸是一元页(metapage),其中页和元页是与物理存储器中的页和元页相对应的DLBA地址空间的单位。
SAT中的条目尺寸
表1中示出了SAT页234和SAT索引页236内的条目的尺寸。
表1:SAT条目尺寸
地址变换
SAT可用于对与主机文件***的LBA地址相对应的DLBA地址进行快速定位。在一个实施例中,在SAT中仅仅包括被映射到有效数据的LBA地址。因为SAT页234按LBA次序排列,在从一个SAT页234到另一个SAT页234的LBA范围中没有重叠,所以可使用简单的搜索算法来对期望数据进行快速确定目标(home)。图24中示出了这种地址变换过程的例子。首先由控制器或处理器(分别取决于存储地址重新映射实现方式如图9还是如图10配置)接收目标LBA280。在其他实施例中,预期SAT可包括被映射到有效数据和废弃数据的LBA地址,并跟踪数据是有效还是废弃。
除了例示了地址变换过程之外,图24还示出了可如何配置来自最后写入的SAT索引页的页索引字段和来自最后写入的SAT页的索引缓冲器字段。在图24的实现方式中,在诸如存储装置或主机中的RAM的易失性存储器中临时维持这两个字段。最后写入的SAT索引页的页索引字段包括对每个SAT索引页的指针。索引缓冲器字段可包含用于还未被写入索引页中的新近写入的SAT页的一组索引条目。
在特定SAT页234中保存目标LBA地址到相应DLBA地址的映射信息,其包含围绕目标地址的一定范围的LBA地址的所有映射信息。地址变换过程的第一阶段是标识和读取该目标SAT页。参照图24,对最后写入的SAT页中的索引缓冲器字段的高速缓存的版本进行二进制搜索,以确定是否存在用于目标LBA的SAT索引条目(在步骤282)。如果已经新近重新写入了目标SAT页,则将存在条目,但还未写入包含了记录目标SAT页的新位置的SAT索引条目的SAT索引页。如果找到用于目标LBA的SAT索引条目,则其定义了目标SAT页的位置并且读取此页(在步骤284)。
如果在步骤282中未找到用于目标LBA的SAT索引条目,则对最后写入的SAT索引页中的页索引字段的高速缓存的版本进行二进制搜索,以对用于目标LBA的SAT索引条目进行定位(在步骤286)。在步骤286中找到的用于目标LBA的SAT索引条目定义了包含目标LBA的LBA地址范围的SAT索引页的位置。读取该页(在步骤288)。进行二进制搜索以对用于目标LBA的SAT索引条目进行定位(在步骤290)。用于目标LBA的SAT索引条目定义了目标SAT页的位置。读取该页(在步骤292)。
当在步骤284或步骤292中读取了目标SAT页时,可如下进行LBA到DLBA变换。对LBA字段进行二进制搜索,以对包含了目标LBA的目标LBA区段的LBA条目进行定位。记录目标LBA区段内的目标LBA的偏移(在步骤294)。字段指针中的信息定义了用于二进制搜索的LBA字段的长度,以及相对于LBA字段的起点的DLBA字段的起点(在步骤296)。步骤294中找到的LBA条目定义了被映射到LBA区段的第一DLBA条目的DLBA字段内的位置(在步骤298)。与在步骤298中定位的多个DLBA条目之一一起使用在步骤294中确定的偏移,以确定目标DLBA地址(在步骤300)。
在另一实施例中,不对于与有效数据相关的每个LBA地址区段生成SAT中的单独LBA条目,而是可在SAT中映射LBA地址块,从而每个LBA地址块是SAT上的一个条目。在此实施例中,可在SAT中记录LBA地址空间中的完整LBA地址块,而不只是各个LBA区段。该实现方式中的LBA条目将会是列出LBA地址块所映射到的DLBA地址空间中的DLBA区段数以及对于相同SAT页中的第一DLBA区段的指针的一个条目。根据存储器装置中存储的数据的破碎程度,LBA地址块可被映射到最小一个DLBA区段,或者最大直到LBA地址块中的簇数。
用于LBA地址块的相应DLBA条目将列出DLBA块以及每个DLBA区段的地址偏移及其相应的LBA偏移二者。不同于上面讨论的对每个LBA区段记录分离的LBA条目的SAT版本(其中仅仅记录与有效数据相关联的LBA区段),记录LBA地址块中的每个LBA区段。由此,记录了当前未被分配给有效数据的LBA地址块中的LBA区段以及被分配给有效数据的LBA区段。在SAT页的DLBA条目部分中,标记未分配的LBA地址组的起点的LBA偏移与DLBA地址空间中的默认值配对。该默认值代表未分配的地址。相同的整体SAT结构和功能性以及参照图19-20讨论的基本SAT层级应用于LBA地址块映射实现方式,但是SAT页代表LBA地址块到DLBA区段映射信息,而不是各个LBA区段到DLBA区段信息。而且,在该实现方式中,SAT索引页存储LBA地址块到SAT页映射信息。
SAT例子
通过例子,在图25中例示了使用图9或图10的逻辑到逻辑存储地址重新映射技术、使用图19-23的各个LBA区段到DLBA区段映射的数据写处理。在图25中,例示了用于时间A-D的LBA地址空间302和DLBA地址空间304。在时间A,主机在三个分离的LBA区段(按序列L1、L2和L3)中写入数据。在LBA空间302中,每个数据区段彼此分开。然后三个LBA区段按照它们被接收的时间次序,重新映射到如时间A所示的DLBA地址空间中的块。该例子假设DLBA地址空间304中的簇的第一块是当前写入块。因此,LBA地址区段L1被分为DLBA地址区段D1以及在被指定为写入块的另一白块中的D2。类似地,在D2之后顺序地,将LBA地址空间区段L2变换为DLBA地址空间区段D3。然后使用最后一个DLBA地址空间区段L3来完成具有DLBA地址空间区段D4的簇的块,并开始具有DLBA地址空间区段D5的新写入块。参照下面的表A,目前为止所描述的LBA到DLBA变换将产生时间A处的SAT,其中向每个LBA区段提供指针、LBA地址空间中的簇长度和DLBA指针。
在SAT的DLBA条目侧,列出了对应于LBA区段的每个DLBA区段。在该例子中,因为单个LBA区段L1已经被分解为DLBA地址空间中两个分离的块,所以存在两个DLBA区段。在每个DLBA区段之后提供LBA偏移数,从而提供距离第一LBA簇和DLBA标记(marker)的偏移。由此,因为接着是标记DLBA2,具有作为LBA区段L1中的5簇的地址,所以它的偏移是5簇。接着是LBA2和LBA3标记,按照LBA次序在SAT的LBA条目一侧列出。因此,尽管DLBA地址空间中的数据区段对应于L1、L2和L3,其中L1、L2和L3代表写入这些分离区段的次序,但是通过LBA地址次序而不是LBA时间次序来组织表的LBA条目一侧。
表A
再次参照图25,在时间B,将附加LBA地址区段L4附接到L2。区段L2和L4实际上形成了单个LBA区段,但在该例子中为了简洁而分开标识。L4的数据被写入为在D5中最后一个条目之后被部分填充的第三写入块中的DLBA地址区段D6。如表B所示,时间B之后的SAT简单地在表的LBA条目一侧的结尾处加上LBA4标记,并指向DLBA条目一侧的DLBA7。
表B
参照图25中时间C处的活动,主机已经删除了其数据被写入LBA地址区段L1和L2的一个或多个文件。在DLBA地址空间304中,L1对应于D1和D2,L2对应于D3。因为这些区段现在表示废弃数据,所以由于有效(红)和废弃(白)数据的混合,在该例子中,之前为红块的两个地址块现在是粉块。如下面的表C所示,相应地更新SAT。移除所有废弃LBA区段,使得仅仅保留有效LBA区段。因为仅仅保留LBA地址空间区段L3和L4,LBA条目仅仅包含标记LBA2和LBA4以及相应的DLBA指针。SAT的DLBA条目一侧也仅仅包含有效数据所需的DLBA指针。
表C
在图25所示的时间的最后快照(时间D)中,原始LBA地址空间区段L3被主机用LBA地址空间L5处的信息部分更新。相应的DLBA地址空间变换是废弃部分D4和D5,使得显示附加的白空间,然后在DLBA地址空间中的当前写入块的结尾处顺序地添加新的LBA区段L5,直到完成该块,并标识新的写入块,使得LBA地址空间区段的剩余部分可被变换为DLBA地址。这造成了结束一个写入块的DLBA区段D7,以及开始新写入块的D8。参照下面的表D,再次更新表,使得LBA空间302中的LBA2指针仍然指向DLBA空间304中第一个DLBA指针,但DLBA条目一侧包括开始与对应于L3的其余DLBA地址相对应的DLBA区段的附加的三个DLBA指针。因为LBA地址空间302中没有对L4进行改变,所以对应于LBA4的用于L4的条目保持相同。应注意,图25的例子看起来示出了簇的连续块。尽管可能可以获得簇的连续块,但期望DLBA地址空间的块将由一个或多个中间块分开。仅仅为了例示的方便而提供连续的DLBA地址空间块。
表D
类似于上述用于数据的DLBA地址块的SAT刷新方案被实现以消除废弃SAT信息并创建白块以重新使用。
存储地址重新映射算法按照以下原则操作:当白块的数目落到预定阈值之下时,必须按照足以确保以与写入块中写入主机数据所消耗的白容量相同的速率产生能分配用于写入数据的可用白容量的速率,来对粉块进行刷新(也称为重新放置)操作。能分配用于写入数据的可用白簇容量是白块的容量加上可在刷新操作期间向其写入数据的重新放置块内的白簇容量。
如果选择用于刷新操作的粉块中的白簇容量占据每个粉块的x%,则一个粉块上通过刷新操作产生的新的可用容量是从粉块产生的一个完整白块减去通过重新放置来自正被刷新的块的数据而在重新放置块中消耗的块的(100-x)%。因而,对粉块的刷新操作产生新可用容量的白块的x%。因而,对于由被写入的主机数据填充的每个写入块,必须对100/x个粉块进行刷新操作,并且必须重新放置的数据是(100-x)/x块。因而,被编程的扇区对于主机写入的扇区的比率近似确定为1+(100-x)/x。
通过所使用的总装置容量的百分比以及包含数据的块(即,红块)的百分比,来确定平均粉块中的白簇容量的百分比。例如,如果装置有80%满,并且包含数据的块中30%为红块,则粉块包含26.2%的白簇容量。有可能的是,删除数据在装置中的LBA地址上的不均匀分布将导致一些粉块具有两倍的白块容量平均百分比。因而,在该例子中,选择用于刷新操作的粉块将具有52.4%白容量,即,x=52.4,并且由主机写入的数据的每个扇区中的被编程扇区的比率将为1.90。
当确定要刷新哪些粉块,是主机数据粉块还是SAT粉块时,存储地址重新映射算法可通过监视由NTFS写入的$bitmap(位图)文件,来检测未分配地址的指定。可按两种方式调度刷新操作。优选地,刷新操作作为背景操作,由此仅仅在SSD或其他便携式闪存存储器装置空闲时才工作,从而不影响主机数据写速度。可替换地,可在前景操作中利用刷新操作,其在主机正写入数据时活动。如果刷新操作被布置为前景操作,则当主机活动发生时,或当“刷新高速缓存”命令表示SSD或便携式闪存存储器装置的潜在关机时,自动暂停这些操作。前景和背景刷新操作选择可以是动态的判定,其中,当要求比在存储器装置的空闲状态期间能实现的速率更高的刷新速率时,执行前景操作。例如,主机或存储器装置可在前景和背景刷新操作之间反复(toggle),从而刷新速率被控制为维持恒定主机数据写速度,直到存储器装置填满。前景刷新操作可与主机数据写操作交错。例如,如果由于主机接口处的持续活动而不能获得足够的空闲时间,则用来执行块刷新操作的数据页的重新放置可在短脉冲群(shortburst)内与响应于主机命令的装置活动交错进行。
SAT更新过程
使用表2所示的层级过程更新SAT数据结构内的元素。
表2:SAT的更新结构的层级
如表2所示,除了DLBA区段更新之外,由SAT层级中更低级结构中的活动触发特定结构的SAT更新。每当与完整DLBA区段相关联的数据被写入到写入块时,更新SAT列表。当SAT列表中存在最大允许数目的条目时,更新一个或多个SAT页。当SAT页被更新时,来自SAT列表的一个或多个条目被添加到SAT页,并从SAT列表中移除。在SAT列表填满时更新的SAT页可被分为多个不同页群组,并且在一次操作中仅仅需要更新一个群组。这可帮助使得SAT更新操作可能延迟来自主机的数据写操作的时间最小化。在此情况下,仅仅从SAT列表复制到已经更新的SAT页群组的条目才从SAT列表中移除。被更新的SAT页的群组尺寸可被设置为不干扰主机***1访问存储器***2的能力的点。在一个实现方式中,群组尺寸可以是4个SAT页。
SAT索引缓冲器字段在最新近写入的SAT页中有效。每当写入SAT页时,更新它而没有附加编程。最终,当在SAT索引缓冲器中存在最大允许数目的条目时,更新SAT索引页。在SAT索引页更新期间,来自SAT索引缓冲器的一个或多个条目被添加到SAT索引页,并从SAT索引缓冲器中移除。如上参照SAT页的更新所述,必须更新的SAT索引页可被分为多个不同页群组,并且在一次操作中仅仅需要更新一个群组。这使得SAT更新操作可能延迟来自主机的数据写操作的时间最小化。仅仅从SAT索引缓冲器复制到已经更新的SAT索引页群组的条目才从SAT索引缓冲器中移除。在一个实现方式中,被更新的SAT索引页的群组尺寸可以是4。
由SAT页或SAT索引页跨越的LBA范围内所需的条目数是可变的,并可随时间改变。因而,并非不常见的是,SAT中的页溢出,或页被非常少地填入(populated)。这些情形可由用于分离和合并SAT中的页的方案来管理。
当在更新SAT页或SAT索引页期间要添加条目,但在页中没有充足的可获得的未用空间来容纳该变化时,页被分为两个。引入新SAT页或SAT索引页,并且对于先前填满的页和新空白页(每个将给予使得它们半满的多个条目),确定LBA范围。如有可能,然后在一次编程操作中写入该两个页。当该页为SAT页时,在最后写入的SAT页中的索引缓冲器字段中包括用于两个页的SAT索引条目。当该页为SAT索引页时,在最后写入的SAT索引页中的页索引字段中包括页索引条目。
当具有相邻LBA范围的两个或多个SAT页或两个SAT索引页被较少地填入时,页可被合并为单页。当所得的单页不会被填满超过80%时,合并启动。由分开的合并的页所跨越的范围限定用于新的单页的LBA范围。当合并的页是SAT页时,在最后写入的SAT页中的索引缓冲器字段中更新用于新页和合并页的SAT索引条目。当页是SAT索引页时,在最后写入的SAT索引页中的页索引字段中更新页索引条目。
在功率周期之后,即,在已经移除和恢复了功率之后,有必要将RAM中的SAT列表重新构造为与功率周期前完全相同的状态。这可通过从数据标头中的LBA地址信息中扫描所有写入块和重新放置块来实现,以标识从最后的SAT页更新起已经写入的附加数据。还在最后写入的SAT页中的字段中记录在最后一次SAT页更新时这些块的位置以及它们之中写指针和重新放置指针的位置。因而,扫描仅仅需要在这些指针的位置处开始。
刷新SAT块
刷新SAT块的处理类似于上面针对从主机接收的数据所述的处理,但仅仅对SAT块操作。由存储地址重新映射写和刷新算法对SAT进行的更新使得SAT块在如图26所示的块状态之间转变。首先,来自白块列表的白块被分配为SAT写入块(在310)。当已经分配了SAT写入块中的最后一页时,块变为红SAT块(在312)。可能的是,如果SAT写入块中的某些页已经变废弃,则SAT写入块还可转变为粉SAT块。然而,为了简洁,该转变在图26中未示出。当更新SAT页或SAT索引页时,使得红SAT块中的一个或多个页废弃,并且红SAT块变为粉SAT块(在314)。当对所选粉SAT块的刷新操作已完成时,粉SAT块变为白块(在316)。
现在将描述选择哪些SAT块将经受刷新过程的处理。选择包含少数有效页或簇的SAT块,作为要刷新的下一SAT块。该块应该是在具有最少数有效页的5%的SAT块之中。可通过构建具有最低有效页计数值的16个SAT块的列表的背景处理,完成块的选择。优选地,在M个调度的SAT块刷新操作所占据的时间中,该处理应该完成一个周期。
图27中例示了在用于确定接下来刷新哪些SAT块的背景处理的一个周期中发生的活动的例子。首先,扫描块信息表(BIT)以标识跟在先前处理周期期间所标识的块的组之后的下一组N个SAT块(在步骤318)。应该在装置初始化之后的第一处理周期中标识第一组SAT块。N的值可针对特定应用适当地选择,并且优选地大于对M选择的值,以便确保SAT刷新块的可用性。作为一个例子,M可以是4,而N可以是8。对于组中的每个SAT块,有效页计数值被设为零(在步骤320)。然后在高速缓存的页索引字段中扫描页索引条目,以标识位于组中任何SAT块中的有效SAT索引页(在步骤322)。有效页计数值相应地递增。依次在每个SAT索引页中扫描SAT索引条目,以标识位于组中任何SAT块中的有效SAT页(在步骤324)。有效页计数值相应地递增(在步骤326)。在扫描了页索引和SAT索引页以确定有效页计数值之后,针对低有效页计数值的列表中的SAT块,评估组中每个SAT块的有效页计数值,并且在必要时,用该组中的块替换列表中的块(在步骤328)。当应该调度SAT块刷新操作时,选择列表中具有最低有效页计数值的块。
在SAT块刷新操作中,所有有效SAT索引页和SAT页被从所选块重新放置到SAT写指针242。仅仅在最后写入的SAT索引页中更新页索引字段。为了让SAT块的数目保持近似恒定,对SAT页和SAT索引页的更新操作所消耗的SAT中的页数必须与SAT块刷新操作所恢复的废弃SAT页和SAT索引页的数目平衡。如上面参照图27所述,确定选择用于下一SAT刷新操作的SAT块中的废弃信息的页数。下一SAT块刷新操作可被调度为在从前一SAT刷新操作起相同数目的信息有效页已经被写入SAT时进行。
块信息表(BIT)
使用块信息表(BIT)记录白块、粉块和SAT块的块地址的分开的列表。BIT写入块包含关于所有其他BIT块定位在哪里的信息。在一个实现方式中,期望的是,存储地址重新映射算法和相关***维持白块列表,以允许选择要被分配为写入块、重新放置块或SAT块的块。还期望的是,维持粉块列表,以允许选择粉块和SAT块以作为块刷新操作的对象。在BIT中维持这些列表,其结构近似为SAT的列表的镜像。
BIT数据结构
在被称为BIT块的DLBA地址的块内实现BIT。块列表信息被存储在BIT页内,并且“DLBA块到BIT页”索引信息被存储在BIT索引页中。在同一BIT块中,可按任何次序混合BIT页和BIT索引页。BIT可由多个BIT块构成,但BIT信息仅可写入当前被指定为BIT写入块的单个块。所有其他BIT块先前已经被写满,并可包含有效和废弃页的组合。实现与上述针对SAT块描述的相同的BIT块刷新方案,以消除废弃BIT信息的页并产生用于重新使用的白块。
BIT块
如图28所示的BIT块是专用于存储BIT信息的DLBA地址的块。其可包含BIT页342或BIT索引页344。BIT块可包含有效BIT页、有效BIT索引页和废弃页的任何组合。仅仅可将BIT信息写入到被指定为BIT写入块340的单个BIT块。按照由递增的BIT写指针346所定义的顺序位置,将BIT信息写入BIT写入块340中。当BIT写入块340被完全写满时,白块被分配为新的BIT写入块。包括BIT的块每个都由它们的BIT块位置标识,它们的BIT块位置是在装置中填入块中的它们的块地址。BIT块被分为表页,可向表页中写入BIT页342或BIT索引页344。BIT页位置通过其在BIT块内的序号来定址。BIT信息可与闪存存储器的不同块中的非BIT信息隔开,可以被隔离为不同于非BIT信息的不同类型的块(例如,二进制对(vs.)MLC),或可与块中的非BIT信息混合。
BIT页
BIT页342是BIT中块列表信息的最小可更新单位。在BIT写指针346所定义的位置处写入更新后的BIT页。BIT页342包含具有定义范围内的DLBA块地址的白块、粉块和SAT块的列表,虽然任何列表中连续块的块地址无需是连续的。BIT页中的DLBA块地址的范围与任何其他BIT页中的DLBA块地址的范围不重叠。BIT页可以分布在整组BIT块上,没有限制。任何范围的DLBA地址的BIT页可以在任何BIT块中。BIT页包括白块列表(WBL)字段348、粉块列表(PBL)字段350、SAT块列表(SBL)字段352和索引缓冲器字段354,以及两个控制指针356。参数备用条目还包含易失性RAM中存储的一些参数的值。
BIT页342内的WBL字段348包含与BIT页342有关的DLBA块地址范围内白块列表中的块的条目。BIT页342所跨越的DLBA块地址的范围与任何其他BIT页342跨越的DLBA块地址的范围不重叠。WBL字段348是可变长度的,并包含可变数目的WBL条目。在WBL字段内,存在用于由BIT页342索引的DLBA块地址范围内每个白块的WBL条目。WBL条目包含块的DLBA地址。
BIT页342内的PBL字段350包含与BIT页342有关的DLBA块地址范围内粉块列表中的块的条目。BIT页342所跨越的DLBA块地址的范围与任何其他BIT页342跨越的DLBA块地址的范围不重叠。PBL字段350是可变长度的,并包含可变数目的PBL条目。在PBL字段内,存在用于由BIT页342索引的DLBA块地址范围内每个粉块的PBL条目。PBL条目包含块的DLBA地址。
BIT页内的SBL字段352包含与BIT页342有关的DLBA块地址范围内SAT块列表中的块的条目。BIT页342所跨越的DLBA块地址的范围与任何其他BIT页342跨越的DLBA块地址的范围不重叠。SBL字段352是可变长度的,并包含可变数目的SBL条目。在SBL字段内,存在用于由BIT页352索引的DLBA块地址范围内每个SAT块的SBL条目。SBL条目包含块的DLBA地址。
索引缓冲器字段354被写入为每个BIT页342的一部分,但仅仅在最新近写入的BIT页中保持有效。BIT页342的索引缓冲器字段354包含BIT索引条目。存在用于当前在相关BIT索引页344中没有有效条目的BIT中的每个BIT页342的BIT索引条目。在每当写入BIT页342时创建或更新BIT索引条目,并在更新相关BIT索引页344时删除。BIT索引条目可包含由BIT页342索引的范围的第一DLBA块地址,由BIT页342索引的范围的最后DLBA块地址,包含BIT页342的BIT块位置,以及BIT块内的BIT页的BIT页位置。索引缓冲器字段354具有用于固定数目的BIT索引条目的容量,假设为32。该数目确定了可写入BIT页342和BIT索引页344的相对频率。
BIT页342的控制指针356定义了PBL字段350的起点和SBL字段352的起点距离WBL字段348的起点的偏移。BIT页342包含作为列表条目数的偏移值。
BIT索引页
一组BIT索引页344提供了对BIT中每个有效BIT页342的位置的索引。各个BIT索引页344包含定义了有效BIT页相对于一定范围的DLBA块地址的位置的条目。BIT索引页所跨越的DLBA块地址的范围与任何其他BIT索引页344所跨越的DLBA块地址的范围不重叠。根据条目相关的BIT页342的DLBA块地址范围值来对条目排序。BIT索引页344包含固定数目的条目。
BIT索引页可分布在整组BIT块上,没有限制。用于任何范围的DLBA块地址的BIT索引页344可在任何BIT块中。BIT索引页344包括BIT索引字段358和页索引字段360。BIT索引字段358包含用于BIT索引页344所跨越的DLBA块地址范围内的所有有效BIT页的BIT索引条目。BIT索引条目关于单个BIT页342,并包含由BIT页索引的第一DLBA块、包含BIT页的BIT块位置、以及BIT块内的BIT页的BIT页位置。
BIT索引页344的页索引字段360包含BIT中所有有效BIT索引页的页索引条目。存在用于BIT中每个有效BIT索引页344的BIT页索引条目,其可以包含由BIT索引页索引的第一DLBA块、包含BIT索引页的BIT块位置、以及BIT块内的BIT索引页的BIT页位置。
维持BIT
更新BIT页342以从WBL348、PBL350和SBL352中增加或移除条目。假设列表可在功率周期后恢复到RAM,对多个条目的更新可累积在RAM中的列表中,并在一次操作中在BIT中实现。BIT索引缓冲器字段在最新近写入的BIT页中有效。每当写入BIT页时,更新它而没有附加编程。当更新BIT索引页时,来自BIT索引缓冲器的一个或多个条目被添加到BIT索引页,并从BIT索引缓冲器中移除。当在BIT索引缓冲器中存在最大允许数目的条目时,更新一个或多个BIT索引页344。
由BIT页342或BIT索引页344跨越的DLBA块范围内所需的条目数是可变的,并可随时间改变。因而,并非不常见的是,BIT中的页溢出,或页被非常少地填入。这些情形可由用于分离和合并BIT中的页的方案来管理。
当在更新BIT页342或BIT索引页344期间要添加条目,但在页中没有充足的可获得的未用空间来容纳该变化时,页被分为两个。引入新BIT页342或BIT索引页344,并且对于先前填满的页和新空白页(每个将给予使得它们半满的多个条目),确定DLBA块范围。如有可能,然后在一次编程操作中写入两个页。当该页为BIT页342时,在最后写入的BIT页中的索引缓冲器字段中包括用于两个页的BIT索引条目。当该页为BIT索引页344时,在最后写入的BIT索引页中的页索引字段中包括页索引条目。
相反,当具有相邻DLBA块范围的两个或多个BIT页342或两个BIT索引页344被较少地填入时,页可被合并为单页。当所得的单页不会被填满超过80%时,启动合并。由分离的合并页所跨越的范围限定用于新的单页的DLBA块范围。当合并的页是BIT页时,在最后写入的BIT页中的索引缓冲器字段中更新用于新页和合并页的BIT索引条目。当页是BIT索引页时,在最后写入的BIT索引页中的页索引字段中更新页索引条目。
刷新BIT块
刷新BIT块的处理严格遵循上面针对SAT块所述的处理,这里不再重复。
控制块
在其他实施例中,BIT和SAT信息可以被存储在同一块的不同页中。被称为控制块的该块可被构造为使得SAT或BIT信息的一页占据控制块中的一页。控制块可由具有整数个页的页单元构成,其中每个页单元通过其在控制块中的顺序编号来定址。页单元可具有一页物理存储器的最小尺寸以及一个元页的最大尺寸。控制块可包含有效SAT页、SAT索引页、BIT页、BIT索引页和废弃页的任何组合。由此,不是具有分开的SAT和BIT块,而是可将SAT和BIT信息这两者都存储在相同的一个或多个块中。如同上述分离的SAT和BIT写入块那样,控制信息(SAT或BIT信息)可仅仅被写入单个控制写入块,控制写指针将标识用于接收控制数据的下一顺序位置,并且当控制写入块被写满时,写入块被分配为新的控制写入块。另外,每个控制块可由其在填入存储器***2的二进制块时的块地址标识。可按照上述针对分开的SAT和BIT块描述的相同方式,刷新控制块以生成新的未写容量,其中差别在于用于控制块的重新放置块可接受与有效SAT或BIT信息有关的页。可按上面针对SAT刷新处理所述的相同方式,实现用于刷新的适当的粉控制块的选择和定时。
监视LBA分配状态
存储地址重新映射算法仅仅记录当前由主机分配给有效数据的主机LBA地址的地址映射信息。因而,必须确定何时由主机将簇从数据存储中解除分配,以便精确地维持此映射信息。
在一个实施例中,来自主机文件***的命令可向存储地址重新映射算法提供关于解除分配的簇的信息。例如,提出了在微软公司的Vista操作***中使用的“Dataset”(数据集)命令。已经由微软向T13提交了“NotificationofDeletedDataProposalforATA8-ACS2”的提案。此新命令想要提供删除数据的通知。单个命令可向装置通知代表最多2GB废弃数据的连续LBA地址上的数据的删除。
解译NTFS元数据
如果不能得到诸如修整(trim)命令的主机文件***命令,则可通过跟踪由NTFS写入的$bitmap***文件(其包含卷上所有簇的分配状态的位图)中的信息变化,来监视LBA分配状态。现在讨论跟踪个人计算机(PC)中的$bitmap变化的一个例子。
分区引导扇区
分区引导扇区是分区上的扇区0。在字节偏移0x30处的字段包含主控文件表(MFT)的起点的逻辑簇号,如表3中的例子。
表3
MFT中的$bitmap记录
名为$bitmap的***文件包含卷(volume)上所有簇的分配状态的位图。$bitmap文件的记录是MFT中的记录编号6。MFT记录具有1024字节的长度。因而,$bitmap记录具有相对于MFT起点的十进制12个扇区的偏移。在以上例子中,MFT在簇0xC4FD2处,或十进制的806866开始,其为十进制6454928扇区。因而$bitmap文件记录在十进制扇区6454940处开始。
在$bitmap记录中存在以下信息(在所述例子中)。在字节偏移0x141到0x142处的字段包含$bitmap文件的第一数据属性的簇中的长度,如表4的例子。
表4
在字节偏移0x143到0x145处的字段包含$bitmap文件的第一数据属性的起点的簇数,如表5的例子。
表5
在字节偏移0x147到0x148处的字段包含$bitmap文件的第二数据属性的簇中的长度,如表6的例子。
表6
在字节偏移0x149到0x14B处的字段包含在$bitmap文件的第一数据属性的起点和第二数据属性的起点之间的簇的数目,如表7的例子。
表7
$bitmap文件的数据属性
用于$bitmap文件的数据属性内的扇区包含按照逻辑簇号次序的、卷中每个簇的分配状态的位图。‘1’表示簇已经被文件***分配给数据存储,‘0’表示簇是空闲的。位图中每个字节与8个簇或64个十进制扇区的逻辑范围有关。位图中每个扇区与0x1000(十进制4096)个簇或0x8000(十进制32768)个扇区的逻辑范围有关。位图中每个簇与0x8000(十进制32768)个簇或0x40000(十进制262144)个扇区的逻辑范围有关。
维持簇分配状态
每当来自主机的写操作针对$bitmap文件的数据属性内的扇区时,必须从存储装置读取前一版本的扇区,并将其数据与刚刚已由主机写入的数据进行比较。必须标识已经从“1”状态回到“0”状态的所有位,并且确定由主机解除分配的簇的相应逻辑地址。每当诸如所提出的修整命令或NTFS元数据跟踪的命令指示已经存在主机进行的簇解除分配时,必须更新存储地址表(SAT)以记录指定簇的地址的解除分配。
逻辑到物理映射
上述讨论主要关注存储地址重新映射的实现,其中期望从主机LBA地址空间到DLBA地址空间(也称为存储LBA空间)的逻辑到逻辑映射。如上所述,图8的实施例(其中映射算法被并入存储器装置的存储器管理器而不是分别如图9-10的存储器装置或主机上的分离的应用中)从主机LBA映射到存储器***2中的物理地址。在图8的实施例中,用物理存储器地址而不是中间逻辑地址来代替上述DLBA。图8的布置中的存储重新映射算法是存储器***2中存储器控制器8的一部分,而不是存储器***2或主机1(分别是图9和图10)上的分离的应用。
图8的逻辑到物理映射布置与图9-10的逻辑到逻辑映射布置之间的不同之处可参照图29-32说明。图29示出了逻辑到物理存储地址重新映射算法如何将物理存储器中的可用白块之一分配为写入块412,以及LBA地址空间408中的每个LBA地址如何被映射到写入块412中可用的物理地址空间410中的顺序位置。物理地址空间410中的写入块412按照接收LBA地址的次序写入,而不论LBA地址位置如何。在该例子中,如同图15的并行逻辑到逻辑映射例子,为了容易说明,假设主机使用的空闲LBA簇的时间次序与地址次序相同,但是存储地址重新映射算法将按照使用LBA地址的时间次序分派写入块412中的物理地址,而不论LBA地址号的次序如何。数据被写入到一个或多个数据区段中的写入块中。数据区段是被映射到同一LBA区段中的连续LBA地址的一组连续物理地址。数据区段在物理地址空间410的块边界处终止。当写入块412被填满时,新的白块被分配为下一写入块412。由此,不分派中间逻辑地址,而是逻辑到物理布置在输入数据被直接写入物理存储器时对输入数据重新排序。
类似于图9-10的逻辑到逻辑映射布置,用于图8的逻辑到物理布置的存储地址重新映射算法操作以确保对于要操作的顺序的写算法可获得白块的足够供应。存储地址重新映射算法通过将数据从粉块刷新到重新放置块416(图30),管理白块的创建。当前被选择用于刷新的粉块被称为刷新快。
如图29-30所示,示出了块刷新处理的图示。存储地址重新映射算法将白块指定为重新放置块416,将从所选的粉块向重新放置块416刷新数据以产生另外的白块。将数据从刷新块(图29的粉块A)中包含有效数据(也称为红数据)的位置重新放置到重新放置块416中的顺序的地址中,以将刷新块转换为白块418。如图31所示,从剩余粉块中标识出下一刷新块(图30的粉块B)。具有最少有效数据(最少的红数据)的粉块,或者从当前低于有效数据平均量或低于某一预定阈值量的粉块列表中选择的粉块,被再次指定为刷新块,并且该粉块的红数据(有效数据)按照有效数据在粉块中出现的次序而传输到开放的重新放置块416中的顺序的物理位置中。作为背景操作而对粉块进行刷新操作,以按照足以补偿被指定为写入块的白块418的消耗的速率来产生白块418。图29-31的例子例示了对于来自主机的新数据以及对于来自粉块的重新放置的数据,如何分开维持白块和重新放置块。在其他实现方式中,可将新数据和重新放置的数据传输到单个写入块,而无需分离的写入块和重新放置块。
用于逻辑到物理重新映射的SAT
SAT也用于图8的逻辑到物理布置。这里,SAT具有与逻辑到逻辑存储地址重新映射布置中相同的基本结构,其中DLBA(也称为存储LBA)地址信息被数据区段的物理地址代替。图32中例示了用于逻辑到物理布置的SAT索引和映射结构的层级。示出了LBA432和相应的数据区段430。LBA到物理映射信息被包含在SAT页434中。LBA到SAT页索引信息被包含在SAT索引页436中,主控页索引438在与控制器8相关联的RAM中高速缓存。SAT可包括多个SAT块,或可仅仅写入到单个块目前指定的SAT写入块。所有其他SAT块已经被写满,并且可包含有效和废弃页的组合。实现类似于主机数据块的SAT块刷新方案以消除废弃SAT消息的页并产生用于重新使用的白块。
如同上述逻辑到逻辑SAT映射,图中的逻辑到物理布置中的SAT是可变尺寸表,其自动缩放直到最大数目,因为SAT中的条目数将根据主机所分派的LBA的破碎度自己调整。由此,如果主机分派了高度破碎的LBA,则SAT将包括比在主机向数据分派了没那么破碎的LBA群组的情况下更多的条目。因此,如果主机LBA变得没那么破碎,则SAT的尺寸将减小。更低的破碎度带来更少的要映射的分离区段,并且更少的分离区段导致SAT中更少的条目,因为SAT在一个条目中将主机LBA地址的区段映射到一个或多个数据区段(物理地址区段),而不是严格地跟踪和更新固定数目的逻辑地址。主机LBA地址区段可被映射到两个或更多个数据区段,其中主机LBA区段是被分配给有效数据的一组连续逻辑地址,而数据(或物理地址)区段是同一元块内且被映射到同一主机LBA区段的连续的一组物理地址。
SAT块
每个SAT块是专用于存储SAT信息的物理地址的块。SAT块被分为表页,可向其中写入SAT页434或SAT索引页436。SAT块可包含有效SAT页434、有效SAT索引页436和废弃页的任何组合。参照图33,示出了SAT写入块440。在由递增的SAT写指针442所定义的顺序位置上,将数据写入SAT写入块440中。可将数据仅仅写入到被指定为SAT写入块440的单个SAT块。将数据写入SAT写入块440中,作为由递增的SAT写指针442所定义的顺序位置。按照与前面针对主机数据写入块(例如,图15-17中的项目212)描述的相同方式,当SAT写入块440被完全写满时,白块被分配为新的SAT写入块440。SAT页位置通过其在SAT块内的序号来定址。SAT页可在非SAT信息块之间混合,或者可以进一步分离到特殊类型的块中,如二进制闪存块,而非SAT信息被存储在MLC闪存块中。在其他实施例中,可在同一块中混合SAT信息和非SAT信息。
SAT页
SAT页434是SAT中映射信息的最小可更新单位。在SAT写指针442所定义的位置处写入更新后的SAT页434。SAT页434包含具有递增LBA地址的一组LBA区段的映射信息,虽然连续LBA区段的地址无需是连续的。SAT页434中的LBA地址的范围与任何其他SAT页434中的LBA地址的范围不重叠。SAT页434可以分布在整组SAT块上,没有限制。任何范围的LBA地址的SAT页434可以在任何SAT块中。SAT页434可包括索引缓冲器字段444、LBA字段446、数据区段字段448和控制指针450。参数备用条目还包含易失性RAM中存储的一些参数的值。
SAT页434内的LBA字段446包含一定范围的LBA地址内被分配用于数据存储的连续LBA地址的区段的条目。SAT页434跨越的LBA地址的范围与任何其他SAT页434跨越的LBA条目的范围不重叠。LBA字段是可变长度的,并包含可变数目的LBA条目。在LBA字段446内,存在用于由SAT页434索引的LBA地址范围内每个LBA区段的LBA条目452。LBA区段被映射到一个或多个数据区段。
如图34-36所示,逻辑到物理布置下的SAT的条目在几个方面中与逻辑到逻辑地址重新映射布置有所不同。参照图34,LBA条目452包含以下信息:其映射到的数据条目数454;以及LBA区段所映射到的第一数据区段的、同一SAT页434中的数据字段448内的数据条目数458。
SAT页434内的数据字段448包含被映射到相同SAT页434中的LBA字段446内的LBA区段的所有数据地址区段的条目。数据字段448是可变长度的,并且包含可变数目的数据条目460。在数据字段448内,存在用于被映射到同一SAT页434中的LBA字段246内的LBA区段的每个数据区段的数据条目460。如图35所示,每个数据条目460包含以下信息:区段中的第一数据地址462;以及第一数据地址所映射到的LBA区段中的LBA偏移464。作为每个SAT页434的一部分写入但仅仅在最新近写入的SAT页434中保持有效的SAT页/索引缓冲器字段包含SAT索引条目466。
存在用于当前在相关SAT索引页436中没有有效条目的SAT中的每个SAT页434的SAT索引条目466。参照图36,在每当写入SAT页434时创建或更新SAT索引条目,并在更新相关SAT索引页436时删除。它包含由SAT页434索引的第一LBA468、由SAT页434索引的最后LBA470、包含SAT页434的SAT块编号472、以及SAT块内的SAT页434的页编号474。SAT索引字段476具有用于固定数目的SAT索引条目466的容量。该数目确定了可写入SAT页434和SAT索引页436的相对频率。在一个实现方式中,该固定数目可以为32。
SAT页字段指针450定义了从LBA字段的起点到数据字段的起点的偏移。它包含作为LBA条目数的偏移值。SAT页434中的参数备用条目包含在易失性RAM中存储的参数的值。在功率周期之后,在(对于图8-9的实现方式与控制器8相关联的)RAM中的信息的初始化期间,使用这些参数值。它们仅仅在最新近写入的SAT页434中有效。
在另一实施例中,不对于与有效数据相关的每个LBA地址区段生成SAT中的单独LBA条目,而是可在SAT中映射LBA地址块,从而每个LBA地址块是SAT上的一个条目。如图37所示,可在SAT中记录LBA地址空间中的完整LBA地址块480。该实现方式中的LBA条目482将会是列出LBA地址块所映射到的物理地址空间中的数据区段484的数目以及对于相同SAT页中的第一数据区段的指针的一个条目。根据存储器装置中存储的数据的破碎程度,LBA地址块可被映射到最小一个数据区段,或者最大直到LBA地址块中的簇数。
在图37的例子中,LBA地址块480包括8个LBA区段,其中4个区段被分配给有效数据(从LBA偏移L1、L3、L4和L6开始的阴影部分),而4个区段是未分配的地址区段(从LBA偏移0、L2、L5和L7开始的白色部分)。LBA地址块480的相应数据条目488将由物理块和地址偏移(P1-P3)表示的数据区段的物理地址490与相应的LBA偏移492相联系。不同于上面讨论的对于每个LBA区段记录单独的LBA条目的SAT版本(其中仅仅记录与有效数据相关联的LBA区段),记录LBA地址块中的每个LBA区段。由此,记录了当前未被分配给有效数据的LBA地址块480中的LBA区段以及被分配给有效数据的LBA区段。在图37所示的SAT页的数据条目部分488中,标记未分配的LBA地址组的起点的LBA偏移与物理地址空间中的“FFFFFFFF”值配对。这代表指示未分配地址的保留值的默认十六进制数。上述相同的整体SAT结构和功能性以及参照图32讨论的基本SAT层级应用于LBA地址块映射实现方式,但是SAT页代表LBA地址块到数据区段映射信息,而不是各个LBA区段到数据区段信息。而且,在该实现方式中,SAT索引页存储LBA地址块到SAT页映射信息。
SAT索引页
再次参照图34-36,一组SAT索引页436提供了对SAT中每个有效SAT页434的位置的索引。单独的SAT索引页436包含定义了与一定范围的LBA地址相关的有效SAT页的位置的条目466。SAT索引页436所跨越的LBA地址的范围与任何其他SAT索引页436所跨越的LBA地址的范围不重叠。根据条目相关的SAT页的LBA地址范围值来对条目排序。SAT索引页436包含固定数目的条目。SAT索引页436可分布在整组SAT块上,没有限制。用于任何范围的LBA地址的SAT索引页436可在任何SAT块中。SAT索引页436包括SAT索引字段和页索引字段。
SAT索引字段476包含用于SAT索引页436所跨越的LBA地址范围内的所有有效SAT页的SAT索引条目。SAT索引条目466关于单个SAT页434,并包含以下信息:由SAT页434索引的第一LBA;包含SAT页434的SAT块编号;以及SAT块内的SAT页434的页编号。页索引字段包含SAT中所有有效SAT索引页436的页索引条目。存在用于SAT中每个有效SAT索引页436的页索引字段,其包含以下信息:由SAT索引页索引的第一LBA;包含SAT索引页的SAT块编号;以及SAT块内的SAT索引页的页编号。
临时SAT数据结构
对逻辑到逻辑存储地址重新映射描述的临时SAT数据结构以及表页和地址变换,对于图8的逻辑到物理布置而言是相同的,区别在于物理地址代替先前讨论中的对逻辑地址(DLBA)的引用。例如,当用物理地址或地址区段代替第二逻辑地址空间(DLBA)时,图24的SAT变换过程和图25的SAT创建和更新例子以及表A-D也应用于图8的逻辑到物理布置。类似地,图8的逻辑到物理布置利用相同的BIT结构,但其中BIT引用物理地址而不是逻辑(DLBA)地址。
主机逻辑块地址的修改分配
图11的配置直接在主机文件***内集成了图8-10的一部分特征,但是图11的存储地址映射布置不从第一逻辑地址空间变换为第二逻辑地址空间。相反,修改分配主机LBA地址的初始主机文件***方法,以减少破碎度。
图11中的地址映射建立物理存储器中的数据映射,其类似于图8-10的配置所建立的映射。不同于仅仅得知根据簇的主机LBA空间的典型主机文件***,该实施例中的主机文件***10得知与存储器***2中的物理块尺寸相对应的块尺寸。从对应于物理存储器块的所选块中分配用于数据存储的主机LBA地址。按顺序的次序分配所选块中所存在的所有空闲簇地址。映射算法允许物理存储器中的更新块中所需的数据整合量保持最小。在LBA地址空间内的块中管理用于数据存储的空闲簇的分配。主机文件***根据块中所包含的空闲簇数来对块排序。选择具有最高数目的空闲簇的块,作为下一分配块。
参照图38,示出了可在图11的主机文件***配置中实现的地址映射的例子。由图11的配置实现的地址映射在主机上的主机文件***中发生,并且优选地由主机1的CPU9执行。如同图9和图10的配置的例子中那样,在尺寸上与存储器***中的闪存存储器的物理存储器块相对应的块中管理用于数据存储的空闲簇的分配。不同于图9-10的例子,在图11的配置中实现的地址映射管理主机LBA地址空间内的空闲簇的分配,但不将主机LBA地址空间重新映射到存储LBA地址空间中。相反,如下所述,优化由主机文件***执行的地址映射算法,以在分派主机LBA地址的下一块中的地址之前,利用主机LBA地址空间中的可用地址来完全分配主机LBA地址的一个块中的可用地址。
在图38的例子中,主机LBA地址空间494中的块按照它们之中包含的空闲簇数来排序。参照图1,如果主机文件***10是NTFS文件***,则块的排序可基于主机文件***10在存储器***2上存储和更新的NTFS$bitmap文件中的分配图(map)。在从NTFS$bitmap文件中提取分配图时,主机文件***10将现在具有最高数目的空闲(废弃)簇的块选择作为下一分配块。在图38的例子中,选择块1作为分配块,因为它包含最高数目的废弃(由此空闲)簇。废弃簇的主机LBA地址按照顺序的次序从块1中分配给数据,其中图38中每个箭头例示了从主机1向新数据的可用地址的分派。仅仅当块1中所有空闲簇已经被分配时,块2才被选作下一分配块。然后按顺序的次序将块2中空闲簇的地址分派给新数据。
主机LBA地址空间494中分派地址的顺序次序可以是从块中的最低可用地址值到最高可用地址值,或者可以是块中可用地址值的“回绕(wrap-around)”序列。例如,假设图38中块1的地址值为1至16,该块中可用的地址是地址值(从左到右)3-5、7-8、11-13和15-16。地址从最低到最高的分派将包括按照从地址值3开始的序列分派每个可用地址。可替换地,回绕将包括在除了地址值3之外的某个点开始分派地址,按照从该第一个选择的地址值增加的值来分派地址,然后继续从最低可用地址分派主机LBA块中的可用地址,直到当前主机LBA块中的所有地址都已被分派为止。由此,如果在该例子中块1中的地址12被首先分派,则地址13、15-16、3-5、7-8和11将是分派剩余部分的次序。
在存储器***2(其可以是使用标准LBA接口的多种已知存储器***中的任一种),在对应于块1的物理更新块496中存储被写入所分配的簇地址的数据。存储器***2还将分配对应于块2的单独物理更新块498。在对应于所选分配块的原始块中仍然有效的数据500与已经写入更新块中的新主机数据502整合。因为一般按顺序次序对闪存存储器的物理块中的页编程,所以该整合可在新主机数据已经写入更新块中,或者更一般地,与正被写入的新主机数据交错之后进行。可通过存储器***2中的控制器8管理将主机LBA块的数据整合到单个闪存块中的处理。因为主机文件***选择具有最高数目的空闲簇的块作为分配块,所以将整合的数据量控制为最小。然而,不同于参照图8-10的实施例所讨论的刷新处理,其中将从一个块刷新的有效数据顺序地写入可以具有与不同于其他块的地址范围相关联的数据的重新放置块,图11的分配处理带来无用数据收集处理,其中通过将块的剩余有效数据与相同地址范围的更新数据相合并来维持地址的块。
当在例如图11和图38所示的主机文件***185中实现地址映射分配算法时,物理存储器的块中整合的数据量可与通过图8-10的实施例中描述的存储地址重新映射从等价块重新放置的数据量相同。因为在图11的实施例中不发生由文件***分配的主机LBA地址的重新映射,所以在该实现方式中无需SAT。而且,因为是主机文件***的正常实践,所以为此目的在数据结构中记录被分配用于存储文件数据的地址,如用于NTFS文件***的$MFT文件或用于文件分配表(FAT)文件***的FAT结构。
这里讨论的地址映射和重新映射***和方法的优点可包括存储器管理器级的无用数据收集的减少或消除以及减少闪存存储器的压力。当使用存储器管理算法(其不使用中间DLBA地址)并且如图8所示将连续LBA地址的块映射到单个物理块时,在数据被写入到比物理块尺寸更小的LBA地址区段时需要无用数据收集操作。在这样的无用数据收集过程中,将具有LBA块中的地址的所有数据整合到同一物理块中。例如,当被写入的文件的平均尺寸是40KB而物理块尺寸是4MB时,如果文件***分配算法和空闲簇空间的破碎性使得每个文件作为分开的碎片写入分离的块中,则每个由主机写入的数据扇区中编程扇区的比率将为100。
对于传统的逻辑到物理块映射,每当将主机数据的碎片分开写入到逻辑地址块时,在无用数据收集操作期间必须重新放置数据体。对于存储地址重新映射算法,数据始终被写入到顺序的地址中,直到块(逻辑或物理)被填满,因此不需要无用数据收集。这里公开的存储地址重新映射中的刷新操作不是由写处理触发,而是仅仅响应于数据被废弃。由此,数据重新放置开销应该比具有这里描述的存储地址重新映射功能性的***中更低。在其他实施例中,存储器***可被配置为分开维持某些范围的LBA地址,从而在每个主机LBA地址范围内,可应用上述存储地址重新映射技术。由此,每个分派的LBA地址范围将具有其自己的写入块和重新放置块,并且当用于该具体分派的主机LBA地址范围的之前写入块或重新放置块被写满时,新的白块将被分配给该具体分派的主机LBA地址范围,作为写入块或重新放置块。
已经描述了用于存储地址重新映射的***和方法,其能够在随机写应用中增加存储器***的性能,其特征在于需要将短脉冲群的数据写入到装置的LBA地址空间中的无关区域,这可在个人计算机中的固态盘应用中经历到。在所公开的存储地址重新映射的某些实施例中,将主机数据从主机所分派的第一逻辑地址映射到第二逻辑地址空间中的连续逻辑地址的块。因为废弃与完全编程的地址块相关的数据,所以公开了从具有最少量有效数据或具有少于有效数据阈值量的粉块群组中选择粉块,并重新放置这些块中的有效数据,从而释放这些块以用于写入更多数据。将重新放置的数据按照其在需要刷新的块中出现的次序,连续写入到重新放置块,而不论主机所分派的逻辑地址如何。以此方式,可通过不特意整合由主机分派的逻辑地址区段,来减少开销。使用存储位置表来跟踪在由主机分派的逻辑地址和第二逻辑地址之间的映射,以及映射中由于刷新引起的后续变化。在由主机分派的逻辑地址被直接映射到物理地址的实施例中,存储地址表跟踪该关系,并维持块信息表以跟踪例如特定块是具有有效和废弃数据两者的粉块,还是仅具有未写容量的白块。
SAT将主机文件***分配给有效数据的逻辑地址空间中的每个地址区段映射到装置地址空间(对于图8的布置,物理地址空间;对于图9-10的布置,逻辑存储地址空间)中的一个或多个地址区段。主机所使用的连续地址空间的可变长度单元(LBA区段)被映射到连续装置地址空间的一个或多个可变长度单元。区段到区段地址映射方案的使用可提供相对于基于固定尺寸单元的映射方案的益处。SAT中所需的映射条目数与主机所写入的数据的区段中的平均簇数成反比。这使得SAT数据结构的数目最小化,并使得在主机写入和删除文件数据时更新这些数据结构的平均时间最小化。
因而,意图将前面的详细描述看作是例示性而不是限制性的,并且应理解,意图是包括所有等价物的以下权利要求限定本发明的精神和范围。
Claims (29)
1.一种大容量存储器***,包括:
可重新编程的非易失性存储器单元,所述存储器单元被布置在能一起擦除的多个存储器单元块中;
接口,适用于从主机***接收数据,所述数据以主机逻辑块地址LBA地址来定址;以及
与所述接口通信的控制器,所述控制器被配置为分配连续存储LBA地址的块用于从所述主机***接收所述数据,且被配置为将用于所接收的数据的主机LBA地址的每个重新映射到所述连续存储LBA地址的块,其中,所述控制器被配置为:将每个连续存储LBA地址顺序地按所接收的数据被接收的次序分配给所接收的数据,而不考虑与所接收的数据相关的主机LBA地址,所述控制器还被配置为分配连续存储LBA地址的第二块用于以连续的方式重新映射另外的接收的数据,所述连续存储LBA地址的第二块仅对应于在分配时未写的容量,其中,所述控制器仅在完全分派了所述连续存储LBA地址的块时才向所述第二块分配数据。
2.如权利要求1所述的***,其中所述控制器还被配置为分配连续存储LBA地址的块用于多个范围的主机LBA地址的每个,其中,连续存储LBA地址的每个块仅对应于在分配时未写的容量。
3.如权利要求2所述的***,其中,所述控制器还被配置为:
将所述多个范围的主机LBA地址的各个范围中的用于所接收的数据的主机LBA地址的每个重新映射到存储LBA地址的各自的被分配的块,其中,所述控制器按连续的方式顺序地向落入所述多个范围的各个范围内的所接收的数据按接收所述数据的次序分派在连续存储LBA地址的被分配的块中的存储LBA地址,而不考虑所述多个范围的各个范围内的主机LBA地址。
4.如权利要求3所述的***,其中,所述控制器被配置为对于所述多个范围的每个范围、按连续的方式分配连续存储LBA地址的第二块用于重新映射另外的接收的数据,所述连续存储LBA地址的第二块仅对未写的容量进行定址,其中,仅当完全分派了当前与主机LBA地址的具体范围相关的连续存储LBA地址的块时对所述主机LBA地址的具体范围分配所述连续存储LBA地址的第二块。
5.如权利要求1所述的***,其中,所述控制器还被配置为向当前与连续存储LBA地址的块相关的地址的物理块中的连续物理地址写入与所述连续存储LBA地址的块相关的数据。
6.如权利要求1所述的***,其中,所述控制器还被配置为生成将主机LBA地址和存储LBA地址位置相联系的联系数据,并向连续存储LBA地址的第二块中的联系数据分派各自的连续存储LBA地址。
7.如权利要求6所述的***,其中,所述连续存储LBA地址的块排他性地包括与主机LBA地址相关的数据,且所述连续存储LBA地址的第二块排他性地包括联系数据。
8.如权利要求1所述的***,其中,所述控制器还被配置为:
标识与所述连续存储LBA地址的块相关的废弃数据,其中,所述废弃数据表示主机解除分配的数据;以及
选择连续存储LBA地址的重新放置块,所述重新放置块用来连续地重新映射来自连续存储LBA地址的块的有效数据;以及
将有效数据的存储LBA地址从连续存储LBA地址的块重新分派给在重新放置块中的连续存储LBA地址。
9.如权利要求8所述的***,其中,所述控制器还被配置为:
标识具有主机解除分配的数据的、与所述连续存储LBA地址的附加块相关的废弃数据;以及
将有效数据的存储LBA地址从连续存储LBA地址的附加块重新分派给在重新放置块中的连续存储LBA地址;以及
当所述重新放置块填满时,选择仅具有未写容量的新重新放置块,且将来自所述附加块的剩余的有效数据重新分派给所述新重新放置块中的连续存储LBA地址。
10.如权利要求8所述的***,其中,所述连续存储LBA地址的重新放置块与重新映射的有效主机数据排他性地相关。
11.如权利要求7所述的***,其中,所述控制器还被配置为:
标识与所述连续存储LBA地址的第二块相关的废弃数据;以及
选择连续存储LBA地址的重新放置块,所述重新放置块用来连续地重新映射来自连续存储LBA地址的第二块的有效数据;以及
将有效数据从连续存储LBA地址的第二块重新分派给在重新放置块中的连续存储LBA地址。
12.如权利要求9所述的***,其中,所述控制器还被配置为:
标识与所述连续存储LBA地址的附加块相关的废弃数据,其中所述所述连续存储LBA地址的附加块与联系数据排他性地相关;以及
将与连续存储LBA地址的附加块相关的有效数据的重新分派给在重新放置块中的连续存储LBA地址,其中,当所述重新放置块填满时,所述控制器选择不具有有效数据的新重新放置块,且将与所述附加块相关的剩余的有效数据重新分派给所述新重新放置块中的连续存储LBA地址。
13.如权利要求11所述的***,其中,所述控制器还被配置为跟踪具有白色、或粉色状态的连续存储LBA地址的多个块的每个的状态,其中,白色状态标识仅具有未写的容量的任何块,且粉色状态标识具有废弃数据和有效数据两者的任何块。
14.如权利要求13所述的***,其中,所述控制器被配置为维持块信息表,该块信息表包括用于排他性地定址块信息表数据的连续存储LBA地址的初始块,该块信息表数据涉及连续存储LBA地址的多个块的每个的状态。
15.如权利要求14所述的***,其中,所述控制器被配置为以连续的方式分配连续存储LBA地址的附加块用于在对块信息表数据进行定址时使用,所述连续存储LBA地址的附加块在分配时不对有效数据进行定址,其中,所述控制器被配置为仅当完全分派了连续存储LBA地址的初始块时分配所述附加块。
16.一种大容量存储器***,所述***包括:
可重新编程的非易失性存储器单元,所述存储器单元被布置在能一起擦除的多个存储器单元块中;
接口,适用于从主机***接收以主机逻辑块地址LBA格式来定址的数据;以及
与所述接口通信的控制器,所述控制器被配置为:
在所述大容量存储***处从所述主机***接收与主机逻辑块地址LBA地址相关的数据;
按接收的次序连续地将接收的主机LBA地址重新映射到连续存储LBA地址的块;
分配连续存储LBA地址的附加块,所述附加块在分配时不包含有效数据,且如果所述连续存储LBA地址的块被完全分配,连续地将剩余的接收的主机LBA地址重新映射到所述附加块;以及
建立不包含有效数据的连续存储LBA地址的新块,
其中,为了建立不包含有效数据的连续存储LBA地址的新块,所述控制被进一步配置为:
标识与重新映射的主机LBA地址先前完全相关且当前对废弃数据的一页或多页进行定址的存储LBA地址的块;以及
按有效数据在第一标识块中存在的次序以连续方式将有效数据的地址从所述第一标识块重新放置到重新放置块中,直到所述第一标识块不对有效数据进行定址。
17.如权利要求16所述的***,所述控制器被进一步配置为:如果所述重新放置块被写满,分配仅对未写的容量进行定址的第二重新放置块以继续按连续方式从第一标识块接收有效数据的任何附加地址。
18.一种在主机***和可重新编程的非易失性大容量存储***之间传输数据的方法,该方法包括:
在所述大容量存储***处从所述主机***接收与主机逻辑块地址LBA地址相关的数据;
按接收的次序、而不考虑主机LBA地址的次序,在具有连续物理地址的写入块的连续物理地址中存储所接收的数据;
分配来自多个白色块的白色块,作为当所述写入块被完全编程时存储所接收的数据的下一写入块,多个白色块的每个包括仅包含未写容量的连续物理地址的块;
更新存储地址表SAT,其将所接收的数据的主机LBA地址映射到每个写入块中的物理地址,其中,所述SAT被维持在物理地址的至少一个块中;以及
建立新的白色块,其中,所述建立新的白色块包括:
从多个粉色块中选择粉色块,其中,多个粉色块的每个包括具有有效数据和废弃数据两者的完全编程的物理地址的连续块,其中,所选择的粉色块具有小于阈值量的有效数据;以及
将来自所选粉色块的所有有效数据重新放置到重新放置块,其中,在重新放置来自所选粉色块的所有有效数据时,所选粉色块变为新的白色块。
19.如权利要求18所述的方法,其中,所述有效数据的阈值量包括多个粉色块的有效数据的平均量。
20.如权利要求18所述的方法,其中,所述大容量存储***被细分为多个范围的物理地址,且存储所接收的数据包括在与所述多个范围的物理地址中的适当的一个范围相关的写入块中存储所接收的数据,且分配新的块包括当用于所述多个范围中的具体一个的白色块被完全编程时、分配白色块作为用于所述多个范围的物理地址中的具体一个的新的块。
21.如权利要求18所述的方法,其中,更新所述SAT包括生成将主机LBA地址和其中存储所接收的数据的物理地址相联系的联系数据,且按在连续物理地址的块中生成的次序存储该联系数据。
22.如权利要求18所述的方法,其中,建立新的白色块包括响应于分配白色块作为写入块而建立新的白色块。
23.如权利要求22所述的方法,其中,建立新的白色块包括以足够补偿大容量存储***分配来作为写入块的白色块的消耗的速率建立新的白色块。
24.如权利要求18所述的方法,其中,重新放置所有有效数据包括:
将所述有效数据从所选粉色块复制到重新放置块中的连续物理地址,其中,所述重新放置块包括被分配以从粉色块接收重新放置的有效数据的连续物理地址的块;以及
其中,按出现的次序复制来自所选粉色块的有效数据。
25.如权利要求24所述的方法,还包括:
当所述重新放置块被完全编程时,选择白色块作为下一重新放置块;
将来自所选粉色块的任何剩余的有效数据、以出现的次序复制到所述下一重新放置块中的连续物理地址;以及
在复制来自所述粉色块的所有有效数据之后,从多个粉色块中选择具有最少量的有效数据的下一粉色块,且按出现的次序将来自所选的下一粉色块的有效数据复制到所述下一重新放置块中的剩余连续物理地址。
26.如权利要求18所述的方法,其中,选择所述粉色块包括根据每个粉色块中包含的废弃数据的量,对所述多个粉色块分级,且其中,所选粉色块包括具有最高量的废弃数据的粉色块。
27.如权利要求18所述的方法,其中,选择所述粉色块包括扫描所述大容量存储***处的簇分配图。
28.如权利要求27所述的方法,其中,所述簇分配图包括$位图文件。
29.如权利要求18所述的方法,其中,选择所述粉色块包括在大容量存储***处接收主机***命令,所述主机***命令标识废弃数据地址。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US94290007P | 2007-06-08 | 2007-06-08 | |
US60/942,900 | 2007-06-08 | ||
US12/036,014 | 2008-02-22 | ||
US12/036,014 US9396103B2 (en) | 2007-06-08 | 2008-02-22 | Method and system for storage address re-mapping for a memory device |
CN2008801023821A CN101779195B (zh) | 2007-06-08 | 2008-06-03 | 用于存储器装置的存储地址重新映射的方法和*** |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008801023821A Division CN101779195B (zh) | 2007-06-08 | 2008-06-03 | 用于存储器装置的存储地址重新映射的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102831070A CN102831070A (zh) | 2012-12-19 |
CN102831070B true CN102831070B (zh) | 2016-02-17 |
Family
ID=40096925
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210274564.5A Expired - Fee Related CN102831071B (zh) | 2007-06-08 | 2008-06-03 | 用于存储器装置的存储地址重新映射的方法和*** |
CN2008801023821A Expired - Fee Related CN101779195B (zh) | 2007-06-08 | 2008-06-03 | 用于存储器装置的存储地址重新映射的方法和*** |
CN201210274159.3A Expired - Fee Related CN102831070B (zh) | 2007-06-08 | 2008-06-03 | 用于存储器装置的存储地址重新映射的方法和*** |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210274564.5A Expired - Fee Related CN102831071B (zh) | 2007-06-08 | 2008-06-03 | 用于存储器装置的存储地址重新映射的方法和*** |
CN2008801023821A Expired - Fee Related CN101779195B (zh) | 2007-06-08 | 2008-06-03 | 用于存储器装置的存储地址重新映射的方法和*** |
Country Status (7)
Country | Link |
---|---|
US (2) | US8429352B2 (zh) |
EP (1) | EP2156299B1 (zh) |
JP (2) | JP5350371B2 (zh) |
KR (1) | KR101453264B1 (zh) |
CN (3) | CN102831071B (zh) |
TW (1) | TWI394160B (zh) |
WO (1) | WO2008154216A1 (zh) |
Families Citing this family (193)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8108590B2 (en) * | 2000-01-06 | 2012-01-31 | Super Talent Electronics, Inc. | Multi-operation write aggregator using a page buffer and a scratch flash block in each of multiple channels of a large array of flash memory to reduce block wear |
WO2008070813A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a front-end, distributed raid |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US8429352B2 (en) * | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
US8200904B2 (en) * | 2007-12-12 | 2012-06-12 | Sandisk Il Ltd. | System and method for clearing data from a cache |
JP4164118B1 (ja) * | 2008-03-26 | 2008-10-08 | 眞澄 鈴木 | フラッシュメモリを用いた記憶装置 |
US20090271562A1 (en) * | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
KR101535226B1 (ko) * | 2008-12-16 | 2015-07-27 | 삼성전자주식회사 | 중간 변환 장치를 통해 연결된 저장 장치 인증 방법 및 시스템 |
US8205063B2 (en) * | 2008-12-30 | 2012-06-19 | Sandisk Technologies Inc. | Dynamic mapping of logical ranges to write blocks |
US20100169540A1 (en) * | 2008-12-30 | 2010-07-01 | Sinclair Alan W | Method and apparatus for relocating selected data between flash partitions in a memory device |
US8261009B2 (en) * | 2008-12-30 | 2012-09-04 | Sandisk Il Ltd. | Method and apparatus for retroactive adaptation of data location |
US8452940B2 (en) * | 2008-12-30 | 2013-05-28 | Sandisk Technologies Inc. | Optimized memory management for random and sequential data writing |
US8701120B2 (en) * | 2009-02-27 | 2014-04-15 | International Business Machines Corporation | Virtualization of storage buffers used by asynchronous processes |
TWI407441B (zh) * | 2009-03-20 | 2013-09-01 | Phison Electronics Corp | 快閃記憶體寫入方法及使用此方法的儲存系統與控制器 |
US8364931B2 (en) * | 2009-06-29 | 2013-01-29 | Mediatek Inc. | Memory system and mapping methods using a random write page mapping table |
US8645438B2 (en) * | 2009-06-30 | 2014-02-04 | Sandisk Technologies Inc. | File system and method of file access |
CN101582089B (zh) * | 2009-07-02 | 2011-06-29 | 北京讯风光通信技术开发有限责任公司 | 一种嵌入式设备的文件管理方法及*** |
US20110002169A1 (en) | 2009-07-06 | 2011-01-06 | Yan Li | Bad Column Management with Bit Information in Non-Volatile Memory Systems |
US8612718B2 (en) * | 2009-08-19 | 2013-12-17 | Seagate Technology Llc | Mapping alignment |
TWI453747B (zh) * | 2009-09-02 | 2014-09-21 | Silicon Motion Inc | 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器 |
US8392479B1 (en) * | 2009-09-14 | 2013-03-05 | Symantec Corporation | Method and apparatus for optimizing storage space allocation for computer data |
TWI426528B (zh) * | 2009-09-30 | 2014-02-11 | Phison Electronics Corp | 用於快閃記憶體的區塊管理方法、控制器與儲存系統 |
US8364924B2 (en) | 2009-10-21 | 2013-01-29 | International Business Machines Corporation | Achieving a high throughput in a storage cache application using a flash solid state disk |
US7954021B2 (en) * | 2009-10-23 | 2011-05-31 | International Business Machines Corporation | Solid state drive with flash sparing |
US9753847B2 (en) * | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US9110594B2 (en) * | 2009-11-04 | 2015-08-18 | Seagate Technology Llc | File management system for devices containing solid-state media |
US8255661B2 (en) * | 2009-11-13 | 2012-08-28 | Western Digital Technologies, Inc. | Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device |
US20110119462A1 (en) * | 2009-11-19 | 2011-05-19 | Ocz Technology Group, Inc. | Method for restoring and maintaining solid-state drive performance |
WO2011061724A1 (en) * | 2009-11-23 | 2011-05-26 | Amir Ban | Memory controller and methods for enhancing write performance of a flash device |
US8473669B2 (en) | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8285918B2 (en) * | 2009-12-11 | 2012-10-09 | Nimble Storage, Inc. | Flash memory cache for data storage device |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
TWI425515B (zh) * | 2009-12-23 | 2014-02-01 | Silicon Motion Inc | 資料儲存裝置及快閃記憶體之資料寫入方法 |
US20110161560A1 (en) * | 2009-12-31 | 2011-06-30 | Hutchison Neil D | Erase command caching to improve erase performance on flash memory |
US9134918B2 (en) * | 2009-12-31 | 2015-09-15 | Sandisk Technologies Inc. | Physical compression of data with flat or systematic pattern |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
JP5404483B2 (ja) * | 2010-03-17 | 2014-01-29 | 株式会社東芝 | メモリシステム |
US8194340B1 (en) | 2010-03-18 | 2012-06-05 | Western Digital Technologies, Inc. | Disk drive framing write data with in-line mapping data during write operations |
JP5066209B2 (ja) * | 2010-03-18 | 2012-11-07 | 株式会社東芝 | コントローラ、データ記憶装置、及びプログラム |
US9330715B1 (en) | 2010-03-22 | 2016-05-03 | Western Digital Technologies, Inc. | Mapping of shingled magnetic recording media |
US8693133B1 (en) | 2010-03-22 | 2014-04-08 | Western Digital Technologies, Inc. | Systems and methods for improving sequential data rate performance using sorted data zones for butterfly format |
US8856438B1 (en) | 2011-12-09 | 2014-10-07 | Western Digital Technologies, Inc. | Disk drive with reduced-size translation table |
US8687306B1 (en) | 2010-03-22 | 2014-04-01 | Western Digital Technologies, Inc. | Systems and methods for improving sequential data rate performance using sorted data zones |
US8699185B1 (en) | 2012-12-10 | 2014-04-15 | Western Digital Technologies, Inc. | Disk drive defining guard bands to support zone sequentiality when butterfly writing shingled data tracks |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8417876B2 (en) * | 2010-06-23 | 2013-04-09 | Sandisk Technologies Inc. | Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems |
US8386714B2 (en) | 2010-06-29 | 2013-02-26 | International Business Machines Corporation | Reducing write amplification in a cache with flash memory used as a write cache |
CN102375779B (zh) * | 2010-08-16 | 2015-08-19 | 深圳市朗科科技股份有限公司 | 一种数据处理方法以及数据处理模块 |
US8966209B2 (en) * | 2010-08-23 | 2015-02-24 | Apple Inc. | Efficient allocation policies for a system having non-volatile memory |
US8850114B2 (en) | 2010-09-07 | 2014-09-30 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
US9021192B1 (en) | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
US8452911B2 (en) | 2010-09-30 | 2013-05-28 | Sandisk Technologies Inc. | Synchronized maintenance operations in a multi-bank storage system |
US8756361B1 (en) | 2010-10-01 | 2014-06-17 | Western Digital Technologies, Inc. | Disk drive modifying metadata cached in a circular buffer when a write operation is aborted |
US8954664B1 (en) | 2010-10-01 | 2015-02-10 | Western Digital Technologies, Inc. | Writing metadata files on a disk |
DE112010005870B4 (de) | 2010-11-08 | 2019-10-10 | Hyperstone Gmbh | Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf nichtflüchtigen Speichermedien |
US20120239860A1 (en) * | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
JP2012133655A (ja) * | 2010-12-22 | 2012-07-12 | Sony Corp | 管理装置、管理方法、およびプログラム |
US8818966B1 (en) * | 2010-12-30 | 2014-08-26 | Emc Corporation | Continuous file defragmentation during file over-writes |
US8458133B2 (en) | 2011-01-24 | 2013-06-04 | Apple Inc. | Coordinating sync points between a non-volatile memory and a file system |
JP5917163B2 (ja) * | 2011-01-27 | 2016-05-11 | キヤノン株式会社 | 情報処理装置、その制御方法及びプログラム並びに記憶媒体 |
EP2672390B1 (en) * | 2011-01-31 | 2015-11-25 | Mitsubishi Electric Corporation | Memory controller |
US9058212B2 (en) * | 2011-03-21 | 2015-06-16 | Microsoft Technology Licensing, Llc | Combining memory pages having identical content |
US8775731B2 (en) | 2011-03-25 | 2014-07-08 | Dell Products, L.P. | Write spike performance enhancement in hybrid storage systems |
US9342446B2 (en) * | 2011-03-29 | 2016-05-17 | SanDisk Technologies, Inc. | Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache |
US8537613B2 (en) | 2011-03-31 | 2013-09-17 | Sandisk Technologies Inc. | Multi-layer memory system |
US8595426B2 (en) * | 2011-04-11 | 2013-11-26 | Sandisk Il Ltd. | Handling commands within a write-once read-many storage device configuration |
US20120303878A1 (en) * | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Method and Controller for Identifying a Unit in a Solid State Memory Device for Writing Data to |
US9727570B2 (en) * | 2011-06-03 | 2017-08-08 | Apple Inc. | Mount-time unmapping of unused logical addresses in non-volatile memory systems |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8843443B1 (en) | 2011-06-30 | 2014-09-23 | Emc Corporation | Efficient backup of virtual data |
US8849777B1 (en) * | 2011-06-30 | 2014-09-30 | Emc Corporation | File deletion detection in key value databases for virtual backups |
US9158670B1 (en) | 2011-06-30 | 2015-10-13 | Western Digital Technologies, Inc. | System and method for dynamically adjusting garbage collection policies in solid-state memory |
US8756382B1 (en) | 2011-06-30 | 2014-06-17 | Western Digital Technologies, Inc. | Method for file based shingled data storage utilizing multiple media types |
US8930614B2 (en) * | 2011-07-29 | 2015-01-06 | Kabushiki Kaisha Toshiba | Data storage apparatus and method for compaction processing |
JP5514169B2 (ja) * | 2011-08-15 | 2014-06-04 | 株式会社東芝 | 情報処理装置および情報処理方法 |
US8555020B2 (en) * | 2011-09-23 | 2013-10-08 | Hewlett-Packard Development Company, L.P. | Reclaiming space occupied by an expired variable record in a non-volatile record storage |
US9158706B2 (en) | 2011-10-31 | 2015-10-13 | International Business Machines Corporation | Selective space reclamation of data storage memory employing heat and relocation metrics |
KR101867282B1 (ko) * | 2011-11-07 | 2018-06-18 | 삼성전자주식회사 | 비휘발성 메모리 장치의 가비지 컬렉션 방법 |
US8756458B2 (en) | 2011-12-12 | 2014-06-17 | Apple Inc. | Mount-time reconciliation of data availability |
US9069657B2 (en) * | 2011-12-12 | 2015-06-30 | Apple Inc. | LBA bitmap usage |
US9213493B1 (en) | 2011-12-16 | 2015-12-15 | Western Digital Technologies, Inc. | Sorted serpentine mapping for storage drives |
US8819367B1 (en) | 2011-12-19 | 2014-08-26 | Western Digital Technologies, Inc. | Accelerated translation power recovery |
US8612706B1 (en) | 2011-12-21 | 2013-12-17 | Western Digital Technologies, Inc. | Metadata recovery in a disk drive |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
US10613982B1 (en) * | 2012-01-06 | 2020-04-07 | Seagate Technology Llc | File-aware caching driver |
US9417998B2 (en) * | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US9542324B1 (en) | 2012-04-05 | 2017-01-10 | Seagate Technology Llc | File associated pinning |
US9268692B1 (en) | 2012-04-05 | 2016-02-23 | Seagate Technology Llc | User selectable caching |
US8760922B2 (en) | 2012-04-10 | 2014-06-24 | Sandisk Technologies Inc. | System and method for micro-tiering in non-volatile memory |
US20130290619A1 (en) * | 2012-04-30 | 2013-10-31 | Netapp, Inc. | Apparatus and Method for Sequential Operation on a Random Access Device |
US9141533B2 (en) * | 2012-05-31 | 2015-09-22 | Silicon Motion, Inc. | Data storage device and flash memory control method for performing garbage collection |
US10282286B2 (en) * | 2012-09-14 | 2019-05-07 | Micron Technology, Inc. | Address mapping using a data unit type that is variable |
US9734050B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for managing background operations in a multi-layer memory |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US9348746B2 (en) * | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer memory |
US9323662B2 (en) * | 2012-12-31 | 2016-04-26 | SanDisk Technologies, Inc. | Flash memory using virtual physical addresses |
US8873284B2 (en) | 2012-12-31 | 2014-10-28 | Sandisk Technologies Inc. | Method and system for program scheduling in a multi-layer memory |
US9336133B2 (en) | 2012-12-31 | 2016-05-10 | Sandisk Technologies Inc. | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9465731B2 (en) | 2012-12-31 | 2016-10-11 | Sandisk Technologies Llc | Multi-layer non-volatile memory system having multiple partitions in a layer |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9021187B2 (en) | 2013-01-29 | 2015-04-28 | Sandisk Technologies Inc. | Logical block address remapping |
US20140281306A1 (en) * | 2013-03-14 | 2014-09-18 | Hitachi, Ltd. | Method and apparatus of non-disruptive storage migration |
US8954657B1 (en) * | 2013-09-27 | 2015-02-10 | Avalanche Technology, Inc. | Storage processor managing solid state disk array |
US9448928B2 (en) * | 2013-04-26 | 2016-09-20 | Oracle International Corporation | System and method for two-tier adaptive heap management in a virtual machine environment |
CN103605478B (zh) * | 2013-05-17 | 2016-12-28 | 华为技术有限公司 | 存储地址标示、配置方法和数据存取方法及*** |
US9323539B2 (en) * | 2013-06-27 | 2016-04-26 | Intel Corporation | Constructing persistent file system from scattered persistent regions |
KR102088193B1 (ko) * | 2013-08-08 | 2020-03-13 | 삼성전자주식회사 | 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법 |
US10534683B2 (en) * | 2013-08-29 | 2020-01-14 | International Business Machines Corporation | Communicating outstanding maintenance tasks to improve disk data integrity |
KR101547317B1 (ko) | 2013-09-30 | 2015-08-26 | 주식회사 유니테스트 | 스토리지 테스트 장치에서 로직 블록 어드레스와 데이터 버퍼 주소를 이용한 불량 블록 검출 시스템 |
US9298389B2 (en) | 2013-10-28 | 2016-03-29 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Operating a memory management controller |
US9645742B2 (en) | 2014-02-05 | 2017-05-09 | Sandisk Technologies Llc | Storage module and host device for storage module defragmentation |
US20150254011A1 (en) * | 2014-03-10 | 2015-09-10 | Kabushiki Kaisha Toshiba | Memory system, memory controller and control method of non-volatile memory |
CN104090730B (zh) * | 2014-07-08 | 2017-02-22 | 飞天诚信科技股份有限公司 | 一种对存储设备进行数据读写的方法及装置 |
US8953269B1 (en) | 2014-07-18 | 2015-02-10 | Western Digital Technologies, Inc. | Management of data objects in a data object zone |
US9875055B1 (en) | 2014-08-04 | 2018-01-23 | Western Digital Technologies, Inc. | Check-pointing of metadata |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10552085B1 (en) | 2014-09-09 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for directed data migration |
US9645739B2 (en) * | 2014-09-26 | 2017-05-09 | Intel Corporation | Host-managed non-volatile memory |
US20160098431A1 (en) * | 2014-10-06 | 2016-04-07 | Seagate Technology Llc | Performing mathematical operations on changed versions of data objects via a storage compute device |
US9934872B2 (en) | 2014-10-30 | 2018-04-03 | Sandisk Technologies Llc | Erase stress and delta erase loop count methods for various fail modes in non-volatile memory |
US9575853B2 (en) * | 2014-12-12 | 2017-02-21 | Intel Corporation | Accelerated data recovery in a storage system |
JP2016122227A (ja) * | 2014-12-24 | 2016-07-07 | 株式会社東芝 | メモリシステムおよび情報処理システム |
US9224502B1 (en) | 2015-01-14 | 2015-12-29 | Sandisk Technologies Inc. | Techniques for detection and treating memory hole to local interconnect marginality defects |
US10032524B2 (en) | 2015-02-09 | 2018-07-24 | Sandisk Technologies Llc | Techniques for determining local interconnect defects |
US9269446B1 (en) | 2015-04-08 | 2016-02-23 | Sandisk Technologies Inc. | Methods to improve programming of slow cells |
US9564219B2 (en) | 2015-04-08 | 2017-02-07 | Sandisk Technologies Llc | Current based detection and recording of memory hole-interconnect spacing defects |
US10649890B2 (en) | 2015-04-28 | 2020-05-12 | Nec Corporation | Information processing system, storage control apparatus, storage control method, and storage control program |
KR102403266B1 (ko) | 2015-06-22 | 2022-05-27 | 삼성전자주식회사 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US9778855B2 (en) | 2015-10-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for precision interleaving of data writes in a non-volatile memory |
US10120613B2 (en) | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
US10042553B2 (en) | 2015-10-30 | 2018-08-07 | Sandisk Technologies Llc | Method and system for programming a multi-layer non-volatile memory having a single fold data path |
CN106991058B (zh) * | 2016-01-21 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 预取文件处理方法及装置 |
US20170220623A1 (en) * | 2016-01-29 | 2017-08-03 | Netapp, Inc. | Hot-Spot Adaptive Garbage Collection |
US10089243B2 (en) | 2016-02-25 | 2018-10-02 | SK Hynix Inc. | Memory controller and system including variable address mapping tables and a fixed address mapping table |
US10540274B2 (en) * | 2016-03-29 | 2020-01-21 | Micron Technology, Inc. | Memory devices including dynamic superblocks, and related methods and electronic systems |
US20170300422A1 (en) * | 2016-04-14 | 2017-10-19 | Micron Technology, Inc. | Memory device with direct read access |
WO2018022136A1 (en) | 2016-07-26 | 2018-02-01 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US10366004B2 (en) * | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US9952798B2 (en) * | 2016-08-12 | 2018-04-24 | Google Inc. | Repartitioning data in a distributed computing system |
JP2018041204A (ja) | 2016-09-06 | 2018-03-15 | 東芝メモリ株式会社 | メモリ装置及び情報処理システム |
KR102611638B1 (ko) * | 2016-09-27 | 2023-12-08 | 삼성전자주식회사 | 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템 |
CN108009111B (zh) * | 2016-11-01 | 2020-02-21 | 华为技术有限公司 | 数据流连接方法及装置 |
CN107870739B (zh) * | 2017-03-15 | 2021-03-19 | 珠海市杰理科技股份有限公司 | 磁盘文件存储方法和*** |
KR102233400B1 (ko) * | 2017-05-29 | 2021-03-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN107329892B (zh) * | 2017-06-07 | 2020-09-11 | 珠海市杰理科技股份有限公司 | 驱动测试方法、装置、存储介质及其计算机设备 |
US20180357121A1 (en) * | 2017-06-09 | 2018-12-13 | Qualcomm Incorporated | Error correction calculation upon serial bus abort |
US10521375B2 (en) | 2017-06-22 | 2019-12-31 | Macronix International Co., Ltd. | Controller for a memory system |
KR102270103B1 (ko) * | 2017-07-11 | 2021-06-28 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10579633B2 (en) | 2017-08-31 | 2020-03-03 | Micron Technology, Inc. | Reducing probabilistic filter query latency |
US10446197B2 (en) | 2017-08-31 | 2019-10-15 | Micron Technology, Inc. | Optimized scan interval |
JP6785205B2 (ja) * | 2017-09-21 | 2020-11-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP6785204B2 (ja) * | 2017-09-21 | 2020-11-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10754580B2 (en) | 2017-10-23 | 2020-08-25 | Micron Technology, Inc. | Virtual partition management in a memory device |
CN109725840B (zh) * | 2017-10-30 | 2022-04-05 | 伊姆西Ip控股有限责任公司 | 利用异步冲刷对写入进行节流 |
CN108021512A (zh) * | 2017-11-22 | 2018-05-11 | 深圳忆联信息***有限公司 | 一种固态硬盘映射管理方法及固态硬盘 |
US11455245B2 (en) | 2017-12-11 | 2022-09-27 | Micron Technology, Inc. | Scheme to improve efficiency of garbage collection in cached flash translation layer |
KR20190075352A (ko) * | 2017-12-21 | 2019-07-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20190107504A (ko) | 2018-03-12 | 2019-09-20 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US10365854B1 (en) | 2018-03-19 | 2019-07-30 | Micron Technology, Inc. | Tracking data temperatures of logical block addresses |
TWI670598B (zh) * | 2018-05-14 | 2019-09-01 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 |
KR102684047B1 (ko) * | 2018-07-13 | 2024-07-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US10936199B2 (en) * | 2018-07-17 | 2021-03-02 | Silicon Motion, Inc. | Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table |
US11709623B2 (en) * | 2018-08-03 | 2023-07-25 | Sk Hynix Nand Product Solutions Corp. | NAND-based storage device with partitioned nonvolatile write buffer |
CN109471831B (zh) * | 2018-11-16 | 2021-10-29 | 郑州云海信息技术有限公司 | 一种数据处理方法及装置 |
KR20200057866A (ko) | 2018-11-16 | 2020-05-27 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법 |
KR20200076531A (ko) * | 2018-12-19 | 2020-06-29 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
CN109783019B (zh) * | 2018-12-28 | 2022-08-19 | 上海威固信息技术股份有限公司 | 一种数据智能存储管理方法与装置 |
US11152054B2 (en) | 2019-08-28 | 2021-10-19 | Micron Technology, Inc. | Apparatuses and methods for performing background operations in memory using sensing circuitry |
US11681797B2 (en) | 2019-08-28 | 2023-06-20 | Micron Technology, Inc. | Row activation prevention using fuses |
US11163449B2 (en) | 2019-10-17 | 2021-11-02 | EMC IP Holding Company LLC | Adaptive ingest throttling in layered storage systems |
CN110879687B (zh) * | 2019-10-18 | 2021-03-16 | 蚂蚁区块链科技(上海)有限公司 | 一种基于磁盘存储的数据读取方法、装置及设备 |
US11249896B2 (en) | 2019-12-20 | 2022-02-15 | Micron Technology, Inc. | Logical-to-physical mapping of data groups with data locality |
US11586385B1 (en) | 2020-05-06 | 2023-02-21 | Radian Memory Systems, Inc. | Techniques for managing writes in nonvolatile memory |
US11429296B2 (en) | 2020-06-01 | 2022-08-30 | Western Digital Technologies, Inc. | Storage system, host, and method for extended and imaginary logical-to-physical address mapping |
TWI738442B (zh) * | 2020-07-29 | 2021-09-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
CN112100095B (zh) * | 2020-08-28 | 2023-07-04 | 深圳市宏旺微电子有限公司 | 闪存空间优化方法、装置和闪存存储设备 |
CN112069089B (zh) * | 2020-09-11 | 2022-09-27 | 杭州海康威视***技术有限公司 | 回收存储块的方法及装置 |
CN112416811B (zh) * | 2020-11-18 | 2024-02-27 | 深圳市硅格半导体有限公司 | 基于数据关联度的垃圾回收方法、闪存及装置 |
CN112732174A (zh) * | 2020-12-25 | 2021-04-30 | 北京金山云网络技术有限公司 | 数据的处理方法和装置、电子设备和存储介质 |
KR102509987B1 (ko) * | 2021-01-13 | 2023-03-15 | 삼성전자주식회사 | 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템 |
US11875036B2 (en) | 2021-01-13 | 2024-01-16 | Samsung Electronics Co., Ltd. | Computing system including host and storage system and having increased write performance |
CN112860594B (zh) * | 2021-01-21 | 2022-11-01 | 华中科技大学 | 一种固态盘地址重映射方法、设备及固态盘 |
US20230024420A1 (en) * | 2021-07-16 | 2023-01-26 | Samsung Electronics Co., Ltd. | Methods and devices for file read latency reduction |
US11687447B1 (en) * | 2022-01-04 | 2023-06-27 | Silicon Motion, Inc. | Method and apparatus for performing access control of memory device with aid of additional physical address information |
US11894060B2 (en) | 2022-03-25 | 2024-02-06 | Western Digital Technologies, Inc. | Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability |
CN116578246B (zh) * | 2023-07-05 | 2023-09-29 | 合肥康芯威存储技术有限公司 | 一种存储设备及其控制方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1701308A (zh) * | 2002-10-28 | 2005-11-23 | 桑迪士克股份有限公司 | 维护非易失性存储***中的擦除计数 |
Family Cites Families (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2251323B (en) | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
US5535369A (en) | 1992-10-30 | 1996-07-09 | Intel Corporation | Method for allocating memory in a solid state memory disk |
US5555204A (en) * | 1993-06-29 | 1996-09-10 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory device |
KR0169267B1 (ko) * | 1993-09-21 | 1999-02-01 | 사토 후미오 | 불휘발성 반도체 기억장치 |
GB2291991A (en) | 1995-09-27 | 1996-02-07 | Memory Corp Plc | Disk drive emulation with a block-erasable memory |
US5903495A (en) | 1996-03-18 | 1999-05-11 | Kabushiki Kaisha Toshiba | Semiconductor device and memory system |
US5860124A (en) | 1996-09-30 | 1999-01-12 | Intel Corporation | Method for performing a continuous over-write of a file in nonvolatile memory |
US5960169A (en) * | 1997-02-27 | 1999-09-28 | International Business Machines Corporation | Transformational raid for hierarchical storage management system |
US6098190A (en) * | 1998-08-04 | 2000-08-01 | Hewlett-Packard Co. | Method and apparatus for use of a host address to validate accessed data |
GB9903490D0 (en) * | 1999-02-17 | 1999-04-07 | Memory Corp Plc | Memory system |
US6622199B1 (en) | 1999-07-02 | 2003-09-16 | Qualcomm Incorporated | Method for minimizing data relocation overhead in flash based file systems |
US7318117B2 (en) * | 2004-02-26 | 2008-01-08 | Super Talent Electronics, Inc. | Managing flash memory including recycling obsolete sectors |
US7966462B2 (en) | 1999-08-04 | 2011-06-21 | Super Talent Electronics, Inc. | Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips |
JP3863330B2 (ja) | 1999-09-28 | 2006-12-27 | 株式会社東芝 | 不揮発性半導体メモリ |
US20080320209A1 (en) * | 2000-01-06 | 2008-12-25 | Super Talent Electronics, Inc. | High Performance and Endurance Non-volatile Memory Based Storage Systems |
US20050204187A1 (en) * | 2004-03-11 | 2005-09-15 | Lee Charles C. | System and method for managing blocks in flash memory |
JP2001283594A (ja) | 2000-03-29 | 2001-10-12 | Sharp Corp | 不揮発性半導体記憶装置 |
US6721843B1 (en) | 2000-07-07 | 2004-04-13 | Lexar Media, Inc. | Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible |
KR100365725B1 (ko) * | 2000-12-27 | 2002-12-26 | 한국전자통신연구원 | 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법 |
JP3631463B2 (ja) * | 2001-12-27 | 2005-03-23 | 株式会社東芝 | 不揮発性半導体記憶装置 |
DE10123285A1 (de) * | 2001-05-12 | 2002-11-14 | Conti Temic Microelectronic | Zündelement für pyrotechnische Wirkmassen auf einer Schaltungsträgeranordnung mit einer Zündelektronikbaugruppe |
US6522580B2 (en) | 2001-06-27 | 2003-02-18 | Sandisk Corporation | Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states |
US6456528B1 (en) | 2001-09-17 | 2002-09-24 | Sandisk Corporation | Selective operation of a multi-state non-volatile memory system in a binary mode |
US6925007B2 (en) | 2001-10-31 | 2005-08-02 | Sandisk Corporation | Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements |
US6771536B2 (en) | 2002-02-27 | 2004-08-03 | Sandisk Corporation | Operating techniques for reducing program and read disturbs of a non-volatile memory |
US20030212859A1 (en) | 2002-05-08 | 2003-11-13 | Ellis Robert W. | Arrayed data storage architecture with simultaneous command of multiple storage media |
KR100453053B1 (ko) * | 2002-06-10 | 2004-10-15 | 삼성전자주식회사 | 플래쉬 메모리용 파일 시스템 |
US7123512B2 (en) | 2002-07-19 | 2006-10-17 | Micron Technology, Inc. | Contiguous block addressing scheme |
US6775751B2 (en) * | 2002-08-06 | 2004-08-10 | International Business Machines Corporation | System and method for using a compressed main memory based on degree of compressibility |
US6781877B2 (en) * | 2002-09-06 | 2004-08-24 | Sandisk Corporation | Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells |
US7428644B2 (en) | 2003-06-20 | 2008-09-23 | Micron Technology, Inc. | System and method for selective memory module power management |
DE10339665B3 (de) * | 2003-08-28 | 2005-01-13 | Infineon Technologies Ag | Halbleiter-Speicherbauelement, mit Steuereinrichtung zum Aktivieren von Speicherzellen und Verfahren zum Betrieb eines Halbleiter-Speicherbauelements |
EP1704484A2 (en) | 2003-12-30 | 2006-09-27 | SanDisk Corporation | Non-volatile memory and method with non-sequential update block management |
US20050144363A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Data boundary management |
US7433993B2 (en) | 2003-12-30 | 2008-10-07 | San Disk Corportion | Adaptive metablocks |
US7631138B2 (en) | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
US7173863B2 (en) * | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
US7680977B2 (en) * | 2004-02-26 | 2010-03-16 | Super Talent Electronics, Inc. | Page and block management algorithm for NAND flash |
US7194596B2 (en) | 2004-06-09 | 2007-03-20 | Simpletech Global Limited | Method of efficient data management with flash storage system |
CN1989561B (zh) * | 2004-07-19 | 2011-06-15 | 皇家飞利浦电子股份有限公司 | 记录信息的方法和装置 |
US7395384B2 (en) | 2004-07-21 | 2008-07-01 | Sandisk Corproation | Method and apparatus for maintaining data on non-volatile memory systems |
US8375146B2 (en) * | 2004-08-09 | 2013-02-12 | SanDisk Technologies, Inc. | Ring bus structure and its use in flash memory systems |
EP1784948B1 (en) * | 2004-08-24 | 2011-10-19 | Panduit Corp. | Systems and methods for network management |
US7315916B2 (en) * | 2004-12-16 | 2008-01-01 | Sandisk Corporation | Scratch pad block |
US7315917B2 (en) * | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US20060161724A1 (en) * | 2005-01-20 | 2006-07-20 | Bennett Alan D | Scheduling of housekeeping operations in flash memory systems |
JP5130646B2 (ja) * | 2005-06-06 | 2013-01-30 | ソニー株式会社 | 記憶装置 |
US7457910B2 (en) | 2005-06-29 | 2008-11-25 | Sandisk Corproation | Method and system for managing partitions in a storage device |
KR100652415B1 (ko) * | 2005-07-02 | 2006-12-01 | 삼성전자주식회사 | 1 로우 액티베이션 구조 또는 2 로우 액티베이션 구조를선택할 수 있는 반도체 메모리 장치 및 2 로우 액티베이션방법 |
TWM288401U (en) | 2005-07-15 | 2006-03-01 | Genesys Logic Inc | Highly efficient data characteristics recognition device for flash memory |
JP5162846B2 (ja) * | 2005-07-29 | 2013-03-13 | ソニー株式会社 | 記憶装置、コンピュータシステム、および記憶システム |
US7480766B2 (en) * | 2005-08-03 | 2009-01-20 | Sandisk Corporation | Interfacing systems operating through a logical address space and on a direct data file basis |
US7409489B2 (en) * | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
US7877540B2 (en) | 2005-12-13 | 2011-01-25 | Sandisk Corporation | Logically-addressed file storage methods |
US7979624B2 (en) * | 2006-03-31 | 2011-07-12 | Intel Corporation | Techniques to truncate data files in nonvolatile memory |
US20070260841A1 (en) * | 2006-05-02 | 2007-11-08 | Hampel Craig E | Memory module with reduced access granularity |
US7930468B2 (en) * | 2006-05-23 | 2011-04-19 | Dataram, Inc. | System for reading and writing on flash memory device having plural microprocessors |
US7552280B1 (en) * | 2006-06-28 | 2009-06-23 | Emc Corporation | Asymmetrically interleaving access to redundant storage devices |
US7958331B2 (en) * | 2006-12-13 | 2011-06-07 | Seagate Technology Llc | Storage device with opportunistic address space |
US8429352B2 (en) | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
US8095735B2 (en) * | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US8751755B2 (en) | 2007-12-27 | 2014-06-10 | Sandisk Enterprise Ip Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
US8120990B2 (en) | 2008-02-04 | 2012-02-21 | Mosaid Technologies Incorporated | Flexible memory operations in NAND flash devices |
US20090271562A1 (en) | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
-
2008
- 2008-02-22 US US12/036,023 patent/US8429352B2/en active Active
- 2008-02-22 US US12/036,014 patent/US9396103B2/en active Active
- 2008-06-03 CN CN201210274564.5A patent/CN102831071B/zh not_active Expired - Fee Related
- 2008-06-03 CN CN2008801023821A patent/CN101779195B/zh not_active Expired - Fee Related
- 2008-06-03 EP EP08756648.5A patent/EP2156299B1/en not_active Not-in-force
- 2008-06-03 JP JP2010511275A patent/JP5350371B2/ja not_active Expired - Fee Related
- 2008-06-03 KR KR1020107000413A patent/KR101453264B1/ko not_active IP Right Cessation
- 2008-06-03 WO PCT/US2008/065631 patent/WO2008154216A1/en active Application Filing
- 2008-06-03 CN CN201210274159.3A patent/CN102831070B/zh not_active Expired - Fee Related
- 2008-06-06 TW TW097121253A patent/TWI394160B/zh not_active IP Right Cessation
-
2013
- 2013-08-21 JP JP2013171549A patent/JP5530012B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1701308A (zh) * | 2002-10-28 | 2005-11-23 | 桑迪士克股份有限公司 | 维护非易失性存储***中的擦除计数 |
Also Published As
Publication number | Publication date |
---|---|
JP5530012B2 (ja) | 2014-06-25 |
CN102831071B (zh) | 2016-02-17 |
WO2008154216A1 (en) | 2008-12-18 |
KR20100034743A (ko) | 2010-04-01 |
US9396103B2 (en) | 2016-07-19 |
US20080307164A1 (en) | 2008-12-11 |
JP5350371B2 (ja) | 2013-11-27 |
JP2010532023A (ja) | 2010-09-30 |
CN102831070A (zh) | 2012-12-19 |
CN102831071A (zh) | 2012-12-19 |
EP2156299A4 (en) | 2012-07-04 |
CN101779195A (zh) | 2010-07-14 |
JP2014013585A (ja) | 2014-01-23 |
TW200905680A (en) | 2009-02-01 |
KR101453264B1 (ko) | 2014-10-21 |
TWI394160B (zh) | 2013-04-21 |
US20080307192A1 (en) | 2008-12-11 |
EP2156299A1 (en) | 2010-02-24 |
CN101779195B (zh) | 2013-09-25 |
US8429352B2 (en) | 2013-04-23 |
EP2156299B1 (en) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102831070B (zh) | 用于存储器装置的存储地址重新映射的方法和*** | |
US7450420B2 (en) | Reclaiming data storage capacity in flash memories | |
TWI437441B (zh) | 多庫記憶體裝置之儲存位址重映射之方法及系統 | |
US8209461B2 (en) | Configuration of host LBA interface with flash memory | |
US8166267B2 (en) | Managing a LBA interface in a direct data file memory system | |
US7739444B2 (en) | System using a direct data file system with a continuous logical address space interface | |
US8046522B2 (en) | Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks | |
EP1920335B1 (en) | Reclaiming data storage capacity in flash memory systems | |
US7917686B2 (en) | Host system with direct data file interface configurability | |
US8880483B2 (en) | System and method for implementing extensions to intelligently manage resources of a mass storage system | |
US20080155175A1 (en) | Host System That Manages a LBA Interface With Flash Memory | |
WO2007019197A2 (en) | Management of memory blocks that directly store data files | |
WO2008083001A9 (en) | Managing a lba interface in a direct data file memory system | |
JP2009503740A (ja) | データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け |
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 | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: Texas, USA Patentee after: SANDISK TECHNOLOGIES LLC Address before: Texas, USA Patentee before: SANDISK TECHNOLOGIES Inc. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160217 |