CN110806984A - 在存储器系统中搜索有效数据的设备和方法 - Google Patents
在存储器系统中搜索有效数据的设备和方法 Download PDFInfo
- Publication number
- CN110806984A CN110806984A CN201910704322.7A CN201910704322A CN110806984A CN 110806984 A CN110806984 A CN 110806984A CN 201910704322 A CN201910704322 A CN 201910704322A CN 110806984 A CN110806984 A CN 110806984A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- memory device
- controller
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 549
- 238000000034 method Methods 0.000 title claims description 72
- 238000013507 mapping Methods 0.000 claims description 142
- 238000012546 transfer Methods 0.000 claims description 17
- 238000005259 measurement Methods 0.000 claims description 13
- 238000012544 monitoring process Methods 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 62
- 238000012545 processing Methods 0.000 description 43
- 230000008569 process Effects 0.000 description 35
- 230000006870 function Effects 0.000 description 26
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 23
- 238000010586 diagram Methods 0.000 description 19
- 238000007726 management method Methods 0.000 description 16
- 238000012937 correction Methods 0.000 description 15
- 230000004044 response Effects 0.000 description 14
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 101100481703 Arabidopsis thaliana TMK2 gene Proteins 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 101100183118 Solanum tuberosum 2MBCD gene Proteins 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003936 working memory Effects 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 2
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 239000008600 herbal extract PG201 Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Images
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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0253—Garbage collection, i.e. reclamation of unreferenced 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- 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/7211—Wear leveling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及一种存储器系统,该存储器系统包括:非易失性存储器装置,包括存储数据的多个存储块;以及控制器,适于增加多个存储块之中可擦除块的计数。控制器可在空闲状态期间在多个存储块的预定范围内重复搜索有效数据。
Description
相关申请的交叉引用
本专利申请要求于2018年8月6日提交的申请号为10-2018-0091320的韩国专利申请的优先权,其全部公开内容通过引用并入本文。
技术领域
本发明的示例性实施例涉及一种存储器系统,且更特别地,涉及一种增强在非易失性存储器装置中的存储块内查找有效数据的效率的设备和方法。
背景技术
近来,计算机环境范例已经转变成可随时随地访问计算机系统的普适计算。诸如移动电话、数码相机及笔记本电脑等便携式电子装置的使用能够快速增长。这种便携式电子装置通常使用或包括存储器系统,即数据存储装置,该存储器系统使用或嵌入至少一个存储器装置。数据存储装置可用作便携式电子装置的主存储装置或辅助存储装置。
与硬盘不同,使用非易失性半导体存储器装置的数据存储装置的优点在于因为其不具有机械驱动部件(例如,机械臂)而具有优异的稳定性和耐久性,并且具有高数据访问速度和低功耗。作为具有这些优点的存储器系统的示例,数据存储装置包括USB(通用串行总线)存储器装置、具有各种接口的存储卡、固态驱动器(SSD)等。
发明内容
本公开的实施例可提供一种存储器系统、数据处理系统和操作进程或方法,其可通过降低存储器系统的操作复杂性和性能劣化来快速且可靠地将数据处理到存储器装置中,从而增强存储器装置的使用效率。
本公开的实施例可提供一种在存储器装置中搜索有效数据的进程中将存储器装置中的块分成若干范围的设备和方法。通过减少有效数据的搜索时间,可有效地管理损耗均衡或垃圾收集的后台操作的时间。
另外,本公开的实施例可将存储器装置中的块划分成若干个组。存储器系统可立即查找或搜索每个组中的有效数据,而非大容量存储器装置中的全部数据,但是存储器系统可对大容量存储器装置中的每个预定组重复执行有效数据搜索。因此,存储器系统可通过有效的数据搜索来执行每个组内的前台或后台操作,而非通过使用整个存储器装置来执行前台或后台操作。本公开可提供一种方法和设备,该方法和设备能够在对存储器系统同时或可选地执行与多个命令或指令相对应的多个命令操作时,减少特定操作可能干扰存储器系统内执行的其它操作的环境,从而可提高或增强存储器系统的操作稳定性和可靠性。
在实施例中,存储器系统可包括:非易失性存储器装置,包括存储数据的多个存储块;以及控制器,适于增加多个存储块之中可擦除块的计数。在本文中,控制器可在空闲状态期间在多个存储块的预定范围内重复搜索有效数据。
作为示例而非限制,可至少基于控制器中包括的或直接与控制器接合并由控制器控制的易失性存储器的存储容量来确定该预定范围。
在实施例中,控制器可搜索有效数据,直到易失性存储器中不再临时存储有效数据。例如,控制器可访问非易失性存储器装置中的每个块,将每个块的所有数据加载到易失性存储器中,并且仅选择或选出所有数据之中的有效数据,用于将所选择的数据重新存储在非易失性存储器装置。
在另一实施例中,控制器可访问非易失性存储器装置中的每个块,并且仅将每个块中的有效数据加载到易失性存储器。
在另一示例中,预定范围对应于从主机输入的数据单位的大小。可通过将非易失性存储器装置的通知给主机的数据区域除以N(N为大于1的整数)来确定该预定范围。
在另一示例中,可至少基于非易失性存储器装置的数据区域的大小来确定该预定范围,该数据区域由主机确定为未存储有效数据的数据区域。
在另一示例中,预定范围可对应于非易失性存储器装置中存储的映射数据的大小。可通过将映射数据的大小除以N(N为大于1的整数)来确定该预定范围。
作为示例而非限制,控制器将搜索到的有效数据传输到非易失性存储器装置的空块中。
控制器可将空块中的传输数据的新地址更新到非易失性存储器装置的映射表。
例如,控制器可测量开始在第一范围中搜索有效数据至更新搜索到的并传输的数据的地址之间的时间。然后,控制器可执行以下操作中的至少一个:当测量时间短于阈值时,开始在另一范围中搜索有效数据;以及当测量时间等于或长于该阈值时,终止在另一范围中搜索有效数据。
当非易失性存储器装置中的块中的所有页面都不具有与映射表相链接的任何地址时,控制器可擦除该块。
在实施例中,控制器可包括:搜索电路,用于在预定范围内搜索有效数据;以及搜索控制电路,用于确定搜索时间和待搜索的预定范围,并从搜索电路接收搜索结果。
在实施例中,一种操作包括非易失性存储器装置和控制器的存储器系统的方法可包括:监测在非易失性存储器装置中是否执行了与从主机输入的命令相对应的操作;在空闲状态期间重复搜索非易失性存储器装置中的多个存储块的每个预定范围中的有效数据,以增加非易失性存储器装置中可擦除的块的计数;并且将搜索到的有效数据传输到非易失性存储器装置中的空块中。
该方法可进一步包括将传输到空块的有效数据的新地址更新到非易失性存储器装置的映射表。
该方法可进一步包括测量开始在第一范围中搜索有效数据至更新搜索到的并传输的数据的地址之间的时间。该方法可包括以下中的至少一个:当测量时间短于阈值时,开始在另一范围中搜索有效数据;以及当测量时间等于或长于该阈值时,终止在另一范围中搜索有效数据。
该方法可进一步包括:当非易失性存储器装置中的块中的所有页面都不具有与映射表相链接的任何地址时,擦除该块。
作为示例而非限制,可至少基于控制器中包括的或直接与控制器接合并由控制器控制的易失性存储器的存储容量、通知给主机的数据区域的大小以及非易失性存储器装置中存储的映射数据的大小中的至少一个来确定该预定范围。
在另一实施例中,存储器系统可包括:存储器装置,包括多个数据块和空闲块;存储器单元,适于缓冲数据;以及控制单元,适于在存储器装置空闲时控制以下操作:搜索数据块中存储的预定量的数据内的有效数据,将搜索到的数据缓冲到存储器单元中,并且将缓冲的数据编程到空闲块。预定量可以是在存储器装置空闲时控制单元至少完成一次操作的量。
附图说明
在本文中参照附图进行描述,其中在多个附图中,相同的附图标记始终指代相同的部件,并且其中:
图1是描述根据本公开的实施例的存储器系统中的操作的示图;
图2是示出包括根据本公开的实施例的存储器系统的数据处理系统的框图;
图3是示出根据本公开的实施例的存储器系统的框图;
图4和图5是示出根据本公开的实施例的、执行与多个命令相对应的多个命令操作的存储器系统的示图;
图6是示出根据本公开的实施例的包括控制器和非易失性存储器装置的存储器系统的示图;
图7是描述根据本公开的实施例的以页面为单位访问数据并将访问的数据存储在控制器的存储器中的示图;
图8是示出根据本公开的实施例的以块为单位访问数据并将访问的数据存储在控制器的存储器中的示图;
图9是描述根据本公开的实施例的被划分为主机使用的数据单位的非易失性存储器装置中的数据的示图;
图10是描述根据本公开的实施例的被划分为主机使用的数据单位的非易失性存储器装置中的数据的示图;
图11是示出根据本公开的实施例的由映射数据的大小单位划分的非易失性存储器装置中的数据的示图;
图12是示出根据本公开的实施例的包括存储器装置和控制器的存储器系统的操作的流程图;
图13是示出根据本公开的实施例的垃圾收集操作的流程图;
图14是描述根据本公开的实施例的垃圾收集操作和时间管理的流程图;
图15是示出根据本公开的实施例的垃圾收集操作和时间管理的流程图;并且
图16至图24是示意性地示出包括根据本公开的实施例的存储器系统的其它数据处理系统的框图。
具体实施方式
以下参照附图更详细地描述本公开的各种示例。本公开可以不同的其它实施例、形式和其变型来实现并且不应被解释为限于本文阐述的实施例。相反,提供所描述的实施例使得本公开将是完整的和全面的,并且将本公开充分地传达给本发明所属领域的技术人员。在整个本公开中,相同的附图标记在本公开的各个附图和示例中始终表示相同的部件。应注意的是,对“实施例”的参考不一定仅表示一个实施例,并且对“实施例”的不同参考不一定针对相同的实施例。
将理解的是,虽然可在本文中使用术语“第一”、“第二”、“第三”等来描述各个元件,但是这些元件不受这些术语限制。这些术语用于区分一个元件与另一个元件。因此,在不脱离本发明的精神和范围的情况下,也可将以下描述的第一元件称为第二元件或第三元件。
附图不一定按比例绘制,并且在一些情况下,为了清楚地说明实施例的特征,可能已经放大了比例。当元件被称为连接或联接到另一元件时,应当理解的是,前者可直接连接或联接到后者,或者经由其间的中间元件电连接或联接到后者。此外,还将理解的是,当元件被称为在两个元件“之间”时,其可以是这两个元件之间的唯一元件,或者也可存在一个或多个中间元件。
本文使用的术语的目的仅是描述特定实施例而不旨在限制本发明。
如本文使用的,除非上下文另有明确说明,否则单数形式也旨在包括复数形式,反之亦然。
将进一步理解的是,当在本说明书中使用术语“包括”、“包括有”、“包含”和“包含有”时,其说明所陈述元件的存在,但不排除一个或多个其它元件的存在或添加。如本文所使用的,术语“和/或”包括一个或多个相关所列项目的任何和全部组合。
除非另有定义,否则本文使用的包括技术和科学术语的所有术语具有与本发明所属领域的普通技术人员基于本公开通常理解的含义相同的含义。将进一步理解的是,诸如在常用词典中限定的那些术语的术语应被理解为具有与其在本公开的上下文和相关领域中的含义一致的含义,并且将不以理想化或过于形式化的意义来解释,除非本文如此明确地定义。
在以下描述中,为了提供对本发明的全面理解,阐述了许多具体细节。可在没有一些或全部这些具体细节的情况下实施本发明。在其它情况下,为了不使本发明不必要地模糊,未详细地描述公知的进程结构和/或进程。
也要注意的是,在一些情况下,如对相关领域的技术人员显而易见的是,除非另有明确说明,否则结合一个实施例描述的特征或元件可单独使用或与另一实施例的其它特征或元件组合使用。
在下文中,将参照附图详细描述本公开的实施例。
在图1中,描述了根据本公开的实施例的存储器系统110。存储器系统110可包括控制器130和存储器装置150。存储器系统110可与另一装置,例如计算装置接合。
参照图1,在非易失性存储器装置150中可增加多个块之中可擦除数据的块的数量。可将存储器装置150的第一块40_1中存储的有效数据移动到空闲块40_2中以确保用于存储大量数据的余量存储器空间,或者执行垃圾收集(GC)或损耗均衡。
在本公开的实施例中,存储器系统的操作可与垃圾收集(GC)操作相关。该实施例可提供一种通过管理垃圾收集所花费的时间来搜索用于执行垃圾收集的块的设备和方法。垃圾收集可包括搜索不再可用或不需要使用的动态分配的存储器区域并删除搜索到的区域中的数据以准备编程新数据的操作。擦除非易失性存储器装置中的特定区域中包含的数据所需的时间可根据非易失性存储器装置的单元结构或单元特性而变化。
在非易失性存储器装置中搜索待擦除的存储器区域所花费的时间可根据控制该非易失性存储器装置的方法和设备而变化。为了提高垃圾收集的效率,可优选的是,减少在其它进程(例如,搜索、传输或更新)中花费的时间,而非减少最长进程(例如,块擦除)的时间。
现在将参照附图详细描述本公开的实施例,其中相同的附图标记表示相同的元件。
参照图1,垃圾收集(GC)可由存储器系统本身执行,而无需从主机102传输的命令或指令(参见图2)。存储器系统110中的控制器130可从存储器装置150的多个数据块40_1中读取用户数据,将用户数据临时存储在控制器130内设置的或直接与控制器130接合并由控制器130控制的存储器144中,并且将加载到存储器144中的用户数据编程到存储器装置150的空闲块40_2中。此处,多个数据块40_1可包括不进行擦除就无法再用新数据编程的块。
控制器130包括:搜索电路32,被配置成在存储器装置150的预定范围内搜索有效数据;以及搜索控制电路34,被配置成确定搜索时间和预定搜索范围。搜索控制电路34可从搜索电路32接收搜索结果,并且将搜索结果传输到存储器144。此处,控制器30可包括至少一个处理器和至少一个存储器装置。根据实施例,搜索电路32和/或搜索控制电路34可利用各种类型的部件来实施,这些部件被设计成使用至少一个存储器装置搜索有效数据。
如在本公开中使用的,术语“电路”可指代以下的所有内容:(a)仅硬件电路的实施方案(诸如,仅模拟和/或数字电路中的实施方案)以及(b)电路与软件(和/或固件)的组合,诸如(可适用的):(i)(多个)处理器的组合或(ii)一起工作以使诸如移动电话或服务器的设备执行各种功能的(多个)处理器/软件(包括数字信号处理器)、软件和存储器的部分;以及(c)需要软件或固件来进行操作(即使该软件或固件并非物理存在)的电路,诸如,(多个)微处理器或(多个)微处理器的一部分。“电路”的这种定义适用于该术语在本申请中的所有应用中,包括在任意权利要求中的应用。作为另外的示例,如在本申请中所使用的,术语“电路”还将涵盖仅处理器(或多个处理器)或处理器的一部分及其(或它们)附带的软件和/或固件的实施方案。如果术语“电路”适用于特定的权利要求要素,则“电路”例如还将涵盖用于存储装置的集成电路。
对于垃圾收集,控制器130应当在多个数据块40_1中搜索有效数据。根据本公开的实施例,控制器30不是一次在所有数据块40_1中搜索有效数据,而是可一次仅在数据块40_1的预定范围内搜索有效数据。在这种情况下,由于在单次垃圾收集期间减少了在数据块40_1内搜索有效数据的范围,所以可以减少搜索待移动到空闲块40_2中进行垃圾收集的有效数据所需的资源(例如,时间、功率)。
在图2中,描述了根据本公开的实施例的数据处理系统100。参照图2,数据处理系统100可包括与存储器系统110接合或互锁的主机102。
例如,主机102可包括诸如移动电话、MP3播放器和膝上型计算机的便携式电子装置或诸如台式计算机、游戏机、电视(TV)和投影仪等的非便携式电子装置。
主机102还包括至少一个操作系统(OS),OS可通常管理和控制在主机102中执行的功能和操作。OS可提供与存储器系统110接合的主机102和需要并使用存储器系统110的用户之间的互操作性。OS可支持与用户请求对应的功能和操作。作为示例而非限制,根据主机102的移动性,OS可分类为通用操作系统和移动操作系统。根据系统要求或用户环境,通用操作系统可被分为个人操作系统和企业操作系统。包括Windows和Chrome的个人操作系统可用于支持针对一般目的的服务。但企业操作系统可专门用于确保和支持较高的性能,包括Windows Server、Linux、Unix等。进一步地,移动操作系统可包括Android、iOS、WindowsMobile等。移动操作系统可用于支持针对移动性的服务或功能(例如,省电功能)。主机102可包括多个操作系统。对应于用户请求,主机102可运行与存储器系统110互锁的多个操作系统。主机102可将与用户请求相对应的多个命令传输到存储器系统110中,从而在存储器系统110内执行与命令相对应的操作。稍后参照图4和图5描述在存储器系统110中处理多个命令。
存储器系统110可响应于来自主机102的请求来操作或执行具体的功能或操作,并且特别地,可存储待由主机102访问的数据。存储器系统110可用作主机102的主存储器系统或辅助存储器系统。根据主机接口的协议,存储器系统110可利用可与主机102电联接的各种类型的存储装置中的任意一种来实施。合适的存储装置的非限制性示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、缩小尺寸的MMC(RS-MMC)、微型MMC、安全数字(SD)卡、迷你SD、微型SD、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑式闪存(CF)卡、智能媒体(SM)卡、记忆棒等。
存储器系统110的存储装置可利用例如动态随机存取存储器(DRAM)和静态RAM(SRAM)的易失性存储器装置和/或诸如以下的非易失性存储器装置来实施:只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电RAM(FRAM)、相变RAM(PRAM)、磁阻RAM(MRAM)、电阻式RAM(RRAM或ReRAM)和闪速存储器。
存储器系统110可包括控制器130和存储器装置150。存储器装置150可存储待由主机102访问的数据。控制器130可控制数据在存储器装置150中的存储。
控制器130和存储器装置150可集成到单个半导体装置中,该单个半导体装置可被包括在如上例示的各种类型的存储器系统中。
作为示例而非限制,控制器130和存储器装置150可被集成到单个半导体装置中。控制器130和配置SSD的存储器装置150可集成到单个半导体装置中,以提高操作速度。当存储器系统110用作SSD时,连接到存储器系统110的主机102的操作速度可以比利用硬盘实施的主机102的操作速度提高更多。另外,集成到一个半导体装置中的控制器130和存储器装置150可形成存储卡。例如,PC卡(PCMCIA)、紧凑式闪存卡(CF)、诸如智能媒体卡(SM、SMC)的存储卡、记忆棒、多媒体卡(MMC、RS-MMC、微型MMC)、SD卡(SD、迷你SD、微型SD、SDHC)、通用闪速存储器等。
存储器系统110可被配置成例如以下的一部分:计算机、超移动PC(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板、平板电脑、无线电话、移动电话、智能电话、电子书、便携式多媒体播放器(PMP)、便携式游戏机、导航系统、黑盒、数码相机、数字多媒体广播(DMB)播放器、三维(3D)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、配置数据中心的存储装置、能够在无线环境下传输和接收信息的装置、配置家庭网络的各种电子装置之一、配置计算机网络的各种电子装置之一、配置远程信息处理网络的各种电子装置之一、射频识别(RFID)装置或配置计算系统的各种组件之一。
存储器装置150可以是非易失性存储器装置,并且即使在不供应电力时也可保留所存储的数据。存储器装置150可通过写入操作存储从主机102提供的数据,同时通过读取操作将存储在其中的数据提供到主机102。存储器装置150可包括多个存储块152、154、156。存储块152、154、156中的每个可包括多个页面。多个页面中的每个可包括与多个字线(WL)电联接的多个存储器单元。存储器装置150还包括多个存储器管芯,多个存储器管芯中的每个包括多个平面,多个平面中的每个包括多个存储块152、154、156。另外,存储器装置150可以是非易失性存储器装置,例如闪速存储器,其中闪速存储器可以是三维堆叠结构。
控制器130可控制存储器装置150的全部操作,诸如读取操作、写入操作、编程操作和擦除操作。例如,控制器130可响应于来自主机102的请求来控制存储器装置150。控制器130可将从存储器装置150读取的数据提供到主机102。控制器130可将由主机102提供的数据存储到存储器装置150中。
控制器130可包括全部经由内部总线可操作地联接的主机接口(I/F)132、处理器134、错误校正码(ECC)单元138、电源管理单元(PMU)140、存储器接口(I/F)142以及存储器144。
主机接口132可处理从主机102提供的命令和数据,并可通过诸如以下的各种接口协议中的至少一种与主机102通信:通用串行总线(USB)、多媒体卡(MMC)、高速外围组件互连(PCI-e或PCIe)、小型计算机系统接口(SCSI)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强型小型磁盘接口(ESDI)以及电子集成驱动器(IDE)。根据实施例,主机接口132是用于与主机102交换数据的组件,主机接口132可通过被称为主机接口层(HIL)的固件来实施。
ECC单元138可校正待在存储器装置150中处理(例如,从存储器装置150输出)的数据的错误位,该ECC单元138可包括ECC编码器和ECC解码器。此处,ECC编码器可对待在存储器装置150中编程的数据执行错误校正编码,以生成添加奇偶校验位的编码数据,并且将编码数据存储在存储器装置150中。当控制器130读取存储在存储器装置150中的数据时,ECC解码器可检测并校正从存储器装置150读取的数据中包含的错误。换言之,在对从存储器装置150读取的数据执行错误校正解码之后,ECC单元138可确定错误校正解码是否已成功并输出指令信号(例如,校正成功信号或校正失败信号)。ECC单元138可使用在ECC编码进程期间生成的奇偶校验位来校正读取数据的错误位。当错误位的数量大于或等于可校正错误位的阈值数量时,ECC单元138可不校正错误位,而是可输出指示校正错误位失败的错误校正失败信号。
ECC单元138可基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhri-Hocquenghem,BCH)码、turbo码、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)以及分组编码调制(BCM)等。ECC单元138可包括基于上述代码中的至少一个来执行错误校正操作的电路、模块、系统或装置中的全部或一些。
PMU 140可管理在控制器130中提供的电力。
存储器接口142可用作用于处理控制器130和存储器装置150之间传输的命令和数据的接口,以允许控制器130响应于从主机102传送的请求来控制存储器装置150。在当存储器装置150是闪速存储器时,并且特别地,当存储器装置150是NAND闪速存储器时的情况下,存储器接口142可在处理器134的控制下生成用于存储器装置150的控制信号,并可处理输入到存储器装置150中或从存储器装置150输出的数据。存储器接口142可提供接口,用于在控制器130与存储器装置150之间处理命令和数据,例如NAND闪存接口的操作,特别是控制器130与存储器装置150之间的操作。根据实施例,存储器接口142可通过被称为闪存接口层(FIL)的固件而被实施为用于与存储器装置150交换数据的组件。
存储器144可支持由存储器系统110和控制器130执行的操作。存储器144可存储针对存储器系统110和控制器130中的操作而出现或传送的临时数据或事务数据。控制器130可响应于来自主机102的请求来控制存储器装置150。控制器130可将从存储器装置150读取的数据传送到主机102。控制器130可将通过主机102输入的数据存储到存储器装置150中。存储器144可用于存储控制器130和存储器装置150执行诸如读取操作或编程/写入操作的操作所需的数据。
存储器144可利用易失性存储器来实施。存储器144可利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或两者来实施。虽然图1例示了存储器144设置在控制器130的内部,但本实施例不限于此。也就是说,存储器144可位于控制器130的内部或外部。例如,存储器144可由具有在存储器144与控制器130之间传输数据和/或信号的存储器接口的外部易失性存储器实现。
存储器144可存储执行诸如由主机102请求的数据写入和数据读取的操作和/或执行在存储器装置150和控制器130之间的数据传输的操作所需的数据,以用于诸如如上所述的垃圾收集和损耗均衡的后台操作。根据实施例,为了支持存储器系统110中的操作,存储器144可包括程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
处理器134可利用微处理器或中央处理单元(CPU)来实施。存储器系统110可包括一个或多个处理器134。处理器134可控制存储器系统110的全部操作。作为示例而非限制,处理器134可响应于从主机102输入的写入请求或读取请求来控制对存储器装置150的编程操作或读取操作。根据实施例,处理器134可使用或运行固件来控制存储器系统110的全部操作。在本文中,可将该固件称为闪存转换层(FTL)。FTL可作为主机102和存储器装置150之间的接口来执行操作。主机102可通过FTL将对写入操作和读取操作的请求传输到存储器装置150。
FTL可管理地址映射、垃圾收集、损耗均衡等操作。特别地,FTL可加载、生成、更新或存储映射数据。因此,控制器130可通过映射数据将从主机102输入的逻辑地址与存储器装置150的物理地址进行映射。因为地址映射操作,存储器装置150可看起来像执行读取或写入操作的通用存储装置。而且,通过基于映射数据的地址映射操作,当控制器130尝试更新存储在特定页面中的数据时,由于闪速存储器装置的特性,控制器130可将更新数据编程到另一空页面上,并且可使该特定页面的旧数据无效(例如,将与更新数据的逻辑地址相对应的物理地址从先前的特定页面更新为另一新编程页面)。进一步地,控制器130可将新数据的映射数据存储到FTL中。
例如,当在存储器装置150中执行从主机102请求的操作时,控制器130使用被实施在微处理器或中央处理单元(CPU)等中的处理器134。与存储器装置150接合的处理器134可处理与来自主机102的输入命令相对应的指令或命令。控制器130可执行与从主机102输入的命令相对应的命令操作的前台操作,诸如与写入命令相对应的编程操作、与读取命令相对应的读取操作、与擦除/丢弃命令相对应的擦除/丢弃操作、以及与设置参数命令或具有设置命令的设置特征命令相对应的参数设置操作。
又例如,控制器130可通过处理器134对存储器装置150执行后台操作。作为示例而非限制,存储器装置150的后台操作包括将存储在存储器装置150中的存储块152、154、156之中的任意存储块中的数据复制并存储到另一任意存储块中的操作(例如,垃圾收集(GC)操作)。后台操作可包括将存储在存储器装置150中的存储块152、154、156中的至少一个中的数据移动或交换到存储块152、154、156中的至少另一个中的操作(例如,损耗均衡(WL)操作)。在后台操作期间,控制器130可使用处理器134将存储在控制器130中的映射数据存储到存储器装置150中的存储块152、154、156中的至少一个,例如,映射清除操作。用于检查存储器装置150中包括的多个存储块152、154、156中的坏块的坏块管理操作是由处理器134执行的其它后台操作示例中的一个。
根据实施例,图1所示的控制器130和存储器144可通过图2中描述的控制器130中的至少一个处理器134和至少一个存储器144来实施。例如,图1所示的搜索电路32和搜索控制电路34可以通过图2中描述的控制器130中的至少一个处理器134和至少一个存储器144来实施。
在存储器系统110中,控制器130执行与从主机102输入的多个命令相对应的多个命令操作。例如,当顺序地、随机地或可选地执行与多个编程命令相对应的多个编程操作、与多个读取命令相对应的多个读取操作以及与多个擦除命令相对应的多个擦除操作时,控制器130可确定用于将控制器130连接到存储器装置150中包括的多个存储器管芯的多个通道(或通路)中的哪个(哪些)通道或通路适于或适用于执行每个操作。控制器130可经由所确定的执行每个操作的通道或通路来发送或传输数据或指令。在每个操作完成之后,存储器装置150中包括的多个存储器管芯可分别经由相同的通道或通路传输操作结果。然后,控制器130可将响应或确认信号传输到主机102。在实施例中,控制器130可检查每个通道或每个通路的状态。响应于从主机102输入的命令,控制器130可基于每个通道或每个通路的状态来选择至少一个通道或通路,使得可经由所选择的通道或通路来传送指令和/或具有数据的操作结果。
作为示例而非限制,控制器130可识别关于与存储器装置150中包括的多个存储器管芯相关的多个通道(或通路)的状态。控制器130可将每个通道或每个通路确定为忙碌状态、就绪状态、活动状态、空闲状态、正常状态和/或异常状态中的一种。控制器确定通过哪个通道或通路来传送指令(和/或数据)可与物理块地址相关,例如将指令(和/或数据)传送到哪个(哪些)管芯中。控制器130可参考从存储器装置150传送的描述符。描述符可包括描述与存储器装置150有关的某些信息的块或页面参数,该块或页面参数是具有预定格式或结构的数据。例如,描述符可包括装置描述符、配置描述符、单元描述符等。控制器130可参考或使用描述符来确定经由哪个(哪些)通道或通路交换指令或数据。
管理单元(未示出)可被包括在处理器134中。管理单元可执行存储器装置150的坏块管理。管理单元可发现存储器装置150中包括的不满足进一步使用条件的坏存储块,并对坏存储块执行坏块管理。当存储器装置150为例如NAND闪速存储器的闪速存储器时,由于NAND逻辑功能的特性,在写入操作期间,例如在编程操作期间,可能发生编程失败。在坏块管理期间,编程失败的存储块或坏存储块的数据可被编程到新的存储块中。坏块可使具有3D堆叠结构的存储器装置150的利用效率和存储器系统110的可靠性严重劣化。因此,可靠的坏块管理可增强或提高存储器系统110的性能。
参照图3,详细描述了根据本公开另一示例的存储器系统中的控制器。控制器130与主机102和存储器装置150协作。控制器130可包括主机接口132、闪存转换层(FTL)单元40、存储器接口142和存储器144。
虽然未在图3中示出,但根据实施例,图2中描述的ECC单元138可被包括在闪存转换层(FTL)单元40中。在另一实施例中,ECC单元138可被实施为被包括在控制器130中或与控制器130相关的单独的模块、电路、固件等。
主机接口132用于处理从主机102传输的命令、数据等。作为示例而非限制,主机接口132可包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可顺序地存储从主机102传输的命令、数据等,并且以存储顺序将命令、数据等输出到缓冲器管理器52。缓冲器管理器52可对从命令队列56传送的命令、数据等进行分类、管理或调整。事件队列54可顺序地传输从缓冲器管理器52传输的用于处理命令、数据等的事件。
可从主机102连续地传输多个相同特性的命令或数据,或者在混合或打乱之后,可将不同特性的命令和数据传输到存储器系统110。例如,可将用于读取数据的多个命令(读取命令)传送到存储器系统110或可将用于读取数据的命令(读取命令)和用于编程/写入数据的命令(写入命令)交替地传输到存储器系统110。主机接口132可顺序地将从主机102传输的命令、数据等存储到命令队列56。此后,主机接口132可根据从主机102传输的命令、数据等的特性来估计或预测控制器130将执行何种类型的操作。主机接口132可至少基于命令、数据等的特性来确定它们的处理顺序和优先级。根据从主机102传输的命令、数据等的特性,主机接口132中的缓冲器管理器52被配置成确定缓冲器管理器是否应当将命令、数据等存储在存储器144中,或者缓冲器管理器是否应当将命令、数据等传送到闪存转换层(FTL)单元40中。事件队列54接收从缓冲器管理器52输入的事件,以便按照接收的顺序将事件传送到闪存转换层(FTL)单元40中,其中该事件待由存储器系统110或控制器130响应于从主机102传输的命令、数据等而内部运行和处理。
根据实施例,图3中描述的主机接口132可执行图1中描述的控制器130的功能。主机接口132可将主机102中包括的第一存储器104设置为从设备(slave),并且将第一存储器104添加为由控制器130可控制或可使用的额外存储空间。
根据实施例,闪存转换层(FTL)单元40可包括主机请求管理器(HRM)46、映射管理器(MM)44、状态管理器42和块管理器48。主机请求管理器(HRM)46可管理从事件队列54输入的事件。映射管理器(MM)44可处理或控制映射数据。状态管理器42可执行垃圾收集或损耗均衡。块管理器48可对存储器装置150中的块运行命令或指令。
作为示例而非限制,主机请求管理器(HRM)46可根据从主机接口132传送的读取和编程命令和事件,使用映射管理器(MM)44和块管理器48以处置或处理请求。主机请求管理器(HRM)46可向映射数据管理器(MM)44发送查询请求,以得到与和事件一起输入的逻辑地址相对应的物理地址。主机请求管理器(HRM)46可将物理地址与读取请求一起发送至存储器接口142,以处理读取请求(处理事件)。另一方面,主机请求管理器(HRM)46可向块管理器48发送编程请求(写入请求),以将输入的数据编程到存储器装置150中的未被记录(无数据)的特定页面,然后,可向映射管理器(MM)44发送与编程请求相对应的映射更新请求,以在相互映射逻辑-物理地址的信息中更新与编程数据相关的项目。
此处,块管理器48可将从主机请求管理器(HRM)46、映射数据管理器(MM)44和/或状态管理器42传送的编程请求转换成用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或增强存储器系统110(参见图2)的编程或写入性能,块管理器48可收集编程请求并且向存储器接口142发送用于多平面和一次性编程操作的闪存编程请求。合理的是,块管理器48向存储器接口142发送一些闪存编程请求以增强或最大化多通道和多向闪存控制器的并行处理。
另一方面,块管理器48可被配置成根据有效页面的数量来管理存储器装置150中的块,当需要空闲块时,选择和擦除不具有有效页面的块,并且当确定垃圾收集为必需时,选择包括最少有效页面的块。状态管理器42可执行垃圾收集以将有效数据移动到空块并且擦除包含被移动的有效数据的块,使得块管理器48可具有足够的空闲块(不具有数据的空块)。如果块管理器48向状态管理器42提供与待擦除的块有关的信息,则状态管理器42可检查待擦除的块中的所有闪存页面以确定是否每个页面是有效的。例如,为了确定每个页面的有效性,状态管理器42可识别在每个页面的带外数据(OOB)区域中记录的逻辑地址。为了确定是否每个页面是有效的,状态管理器42可将页面的物理地址与映射到从查询请求获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面向块管理器48发送编程请求。当编程操作完成时,可通过映射管理器44的更新来更新映射表。
映射管理器44可管理逻辑-物理映射表。映射管理器44可处理由主机请求管理器(HRM)46或状态管理器42生成的诸如查询、更新等的请求。映射管理器44可将整个映射表存储在存储器装置150中(例如,闪存/非易失性存储器)并且根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求时发生映射高速缓存未命中时,映射管理器44可向存储器接口142发送读取请求以加载存储在存储器装置150中的相关映射表。当映射管理器44中的脏高速缓存块的数量超过某个阈值时,可将编程请求发送到块管理器48,以便形成干净高速缓存块,并且可将脏映射表存储在存储器装置150中。
另一方面,当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器(HRM)46可针对页面的相同逻辑地址编程最新版本的数据,并且当前发出更新请求。当状态管理器42在未正常完成有效页面的复制的状态下请求映射更新时,映射管理器44可不执行映射表更新。这是因为如果状态管理器42请求映射更新并且稍后完成有效页面复制,则发出的映射请求具有旧物理信息。只有在最新映射表仍然指向旧物理地址时,映射管理器44可执行映射更新操作以确保准确性。
根据实施例,状态管理器42可包括图1所示的搜索电路32和搜索控制电路34。
存储器装置150可包括多个存储块。根据可在一个存储器单元中存储或表示的位的数量,多个存储块可被分类为不同类型的存储块,诸如单层单元(SLC)存储块、多层单元(MLC)存储块等。此处,SLC存储块包括由每个存储一位数据的存储器单元实施的多个页面。SLC存储块可具有高数据I/O操作性能和高耐用性。MLC存储块包括由每个存储多位数据(例如,两位或更多位)的存储器单元实施的多个页面。在相同空间中,MLC存储块可具有比SLC存储块更大的存储容量。鉴于存储容量,MLC存储块可被高度集成。在实施例中,存储器装置150可利用诸如以下的MLC存储块来实施:MLC存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合。MLC存储块可包括由每个能够存储2位数据的存储器单元实施的多个页面。三层单元(TLC)存储块可包括由每个能够存储3位数据的存储器单元实施的多个页面。四层单元(QLC)存储块可包括由每个能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可利用包括由每个能够存储5位或更多位数据的存储器单元实施的多个页面的块来实施。
在本公开的实施例中,存储器装置150被实现为诸如闪速存储器的非易失性存储器,其中该闪速存储器诸如是NAND闪速存储器、NOR闪速存储器等。然而,存储器装置150可由相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋注入磁存储器(STT-RAM)和自旋转移力矩磁性随机存取存储器(STT-MRAM)等中的至少一个来实施。
图4和图5示意性地描述了在根据本公开的实施例的存储器系统中执行与多个命令相对应的多个命令操作。例如,在本公开的实施例中,将对以下数据处理操作进行详细描述:在从主机102接收多个写入命令并执行与写入命令相对应的编程操作的情况下的数据处理操作;在从主机102接收多个读取命令并执行与读取命令相对应的读取操作的情况下的数据处理操作;在从主机102接收多个擦除命令并执行与擦除命令相对应的擦除操作的情况下的数据处理操作;或者在从主机102一起接收多个写入命令和多个读取命令,并且执行与写入命令和读取命令相对应的编程操作和读取操作的情况下的数据处理操作。
此外,在本公开的实施例中,将以下列情况作为示例进行描述:将与从主机102输入的多个写入命令相对应的写入数据存储在控制器130的存储器144中包括的缓冲器/高速缓存中,将存储在缓冲器/高速缓存中的写入数据编程并存储在存储器装置150中包括的多个存储块中,对应于多个存储块中存储的写入数据而更新映射数据,并且将更新的映射数据存储在存储器装置150中包括的多个存储块中。在本公开的实施例中,将通过采取以下情况进行描述:执行与从主机102输入的多个写入命令相对应的编程操作。此外,在本公开的实施例中,将通过采取以下情况进行描述:针对存储在存储器装置150中的数据,从主机102输入多个读取命令,通过检查与读取命令相对应的数据的映射数据来从存储器装置150读取与读取命令相对应的数据,将读取数据存储在控制器130的存储器144中包括的缓冲器/高速缓存中,并且将存储在缓冲器/高速缓存中的数据提供到主机102。换言之,在本公开的实施例中,将通过采取以下情况进行描述:执行与从主机102输入的多个读取命令相对应的读取操作。另外,在本公开的实施例中,将通过采取以下情况进行描述:针对存储器装置150中包括的存储块,从主机102接收多个擦除命令,对应于擦除命令来检查存储块,擦除检查到的存储块中存储的数据,更新与擦除的数据相对应的映射数据,并且将更新的映射数据存储在存储器装置150中包括的多个存储块中。即,在本公开的实施例中,将通过采取以下情况进行描述:执行与从主机102接收的多个擦除命令相对应的擦除操作。
进一步地,在本公开的实施例中,将描述以下内容:控制器130在存储器系统110中执行命令操作,需要注意的是,如上所述,控制器130中包括的处理器134可通过例如FTL(闪存转换层)在存储器系统110中执行命令操作。而且,在本公开的实施例中,控制器130将与从主机102输入的写入命令相对应的用户数据和元数据编程并存储在存储器装置150中包括的多个存储块之中的任意存储块中,从存储器装置150中包括的多个存储块之中的任意存储块读取与从主机102接收的读取命令相对应的用户数据和元数据,并且将读取数据提供到主机102,或者从存储器装置150中包括的多个存储块之中的任意存储块擦除与从主机102输入的擦除命令相对应的用户数据和元数据。
元数据可包括对应于编程操作而被存储在存储块中的数据的第一映射数据和第二映射数据,其中第一映射数据包括逻辑/物理(L2P:逻辑到物理)信息(在下文中,被称为“逻辑信息”),第二映射数据包括物理/逻辑(P2L:物理到逻辑)信息(在下文中,被称为“物理信息”)。而且,元数据可包括:关于与从主机102接收的命令相对应的命令数据的信息;关于与命令相对应的命令操作的信息;关于存储器装置150的待被执行命令操作的存储块的信息;以及关于与命令操作相对应的映射数据的信息。换言之,元数据可包括与从主机102接收的命令相对应的、除了用户数据之外的所有剩余信息和数据。
也就是说,在本公开的实施例中,在控制器130从主机102接收多个写入命令的情况下,执行与写入命令相对应的编程操作,并且将与写入命令相对应的用户数据写入并存储在存储器装置150的存储块之中的空存储块、开放存储块或已执行擦除操作的空闲存储块中。而且,将包括L2P映射表或L2P映射列表的第一映射数据和包括P2L映射表或P2L映射列表的第二映射数据写入并存储在存储器装置150的存储块之中的空存储块、开放存储块或空闲存储块中,其中L2P映射表或L2P映射列表中记录了作为存储在存储块中的用户数据的逻辑地址和物理地址之间的映射信息的逻辑信息,P2L映射表或P2L映射列表中记录了作为存储有用户数据的存储块的物理地址和逻辑地址之间的映射信息的物理信息。
此处,在从主机102输入写入命令的情况下,控制器130将与写入命令相对应的用户数据写入并存储在存储块中。控制器130将存储在存储块中的用户数据的、包括第一映射数据和第二映射数据的元数据存储在其它存储块中。特别地,对应于存储在存储器装置150的存储块中的用户数据的数据段,控制器130生成并更新元数据的元段之中的作为映射数据的映射段的第一映射数据的L2P段和第二映射数据的P2L段。控制器130将映射段存储在存储器装置150的存储块中。存储在存储器装置150的存储块中的映射段被加载到控制器130中包括的存储器144中,然后被更新。
进一步地,在从主机102接收多个读取命令的情况下,控制器130从存储器装置150读取与读取命令相对应的读取数据,将读取的数据存储在控制器130的存储器144中包括的缓冲器/高速缓存中。控制器130将存储在缓冲器/高速缓存中的数据提供到主机102,由此执行与多个读取命令相对应的读取操作。
另外,在从主机102接收多个擦除命令的情况下,控制器130检查存储器装置150的与擦除命令相对应的存储块,并且然后对该存储块执行擦除操作。
当在执行后台操作的同时执行与从主机102接收的多个命令相对应的命令操作时,控制器130将与后台操作相对应的数据,即元数据和用户数据加载并存储在控制器130的存储器144中包括的缓冲器/高速缓存中,然后将数据,即元数据和用户数据存储在存储器装置150中。在本文中,作为示例而非限制,后台操作可包括作为复制操作的垃圾收集操作或读取回收操作、作为交换操作的损耗均衡操作、或映射清除操作。例如,对于后台操作,控制器130可在存储器装置150的存储块中检查与后台操作相对应的元数据和用户数据,将存储在存储器装置150的某些存储块中的元数据和用户数据加载并存储到控制器130的存储器144中包括的缓冲器/高速缓存中,然后将该元数据和用户数据存储在存储器装置150的某些其它存储块中。
在根据本公开的实施例的存储器系统中,在执行作为前台操作的命令操作和作为后台操作的复制操作、交换操作和映射清除操作的情况下,控制器130调度与前台操作和后台操作相对应的队列,并将调度的队列分配至控制器130中包括的存储器144和主机102中包括的存储器。在这方面,针对待在存储器装置150中执行的前台操作和后台操作,控制器130为各个操作分配标识符(ID),并且分别调度与分配有标识符的操作相对应的队列。在根据本公开的实施例的存储器系统中,不仅为存储器装置150的各个操作分配标识符,而且为存储器装置150的功能分配标识符,并且调度与被分配有各自标识符的功能相对应的队列。
在根据本公开的实施例的存储器系统中,控制器130管理通过待在存储器装置150中执行的各个功能和操作的标识符而调度的队列。控制器130管理通过待在存储器装置150中执行的前台操作和后台操作的标识符而调度的队列。在根据本公开的实施例的存储器系统中,在将与通过标识符而调度的队列相对应的存储器区域分配至控制器130中包括的存储器144和主机102中包括的存储器之后,控制器130管理分配的存储器区域的地址。通过使用调度的队列,控制器130不仅执行前台操作和后台操作,还执行存储器装置150中的各个功能和操作。
参照图4,控制器130执行与从主机102输入的多个命令相对应的命令操作,例如,与从主机102输入的多个写入命令相对应的编程操作。此时,控制器130将与写入命令相对应的用户数据编程并存储在存储器装置150的存储块(图4中由Block表示)中。而且,对应于针对存储块的编程操作,控制器130生成并更新用户数据的元数据,并且将元数据存储在存储器装置150的存储块中。
控制器130生成并更新第一映射数据和第二映射数据,该第一映射数据和第二映射数据包括指示用户数据被存储在存储器装置150的存储块中包括的页面(图4中由Page表示)中的信息。也就是说,控制器130生成并更新作为第一映射数据的逻辑段的L2P段和作为第二映射数据的物理段的P2L段,然后将该逻辑段和物理段存储在存储器装置150的存储块中包括的页面中。
例如,控制器130将与从主机102输入的写入命令相对应的用户数据高速缓存和缓冲在控制器130的存储器144中包括的第一缓冲器510中。特别地,在将用户数据的数据段512存储在用作数据缓冲器/高速缓存的第一缓冲器510中之后,控制器130将存储在第一缓冲器510中的数据段512存储在存储器装置150的存储块中包括的页面中。当与从主机102接收到的写入命令相对应的用户数据的数据段512被编程并存储在存储器装置150的存储块中包括的页面中时,控制器130生成并更新第一映射数据和第二映射数据。控制器130将第一映射数据和第二映射数据存储在控制器130的存储器144中包括的第二缓冲器520中。特别地,控制器130将针对用户数据的第一映射数据的L2P段522和第二映射数据的P2L段524存储在作为映射缓冲器/高速缓存的第二缓冲器520中。如上所述,可将第一映射数据的L2P段522和第二映射数据的P2L段524存储在控制器130中的存储器144的第二缓冲器520中。可将用于第一映射数据的L2P段522的映射列表和用于第二映射数据的P2L段524的另一映射列表存储在第二缓冲器520中。控制器130将存储在第二缓冲器520中的第一映射数据的L2P段522和第二映射数据的P2L段524存储在存储器装置150的存储块中包括的页面中。
此外,控制器130执行与从主机102接收的多个命令相对应的命令操作,例如,与从主机102接收的多个读取命令相对应的读取操作。特别地,控制器130将作为与读取命令相对应的用户数据的映射段的第一映射数据的L2P段522和第二映射数据的P2L段524加载到第二缓冲器520中,并且检查L2P段522和P2L段524。然后,控制器130读取存储在存储器装置150的存储块之中的相应存储块的页面中的用户数据,将读取的用户数据的数据段512存储在第一缓冲器510中,然后将数据段512提供到主机102。
此外,控制器130执行与从主机102输入的多个命令相对应的命令操作,例如,与从主机102输入的多个擦除命令相对应的擦除操作。特别地,控制器130检查存储器装置150的存储块之中与擦除命令相对应的存储块,以对检查到的存储块执行擦除操作。
在存储器装置150中包括的存储块之中执行复制数据或交换数据的操作,例如作为后台操作的垃圾收集操作、读取回收操作或损耗均衡操作的情况下,控制器130将相应的用户数据的数据段512存储在第一缓冲器510中,将与用户数据相对应的映射数据的映射段522和524加载到第二缓冲器520中,并且然后执行垃圾收集操作、读取回收操作或损耗均衡操作。在对存储器装置150的存储块执行针对例如映射数据的元数据的作为后台操作的映射更新操作和映射清除操作的情况下,控制器130将相应的映射段522和524加载到第二缓冲器520中,然后执行映射更新操作和映射清除操作。
如上所述,在对存储器装置150执行包括前台操作和后台操作的功能和操作的情况下,控制器130为待对存储器装置150执行的功能和操作分配标识符。控制器130分别调度分别与分配有标识符的功能和操作相对应的队列。控制器130将与各个队列相对应的存储器区域分配至控制器130中包括的存储器144和主机102中包括的存储器。控制器130分别管理分配至各个功能和操作的标识符、针对各个标识符调度的队列以及对应于队列的分配至控制器130的存储器144和主机102的存储器的存储器区域。控制器130通过分配至控制器130的存储器144和主机102的存储器的存储器区域来对存储器装置150执行功能和操作。
参照图5,存储器装置150包括多个存储器管芯,例如存储器管芯0、存储器管芯1、存储器管芯2及存储器管芯3,并且存储器管芯中的每个包括多个平面,例如,平面0、平面1、平面2和平面3。如上参照图3所描述的,存储器装置150中包括的存储器管芯中的各个平面包括多个存储块,例如,N个块BLK0、BLK1、……、BLKN-1,每个存储块包括多个页面,例如,2M个页面。此外,存储器装置150包括与各个存储器管芯相对应的多个缓冲器,例如,与存储器管芯0相对应的缓冲器0、与存储器管芯1相对应的缓冲器1、与存储器管芯2相对应的缓冲器2以及与存储器管芯3相对应的缓冲器3。
在执行与从主机102接收到的多个命令相对应的命令操作的情况下,与命令操作相对应的数据被存储在存储器装置150中包括的缓冲器中。例如,在执行编程操作的情况下,与编程操作相对应的数据被存储在缓冲器中,然后被存储在存储器管芯的存储块中包括的页面中。在执行读取操作的情况下,从存储器管芯的存储块中包括的页面中读取与读取操作相对应的数据,将该数据存储在缓冲器中,然后通过控制器130将该数据提供到主机102。
在本公开的实施例中,尽管下面将描述存储器装置150中包括的缓冲器存在于各个相应存储器管芯的外部,但要注意的是,缓冲器可存在于各个相应存储器管芯的内部,并且要注意的是,缓冲器可对应于各个存储器管芯中的各个平面或各个存储块。进一步地,在本公开的实施例中,尽管下面将描述存储器装置150中包括的缓冲器是如上参照图3所描述的存储器装置150中包括的多个页面缓冲器322、324和326,但要注意的是,缓冲器可以是存储器装置150中包括的多个高速缓存或多个寄存器。
而且,存储器装置150中包括的多个存储块可被分组为多个超级存储块,并且可在多个超级存储块中执行命令操作。超级存储块中的每个可包括多个存储块,例如第一存储块组和第二存储块组中包括的存储块。在这方面,在第一存储块组被包括在某个第一存储器管芯的第一平面中的情况下,第二存储块组可被包括在该第一存储器管芯的第一平面中,可被包括在该第一存储器管芯的第二平面中或可被包括在第二存储器管芯的平面中。
在本公开的实施例中,数据处理系统可包括多个存储器系统。多个存储器系统110中的每个可包括控制器130和存储器装置150。在数据处理系统中,多个存储器系统110中的一个可以是主设备(master),而其它存储器系统可以是从设备。可基于多个存储器系统110之间的争用(contention)来确定主设备。在数据处理系统中多个命令被从主机102传送时,主设备可至少基于通道或总线的状态来确定每个命令的目标。例如,对应于从多个存储器系统传送的信息,可将第一存储器系统确定为多个存储器系统之中的主存储器系统。如果将第一存储器系统确定为主存储器系统,则认为剩余的存储器系统是从存储器系统。主存储器系统的控制器可检查联接到多个存储器系统的多个通道(或通路、总线)的状态,以选择哪个存储器系统处理从主机102传送的命令或数据。在实施例中,可在多个存储器系统之中动态地确定主设备。在另一实施例中,主存储器系统可周期性地或根据事件而随着其它从存储器系统中的一个而改变。
在下文中,将更详细地描述在包括上述存储器装置150和控制器130的存储器系统110中传输数据的方法和设备。当存储在存储器系统110中的数据量变大,可能需要存储器系统110一次读取或存储大量的数据。然而,用于读取存储在存储器装置150中的数据的读取时间或用于将数据写入存储器装置150中的编程/写入时间通常可比控制器130处理数据的处理时间或控制器130和存储器装置150之间的数据传输时间更长。例如,读取时间可能是处理时间的两倍。因为读取时间或编程时间相比于处理时间或数据传输时间长得多,因此用于在存储器系统110中传送数据的过程或进程可能影响存储器系统110的性能,例如操作速度,和/或影响存储器系统110的结构,诸如缓冲器大小。
在图6中,描述了根据本公开的实施例的包括控制器1004和非易失性存储器装置1006的存储器系统1002。
参照图6,存储器系统1002可包括控制器1004和非易失性存储器装置1006。控制器1004可包括存储器1008。根据实施例,存储器1008可被包括在图1至图3中描述的存储器144中。例如,存储器1008可被实施为作为一种易失性存储器装置的DRAM、SRAM等。当存储器1008具有与非易失性存储器装置1006不同的结构时,存储器1008中包括的块BLK1、BLK2、……、BLKm(BLK1至BLKm)和其中存储的数据可视为非易失性存储器装置1006的结构和存储的数据。
非易失性存储器装置1006的特性为即使没有供电时也保持存储的数据,该非易失性存储器装置1006包括能够存储数据的多个块BLK1、BLK2、BLK3、BLK4、……、BLKn(BLK1至BLKn)。在本文中,n为5或更大的整数。控制器1004可支持或增强在输入和输出数据的非易失性存储器装置1006内执行的操作的安全性和速度。例如,在写入操作期间,非易失性存储器装置1006可存储从控制器1004输入的数据。在读取操作中,非易失性存储器装置1006可将存储的数据输出到控制器1004。控制器1004可通过擦除操作擦除非易失性存储器装置1006中存储的数据。
非易失性存储器装置1006中能够存储数据的多个块BLK1至BLKn中的每个可包括多个页面。而且,每个页面可包括经由至少一个字线(WL)联接的多个存储器单元。
为了更容易理解本公开的实施例,将进行以下假设。可将每个页面中存储的数据分类为有效数据(VD)或无效数据(IVD)。有效数据可包括以下情况:记录了页面中存储的数据的最后更新值,并且页面的物理地址与可由与存储器系统1002接合的主机通过映射表来识别的逻辑地址相映射。无效数据可包括具有旧值,例如具有在页面中更新之前的值使得页面的物理地址在映射表中不匹配的数据。
每个页面可物理地存储数据。但当确定每个页面中物理地存储的数据是有效还是无效时,则可表示多个有效数据VD1、VD2、VD3、……、VDq(VD1至VDq)和多个无效数据IVD1、……、IVDp(IVD1至IVDp)。此处,“q”和“p”为2或更大的整数。另一方面,可将所有页面都为空且不存在数据的块视为空闲块。空闲块指示可将新数据存储在每个页面的存储器单元中。
根据需要或请求,控制器1004可访问非易失性存储器装置1006中存储的数据以读取访问的数据并将读取的数据加载到控制器1004的存储器1008中。例如,当非易失性存储器装置1006的数据之中频繁使用的数据存储在控制器1004的存储器1008中时,输出控制器1006中存储的数据的操作可比访问、读取和输出非易失性存储器装置1006中存储的数据的另一操作更快地完成。也就是说,可将存储器1008中存储的数据输出到外部装置而无需访问和读取非易失性存储器装置1006。特别地,当控制器1004使用该控制器1004最近处理并存储在存储器1008中的数据时,该数据可比从非易失性存储器装置1006读取的数据更快地输出。
在本公开的实施例中,控制器1004可在非易失性存储器装置1006中搜索有效数据,将搜索到的数据移动到非易失性存储器装置的可用空闲块中,并且更新与移动的数据有关的映射表。在移动到空闲块中后,牺牲块的有效数据可变为无效数据。当非易失性存储器装置1006的牺牲块中的所有页面都包含无效数据时,控制器1004可擦除该牺牲块。控制器1004可测量在非易失性存储器装置1006内搜索、移动、更新和删除数据的垃圾收集操作所花费的时间。此外,控制器1004可将测量时间与阈值时间进行比较,以确定是否重复垃圾收集操作。
控制器1004中的存储器1008是为了支持控制器1004执行的操作并提高操作效率而包括的存储装置。根据实施例,可将存储器1008布置在控制器1004的外部。另一方面,存储器1008可包括易失性存储器装置,与非易失性存储器装置1006不同,该易失性存储器装置在电源关闭时可能丢失所有存储的数据。作为示例而非限制,存储器系统1002可以是固态驱动器(SSD)。非易失性存储器装置1006可包括NAND闪速存储器或NOR闪速存储器,并且存储器1008可包括DRAM或SRAM。
根据实施例,存储器1008可包括多个块、多个存储器单元等,用于存储数据。根据实施例,存储器1008可具有与非易失性存储器装置1006相似的结构,或者存储器1008可具有与非易失性存储器装置1006不同的结构。例如,存储器1008可包括能够存储数据的多个块BLK1至BLKm,每个块包括多个页面,每个页面包括连接到至少一个字线(WL)的多个存储器单元。此处,“m”为2或更大的自然数。
根据实施例,存储器1008中的块可具有与非易失性存储器装置1006中的存储块相同的存储容量,或者可具有不同的存储容量。存储器1008具有比非易失性存储器装置1006的总存储容量更小的总存储容量,并且具有易失性特性。因此,可设置存储器1008以支持在控制器1004中处理或处置数据的操作速度,而不是长时间或永久地存储数据。
在本公开的实施例中,当控制器1004以预定范围为单位搜索非易失性存储器装置1006中存储的有效数据时,控制器1004使用存储器1008来加载搜索到的有效数据。例如,控制器1004可搜索非易失性存储器装置1006的预定范围内存储的有效数据,然后将搜索到的有效数据移动到非易失性存储器装置1006中的空闲块中。可将搜索到的有效数据存储在存储器1008中,直到更新了与移动的数据有关的映射表。
在下文中,除了将数据基本上加载到存储器1008中以用于存储器系统1002的操作所需的存储容量之外,仅限于分配搜索到的、从非易失性存储器装置1006加载的有效数据的存储容量。因此,假设在根据本公开的实施例的控制器1004的操作开始之前,存储器1008在初始状态下是空的。
在图7中,描述了根据本公开的实施例的以页面为单位访问数据并将访问的数据存储在存储器系统中的控制器内的存储器中的操作方法。
参照图7,存储器1008A可具有与图6所示的存储器1008基本相似的结构。存储器1008A可以是在每个预定范围内重复搜索用于垃圾收集的有效数据的实施例。
根据实施例,为了减少垃圾收集所消耗的时间,控制器1004在预定量的数据中搜索有效数据。可根据控制器1004内的存储器1008A的存储容量来确定预定量的数据。例如,在非易失性存储器装置1006的存储容量为128G并且存储器1008A的存储容量为2G的情况下,可确定待搜索的预定量的数据小于2G。如果待搜索的预定量的数据为1G,则控制器1004在每次垃圾收集操作期间在1G的预定量的数据中搜索有效数据。因此,根据本发明的实施例,理想情况下,可执行垃圾收集操作128次以搜索非易失性存储器装置1006的128G存储中存储的所有数据。
根据另一实施例,控制器1004可在非易失性存储器装置1006中搜索有效数据,直到存储器1008A充满搜索到的有效数据。控制器1004可基于逐页面访问非易失性存储器装置1006的数据,并且仅将有效数据加载到存储器1008A中。控制器1004基于页面从非易失性存储器装置1006中的特定位置仅顺序地读取有效数据VD1至VDq,并且将有效数据VD1至VDq存储在存储器1008A中。当存储器1008A充满搜索到的有效数据(即,存储器1008A被完全占用)时,可终止有效数据搜索。此处,“q”为2或更大的自然数。
与图6中描述的存储器1008类似,控制器1004顺序地搜索非易失性存储器装置1006的多个块中存储的有效数据,并且将有效数据存储在存储器1008A中,直到存储器1008A充满有效数据。可对存储的有效数据进行排序或排列,以对应于存储器1008A中的多个可用的空闲块BLK1至BLKm。此处,“m”为2或更大的自然数。如图7所示,在存储器1008A的块BLK1至BLKm中的每个中包括的页面之中,存在可用于存储有效数据的“q”个空白页面。控制器1004从非易失性存储器装置1006中查找“q”段有效数据,并且将有效数据存储在存储器1008A中。
根据实施例,存储器1008A中的块BLK1至BLKm的类型可以是逻辑划分的存储器区域类型。例如,当存储器1008A被构造为类似于非易失性存储器装置1006时,存储器1008A的多个块可对应于非易失性存储器装置1006的那些块。当存储器1008A和非易失性存储器装置1006具有不同的结构时,可将存储器1008A中用于存储有效数据的可用存储器区域在逻辑上划分成对应于非易失性存储器装置1006的多个块BLK1至BLKm。
根据实施例,控制器1004还可在没有任何规则的情况下以任何顺序在非易失性存储器装置1006的预定范围内搜索有效数据。而且,以任意顺序将搜索到的有效数据加载到存储器1008A中。
本公开的实施例可示出控制器1004可在非易失性存储器装置1006的每个预定范围内查找或搜索有效数据。然而,有效数据的搜索顺序或存储顺序可能会有所不同。例如,控制器1004在预定范围内查找有效数据的顺序或者将搜索到的有效数据加载到存储器1008A中的顺序可能根据存储器系统的按需设计或配置而不同。因此,可通过任何方法来确定搜索顺序和存储顺序,并且实施例不限于此。
在图8中,在根据本公开的实施例的存储器系统中,控制器可以基于块访问非易失性存储器装置,并且将访问的数据加载到控制器内的存储器中。
参照图8,存储器1008B可具有与图6所示的存储器1008相同的结构。存储器1008B可以是在每个预定范围内搜索有效数据以进行垃圾收集的实施例。
存储器1008B可包括:数据区域1102,其中控制器1004从非易失性存储器装置1006加载预定量的数据,这些数据基于逐块被访问;以及有效数据区域1104,用于存储从数据区域1102选择的有效数据。控制器1004可检查加载在数据区域1102中的数据的有效性。
参照图8,在每次垃圾收集操作期间,为了减少花费在垃圾收集上的时间,控制器1004在非易失性存储器装置1006的预定量的数据中搜索有效数据,并且不搜索非易失性存储器装置1006的所有数据或所有区域。预定量的数据可对应于数据区域1102的存储容量。
在有效数据区域1104中存储的有效数据被编程到非易失性存储器装置1006的空闲块中之前,控制器1004可基于逐块将预定量的数据从非易失性存储器装置1006重复加载到数据区域1102中,直到有效数据区域1104充满有效数据。在图7中,控制器1004基于逐页面访问非易失性存储器装置1006内的预定量的数据。然而,在图8所示的实施例中,控制器1004可基于逐块访问预定量的数据,然后控制器1004可从基于逐块访问的数据中选择有效数据。因为控制器1004可基于逐块从存储器装置1006中加载预定量的数据,所以数据区域1002中的预定量的加载数据可包括有效数据VD1至VDq'和无效数据IVD1至IVDp。控制器1004从数据区域1102中仅选择有效数据VD1至VDq',并将所选择的有效数据存储在有效数据区域1104中。此处,“q”、“q'”和“p”可以是2或更大的整数。
在图8中,可将存储器1008B分成数据区域1102和有效数据区域1104。数据区域1102可包括多个逻辑块BLK1至BLKl,每个逻辑块对应于非易失性存储器装置1006的每个块。有效数据区域1104可包括多个逻辑块BLK(m-l)至BLKm,每个逻辑块对应于非易失性存储器装置1006的每个空闲块。此处,“l”是大于2且小于“m”的自然数,并且“m”是自然数,可对应于将存储器1008B的存储容量除以非易失性存储器装置1006中的每个块的大小的值。
在存储器1008B中,数据区域1102可大于有效数据区域1104。例如,数据区域1102可具有比有效数据区域1104大1.5倍、2倍、3倍或4倍的大小。然而,根据实施例可动态地确定分配给存储器1008B中的数据区域1102和有效数据区域1104的大小。这是因为可连续地改变来自非易失性存储器装置1006的预定量的数据之中的有效数据的比率。作为示例而非限制,可至少基于诸如映射数据、数据特性、数据模式等信息来动态地确定存储器1008B中的数据区域1102和有效数据区域1104的大小。
可以各种方式实施从数据区域1102读取数据然后选择有效数据并将有效数据复制到有效数据区域1104的方法和顺序。根据实施例,当分配了数据区域1102时,可加载来自非易失性存储器装置1006的单个块中的数据,并且控制器1004搜索加载的数据中将被复制到有效数据区域1104中的有效数据。在另一实施例中,当设置了数据区域1102时,控制器1104访问非易失性存储器装置1006中的预定量的块,并将访问的数据从预定量的块中存储到数据区域1102中。然后,控制器1004在存储的数据中查找将被复制到有效数据区域1104中的有效数据。在另一实施例中,在数据区域1102完全充满从非易失性存储器装置1006加载的预定量的数据之后,可选择有效数据并将有效数据复制到有效数据区域1104。
图9是描述根据本公开的实施例的非易失性存储器装置的视图。在该示例中,可基于主机使用的逻辑地址来收集或分类用于垃圾收集的数据。
参照图9,非易失性存储器装置1006A可具有与图6所示的非易失性存储器装置1006相同的结构。非易失性存储器装置1006A是包括控制器的存储器系统的实施例,该控制器可基于非易失性存储器装置1006A的预定范围来执行垃圾收集或损耗均衡。当顺序地存储大量数据时,该方法可更有效地搜索有效数据。
参照图9,如上所述,控制器1004在非易失性存储器装置1006A中的预定量的数据中搜索有效数据,以减少垃圾收集或损耗均衡所消耗的时间。可至少基于与存储器系统接合的主机所使用的数据单位来确定该预定量。
可以各种方式来确定数据单位。作为示例而非限制,可将由主机识别的非易失性存储器装置1006A中的数据区域划分为N(2或更大的自然数)个以确定数据单位。在本公开的实施例中,逻辑页面编号(LPN)或逻辑页面地址(LPA)可用作确定主机使用的数据单位的工具。
诸如逻辑页面编号(LPN)或逻辑块地址(LBA)的逻辑地址与诸如物理页面编号(PPN)或物理块地址(PBA)的物理地址不同。例如,物理地址可指代非易失性存储器装置1006A的实际页面序列号或可指代指示非易失性存储器装置1006A中的特定页面的实际地址。然而,逻辑地址是由主机使用的,用于指示非易失性存储器装置1006A中存储的数据或将非易失性存储器装置1006A中存储的数据与另一个数据区分开。通常,主机不知道在非易失性存储器装置1006A的特定位置存储了哪些数据。因此,控制器1004可将主机使用的逻辑地址与非易失性存储器装置1006A中使用的物理地址相匹配(映射处理)。控制器1004可生成并存储用于映射转换的映射表或映射信息。
另一方面,根据实施例,可将图6所示的非易失性存储器装置1006的多个块BLK1至BLKn视为图10所示的非易失性存储器装置1006B的多个块BLK1至BLKn。此处,可不具体定义逻辑页面编号的顺序,并且用户可任意地确定逻辑页面编号的顺序。也就是说,实施例不限于逻辑页面编号的概念,而是特征在于非易失性存储器装置1006A可通过基于逻辑地址的预定范围进行划分,以搜索有效数据来执行垃圾收集或损耗均衡。
当控制器1004基于逻辑地址将非易失性存储器装置1006A的数据区域划分为多个预定量时,与搜索存储器1008的整个存储容量相比,控制器1004可连续地搜索相对少的数据。在这种情况下,控制器1004可执行过量的重复命令,这增加了系统开销。因为这可能是一种无效的方式,所以本公开的实施例可考虑使用图9所示的第一表TB_A进行分组和搜索。
根据本公开的实施例,非易失性存储器装置1006A包括多个块BLK1至BLKn,每个块包括多个页面LPN1、LPN2、LPN3、……。
根据实施例,基于逻辑地址将非易失性存储器装置1006A划分成一些部分或组。例如,如在图9的第一表TB_A中,分别地,第一组A1包括逻辑页面编号1至1000,第二组A2包括逻辑页面编号1001至2000,并且第三组A3包括逻辑页面编号2001至3000。对于分组,可基于诸如100或1000的不同范围的逻辑页面编号来进行各个实施例,以根据系统配置或用户选择来确定每个范围。
如上所述,以通过基于逻辑页面编号或分组范围划分非易失性存储器装置1006A而获得的预定量(即,各个逻辑页面组A1、A2、A3、……的大小)为单位搜索有效数据。控制器1004在非易失性存储器装置1006A的与预定数量的逻辑页面编号相对应的数据区域中搜索有效数据。
可预先确定在与每个逻辑页面编号相对应的存储数据内是否存在有效数据。控制器1004可在非易失性存储器装置1006A中与预定数量的逻辑页面地址相对应的预定量的存储数据内搜索有效数据。
作为另一示例,控制器1004可在非易失性存储器装置1006A中与预定逻辑页面编号相对应的数据区域中检查未独立地与有效数据相匹配的未使用逻辑地址。例如,控制器1004按顺序检查与逻辑地址相对应的数据的有效性,以搜索有效数据。当检查的有效逻辑页面编号的计数大于预定数量时,可停止有效数据搜索。
图10是根据本公开的实施例的非易失性存储器装置的视图。在该示例中,可基于主机使用的数据单位将非易失性存储器装置的数据区域划分成组或部分。
参照图10,非易失性存储器装置1006B在结构上可与图6的非易失性存储器装置1006相同。非易失性存储器装置1006B是包括控制器的存储器系统的实施例,该控制器可基于非易失性存储器装置1006B的预定范围来执行垃圾收集或损耗均衡。
参照图10,如上所述,控制器1004可在非易失性存储器装置1006B中的预定量的数据中搜索有效数据,以减少垃圾收集或损耗均衡所消耗的时间。可缩短垃圾收集或损耗均衡。因此,可避免存储器系统花费很长时间来执行垃圾收集或损耗均衡。可由与存储器系统接合的主机所使用的数据单位表示预定量。
可以各种方式来确定数据单位。作为示例而非限制,可将由主机识别的非易失性存储器装置1006B中的数据区域划分为N(2或更大的自然数)个以确定数据单位。在本公开的实施例中,逻辑块编号(LBN)或逻辑块地址(LBA)可用作确定主机使用的数据单位的工具。
逻辑块地址(LBA)用于逻辑块寻址(LBA)方法中,并且可具有用于指定与计算装置互锁的存储装置中记录的数据块的位置的格式或结构。例如,在常规硬盘的情况下,使用指示硬盘中包括的诸如磁道、磁头和扇区(磁道-磁头-扇区,CHS)的物理结构的寻址方法。然而,随着硬盘存储容量的增加,与磁盘的物理结构相对应的地址系统已达到极限。在这样的大容量存储装置中,可以按逻辑顺序布置扇区从而对扇区编号(例如,从0开始的顺序)的方式指定地址,这与硬盘的物理结构无关。
在本文中,可将逻辑块编号(LBN)或逻辑块地址(LBA)视为逻辑地址。逻辑地址不同于诸如物理页面编号(PPN)或物理块地址(PBA)的物理地址。例如,物理地址可指代非易失性存储器装置1006B的实际页面序列号或可指代可指示非易失性存储器装置1006B中的特定页面的实际地址。然而,逻辑地址是由主机使用的,用于指示非易失性存储器装置1006B中存储的数据或将非易失性存储器装置1006B中存储的数据与另一个数据区分开。通常,主机不知道在非易失性存储器装置1006B的特定位置存储了哪些数据。因此,控制器1004可将主机使用的逻辑地址与非易失性存储器装置1006B中使用的物理地址相匹配(映射处理)。控制器1004可生成并存储用于映射转换的映射表或映射信息。
例如,可使用超级块。可至少基于与超级块相对应的数据大小来确定用于在非易失性存储器装置1006B中查找有效数据的预定范围。根据实施例,可通过对多个连续或并行的块进行分组来设定超级块,或者可通过对多个随机块进行分组来设定超级块。可将非易失性存储器装置1006B划分为多个超级块,这可由主机来控制,并且这些超级块可用作控制器搜索有效数据以执行垃圾收集或损耗均衡的预定范围。
另一方面,根据实施例,图6所示的非易失性存储器装置1006的多个块BLK1至BLKn被划分成如图10所示的多个逻辑块LBN1、LBN2、LBN3、……。在本文中,未具体定义逻辑块编号之间的顺序,并且用户可任意地确定逻辑块编号的顺序。也就是说,该实施例不限于逻辑块编号的概念。在非易失性存储器装置1006B中搜索数据的控制器可将非易失性存储器装置1006B的数据区域分成查找有效数据的多个预定范围以限制垃圾收集或损耗均衡的搜索范围。
当控制器1004基于逻辑块将非易失性存储器装置1006B的数据划分为多个组时,与非易失性存储器装置1006B的整个存储容量相比,控制器1004连续搜索相对小的大小。在这种情况下,控制器1004可能执行过量的相同命令,这可能产生系统负载。因为这可能是低效的指令,所以本公开的实施例考虑如图10中的第二表TB_B进行分组和搜索。
根据本公开的实施例,非易失性存储器装置1006B包括多个块LBN1、LBN2、LBN3、……,每个块包括多个页面。
根据实施例,可将非易失性存储器装置1006B分组或划分为逻辑块编号单位。例如,如在图10的第二表TB_B中,分别地,第一组B1包括逻辑块编号1至10,第二组B2包括逻辑块编号11至20,并且第三组B3是逻辑块编号21至30。对于分组,可基于诸如10或20的不同范围的逻辑块编号来实现各个实施例,以根据系统配置或用户选择来确定每个范围。
可以通过逻辑块编号或分组范围划分非易失性存储器装置1006B而建立的预定量(即,各个逻辑块组B1、B2、B3、……的大小)为单位搜索有效数据。也就是说,控制器1004在非易失性存储器装置1006B的与预定数量的逻辑块编号相对应的每个范围中搜索有效数据。
可预先确定在与每个逻辑块编号相对应的存储数据内是否存在有效数据。控制器1004可在非易失性存储器装置1006B中与预定数量的逻辑块地址相对应的预定量的存储数据内搜索有效数据。
作为另一示例,控制器1004可在非易失性存储器装置1006B中与预定逻辑块编号相对应的数据区域中检查未独立地与有效数据相匹配的未使用逻辑地址。例如,控制器1004按顺序检查与逻辑地址相对应的数据的有效性,以搜索有效数据。当检查的有效逻辑块编号的计数大于预定数量时,可停止有效数据搜索。
在图11中,示出了根据本公开的实施例的存储器系统。控制器可在基于映射数据的大小进行逻辑划分的非易失性存储器装置中查找有效数据。
参照图11,非易失性存储器装置1006C在结构上可与图6所示的非易失性存储器装置1006相同。非易失性存储器装置1006C描述了包括控制器的存储器系统的实施例,该控制器可基于非易失性存储器装置1006C的预定范围来执行垃圾收集或损耗均衡。
在图11中,如上所述,控制器1004可在非易失性存储器装置1006C的预定范围内搜索有效数据,以减少在垃圾收集或损耗均衡上花费的时间。可确定预定范围以对应于映射数据的大小。
可通过将非易失性存储器装置1006C的至少一个块BLK1、BLK2、BLK3中存储的映射数据的大小除以M(二或更大的自然数)来设定预定范围。区别于设定基于主机使用的数据单位确定的范围的方法,可将与非易失性存储器装置1006C中存储的数据相对应的映射数据分成M个相等的部分。
非易失性存储器装置1006C的多个块BLK1、BLK2、BLK3……中存储映射数据的位置可包括第一块BLK1的页面PG1、PG2、PG3、PG4……,第二块BLK2的页面PG1、PG2、PG3、PG4……,以及第三块BLK3的页面PG1、PG2、PG3、PG4……。
作为示例而非限制,如图11所示的第三表TB_C中所示,可对块的一些页面(即,预定大小的映射数据)进行如下分组:非易失性存储器装置1006C的第一组C1:(BLK1,PG1-100)、(BLK2,PG1-100)、……;第二组C2:(BLK1,PG101-200)、(BLK2,PG101-200)、……;以及第三组C3:(BLK1,PG201至300)、(BLK2,PG201至300)、……。另外,控制器可将其它块或其它页面分组为多个组。页面或块的顺序不受限制。无论页面或块之间的顺序如何,控制器都可将每个块的多个页面任意地分组为若干部分。
作为另一示例,如图11的第四表TB_D中所示,可基于块(即,预定大小的映射数据)对块进行如下分组。例如,第一组D1包括第一的三个块BLK1至BLK3,第二组D2包括第二的三个块BLK4至BLK6,第三组D3包括第三的三个块BLK7至BLK9。每个组可包括多个未排序的块。控制器可向每个组分配相同数量的块,但可任意确定为每个组分配的块编号。
另外,可存在对多个页面进行分组的实施例。在本公开的实施例中,示出了根据映射数据的大小对多个页面或多个块进行分组的示例。进一步地,在针对每个组的映射数据的大小相同的前提下,用户可任意地分配和分组位置。
图12示出了根据本公开的实施例的存储器系统1002的操作方法。存储器系统1002可收集散布在非易失性存储器装置1006中的有效数据并将其移动到另一个位置,以便确保大量数据的存储空间或者执行非易失性存储器装置1006的损耗均衡。为此,可能需要一种方法来增加在非易失性存储器装置1006的多个块之中可被擦除数据的块(擦除块)的数量。
参照图12,一种操作存储器系统1002的方法可包括:监测是否在非易失性存储器装置1006中执行了从主机输入的命令(步骤82);当非易失性存储器装置1006处于空闲状态时,在非易失性存储器装置1006中存储的预定量的数据中搜索有效数据(步骤84);并且将搜索到的有效数据编程到非易失性存储器装置1006中的至少一个空块中(步骤86)。此处,可将空块理解为空闲块。通过在非易失性存储器装置1006的空闲状态下,在非易失性存储器装置1006中存储的预定量的数据中搜索有效数据,可减少搜索有效数据所花费的时间。因此,即使命令是新从主机输入的并且释放了空闲状态,也不必停止或中断后台操作(即,图12的进程),因为响应于命令执行操作的待机时间不会由于后台操作而太长。因此,可将已搜索到的有效数据移动到空闲块,并且在空闲状态下单个后台操作期间搜索到的有限范围的有效数据可提高存储器系统1002的效率和可靠性。
操作存储器系统1002的方法可进一步包括将移动到空块中的有效数据的新地址更新到非易失性存储器装置1006的映射表(步骤88)。在将有效数据移动到新位置(块)然后更新映射表之后,可成功地完成诸如垃圾收集或损耗均衡的后台操作。在非易失性存储器装置1006的每个空闲状态期间,可对不同的搜索区域重复这种减少有效数据的搜索区域的后台操作,使得多次后台操作可覆盖存储器装置1006内的所有存储区域。
同时,虽然未示出,但操作存储器系统的方法测量或监测从搜索有效数据(步骤84)的时间到最后更新有效数据的地址(步骤88)的时间。当测量时间小于预定的阈值时间时,控制器1004可在另一预定范围内搜索有效数据。然而,当测量时间大于或等于预定的阈值时间时,控制器1004可终止另一搜索进程。存储器系统1002自身搜索有效数据的操作不需要根据主机向存储器系统1002请求或要求的命令来中断或阻止操作。因此,需要在预定的操作时间或操作间隔内执行存储器系统1002自身搜索有效数据的操作。此处,操作时间或操作间隔可以是预定值。然而,根据实施例,可对应于与存储器系统协作的主机所请求的操作模式动态地确定操作时间或操作间隔。
另一方面,尽管未示出,但存储器系统的操作方法可进一步包括:当作为步骤84至88的结果,牺牲块的所有页面中存储的数据不与映射表中包括的地址相链接时,擦除非易失性存储器装置的牺牲块中的所有页面的数据。例如,当作为步骤84至88的结果不存在链接到映射表的地址的数据时,可确定该牺牲块的所有数据都是无效的。在这种情况下,可擦除牺牲块中的所有数据以获得空块或空闲块。
图13示出了根据本公开的实施例的垃圾收集的进程。
参照图13,垃圾收集操作的进程可包括:检查是否在非易失性存储器装置1006中执行了从主机输入的命令(S1202);当非易失性存储器装置1006空闲时,在非易失性存储器装置1006中存储的预定量的数据中搜索有效数据(S1204);将搜索到的有效数据移动到非易失性存储器装置1006中的空块中(S1206)。
上述垃圾收集可能是条件操作。在步骤S1202中,确认存储器系统1002是否正常接收命令。在步骤S1204中,当存储器系统1002空闲时执行垃圾收集。空闲状态可包括非易失性存储器装置1006处于可操作状态但未使用的状态,或者非易失性存储器装置1006正等待发起操作的指令的状态。
在步骤S1202、S1204中,示出了执行作为后台任务或后台操作的垃圾收集。也就是说,即使没有通过主机传输的命令,存储器系统1002也可自行工作。另一方面,即使存储器系统1002正在进行其自身的垃圾收集,但如果从主机输入了命令,也可立即终止垃圾收集。
当如在步骤S1204中检查到的,存储器系统1002处于空闲状态时,可开始垃圾收集。在步骤S1204中,控制器1004在非易失性存储器装置1006中存储的预定量的数据中重复地搜索有效数据,并且将搜索到的有效数据存储在存储器1008中。在步骤S1206中,将通过步骤S1204加载到存储器1008中的有效数据移动到非易失性存储器装置1006中的可用空闲块中。
在该实施例中,在垃圾收集的整个过程中省略了擦除存储数据的块的进程,该数据先前是有效的但当前被移动到空闲块中并因此变为无效。此处,可在将数据移动到空闲块之后直接执行擦除进程,或者在将新数据编程到空闲块中之前直接执行该擦除进程。可在存储器系统1002具有操作余量时执行擦除进程。
图14是示出根据本公开的实施例的垃圾收集和时间管理的流程图。
参照图14,垃圾收集可包括:开始有效数据搜索(S1302);在非易失性存储器装置1006中存储的预定量的数据中搜索有效数据(S1304);将搜索到的有效数据移动到非易失性存储器装置1006的空块中(S1306);将移动的数据的新地址更新到映射表(S1308);检查消耗的时间是否短于阈值时间(S1310);并且结束有效数据搜索(S1312)。
在步骤S1302中,可在存储器系统1002处于空闲状态时开始针对垃圾收集的有效数据搜索。在步骤S1302中,例如,存储器系统1002的控制器1004可生成内部命令以开始有效数据搜索。
在步骤S1304中,控制器1004可在非易失性存储器装置1006中存储的预定量的数据中搜索有效数据。在本文中,可基于控制器1004中包括的或与控制器1004接合的存储器1008的存储容量、主机使用的数据单位或非易失性存储器装置1006中存储的映射数据的大小中的至少一个来确定非易失性存储器装置1006中存储的预定量的数据。搜索到的有效数据在被移动到非易失性存储器装置1006中的空闲块之前可存储在控制器1004的存储器1008中。
在步骤S1306中,在控制器1004完成步骤S1304中的搜索之后,控制器1004将控制器的内部存储器1008中存储的有效数据移动到非易失性存储器装置1006中的可用空闲块。此处,该移动包括类似于与编程命令或写入命令相对应的编程操作的操作。
在步骤S1308中,控制器1004将移动的有效数据的新地址更新到映射表。如果步骤S1306完成,则在非易失性存储器装置1006中可能存在利用相同数据编程的两个页面。在非易失性存储器装置1006中,在与更新后的地址相对应的页面中存储的数据变得有效,而在不与更新后的映射数据的地址相对应的页面中存储的数据变得无效。稍后可删除无效数据。
在步骤S1310中,将针对非易失性存储器装置1006中存储的预定量的数据的步骤S1302开始时与步骤S1308完成时之间的时间与预定的阈值时间进行比较。也就是说,可将开始有效数据搜索之后直到最终更新地址的所有步骤上花费的测量时间与预定的阈值时间进行比较。此处,可根据预定方法来设定阈值时间,该阈值时间是分配或可用于垃圾收集的时间。根据实施例,阈值时间可以是固定的,或者可通过分析用于运行从主机传输的命令的日志、历史或模式而动态确定的。
当在步骤S1310中确定测量或监测时间小于预定的阈值时间时,进程返回到步骤S1304,以对非易失性存储器装置1006中存储的另一数据重复相同的步骤。当测量时间大于或等于预定的阈值时间时,终止搜索。也就是说,重复执行搜索、移动和更新进程,直到测量时间变得大于预定的阈值时间。步骤S1312可包括终止垃圾收集。
对于第一迭代,从步骤S1302开始,在步骤S1304、步骤S1306、步骤S1308之后执行步骤S1310,以测量直到完成步骤S1308的时间,并且将测量时间与预定的阈值时间进行比较。对于随后的迭代,顺序地多次执行步骤S1304、S1306、S1308、S1310,并且测量从开始第一步骤S1302直到完成最后步骤S1308的时间,从而将测量时间与预定的阈值时间进行比较。
在实施例中,因为步骤S1302的时间可能短于其它步骤的时间,并且在与搜索开始指令基本相同的时间开始步骤S1304,所以可将步骤S1302的时间和紧接着开始步骤S1304之前的时间视为基本相同。因为步骤S1310仅是确认步骤,所以可认为步骤S1308的完成时间和步骤S1310的时间基本相同。
图15是示出根据本公开的实施例的垃圾收集和时间管理的流程图。
参照图15,垃圾收集可包括:开始有效数据搜索(S1402);在非易失性存储器装置1006中存储的预定量的数据中搜索有效数据(S1404);检查垃圾收集的终止或停止(S1406);将搜索到的有效数据移动到非易失性存储器装置1006的空块中(S1408);检查垃圾收集的终止或停止(S1410);将移动的数据的新地址更新到映射表(S1412);检查垃圾收集的终止或停止(S1414);并且终止有效数据搜索(S1416)。
图15可提供比图14所示的更具体的时间管理方案。可认为基本流程和配置非常相似,但在搜索有效数据以进行垃圾收集的进程中包括了添加事件以检查垃圾收集是否停止或终止的多个步骤。在每个主要步骤S1404、S1408、S1412之间插入检查垃圾收集的停止或终止,从而可更频繁地检查确定垃圾收集是否停止或终止的事件。
也就是说,控制器可在非易失性存储器装置1006中存储的预定量的数据中搜索有效数据(S1404),将搜索到的有效数据移动到非易失性存储器装置1006的空块中(S1408),并且在映射表中更新移动的数据的地址(S1412)。控制器可在步骤S1404、S1408和S1412之间检查是否停止或终止垃圾收集S1406、S1410、S1414。
另一方面,根据实施例,在检查垃圾收集的停止或终止的步骤S1406、S1410、S1414中,当在每个步骤上花费的时间小于预定的阈值时间时,下一步骤可随着具有“否”的箭头,如果花费的时间大于预定的阈值时间,则可随着具有“是”的箭头终止搜索。
在步骤S1402中,可在存储器系统1002处于空闲时开始针对垃圾收集的有效数据搜索。步骤S1402,例如,控制器1004可生成内部命令以在非易失性存储器装置1006中开始有效数据搜索。
在步骤S1404中,控制器1004可在非易失性存储器装置1006中存储的预定量的数据中搜索有效数据。搜索范围,即非易失性存储器装置1006中存储的预定量的数据,可对应于控制器1004内的存储器1008的存储容量来确定,或者根据主机使用的数据单位来确定,或者根据非易失性存储器装置1006中存储的映射数据的大小来确定。然后,可将搜索到的有效数据临时存储在控制器1004的存储器1008中。
在步骤S1406中,可将第一次开始步骤S1402与完成步骤S1404之间的时间与预定的阈值时间进行比较。也就是说,可监测和测量在应用第一搜索命令和完成最后的有效数据搜索之间所花费的时间,然后可将测量时间与预定的阈值时间进行比较。此处,可根据预定方法设定阈值时间,该阈值时间是为垃圾收集分配的时间或者是垃圾收集中搜索有效数据的可用时间。根据实施例,阈值时间可以是固定的,或者可通过响应于从主机传输的命令分析日志、历史或模式来动态地确定该阈值时间。
当在步骤S1406中测量时间小于预定的阈值时间时,进程可进行到步骤S1408。如果比较的结果大于或等于预定的阈值时间,则终止有效数据搜索(S1416)。
当满足从步骤S1406到步骤S1408的条件时,在步骤S1408中,当控制器1004在步骤S1404中完成预定范围内的有效数据搜索之后,将存储器1008中存储的有效数据移动到非易失性存储器装置1006的可用空闲块中。数据的移动可包括类似于与编程命令或写入命令相对应的编程操作的操作。
在步骤S1410中,将针对预定范围的从第一次开始步骤S1402直到完成步骤S1408的时间与预定的阈值时间进行比较。也就是说,监测和/或测量从首次发出搜索开始命令的时间点到将最后的有效搜索数据移动到非易失性存储器装置1006的空闲块的另一时间点的时间。然后,可将测量时间与预定的阈值时间进行比较。
如果在步骤S1410中测量时间小于预定的阈值时间,则进程进行到步骤S1412。如果比较的结果大于或等于预定的阈值时间,则终止有效数据搜索(S1416)。
当满足从步骤S1410到步骤S1412的条件时,控制器1004在步骤S1412中将移动的有效数据的新地址更新到映射表。如果步骤S1412完成,则在非易失性存储器装置中可能存在利用相同数据编程的两个页面。在非易失性存储器装置1006中,在与更新后的地址相对应的页面中存储的数据变得有效,而在不与更新后的映射数据的地址相对应的页面中存储的数据变得无效。然后,稍后可擦除包括无效数据的块。
在步骤S1414中,将针对预定范围的从开始步骤S1402到完成步骤S1412的时间与预定的阈值时间进行比较。也就是说,可将开始有效数据搜索之后直到最终更新地址的所有步骤上花费的测量时间与预定的阈值时间进行比较。此处,可根据预定方法来设定阈值时间,该阈值时间是分配或可用于垃圾收集的时间。
当在步骤S1414中测量时间小于预定的阈值时间时,进程可返回到步骤S1404重复相同的步骤。当比较的结果大于或等于预定的阈值时间时,可停止或终止有效数据搜索(S1416)。
步骤S1416可包括终止垃圾收集。
对于第一迭代,从步骤S1402开始,在步骤S1404、步骤S1406、步骤S1408、步骤S1410、步骤S1412之后执行步骤S1414,以测量直到完成步骤S1412的时间,并且将测量时间与预定的阈值时间进行比较。对于随后的迭代,顺序地多次执行步骤S1404、S1406、S1408、S1410、S1412、S1414,并且测量从开始步骤S1402到完成最后的步骤S1412的时间,从而将测量时间与预定的阈值时间进行比较。
在图15的步骤S1406和步骤S1410中,如果测量时间大于或等于预定的阈值时间,则终止搜索。否则,该进程进行到下一步骤,如图15所示。如果消耗的时间大于预定的阈值时间,则控制器可在步骤S1414中结束有效数据搜索,并且如果消耗的时间不大于预定的阈值时间,则可返回到如图15所示的步骤S1404。
根据实施例,因为步骤S1402的时间短于其它步骤的时间,并且在与搜索开始命令基本相同的时间开始步骤S1404,所以可将步骤S1402的时间和紧接着开始步骤S1404之前的时间视为基本相同。因为步骤S1406、步骤S1410和步骤S1414仅是确认,所以步骤S1406的时间和步骤S1404的完成时间,步骤S1410的时间和步骤S1408的完成时间以及步骤S1414的时间和步骤S1412的完成时间基本相同。例如,执行步骤S1406、S1410、S1414所花费的时间可比执行其它步骤的时间相对更少。
在图16中,描述了包括根据实施例的存储器系统的数据处理系统的另一示例。图16示意性地示出应用根据实施例的存储器系统的存储卡系统。
参照图16,存储卡系统6100可包括存储器控制器6120、存储器装置6130和连接器6110。
存储器控制器6120可连接到由非易失性存储器实现的存储器装置6130。存储器控制器6120可被配置成访问存储器装置6130。作为示例而非限制,存储器控制器6120可被配置成控制存储器装置6130的读取操作、写入操作、擦除操作和后台操作。存储器控制器6120可被配置成提供存储器装置6130与主机之间的接口连接并且使用固件控制存储器装置6130。也就是说,存储器控制器6120可对应于参照图1和图3描述的存储器系统110的控制器130,并且存储器装置6130可对应于参照图1和图5描述的存储器系统110的存储器装置150。
因此,存储器控制器6120可包括RAM、处理单元、主机接口、存储器接口和错误校正单元。存储器控制器130可进一步包括图1和图3所示的元件。
存储器控制器6120可通过连接器6110与例如图2的主机102的外部装置通信。例如,如参照图1至图3所述,存储器控制器6120可被配置成在诸如以下的各种通信协议中的一种或多种下与外部装置通信:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCIe)、高级技术附件(ATA)、串行-ATA、并行-ATA、小型计算机系统接口(SCSI)、增强型小型磁盘接口(EDSI)、电子集成驱动器(IDE)、火线、紧凑式闪存(UFS)、WIFI和蓝牙。因此,根据本实施例的存储器系统和数据处理系统可应用于有线/无线电子装置,特别是移动电子装置。
存储器装置6130可由非易失性存储器来实施。例如,存储器装置6130可通过诸如以下的各种非易失性存储器装置来实施:可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)和自旋转移力矩磁性RAM(STT-RAM)。存储器装置6130可包括如在图5的存储器装置150中的多个管芯。
存储器控制器6120和存储器装置6130可集成到单个半导体装置中。例如,存储器控制器6120和存储器装置6130可通过集成到单个半导体装置中来构造固态驱动器(SSD)。而且,存储器控制器6120和存储器装置6130可构造诸如以下的存储卡:PC卡(PCMCIA:个人计算机存储卡国际协会)、紧凑型闪存(CF)卡、智能媒体卡(例如,SM和SMC)、记忆棒、多媒体卡(例如,MMC、RS-MMC、微型MMC和eMMC)、SD卡(例如,SD、迷你SD、微型SD和SDHC)以及通用闪存(UFS)。
图17是示意性地示出包括根据实施例的存储器系统的数据处理系统的另一示例的示图。
参照图17,数据处理系统6200可包括具有一个或多个非易失性存储器的存储器装置6230和用于控制存储器装置6230的存储器控制器6220。图17所示的数据处理系统6200可用作如参照图1和图2描述的诸如存储卡(CF、SD、微型SD等)或USB装置的存储介质。存储器装置6230可对应于图1至图2所示的存储器系统110中的存储器装置150。存储器控制器6220可对应于图1至图2所示的存储器系统110中的控制器130。
存储器控制器6220可响应于主机6210的请求来控制对存储器装置6230的读取操作、写入操作或擦除操作。存储器控制器6220可包括一个或多个CPU 6221、诸如RAM 6222的缓冲存储器、ECC电路6223、主机接口6224和诸如NVM接口6225的存储器接口。
CPU 6221可控制对存储器装置6230的全部操作,例如读取操作、写入操作、文件系统管理和坏页面管理操作。RAM 6222可根据CPU 6221的控制来操作。RAM 6222可用作工作存储器、缓冲存储器或高速缓存存储器。当RAM 6222用作工作存储器时,由CPU 6221处理的数据可以临时存储在RAM 6222中。当RAM 6222用作缓冲存储器时,RAM 6222可用于缓冲从主机6210传输到存储器装置6230的数据或从存储器装置6230传输到主机6210的数据。当RAM 6222用作高速缓存存储器时,RAM 6222可辅助低速存储器装置6230以高速运行。
ECC电路6223可对应于图2所示的控制器130的ECC单元138。如参照图17所述,ECC电路6223可生成用于校正从存储器装置6230提供的数据的失败位或错误位的ECC(错误校正码)。ECC电路6223可对被提供到存储器装置6230的数据执行错误校正编码,由此形成具有奇偶校验位的数据。奇偶校验位可被存储在存储器装置6230中。ECC电路6223可对从存储器装置6230输出的数据执行错误校正解码。此时,ECC电路6223可使用奇偶校验位来校正错误。例如,如参照图17描述的,ECC电路6223可使用LDPC码、BCH码、turbo码、里德-所罗门码、卷积码、RSC或诸如TCM或BCM的编码调制来校正错误。
存储器控制器6220可通过主机接口6224向主机6210传输数据/从主机6210接收数据。存储器控制器6220可通过NVM接口6225向存储器装置6230传输数据/从存储器装置6230接收数据。主机接口6224可通过PATA总线、SATA总线、SCSI、USB、PCIe或NAND接口连接至主机6210。存储器控制器6220可利用诸如WiFi或长期演进(LTE)的移动通信协议而具有无线通信功能。存储器控制器6220可连接到例如主机6210的外部装置或另一外部装置,然后向外部装置传输数据/从外部装置接收数据。特别地,因为存储器控制器6220被配置成通过各种通信协议中的一种或多种与外部装置通信,所以根据本实施例的存储器系统和数据处理系统可以应用于有线/无线电子装置,特别是移动电子装置。
图18是示意性地示出包括根据实施例的存储器系统的数据处理系统的另一示例的示图。图18示意性地示出应用根据实施例的存储器系统的SSD。
参照图18,SSD 6300可包括控制器6320和包括多个非易失性存储器的存储器装置6340。控制器6320可对应于图1至图2的存储器系统110中的控制器130。存储器装置6340可对应于图1至图2的存储器系统110中的存储器装置150。
更具体地,控制器6320可通过多个通道CH1至CHi连接到存储器装置6340。控制器6320可包括一个或多个处理器6321、缓冲存储器6325、ECC电路6322、主机接口6324和例如非易失性存储器接口6326的存储器接口。
缓冲存储器6325可临时存储从主机6310提供的数据或从存储器装置6340中包括的多个闪速存储器NVM提供的数据,或者临时存储多个闪速存储器NVM的元数据,例如,包括映射表的映射数据。缓冲存储器6325可由诸如DRAM、SDRAM、DDR SDRAM、LPDDR SDRAM和GRAM的易失性存储器或由诸如FRAM、ReRAM、STT-MRAM和PRAM的非易失性存储器来实现。图18示出缓冲存储器6325存在于控制器6320中。然而,缓冲存储器6325可存在于控制器6320的外部。
ECC电路6322可在编程操作期间计算待被编程到存储器装置6340的数据的ECC值。ECC电路6322可在读取操作期间基于ECC值对从存储器装置6340读取的数据执行错误校正操作。ECC电路6322可在失效数据恢复操作期间对从存储器装置6340恢复的数据执行错误校正操作。
主机接口6324可提供与例如主机6310的外部装置的接口连接功能。非易失性存储器接口6326可提供通过多个通道与存储器装置6340连接的接口连接功能。
此外,可提供应用图1至图2的存储器系统110的多个SSD 6300以实现例如RAID(独立磁盘的冗余阵列)系统的数据处理系统。此时,RAID系统可包括多个SSD 6300和用于控制多个SSD 6300的RAID控制器。当RAID控制器响应于从主机6310提供的写入命令执行编程操作时,RAID控制器可根据多个RAID级别,即,从主机6310提供的写入命令的RAID级别信息,在SSD 6300中选择一个或多个存储器系统或SSD 6300。RAID控制器可将与写入命令对应的数据输出到所选择的SSD 6300。此外,当RAID控制器响应于从主机6310提供的读取命令执行读取操作时,RAID控制器可根据多个RAID级别,即,从主机6310提供的读取命令的RAID级别信息,在SSD 6300中选择一个或多个存储器系统或SSD 6300。RAID控制器可将从所选择的SSD 6300读取的数据提供到主机6310。
图19是示意性地示出包括根据实施例的存储器系统的数据处理系统的另一示例的示图。图19示意性地示出应用根据实施例的存储器系统的嵌入式多媒体卡(eMMC)。
参照图19,eMMC 6400可包括控制器6430和由一个或多个NAND闪速存储器实现的存储器装置6440。控制器6430可对应于图1至图2的存储器系统110中的控制器130。存储器装置6440可对应于图1至图2的存储器系统110中的存储器装置150。
更具体地,控制器6430可通过多个通道连接到存储器装置6440。控制器6430可包括一个或多个内核6432、主机接口6431和例如NAND接口6433的存储器接口。
内核6432可控制eMMC 6400的全部操作。主机接口6431可提供控制器6430与主机6410之间的接口连接功能。NAND接口6433可提供存储器装置6440与控制器6430之间的接口连接功能。例如,主机接口6431可作为并行接口,例如参照图1所描述的MMC接口。此外,主机接口6431可作为串行接口,例如UHS((超高速)-I/UHS-II)接口。
图17至图20是示意性地示出包括根据实施例的存储器系统的数据处理系统的其它示例的示图。图17至图20示意性地示出应用根据实施例的存储器系统的UFS(通用闪存)系统。
参照图17至图20,UFS系统6500、6600、6700、6800可分别包括主机6510、6610、6710、6810,UFS装置6520、6620、6720、6820以及UFS卡6530、6630、6730、6830。主机6510、6610、6710、6810可用作有线/无线电子装置,特别是移动电子装置的应用处理器,UFS装置6520、6620、6720、6820可用作嵌入式UFS装置,并且UFS卡6530、6630、6730、6830可用作外部嵌入式UFS装置或可移除UFS卡。
在各个UFS系统6500、6600、6700、6800中的主机6510、6610、6710、6810,UFS装置6520、6620、6720、6820以及UFS卡6530、6630、6730、6830可通过UFS协议与例如有线/无线电子装置,特别是移动电子装置的外部装置通信,并且UFS装置6520、6620、6720、6820以及UFS卡6530、6630、6730、6830可由图1至图2所示的存储器系统110来实现。例如,在UFS系统6500、6600、6700、6800中,UFS装置6520、6620、6720、6820可以参照图13至图16描述的数据处理系统6200、SSD6300或eMMC 6400的形式来实现,并且UFS卡6530、6630、6730、6830可以参照图16描述的存储卡系统6100的形式来实现。
此外,在UFS系统6500、6600、6700、6800中,主机6510、6610、6710、6810,UFS装置6520、6620、6720、6820以及UFS卡6530、6630、6730、6830可通过例如MIPI(移动工业处理器接口)中的MIPI M-PHY和MIPI UniPro(统一协议)的UFS接口来彼此通信。此外,UFS装置6520、6620、6720、6820与UFS卡6530、6630、6730、6830可通过除UFS协议以外的各种协议,例如,UFD、MMC、SD、迷你SD和微型SD彼此通信。
在图20所示的UFS系统6500中,主机6510、UFS装置6520和UFS卡6530中的每个可包括UniPro。主机6510可执行交换操作,以便与UFS装置6520和UFS卡6530通信。特别地,主机6510可通过例如UniPro处的L3交换的链路层交换与UFS装置6520或UFS卡6530通信。此时,UFS装置6520和UFS卡6530可通过主机6510的UniPro处的链路层交换来彼此通信。在本实施例中,为了便于描述,已经例示一个UFS装置6520和一个UFS卡6530连接到主机6510的配置。然而,多个UFS装置和UFS卡可并行地或以星型形式连接到主机6510。星型形式是一种将单个中央组件联接到多个装置以进行并行处理的布置。多个UFS卡可并行地或以星型形式连接到UFS装置6520或者串行地或以链型形式连接到UFS装置6520。
在图21所示的UFS系统6600中,主机6610、UFS装置6620和UFS卡6630中的每个可包括UniPro,并且主机6610可通过执行交换操作的交换模块6640,例如,通过在UniPro处执行例如L3交换的链路层交换的交换模块6640来与UFS装置6620或UFS卡6630通信。UFS装置6620和UFS卡6630可通过在UniPro处的交换模块6640的链路层交换来彼此通信。在本实施例中,为了便于描述,已经例示一个UFS装置6620和一个UFS卡6630连接到交换模块6640的配置。然而,多个UFS装置和UFS卡可并行或以星型形式连接到交换模块6640,并且多个UFS卡可串行或以链型形式连接到UFS装置6620。
在图22所示的UFS系统6700中,主机6710、UFS装置6720和UFS卡6730中的每个可包括UniPro,并且主机6710可通过执行交换操作的交换模块6740,例如,通过在UniPro处执行例如L3交换的链路层交换的交换模块6740来与UFS装置6720或UFS卡6730通信。此时,UFS装置6720和UFS卡6730可在UniPro处通过交换模块6740的链路层交换来彼此通信,并且交换模块6740可在UFS装置6720内部或外部与UFS装置6720集成为一个模块。在本实施例中,为便于描述,已经例示一个UFS装置6720和一个UFS卡6730连接到交换模块6740的配置。然而,每个均包括交换模块6740和UFS装置6720的多个模块可以并行地或以星型形式连接到主机6710或者串联地或以链型形式连接到彼此。此外,多个UFS卡可以并行地或以星型形式连接到UFS装置6720。
在图23所示的UFS系统6800中,主机6810、UFS装置6820和UFS卡6830中的每个可包括M-PHY和UniPro。UFS装置6820可执行交换操作以便与主机6810和UFS卡6830通信。特别地,UFS装置6820可通过用于与主机6810通信的M-PHY和UniPro模块和用于与UFS卡6830通信的M-PHY和UniPro模块之间的交换操作,例如通过目标ID(标识符)交换操作来与主机6810或UFS卡6830通信。此时,主机6810和UFS卡6830可通过UFS装置6820的M-PHY和UniPro模块之间的目标ID交换来彼此通信。在本实施例中,为了便于描述,已经例示一个UFS装置6820连接到主机6810和一个UFS卡6830连接到UFS装置6820的配置。然而,多个UFS装置可并行或以星型形式连接到主机6810或者串行或以链型形式连接到主机6810,并且多个UFS卡可并行或以星型形式连接到UFS装置6820或者串行或以链型形式连接到UFS装置6820。
图24是示意性地示出包括根据实施例的存储器系统的数据处理系统的另一示例的示图。图24是示意性地示出应用根据实施例的存储器系统的用户系统的示图。
参照图24,用户系统6900可包括应用处理器6930、存储器模块6920、网络模块6940、存储模块6950和用户接口6910。
更具体地,应用处理器6930可驱动例如OS的用户系统6900中包括的组件,并且包括控制用户系统6900中包括的组件的控制器、接口和图形引擎。应用处理器6930可被设置为片上系统(SoC)。
存储器模块6920可以用作用户系统6900的主存储器、工作存储器、缓冲存储器或高速缓存存储器。存储器模块6920可包括诸如DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3SDRAM、LPDDR SDRAM、LPDDR2 SDRAM或LPDDR3 SDRAM的易失性RAM或诸如PRAM、ReRAM、MRAM或FRAM的非易失性RAM。例如,可基于POP(堆叠封装)来封装并安装应用处理器6930和存储器模块6920。
网络模块6940可与外部装置通信。例如,网络模块6940不仅可支持有线通信,还可支持诸如以下的各种无线通信:码分多址(CDMA)、全球移动通信系统(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进(LTE)、全球微波接入互操作性(Wimax)、无线局域网(WLAN)、超宽带(UWB)、蓝牙、无线显示(WI-DI),从而与有线/无线电子装置,特别是移动电子装置通信。因此,根据本发明的实施例的存储器系统和数据处理系统可应用于有线/无线电子装置。网络模块6940可被包括在应用处理器6930中。
存储模块6950可存储数据,例如从应用处理器6930接收的数据,然后可将所存储的数据传输到应用处理器6930。存储模块6950可由诸如以下的非易失性半导体存储器装置实现:相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(ReRAM)、NAND闪存、NOR闪存和3D NAND闪存,并且被设置为诸如用户系统6900的存储卡或外部驱动器的可移动存储介质。存储模块6950可以对应于以上参照图1和图2描述的存储器系统110。此外,存储模块6950可被实现为如上参照图18至图23所述的SSD、eMMC和UFS。
用户接口6910可包括用于将数据或命令输入到应用处理器6930或用于将数据输出到外部装置的接口。例如,用户接口6910可包括诸如键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和压电元件的用户输入接口以及诸如液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器和监视器的用户输出接口。
此外,当图1至图2的存储器系统110被应用于用户系统6900的移动电子装置时,应用处理器6930可控制移动电子装置的全部操作。网络模块6940可用作用于控制与外部装置的有线/无线通信的通信模块。用户接口6910可在移动电子装置的显示/触摸模块上显示通过处理器6930处理的数据。进一步地,用户接口6910可支持从触摸面板接收数据的功能。
根据上述实施例,存储器系统、数据处理系统及其操作方法可限制或限定在大型存储器装置的可预测范围内搜索有效数据所花费的时间,该时间是可被管理或可被控制为短于估计时间或可用时间。可以更容易管理可通过存储器系统中的有效数据搜索执行的前台或后台操作。
本公开提供了一种存储器系统,该存储器系统降低了因为通过存储器系统中的有效数据搜索已执行的前台或后台操作所需的时间比估计时间更长而可能无法平稳实施存储器系统内要执行的其它操作的可能性,从而可提高或增强存储器系统的操作稳定性和可靠性。
虽然已经针对具体实施例描述了本公开,但是对于本领域技术人员将显而易见的是,在不脱离如所附权利要求所限定的本发明的精神和范围的情况下,可进行各种改变和修改。
Claims (20)
1.一种存储器系统,包括:
非易失性存储器装置,包括存储数据的多个存储块;以及
控制器,增加所述多个存储块之中可擦除的块的计数,
其中,所述控制器在空闲状态期间在所述多个存储块的预定范围内重复地搜索有效数据。
2.根据权利要求1所述的存储器系统,其中至少基于所述控制器包括的或直接与所述控制器接合并由所述控制器控制的易失性存储器的存储容量来确定所述预定范围。
3.根据权利要求2所述的存储器系统,其中所述控制器搜索所述有效数据,直到所述易失性存储器中不再临时存储有效数据。
4.根据权利要求3所述的存储器系统,其中所述控制器访问所述非易失性存储器装置中的每个块,将每个块的所有数据加载到所述易失性存储器中,并且仅选择或选出所述所有数据之中的有效数据,用于将所选择的有效数据重新存储在所述非易失性存储器装置中。
5.根据权利要求3所述的存储器系统,其中所述控制器访问所述非易失性存储器装置中的每个块,并且仅将每个块中的所述有效数据加载到所述易失性存储器。
6.根据权利要求1所述的存储器系统,其中所述预定范围对应于从主机输入的数据单位的大小。
7.根据权利要求6所述的存储器系统,其中通过将所述非易失性存储器装置的通知给所述主机的数据区域除以N来确定所述预定范围,N为大于1的整数。
8.根据权利要求7所述的存储器系统,其中至少基于所述非易失性存储器装置的数据区域的大小来确定所述预定范围,所述数据区域由所述主机确定为未存储有效数据的数据区域。
9.根据权利要求1所述的存储器系统,其中所述预定范围对应于所述非易失性存储器装置中存储的映射数据的大小。
10.根据权利要求9所述的存储器系统,其中通过将所述映射数据的大小除以N来确定所述预定范围,N为大于1的整数。
11.根据权利要求1所述的存储器系统,其中所述控制器将搜索到的有效数据传输到所述非易失性存储器装置的空块中。
12.根据权利要求11所述的存储器系统,其中所述控制器将所述空块中的传输数据的新地址更新到所述非易失性存储器装置的映射表。
13.根据权利要求12所述的存储器系统,其中所述控制器测量开始在第一范围内搜索有效数据至更新搜索到的并传输的数据的地址之间的时间,并且
所述控制器执行以下操作中的至少一个:当测量时间短于阈值时,开始在另一范围中搜索所述有效数据;以及当所述测量时间等于或长于所述阈值时,终止在另一范围中搜索所述有效数据。
14.根据权利要求13所述的存储器系统,其中,当所述非易失性存储器装置中的块中的所有页面都不具有与所述映射表相链接的任何地址时,所述控制器擦除所述块。
15.根据权利要求1所述的存储器系统,其中所述控制器包括:
搜索电路,用于在所述预定范围内搜索所述有效数据;以及
搜索控制电路,用于确定搜索时间和所述预定范围,并且从所述搜索电路接收搜索结果。
16.一种操作存储器系统的方法,所述存储器系统包括非易失性存储器装置和控制器,所述方法包括:
监测在非易失性存储器装置中是否执行了与从主机输入的命令相对应的操作;
在空闲状态期间在所述非易失性存储器装置的多个存储块的每个预定范围内重复搜索有效数据,以增加所述非易失性存储器装置中可擦除的块的计数;并且
将搜索到的有效数据传输到所述非易失性存储器装置中的空块中。
17.根据权利要求16所述的方法,进一步包括:
将传输到所述空块的有效数据的新地址更新到所述非易失性存储器装置的映射表。
18.根据权利要求17所述的方法,进一步包括:
测量开始在第一范围内搜索所述有效数据至更新搜索到的并传输的数据的地址之间的时间;以及
当测量时间短于阈值时,开始在另一范围中搜索所述有效数据;以及当所述测量时间等于或长于所述阈值时,终止在另一范围搜索所述有效数据。
19.根据权利要求18所述的方法,进一步包括:当所述非易失性存储器装置中的块中的所有页面都不具有与所述映射表相链接的任何地址时,擦除所述块。
20.根据权利要求16所述的方法,其中至少基于控制器中包括的或直接与所述控制器接合并由所述控制器控制的易失性存储器的存储容量、通知给主机的数据区域的大小以及所述非易失性存储器装置中存储的映射数据的大小中的至少一个来确定所述预定范围。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180091320A KR20200016075A (ko) | 2018-08-06 | 2018-08-06 | 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치 |
KR10-2018-0091320 | 2018-08-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110806984A true CN110806984A (zh) | 2020-02-18 |
CN110806984B CN110806984B (zh) | 2023-04-07 |
Family
ID=69229735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910704322.7A Active CN110806984B (zh) | 2018-08-06 | 2019-07-31 | 在存储器系统中搜索有效数据的设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10963175B2 (zh) |
KR (1) | KR20200016075A (zh) |
CN (1) | CN110806984B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703671A (zh) * | 2021-07-23 | 2021-11-26 | 郑州云海信息技术有限公司 | 一种数据块擦除方法及相关装置 |
CN118466855A (zh) * | 2024-07-10 | 2024-08-09 | 合肥康芯威存储技术有限公司 | 一种存储芯片及其数据压缩方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020046752A (ja) * | 2018-09-14 | 2020-03-26 | キオクシア株式会社 | 記憶装置及び情報処理システム |
KR20210101973A (ko) * | 2020-02-11 | 2021-08-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR20210101982A (ko) * | 2020-02-11 | 2021-08-19 | 삼성전자주식회사 | 스토리지 장치 및 메모리 컨트롤러의 동작 방법 |
US11907136B2 (en) * | 2020-03-16 | 2024-02-20 | Intel Corporation | Apparatuses, systems, and methods for invalidating expired memory |
KR20210115954A (ko) * | 2020-03-17 | 2021-09-27 | 에스케이하이닉스 주식회사 | 컨트롤러 및 메모리 시스템 |
US11204833B1 (en) * | 2020-06-19 | 2021-12-21 | Western Digital Technologies, Inc. | NVM endurance group controller using shared resource architecture |
WO2022140916A1 (en) * | 2020-12-28 | 2022-07-07 | Alibaba Group Holding Limited | Recycle optimization in storage engine |
JP2022121156A (ja) * | 2021-02-08 | 2022-08-19 | トヨタ自動車株式会社 | 電子制御ユニット、方法およびプログラム |
US12019878B2 (en) | 2021-11-22 | 2024-06-25 | Western Digital Technologies, Inc. | Pre-validation of blocks for garbage collection |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070033330A1 (en) * | 2005-08-03 | 2007-02-08 | Sinclair Alan W | Reclaiming Data Storage Capacity in Flash Memory Systems |
JP2011128826A (ja) * | 2009-12-17 | 2011-06-30 | Hitachi Ulsi Systems Co Ltd | 記憶装置と半導体不揮発性メモリの記憶方法 |
US20140229654A1 (en) * | 2013-02-08 | 2014-08-14 | Seagate Technology Llc | Garbage Collection with Demotion of Valid Data to a Lower Memory Tier |
CN104461399A (zh) * | 2014-12-19 | 2015-03-25 | 上海新储集成电路有限公司 | 非易失性存储器的写缓存器系统及其数据读写方法 |
US20160124673A1 (en) * | 2014-10-31 | 2016-05-05 | International Business Machines Corporation | Cache allocation for disk array |
US20160232088A1 (en) * | 2014-07-17 | 2016-08-11 | Sandisk Enterprise Ip Llc | Garbage Collection in Storage System with Distributed Processors |
CN106201916A (zh) * | 2016-07-25 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 一种面向ssd的非易失缓存机制 |
US20170123682A1 (en) * | 2015-10-30 | 2017-05-04 | Sandisk Technologies Inc. | System and method for precision interleaving of data writes in a non-volatile memory |
US20180190329A1 (en) * | 2016-12-29 | 2018-07-05 | Sandisk Technologies Llc | System and method of managing data in a non-volatile memory having a staging sub-drive |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8880775B2 (en) * | 2008-06-20 | 2014-11-04 | Seagate Technology Llc | System and method of garbage collection in a memory device |
US9530436B1 (en) * | 2010-08-12 | 2016-12-27 | Western Digital Technologies, Inc. | Methods and systems for providing data security in data storage devices |
KR101867282B1 (ko) | 2011-11-07 | 2018-06-18 | 삼성전자주식회사 | 비휘발성 메모리 장치의 가비지 컬렉션 방법 |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
US10102119B2 (en) * | 2015-10-30 | 2018-10-16 | Sandisk Technologies Llc | Garbage collection based on queued and/or selected write commands |
US10318175B2 (en) * | 2017-03-07 | 2019-06-11 | Samsung Electronics Co., Ltd. | SSD with heterogeneous NVM types |
KR102512727B1 (ko) * | 2017-12-22 | 2023-03-22 | 삼성전자주식회사 | 가비지 컬렉션을 수행하는 스토리지 장치, 및 스토리지 장치의 가비지 컬렉션 방법 |
-
2018
- 2018-08-06 KR KR1020180091320A patent/KR20200016075A/ko not_active Application Discontinuation
-
2019
- 2019-05-10 US US16/408,606 patent/US10963175B2/en active Active
- 2019-07-31 CN CN201910704322.7A patent/CN110806984B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070033330A1 (en) * | 2005-08-03 | 2007-02-08 | Sinclair Alan W | Reclaiming Data Storage Capacity in Flash Memory Systems |
JP2011128826A (ja) * | 2009-12-17 | 2011-06-30 | Hitachi Ulsi Systems Co Ltd | 記憶装置と半導体不揮発性メモリの記憶方法 |
US20140229654A1 (en) * | 2013-02-08 | 2014-08-14 | Seagate Technology Llc | Garbage Collection with Demotion of Valid Data to a Lower Memory Tier |
US20160232088A1 (en) * | 2014-07-17 | 2016-08-11 | Sandisk Enterprise Ip Llc | Garbage Collection in Storage System with Distributed Processors |
US20160124673A1 (en) * | 2014-10-31 | 2016-05-05 | International Business Machines Corporation | Cache allocation for disk array |
CN104461399A (zh) * | 2014-12-19 | 2015-03-25 | 上海新储集成电路有限公司 | 非易失性存储器的写缓存器系统及其数据读写方法 |
US20170123682A1 (en) * | 2015-10-30 | 2017-05-04 | Sandisk Technologies Inc. | System and method for precision interleaving of data writes in a non-volatile memory |
CN106201916A (zh) * | 2016-07-25 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 一种面向ssd的非易失缓存机制 |
US20180190329A1 (en) * | 2016-12-29 | 2018-07-05 | Sandisk Technologies Llc | System and method of managing data in a non-volatile memory having a staging sub-drive |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703671A (zh) * | 2021-07-23 | 2021-11-26 | 郑州云海信息技术有限公司 | 一种数据块擦除方法及相关装置 |
CN113703671B (zh) * | 2021-07-23 | 2023-09-22 | 郑州云海信息技术有限公司 | 一种数据块擦除方法及相关装置 |
CN118466855A (zh) * | 2024-07-10 | 2024-08-09 | 合肥康芯威存储技术有限公司 | 一种存储芯片及其数据压缩方法 |
CN118466855B (zh) * | 2024-07-10 | 2024-09-27 | 合肥康芯威存储技术有限公司 | 一种存储芯片及其数据压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110806984B (zh) | 2023-04-07 |
US20200042181A1 (en) | 2020-02-06 |
US10963175B2 (en) | 2021-03-30 |
KR20200016075A (ko) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110806984B (zh) | 在存储器系统中搜索有效数据的设备和方法 | |
CN111290704B (zh) | 用于控制储存在存储系统中的数据的装置和方法 | |
CN110825319B (zh) | 基于块状态确定可用性的存储器系统及操作方法 | |
CN110928807B (zh) | 用于检查存储器系统中的有效数据的设备和方法 | |
CN111240586A (zh) | 存储器系统及其操作方法 | |
CN110825659B (zh) | 用于检查存储器系统中的块中的有效数据的设备和方法 | |
CN110806837B (zh) | 数据处理系统及其操作方法 | |
CN110888825B (zh) | 在存储器系统中处理数据的设备和方法 | |
US11157402B2 (en) | Apparatus and method for managing valid data in memory system | |
CN111581121B (zh) | 用于管理存储器系统中的映射数据的方法和设备 | |
CN110910944A (zh) | 保持存储器系统中的固件的设备和方法 | |
CN112148632A (zh) | 用于改善存储器系统的输入/输出吞吐量的设备和方法 | |
CN110781023A (zh) | 用于在存储器系统中处理数据的设备和方法 | |
CN110895449B (zh) | 用于在存储器系统中管理有效数据的装置和方法 | |
CN111435291A (zh) | 用于擦除非易失性存储器块中编程的数据的装置和方法 | |
CN112835811A (zh) | 存储器系统及其操作方法 | |
CN111435334B (zh) | 在存储器系统中检查有效数据的设备和方法 | |
CN110806983B (zh) | 存储器系统及其操作方法 | |
CN110888819B (zh) | 存储器系统及其操作方法 | |
CN109753233B (zh) | 存储器系统及其操作方法 | |
CN109407968B (zh) | 存储器系统及其操作方法 | |
CN111857818A (zh) | 存储器系统和通过该存储器系统执行命令操作的方法 | |
CN111857565A (zh) | 存储器系统、数据处理系统及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240613 Address after: American Texas Patentee after: Mimi IP Co.,Ltd. Country or region after: U.S.A. Address before: Gyeonggi Do, South Korea Patentee before: Sk Hynix Inc. Country or region before: Republic of Korea |