CN117806535A - 操作固态驱动器的方法和固态驱动器 - Google Patents
操作固态驱动器的方法和固态驱动器 Download PDFInfo
- Publication number
- CN117806535A CN117806535A CN202310166919.7A CN202310166919A CN117806535A CN 117806535 A CN117806535 A CN 117806535A CN 202310166919 A CN202310166919 A CN 202310166919A CN 117806535 A CN117806535 A CN 117806535A
- Authority
- CN
- China
- Prior art keywords
- free
- die
- superblock
- solid state
- state drive
- 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.)
- Pending
Links
- 239000007787 solid Substances 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000015654 memory Effects 0.000 claims description 58
- 238000011084 recovery Methods 0.000 claims description 9
- 230000003213 activating effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000003990 capacitor Substances 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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
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)
- Memory System (AREA)
Abstract
提供了操作固态驱动器的方法和固态驱动器。所述方法包括:通过设置在所述固态驱动器中的控制器,生成指示多个空闲超块的空闲块列表,其中,所述多个空闲超块中的邻近的空闲超块对应于设置在所述固态驱动器中的多个裸片中的不同裸片;以及通过控制器,根据由空闲块列表指示的所述多个空闲超块的序列,针对主机写入操作和垃圾收集写入操作中的每个分配由空闲块列表指示的所述多个空闲超块之中的空闲超块。
Description
技术领域
本公开涉及固态驱动器(SSD),更具体地涉及用于通过将主机和后台输入/输出(I/O)操作流线化到不同裸片来优化SSD中的服务质量(QoS)的方法和系统。
背景技术
近年来,在需要高数据访问速度的各种应用中,已经广泛采用了基于NAND闪存的SSD。SSD已经将传统的读取延迟从多个毫秒降低到小于100微秒。由于SSD的速度增加,传统的硬盘驱动器(HDD)接口不再适合于SSD应用。
SSD是使用集成电路组件来持久地存储数据的固态存储装置,并且可使用闪存。与机电驱动器相比,SSD通常更抵抗物理冲击,更安静,并且具有更快的访问时间和更低的延迟。此外,SSD的架构包括各种部分和子部分。例如,架构可包括多个通道,其中,多个通道中的每个包括多个存储体或芯片,多个存储体中的每个包括多个平面,多个平面中的每个包括多个裸片,多个裸片中的每个包括多个块,并且多个块中的每个包括多个页。
SSD可包括NAND闪存。闪存不具有覆写的特性,因此数据需要在新数据可被写入同一块之前被擦除。由于该特性,当存储在闪存块中的数据被改变时,新数据被写入新的闪存块。为了利用较旧的块,可执行垃圾收集(GC)操作。垃圾收集工作是通过将块的有效数据复制到新块并擦除现有块来确保闪存中的可用容量的技术。垃圾收集在SSD中创建空间。然而,当垃圾收集写入操作针对SSD的裸片正在进行并且新的主机写入操作针对同一裸片被同时调度时,在执行新的主机写入操作时发生延迟,直到垃圾收集写入操作完成为止。这是由于当主机操作和垃圾收集写入操作同时发生在SSD的同一裸片中时发生的冲突。操作中的任一个需要等待直到另一个完成为止。因此,主机写入操作与垃圾收集写入操作之间的这样的冲突导致SSD中的延迟问题,这进而影响服务质量(QoS)参数。此外,空闲块列表中的空闲超块(free super block)呈序列的方式。在一些示例实施例中,超块可以是包括跨特定裸片层级的所有平面和所有存储体的特定层级的所有块的块。例如,如果存在各自包括五十个块(即块0、块1、块2……块149)的三个裸片(即裸片0、裸片1和裸片2),则裸片0的空闲超块将被顺序分配,直到裸片0的所有块耗尽为止。裸片0中的所有空闲超块一耗尽,则空闲超块的分配就利用剩余裸片(例如,裸片1和裸片2)中的空闲超块顺序继续。通过使用空闲超块的这种类型的布置,存在高概率的是:同一裸片上的主机写入操作与垃圾收集写入操作之间将存在冲突,导致延迟问题,这进而影响QoS参数。因此,存在对最大程度地避免主机写入操作与垃圾收集写入操作之间的冲突的需要,以便在SSD中提供优化的QoS。
发明内容
根据示例实施例的一个方面,提供了一种操作固态驱动器(SSD)的方法。所述SSD包括多个通道,所述多个通道中的每个包括多个存储体,所述多个存储体中的每个包括多个平面,所述多个平面中的每个包括多个裸片,所述多个裸片中的每个包括多个块,并且所述多个块中的每个包括多个页。所述方法包括:通过设置在所述SSD中的控制器,生成指示多个空闲超块的空闲块列表,其中,所述多个空闲超块中的邻近的空闲超块对应于所述多个裸片中的不同裸片;以及通过控制器,根据由空闲块列表指示的所述多个空闲超块的序列,针对主机写入操作和垃圾收集写入操作中的每个分配由空闲块列表指示的所述多个空闲超块之中的空闲超块。
根据示例实施例的一个方面,一种SSD包括:非易失性存储器,包括多个通道,其中,所述多个通道中的每个包括多个存储体,所述多个存储体中的每个包括多个平面,所述多个平面中的每个包括多个裸片,所述多个裸片中的每个包括多个块,并且所述多个块中的每个包括多个页;控制器;以及存储器,通信地结合到控制器,其中,存储器存储指令,所述指令在被执行时被配置为控制控制器:生成指示多个空闲超块的空闲块列表,其中,所述多个空闲超块中的邻近的空闲超块对应于所述多个裸片中的不同裸片;以及根据由空闲块列表指示的所述多个空闲超块的序列,针对主机写入操作和垃圾收集写入操作中的每个分配由空闲块列表指示的所述多个空闲超块之中的空闲超块。
根据示例实施例的一个方面,一种非暂时性计算机可读存储介质存储指令,所述指令在由固态驱动器(SSD)的处理器执行时使所述SSD:生成指示多个空闲超块的空闲块列表,其中,所述多个空闲超块中的邻近的空闲超块对应于设置在所述SSD中的多个裸片中的不同裸片;以及根据由空闲块列表指示的所述多个空闲超块的序列,针对主机写入操作和垃圾收集写入操作中的每个分配由空闲块列表指示的所述多个空闲超块之中的空闲超块。
附图说明
通过以下结合附图对示例实施例的描述,以上和其他方面将更清楚,在附图中:
图1A示出根据一些示例实施例的固态驱动器(SSD)的架构;
图1B和图1C示出根据一些示例实施例的SSD中的超块;
图2A示出根据一些示例实施例的用于优化服务质量(QoS)的SSD的详细框图;
图2B示出如在现有装置中执行的空闲块列表生成;
图2C和图2D示出根据一些示例实施例的空闲块列表生成;
图3示出说明根据一些示例实施例的用于优化QoS的方法的流程图;以及
图4是根据一些示例实施例的应用存储装置的系统。
具体实施方式
在下文中,将参照附图详细描述示例实施例。
在此描述的实施例是示例实施例,并且因此,本公开不限于此,并且可以以各种其他形式实现。以下描述中提供的每个示例实施例不排除与也在此提供或未在此提供但与本公开一致的另一示例或另一示例实施例的一个或多个特征相关联。例如,除非在其描述中另有说明,否则即使在特定示例或示例实施例中描述的事项未在与其不同的示例或示例实施例中描述,但是事项也可被理解为与不同的示例或示例实施例相关或组合。另外,应当理解,本公开的原理、方面、示例和示例实施例的所有描述旨在涵盖其结构和功能等同物。另外,这些等同物应被理解为不仅包括当前公知的等同物,而且还包括要在将来开发的等同物(也就是说,执行相同功能而不管其结构如何的所有装置)。
如在此使用的,诸如“……中的至少一个”的表述在一列元素之后时,修饰整列元素,而不是修饰列中的个体元素。例如,表述“a、b和c中的至少一个”应当被理解为仅包括a、仅包括b、仅包括c、包括a和b两者、包括a和c两者、包括b和c两者、或包括a、b和c中的全部。在此,当使用术语“相同”来比较两个或更多个元件的尺寸时,术语可涵盖“基本上相同的”尺寸。
将理解,尽管在此可使用术语第一、第二、第三、第四等来描述各种元件,但是这些元件不应受这些术语限制。这些术语仅用于将一个元件与另一元件区分开。因此,在不脱离本公开的教导的情况下,下面讨论的第一元件可被称为第二元件。
还将理解,即使某个步骤或操作在另一步骤或操作之后被描述,除非另一步骤或操作被具体描述为在该步骤或操作之后被执行,否则该步骤或操作也可在另一步骤或操作之后被执行。
在此公开固态驱动器(SSD)和用于优化SSD中的服务质量(QoS)的方法。在此公开的方法可解决与由于冲突而在SSD中遇到的延迟问题相关联的技术问题,该冲突由于在SSD的同一裸片内同时调度主机写入操作和垃圾收集操作而发生。方法可包括通过配置在SSD中的控制器(即,包括例如晶体管、电容器、逻辑门和其他电路元件以实现下面更详细描述的特定功能的控制电路)生成指示多个空闲超块的空闲块列表。本公开中生成的空闲块列表以与现有技术中生成空闲块列表的方式不同的方式工作。在本公开中,顺序附加到空闲块列表的多个空闲超块中的每个从多个裸片中的不同裸片被选择。此后,方法包括:遵循空闲块列表中的多个空闲超块的序列,针对主机写入操作和垃圾收集操作中的每个分配空闲块列表中的多个空闲超块中的空闲超块。
根据示例实施例,基于从SSD中的多个裸片中的不同裸片而非如在现有技术中从同一裸片顺序附加的空闲超块来生成空闲块列表。这确保每当通过遵循生成的空闲块列表的序列来分配空闲超块时,针对主机写入操作或垃圾收集写入操作,空闲超块被分配到不同裸片。例如,如果空闲超块1来自裸片0,则生成的空闲块列表的序列中的下一空闲超块将来自不同裸片。例如,下一空闲超块(即,空闲超块2)可来自裸片1。因此,当主机写入操作被调度时,方法包括针对主机写入操作分配来自裸片0的空闲超块1。同时地或者在主机写入操作正在进行时,如果SSD调度垃圾收集写入操作,则要分配的空闲块列表中的下一空闲超块(即,来自裸片1的空闲超块2)将与先前针对主机写入操作分配过的裸片0的空闲超块分开。就此而言,在裸片0的块中执行主机写入操作,同时在裸片1的块中执行垃圾收集写入操作。因此,尽管主机写入操作和垃圾收集写入操作二者被同时地或者在这些操作中的一者正在进行时被调度,但是主机写入操作与垃圾收集写入操作之间不存在冲突。因此,不存在需要在开始另一操作之前等待任一个操作完成。这进而消除由于主机写入操作与垃圾收集写入操作之间的冲突而在SSD中遇到的延迟问题,从而优化SSD中的QoS。
对具有彼此通信的若干组件的示例实施例的描述并不意味着需要所有这样的组件。相反,描述各种可选组件以说明各种各样的可能示例实施例。
在以下详细描述中,对附图进行参照。足够详细地描述这些示例实施例以使本领域技术人员能够实践公开,并且应理解,在不脱离本公开的范围的情况下,可利用其他示例实施例,并且可进行改变。因此,以下描述不应被视为具有限制意义。
图1A示出根据一些示例实施例的固态驱动器(SSD)的示例性架构。
如所示出的,SSD 100包括控制器102、存储器104和空闲块列表106。在一些示例实施例中,SSD 100可包括多个通道,多个通道中的每个可指向存储器104的多个存储体(即,与存储器104的多个存储体通信)。多个存储体中的每个可包括存储器104的多个平面,多个平面中的每个可包括存储器104的多个裸片,多个裸片中的每个可包括存储器104的多个块,并且多个块中的每个可包括存储器104的多个页。图1A示出包括两个通道(通道1和通道2)的SSD 100,两个通道(通道1和通道2)指向通道1的存储体1和存储体2以及通道2的存储体1和存储体2。此外,如图1A中所示,存储体中的每个包括两个平面(即,平面1和平面2)。此外,如图1A中所示,每个平面包括多个裸片(诸如,裸片0、裸片1和裸片2)。每个裸片包括多个块并且每个块包括多个页。应注意的是,如图1A中所示的SSD 100的前述示例性架构仅用于说明和理解目的。然而,图1A中示出的组件的数量和具体架构不应被解释为限制本公开。此外,配置在控制器102中的空闲块列表106可包括以序列方式布置的一个或多个空闲超块。这些空闲超块中的每个被分配用于SSD 100的功能(诸如,主机写入操作、垃圾收集操作等)。
图1B和图1C示出根据一些示例实施例的固态驱动器(SSD)内的示例性超块。
在一些示例实施例中,控制器102可考虑用于执行与SSD 100相关的任何操作(诸如,主机写入操作、垃圾收集操作、主机读取操作等)的超块。在一些示例实施例中,超块可以是包括跨特定裸片层级的所有平面和所有存储体的特定层级的所有块的块。在一些示例实施例中,超块可包括设置在跨SSD 100内的多个存储体的至少一个平面的共同层级处的裸片(例如,裸片中的块)。例如,如图1B和图1C中所示,SBN 0表示超块0,超块0包括特定裸片层级的每个平面和每个存储体的块0(即,在此实例中,每个平面和每个存储体的裸片0)。类似地,SBN 1(未示出)表示超块1,超块1包括每个平面和每个存储体的裸片1的每个平面和每个存储体的块1等。
图2A示出根据一些示例实施例的用于优化服务质量(QoS)的方法的详细框图。
在一些实现方式中,SSD 100可包括数据203和模块205。作为示例,数据203存储在与控制器102相关联的存储器104中。在一些示例实施例中,数据203可包括容限数据213和其他数据215。在一些示例实施例中,模块205可由控制器102内部或外部的电路实现,并且电路可包括用于实现下面更详细描述的特定功能的晶体管、电容器、逻辑门和其他电路元件。
在一些示例实施例中,数据203可以以各种数据结构的形式存储在存储器104中。另外,可使用数据模型(诸如,关系数据模块或层次数据模型)来组织数据203。其他数据215可以是SSD 100的存储数据,存储数据包括由模块205生成的用于执行控制器102的各种功能的临时数据和临时文件。
在一些示例实施例中,容限数据213可指示容限水平,并且例如可指示预定义的最低有效页计数,预定义的最低有效页计数用于针对垃圾收集写入操作而从SSD 100的裸片选择超块。
在一些示例实施例中,控制器102的模块205可处理存储在存储器104中的数据215。模块205可存储在存储器104内。在一个示例中,如图2A中所示,通信地结合到控制器102的模块205也可存在于存储器104外部,并且被实现为硬件。如在此使用的,术语模块205可指代专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用或组)和存储器、组合逻辑电路和/或提供描述的功能的其他合适的组件。
在一些示例实施例中,模块205可包括例如生成模块207、分配模块209和其他模块211。其他模块211可用于执行控制器102的各种功能。将理解,这样的前述模块205可被表示为单个模块或不同模块的组合。
生成模块207可生成指示多个空闲超块的空闲块列表106。在一些示例实施例中,生成模块207可在SSD的初始化模式(即,SSD被初始化)和上电恢复模式(即,SSD的恢复模式被激活)中的至少一个期间生成空闲块列表106。在一些示例实施例中,从特定超块一移除不想要的内容或迁移内容,就将多个空闲超块中的每个顺序附加到空闲块列表106。在一些示例实施例中,通过执行垃圾收集读取操作,将多个空闲超块中的每个附加到空闲块列表106。在一些示例实施例中,作为垃圾收集读取操作的部分,生成模块207可选择多个超块之中的用于执行垃圾收集写入操作的超块。在一些示例实施例中,生成模块207可基于与有效页计数相关的容限水平并且基于SSD的超块所属的裸片来选择多个超块之中的超块。例如,生成模块207可从除了先前循环中通过垃圾收集读取操作从其选择超块的裸片之外的裸片选择多个超块之中的用于执行垃圾收集写入操作的超块。在一些示例实施例中,生成模块207可从与在先前循环中从其选择超块的裸片连续(即,顺序邻近)的裸片选择超块。作为示例,考虑在先前循环中通过执行垃圾收集读取操作而选择的超块是来自裸片0的超块1。因此,在当前循环中,将从连续的裸片(即,从裸片1)选择超块。在一些示例实施例中,可从SSD的除了针对主机写入操作或垃圾收集写入操作从其分配过超块的裸片之外的任何裸片,通过执行垃圾收集读取操作来选择超块。作为示例,考虑SSD中总共有4个裸片(即,裸片0、裸片1、裸片2和裸片3)。考虑:被选择用于主机写入的超块来自裸片0,被选择用于垃圾收集写入的超块来自裸片2,则对于垃圾收集读取操作,将从除了裸片0和裸片2之外的任何裸片(即,从裸片1或裸片3)选择超块。
在识别应通过执行垃圾收集读取操作从其选择超块的裸片之后,在识别出的裸片内,生成模块207可基于与有效页计数相关的容限水平通过执行垃圾收集读取操作来选择超块。在一些示例实施例中,生成模块207可确定识别出的裸片内的每个超块的有效页计数,并且将识别出的裸片内的每个超块的确定的有效页计数与超块的预定义的最低有效页计数进行比较。作为示例,考虑对于具有200000个页的超块,预定义的最低有效页计数是200个页。在这样的情况下,与有效页计数相关的容限水平被说成200。因此,基于比较,当识别出的裸片内的超块的有效页计数小于容限水平时(即,当超块中的有效页的数量小于预定义的最低有效页计数时),则生成模块207选择这样的超块用于垃圾收集写入操作。在一些示例实施例中,当在识别出的裸片内存在多于一个的其有效页计数小于预定义的最低有效页计数的超块时,生成模块207可随机选择这些超块中的任一个以用于执行垃圾收集写入操作,或者可在其有效页计数小于预定义的最低有效页计数的其他超块之中选择具有最少有效页的超块。
基于与有效页计数相关的容限水平和裸片编号(即,从除了针对主机写入操作或垃圾收集写入操作从其分配过超块的裸片之外的裸片)一选择多个超块之中的用于垃圾收集写入操作的超块,就对选择的超块执行垃圾收集写入操作以释放超块。然后,由生成模块207将由此获得的空闲超块附加到空闲块列表。在一些示例实施例中,将空闲超块附加到空闲块列表可包括将表示属于识别出的裸片的空闲超块的编号附加到空闲块列表中的现有空闲超块编号。在一些示例实施例中,由于生成模块207以不同于现有技术的方式(即,基于如上所述的容限水平和裸片编号),通过执行垃圾收集读取操作来选择超块,因此顺序附加到空闲块列表的空闲超块来自不同裸片而非来自同一裸片。图2B示出现有技术的示例性空闲块列表221中的空闲超块的布置。例如,如果存在包括五十个超块(即,超块0、超块1、超块2……超块49)的三个裸片(即,裸片0、裸片1和裸片2),则如图2B中所示,从裸片0选择顺序附加到空闲块列表221的空闲超块,直到裸片0的所有超块耗尽为止。此后,空闲超块的释放和附加随着裸片1等中的空闲超块而继续。然而,根据示例实施例,空闲块列表106中的空闲超块的布置如图2C和图2D中所示。根据示例实施例,空闲超块以降低主机写入操作与垃圾收集写入操作之间的冲突的概率的方式被附加。在一些示例实施例中,从多个裸片中的不同裸片选择顺序附加到示例性空闲块列表106的多个空闲超块。例如,如果SSD中总共存在三个裸片(即,裸片0、裸片1和裸片2),则附加到空闲块列表的空闲超块是从不同裸片选择的超块(例如,如图2C中所示,裸片0的超块1,接着是裸片2的超块9、裸片0的超块6、裸片1的超块4、裸片2的超块3等)。在一些示例实施例中,从多个裸片中的不同裸片但连续裸片选择顺序附加到示例性空闲块列表106的多个空闲超块。例如,如果SSD中总共存在三个裸片(即,裸片0、裸片1和裸片2),则附加到空闲块列表的空闲超块是从连续裸片选择的超块(即,如图2D中所示,裸片0的超块1、接着是裸片1的超块9、裸片2的超块6、裸片0的超块4、裸片1的超块3等)。因此,通过从不同裸片或连续裸片而非同一裸片选择用于顺序附加到示例性空闲块列表106的超块,可避免主机写入操作与垃圾收集操作之间的冲突。虽然图2C和2D示出本公开的一些示例实施例,但是本公开不限于此。在一些示例实施例中,空闲块列表顺序地指示:与第一裸片对应的第一空闲超块和与第二裸片对应的第二空闲超块,其中,第一空闲超块与第二空闲超块邻近。在一些示例实施例中,空闲块列表顺序地指示:与第一裸片对应的第一空闲超块和与第二裸片对应的第二空闲超块,其中,第一空闲超块与第二空闲超块不邻近。
此外,在一些示例实施例中,当需要由SSD 100执行主机写入操作或垃圾收集写入操作时,分配模块209可针对主机写入操作和垃圾收集写入操作中的每个从空闲块列表中的多个空闲超块分配空闲超块。在一些示例实施例中,分配模块209可通过遵循多个空闲块被列入或附加在空闲块列表中的序列来针对主机写入操作和垃圾收集写入操作中的每个分配空闲块。例如,考虑如图2D中所示的示例性空闲块列表106。考虑主机写入操作和垃圾收集写入操作被同时调度。在这样的情景下,分配模块209遵循示例性空闲块列表106的序列,针对主机写入操作分配裸片0的空闲超块1并且针对垃圾收集写入操作分配裸片1的空闲超块9。如果另一主机写入操作被调度,则分配模块209可随后分配示例性空闲块列表106中的下一空闲超块(即,裸片2的空闲超块6)。此处理基于在每个垃圾收集读取操作之后附加在示例性空闲块列表106中的空闲超块以类似方式继续。
图3是示出根据一些示例实施例的优化SSD中的服务质量(QoS)的方法的流程图。
如图3中所示,方法300包括优化SSD中的服务质量(QoS)。可在计算机可执行指令的一般上下文中描述方法300。通常,计算机可执行指令可包括执行功能或实现抽象数据类型的例程、程序、对象、组件、数据结构、过程、模块和功能。
方法300被描述的次序不旨在被解释为限制,并且任何数量的描述的方法块可以以任何次序被组合以实现方法300。另外,在不脱离在此描述的主题的精神和范围的情况下,可从方法删除各个块。此外,方法300可以以任何合适的硬件、软件、固件或其组合来实现。
在操作302处,方法300可包括通过配置在SSD 100中的控制器102生成指示多个空闲超块的空闲块列表106。在一些示例实施例中,顺序附加到空闲块列表106的多个空闲超块中的每个从多个裸片中的不同裸片被选择。在一些示例实施例中,通过执行垃圾收集读取操作,多个空闲超块中的每个被附加到空闲块列表106。在一些示例实施例中,作为垃圾收集读取操作的部分,控制器102可基于与有效页计数相关的容限水平从除了针对垃圾收集写入操作或主机写入操作从其分配过超块的裸片之外的裸片选择多个超块之中的用于垃圾收集操作的超块。控制器102可在SSD 100的初始化模式和上电恢复模式中的至少一个期间生成空闲块列表106。
在操作304处,方法300可包括:通过控制器102针对主机写入操作和垃圾收集操作中的每个从空闲块列表106中的多个空闲超块分配空闲超块。
上面讨论的方法在每存储体具有4个裸片的SSD上实现和测试。该实验通过降低延迟来导致QoS的改善。针对各种队列深度和混合读取写入分布(诸如,100%写入、100%读取、25%读取、50%读取、75%读取)的QoS对应于数据中心SSD的严格和关键要求。与现有技术相比,观察到该实现方式的实验结果提供了99.99%的随机读取延迟的10%至22%降低以及随机写入延迟的20%至39%改善。
图4是根据一些示例实施例的应用存储装置的系统400的示例性总体图。图4的系统400可以是移动系统(诸如,便携式通信终端(例如,移动电话)、智能电话、平板个人计算机(PC)、可穿戴装置、医疗保健装置或物联网(IOT)装置)。然而,图4的系统400不必限于移动系统,并且可以是PC、膝上型计算机、服务器、媒体播放器或汽车装置(例如,导航装置)。
参照图4,系统400可包括主处理器410、存储器(例如,420a和420b)和存储装置(例如,430a和430b)。另外,系统400可包括光学输入装置(即,图像拍摄装置)441、用户输入装置442、传感器443、通信装置444、显示器445、扬声器446、电源装置447和连接接口448中的至少一个。
主处理器410可控制系统400的操作,系统400的操作包括包含在系统400中的其他组件的操作。主处理器410可被实现为硬件处理器(诸如,通用处理器、专用处理器或应用处理器)。
主处理器410可包括至少一个CPU核411,并且还包括被配置为控制存储器420a和420b和/或存储装置430a和430b的控制器412。在一些示例实施例中,主处理器410还可包括加速器413,加速器413是用于高速数据操作(诸如,人工智能(AI)数据操作)的专用电路。加速器413可包括硬件(诸如,图形处理器(GPU)、神经处理器(NPU)和/或数据处理器(DPU)),并且可被实现为与主处理器410的其他组件物理上分离的芯片。
存储器420a和420b可用作系统400的主存储器装置。尽管存储器420a和420b中的每个可包括易失性存储器(诸如,静态随机存取存储器(SRAM)和/或动态RAM(DRAM)),但是存储器420a和420b中的每个可包括非易失性存储器(诸如,闪存、相变RAM(PRAM)和/或电阻式RAM(RRAM))。存储器420a和420b可与主处理器410实现在同一封装件中。
存储装置430a和430b可用作被配置为不管是否向其供电都存储数据的非易失性存储装置,并且具有比存储器420a和420b大的存储容量。存储装置430a和430b可分别包括存储控制器431a和431b以及被配置为经由存储控制器431a和431b的控制来存储数据的非易失性存储器(NVM)432a和432b。尽管NVM 432a和432b可包括具有二维(2D)结构或三维(3D)V-NAND结构的闪存,但是NVM 432a和432b可包括其他类型的NVM(诸如,PRAM和/或RRAM)。
存储装置430a和430b可与主处理器410物理上分离并且包括在系统400中,或者与主处理器410实现在同一封装件中。另外,存储装置430a和430b可具有固态装置(SSD)或存储卡的类型,并且通过接口(诸如,如下所述的连接接口448)与系统400的其他组件可移除地组合。存储装置430a和430b可以是应用标准协议(诸如,通用闪存(UFS)、嵌入式多媒体卡(eMMC)或非易失性存储器快速(NVMe))的装置,而不限于此。
光学输入装置441可拍摄静止图像或运动图像。光学输入装置441可包括相机、摄像机和/或网络摄像头。
用户输入装置442可接收由系统400的用户输入的各种类型的数据,并且包括触摸板、小键盘、键盘、鼠标和/或麦克风。
传感器443可检测可从系统400的外部获得的各种类型的物理量,并且将检测到的物理量转换为电信号。传感器443可包括温度传感器、压力传感器、照度传感器、位置传感器、加速度传感器、生物传感器和/或陀螺仪传感器。
通信装置444可根据各种通信协议在系统400外部的其他装置之间发送和接收信号。通信装置444可包括天线、收发器和/或调制解调器。
显示器445和扬声器446可用作被配置为分别向系统400的用户输出视觉信息和听觉信息的输出装置。
电源装置447可适当地转换从嵌入在系统400中的电池和/或外部电源供应的电力,并且将转换的电力供应给系统400的组件中的每个。
连接接口448可提供系统400与外部装置之间的连接,外部装置连接到系统400并且能够向系统400发送数据和从系统400接收数据。连接接口448可通过使用各种接口方案(诸如,高级技术附件(ATA)、串行ATA(SATA)、外部SATA(e-SATA)、小型计算机小型接口(SCSI)、串行附接SCSI(SAS)、外围组件互连(PCI)、PCI快速(PCIe)、NVMe、IEEE 4394、通用串行总线(USB)接口、安全数字(SD)卡接口、多媒体卡(MMC)接口、eMMC接口、UFS接口、嵌入式UFS(eUFS)接口和紧凑型闪存(CF)卡接口)来实现。
根据示例实施例,可基于从SSD中的多个裸片中的顺序裸片顺序附加的空闲超块来生成空闲块列表。就此而言,每当通过遵循生成的空闲块列表的序列来分配空闲超块时,针对主机写入操作或垃圾收集写入操作,空闲超块属于不同裸片。例如,如果空闲超块1来自裸片0,则生成的空闲块列表的序列中的下一空闲超块将来自不同裸片。同时地或在主机写入操作正在进行中时,如果SSD调度垃圾收集写入操作,则可分配空闲块列表中的下一空闲超块。因此,即使主机写入操作和垃圾收集写入操作二者被同时地或者在这些操作中的一者正在进行时被调度,也可避免主机写入操作与垃圾收集写入操作之间的冲突。因此,不存在需要等待操作中的任一个开始,直到同一裸片中的另一正在进行的操作结束。这进而消除由于主机写入操作与垃圾收集写入操作之间的冲突而在SSD中遇到的延迟问题,从而优化SSD中的QoS。
虽然已经具体示出和描述了示例实施例的方面,但是应当理解,在不脱离所附权利要求的精神和范围的情况下,可在其中进行形式和细节上的各种改变。
Claims (20)
1.一种操作固态驱动器的方法,其中,所述固态驱动器包括多个通道,所述多个通道中的每个包括多个存储体,所述多个存储体中的每个包括多个平面,所述多个平面中的每个包括多个裸片,所述多个裸片中的每个包括多个块,并且所述多个块中的每个包括多个页,所述方法包括:
通过设置在所述固态驱动器中的控制器,生成指示多个空闲超块的空闲块列表,其中,所述多个空闲超块中的邻近的空闲超块对应于所述多个裸片中的不同裸片;以及
通过控制器,根据由空闲块列表指示的所述多个空闲超块的序列,针对主机写入操作和垃圾收集写入操作中的每个分配由空闲块列表指示的所述多个空闲超块之中的空闲超块。
2.如权利要求1所述的方法,其中,通过执行垃圾收集读取操作,所述多个空闲超块中的每个被附加到空闲块列表,并且
其中,垃圾收集读取操作包括:基于与有效页计数相关的容限水平,从除了针对主机写入操作或垃圾收集写入操作从其分配过超块的裸片之外的裸片选择所述多个空闲超块之中的空闲超块。
3.如权利要求1所述的方法,还包括:初始化所述固态驱动器,
其中,空闲块列表基于所述固态驱动器被初始化而被生成。
4.如权利要求1所述的方法,还包括:激活所述固态驱动器的恢复模式,
其中,空闲块列表基于所述固态驱动器的恢复模式被激活而被生成。
5.如权利要求1至4中的任一项所述的方法,其中,所述多个空闲超块中的每个分别包括:设置在跨所述多个存储体的至少一个平面的共同层级处的裸片。
6.如权利要求5所述的方法,其中,空闲块列表顺序地指示:与第一裸片对应的第一空闲超块和与第二裸片对应的第二空闲超块,其中,第一空闲超块与第二空闲超块邻近。
7.如权利要求5所述的方法,其中,空闲块列表顺序地指示:与第一裸片对应的第一空闲超块和与第二裸片对应的第二空闲超块,其中,第一空闲超块与第二空闲超块不邻近。
8.如权利要求1所述的方法,其中,所述多个裸片包括第一裸片和第二裸片,并且
其中,所述方法还包括:同时执行关于第一裸片的第一超块的主机写入操作和关于第二裸片的第二超块的垃圾收集写入操作。
9.一种固态驱动器,包括:
非易失性存储器,包括多个通道,其中,所述多个通道中的每个包括多个存储体,所述多个存储体中的每个包括多个平面,所述多个平面中的每个包括多个裸片,所述多个裸片中的每个包括多个块,并且所述多个块中的每个包括多个页;
控制器;以及
存储器,通信地结合到控制器,其中,存储器存储指令,所述指令在被执行时被配置为控制控制器:
生成指示多个空闲超块的空闲块列表,其中,所述多个空闲超块中的邻近的空闲超块对应于所述多个裸片中的不同裸片;以及
根据由空闲块列表指示的所述多个空闲超块的序列,针对主机写入操作和垃圾收集写入操作中的每个分配由空闲块列表指示的所述多个空闲超块之中的空闲超块。
10.如权利要求9所述的固态驱动器,其中,所述指令还被配置为控制控制器:
基于垃圾收集读取操作,将所述多个空闲超块中的每个附加到空闲块列表,
其中,垃圾收集读取操作包括:基于与有效页计数相关的容限水平,从除了针对主机写入操作或垃圾收集写入操作从其分配过超块的裸片之外的裸片选择所述多个空闲超块之中的空闲超块。
11.如权利要求9所述的固态驱动器,其中,所述指令还被配置为控制控制器:初始化所述固态驱动器并且基于所述固态驱动器被初始化而生成空闲块列表。
12.如权利要求9所述的固态驱动器,其中,所述指令还被配置为控制控制器:激活所述固态驱动器的恢复模式,并且基于恢复模式被激活而生成空闲块列表。
13.如权利要求9至12中的任一项所述的固态驱动器,其中,所述多个空闲超块中的每个分别包括:设置在跨所述多个存储体的至少一个平面的公共层级处的裸片。
14.如权利要求13所述的固态驱动器,其中,空闲块列表顺序地指示:与第一裸片对应的空闲第一超块和与第二裸片对应的第二空闲超块,其中,第一空闲超块与第二空闲超块邻近。
15.如权利要求13所述的固态驱动器,其中,空闲块列表顺序地指示:与第一裸片对应的第一空闲超块和与第二裸片对应的第二空闲超块,其中,第一空闲超块与第二空闲超块不邻近。
16.如权利要求9所述的固态驱动器,其中,所述多个裸片包括第一裸片和第二裸片,并且
其中,所述指令还被配置为控制控制器:同时执行关于第一裸片的第一超块的主机写入操作和关于第二裸片的第二超块的垃圾收集操作。
17.一种存储指令的非暂时性计算机可读存储介质,所述指令在由固态驱动器的处理器执行时使所述固态驱动器:
生成指示多个空闲超块的空闲块列表,其中,所述多个空闲超块中的邻近的空闲超块对应于设置在所述固态驱动器中的多个裸片中的不同裸片;以及
根据由空闲块列表指示的所述多个空闲超块的序列,针对主机写入操作和垃圾收集写入操作中的每个分配由空闲块列表指示的所述多个空闲超块之中的空闲超块。
18.如权利要求17所述的非暂时性计算机可读存储介质,其中,所述指令在由处理器执行时还被配置为使所述固态驱动器:
执行垃圾收集读取操作;以及
基于垃圾收集读取操作将所述多个空闲超块中的每个附加到空闲块列表,并且
其中,垃圾收集读取操作包括:基于与有效页计数相关的容限水平,从除了针对主机写入操作或垃圾收集写入操作从其分配过超块的裸片之外的裸片选择所述多个空闲超块之中的空闲超块。
19.如权利要求17或18所述的非暂时性计算机可读存储介质,其中,所述指令在由处理器执行时还被配置为使所述固态驱动器:
初始化所述固态驱动器;以及
基于所述固态驱动器被初始化而生成空闲块列表。
20.如权利要求17或18所述的非暂时性计算机可读存储介质,其中,所述指令在由处理器执行时还被配置为使所述固态驱动器:
激活所述固态驱动器的恢复模式;以及
基于恢复模式被激活而生成空闲块列表。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN202241056374 | 2022-09-30 | ||
IN202241056374 | 2022-09-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117806535A true CN117806535A (zh) | 2024-04-02 |
Family
ID=85121960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310166919.7A Pending CN117806535A (zh) | 2022-09-30 | 2023-02-24 | 操作固态驱动器的方法和固态驱动器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240111422A1 (zh) |
EP (1) | EP4345628A1 (zh) |
CN (1) | CN117806535A (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101854020B1 (ko) * | 2012-12-31 | 2018-05-02 | 샌디스크 테크놀로지스 엘엘씨 | 비휘발성 메모리에서 비동기 다이 동작을 위한 방법 및 시스템 |
US10949123B2 (en) * | 2018-10-18 | 2021-03-16 | Western Digital Technologies, Inc. | Using interleaved writes to separate die planes |
US11175984B1 (en) * | 2019-12-09 | 2021-11-16 | Radian Memory Systems, Inc. | Erasure coding techniques for flash memory |
-
2022
- 2022-12-07 US US18/076,686 patent/US20240111422A1/en active Pending
-
2023
- 2023-01-26 EP EP23153559.2A patent/EP4345628A1/en active Pending
- 2023-02-24 CN CN202310166919.7A patent/CN117806535A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4345628A1 (en) | 2024-04-03 |
US20240111422A1 (en) | 2024-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9645918B2 (en) | Storage devices including non-volatile memory and memory controller and methods of allocating write memory blocks | |
US10229050B2 (en) | Method for operating storage controller and method for operating storage device including the same wherein garbage collection is performed responsive to free block unavailable during reuse | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
CN110032333B (zh) | 存储器系统及其操作方法 | |
KR20200022118A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
CN112201292A (zh) | 控制器及其操作方法 | |
CN112748872A (zh) | 存储器系统及其操作方法 | |
CN114371812B (zh) | 控制器及其操作方法 | |
KR20160036693A (ko) | 저장 장치 및 그것의 커맨드 스케줄링 방법 | |
CN111796759A (zh) | 多平面上的片段数据读取的计算机可读取存储介质及方法 | |
CN115113799A (zh) | 主机命令的执行方法及装置 | |
KR20200114212A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20210144249A (ko) | 저장 장치 및 이의 동작 방법 | |
KR102330394B1 (ko) | 컨트롤러의 작동 방법과 상기 컨트롤러를 포함하는 장치의 작동 방법 | |
KR20100120518A (ko) | 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법 | |
CN117806535A (zh) | 操作固态驱动器的方法和固态驱动器 | |
CN113495850B (zh) | 管理垃圾回收程序的方法、装置及计算机可读取存储介质 | |
CN113448487B (zh) | 写入闪存管理表的计算机可读取存储介质、方法及装置 | |
KR20220076803A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN113778317A (zh) | 计算机可读取存储介质、调度主机命令的方法及装置 | |
US20140149646A1 (en) | Memory systems including flash memories, first buffer memories, second buffer memories and memory controllers and methods for operating the same | |
CN114625307A (zh) | 计算机可读存储介质、闪存芯片的数据读取方法及装置 | |
US20240160381A1 (en) | Memory controllers and operating methods thereof, memory systems, and electronic devices | |
TWI758745B (zh) | 排程主機命令執行的電腦程式產品及方法及裝置 | |
KR102583244B1 (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |