CN112771493A - 将写入流分离到多个分区中 - Google Patents
将写入流分离到多个分区中 Download PDFInfo
- Publication number
- CN112771493A CN112771493A CN201980063883.1A CN201980063883A CN112771493A CN 112771493 A CN112771493 A CN 112771493A CN 201980063883 A CN201980063883 A CN 201980063883A CN 112771493 A CN112771493 A CN 112771493A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- partitions
- partition
- inference
- 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
- 238000005192 partition Methods 0.000 title claims abstract description 127
- 238000000034 method Methods 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 25
- 238000011084 recovery Methods 0.000 claims description 6
- 238000000926 separation method Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000013507 mapping Methods 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- -1 light Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- 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/068—Hybrid storage device
-
- 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
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/217—Hybrid disk, e.g. using both magnetic and solid state storage 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/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种操作存储控制器的方法。所述方法包括:接收由主机传送的数据,用于存储在存储介质的目标分区中;以及检测所述数据的属性。所述方法还包括:至少基于所述数据的所述属性,在所述存储介质上建立一个或多个推断分区;以及至少基于所述数据的所述属性,将所述数据的子集分类,用于存储在所述目标分区和所述一个或多个推断分区内。
Description
相关申请
本申请特此要求享有于2018年9月28日提交的、标题为“WRITE STREAMSEPARATION INTO MULTIPLE PARTITIONS”的申请号为62/738,780的美国临时专利申请的权益和优先权,并且该美国临时专利申请的全部内容特此通过引用并入。
技术领域
本公开内容的多个方面涉及数据存储,并且具体地涉及对数据流进行分区。
背景技术
闪存非易失性存储设备在计算机中通常用作高速固态存储设备。这些设备需要通常像随机写入/随机读取的小型数据块设备一样工作的闪存控制器。它们的数据块大小通常为8-16KB。由这些驱动器接收的用于存储的写入数据可以由不同的数据类型的子集组成。这些子集可以对数据吞吐量和访问时间、介质损耗、服务质量(QoS)等具有不同的要求。通常,闪存控制器在存储数据时不会识别或区分这些不同的子集。
发明内容
在一个实施方案中,提供了一种操作存储控制器的方法。所述方法包括:接收由主机传送的数据,用于存储在存储介质的目标分区中;以及检测所述数据的属性。所述方法还包括:至少基于所述数据的所述属性,在所述存储介质上建立一个或多个推断分区;以及至少基于所述数据的所述属性,将所述数据的子集分类,用于存储在所述目标分区和所述一个或多个推断分区内。
在另一个实施方案中,提供了一种用于存储系统的存储控制器。所述存储控制器包括:主机接口,其被配置为接收用于存储在所述存储系统内的主机数据;存储接口,其被配置为向所述存储系统传送存储数据;以及与所述主机接口和所述存储接口耦接的处理电路。
所述处理电路被配置为:接收由主机传送的数据,用于存储在所述存储系统内的存储介质的目标分区中;以及检测所述数据的属性。所述处理电路还被配置为:至少基于所述数据的所述属性,在所述存储介质上建立一个或多个推断分区;以及至少基于所述数据的所述属性,将所述数据的子集分类,用于存储在所述目标分区和所述一个或多个推断分区内。
附图说明
参考以下附图可以更好地理解本公开内容的许多方面。虽然结合这些附图描述了若干实施方式,但是本公开内容不限于本文所公开的实施方式。相反,目的是覆盖所有替代方案、改型和等同物。
图1例示了计算机主机和数据存储系统。
图2例示了数据存储系统的一个示例实施方案。
图3例示了被配置用于在视频流应用程序中使用的一个示例存储器阵列。
图4例示了用于对数据进行分区的一种示例方法。
图5例示了一种存储控制器。
具体实施方式
本文所描述的示例实施方案例示了用于固态存储设备(诸如固态驱动器(SSD))将单个写入数据流分离到该设备内部的多个分区中的不同的方法。写入数据由不同的子集组成,如果将不同的子集写入到具有用于该子集的最佳属性的单独的分区,则导致更好的总体驱动器性能(数据吞吐量和访问时间、介质损耗等)和更低的驱动器成本。在主机未直接用数据指定数据子集类型的实施例中,驱动器使用其他信息来推断数据子集类型。
在一个示例实施方案中,每个分区具有用于每个数据子集的最佳属性。这些属性包括:块大小、块打包效率、性能(等待时间和吞吐量)、闪存转换层(FTL)实施方式和资源成本(扁平化映射与具有不同的动态随机存取存储器(DRAM)要求的基于扩展区的映射)、垃圾收集算法、密度(单级单元(SLC)与三级单元(TLC)与四级单元(QLC))、服务质量(QoS)、高速缓存大小(读和写)和策略(预读)、容量、安全和/或加密、掉电保护等。
在下文所描述的示例实施方案中,例示了几种不同的分离方法。这些分离方法包括:通过数据“温度”(热或冷)分离、通过写入命令大小分离以及通过写入命令位置分离。在本发明的范围内可以使用其他分离方法。这三个分离方法被例示为示例方法。
本文未详细描述主机直接用数据(即,非易失性存储器标准(Non-VolatileMemory Express,NVMe)流和/或命名空间)指定数据子集类型的情况,但是在本发明的范围内,所述情况仍然可以通过本文所描述的实施方案来实现。
通过温度分离:最近写入的用户数据被认为是“热”的。如果数据块未由于被重写而改变,则随着时间的流逝,此数据可以由垃圾收集发现并且被物理地重新定位。此时,该数据现在被认为是“冷”的并且在内部从“热”数据移动到单独的分区。
通过写入命令大小分离:用户写入命令指定要写入的多个连续的数据块。基于每个写入命令的连续的块的总大小,将写入命令分离到不同的内部分区中。
通过写入命令位置分离:每个写入命令都指定与要写入的数据相关联的位置(逻辑块地址(LBA))。基于写入命令LBA,将写入命令分离到不同的内部分区中。
驱动器工作负载由不同类型的数据组成,并且对所有数据进行相同处理可能导致效率低下,从而影响性能、介质寿命和总体驱动器成本。
在以下情况下驱动器性能被改进:可以确定主机数据的特定子集的类型,从而导致将子集分离到不同的分区中,每个分区具有用于主机数据子集类型的最佳属性。
通过为特定的驱动器工作负载使用/调整(sizing)物理资源(闪存类型、DRAM大小等)来降低驱动器成本,而不是过度配置以处理一般/未知/最坏情况的工作负载。
当热数据流和冷数据流混合在同一分区内部时,可能发生若干问题。热数据流和冷数据流的交错可能干扰任一流中的LBA顺序性。有顺序的数据有效地在介质上被打包以供读取,并且顺序性中断可能导致读取性能下降。在基于扩展区的映射表中最佳地跟踪有顺序的数据,并且顺序性中断需要更多的扩展区,从而导致读取性能下降、更长的表恢复时间以及额外的昂贵的内存。此外,在同一分区中热数据流和冷数据流的交错可能导致不必要地多次对冷数据进行垃圾收集,从而增加写入放大和过早的介质损耗。
将冷数据写入到单独的分区保持了热数据流和冷数据流二者中的LBA顺序性,并且允许以适当的节奏对冷数据进行垃圾收集。
当在内部写入到诸如NAND的介质时,内部写入块大小通常大于外部块大小。这意味着在执行内部写入之前,驱动器可能需要从多个主机写入命令中累积数据。此累积的数据可以存储在易失性存储器中。如果驱动器掉电,并且在掉电时无法将此累积的数据写入到介质,则用户数据随后也会丢失。为了解决存储在易失性介质中的用户数据的此问题,主机软件可以向驱动器发出刷新操作,这可以迫使设备填充等待累积的数据以执行内部写入。这可能会浪费内部容量并且增加写入放大。
通过按照命令块大小将主机写入分离到多个分区中,驱动器可以将内部分区的属性与要写入该内部分区的预期块大小匹配并且更有效地使用容量。驱动器可以通过几种不同的方法检测数据子集类型。
通过温度分离:根据对存储介质上的数据的更新的频率,存储的数据可以被认为是“热”的或“冷”的。在初始状态下,从主机写入的所有数据被认为是热的,并且被写入同一分区。随着时间的流逝,如果被更频繁地访问,则数据仍然是热的,并且此热数据被分区内的新介质位置中的新副本替换。在垃圾收集期间,任何保留在其原始位置的数据被分类为是冷的,并且被重新定位到不同的分区。在一个实施方案中,跟踪读取活动以影响正确的子集类型分类。例如,一次写入但是频繁地读取的数据与一次写入但是不频繁地读取的数据被区别地处理。
在一个示例实施方案中,被频繁地访问和更新的数据(即,热数据)存储在快速性能介质/低等待时间介质(即,单级单元(SLC))或具有较低保留能力的介质中,因为它将在不久的将来被改变或替代。可能根本不需要对热数据进行垃圾收集,因为它比将需要重新定位操作的介质保留属性更快地改变。不被频繁地访问和更新的数据(即,冷数据)存储在较慢性能介质(即,三级单元(TLC)或四级单元(QLC))或具有较高保留能力的介质中。
通过写入命令大小分离:对于某些工作负载,写入命令大小与数据子集类型直接相关:
·文件系统数据和元数据使用小的写入命令被写入,并且被频繁地读取和写入。
·以读取为主的工作负载中的用户数据(即,数据库表)使用大的写入命令被写入,不被频繁地写入但是被频繁地读取。
·其他用户数据(即,日志)以中等大小的写入命令被写入和覆盖,被频繁地写入但是不被频繁地读取。
基于写入命令大小将主机写入流分离到多个分区中有效地在数据由主机写入时按照访问模式将数据分类。
在一个示例实施方案中,工作负载包括相对少量的小的块区域(即,文件系统元数据)和大量的大的块区域(即,数据库表文件)。按照主机命令大小将传入的数据分离到单独的分区中。使用与主机命令大小匹配的块大小,小的块分区比大的分区小得多。大的块分区使用适用于大的顺序块的FTL算法(即,基于扩展区的),而小的块分区使用适用于小的随机块的FTL算法(即,扁平化映射)。
通过写入命令位置分离:对于某些工作负载,写入命令位置(逻辑块地址)与数据子集类型直接相关。文件系统数据和元数据被写入固定位置中,并且被频繁地更新。用户数据(即,数据库表)被写入到其他位置,并且不被频繁地更新。
在其他情况下,主机和驱动器在驱动器命令集(即,SATA)中可用的参数之外进行协调,并且将多个LBA范围指定为单独的分区,驱动器将多个LBA范围直接映射到具有适当的属性的单独的分区。
例如,管理程序将其驱动器视图分区为单独的LBA区域用于其用户进程中的每个。如果驱动器知道区域边界,则它给每个区域具有适当的QoS和安全属性的其自己的内部分区。
典型的传统(legacy)驱动器在存储介质分区方面对所有数据进行相同处理,从而导致介质使用效率低下、性能较低以及较高的成本以覆盖最坏情况下的数据模式。较新的驱动器命令集(即,NVMe流和命名空间)将数据类型信息添加到命令集,以帮助驱动器将数据导向适当的介质位置。然而,在示例实施方案中,在传统(即,串行高级技术附件(SATA))命令集场景和较新的命令集场景二者中都使用通过温度、命令大小或命令位置来识别数据类型,以提供更好的性能和更低的成本的解决方案。
本文所描述的增强型驱动器基于各种间接属性(数据温度、命令大小和命令位置)从数据流中有利地检测不同的数据子类型,并且将每个数据子类型存储在具有适合该数据子类型的属性的单独的分区中,从而导致更高的性能和更低的成本。
图1例示了计算机主机和数据存储系统100。在此示例实施方案中,主机系统110向存储控制器120发送数据并且从存储控制器120接收数据,用于存储在存储系统130中。在一个示例实施方案中,存储系统130包括闪存非易失性存储器,诸如NAND存储器。NAND存储器仅仅是一个实施例,存储系统130的其他实施方案可以包括其他类型的存储器。存储介质可以是任何非易失性存储器,诸如闪存、磁性随机存取存储器、相变存储器、光学或磁性存储器、固态存储器或其他形式的非易失性存储设备。
存储控制器120通过链路150与存储系统通信,并且执行将从主机系统110接收的数据配置为有效地使用存储系统130的存储资源的格式的功能。
存储控制器120提供在主机系统110使用的标准存储接口和命令协议到存储系统130内的存储设备使用的命令协议和物理接口之间的转换。此外,存储控制器120实施分区、纠错码(ECC)编码/解码功能,以及数据编码、数据恢复、重试恢复方法以及其他进程和方法,以优化数据效率和完整性。
在一个示例实施方案中,存储控制器120被配置为基于写入数据的属性将从主机系统110接收的写入数据流分离到存储系统130内的一个或多个目标分区131和推断分区132中。如上文所讨论的,存储控制器120可以使用几种不同的方法中的任何一种来将写入数据流分离到具有针对写入数据流的每个子集优化的属性的不同的分区中。
在一个示例实施方案中,存储控制器120可以基于数据温度分离写入数据流,并且将“热”数据放置到“热”推断分区132中,以及将“冷”数据放置到“冷”推断分区132中。
在其他实施方案中,存储控制器120基于从写入命令大小推断出的预期块大小将写入数据流分离,并且将大的数据块放置到大的块推断分区132中,以及将小的数据块放置到小的块推断分区132中。下文参照图3进一步详细地描述了此实施例。
存储控制器120可以采用各种各样的配置中的任何一种。在一些实施例中,存储控制器120可以是具有软件的现场可编程门阵列(FPGA)、具有存储缓冲区的软件、被设计为包括在具有存储系统130的单个模块中的专用集成电路(ASIC)、用于创建ASIC的一组硬件描述语言(HDL)命令(诸如Verilog或System Verilog)、相对于存储系统130的分立模块、内置于存储系统130中或许多其他可能的配置中的任何一种。
主机系统110通过各种通信链路——诸如通信链路140——与存储控制器120通信。这些通信链路可以使用互联网或其他全球通信网络。每个通信链路都可以包括一个或多个无线链路,该无线链路可以各自还包括长期演进(LTE)、全球移动通信系统(GSM)、码分多址(CDMA)、IEEE 802.11WiFi、蓝牙、个人局域网(PAN)、广域网(WAN)、局域网(LAN)或无线局域网(WLAN),包括上述无线链路的组合、变型和改进。这些通信链路可以携带适用于无线通信的任何通信协议,诸如互联网协议(IP)或以太网。
此外,通信链路可以包括一个或多个有线部分,该有线部分可以包括同步光纤网络(SONET)、混合光纤同轴电缆(HFC)、时分复用(TDM)、异步传输模式(ATM)、电路交换、通信信令或一些其他通信信令,包括上述有线部分的组合、变型或改进。通信链路可以各自使用金属、玻璃、光、空气、空间或一些其他材料作为传输介质。通信链路可以各自是直接链路,或可以包括中间网络、系统或设备,并且可以包括通过多个物理链路传输的逻辑网络链路。
存储控制器120通过链路150与存储系统130通信。链路150可以是到存储设备或阵列的任何接口。在一个实施例中,存储系统130包括NAND闪存,并且链路150可以使用开放NAND闪存接口(ONFI)命令协议或“切换”命令协议以在存储控制器120和存储系统130之间进行通信。其他实施方案可以使用其他类型的存储器和其他命令协议。其他常见的低级存储接口包括DRAM存储器总线、SRAM存储器总线和SPI。
链路150也可以是更高级别的存储接口,诸如SAS、SATA、PCIe、以太网、光纤通道、无限带宽技术(Infiniband)等。然而,在这些情况下,存储控制器120将驻留在存储系统130中,如同存储系统130具有其自己的控制器。
图2例示了数据存储系统200。此示例系统包括存储控制器210和存储系统220。存储系统220包括存储阵列230。存储阵列230包括目标分区231和推断分区232-235。
在一个示例实施方案中,存储介质230包括NAND存储器集成电路。其他实施方案可以使用其他类型的存储器。存储介质可以是任何非易失性存储器,诸如闪存、磁性随机存取存储器、相变存储器、光学或磁性存储器、固态存储器或其他形式的非易失性存储设备。在此实施例中,存储阵列230被分区为一个目标分区231和几个推断分区232。这些区域在存储阵列230上被物理地分区,使得两个区域不共享任何存储块,从而确保存储阵列230上的每个物理位置仅属于一个区域,如图3中所例示的。
存储控制器210包括多个块或模块,该块或模块包括主机接口211、处理器212(包括分区管理器218)、存储接口端口0 213和存储接口端口1 214。处理器212通过链路215、216和217与其他块通信。存储接口端口0 213通过链路201与存储系统220通信,并且存储接口端口1 214通过链路202与存储系统220通信。
在一些示例实施方案中,存储接口端口0和1(213和214)可以使用开放NAND闪存接口(ONFI)命令协议或“切换”命令协议以通过链路201和201与存储系统220通信。ONFI规范包括物理接口以及ONFI端口0和1的命令协议二者。该接口包括8位总线(在链路201和202中),并且使得存储控制器210在存储阵列230内执行读取、编程、擦除和其他相关联的操作。
在此实施例中,处理器212通过链路215通过主机接口211从主机接收主机数据。处理器212根据需要配置数据,用于存储在存储系统220中,并且将数据传送到存储接口端口0和1(213和214),用于通过链路201和202传送到存储系统220。
通常,在存储介质上采用单个目标分区231来存储写入数据流,不管包含在该流内的数据的类型。此目标分区231由主机在主机通过链路发出的任何相关联的写入命令中指示。
在此示例实施方案中,分区管理器218作为处理器212的一部分被实现,并且被配置为将写入数据流分离为两个或更多个写入数据的子集,以及至少部分地基于写入数据的属性将这些写入数据的子集存储在存储系统220内的不同的分区中,如图3和图4中所例示的以及如下文详细描述的。如上文所讨论的,可以使用写入数据的各种不同的属性来将写入数据流分离为子集。在一些实施方案中,主机系统110包括写入数据流内的写入数据的属性。在本文所讨论的实施例中,存储控制器210检测写入数据的各种属性,并且使用各种方法来将写入数据流分离为子集。
在本文的增强实施例中,一个或多个推断分区232-235由存储控制器210创建。这些推断分区232-235对应于为数据或对应于该数据的写入命令检测的一个或多个属性,诸如热/冷状态、写入命令大小、写入命令位置或从数据或写入命令检测的其他因素。
主机通常不会在任何写入或读取命令中指示这些推断分区232-235,并且存储控制器210维护数据结构以将数据的主机命令与特定的推断分区232-235或显式分区231相关联。响应于另外的主机命令(诸如数据写入或数据读取),存储控制器210根据先前为数据检测的属性将写入数据的子集分配到推断分区232-235或目标分区231中。此外,响应于读取命令,存储控制器210根据数据先前存储的位置提供来自推断分区232-235或目标分区231的数据。
图3例示了被配置用于在视频流应用程序中使用的示例存储器阵列300。在此示例实施方案中,考虑针对视频流应用程序的驱动器。在此实施例中,典型的数据使用模式将为:
·初始驱动器文件系统格式,由分散在LBA地址空间中的少量的小的块命令组成。
·视频资产的初始填充,由要写入数千兆字节的视频文件的顺序LBA位置中的大量的大的块命令组成。在资产填充操作期间,
多次读取和更新文件系统块。
·视频流,由要读取数千兆字节视频文件来服务多个客户的顺序LBA位置中的大量的大的命令组成。在此阶段期间,读取文件系统块以定位视频文件。没有向驱动器发送写入命令。
·资产更新,由删除现有的视频文件和写入新的视频文件组成。在删除文件之后,命令流量类似于初始填充阶段。在资产更新期间,视频流未被执行到驱动器。
在此示例应用程序中,驱动器被配置为基于命令大小将数据分离到单独的分区。小的数据块被存储在小的块分区310中,并且大的数据块被存储在大的块分区320中。每个分区具有如下文所描述的不同的属性。
小的块分区310:
·内部块大小被设置为典型的文件系统更新命令突发大小,以有效地利用介质并且在更新期间不会引发额外的填充数据。
·总分区大小是文件系统块总数的几倍,但是比大的块分区小得多。
·执行最小的垃圾收集操作,因为数据模式是自然地自刷新的。
·写入高速缓存根据文件系统更新命令突发来调整大小,因为任何额外的高速缓存容量都将不会被充分利用。
·未创建读取高速缓存,因为随着多个客户端基于人的喜好读取不同的视频文件,读取访问模式是随机的并且不可预测的。
·高吞吐量和小等待时间介质(即,SLC)被用来保持文件系统运行时间短,提高文件位置性能以及减少受到掉电事件。
·启用掉电保护,在掉电后保持文件系统数据一致。
·实施扁平化映射FTL,支持随机数据访问模式,但是由于小的分区大小,总的映射大小非常小。
大的块分区320:
·内部块大小被设置为填充写入命令大小以有效地利用介质。
·总分区大小具有足够的备用容量以支持文件删除和覆盖,以及由于介质损耗而导致的垃圾收集。
·设置写入高速缓存大小以支持所期望的资产填充性能。
·实施最小的垃圾收集操作,因为数据变化不大,并且仅在资产更新操作期间变化。
·读取高速缓存大小被设置以支持多个客户端执行顺序读取。由于顺序读取数据模式,因此使用了预读策略。
·利用较低的吞吐量和潜在地较高的等待时间的介质(即,TLC/QLC),并且调整其大小以满足所期望的资产填充性能和客户端读取性能。
·不提供掉电保护。每个视频资产在整个环境(planet)上被多次复制,并且对每个驱动器不是珍贵的。与提供最小的掉电电路所节省的成本相比,通电时检查视频文件完整性和替换损坏的文件的成本很小。
·实施基于扩展区的FTL,支持有顺序的数据访问模式。尽管分区大小很大,但是由于数据的极端顺序性总体映射大小很小。
在此示例实施方案中,此驱动器比典型的驱动器便宜,因为与针对通用用途的驱动器相比,其需要的电力保护电路和DRAM少得多。由于文件系统数据和视频数据未被组合在同一介质位置中,因此该驱动器性能比典型的驱动器高。
图4例示了用于掉电恢复的一种示例方法。在此实施例中,存储控制器120接收由主机系统110传送的数据,用于存储在存储介质130的目标分区131中(操作400)。存储控制器120检测数据的各种属性(操作402)。
存储控制器120至少基于数据的属性在存储介质130上建立一个或多个推断分区132(操作404)。存储控制器120至少基于数据的属性将数据的子集分类,用于存储在目标分区131和一个或多个推断分区132内。
图5例示了存储控制器500,诸如来自图2的存储控制器210。如上文所讨论的,存储控制器500可以采用多种多样的配置中的任何一种。在此,提供用于实施为ASIC的存储控制器的一种示例配置。然而,在其他实施例中,存储控制器500可以内置于存储系统或存储阵列中,或内置于主机系统中。
在此示例实施方案中,存储控制器500包括主机接口510、处理电路520、存储接口530和内部存储系统540。主机接口510包括被配置为从外部主机系统接收数据和命令以及向主机系统发送数据的电路。
存储接口530包括被配置为向外部存储系统发送数据和命令以及从存储系统接收数据的电路。在一些实施方案中,存储接口530可以包括用于与存储系统通信的ONFI端口。
处理电路520包括被配置为执行存储控制器的任务的电子电路,该存储控制器能够将写入数据流分区到目标分区和推断分区,如上文所描述的。处理电路520可以包括微处理器和检索以及执行软件560的其他电路。在一些实施方案中,处理电路520可以被嵌入在存储系统中。处理电路520的实施例包括通用中央处理单元、专用处理器和逻辑设备,以及任何其他类型的处理设备、其组合或变型。处理电路520可以在单个处理设备内实现,但是也可以分布在用执行程序指令合作的多个处理设备或子系统上。
内部存储系统540可以包括能够存储通过处理电路520可执行的软件560的任何非暂时性计算机可读存储介质。内部存储系统520还可以包括各种数据结构550,该数据结构550包括一个或多个数据库、表、列表或其他数据结构。存储系统540可以包括在以用于存储信息——诸如计算机可读指令、数据结构、程序模块或其他数据——的任何方法或技术实现的易失性和非易失性、可移除和不可移除的介质。
存储系统540可以作为单个存储设备来实现,但是也可以在同地协作或相对于彼此分布的多个存储设备或子系统上实现。存储系统540可以包括能够与处理电路520通信的附加元件,诸如控制器。存储介质的实施例包括随机存取存储器、只读存储器、磁盘、光盘、闪存、虚拟存储器和非虚拟存储器、磁盒、磁带、磁盘存储器或其他磁存储设备,或可以被用来存储所需信息并且可以由指令执行系统访问的任何其他介质,以及上述的任何组合或变型。
软件560可以用程序指令实现,并且除了其他功能之外,该软件当通常由存储控制器500来执行时,或特别是由处理电路520执行时,可以指示存储控制器500或处理电路520以如本文所描述的来操作用于存储控制器。软件560可以包括附加的进程、程序或组件,诸如操作系统软件、数据库软件或应用程序软件。软件560还可以包括由处理电路520的元件可执行的固件或一些其他形式的机器可读处理指令。
在至少一种实施方式中,程序指令可以包括控制器模块562和分区管理器模块564。控制器模块562包括指示处理电路520以操作存储设备(诸如闪存)的指令,包括转换命令、编码数据、解码数据、配置数据等。分区管理器模块564包括指示处理电路520的指令,以检测写入数据流中的数据的属性,基于该属性在存储介质上建立推断分区,以及基于该属性将写入数据流的子集分类,用于存储在目标分区或推断分区内。
通常,当软件560被加载到处理电路520中并且被执行时,该软件可以将处理电路520整体地从通用计算系统转换成如本文针对存储控制器所描述的那样操作以及进行其他操作的定制化的专用计算系统。内部存储系统540上的编码软件560可以转换内部存储系统540的物理结构。物理结构的特定转换可以取决于本说明书的不同实施方式中的各种因素。这样的因素的实施例可以包括但不限于用来实现内部存储系统540的存储介质的技术以及计算机存储介质是否被表征为主存储或辅助存储。
例如,如果计算机存储介质被实现为基于半导体的存储器,则当在其中对程序进行编码时,软件560可以转换半导体存储器的物理状态。例如,软件560可以转换构成半导体存储器的晶体管、电容器或其他分立电路元件的状态。对于磁性或光学介质而言,可以发生类似的转换。在不脱离本说明书的范围的情况下,物理介质的其他转换是可能的,提供前述实施例仅是为了便于此讨论。
所包括的描述和附图描绘了教导本领域技术人员如何作出和使用最佳模式的具体实施方案。出于教导发明原理的目的,已经简化或省略了一些常规方面。本领域技术人员将明了落在本发明的范围内的根据这些实施方案的变型。本领域技术人员还将明了,可以各种方式将上文所描述的特征进行组合以形成多个实施方案。因此,本发明不限于上文所描述的具体实施方案,而是仅受权利要求以及其等同物限制。
Claims (20)
1.一种操作存储控制器的方法,所述方法包括:
接收由主机传送的数据,用于存储在存储介质的目标分区中;
检测所述数据的属性;
至少基于所述数据的所述属性,在所述存储介质上建立一个或多个推断分区;以及
至少基于所述数据的所述属性,将所述数据的子集分类,用于存储在所述目标分区和所述一个或多个推断分区内。
2.根据权利要求1所述的方法,其中,所述数据的所述属性包括对所述存储介质上的所述数据的更新的频率,并且最近更新的数据被存储在第一推断分区中,以及不频繁更新的数据被存储在第二推断分区中。
3.根据权利要求2所述的方法,其中,所述第一推断分区相比于所述第二推断分区是更高性能的。
4.根据权利要求3所述的方法,其中,对所述第二推断分区比对所述第一推断分区更频繁地进行垃圾收集。
5.根据权利要求1所述的方法,其中,所述数据的所述属性包括写入命令大小,并且具有小的写入命令的数据被存储在小的块分区中,以及具有大的写入命令的数据被存储在大的块分区中。
6.根据权利要求5所述的方法,其中,所述小的块分区包含具有比所述大的块分区内的数据块更小的大小的数据块。
7.根据权利要求1所述的方法,其中,所述数据的所述属性包括写入命令位置,并且文件系统数据和元数据被写入固定位置中,以及用户数据被写入到非固定位置。
8.根据权利要求1所述的方法,其中,所述一个或多个推断分区包括至少两个包括不同的物理介质的分区。
9.根据权利要求1所述的方法,其中,所述一个或多个推断分区包括至少两个具有不同的服务质量的分区。
10.根据权利要求1所述的方法,其中,所述一个或多个推断分区包括至少两个具有不同的掉电恢复水平的分区。
11.一种用于存储系统的存储控制器,包括:
主机接口,被配置为接收用于存储在所述存储系统内的数据,以及将数据从所述存储系统传输到主机系统;
存储接口,被配置为将数据传输到所述存储系统,以及从所述存储系统接收数据;以及
与所述主机接口和所述存储接口耦接的处理电路,被配置为:
接收由主机传送的数据,用于存储在所述存储系统内的存储介质的目标分区中;
检测所述数据的属性;
至少基于所述数据的所述属性,在所述存储介质上建立一个或多个推断分区;以及
至少基于所述数据的所述属性,将所述数据的子集分类,用于存储在所述目标分区和所述一个或多个推断分区内。
12.根据权利要求11所述的存储控制器,其中,所述数据的所述属性包括对所述存储介质上的所述数据的更新的频率,并且最近更新的数据被存储在第一推断分区中,以及不频繁更新的数据被存储在第二推断分区中。
13.根据权利要求12所述的存储控制器,其中,所述第一推断分区相比于所述第二推断分区是更高性能的。
14.根据权利要求13所述的存储控制器,其中,对所述第二推断分区比对所述第一推断分区更频繁地进行垃圾收集。
15.根据权利要求11所述的存储控制器,其中,所述数据的所述属性包括写入命令大小,并且具有小的写入命令的数据被存储在小的块分区中,以及具有大的写入命令的数据被存储在大的块分区中。
16.根据权利要求15所述的存储控制器,其中,所述小的块分区包含具有比所述大的块分区内的数据块更小的大小的数据块。
17.根据权利要求11所述的存储控制器,其中,所述数据的所述属性包括写入命令位置,并且文件系统数据和元数据被写入固定位置中,以及用户数据被写入到非固定位置。
18.根据权利要求11所述的存储控制器,其中,所述一个或多个推断分区包括至少两个包括不同的物理介质的分区。
19.根据权利要求11所述的存储控制器,其中,所述一个或多个推断分区包括至少两个具有不同的服务质量的分区。
20.根据权利要求11所述的存储控制器,其中,所述一个或多个推断分区包括至少两个具有不同的掉电恢复水平的分区。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862738780P | 2018-09-28 | 2018-09-28 | |
US62/738,780 | 2018-09-28 | ||
PCT/US2019/053085 WO2020069074A1 (en) | 2018-09-28 | 2019-09-26 | Write stream separation into multiple partitions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112771493A true CN112771493A (zh) | 2021-05-07 |
CN112771493B CN112771493B (zh) | 2022-06-24 |
Family
ID=69945479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980063883.1A Expired - Fee Related CN112771493B (zh) | 2018-09-28 | 2019-09-26 | 将写入流分离到多个分区中 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10725686B2 (zh) |
CN (1) | CN112771493B (zh) |
WO (1) | WO2020069074A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113687855A (zh) * | 2021-07-22 | 2021-11-23 | 荣耀终端有限公司 | 电子设备及其系统升级包的制作方法、系统升级方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11119914B2 (en) * | 2019-11-15 | 2021-09-14 | Micron Technology, Inc. | Method of operating a memory with dynamically changeable attributes |
KR20220048869A (ko) * | 2020-10-13 | 2022-04-20 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US11435920B2 (en) | 2021-01-20 | 2022-09-06 | Western Digital Technologies, Inc. | Storage system and method for using read and write buffers in a memory |
US11693570B2 (en) * | 2021-04-29 | 2023-07-04 | EMC IP Holding Company LLC | Machine learning to improve caching efficiency in a storage system |
US11842069B2 (en) | 2022-01-14 | 2023-12-12 | Western Digital Technologies, Inc. | Storage system and method for delaying flushing of a write buffer based on a host-provided threshold |
US20230400988A1 (en) * | 2022-06-14 | 2023-12-14 | Western Digital Technologies, Inc. | Preservation of volatile data in distress mode |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102428453A (zh) * | 2009-04-08 | 2012-04-25 | 谷歌公司 | 用于在快闪存储器数据存储装置中存储数据的方法及设备 |
CN103597444A (zh) * | 2011-06-09 | 2014-02-19 | 微软公司 | 按照使用来管理基于闪存的存储上的数据放置 |
CN103942010A (zh) * | 2013-01-22 | 2014-07-23 | Lsi公司 | 用于写入非易失性存储器的管理及区域选择 |
US20180173427A1 (en) * | 2016-08-29 | 2018-06-21 | Seagate Technology Llc | Hybrid Data Storage Device with Partitioned Local Memory |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2583010B2 (ja) * | 1993-01-07 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 多層インデックス構造におけるローカルインデックステーブル及び大域インデックステーブルの間の一貫性を維持する方法 |
US8705746B2 (en) | 2006-09-29 | 2014-04-22 | Microsoft Corporation | Data security in an off-premise environment |
US20120297121A1 (en) * | 2011-05-17 | 2012-11-22 | Sergey Anatolievich Gorobets | Non-Volatile Memory and Method with Small Logical Groups Distributed Among Active SLC and MLC Memory Partitions |
CN107615388A (zh) * | 2015-03-20 | 2018-01-19 | 波利伍德有限责任公司 | 存储控制器中的可配置多级纠错 |
-
2019
- 2019-09-26 US US16/583,534 patent/US10725686B2/en active Active - Reinstated
- 2019-09-26 WO PCT/US2019/053085 patent/WO2020069074A1/en active Application Filing
- 2019-09-26 CN CN201980063883.1A patent/CN112771493B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102428453A (zh) * | 2009-04-08 | 2012-04-25 | 谷歌公司 | 用于在快闪存储器数据存储装置中存储数据的方法及设备 |
CN103597444A (zh) * | 2011-06-09 | 2014-02-19 | 微软公司 | 按照使用来管理基于闪存的存储上的数据放置 |
CN103942010A (zh) * | 2013-01-22 | 2014-07-23 | Lsi公司 | 用于写入非易失性存储器的管理及区域选择 |
US20180173427A1 (en) * | 2016-08-29 | 2018-06-21 | Seagate Technology Llc | Hybrid Data Storage Device with Partitioned Local Memory |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113687855A (zh) * | 2021-07-22 | 2021-11-23 | 荣耀终端有限公司 | 电子设备及其系统升级包的制作方法、系统升级方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200104048A1 (en) | 2020-04-02 |
WO2020069074A1 (en) | 2020-04-02 |
CN112771493B (zh) | 2022-06-24 |
US10725686B2 (en) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112771493B (zh) | 将写入流分离到多个分区中 | |
US11907569B1 (en) | Storage deveice that garbage collects specific areas based on a host specified context | |
US11994984B2 (en) | Namespace mapping optimization in non-volatile memory devices | |
US11023371B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11003576B2 (en) | Namespace change propagation in non-volatile memory devices | |
US10558563B2 (en) | Computing system and method for controlling storage device | |
US11435900B2 (en) | Namespace size adjustment in non-volatile memory devices | |
EP2631916B1 (en) | Data deletion method and apparatus | |
KR102541492B1 (ko) | 다중 모드 동작들을 위해 다중 파티션을 포함하는 저장 장치, 및 그것의 동작 방법 | |
US11656775B2 (en) | Virtualizing isolation areas of solid-state storage media | |
US9256542B1 (en) | Adaptive intelligent storage controller and associated methods | |
US20140095555A1 (en) | File management device and method for storage system | |
US8650379B2 (en) | Data processing method for nonvolatile memory system | |
TWI506432B (zh) | 非揮發性記憶體中之邏輯與實體位址之聯合重映射 | |
US20130103893A1 (en) | System comprising storage device and related methods of operation | |
US10558398B2 (en) | Reducing read latency | |
US20210026763A1 (en) | Storage device for improving journal replay, operating method thereof, and electronic device including the storage device | |
US20050169058A1 (en) | Data management apparatus and method used for flash memory | |
CN113918087B (zh) | 存储装置以及用于管理存储装置中的命名空间的方法 | |
US11402999B2 (en) | Adaptive wear leveling using multiple partitions | |
KR102719939B1 (ko) | 읽기 성능 개선을 위한 LightNVM의 데이터 저장 방법 및 그 장치 | |
US20240311291A1 (en) | Memory system and method of controlling the memory system |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220624 |
|
CF01 | Termination of patent right due to non-payment of annual fee |