CN102467455B - 存储系统、数据存储设备、用户设备及其数据管理方法 - Google Patents

存储系统、数据存储设备、用户设备及其数据管理方法 Download PDF

Info

Publication number
CN102467455B
CN102467455B CN201110338409.0A CN201110338409A CN102467455B CN 102467455 B CN102467455 B CN 102467455B CN 201110338409 A CN201110338409 A CN 201110338409A CN 102467455 B CN102467455 B CN 102467455B
Authority
CN
China
Prior art keywords
data
trim
sector
data management
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110338409.0A
Other languages
English (en)
Other versions
CN102467455A (zh
Inventor
郑晓真
崔永准
李晟熏
朱宰贤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from KR1020100106947A external-priority patent/KR101893897B1/ko
Priority claimed from KR1020100106946A external-priority patent/KR101747791B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN102467455A publication Critical patent/CN102467455A/zh
Application granted granted Critical
Publication of CN102467455B publication Critical patent/CN102467455B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

本申请提供一种数据存储设备的数据管理方法,该数据存储设备具有不同于用户设备的数据管理单位的数据管理单位,该方法包括:从所述用户设备接收关于将被删除的文件的存储区域的信息,从所述被删除文件的存储区域当中选择与所述数据存储设备的数据管理单位匹配的存储区域,以及对所选择的与所述数据管理单位匹配的存储区域执行擦除操作。

Description

存储系统、数据存储设备、用户设备及其数据管理方法
相关申请的交叉引用
本申请要求于2010年10月29日提交的韩国专利申请No.10-2010-0106946以及于2010年10月29日提交的韩国专利申请No.10-2010-0106947的优先权,它们的全部内容通过引用的方式并入此处。
技术领域
本公开涉及存储系统及其数据管理方法,并且更具体来说,涉及闪存系统及其数据管理方法。
背景技术
因为闪存(flash memory)不同于硬盘,其不支持覆盖写入(overwriting),所以为了再次写入(rewriting)需要首先执行擦除操作。闪存的擦除操作以存储块为单位执行。由于闪存的这些特征,所以难以将硬盘的文件系统照原样应用于闪存。在硬盘的文件系统与闪存之间使用中间件闪存转换层(Flash Translation Layer,FTL)。FTL使得能够像在现有的硬盘中那样在闪存中自由读/写。
在FTL中用于管理文件系统中的文件的单位与用于管理闪存中存储的数据的单位不同。管理单位之间的不匹配会导致闪存的不必要的数据复制操作以及大规模的合并操作。复制和合并操作会缩短闪存的服务寿命。
发明内容
根据示范性实施例,提供了一种具有不同于用户设备的数据管理单位的数据管理单位的数据存储设备的数据管理方法。从用户设备接收关于将被删除的文件的存储区域的信息。从将被删除的文件的存储区域当中选择与所述数据存储设备的数据管理单位匹配的存储区域。对所选择的与所述数据管理单位匹配的存储区域执行擦除操作。
可以单独管理关于将被删除的文件的存储区域当中与所述数据存储设备的数据管理单位不匹配的存储区域的信息。
所述用户设备可以将关于将被删除的文件的元数据的信息改变为表示将被删除的文件已从高层删除。
所述数据管理方法还包括:当从所述用户设备提供关于将被删除的至少两个文件的存储区域的信息时,由所述数据存储设备将关于将被删除的至少两个文件的存储区域的信息存储在缓存中。
所述选择存储区域的步骤可以从存储在所述缓存中的、所述至少两个将被删除的文件的存储区域当中选择与所述数据存储设备的数据管理单位匹配的存储区域。
所述用户设备可以以扇区为单位管理数据。所述数据存储设备可以以页为单位管理数据。每个页可以划分为多个扇区。
根据示范性实施例,提供了一种用于使用不同于用户设备的数据管理单位的数据管理单位的数据存储设备的数据管理方法。从用户设备接收关于将被删除的文件的存储区域的信息。与所述数据存储设备的管理单位匹配的存储区域被标记为无效。所述数据存储设备包括被配置为存储数据的数据存储单元以及被配置为临时存储将写入所述数据存储单元中的数据的缓存。存储在所述缓存中的数据当中关于被标记为无效的存储区域的数据不写入所述存储单元中。
所述数据管理方法还可以包括:将将被删除的文件的存储区域当中与所述数据存储设备的管理单位不匹配的存储区域标记为有效。存储在所述缓存中的数据当中关于被标记为有效的存储区域的数据可以写入所述存储单元中。
所述数据管理方法还可以包括创建TRIM(整理)管理表,该TRIM管理表被配置为管理将被删除的文件的存储区域当中与所述数据存储设备的管理单位不匹配的存储区域。
所述TRIM管理表可以存储在所述缓存中,并且可以通过推送方案控制所述TRIM管理表的信息。
所述数据管理方法还可以包括:当从所述用户设备提供关于将被删除的至少两个文件的存储区域的信息时,由所述数据存储设备将关于将被删除的至少两个文件的存储区域的信息存储在缓存中。
所述标记存储区域为无效的步骤可以将与所述数据存储设备的数据管理单位匹配的存储区域标记为无效。
根据示范性实施例,存储系统包括被配置为生成TRIM命令的主机以及被配置为响应于来自主机的TRIM命令执行擦除操作的数据存储设备。所述数据存储设备可以根据所述TRIM命令,对已经被指定为将被删除的区域的存储区域当中与所述数据存储设备的数据管理单位匹配的区域执行擦除操作。
所述数据存储设备可以根据所述TRIM命令,单独管理关于已经被指定为将被删除的区域的存储区域当中与所述数据存储设备的数据管理单位不匹配的区域的信息。
所述数据存储设备可以以页为单位管理数据。所述主机可以以扇区为单位管理数据。每个页可以划分为多个扇区。
所述数据存储设备可以包括映射表,其被配置为将从主机提供的逻辑地址改变为所述数据存储设备的物理地址,并且在映射表中,已经被指定为将被删除的区域的存储区域当中与所述数据存储设备的数据管理单位匹配的存储区域可以被标记为无效。
在所述映射表中,被指定为将被删除的区域的存储区域当中与所述数据存储设备的数据管理单位不匹配的存储区域的可以被标记为有效。
所述数据存储设备还可以包括TRIM管理表,其被配置为管理关于被指定为将被删除的区域的存储区域当中与所述数据存储设备的数据管理单位不匹配的存储区域的信息。
当所述TRIM管理表中管理的存储区域与所述数据存储设备的数据管理单位匹配时,根据来自所述主机的另一TRIM命令,所述映射表可以基于TRIM管理表更新写状态信息(WSI)。
可以更新所述映射表中的WSI,并且可以从所述TRIM管理表删除关于与所述数据存储设备的数据管理单位匹配的存储区域且在所述TRIM管理表中管理的信息。
所述数据存储设备还可以包括缓存,其被配置为存储所述TRIM管理表以及通过推送方案管理存储在所述TRIM管理表中的信息。
所述数据存储设备可以包括缓存,其被配置为存储关于从所述主机传送的至少两个TRIM命令的信息。
所述数据存储设备还可以包括被配置为存储数据的至少两个闪存以及被配置为控制所述至少两个闪存的控制单元。所述控制单元可以控制存储在所述缓存中的至少两个TRIM命令的处理次序,以使所述至少两个闪存并行操作。
根据示范性实施例,提供了一种连接到用户设备的数据存储设备。存储单元被配置为存储数据。缓存被配置为临时存储将写入所述存储单元的数据。控制单元被配置为控制所述存储单元和所述缓存。根据从所述用户设备传送的TRIM命令,被指定为将被删除的区域的存储区域当中与所述存储单元的数据管理单位匹配的存储区域的数据不被写入所述存储单元中。
被指定为将被删除的存储区域当中与所述数据存储设备的数据管理单位不匹配的存储区域的数据可以被写入所述存储单元中。
所述的数据存储设备还可以包括映射表,其被配置为将从所述用户设备提供的逻辑地址改变为所述数据存储设备的物理地址。在所述映射表中,指定为将被删除的区域的存储区域当中与所述存储单元的数据管理单位匹配的存储区域的写状态信息(WSI)可以被标记为无效。在所述映射表中,被指定为将被删除的区域的存储区域当中与所述存储单元的数据管理单位不匹配的存储区域的WSI可以被标记为有效。
所述数据存储设备还可以包括TRIM管理表,其被配置为管理与所述数据存储设备的数据管理单位不匹配并且在所述映射表中被标记为有效的存储区域。
当所述TRIM管理表中管理的存储区域与所述数据存储设备的数据管理单位匹配时,根据来自所述用户设备的另一TRIM命令,所述映射表可以基于TRIM管理表更新写状态信息(WSI)。
所述数据存储设备还可以包括缓存,其被配置为当从所述用户设备传送至少两个TRIM命令时存储关于所述至少两个TRIM命令的信息。
所述存储单元可以包括至少两个闪存,并且所述控制单元可以控制存储在所述缓存中的至少两个TRIM命令的处理次序,以使所述至少两个闪存并行操作。
根据示范性实施例,提供了一种用于将文件的数据存储在数据存储设备中并且具有不同于所述数据存储设备的数据管理单位的数据管理单位的用户设备的数据管理方法。响应于文件删除请求改变被请求删除的文件的元数据。针对关于被请求删除的文件的存储区域的信息是否对应于所述数据存储设备的数据管理单位进行确定。将关于被请求删除的文件的存储区域的信息当中关于与所述数据存储设备的数据管理单位对应的区域的信息发送给所述数据存储设备。
所述改变被请求删除的文件的元数据的步骤可以表示在高层已删除被请求删除的文件。
可以生成TRIM管理表,其被配置为管理关于所述被请求删除的文件的存储区域的信息当中关于与所述数据存储设备的数据管理单位不对应的区域的信息。
可以从所述数据存储设备的映射表提供所述关于被请求删除的文件的存储区域的信息。
根据示范性实施例,提供了一种将文件的数据存储在数据存储设备中的用户设备。文件系统被配置为以不同于所述数据存储设备的数据管理单位的单位来管理文件以及改变关于被请求删除的文件的元数据的信息。TRIM管理模块被配置为提供关于被请求删除的文件的存储区域的信息当中关于与所述数据存储设备的数据管理单位相应的存储区域的信息。
改变关于被请求删除的文件的元数据的信息的步骤可以表示在高层已删除被请求删除的文件。
所述用户设备还可以包括TRIM管理表,其被配置为管理关于所述被请求删除的文件的存储区域的信息当中关于与所述数据存储设备的数据管理单位不对应的区域的信息。
所述用户设备还可以包括主机存储器,其被配置为存储TRIM管理表,其中通过推送方法管理存储在所述主机存储器中的TRIM管理表。
所述用户设备还可以包括主机存储器,其被配置为存储关于被请求删除的至少两个文件的存储区域的信息。
所述TRIM管理模块可以提供关于存储在所述主机存储器中的、所述被请求删除的至少两个文件的存储区域的信息当中关于与所述数据存储设备的数据管理单位相应的区域的信息。
可以从所述数据存储设备的映射表提供关于所述被请求删除的至少两个文件的存储区域的信息。
根据示范性实施例,一种存储系统包括被配置为支持TRIM操作的主机以及被配置为响应于来自主机的TRIM命令执行擦除操作的数据存储设备。所述主机仅提供关于被请求删除的文件的存储区域的信息当中关于与所述数据存储设备的数据管理单位对应的存储区域的信息。
所述主机可以单独管理关于所述被请求删除的文件的存储区域的信息当中关于与所述数据存储设备的数据管理单位不对应的区域的信息。
所述主机可以以扇区为单位管理文件。所述数据存储设备可以以页为单位管理文件的数据。每个页可以划分为多个扇区。
所述主机可以包括被配置为以扇区为单位管理文件并且改变关于被请求删除的文件的元数据的信息的文件系统,以及被配置为选择关于被请求删除的文件的扇区当中关于与所述数据存储设备的页单位相应的扇区的信息的TRIM管理模块。
所述改变关于被请求删除的文件的元数据的信息的步骤可以表示在高层删除被请求删除的文件。
所述主机还可以包括TRIM管理表,该TRIM管理表管理关于所述被请求删除的文件的扇区当中关于与所述页单位不对应的部分扇区的信息。
所述TRIM管理表可以管理关于所述部分扇区的信息以及关于与所述部分扇区在同一页中的扇区的信息。
所述主机还可以包括主机存储器,其被配置为存储关于分别在不同时间被请求删除的至少两个文件的扇区的信息。
所述TRIM管理模块可以从存储在所述主机存储器中的、关于所述分别在不同时间被请求删除的至少两个文件的扇区的信息当中选择与所述数据存储设备的管理单位相应的扇区地址的信息。
根据示范性实施例,提供一种用于闪存系统的数据管理擦除方法,该闪存系统具有被配置为与闪存存储设备通信的主机文件系统。由所述主机文件系统向所述闪存存储设备提供通知闪存存储设备哪些数据块不再考虑使用的TRIM命令。所述TRIM命令包括用于指定已经请求将其删除的文件的扇区地址。所述闪存存储设备接收所述TRIM命令,将所述扇区地址转换为页地址,以及将将被删除的所述闪存存储设备的页标记为无效。由所述闪存设备对所述标记为无效的页执行擦除操作。
可以在没有从所述主机文件系统到所述闪存存储设备的请求存在的空闲时间执行擦除操作。
当由所述主机文件系统接收到文件删除请求时,所述主机文件系统可以改变已经请求将其删除的文件的元数据,以使得当应用随后访问所述主机文件系统的相应文件时,将向所述应用提供表示相应文件已经被删除的信息。
附图说明
附图被包括在内以提供对本发明构思的更进一步理解,并且附图被并入且组成本说明书的一部分。附图连同描述一起示出本发明构思的示范性实施例,用来解释本发明构思的原理。附图中类似的的元素被分配相同的参考标记。
图1和图2是示出根据本发明构思的实施例的存储系统的框图;
图3是示出根据本发明构思的实施例的存储系统的框图;
图4是示出根据本发明构思的实施例的闪存系统的框图;
图5示出为由图4的文件系统管理文件而创建的目录项结构的示范性实施例;
图6是示出图4中的闪存系统的软件层级结构的框图;
图7是详细示出闪存转换层的地址转换操作的框图;
图8是示出利用映射表的地址转换的示范性实施例的框图;
图9是示出在没有TRIM管理表的条件下仅使用映射表来处理TRIM命令的本发明构思的实施例的示意图;
图10和图11是示出使用映射表和TRIM管理表来处理TRIM命令的本发明构思的实施例的示意图;
图12是示出图4的闪存设备在低层的擦除操作的流程图;
图13是示出当在低层执行删除操作时闪存转换层的操作的流程图;
图14至图16是描述当闪存设备支持清洗(flush)功能时闪存设备的TRIM命令处理方法的示意图;
图17是示出根据本发明构思的实施例的闪存设备的不写(unwriting)操作的流程图;
图18至图20是描述收集在不同时间提供的TRIM命令并且在同一时间处理收集的TRIM命令的闪存设备的示意图;
图21至图25是描述当闪存设备包括多个闪存时闪存设备的TRIM命令处理方法的示意图;
图26是示出根据本发明构思的实施例的存储系统的框图;
图27是示出根据本发明构思的实施例的闪存系统的框图;
图28是示出图27的文件系统生成的用于管理文件的目录项结构的视图;
图29是示出图27中的闪存系统的软件层结构的框图;
图30是更详细地示出图27的TRIM管理模块的操作的框图;
图31是更详细地示出图27的FTL的地址转换操作的框图;
图32是示出通过映射表的地址转换的框图;
图33是当闪存系统在没有图27的TRIM管理模块的条件下处理TRIM命令的闪存系统时的视图;
图34至图36是示出通过使用图27的TRIM管理模块生成对齐的扇区地址AlignedSector ADDR并且处理包括对齐的扇区地址的TRIM命令的闪存系统的视图;
图37是当从闪存设备的映射表传递到主机的组信息的流程图;
图38是示出图27的TRIM管理模块的操作的流程图;
图39是主机收集有关分别在不同时间提供的扇区地址的信息并且处理有关收集的扇区地址的信息的视图;
图40是示出当在图39的扇区收集区域收集中收集有关各个不同文件的扇区地址时的操作的流程图;
图41是示出当在空闲时间期间处理收集在图39的扇区收集区域中的扇区地址时的操作的流程图;
图42是当根据本发明构思的实施例的闪存系统被应用于存储卡时的视图;
图43是当根据本发明构思的实施例的闪存系统被应用于SSD时的视图;
图44是示出图43的SSD控制器的配置的框图;以及
图45是当根据本发明构思的实施例的闪存系统在闪存模块中实现时的框图。
具体实施方式
下面将参考附图更详细地描述本发明构思的示范性实施例。然而,本发明构思可以以不同形式具体实现而且不应当将本发明构思理解为限于这里阐述的实施例。
I.支持TRIM(整理)操作的存储系统
在计算中,TRIM(整理)命令允许操作系统通知固态设备(SSD)哪些数据块将不再考虑使用并且能够被内部地擦去。尽管TRIM(整理)经常以大写字母来拼写,但它并不是一个首字母缩拼词。它仅仅是一个命令名称。TRIM是在SSD开始变为传统硬盘的人们负担得起的替换物之后不久引入的。因为SSD的低层操作与传统硬盘的低层操作显著不同,因此操作系统处理像删除和格式化这样的操作的典型方式(不显式(explictly)地将所牵涉的扇区/页传达给底层存储介质)导致SSD上的写操作的性能意想不到地逐渐变差。
图1和图2是根据本发明构思的实施例的存储系统10、20的框图。
参考图1和图2,存储设备12存储由主机11写入的数据。存储设备12将数据提供给主机11,这些数据由主机11读取。在这种情况下,主机11中用于管理文件的单位可能不同于存储设备12中用于管理数据的单位。主机11和存储设备12中的管理单位之间的这种不匹配会使存储系统10的性能恶化。
根据本发明构思的示范性实施例的存储系统包括用于单独管理不匹配区域的元素。在一个示范性实施例中,存储设备12可以包括如图1中所示的TRIM管理表13。在一个示范性实施例中,主机11可以包括如图2所示的TRIM管理模块14。
在图1中,存储设备10包括TRIM管理表13,将在下面参考图3至图25对其更详细地描述。在图2中,主机11包括TRIM管理模块14,将在下面参考图26至图41对其更详细地描述。
图3是示出根据本发明构思的实施例的存储系统100的框图。
参考图3,存储系统100包括主机110和存储设备120。存储设备120包括控制单元121和存储单元122。
主机110支持TRIM操作。TRIM操作表示当从用户输入对特定文件的删除请求时主机110仅处理用于相应文件的元数据。在这种情况下,因为仅仅处理主机110的元数据而实质上没有删除存储在存储单元122中的数据,所以用户可能认为对相应文件的删除操作被迅速地执行。
为了实质上删除存储在存储单元122中的数据,主机110向存储设备120提供TRIM命令。TRIM命令包括用于存储实质上将被删除的区域的信息(举例来说,地址信息)。响应于TRIM命令,控制单元121对存储在存储单元121中的数据执行擦除操作。TRIM命令也可以用其它名称描述,诸如解除分配命令、不写(unwrite)命令、删除命令和文件删除命令。
主机110中用于管理文件的单位可能不同于存储设备120中用于管理存储在存储单元122中的数据的单位。举例来说,主机110可以以硬盘中的扇区为单位来管理文件。在计算机硬盘存储器中,扇区是磁盘或者光盘上轨道的细分。每个扇区存储固定量的用户数据。另一方面,存储设备120可以以闪存中的页和/或块为单位来管理存储在存储单元122中的数据。
主机110和存储设备120中的管理单位(management unit)之间的不匹配会使存储系统100的性能变差。举例来说,当响应于来自主机110的TRIM命令执行了对存储在存储单元122中的数据的擦除操作时,管理单位之间的不匹配可能导致有效数据的复制以及组合或者联合数据集合的大规模合并操作。因此,存储设备120的服务寿命被缩短,并且存储设备120的性能降低。
根据本发明构思的示范性实施例的存储设备120包括TRIM管理模块123。TRIM管理模块123单独管理被指定为实质上将根据来自主机110的TRIM命令被删除的存储单元122的区域当中、与存储设备120的管理单位不匹配的区域。通过利用TRIM管理模块123来关注主机110与存储设备120之间的管理单位不匹配,根据本发明构思的实施例的存储系统100能够防止存储设备120的服务寿命被缩短以及存储设备120的性能变差。
II.用于处理TRIM命令的闪存系统的闪存设备(flash storage device)
图4是示出根据本发明构思的示范性实施例的闪存系统1000的框图。在图4中,存储设备1200被示出为图3中的存储设备120的示范性实施例。
参考图4,闪存系统1000包括主机1100和闪存设备1200。在示范性实施例中,主机1100以扇区为单位管理文件,而闪存设备1200以页为单位管理存储在闪存1210中的数据。闪存设备1200通过利用闪存转换层(FTL)1232的TRIM管理表,来关注主机1100和闪存设备1200之间的管理单位不匹配。
主机1100包括处理单元1110和驱动单元1120。处理单元1110(举例来说,中央处理单元(CPU))控制主机1100的整体操作,并且驱动单元1120根据处理单元1110的控制驱动闪存设备1200。驱动单元1120可以被配置为具有用于驱动主机1100的软件程序的主存储器。
驱动单元1120包括应用1121、文件系统1122、设备驱动器1123和主机存储器1124。应用1121是在操作系统(OS)上运行的应用软件程序。举例来说,应用1121被编程为支持生成和删除文件。
文件系统1122管理由主机1100管理的文件。在一个示范性实施例中,文件系统1122以硬盘中的扇区为单位管理主机1100中使用的文件,该扇区是应用1121可访问的最小数据管理单位,并且在一个示范性实施例中,其大小为512B(字节)。
当应用1121请求删除特定文件时,文件系统1122改变已经请求将其删除的文件的元数据。随后,当应用1121访问相应文件时,文件系统1122基于改变的元数据提供指示“相应文件已经删除”的信息。
相应于存储在闪存1210中并且已经请求将其删除的文件的数据没有被删除,这是因为文件系统1122仅仅改变了文件的元数据(举例来说,文件名,等等)。因此,处理单元1110向闪存设备1200提供TRIM命令,以便实质上删除存储在闪存1210中的数据。将在下面参考图5更详细地描述文件系统1122及其目录项(directory entry)结构.
设备驱动器1123是使闪存设备1200能够与主机1100通信的程序。为了使用闪存设备1200,适用于闪存设备1200的设备驱动器1123安装在主机1100中。主机存储器1124可以临时存储写入闪存设备1200或者从闪存设备1200读出的数据。而且,主机存储器1124可以用作驱动应用1121、文件系统1122和设备驱动器1123的工作存储器。
在本发明构思的一个实施例中,闪存设备1200从主机1100接收TRIM命令。TRIM命令包括用于指定将删除的区域的信息(举例来说,已经请求将其删除的文件的扇区地址)。闪存设备1200将闪存1210的区域当中已经请求将其删除的区域标记为无效。
闪存设备1200在空闲时间(举例来说,当没有来自主机的请求时获取的控制单元1230的空闲时间)对标记为无效的区域执行擦除操作。
仍然参考图4,闪存设备1200包括闪存1210、缓存1220和控制单元1230。
闪存1210根据控制单元1230的控制来执行擦除操作、读操作或者写操作。闪存1210被配置为具有多个存储块。存储块中的每一个都被配置为具有多个页。如图4的示范性实施例中所示,存在三个存储块1211、1212、1213,每个存储块具有四个页。
每一页的大小大于扇区的大小。也就是说,每个页可以划分为多个扇区。在示范性实施例中,每个页大小可以为大约2KB(字节),而扇区的大小为512B(字节)。闪存1210以存储块为单位执行擦除操作,并且以页为单位执行写操作或者读操作。
一个或者更多比特的数据可以存储在闪存1210的一个存储单元中。存储1比特数据的存储单元被称作单级单元(Single Level Cell,SLC)或者单比特单元。存储2比特或者更多比特数据的存储单元被称作多级单元(Multi Level Cell,MLC)或者多比特单元。
缓存1220可以临时存储从闪存1210读取的或者由主机1100提供的数据。而且,缓存1220可以用于驱动诸如FTL之类的固件。缓存1220可以由动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、磁阻随机存取存储器(MRAM)和相变随机存取存储器(PRAM)实现。
仍然参考图4,控制单元1230包括CPU1231、FTL1232、闪存控制器1233和缓存控制器1234。CPU1231分析并且处理从主机1100输入的信号。CPU1231控制闪存设备1200的整体操作。
闪存转换层1232将从主机1100提供的逻辑地址(LA)转换为闪存1210中的物理地址(PA)。举例来说,闪存转换层1232将从主机接收到的扇区地址转换为闪存1210中的页地址。
而且,举例来说,FTL1232以页为单位管理存储在闪存1210中的数据。当通过来自主机1100的TRIM命令请求删除存储在某页中的全部数据时,FTL1232将相应页标记为无效。
当通过来自主机1100的TRIM命令请求仅删除存储在某页中的一部分数据时,FTL1232将映射表的相应页标记为有效。在这种情况下,FTL1232可以单独管理该相应页。为此,FTL1232可以包括TRIM管理表。TRIM管理表对这样的页进行管理:已经请求仅删除存储在该页中的一部分数据。
TRIM管理表可以存储在缓存1220中。在这种情况下,缓存1220的区域当中分配给TRIM管理表的区域的大小可以变化。举例来说,分配给TRIM管理表的区域的大小可以限定为某一大小,以便基于页管理来降低控制单元1230的开销。
当分配给TRIM管理表的区域的大小限定为某一大小时,有关TRIM管理表管理的页的信息的大小可能超出所分配的区域的大小。在这种情况下,有关TRIM管理表的页的信息可以通过推送方案(push scheme)管理,其中可以将有关在TRIM管理表中管理的页的信息当中最旧的页的信息删除,并且可以管理新请求的页的信息。
将在下面参考图7至图11更详细地描述FTL1232及其页管理方法。
图5示出为由图4的文件系统1122管理文件而创建的目录项结构的示范性实施例。
参考图5,目录项结构可以包括文件名、扩展名、属性、创建日期、创建时间、开始扇区的信息以及文件大小的信息。
当由应用1121(参见图4)请求删除特定文件时,文件系统1122(参见图4)改变已经请求将其删除的文件的元数据。举例来说,文件系统1122将十六进制字节代码‘E5h’排列在已经请求将其删除的文件中。另举一例,文件系统1122将已经请求将其删除的文件的属性值改变为‘0xE5’。作为一个特定标签的‘0xE5’表示“此文件已经删除”。随后,当应用1121访问相应文件时,文件系统1122提供指示相应文件已经删除的信息。有关文件系统1122的信息可以周期性地或者利用空闲时间存储在非易失性存储器(举例来说,闪存1210)中。
可以根据闪存系统1000(参见图4)的OS选择文件系统1122。举例来说,当闪存系统1000的OS是盘OS(disk OS,DOS)或者基于视窗(windows)的OS时,可以使用诸如文件分配表(FAT)文件系统、虚拟FAT(VFAT)文件系统、扩展的FAT(exFAT)文件系统或者新技术文件系统(NTFS)这样的文件系统。
根据示范性实施例,当闪存设备1000的OS是基于UNIX的OS时,可以使用UNIX文件系统(UFS)。当闪存设备1000的OS是基于LINUX的OS时,可以使用针对LINUX的文件系统。当闪存设备1000的OS是移动OS——例如iOS操作系统(也即,针对iPhone/iPad以及androidOS的OS)时,可以使用针对移动OS的文件系统。UNIX是工业标准协会The Open Group的商标。LINUX是Linus Torvalds的商标。iOS是Cisco System的商标。iPhone是Cisco System以及Apple公司之间协议之下的商标。iPad是Apple公司的商标。
图6是示出图4中的闪存系统1000的软件层级结构的框图。
参考图6,闪存系统1000的软件层级结构被配置为具有应用1121、文件系统1122、FTL1232和闪存1210。主机1100(参见图4)的应用1121和文件系统1122可以称作高层。闪存设备1200(参见图4)的FTL1232和闪存1210可以称作低层。
应用1121传送文件删除请求到文件系统1122。文件系统1122改变已经请求将其删除的文件的元数据。例如,文件系统1122将‘E5h’排列在文件名(参见图5)中。随后,当应用1121访问相应文件时,文件系统1122提供指示相应文件已经删除的信息。来自应用1121的文件删除请求和按照请求对文件系统1122的元数据的改变可以称作在高层的删除操作。
文件系统1122提供TRIM命令到FTL1232,以便实质上删除存储在闪存1210中的数据。TRIM命令包括用于指定已经请求将其删除的文件的扇区地址信息。FTL1232将扇区地址转换为页地址,并且将闪存1210的将被删除的页标记为无效。
闪存1210在空闲时间对标记为无效的页执行擦除操作。例如,空闲时间表示当没有从主机1100(参见图4)到控制单元1230(参见图4)的请求时的时间。众所周知,因为闪存1210以块为单位来执行擦除操作,所以对于闪存1210的页的擦除操作可以伴随数据的复制和合并以及块擦除操作。FTL1232的标记操作以及闪存1210的擦除操作可以称作在低层的删除操作。
图7是详细示出FTL1232的地址转换操作的框图。
参考图7,FTL1232接收扇区地址——其是一个逻辑地址,并且将扇区地址转换为闪存1210中的页地址——其是一个物理地址。
FTL1232的地址转换可以利用映射表执行。映射方案(mapping scheme)典型地被分类为页映射方案和块映射方案。页映射方案以页为单位(例如,2KB)执行地址转换,块映射方案以块为单位(例如,1MB)执行地址转换。
当从相应于高层的应用1121或者文件系统1122看时,FTL1232的地址转换使闪存1210中执行的读、写和擦除操作能够显示为硬盘的读、写和擦除操作。也就是说,FTL1232执行仿真功能。
仍然参考图7,FTL1232可以包括TRIM管理表。当已经请求了仅删除存储在页中的一部分数据时,TRIM管理表单独管理相应页。将在下面参考图9至图11更详细地描述使用映射表和TRIM管理表的在低层的删除操作。
图8是示出利用映射表的地址转换的示范性实施例的框图。在图8中,依照示范性实施例,通过页映射方案执行地址转换。
参考图8,映射表将扇区地址(其是逻辑地址)映射到页地址(其是物理地址)。依照示范性实施例,四个扇区被映射到一页。例如,如图8中所示,第一到第四扇区(扇区1到扇区4)被映射到页3。
映射表利用写状态信息(WSI)示出存储为页的数据是否是有效数据。例如,WSI中的标记‘v’指示存储在页中的数据是有效数据。
在示范性实施例中,闪存1210的块1211中的页(页0到页3)中的每一页都被划分为四个子页(子页0到子页3)。依照示范性实施例,每个子页和每个扇区大小相同,每个子页相应于每个扇区。例如,如图8所示,依照示范性实施例,第三页(页3)被划分为四个子页(子页0到子页3),子页中的每一个相应于第一到第四扇区(扇区1到扇区4)。
在图9至图11中,并且也在图8中示出,在示范性实施例中,作为有效数据的三个文件(文件1到文件3)被存储在块1211的第一到第三页(页1到页3)。
图9是示出在没有TRIM管理表的条件下仅使用映射表来处理TRIM命令的发明构思的实施例的图。依照示范性实施例,提供了包括图8中第一文件(文件1)的地址信息的TRIM命令。也就是说,在低层请求删除第一文件(文件1)。
参考图9,从主机1100提供TRIM命令。TRIM命令包括将被删除的文件的扇区地址。有关扇区地址的信息可以提供为开始扇区号以及扇区的数目。例如,因为第一文件(文件1)相应于第一至第五扇区(扇区1至扇区5),所以开始扇区号可以是1并且扇区的数目可以是5。
当从主机1100提供TRIM命令时,FTL1232(参见图4)更新映射表的WSI。也就是说,相应于接收到的扇区地址的页的WSI被标记为无效。在示范性实施例中,图9的WSI中的标记‘x’表示存储在相应页中的数据是无效数据。
在图9中,第一文件(文件1)相应于第一至第五扇区(扇区1至扇区5)。在这种情况下,因为第一文件(文件1)的第一至第四扇区(扇区1至扇区4)相应于第三页(页3),所以关于映射表的第三页(页3)的WSI被标记为无效。而且,因为第一文件(文件1)的第五扇区(扇区5)相应于第二页(页2),所以第二页(页2)的WSI被标记为无效。例如,在控制单元1230(参见图4)的空闲时间期间执行对标记为无效的第二页和第三页(页2和页3)的擦除操作。
与第一文件(文件5)的第五扇区(扇区5)相应的数据存储在第二页(页2)的子页(0)中,与第二文件(文件2)的第六至第八扇区(扇区6至扇区8)相应的数据存储在第二页(页2)的子页(1至3)中。
因此,当根据针对第一文件(文件1)的TRIM命令将第二页(页2)更新为无效时,第二文件(文件2)的有效数据可能被一起删除。为了防止第二文件(文件2)的数据被删除,闪存1210将存储在第二页(页2)的子页(1至3)中的数据复制到另一页(例如,其它块1212(参见图4)的页)。
由于写次数的增加而造成这些复制操作会缩短闪存1210的服务寿命。而且,存储通过复制操作而生成的有效数据的新页会增加生成自由块(free block)的合并操作。因此,根据本发明构思的示范性实施例的闪存设备1200通过TRIM管理表单独管理第二页(页2)。这将在下面参考图10和图11更详细地描述。
图10和图11是示出使用映射表和TRIM管理表来处理TRIM命令的发明构思的实施例的图。如图9中所示,依照示范性实施例,提供了包括第一文件(文件1)的地址信息的TRIM命令。
参考图10,闪存设备1200通过使用映射表和TRIM管理表处理来自主机1100的TRIM命令。当从主机1100接收到的扇区地址与闪存1210的页单位匹配时,映射表管理相应页。当从主机1100接收到的扇区地址与闪存1210的页单位不匹配时,TRIM管理表管理相应页。
包括第一文件(文件1)的扇区地址的TRIM命令被提供给闪存设备1200。在这种情况下,第一文件(文件1)的第一至第四扇区(扇区1至扇区4)与闪存1210的页单位匹配。也就是说,第一至第四扇区(扇区1至扇区4)与第三页(页3)匹配。因此,FTL1232(参见图4)将关于映射表的第三页(页3)的WSI更新为无效。
第一文件(文件1)的第五扇区(扇区5)与闪存1210的页单位不匹配。也就是说,第五扇区(扇区5)仅相应于第二页(页2)中的子页(0到3)的子页(0)。换句话说,存储在第二页(页2)的子页(0到3)中的数据当中只有存储在子页(0)中的数据是无效数据。
在这种情况下,FTL1232将关于映射表的第二页(页2)的WSI保持为有效。因此在空闲时间(例如,控制单元1230的空闲时间)不执行对于标记为有效的第二页(页2)的擦除操作,仅执行对于标记为无效的第三页(页3)的擦除操作。利用TRIM管理表来单独管理第二页(页2)。
TRIM管理表单独管理第二页(页2)。也就是说,当从主机1100接收到的扇区地址与闪存1210的页单位不匹配时TRIM管理表管理相应页。换句话说,TRIM管理表管理多页当中包括一部分无效数据的页。
仍然参考图10,例如,因为第五扇区(扇区5)相应于第二页(页2)的子页(0),所以存储在第二页(页2)的子页(0)中的数据是无效数据。因此,TRIM管理表将第二页(页2)的子页(0到3)当中的子页(0)的WSI标记为无效。
当由TRIM管理表管理的页的全部子页都更新为无效时,FTL1232将映射表的相应页更新为无效。在这种情况下,相应页的信息被从TRIM管理表中删除。这将在下面参考图11更详细地描述。
在图11中,依照示范性实施例,包括第二文件(文件2)的扇区地址的TRIM命令被提供给闪存设备1200。也就是说,依照示范性实施例,在低层提供对第二文件(文件2)的删除请求。在这种情况下,因为第二文件(文件2)相应于第六至第八扇区(扇区6至扇区8),所以开始扇区号可以是6并且扇区的数目可以是3。
当提供对于第二文件(文件2)的TRIM命令时,第二文件(文件2)的第六至第八扇区(扇区6至扇区8)与闪存1210的页单位不匹配。也就是说,第六至第八扇区(扇区6至扇区8)仅相应于第二页(页2)的子页(0至3)当中的子页(1至3)。因此,FTL1232将映射表的第二页(页2)保持为有效。在这种情况下,由TRIM管理表单独管理第二页(页2)。
因为第二文件(文件2)的第六至第八扇区(扇区6至扇区8)相应于第二页(页2)的子页(1至3),所以TRIM管理表将关于第二页(页2)的子页(1至3)的WSI更新为无效。在这种情况下,存储在第二页(页2)的子页(0)中的数据已经根据对第一文件(文件1)的TRIM命令被置为无效状态。因此,存储在第二页(页2)中的所有数据根据对第一和第二文件(文件1和文件2)的TRIM命令都被置为无效状态。
因为存储在第二页(页2)中的全部数据都处于无效状态,所以FTL1232将关于映射表的第二页(页2)的WSI更新为无效。因此,在随后的空闲时间(例如,控制单元1230的空闲时间)执行对于第二页(页2)的擦除操作。然而,第二页(页2)的信息被从TRIM管理表中删除。
如上所述,映射表将包括一部分无效数据的页的WSI保持为有效。因此,不执行对于将存储在相应页中的有效数据复制到另一块的页的操作。这表示可以防止由于有效数据的复制操作而造成的合并操作。
在这种情况下,TRIM管理表管理包括一部分无效数据的页。当存储在由TRIM管理表管理的页中的全部数据都处于无效状态时,映射表中针对相应页的WSI被更新为无效。因此,闪存1210可以在低层仅对于从主机1100接收到的扇区地址当中与页单位匹配的扇区地址执行擦除操作。
可以选择限制缓存1220(参见图4)当中分配给TRIM管理表的存储器的大小。在这种情况下,关于在TRIM管理表中管理的页地址的信息的大小可以不超出分配给缓存1220的大小。
当关于在TRIM管理表中管理的页的信息的大小超出分配给缓存1220的大小时,可以通过推送方案管理关于在TRIM管理表中管理的页的信息的大小。
例如,依照示范性实施例,在TRIM管理表中管理第一至第三页(页1至页3)的信息。而且,属于另一块的第四页(页4)的信息需要在TRIM管理表中进行管理,并且当第四页(页4)的信息被管理时,依照示范性实施例,关于在TRIM管理表中受到管理的页的信息的大小超出分配给TRIM管理表的区域的大小。在这种情况下,FTL1232可以从TRIM管理表中删除最旧的第一页的信息,并且在TRIM管理表中管理第四页(页4)的信息。
图12是示出图4的闪存设备在低层的擦除操作的流程图。
在操作S11中,主机1100(参见图4)提供TRIM命令给闪存设备1200。TRIM命令包括指定闪存1210(参见图4)的区域当中将被执行擦除操作的区域的信息(例如,扇区地址信息)。
在操作S12中,FTL1232(参见图4)的映射表和TRIM管理表被更新。例如,当从主机1100接收到的扇区地址与闪存1210的页单位匹配时,映射表中针对相应页的WSI被标记为无效。另举一例,当从主机1100接收到的扇区地址与闪存1210的页单位不匹配时,映射表中针对相应页的WSI被标记为有效,并且该相应页由TRIM管理表管理。
在操作S13中,执行依照映射表的擦除操作。也就是说,当映射表中的WSI处于无效状态时,执行对于相应页的擦除操作。众所周知,闪存1210的擦除操作是以块为单位执行的,因此闪存1210可以伴随对于相应页的复制和/或合并操作。
图13是示出当在低层执行删除操作时FTL1232(参见图4)的操作的流程图。
在操作S1100中,将被删除的文件的扇区地址被传送到FTL1232。例如,扇区地址被提供为开始扇区号和扇区的数目。
在操作S1200中,对于传送的扇区地址是否是部分扇区地址进行确定。这里,部分扇区地址表示与闪存1210(参见图4)的页单位不匹配的扇区地址。
当传送的扇区地址不是部分扇区地址(也即,传送的扇区地址与页单位匹配)时,FTL1232在操作S1300中更新映射表的WSI。也就是说,与传送的扇区地址相应的页的WSI被更新为无效。当传送的扇区地址是部分扇区地址(也即,传送的扇区地址与页单位不匹配)时,执行操作S1400。
在操作S1400中,对于与部分扇区地址相应的TRIM管理表是否存在进行确定。当TRIM管理表不存在时,FTL1232在操作S1500中创建TRIM管理表,其管理与部分扇区地址相应的页。
当TRIM管理表存在时,FTL1232在操作S1600中更新TRIM管理表中的WSI。也就是说,与部分扇区地址相应的子页的WSI被更新为无效。
在操作S1700中,对于TRIM管理表中的全部WSI是否都被更新进行确定。也就是说,确定关于某页的子页的全部WSI都被更新为无效。当全部WSI都被更新为无效时,FTL1232在操作S1800中更新映射表中的WSI。也就是说,映射表中与相应页对应的WSI被更新为无效。
如上所述,根据本发明构思的实施例的闪存系统1000支持TRIM操作。也就是说,当请求删除某文件时,主机1100改变文件系统1122的元数据并且通知用户相应文件已经被删除,并且根据TRIM命令在闪存设备1200中执行实质删除操作。
在这种情况下,闪存设备1200利用TRIM管理表解决主机1100和闪存设备1200之间的管理单位不匹配的问题。因此,闪存设备1200能够防止由于管理单位不匹配而发生的存储在页中的数据的复制操作。结果,能够防止闪存设备1200的服务寿命缩短以及性能降低。
如上所述,依照示范性实施例,文件(文件1到文件3)的数据存储在闪存1210的页中。当闪存设备1200不支持清洗操作时,文件(文件1到文件3)的数据可以存储在缓存1220(参见图4)中。在下文中,当闪存设备1200支持清洗操作时,将详细描述根据本发明构思的示范性实施例的TRIM命令的处理方法。
III.支持清洗(flush)功能的闪存设备
典型地,将存储在缓存的扇区中的全部或者部分数据分别写入闪存的页中的操作称作清洗操作。
图14至图16是描述当闪存设备支持清洗功能时闪存设备的TRIM命令处理方法的示意图。除了支持清洗操作之外,将在下面描述的闪存设备类似于图4的闪存设备1200。因此,在下文中,同样的参考标号指代同样的元素。
图14是示出利用映射表的缓存1220和闪存1210之间的地址转换的图。依照示范性实施例,缓存1220的每个扇区的大小都与文件系统1122(参见图4)的管理单位的扇区的大小相同。
参考图14,缓存1220包括多个扇区。缓存1220的扇区临时存储数据。存储在缓存1220的扇区中的数据根据控制单元1230(参见图5)的控制分别写入闪存1210的块1211的页中。存储在缓存1220的扇区中的全部或者部分数据被分别写入闪存1210的页中的操作可以称作清洗操作。
例如,当缓存1220的自由空间(free space)不够时,存储在缓存1220的扇区中的全部或者部分数据可以被分别写入闪存1210的页中。另举一例,在控制单元1230(参见图4)的空闲时间(当没有来自主机1100的请求时获取的时间),存储在缓存1220的扇区中的全部或者部分数据可以被分别写入闪存1210的页中。
闪存1210的块1211中的每一页(页0到页3)都被划分为四个子页(子页0到子页3)。依照示范性实施例,闪存1210的每个子页的大小与缓存1220的扇区的大小相同。也就是说,依照示范性实施例,四个扇区相应于一页。
映射表将缓存1220的扇区地址映射到闪存1210的页地址。图14中映射表中的标记‘BSA’表示缓存1220的扇区地址。例如,缓存1220的第一到第四扇区(扇区S1到扇区S4)被映射到闪存1210的第三页(页3)。依照示范性实施例,三个文件(文件1到文件3)作为有效数据存储在缓存1220的扇区S1到S12。
当从主机1100提供TRIM命令时,根据本发明构思的实施例的闪存设备1200使已经请求将其删除的文件的数据被从缓存1220写到闪存1210无效。也就是说,闪存设备1200更新映射表中的WSI,并且由此防止存储在缓存1220中的数据被写入闪存1210中。
防止数据从缓存1220写到闪存1210的操作可以称作不写操作(unwritingoperation)。在这种情况下,包括在TRIM命令中的地址信息指定将被不写的区域。因此,TRIM命令可以称作不写命令。将在下面参考图15和图16更详细地描述执行不写操作的本发明构思的实施例。
图15是示出在没有TRIM管理表的条件下仅使用映射表来处理TRIM命令的发明构思的实施例的示意图。依照示范性实施例,提供了包括第一文件(文件1)的扇区地址信息的TRIM命令。而且,依照示范性实施例,从主机1100提供的扇区地址等于缓存1220的扇区地址。
参考图15,从主机1100提供TRIM命令。TRIM命令包括将被删除的文件的扇区地址。关于扇区地址的信息可以提供为开始扇区号以及扇区的数目。例如,因为第一文件(文件1)的数据存储在缓存1220的第一至第五扇区(扇区1至扇区5),所以开始扇区号可以是1,并且扇区的数目可以是5。
当由主机1100提供TRIM命令时,FTL1232(参见图4)更新映射表的WSI。也就是说,FTL1232将与已经请求对其不写的缓存1220的扇区对应的页的WSI标记为无效。例如,因为第一文件(文件1)的数据存储在缓存1220的第一到第五扇区(扇区1到扇区5)中,所以FTL1232将映射表中与第一到第五扇区(扇区1到扇区5)对应的WSI标记为无效。
在这种情况下,缓存1220的第一到第四扇区S1到S4相应于第三页(页3),第五扇区S5相应于第二页(页2)。因此,映射表中关于第二和第三页(页2和页3)的WSI被标记为无效。随后不对被标记为无效的第二和第三页(页2和页3)执行清洗操作。也就是说,存储在缓存1220的第一到第八扇区S1到S8的数据不被写入闪存1210的第二和第三页(页2和页3)中。
第二文件(文件2)的数据存储在缓存1220的第六到第八扇区S6到S8中。因此,当根据对于第一文件(文件1)的TRIM命令将第二页(页2)标记为无效时,第二文件(文件2)的有效数据可能未被写入闪存1210中。这表示第二文件(文件2)的数据在缓存1220是易失性存储器(例如,DRAM)时可能会丢失。
根据本发明构思的示范性实施例的闪存设备1200通过TRIM管理表单独管理第二页(页2)。这将在下面参考图16更详细地描述。
图16是示出仅使用映射表和TRIM管理表来处理TRIM命令的本发明构思的实施例的示意图。如图15中所示,依照示范性实施例,提供了包括第一文件(文件1)的地址信息的TRIM命令。
参考图16,闪存设备1200通过映射表和TRIM管理表处理来自主机1100的TRIM命令。
包括第一文件(文件1)的扇区地址的TRIM命令被提供给闪存设备1200。也就是说,对于存储在缓存1220的第一到第五扇区(扇区1到扇区5)中的数据的不写命令被提供给闪存设备1200。
在这种情况下,第一至第四扇区S1至S4与闪存1210的页单位匹配。也就是说,第一至第四扇区S1至S4与第三页(页3)匹配。因此,FTL1232(参见图4)将关于映射表的第三页(页3)的WSI更新为无效。
第五扇区S5与闪存1210的页单位不匹配。也就是说,第五扇区S5仅相应于第二页(页2)中的子页(0到3)当中的子页(0)。在这种情况下,FTL1232将映射表中关于第二页(页2)的WSI保持为有效。因此存储在第五至第八扇区S5至S8中的被标记为有效的数据在空闲时间期间被写入第二页(页2)中。因为第二页(页2)包括一部分无效数据,所以TRIM管理表单独管理第二页(页2)。
仍然参考图16,TRIM管理表管理第二页和第二页的子页。也就是说,因为存储在第二页(页2)的子页(0到3)当中的子页(0)中的数据是无效数据,所以TRIM管理表将子页(0)的WSI标记为无效。
在对存储在第一到第四扇区S1到S4中的数据执行清洗操作之前可以提供对于第二文件(文件2)的TRIM命令。参考图14,第二文件(文件2)存储在缓存1220的第六到第八扇区S6到S8,并且第六到第八扇区S6到S8相应于第二页(页2)的子页(1至3)。
因此,当提供了对于第二文件(文件2)的TRIM命令时,TRIM管理表中的第二页(页2)的子页(1到3)被更新为无效。此时,FTL1232将映射表中关于第二页(页2)的WSI更新为无效。结果,当随后执行清洗操作时,存储在第一到第八扇区S1到S8中的数据可以不被写入闪存1210中。
图17是示出根据本发明构思的实施例的、闪存设备1200的不写操作的流程图。
在操作S21中,从主机1100提供TRIM命令给闪存设备1200。TRIM命令包括缓存1220的扇区当中将不被写入闪存1210中的扇区的地址信息。因此,TRIM命令可以称作不写命令。
在操作S22中,FTL1232的映射表和TRIM管理表被更新。例如,当包括在TRIM命令中的扇区地址与闪存1210的页单位匹配时,映射表中针对相应页的WSI被标记为无效。另举一例,当包括在TRIM命令中的扇区地址与闪存1210的页单位不匹配时,映射表中针对相应页的WSI被标记为有效,并且相应页由TRIM管理表管理。
在操作S23中,执行基于映射表的不写操作。也就是说,当映射表中的WSI处于无效状态时,存储在相应缓存的扇区中的数据不被写入闪存1210的页中。被更新的映射表和TRIM管理表中的WSI类似于对图13的描述,并且由此将不提供对其的详细说明。
如上所述,根据本发明构思的实施例的闪存系统1000支持不写操作。在这种情况下,闪存设备1200通过使用TRIM管理表解决主机1100和闪存设备1200之间的管理单位不匹配的问题。因此,闪存设备1200能够防止由于管理单位不匹配而造成的缓存1220的有效数据不被写。
闪存设备1200可以利用时间差从主机1100接收多个TRIM命令。在这种情况下,闪存设备1200可以收集TRIM命令并且在空闲时间在同一时间(at one time)处理收集到的TRIM命令。这将在下面参考图18至图20更详细地描述。
Ⅳ.收集TRIM命令的闪存设备
图18至图20是描述收集在不同时间提供的TRIM命令并且在同一时间处理所收集的TRIM命令的闪存设备的图。除了收集TRIM命令之外,将在下面描述的闪存设备类似于图4的闪存设备1200。因此,以下的描述将集中在与图4的闪存设备1200的差异上。而且,同样的参考标记指代同样的元素。
参考图18,第一至第三TRIM命令TRIM cmd_1、TRIM cmd_2、TRIM cmd_3被提供给闪存设备1200的控制单元1230。依照示范性实施例,第一至第三TRIM命令TRIM cmd_1、TRIMcmd_2、TRIM cmd_3在不同时间被提供给控制单元1230。
缓存1220包括用于收集所提供的TRIM命令的TRIM收集区域。控制单元1230将第一至第三TRIM命令TRIM cmd_1、TRIM cmd_2、TRIM cmd_3临时存储在缓存1220的TRIM收集区域中,并且之后在控制单元1230的空闲时间(例如,当没有来自主机1100的请求时的时间)处理已经收集的第一到第三TRIM命令TRIM cmd_1、TRIM cmd_2、TRIM cmd_3。
控制单元1230的CPU1231分析接收到的命令。当接收到的命令是TRIM命令时,CPU1231将包括在TRIM命令中的信息(例如,开始扇区号)以及扇区的数目传送给缓存控制器1234。缓存控制器1234将包括在TRIM命令中的信息存储在缓存1220的TRIM收集区域中。随后,闪存设备1232基于存储在TRIM收集区域中的信息,在空闲时间更新映射表和TRIM管理表。
图19是示出将多个TRIM命令存储在缓存中的操作的流程图。
在操作S31中,控制单元1230(参见图18)接收TRIM命令TRIM cmd。在操作S32中,控制单元1230将接收到的TRIM命令的信息存储在缓存1220的TRIM收集区域中。随后,当接收到另一TRIM命令时,控制单元1230将包括在TRIM命令中的信息连续存储在TRIM收集区域中。
图20是示出在空闲时间处理收集到的TRIM命令的操作的流程图。
在操作S41中,生成TRIM命令处理信号(TCP)。例如,当在一定时间内没有来自主机1100(参见图4)的命令时,控制单元1230的CPU1231生成TRIM命令处理信号(TCP)。
在操作S42中,更新映射表和TRIM管理表。例如,FTL1232(参见图4)响应于TRIM命令处理信号(TCP)向缓存控制器1234(参见图4)请求在TRIM收集区域中收集到的信息。
缓存控制器1234将在缓存1220的TRIM收集区域中收集到的关于TRIM命令的信息传送给FTL1232。FTL1232基于传送的信息更新映射表和TRIM管理表。更新的映射表和TRIM管理表中的WSI类似于图13的描述,并且因此将不提供对其的详细说明。
如上所述,根据本发明构思的实施例的闪存设备1200可以收集缓存1220中TRIM命令的信息,并且在空闲时间在同一时间处理所收集的信息。
在图4至图20,假定闪存设备1200包括一个闪存。然而,这仅仅是一个例子,本发明构思不局限于此。例如,闪存设备1200可以包括多个闪存。在图21至图25中,将在下面更详细地描述包括多个闪存的闪存设备。
V.具有多个闪存的闪存设备
图21至图25是描述当闪存设备包括多个闪存时闪存设备的TRIM命令处理方法的图。将在下面描述的闪存设备类似于图4和图18的闪存设备1200。因此,以下的描述将集中在与图4和图18的闪存设备1200的差异上。而且,同样的参考标记指代同样的元素。
闪存设备1200可以包括多个闪存。而且,如上参考图18所述,闪存设备1200可以收集TRIM命令的信息。根据本发明构思的实施例的闪存设备1200可以将收集的TRIM命令的次序重置,并且根据重置后的次序处理TRIM命令。因此,闪存设备1200可以针对闪存并行地处理TRIM命令。
图21是示出具有多个闪存的闪存设备1200的示范性实施例的示意图。在图21中,在示范性实施例中,依照示范性实施例,闪存设备1200包括两个闪存1210、1240。
参考图21,第一闪存1210通过第一通道CH1连接到控制单元1230,第二闪存1240通过第二通道CH2连接到控制单元1230。依照示范性实施例,闪存中的每一个都包括四个页。
如上参考图18所述,缓存1220包括TRIM收集区域。多个TRIM命令的信息存储在TRIM收集区域中。也就是说,当提供TRIM命令时,控制单元1230将TRIM命令的信息存储在TRIM收集区域。这已经在上面参考图18至图20详细进行了描述,因此将不提供详细说明。
控制单元1230包括TRIM重新排序模块1235。TRIM重新排序模块1235将存储在TRIM收集区域中的TRIM命令的处理次序重置。也就是说,TRIM重新排序模块1235控制存储在TRIM收集区域中的TRIM命令的处理次序,使得针对第一闪存1210和第二闪存1240并行地执行TRIM命令。通过重置TRIM命令的处理次序,闪存设备1200能够缩短处理TRIM命令花费的时间。
控制单元1230包括CPU1231、FTL1232、闪存控制器1233和缓存控制器1234。这已经在上面参考图4详细进行了描述,因此将不提供详细说明。
图22至图24是用于描述TRIM命令的重新排序以及TRIM命令的并行处理的图。依照示范性实施例,顺序地提供第一至第四TRIM命令TRIM cmd_1、TRIM cmd_2、TRIM cmd_3、TRIM cmd_4。而且,依照示范性实施例,包括在每一个TRIM命令中的扇区地址都与闪存的页单位匹配。
参考图22,包括在第一至第四TRIM命令TRIM cmd_1、TRIM cmd_2、TRIM cmd_3、TRIM cmd_4中的信息(例如,开始扇区号以及扇区的数目)存储在缓存1220的TRIM收集区域中。在这种情况下,TRIM命令的处理次序也一起存储在TRIM收集区域中。如图22中所示,依照示范性实施例,TRIM命令的初始处理次序是提供TRIM命令的次序。
仍然参考图22,第一命令TRIM cmd_1和第二TRIM命令TRIM cmd_2相应于第二闪存1240的页(页7和页5),第三命令cmd_3和第四TRIM命令cmd_4相应于第一闪存1210的页(页3和页1)。因此,当顺序地提供第一至第四TRIM命令TRIM cmd_1、TRIM cmd_2、TRIM cmd_3、TRIM cmd_4时,处理针对第二闪存1240的第一TRIM命令TRIM cmd_1和第二TRIM命令TRIMcmd_2,并且之后,处理针对第一闪存1210的第三TRIM命令TRIM cmd_3和第四TRIM命令TRIMcmd_4。
TRIM命令的该处理会降低闪存设备1200的性能。例如,在第二闪存1240对第五页和第七页(页5和页7)执行擦除操作时,第一闪存1210可以不执行任何操作。这表示TRIM处理时间被延长了。为了防止TRIM命令处理效率低,根据本发明构思的实施例的闪存设备1200重置TRIM命令的处理次序(POT)以使得TRIM命令将被并行处理。
也就是说,如图23中所示,TRIM重新排序模块1235基于映射表以第一TRIM命令TRIM cmd_1、第三TRIM命令TRIM cmd_3、第二TRIM命令TRIM cmd_2和第四TRIM命令TRIMcmd_4的次序重置TRIM命令的处理次序(POT)。
因此,如图24中所示,在针对第二闪存1240执行对于第一TRIM命令TRIM cmd_1的处理的同时,可以针对第一闪存1210执行对于第三TRIM命令TRIM cmd_3的处理。例如,在对第二闪存1240的第七页(页7)执行擦除操作的同时,可以并行地执行针对第一闪存1210的第三页(页3)的擦除操作。
同样地,在针对第二闪存1240执行对于第二TRIM命令TRIM cmd_2的处理的同时,可以针对第一闪存1210执行对于第四TRIM命令TRIM cmd_4的处理。
上面描述的确定TRIM命令的处理次序(POT)的方法仅仅是一个例子,并且本发明构思不局限于此。例如,可以考虑每个闪存的操作状态来确定TRIM命令的处理次序(POT)。举例来说,当执行针对第二闪存1240的写操作(或者读操作)时,可以确定TRIM命令的处理次序(POT)以使得针对第一闪存1210执行TRIM命令的处理。
图25是示出具有多个闪存的闪存设备1200的TRIM命令处理方法的流程图。
在操作S51中,生成TRIM命令处理信号(TCP)。例如,当在一定时间内没有来自主机1100(参见图4)的请求时,控制单元1230的CPU1231生成TRIM命令处理信号(TCP)。
在操作S52中,重置TRIM命令(存储在TRIM收集区域中)的处理次序(POT)。例如,TRIM重新排序模块1235(参见图21)重置TRIM命令的处理次序(POT)以使得将对于闪存并行地执行TRIM命令。在这种情况下,例如,TRIM重新排序模块1235可以基于映射表重置TRIM命令的处理次序(POT)。另举一例,TRIM重新排序模块1235可以考虑每个闪存的操作状态来重置TRIM命令的处理次序(POT)。在这种情况下,例如,TRIM重新排序模块1235可以确定TRIM命令的处理次序(POT)以使得当在第二闪存1240中执行写操作(或者读操作)的同时处理与第一闪存1210相应的TRIM命令。
在操作S53中,更新FTL1232(参见图21)的映射表和TRIM管理表。例如,FTL1232响应于TRIM命令处理信号(TCP)向缓存控制器1234(参见图4)请求收集在TRIM收集区域中的信息。
缓存控制器1234将收集在缓存1220的TRIM收集区域中的TRIM命令的信息传送给FTL1232。FTL1232基于传送的信息更新映射表和TRIM管理表。更新的映射表和TRIM管理表中的WSI类似于图13的描述,并且由此将不提供对其的详细说明。
在操作S54中,根据TRIM命令请求对闪存来说并行的、对于被标记为无效的区域的擦除操作。例如,闪存控制器1233(参见图21)根据重置后的TRIM命令的处理次序(POT)和更新后的映射表请求对闪存的擦除操作。在这种情况下,因为TRIM命令的处理次序(POT)被重置,所以可以并行地对闪存执行擦除操作。
如上所述,当根据本发明构思的实施例的闪存设备1200包括多个闪存时,可以重置TRIM命令的处理次序。因此,可以对多个闪存并行地执行TRIM命令的处理。结果,能够缩短TRIM命令的处理花费的时间。
VI.支持TRIM操作的主机
图26是示出根据本发明构思的实施例的存储系统200的框图。参考图26,存储系统200包括主机210和存储设备220并且存储设备220包括控制单元221和存储单元222。
主机210包括处理单元211和驱动单元212。处理单元211控制主机210的整体操作,而驱动单元212根据处理单元211的控制驱动存储设备220。
主机100支持TRIM操作。当存在来自用户的关于特定文件的删除请求时,TRIM操作仅处理主机210中关于相应文件的元数据。在这种情况下,因为仅仅处理主机210中的元数据而没有实质删除存储在存储单元222中的数据,所以用户可能认为关于相应文件的删除操作被迅速执行。
为了实质上删除存储在存储单元222中的数据,主机210向存储设备120提供TRIM命令。TRIM命令包括用于指定实质上将被删除的区域的信息(例如,地址信息)。控制单元221响应于TRIM命令对存储在存储单元222中的数据执行擦除操作。此TRIM命令被定义为具有各种名称,诸如解除分配命令、不写命令、删除命令和文件删除命令。
此外,管理主机210中的文件的单位可以不同于管理存储在存储设备220的存储单元222中的数据的单位。例如,主机210可以以就硬盘而言的扇区为单位管理文件,而存储设备220可以以就闪存而言的页和/或块为单位来管理存储在存储单元222中的数据。
主机210和存储设备220的管理单位的不匹配可能使存储系统200的性能恶化。例如,当响应于来自主机210的TRIM命令对存储在存储单元222中的数据执行擦除操作时,管理单位的不匹配会导致大量的数据复制和合并操作。因此,存储设备220的寿命周期被缩短并且其性能恶化。
主机210包括TRIM管理模块213。当提供TRIM命令给存储设备220时,TRIM管理模块213仅提供用于指定将被删除的区域的信息(例如,扇区地址)当中与存储设备220的管理单位(例如,页单位)相应的信息。因为TRIM管理模块213解决主机210与存储设备220之间的管理单位的不匹配问题,所以存储系统200可以防止存储设备220的寿命缩短及其性能恶化。
VII.用于解决管理单位的不匹配问题的闪存系统的主机
图27是示出根据本发明构思的实施例的闪存系统2000的框图。作为图26的存储设备220的例子在图27中示出闪存设备2200。
参考图27,闪存系统2000包括主机2100和闪存设备2200。依照示范性实施例,主机2100以扇区为单位管理文件,而闪存设备2200以页为单位管理存储在闪存2210中的数据。
主机2100包括TRIM管理模块2124。主机2100通过使用TRIM管理模块1123解决主机2100与闪存设备2200之间管理单位的不匹配问题。参考图27,主机2100包括处理单元2110和驱动单元2120。
处理单元(例如,中央处理单元(CPU))2110控制主机2100的整体操作,而驱动单元2120根据处理单元2110的控制驱动存储设备2200。驱动单元2120可以包括用于驱动主机2100的软件程序的存储器。
驱动单元2120包括应用2121、文件系统2122、设备驱动器2123、TRIM管理模块2124和主机存储器2125。应用2121也可以称作应用程序,其是在操作系统(OS)上运行的软件。例如,应用2121被编程为支持文件的创建和擦除操作。
文件系统2122管理在主机2100中使用的文件。文件系统2122可以以就硬盘而言的扇区或者簇为单位来管理文件。在下文中,依照示范性实施例,文件系统2122以就硬盘而言的扇区为单位管理主机2100中使用的文件。这里,扇区是应用2121可以访问的最小数据管理单位,并且典型地大小为512字节(B)。
当存在来自应用2121的关于特定文件的删除请求时,文件系统2122改变被请求删除的文件的元数据。之后,当应用2121访问相应文件时,参考文件系统2122参考改变的元数据提供“相应文件已经删除”的信息。另外,文件系统2122将关于被请求删除的文件的扇区地址递送到TRIM管理模块2124。将参考图28更详细地描述文件系统2122及其目录项结构。
TRIM管理模块2124从文件系统2122接收关于被请求删除的文件的扇区地址。TRIM管理模块2124将递送的扇区地址与闪存的页单位相对应。也就是说,TRIM管理模块2124仅从递送的扇区地址中选择与闪存设备2200的页单位相对应的扇区地址。为了实质上删除存储在闪存2210中的数据,TRIM管理模块2124提供与页单位相应的扇区地址以及TRIM命令到闪存设备2200。而且,TRIM管理模块2124可以单独管理递送的扇区地址当中与闪存设备2200的页单位不对应的扇区地址。
设备驱动器2123是使闪存设备2200能够与主机2100通信的程序。为了使用闪存设备2200,适合于闪存设备2200的设备驱动器2123需要被安装在主机2100上。参考图27,TRIM管理模块2124和设备驱动器2123分别利用单独的模块实现。然而,这只是示范性实施例并且TRIM管理模块2124可以内建到设备驱动器2123中。
主机存储器2125可以临时存储将写在闪存设备2200上的数据或者从闪存设备2200读取的数据。另外,主机存储器2125可以用作用于驱动应用2121、文件系统2122、设备驱动器2123和TRIM管理模块2124的工作存储器。
而且,闪存设备2200从主机2100接收TRIM命令。TRIM命令包括用于指定将被删除的区域的信息(例如,关于被请求删除的扇区地址的信息)。在这种情况下,可以由主机2100的TRIM管理模块2124将所述被提供给闪存设备2200的、用于指定将被删除的区域的信息与闪存设备2200的管理单位(例如,页单位)相对应。
闪存设备2200响应于TRIM命令,将闪存2210的区域当中被请求删除的区域标记为无效。闪存设备2200在空闲时间(举例来说,没有来自主机的请求时出现的、控制单元1230的空闲时间)期间对被标记为无效的区域执行擦除操作。参考图27,闪存设备2200包括闪存2210、缓存2220和控制单元2230。
闪存2210根据控制单元2230的控制来执行擦除操作、读操作和写操作。闪存2210包括多个存储块。每个存储块包括多个页。在示范性实施例中,在图27中示出三个存储块2211、2212、2213。在示范性实施例中,每个存储块包括四个页。
每个页的大小大于扇区的大小。例如,每个页大小大约2K字节(KB),每个扇区大小大约512B。闪存2210以存储块为单位执行擦除操作,并且以页为单位执行写或者读操作。
而且,一个比特或者多于两个比特的数据可以存储在闪存2210的一个存储单元中。其中一个比特数据可以存储在一个存储单元的存储单元结构可以称作单级单元(SLC)或者单比特单元。其中多于两个比特的数据存储在一个存储单元的存储单元结构称作多级单元(MLC)或者多比特单元。
缓存2220可以临时存储从闪存2210读取的或者由主机2100提供的数据。另外,缓存2220可以用于驱动诸如FTL之类的固件。缓存2220可以利用DRAM、SRAM、MRAM或者PRAM实现。
控制单元2230包括CPU2231、FTL2232、闪存控制器2233和缓存2234。CPU2231分析并且处理从主机2100输入的信号。另外,CPU控制闪存设备2200的整体操作。
FTL2232将从主机2100提供的逻辑地址(LA)转换为闪存2210中的物理地址(PA)。举例来说,FTL2232将从主机2100接收的扇区地址转换为闪存2210中的页地址。
而且,例如,FTL1232以页为单位管理存储在闪存2210中的数据。当通过TRIM命令请求删除存储在预定页中的全部数据中时,FTL2232将相应页标记为无效。
闪存控制器2233控制闪存2210的读、写和擦除操作。例如,在控制单元2230的空闲时间期间,闪存控制器2233控制闪存2210执行关于被标记为无效的页的擦除操作。而且,缓存控制器2234控制缓存2220的读和写操作。
图28是示出图27的文件系统生成的用于管理文件的目录项结构的示意图。参考图28,目录项结构包括文件名、扩展名、属性、创建日期与时间、开始扇区和文件大小。
当存在来自图27的应用2121的关于特定文件的删除请求时,图27的文件系统2122改变被请求删除的文件的元数据。例如,文件系统2122在被请求删除的文件的文件名上放置十六进制字节的‘E5h’。另举一例,该文件系统将被请求删除的文件的属性值改变为‘0xE5’。这是一个特殊标记并且意思是“此文件已删除”。因此,当应用2121以后访问相应文件时,文件系统2122提供信息:相应文件先前已经删除。关于文件系统2122的信息可以周期性地或者在空闲时间期间存储在非易失性存储器(例如,闪存2210)中。
此外,可以根据图27的闪存系统2000的OS选择可供选择的文件系统2122。例如,当闪存系统2000具有盘操作系统(DOS)或者基于视窗(Windows)的OS时,其文件系统包括文件分配表(FAT)文件系统、虚拟FAT(VFAT)文件系统、扩展的FAT(exFAT)文件系统和新技术文件系统(NTFS)。Windows是微软公司的商标。
另举一例,当闪存设备1000具有基于UNIX的OS时,可以使用UNIX文件系统(UFS)。当闪存设备1000具有基于LINUX的OS时,可以使用针对LINUX的文件系统。当闪存设备1000具有移动OS(例如iOS(也即,针对iPhone和iPad的OS)以及android OS)时,可以使用针对移动OS的文件系统。UNIX是工业标准协会The Open Group的商标。LINUX是Linus Torvalds的商标。iOS是Cisco Systems商标。iPhone是Cisco Systems以及Apple公司之间协议之下的商标。iPad是Apple公司的商标。
图29是示出图27的闪存系统2000的软件层结构的框图。参考图29,闪存系统2000的软件层结构包括应用2121、文件系统2122、TRIM管理模块2124、FTL2232和闪存2210。可以将图27的主机2100上的应用2121、文件系统2122和TRIM管理模块2124指定为高层。可以将图27的闪存设备2200上的FTL2232和闪存2210指定为低层。
应用2121递送文件删除请求到文件系统2122。文件系统2122改变被请求删除的文件的元数据。例如,文件系统2122在图28的文件名上放置‘E5h’。因此,当应用2121访问相应文件时,文件系统2122可以提供信息:相应文件已被删除。可以将应用2121的文件删除请求和文件系统2122的元数据变化指定为‘高层中的擦除操作’。
TRIM管理模块2124从文件系统2122接收关于被请求删除的文件的扇区地址ADDR。TRIM管理模块2124从接收到的扇区地址Sector ADDR中选择与闪存2210的页单位相对应的扇区地址。可以将与闪存2210的页单位相对应的扇区地址指定为对齐的扇区地址AlignedSector ADDR。
而且,TRIM管理模块2124可以通过使用TRIM管理表单独管理接收到的扇区地址中不与图27的闪存设备2200的页单位相对应的扇区地址。
而且,为了实质上删除存储在闪存2210中的数据,TRIM管理模块2124提供TRIM命令TRIM cmd到FTL2232。TRIM命令TRIM cmd包括用于指定被请求删除的文件的对齐的扇区地址Aligned Sector ADDR。FTL2232将对齐的扇区地址Aligned Sector ADDR转换为页地址Page ADDR并且将闪存2210的将被删除的页标记为无效。
例如,闪存2210在空闲时间期间对标记为无效的页执行擦除操作。空闲时间意指当没有从图27的主机2100到图27的控制单元2230的请求时的时间。众所周知,因为闪存2210以块为单位执行擦除操作,所以关于闪存2210的页的擦除操作可能伴随有数据的复制、合并和块擦除操作。可以将FTL2232的标记操作和闪存2210的擦除操作指定为‘低层中的擦除操作’。
图30是更详细地示出图27的TRIM管理模块2124的操作的框图。参考图30,TRIM管理模块2124接收扇区地址Sector ADDR并且输出与页单位相对应的扇区地址(也即,对齐的扇区地址Aligned Sector ADDR)。关于扇区地址Sector ADDR以及对齐的扇区地址AlignedSector ADDR的信息可以包括Start Sector No(开始扇区号)和#of Sectors(扇区的数目)。
更详细地说,TRIM管理模块2124参考组信息(group information),选择扇区地址Sector ADDR当中与页单位相对应的扇区地址(也即,对齐的扇区地址Aligned SectorADDR)。这里,组信息意指与一个页相对应的扇区的地址信息。TRIM管理模块2124从FTL2232的映射表接收组信息。将参考图34更详细地描述组信息和映射表。
另外,TRIM管理模块2124可以单独管理接收到的扇区地址Sector ADDR当中与页单位不对应的扇区地址。为此,TRIM管理模块2124包括TRIM管理表。
而且,关于TRIM管理表的信息可以存储在图27的主机存储器2125中。在这种情况下,可以选择主机存储器2125的区域中分配给TRIM管理表的区域的各种大小。例如,为了根据扇区地址管理降低图27的处理单元2110的开销,分配给TRIM管理表的区域可以被限定为预定大小。
当分配给TRIM管理表的区域被限定为预定大小时,关于TRIM管理表管理的扇区地址的信息的大小可能超出分配给主机存储器2125的区域。在这种情况下,可以通过推送方法管理关于TRIM管理表的扇区地址的信息。将参考图34至图36描述TRIM管理模块2124和TRIM管理模块2124的操作。
图31是更详细地示出图27的FTL2232的地址转换操作的框图。参考图31,FTL2232将对齐的扇区地址Aligned Sector ADDR(也即,逻辑地址)转换为页地址Page ADDR(也即,闪存2210的物理地址)。
FTL2232的地址转换可以通过映射表执行。典型地,映射方法包括页映射方法和块映射方法。页映射以页为单位(例如,2KB)执行地址转换,块映射方法以块为单位(例如,1MB)执行地址转换。将在下面参考图32更详细地描述通过映射表的地址转换。
FTL2232的地址转换是高层的应用2121,但是使在实际闪存2210中执行的读、写和擦除操作能够看起来像从文件系统2122看到的硬盘设备的读和写操作。也就是说,FTL2232执行仿真功能。
图32是示出通过映射表的地址转换的框图。为了简要描述起见,在下文中,依照示范性实施例,通过页映射方法执行地址转换。
参考图32,映射表将扇区地址Sector ADDR——也即逻辑地址,映射到页地址PageADDR——也即物理地址。依照示范性实施例,四个扇区被映射到一个页。例如,如图32中所示,第一到第四扇区即扇区1、扇区2、扇区3、扇区4可以映射到第三页即页3。
映射表通过写状态信息(WSI)显示存储在页中的数据是否有效。例如,WSI是‘v’表示存储在页中的数据是有效的。
闪存2210中的存储块2211的第零到第三页即页0到页3中的每一页都被划分为四个子页即子页0到子页3。依照示范性实施例,每个子页的大小与每个扇区的大小相同,并且每个子页对应于每个扇区。例如,如图32所示,第三页即页3被划分为四个子页即子页0到子页3。第三页即页3的四个子页即子页0到子页3分别对应于第一到第四扇区即扇区1到扇区4。
而且,为了描述的方便起见,像图32那样,依照示范性实施例,第一到第三文件即文件1、文件2、文件3被作为有效数据存储在图33到图36中块2211的第一到第三页即页1、页2、页3中。在这种情况下,依照示范性实施例,第一文件即文件1对应于第一到第五扇区即扇区1、扇区2、扇区3、扇区4、扇区5,第二文件即文件2相应于第六到第八扇区即扇区6、扇区7、扇区8,并且第三文件即文件3相应于第九到第十二扇区即扇区9、扇区10、扇区11、扇区12。
图33是当闪存系统2000在没有图27的TRIM管理模块2124的条件下处理TRIM命令时的视图。也就是说,在示范性实施例中,在图33中与页单位不对应的扇区地址被提供给闪存设备2200。依照示范性实施例,提供包括关于文件即文件1的扇区地址的信息的TRIM命令TRIM cmd。
参考图33,从主机2100提供TRIM命令TRIM cmd。TRIM命令TRIM cmd包括用于指定闪存2210中将被删除的区域的扇区地址。如图33中所示,关于扇区地址的信息可以提供为Start Sector No(开始扇区号)和#of Sectors(扇区的数目)。例如,因为第一文件即文件1对应于第一至第五扇区即扇区1到扇区5,所以Start Sector No是1并且#of Sectors是5。
一旦从主机2100提供TRIM命令TRIM cmd时,图27的FTL2232更新映射表中的WSI。也就是说,与接收到的扇区地址相对应的页的WSI被标记为无效。在示范性实施例中,图33中的WSI为‘x’表示存储在相应页中的数据是无效的。
更详细地说,第一文件即文件1对应于第一到第五扇区即扇区1、扇区2、扇区3、扇区4、扇区5。在这种情况下,第一文件即文件1的第一到第四扇区即扇区1、扇区2、扇区3、扇区4对应于第三页即页3。因此,映射表中关于第三页即页3的WSI被标记为无效。第一文件即文件1的第五扇区即扇区5对应于第二页即页2。因此,第三页即页3的WSI被标记为无效。在图27的控制单元2230的空闲时间期间执行对被标记为无效的第二页即页2和第三页即页3的擦除操作。
而且,与第一文件即文件1的第五扇区即扇区5相对应的数据存储在第二页即页2的子页即子页0中,与第二文件即文件2的第六至第八扇区即扇区6到扇区8相对应的数据存储在第二页即页2的子页1到3中。
因此,根据关于第一文件即文件1的TRIM命令TRIM cmd将第二页即页2标记为无效,第二文件即文件2的有效数据可能被一起删除。因此,为了防止第二文件即文件2的有效数据被删除,闪存2210需要将第二页即页2的子页1到3中存储的数据复制到另一页(例如,图27的另一个块2212的页)中。
由于写操作的数目增加,该复制操作会缩短闪存2210的生命周期。另外,存储通过复制操作而生成的有效数据的新页会导致生成自由块的合并操作的增加。
主机2100包括图27的TRIM管理模块2124。因为TRIM管理模块2124将与闪存设备2200的管理单位相对应的扇区地址提供给闪存设备2200,所以不发生上述的复制操作。这将在下面参考图34至图36更详细地描述。
图34至图36是示出根据本发明构思的实施例的、使用图27的TRIM管理模块2124生成对齐的扇区地址Aligned Sector ADDR并且处理包括对齐的扇区地址Aligned SectorADDR的TRIM命令的闪存系统2000的视图。
根据本发明构思的实施例,主机2100将对齐的扇区地址Aligned Sector ADDR提供给闪存设备2200。为此,主机2100向闪存设备2200请求组信息。闪存设备2200从映射表获取组信息并且将其提供给主机2100。以后,当存在关于预定文件的删除请求时,主机2100的TRIM管理模块2124参考组信息确定接收到的扇区地址是否对应于页单位。TRIM管理模块2124将与页单位相对应的扇区地址以及TRIM命令提供给闪存设备2200。
更详细地说,图34示出组信息从闪存设备2200的映射表发送到主机2100的过程。参考图34,首先,主机2100向闪存设备2200请求组信息。例如,图27的主机2100的TRIM管理模块2124或者处理单元2110可以在加电(power up)期间向闪存设备2200请求组信息。
闪存设备2200响应于主机2100的组信息请求提供组信息给主机2100。这里,组信息意指与一个页相对应的扇区的地址信息。例如,闪存设备2200可以从映射表获取组信息。
例如,参考映射表,四个扇区对应于一页。也就是说,第一到第四扇区即扇区1、扇区2、扇区3、扇区4对应于第三页即页3,第五到第八扇区即扇区5、扇区6、扇区7、扇区8对应于第二页即页2,并且第九到第十二扇区即扇区9、扇区10、扇区11、扇区12对应于第一页即页1。
因此,相对于闪存设备2200,第一到第四扇区、第五到第八扇区以及第九到第十二扇区构成各个组,并且各个组中的扇区提供与一页相对应的信息(也即,组信息)到主机2100。递送到主机2100的组信息可以存储在图27的主机存储器2125中。
图35和图36示出当存在关于预定文件的删除请求时TRIM管理模块2124以及FTL2232的操作。参考图35,依照示范性实施例,TRIM管理模块2124接收关于第一文件的扇区地址Sector ADDR。也就是说,依照示范性实施例,当在高层对第一文件即文件1执行擦除操作之后,从图27的文件系统2122提供第一文件即文件1的扇区地址Sector ADDR。
TRIM管理模块2124从文件系统2122接收关于第一文件即文件1的扇区地址SectorADDR。因为第一文件即文件1对应于第一到第五扇区即扇区1、扇区2、扇区3、扇区4、扇区5,所以Start Sector No是1并且#of Sectors是5。TRIM管理模块2124参考存储在主机存储器2125中的组信息确定接收到的扇区地址是否对应于页单位。
更详细地说,参考图34的组信息,第一到第四扇区即扇区1、扇区2、扇区3、扇区4构成一个组。也就是说,第一到第四扇区即扇区1、扇区2、扇区3、扇区4对应于页单位,也即闪存设备2200的管理单位。另一方面,第五扇区即扇区5与页单位不对应。
在这种情况下,TRIM管理模块2124生成用于管理与页单位不对应的第五扇区即扇区5的TRIM管理表。如图35中所示,TRIM管理表包括关于第五扇区即扇区5的组信息和WSI。因为与第五扇区即扇区5对应的数据在高层已被删除,所以TRIM管理模块2124将关于TRIM管理表的第五扇区即扇区5的WSI标记为无效。
而且,第一到第四扇区即扇区1、扇区2、扇区3、扇区4对应于页单位。因此,TRIM管理模块2124向闪存设备2200提供关于第一到第四扇区即扇区1、扇区2、扇区3、扇区4的扇区地址(也即,Start Sector No是1并且#of Sectors是4)以及TRIM命令TRIM cmd。
因为第一到第四扇区即扇区1、扇区2、扇区3、扇区4被映射到第三页即页3,所以FTL2232将关于映射表的第三页即页3的WSI标记为无效。例如,在图27的控制单元2230的空闲时间期间执行对标记为无效的第三页即页3的擦除操作。在这种情况下,因为在擦除操作期间存储在第三页即页3中的全部数据是无效的,所以不执行图33中的复制操作。
而且,响应于随后的关于另一文件的删除请求,可以将TRIM管理表中所管理的组的WSI更新为无效。在这种情况下,因为相应组的扇区对应于页单位,所以TRIM管理模块2124可以提供关于相应扇区的扇区地址到闪存设备。这将在下面参考图36更详细地描述。
参考图36,依照示范性实施例,TRIM管理模块2124接收关于第二文件即文件2的扇区地址Sector ADDR。也就是说,在对第二文件即文件2执行了高层的擦除操作之后,依照示范性实施例,从文件系统2122提供第二文件即文件2的扇区地址。
TRIM管理模块2124从文件系统2122接收关于第二文件即文件2的扇区地址SectorADDR。因为第二文件即文件2相应于第六到第八扇区即扇区6、扇区7、扇区8,所以StartSector No是6并且#of Sectors是3。TRIM管理模块2124参考存储在主机存储器2125中的组信息确定接收到的扇区地址是否对应于页单位。
更具体地说,参考图34,第六到第八扇区即扇区6、扇区7、扇区8与页单位不对应。因此,TRIM管理模块2124通过使用TRIM管理表单独管理第六到第八扇区即扇区6、扇区7、扇区8。在这种情况下,通过关于第一文件即文件1的删除请求事先生成关于第五到第八扇区即扇区5、扇区6、扇区7、扇区8的TRIM管理表。因此,如图36中所示,TRIM管理模块2124将关于第六到第八扇区即扇区6到扇区8的WSI更新为无效。
在这种情况下,关于同一组中的第五到第八扇区即扇区5、扇区6、扇区7、扇区8的WSI全部是无效的。也就是说,第五到第八扇区即扇区5、扇区6、扇区7、扇区8对应于页单位并且对应于在高层中删除的文件。因此,TRIM管理模块2124向闪存设备220提供关于第五到第八扇区即扇区5、扇区6、扇区7、扇区8的扇区地址(也即,Start Sector No是5并且#ofSectors是4)以及TRIM命令TRIM cmd。在这种情况下,在TRIM管理表中删除关于第五到第八扇区即扇区5、扇区6、扇区7、扇区8的信息。
而且,因为第五到第八扇区即扇区5、扇区6、扇区7、扇区8被映射到第二页即页2,所以FTL2232将映射表中关于第二页即页2的WSI标记为无效。例如,在图27的控制单元2230的空闲时间期间执行对被标记为无效的第二页即页2的擦除操作。因此,从现在起在空闲时间期间(例如,图27的控制单元2230的空闲时间)执行对第二页即页2的擦除操作。
如上所述,主机2100的TRIM管理模块2124仅提供从文件系统2122递送到闪存设备2200的扇区地址当中与页单位对应的扇区地址。因此,闪存设备2200不执行像图33那样的不必要的复制操作。这意味着可以防止由不必要的复制操作所引起合并操作。也就是说,使用主机2100的TRIM管理模块2124解决主机1110与闪存设备1120之间的管理单位的不匹配问题,由此防止闪存设备1120的寿命缩短及其性能恶化。
而且,分配给TRIM管理表的存储器(例如,图27的主机存储器2125)可以被限定为预定大小。在这种情况下,关于在TRIM管理表中管理的扇区地址的信息的大小可能超出分配给主机存储器2125的大小。
当关于在TRIM管理表中管理的扇区地址的信息的大小超出分配给主机存储器2125的大小时,可以通过推送方法删除关于在TRIM管理表中管理的扇区的信息。也就是说,删除关于在TRIM管理表管理的扇区的信息当中关于最旧扇区的信息并且可以管理关于新请求的扇区的信息。
例如,依照示范性实施例,在TRIM管理表中管理关于各个不同组中的第一扇区即扇区1、第五扇区即扇区5和第九扇区即扇区9的信息另外,需要在TRIM管理表中管理关于另一组中第十三扇区即扇区13的信息,并且依照示范性实施例,如果管理关于第十三扇区即扇区13的信息,则关于TRIM管理表中管理的扇区地址的信息的大小超出TRIM管理表中分配的区域的大小。在这种情况下,TRIM管理模块2124可以从TRIM管理表中删除关于最老的第一扇区即扇区1的信息,并且可以在TRIM管理表中管理关于第十三扇区即扇区13的信息。
图37是当从闪存设备2200的映射表递送到主机2100的组信息的流程图。
在操作S110中,主机2100向闪存设备2200请求组信息。例如,主机2100可以在加电期间向闪存设备2200请求组信息。闪存设备2200响应于主机2100的请求从映射表中获得用于每个扇区的组信息。
在操作S120中,组信息存储在主机2100的主机存储器2125中。也就是说,闪存设备2200向主机2100提供从映射表获得的组信息,并且主机2100将递送的组信息存储在主机存储器2125中。
图38是示出图27的TRIM管理模块2124的操作的流程图。
在操作S210中,TRIM管理模块2124从图27的文件系统2122接收扇区地址SectorADDR。也就是说,在高层中对预定文件执行了擦除操作之后,文件系统2122向TRIM管理模块2124提供关于相应文件的扇区地址Sector ADDR。
在操作S220中,TRIM管理模块2124参考组信息确定递送的扇区地址是否是部分扇区地址Partial Sector ADDR。这里,部分扇区地址Partial Sector ADDR指的是与图27的闪存2210的页单位不对应的扇区地址。
如果递送的扇区地址不是部分扇区地址(也即,递送的扇区地址与页单位对应),则TRIM管理模块2124向闪存设备2200提供与页单位对应的扇区地址信息(也即,对齐的扇区地址Aligned Sector ADDR)。如果递送的扇区地址是部分扇区地址(也即,递送的扇区地址与页单位不对应),则执行操作S240。
在操作S240中,确定是否存在与部分扇区地址Partial Sector ADDR对应的TRIM管理表。如果不存在TRIM管理表,则TRIM管理模块2124在操作S250中生成用于管理部分扇区地址的TRIM管理表。如果存在TRIM管理表,则TRIM管理模块2124在操作S260中更新TRIM管理表中的WSI。
在操作S270中,确定TRIM管理表中的全部WSI是否都被更新。也就是说,TRIM管理模块2124确定关于同一组中的扇区的WSI是否全部被更新为无效。如果全部WSI都被更新为无效,则TRIM管理模块2124在操作S280中向闪存设备2200提供相应组的扇区地址(也即,对齐的扇区地址Aligned Sector ADDR)和TRIM命令TRIM cmd。
如上所述,闪存系统2000支持TRIM操作。也就是说,当存在对于预定文件的删除请求时,主机2100改变文件系统2122的元数据并且通知用户相应文件已经被擦除,并且闪存设备2200根据TRIM命令TRIM cmd执行其实质的擦除操作。在这种情况下,主机2100通过使用TRIM管理模块2124解决主机2100和闪存设备2200之间的管理单位不匹配的问题。
此外,当在高层对多个文件执行擦除操作时,TRIM管理模块2124可以利用时间差来接收扇区地址。在这种情况下,TRIM管理模块2124收集关于被请求删除的扇区的地址信息并且可以在空闲时间期间同时处理所收集的地址信息。这将在下面参考图29和图30更详细地描述。
VIII.收集被请求删除的扇区的地址信息的主机
图39是主机收集分别在不同时间提供的关于扇区地址的信息并且处理所收集的关于扇区地址的信息的视图。除收集关于扇区地址的信息之外,在下面描述的主机2100类似于图27的主机2100。因此,在下文中,将讨论与图27的主机2100的差异。而且,同样的参考标记指代同样的元素。
参考图39,第一至第三扇区地址扇区Sector ADDR_1、Sector ADDR_2、SectorADDR_3被提供至TRIM管理模块2124。这里,第一至第三扇区地址Sector ADDR_1、SectorADDR_2、Sector ADDR_3意指关于在高层删除的各个不同文件的扇区地址。另外、依照示范性实施例,第一至第三扇区地址Sector ADDR_1、Sector ADDR_2、Sector ADDR_3分别在不同时间被提供给TRIM管理模块2124。
主机存储器2125包括用于收集所提供的扇区地址的扇区收集区域。TRIM管理模块2124在主机存储器2125的扇区收集区域中临时存储第一至第三扇区地址Sector ADDR_1、Sector ADDR_2、Sector ADDR_3。在空闲时间期间(例如,在图27的处理单元2110的空闲时间期间),TRIM管理模块2124将所收集的第一至第三扇区地址Sector ADDR_1、SectorADDR_2、Sector ADDR_3当中与页单位对应的扇区地址提供给图27的闪存设备2200。
为了描述的方便起见,如图32中所示,依照示范性实施例,第一至第三扇区地址Sector ADDR_1、Sector ADDR_2、Sector ADDR_3分别相应于第一至第三文件即文件1至文件3。在这种情况下、因为第一至第三文件即文件1至文件3相应于第一至第十二扇区即扇区1、扇区2、扇区3、扇区4、扇区5、扇区6、扇区7、扇区8、扇区9、扇区10、扇区11、扇区12,所以关于第一至第十二扇区扇区1、扇区2、扇区3、扇区4、扇区5、扇区6、扇区7、扇区8、扇区9、扇区10、扇区11、扇区12的地址信息被存储在扇区收集区域中。
而且,第一至第十二扇区即扇区1、扇区2、扇区3、扇区4、扇区5、扇区6、扇区7、扇区8、扇区9、扇区10、扇区11、扇区12对应于页单位。也就是说,第一至第四扇区即扇区1、扇区2、扇区3、扇区4、第五至第八扇区即扇区5、扇区6、扇区7、扇区8以及第九至第十二扇区即扇区9、扇区10、扇区11、扇区12分别构成对应于每页的组。
因此、在空闲时间期间,TRIM管理模块2124可以向闪存设备2200提供第一至第十二扇区即扇区1、扇区2、扇区3、扇区4、扇区5、扇区6、扇区7、扇区8、扇区9、扇区10、扇区11、扇区12的扇区地址(也即,Start Sector No是1并且#of Sectors是12)以及TRIM命令TRIMcmd。因为第一至第三扇区地址Sector ADDR_1、Sector ADDR_2、Sector ADDR_3被同时处理,所以与Sector ADDR_1、Sector ADDR_2、Sector ADDR_3被分别处理的情况相比,可以缩短TRIM命令从主机2100到闪存设备2200的传输时间。
图40是示出当分别在图39的扇区收集区域收集有关各个不同文件的扇区地址时的操作的流程图。
在操作S310中,扇区地址Sector ADDR被提供给TRIM管理模块2124。在操作S320中,TRIM管理模块2124将接收到的扇区地址Sector ADDR存储在图39的主机存储器2125的扇区收集区域中。当以后接收到另一扇区地址时,TRIM管理模块2124可以将扇区地址连续存储在扇区收集区域中。
图41是示出当在空闲时间期间处理收集在图39的扇区收集区域中的扇区地址时的操作的流程图。
在操作S410中,出现扇区地址处理(SAP)信号。例如,如果在预定时间(也即,图27的处理单元1000的空闲时间)期间没有来自用户的请求,则处理单元2110生成SAP信号。
在操作S420中,TRIM管理模块2124向图27的闪存设备2200提供所收集的扇区地址当中与页单位对应的扇区地址(也即,对齐的扇区地址Aligned Sector ADDR)以及TRIM命令。因为收集的扇区地址被同时处理,所以可以缩短TRIM命令从主机2100到闪存设备2200的传输时间。因为TRIM管理模块2124的处理扇区地址的方法类似于图38的方法,所以其详细说明将省去。
如上所述,当在高层对多个文件执行擦除操作时,关于删除的文件的扇区地址可以被收集在主机存储器1124的扇区收集区域中。因为TRIM管理模块2124同时处理收集的扇区地址,所以可以缩短TRIM命令从主机2100到闪存设备2200的传输时间。
IX.处理TRIM命令的闪存系统的应用例子
根据本发明构思的实施例的存储系统100,200以及闪存系统1000、2000可以应用于各种产品。主机2100包括计算机、数码相机、移动电话、MP3播放器、点到多点(PMP)通信设备和游戏控制台。闪存设备2200可以包括基于闪存的固态驱动器(SSD)、闪存卡或者闪存模块。主机2100以及闪存设备2200可以通过标准化接口彼此连接,标准化接口诸如高级技术附加装置(ATA)、串行ATA(SATA)、并行ATA(PATA)、通用串行总线(USB)、小型计算机小型接口(SCSI)、增强小型盘接口(ESDI)、高速外围组件互连(PCI express)或者集成驱动电子设备(IDE)接口。
图42是当根据本发明构思的实施例的主机被应用于存储卡时的视图。存储卡系统3000包括主机3100以及存储卡2200。主机3100包括主机控制器3110以及主机连接单元3120。存储卡2200包括卡连接单元3210、卡控制器3220以及闪存3230。
主机连接单元3120以及卡连接单元3210包括多个管脚(pin)。多个管脚包括命令管脚、数据管脚、时钟管脚和电源管脚。管脚的数量可以根据存储卡2200的种类而变化。举例来说,SD卡包括九个管脚。
主机3100向存储卡2200中写数据或者读取存储在存储卡2200中的数据。主机控制器3110通过主机连接单元3120向存储卡2200发送命令(例如,写命令)、发生在主机3100的时钟发生器(未示出)中的时钟信号CLK以及数据DAT。
响应于通过卡连接单元3210接收到的写命令,卡控制器3220与发生在卡控制器3220的时钟发生器(未示出)中的时钟信号同步地将数据存储在存储器3230中。存储器3230存储从主机3100发送的数据。例如,如果主机3100是数码相机,则它存储图像数据。
在图42中,主机控制器3110可以包括应用程序以及支持TRIM操作和TRIM管理模块的文件系统。卡控制器3220可以通过FTL处理存储卡2200中的TRIM命令。图42中示出的存储卡系统可以支持TRIM操作以及与TRIM管理模块的操作匹配的管理单位。
图43是当根据本发明构思的实施例的闪存系统应用于SSD时的视图。参考图43,SSD系统4000包括主机4100以及SSD4200。SSD4200通过信号连接器3231与主机4100交换信号,并且通过电源连接器3221接收电力。SSD4200包括多个非易失性存储器件4201、4202、…、420n、SSD控制器4210和辅助电源4220。
多个非易失性存储器件4201、4202、…、420n被用作存储介质。多个非易失性存储器件4201、4202、…、420n可以通过具有大容量存储能力的闪存设备来实现。在一个示范性实施例中,SSD4200使用闪存。
多个非易失性存储器件4201、4202、…、420n可以通过多个通道CH1、CH2、...、CHn连接至SSD控制器4210。至少一个存储器件可以连接至一个通道。连接至一个通道的存储器件可以连接至相同的数据总线。这时,可以以超级块(super block)的形式(即,将多个存储块连接为一个块,或者以超级页(super page)的形式(即,将多个页连接为一个页),来执行闪存碎片重组(flash defragmentation)(也即,将用于存储文件的海量存储设备的内容在物理上组织为最小数目的连续区域)。
SSD控制器4210通过信号连接器3231与主机4100交换信号SGL。这里,信号SGL可以包括命令、地址和数据。SSD控制器4210根据主机4100的命令,将数据写入相应的存储器件中或者从相应的存储器件读取数据。将参考图44更详细的描述SSD控制器4210的内部构造。
如图43中看到的那样,辅助电源4220通过电源连接器连接到主机4100。可以在从主机4100接收电力PWR时对辅助电源4220充电。而且,辅助电源4220可以放置在SSD4200中或者SSD4200外部。例如,辅助电源4220可以放置在主板上并且可以给SSD4200提供辅助电力。
图44是示出图43的SSD控制器4210的构造的框图。参考图44,SSD控制器4210包括非易失性存储器(NVM)接口4211、主机接口4212、纠错码(ECC)单元4213、中央处理单元(CPU)4214和缓存4215。
NVM接口4211将从缓存4215递送的数据分散到通道CH1、CH2、…、CHn中的每一个。而且,NVM接口4211将从非易失性存储器件4201、4202、…、420n读取的数据递送到缓存4215中。这里,NVM接口4211可以使用NAND闪存的接口方法。也就是说,SSD控制器4210可以根据NAND闪存接口方法执行编程、读或者擦除操作。
主机接口4212提供主机4100与SSD4200之间的符合主机4100的协议的接口。主机接口4212可以通过通用串行总线(USB)、小型计算机系统接口(SCSI)、高速外围组件互连(PCI express)、高级技术附加装置(ATA)接口、并行AT附加装置接口(PATA)、串行AT附加装置接口(SATA)和串行附接的SCSI(SAS),与主机4100通信。而且,主机接口4212可以执行使SSD4200能够被识别为硬盘驱动器(HDD)的盘仿真功能。
CPU4214分析并处理从图44的主机4100输入的信号SGL。CPU4214通过主机接口4212或NVM接口4211控制主机4100或者非易失性存储器件4201、4202、…、420n。CPU4214根据用于驱动SSD4200的固件来控制非易失性存储器件4201、4202、…、420n的操作。
缓存4215临时存储从主机4100提供的数据或者从非易失性存储器件读取的数据。另外,缓存4215可以存储将被存储在非易失性存储器件4201至420n中的元数据或者高速缓存数据。在突然的断电操作期间,存储在缓存4215中的元数据或者高速缓存数据被存储在非易失性存储器件4201、4202、…、420n中。缓存4215可以包括DRAM和SRAM。图43和图44的SSD可以应用于上述主机。
图45是当根据本发明构思的实施例的闪存系统在闪存模块中实现时的框图。这里,诸如个人计算机(PC)、移动电话、个人数字助理(PDA)和相机这样的主机可以连接至闪存模块5000,然后可以被使用。
参考图45,闪存模块5000可以包括存储系统(memory system)5100、电源5200、辅助电源5250、CPU5300、RAM5400和用户界面5500。图45的闪存模块5100可以连接至上述主机,然后可以被使用。
而且,如上所述,依照示范性实施例,图27的主机2100以扇区为单位管理文件,图27的闪存设备2200以页为单位管理存储在闪存2210中的数据。然而,这应当仅仅被理解为一个示范性实施例。
例如,主机2100可以以簇(cluster)为单位来管理文件,而闪存设备2200可以以块为单位或者以包括多个页的集合的超级页为单位来管理存储在闪存2210中的数据。主机2100和闪存设备2200的管理单位可以根据系统设计者的期望或者依照特定数据管理协议以各种方式实现。
而且,如上所述,依照示范性实施例,TRIM管理表可以存储在图27的主机存储器2125中。如果主机存储器2125用易失性存储器(例如,DRAM)实现,则关于TRIM管理表的信息可能在突然断电期间丢失。在这种情况下,因为关于TRIM管理表的信息在高层已被删除,所以不管关于TRIM管理表的信息是否丢失,用户都会接收到‘相应数据被删除’的信息。而且,很明显,TRIM管理表可以存储在非易失性存储器(例如,闪存)中。
根据本发明构思的实施例的存储系统关注对硬盘来说的管理单位和对闪存来说的管理单位之间的不匹配,因此它防止由数据管理单位的不匹配所引起的、有效数据的海量复制和合并操作。因此,依照本发明构思的示范性实施例的存储系统关注闪存的寿命缩短以及存储系统的整体性能。而且该存储系统支持TRIM操作,TRIM操作依照主机的命令关注闪存系统的响应速度。
上面公开的示范性实施例应当被视为说明性的而非限制性的,并且所附权利要求意图是覆盖所有这些示范性实施例以及对其的修改和改进,以及其它示范性实施例。

Claims (28)

1.一种使用包括存储第一文件的数据的非易失性存储器以及控制器的数据存储设备的数据管理单位的数据管理方法,所述方法包括:
在控制器从主机接收TRIM命令,所述TRIM命令包括在主机中不再需要的第一文件的扇区地址范围,第一文件的数据被存储在非易失性存储器中的第一数据管理区中以及第二数据管理区的仅仅一部分中;
使用映射表将第一文件的扇区地址范围分配到第一数据管理区和第二数据管理区;
在映射表中将第一数据管理区的写状态标记为无效,所述第一数据管理区的大小是所述数据存储设备的数据管理单位的大小的一倍或更多倍并且第二数据管理区的大小是所述数据存储设备的数据管理单位的大小的一倍;
在映射表中将包括所述部分的第二数据管理区的写状态标记为有效,所述部分的大小小于所述数据存储设备的数据管理单位的大小;
使用TRIM管理表来管理第二数据管理区,使得在TRIM管理表中第二数据管理区中的所述部分被指示为无效。
2.如权利要求1所述的数据管理方法,其中,所述数据存储设备的数据管理单位的大小大于所述主机的数据管理单位的大小。
3.如权利要求2所述的数据管理方法,其中,主机的数据管理单位的大小是扇区的大小,而数据存储设备的数据管理单位的大小是页的大小,所述页包括多个子页,每一个子页的大小对应于扇区的大小。
4.如权利要求3所述的数据管理方法,其中映射表包括第一写状态信息,其指示映射表中的每一个数据管理单位是否有效。
5.如权利要求4所述的数据管理方法,其中TRIM管理表包括第二写状态信息并且以子页为单位来管理第二数据管理区,其中第二数据管理区的所述部分对应于子页中的至少一个并且不对应于第二数据管理区中的所有子页。
6.如权利要求5所述的数据管理方法,其中,在TRIM管理表中第二数据管理区中的除了所述部分之外的其它部分被管理为有效,以及
其中,非易失性存储器包括多个存储器块并且所述多个存储器块中的每一个可单独擦除,
还包括:
将第二数据管理区的数据从存储第一文件的第一存储器块复制到第二存储器块;然后
将第一存储器块中的第一数据管理区的数据擦除。
7.一种用于使用包括非易失性存储器、控制器和缓冲存储器的数据存储设备的数据管理单位的数据管理方法,所述缓冲存储器基于主机的扇区的大小和所述数据存储设备的数据管理单位的大小临时存储第一文件的数据,所述方法包括:
从主机接收TRIM命令,所述TRIM命令包括在主机中不再需要的第一文件的扇区地址范围,第一文件的数据对应于非易失性存储器中的第一数据管理区以及第二数据管理区的仅仅一部分;
使用映射表将第一文件的扇区地址范围分配到第一数据管理区和第二数据管理区;
在映射表中将第一数据管理区的写状态管理为无效,所述第一数据管理区的大小是所述数据存储设备的数据管理单位的大小的一倍或更多倍并且第二数据管理区的大小是所述数据存储设备的数据管理单位的大小的一倍;
在映射表中将包括所述部分的第二数据管理区的写状态管理为有效,所述部分的大小小于所述数据存储设备的数据管理单位的大小;
使用TRIM管理表来管理第二数据管理区,使得在TRIM管理表中第二数据管理区中的所述部分被指示为无效;以及
响应于清洗操作的请求,将在TRIM管理表中被管理为有效的第二数据管理区中的数据写入非易失性存储器中。
8.如权利要求7所述的数据管理方法,还包括:
所述数据存储设备的数据管理单位的大小大于所述主机的数据管理单位的大小,并且其中,主机的数据管理单位的大小是扇区的大小,而数据存储设备的数据管理单位的大小是页的大小,所述页包括多个子页,每一个子页的大小对应于扇区的大小。
9.如权利要求8所述的数据管理方法,其中映射表包括第一写状态信息,其指示映射表中的每一个数据管理单位是否有效,
其中TRIM管理表包括第二写状态信息并且以子页为单位来管理第二数据管理区,其中第二数据管理区的所述部分对应于子页中的至少一个并且不对应于第二数据管理区中的所有子页。
10.如权利要求9所述的数据管理方法,其中,在TRIM管理表中第二数据管理区中的除了所述部分之外的其它部分被管理为有效。
11.如权利要求10所述的数据管理方法,其中,包括所述部分的第二数据管理区在映射表中保持有效直到第二数据管理区中包括的所有子页都被TRIM管理表的第二写状态信息无效为止。
12.如权利要求7所述的数据管理方法,
其中所述缓冲存储器还在第二数据管理区的至少所述其它部分中存储第二文件的数据,
所述方法还包括:
接收第二TRIM命令,所述第二TRIM命令包括主机中不再需要的第二文件的第二扇区地址范围;
使用TRIM管理表将第二数据管理区管理为无效,然后
将包括第一文件的数据的所述部分和第二文件的数据的所述其它部分的第二数据管理区的写状态改变为无效。
13.一种数据存储设备,该数据存储设备包括:
非易失性存储器,用于存储第一文件的数据,其中第一文件的数据被存储在第一数据管理区以及第二数据管理区的仅仅一部分中;以及
控制器,用于控制非易失性存储器并且从主机接收TRIM命令,所述TRIM命令包括主机中不再使用的第一文件的扇区地址范围,
其中所述控制器被配置为使用映射表将第一文件的扇区地址范围分配给第一数据管理区和第二数据管理区,在映射表中将第一数据管理区的写状态标记为无效,并且在映射表中将包括所述部分的第二数据管理区的写状态管理为有效,并且使用TRIM管理表管理第二数据管理区,使得在TRIM管理表中将第二数据管理区中的所述部分被指示为无效,
其中第一数据管理区的大小是数据存储设备的数据管理单位的大小的一倍或更多倍,并且所述部分的大小小于数据存储设备的数据管理单位的大小。
14.如权利要求13所述的数据存储设备,数据存储设备的数据管理单位的大小大于主机的数据管理单位的大小,并且其中,所述主机的数据管理单位的大小是扇区的大小,而数据存储设备的数据管理单位的大小是页的大小,所述页包括多个子页,每一个子页的大小对应于扇区的大小。
15.如权利要求13所述的数据存储设备,其中,非易失性存储器包括多个存储器块并且所述多个存储器块中的每一个可单独擦除,并且
其中控制器还被配置为,在擦除第一存储器块中的第一数据管理区的数据之前,将第二数据管理区的数据从存储第一文件的数据的第一存储器块复制到第二存储器块。
16.一种用于包括主机和数据存储设备的存储系统的数据管理方法,所述主机具有不同于所述数据存储设备的数据管理单位的数据管理单位,所述方法包括:
生成所述存储系统中不再需要的第一文件的扇区地址范围,第一文件的数据被存储在数据存储设备的第一数据管理区中以及第二数据管理区的仅仅一部分中;
基于从数据存储设备接收的映射表的信息,将第一文件的扇区地址范围分配到第一扇区地址范围和第二扇区地址范围二者,第一扇区地址范围和第二扇区地址范围分别对应于第一数据管理区和第二数据管理区的仅仅一部分;
将包括第一扇区地址范围的TRIM命令发送给数据存储设备,使得在存储设备的映射表中将第一数据管理区的写状态信息标记为无效并且将第二数据管理区的写状态信息保持为有效,并且
在主机中使用TRIM管理表来管理第二扇区地址,使得在TRIM管理表中第二数据管理区中的所述仅仅一部分被指示为无效,
所述第一数据管理区的大小是所述数据存储设备的数据管理单位的大小的一倍或更多倍并且所述部分的大小小于所述数据存储设备的数据管理单位的大小。
17.如权利要求16所述的方法,其中数据存储设备的数据管理单位的大小大于主机的数据管理单位的大小。
18.如权利要求17所述的方法,
所述主机的数据管理单位的大小是扇区的大小,而数据存储设备的数据管理单位的大小是页的大小,所述页包括多个子页,每一个子页的大小对应于扇区的大小。
19.如权利要求18所述的方法,其中第二数据管理区的所述仅仅一部分对应于子页中的至少一个并且不对应于第二数据管理区中的所有子页。
20.一种存储系统,包括:
主机;以及
数据存储设备,
所述主机被配置为驱动文件系统按照不同于数据存储设备的数据管理单位的单位来管理文件,并且改变存储系统中不再需要的第一文件的元数据,第一文件的数据被存储在数据存储设备的第一数据管理区中以及第二数据管理区的仅仅一部分中,
所述主机还被配置为将包括第一文件的第一扇区地址范围的TRIM命令发送给数据存储设备,使得数据存储设备的映射表中的与第一扇区地址对应的写状态信息被标记为无效,并且使用主机的TRIM管理表来管理第一文件的第二扇区地址范围,使得在TRIM管理表中第二数据管理区中的所述仅仅一部分被指示为无效,第一扇区地址范围和第二扇区地址范围分别对应于第一数据管理区和第二数据管理区的仅仅一部分,并且
数据存储设备被配置为将映射表中的对应于第二扇区地址范围的写状态信息保持为有效,
所述第一数据管理区的大小是所述数据存储设备的数据管理单位的大小的一倍或更多倍并且所述部分的大小小于所述数据存储设备的数据管理单位的大小。
21.如权利要求20所述的存储系统,其中数据存储设备的数据管理单位的大小大于主机的数据管理单位的大小。
22.如权利要求21所述的存储系统,其中,所述主机的数据管理单位的大小是扇区的大小,而数据存储设备的数据管理单位的大小是页的大小,所述页包括多个子页,每一个子页的大小对应于扇区的大小。
23.如权利要求22所述的存储系统,其中第二数据管理区的所述仅仅一部分对应于子页中的至少一个并且不对应于第二数据管理区中的所有子页。
24.如权利要求20所述的存储系统,其中,文件系统所改变的第一文件元数据代表第一文件在高层中被删除。
25.如权利要求24所述的存储系统,其中所述主机存储与存储系统中不再需要的至少两个文件对应的扇区地址范围的信息。
26.如权利要求25所述的存储系统,其中在存储系统中不再需要的至少两个文件被请求在分别不同的时间删除。
27.如权利要求23所述的存储系统,其中,所述主机被配置为存储从数据存储设备中的映射表接收的组信息,所述组信息包括主机的数据管理单位和数据存储设备的数据管理单位之间的映射信息。
28.如权利要求20所述的存储系统,其中数据存储设备中的第一数据数据管理区的擦除操作先于数据存储设备中的第二数据管理区的擦除操作被执行。
CN201110338409.0A 2010-10-29 2011-10-31 存储系统、数据存储设备、用户设备及其数据管理方法 Active CN102467455B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR1020100106947A KR101893897B1 (ko) 2010-10-29 2010-10-29 메모리 시스템 및 사용자 장치 그리고 그것의 데이터 관리 방법
KR1020100106946A KR101747791B1 (ko) 2010-10-29 2010-10-29 메모리 시스템 및 데이터 저장 장치 그리고 그것의 데이터 관리 방법
KR10-2010-0106947 2010-10-29
KR10-2010-0106946 2010-10-29

Publications (2)

Publication Number Publication Date
CN102467455A CN102467455A (zh) 2012-05-23
CN102467455B true CN102467455B (zh) 2017-03-01

Family

ID=45997943

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110338409.0A Active CN102467455B (zh) 2010-10-29 2011-10-31 存储系统、数据存储设备、用户设备及其数据管理方法

Country Status (3)

Country Link
US (6) US11232022B2 (zh)
CN (1) CN102467455B (zh)
TW (1) TWI579692B (zh)

Families Citing this family (198)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
TWI579692B (zh) 2010-10-29 2017-04-21 三星電子股份有限公司 記憶體系統、資料儲存系統、使用者裝置及其資料管理方法
KR101844346B1 (ko) * 2010-11-05 2018-04-02 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP2012123499A (ja) 2010-12-07 2012-06-28 Toshiba Corp メモリシステム
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9213632B1 (en) * 2012-02-29 2015-12-15 Marvell International Ltd. Systems and methods for data storage devices to use external resources
US9026887B2 (en) * 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US9323667B2 (en) * 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
US9443591B2 (en) * 2013-01-23 2016-09-13 Seagate Technology Llc Storage device out-of-space handling
US20130326113A1 (en) * 2012-05-29 2013-12-05 Apple Inc. Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory
US8996768B2 (en) 2012-05-31 2015-03-31 Sandisk Technologies Inc. Method and storage device for assessing execution of trim commands
TWI493339B (zh) * 2012-06-13 2015-07-21 Silicon Motion Inc 資料儲存裝置及資料清除方法
JP5802804B2 (ja) * 2012-06-19 2015-11-04 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
CN102999442B (zh) * 2012-11-16 2015-12-02 成都索贝数码科技股份有限公司 面向媒体应用的存储系统及方法
US9235344B2 (en) * 2012-11-28 2016-01-12 International Business Machines Corporation Identifying redundant data for disk image streaming
US9257182B2 (en) * 2012-12-21 2016-02-09 Micron Technology, Inc. Memory devices and their operation having trim registers associated with access operation commands
US20140201167A1 (en) * 2013-01-17 2014-07-17 Dell Products L.P. Systems and methods for file system management
GB2511325A (en) * 2013-02-28 2014-09-03 Ibm Cache allocation in a computerized system
US9015353B2 (en) 2013-03-14 2015-04-21 DSSD, Inc. Method and system for hybrid direct input/output (I/O) with a storage device
KR20150015764A (ko) * 2013-08-01 2015-02-11 삼성전자주식회사 스토리지 디바이스 및 이를 포함하는 스토리지 시스템
CN104424991A (zh) * 2013-08-30 2015-03-18 北京兆易创新科技股份有限公司 一种串行接口nand闪存单元
US9304685B2 (en) 2013-09-10 2016-04-05 Kabushiki Kaisha Toshiba Storage array system and non-transitory recording medium storing control program
KR102252419B1 (ko) * 2014-01-09 2021-05-14 한국전자통신연구원 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
TWI599881B (zh) * 2014-01-22 2017-09-21 群暉科技股份有限公司 用來適應性地管理一固態硬碟之方法、裝置、與計算機程式產品
US9811458B2 (en) * 2014-03-19 2017-11-07 Htc Corporation Mobile electronic device and method for clearing memory blocks based on processor determination of physical block to erase in response to GUI input from user specified time and directing controller to erase within the specified time
US9984007B2 (en) 2014-03-28 2018-05-29 Samsung Electronics Co., Ltd. Storage system and method for performing and authenticating write-protection thereof
KR102196971B1 (ko) 2014-03-28 2020-12-31 삼성전자주식회사 스토리지 시스템, 그것의 쓰기 방지 수행 방법, 그리고 그것의 쓰기 방지 인증 방법
KR102289919B1 (ko) 2014-04-15 2021-08-12 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
CN103984641B (zh) * 2014-05-22 2017-12-22 华为技术有限公司 一种基于精简配置技术的存储空间回收方法及其装置
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
KR102282006B1 (ko) * 2014-08-19 2021-07-28 삼성전자주식회사 컴퓨터 장치 및 저장 장치
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
KR20160070920A (ko) * 2014-12-10 2016-06-21 에스케이하이닉스 주식회사 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
US10282096B1 (en) 2014-12-17 2019-05-07 Western Digital Technologies, Inc. Identification of data with predetermined data pattern
KR102506135B1 (ko) * 2015-03-16 2023-03-07 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
CN105446655A (zh) * 2015-04-23 2016-03-30 北京天诚盛业科技有限公司 对Nand Flash进行操作的方法和装置
CN105630405B (zh) * 2015-04-29 2018-09-14 上海磁宇信息科技有限公司 一种存储系统及采用该存储系统的读写方法
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9507711B1 (en) * 2015-05-22 2016-11-29 Sandisk Technologies Llc Hierarchical FTL mapping optimized for workload
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10216418B2 (en) * 2015-06-01 2019-02-26 Samsung Electronics Co., Ltd. Storage apparatus and method for autonomous space compaction
US11042328B2 (en) * 2015-06-01 2021-06-22 Samsung Electronics Co., Ltd. Storage apparatus and method for autonomous space compaction
KR102316198B1 (ko) * 2015-06-12 2021-10-25 삼성전자주식회사 파일 액세스 방법, 컴퓨터, 및 컴퓨터-읽기 가능한 매체에 실행 가능한 소프트웨어 제품
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US9880770B2 (en) * 2015-09-02 2018-01-30 SK Hynix Inc. Supporting invalidation commands for non-volatile memory
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
TWI537728B (zh) * 2015-09-23 2016-06-11 群聯電子股份有限公司 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
CN106557432B (zh) * 2015-09-29 2019-08-06 群联电子股份有限公司 缓冲存储器管理方法、存储器控制电路单元及存储装置
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10705952B2 (en) 2015-11-04 2020-07-07 Sandisk Technologies Llc User space data storage management
CN106843742A (zh) * 2015-12-03 2017-06-13 广明光电股份有限公司 固态硬盘及其执行删除命令的方法
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10360108B2 (en) * 2016-01-05 2019-07-23 Acronis International Gmbh System and method of using performance-maintaining commands for generating a backup of unsupported file systems
CN105760311B (zh) * 2016-02-17 2019-08-30 珠海全志科技股份有限公司 trim命令响应方法和系统及操作系统
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
CN106293521B (zh) * 2016-08-02 2019-04-12 华中科技大学 一种映射粒度自适应的闪存转换层管理方法
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10853233B2 (en) * 2016-10-18 2020-12-01 Toshiba Memory Corporation Reconstruction of address mapping in a host of a storage system
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
TWI643067B (zh) * 2017-04-14 2018-12-01 國立臺灣科技大學 三維非及閘快閃記憶體及其記憶體管理方法
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
TWI634424B (zh) * 2017-05-08 2018-09-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10521375B2 (en) * 2017-06-22 2019-12-31 Macronix International Co., Ltd. Controller for a memory system
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
JP6883740B2 (ja) * 2017-08-22 2021-06-09 パナソニックIpマネジメント株式会社 情報記録装置及びデータ消去方法
KR20190023247A (ko) * 2017-08-28 2019-03-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
KR20190044968A (ko) * 2017-10-23 2019-05-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10649656B2 (en) 2017-12-28 2020-05-12 Micron Technology, Inc. Techniques to update a trim parameter in non-volatile memory
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US10909030B2 (en) * 2018-09-11 2021-02-02 Toshiba Memory Corporation Enhanced trim command support for solid state drives
US20200104384A1 (en) * 2018-10-02 2020-04-02 Nutanix, Inc. Systems and methods for continuous trim commands for memory systems
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
KR20200071282A (ko) * 2018-12-11 2020-06-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200088713A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11481335B2 (en) * 2019-07-26 2022-10-25 Netapp, Inc. Methods for using extended physical region page lists to improve performance for solid-state drives and devices thereof
US11144448B2 (en) * 2019-08-05 2021-10-12 Micron Technology, Inc. Memory sub-system for managing flash translation layers table updates in response to unmap commands
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
CN111462805B (zh) * 2020-03-11 2022-10-18 苏州浪潮智能科技有限公司 一种全面快速测试NVME SSD Trim功能的方法及装置
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
JP2022016899A (ja) 2020-07-13 2022-01-25 キオクシア株式会社 メモリシステム及び情報処理システム
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
CN112799591A (zh) * 2021-01-21 2021-05-14 北京鼎普科技股份有限公司 文件擦除方法、装置及电子设备
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
TWI773371B (zh) * 2021-06-09 2022-08-01 宇瞻科技股份有限公司 固態硬碟
JP2023001494A (ja) * 2021-06-21 2023-01-06 キオクシア株式会社 メモリシステムおよび制御方法
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
CN114168082B (zh) * 2021-12-10 2023-07-04 深圳忆联信息系统有限公司 避免ssd空闲块耗尽的方法、装置、计算机设备及存储介质
CN114296642A (zh) * 2021-12-15 2022-04-08 合肥大唐存储科技有限公司 一种固态硬盘中trim指令的处理方法和固态硬盘
TWI813362B (zh) * 2022-06-30 2023-08-21 群聯電子股份有限公司 部分抹除管理方法、記憶體儲存裝置及記憶體控制電路單元

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354715A (zh) * 2007-02-13 2009-01-28 三星电子株式会社 用于操作数据处理系统的系统、方法和计算机程序产品
CN101840307A (zh) * 2009-03-17 2010-09-22 株式会社东芝 控制器和存储器系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7180798B2 (en) 2001-04-12 2007-02-20 Fuji Electric Co., Ltd. Semiconductor physical quantity sensing device
JP4510498B2 (ja) 2004-04-05 2010-07-21 セイコーインスツル株式会社 半導体集積回路
KR100578143B1 (ko) 2004-12-21 2006-05-10 삼성전자주식회사 버퍼 메모리에 저장된 데이터를 무효화시키는 스킴을 갖는저장 시스템 및 그것을 포함한 컴퓨팅 시스템
US8122193B2 (en) * 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
KR101404083B1 (ko) 2007-11-06 2014-06-09 삼성전자주식회사 반도체 디스크 및 그것의 동작 방법
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
JP5067836B2 (ja) 2005-12-19 2012-11-07 ルネサスエレクトロニクス株式会社 不揮発性半導体記憶装置及びその動作方法
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
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
KR100845530B1 (ko) 2007-07-02 2008-07-10 삼성전자주식회사 플래시 메모리 장치 및 그것의 동작 방법
KR101078287B1 (ko) 2007-12-14 2011-10-31 한국전자통신연구원 다중 복제를 지원하는 분산 파일 시스템에서 데이터 서버의복구 방법 및 그에 적당한 메타데이터 스토리지 및 저장방법
US8775717B2 (en) * 2007-12-27 2014-07-08 Sandisk Enterprise Ip Llc Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
US8275933B2 (en) 2008-11-10 2012-09-25 Fusion-10, Inc Apparatus, system, and method for managing physical regions in a solid-state storage device
US8261030B2 (en) 2008-11-18 2012-09-04 Microsoft Corporation Using delete notifications to free related storage resources
KR20100094862A (ko) 2009-02-19 2010-08-27 삼성전자주식회사 스토리지 장치 및 그것의 데이터 관리 방법
JP2011128998A (ja) * 2009-12-18 2011-06-30 Toshiba Corp 半導体記憶装置
US20110208898A1 (en) * 2010-02-23 2011-08-25 Samsung Electronics Co., Ltd. Storage device, computing system, and data management method
TWI579692B (zh) 2010-10-29 2017-04-21 三星電子股份有限公司 記憶體系統、資料儲存系統、使用者裝置及其資料管理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354715A (zh) * 2007-02-13 2009-01-28 三星电子株式会社 用于操作数据处理系统的系统、方法和计算机程序产品
CN101840307A (zh) * 2009-03-17 2010-09-22 株式会社东芝 控制器和存储器系统

Also Published As

Publication number Publication date
US20140372685A1 (en) 2014-12-18
US20120110249A1 (en) 2012-05-03
US20220129373A1 (en) 2022-04-28
US11636032B2 (en) 2023-04-25
TWI579692B (zh) 2017-04-21
US20230273876A1 (en) 2023-08-31
TW201229754A (en) 2012-07-16
CN102467455A (zh) 2012-05-23
US20220129374A1 (en) 2022-04-28
US11232022B2 (en) 2022-01-25
US20220129375A1 (en) 2022-04-28
US11640353B2 (en) 2023-05-02

Similar Documents

Publication Publication Date Title
CN102467455B (zh) 存储系统、数据存储设备、用户设备及其数据管理方法
US8166233B2 (en) Garbage collection for solid state disks
JP6076506B2 (ja) ストレージ装置
US8626987B2 (en) Flash memory system and defragmentation method
US8166258B2 (en) Skip operations for solid state disks
CN105934749A (zh) 用于数据存储系统的垃圾收集和数据重定位
CN106557432B (zh) 缓冲存储器管理方法、存储器控制电路单元及存储装置
US10296250B2 (en) Method and apparatus for improving performance of sequential logging in a storage device
CN106354615A (zh) 固态硬盘日志生成方法及其装置
TW201316170A (zh) 非揮發記憶體系統中未使用之邏輯位址之掛載時間解映射
CN105912475A (zh) 用于ssd上的写时复制的系统和方法
CN107239526A (zh) 文件系统实现方法、碎片整理方法、操作位置定位方法
CN103377143B (zh) 存储器管理方法、存储器控制器与存储器存储装置
KR101893897B1 (ko) 메모리 시스템 및 사용자 장치 그리고 그것의 데이터 관리 방법
US9389998B2 (en) Memory formatting method, memory controller, and memory storage apparatus
TW201706848A (zh) 有效資料合併方法、記憶體控制器與記憶體儲存裝置
EP3926451A1 (en) Communication of data relocation information by storage device to host to improve system performance
CN102200946B (zh) 资料存取方法、记忆体控制器与储存系统
KR101747791B1 (ko) 메모리 시스템 및 데이터 저장 장치 그리고 그것의 데이터 관리 방법
JP2009503740A (ja) データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け
CN205983448U (zh) 用于固态硬盘的控制芯片及固态硬盘
CN104360956A (zh) 一种数据拷贝方法及装置
CN111061683B (zh) 一种高速存储和操作数据流的方法与装置
TW201445312A (zh) 資料讀取方法、快閃記憶體控制器與儲存系統
CN117369715A (zh) 基于存储设备中的引用更新使用回收单元的系统、方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant