CN113093990A - 存储器子***处的数据块切换 - Google Patents

存储器子***处的数据块切换 Download PDF

Info

Publication number
CN113093990A
CN113093990A CN202011528569.7A CN202011528569A CN113093990A CN 113093990 A CN113093990 A CN 113093990A CN 202011528569 A CN202011528569 A CN 202011528569A CN 113093990 A CN113093990 A CN 113093990A
Authority
CN
China
Prior art keywords
data block
data
available
write
memory
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
Application number
CN202011528569.7A
Other languages
English (en)
Other versions
CN113093990B (zh
Inventor
K·K·姆奇尔拉
P·菲利
S·K·瑞特南
K·R·布兰特
C·M·斯坦梅茨
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN113093990A publication Critical patent/CN113093990A/zh
Application granted granted Critical
Publication of CN113093990B publication Critical patent/CN113093990B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5643Multilevel memory comprising cache storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

本申请涉及存储器子***处的数据块切换。可以第一写入模式将主机数据写入到存储器子***的第一部分。可接收到所述存储器子***的第二部分的数据块可用于以第二写入模式进行写入的指示。响应于接收到所述指示,确定将所述主机数据的第二部分写入到所述第二部分的所述数据块。响应于确定将所述主机数据的所述第二部分写入到所述第二部分的所述数据块,在以所述第一写入模式封闭第一可用数据块之前以所述第二写入模式将所述主机数据的所述第二部分写入到第二可用数据块。

Description

存储器子***处的数据块切换
技术领域
本公开大体上涉及存储器子***,且更具体来说,涉及存储器子***处的数据块切换。
背景技术
存储器子***可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置及易失性存储器装置。大体来说,主机***可利用存储器子***以在存储器装置处存储数据并从存储器装置检索数据。
发明内容
本公开的一方面提供一种方法,其中所述方法包括:接收待写入到存储器子***的主机数据;将所述主机数据的第一部分写入到所述存储器子***的第一可用数据块,其中所述第一可用数据块与第一写入模式相关联;接收所述存储器子***的第二可用数据块可用以写入的指示,其中所述第二可用数据块与第二写入模式相关联;由处理装置基于接收到的指示确定将所述主机数据的第二部分写入到所述第二可用数据块;及响应于确定将所述主机数据的所述第二部分写入到所述第二可用数据块,在以所述第一写入模式封闭所述第一可用数据块之前,以所述第二写入模式将所述主机数据的所述第二部分写入到所述第二可用数据块。
本公开的另一方面提供一种***,其中所述***包括:存储器装置;及处理装置,其以操作方式与所述存储器装置耦合以进行以下操作:接收对所述存储器装置的数据块执行垃圾收集操作的指示;识别所述存储器装置的第一可用数据块及所述存储器装置的第二可用数据块,其中所述第一可用数据块对应于主机游标,且其中所述第二可用数据块对应于垃圾收集游标;基于所述第一可用数据块的状况确定将经受所述垃圾收集操作的所述数据块的数据写入到所述第一可用数据块还是所述第二可用数据块;及响应于确定将所述数据块的所述数据写入到所述第一可用数据块,存储所述数据块的所述数据以封闭所述第一可用数据块。
本公开的另一方面提供一种存储有指令的有形非暂时性计算机可读媒体,所述指令在被执行时使处理装置进行以下操作:接收待写入于存储器子***处的主机数据;将所述主机数据的第一部分写入到所述存储器子***的第一可用数据块,其中所述第一可用数据块与第一写入模式相关联;接收所述存储器子***的第二可用数据块可用以写入的指示,其中所述第二可用数据块与第二写入模式相关联;基于接收到的指示确定将所述主机数据的第二部分写入到所述第二可用数据块;及响应于确定将所述主机数据的所述第二部分写入到所述第二可用数据块,以所述第二写入模式将所述主机数据的所述第二部分写入到所述第二可用数据块。
附图说明
根据下文给出的详细描述及本公开的各种实施方案的附图,将更充分地理解本公开。
图1说明根据本公开的实施例的包含存储器子***的实例计算***。
图2说明根据本公开的一些实施例的用以在实例存储器装置处执行数据块切换以用于写入主机数据的实例方法的流程图。
图3A说明根据本公开的一些实施例的与第一写入模式及第二写入模式相关联的实例存储器装置。
图3B说明根据本公开的一些实施例的从将主机数据写入到与实例存储器装置的第一写入模式相关联的第一开放块到与第二写入模式相关联的第二可用数据块的切换。
图3C说明根据本公开的一些实施例的以实例存储器装置的第二写入模式将主机数据写入到第二可用数据块。
图4说明根据本公开的一些实施例的用以执行数据块切换以用于垃圾收集的实例方法的流程图。
图5A说明根据本公开的一些实施例的用于执行垃圾收集操作的实例存储器装置。
图5B说明根据本公开的一些实施例的执行数据块切换以进行实例存储器装置的垃圾收集操作。
图5C说明根据本公开的一些实施例的对实例存储器装置执行垃圾收集操作。
图6为本公开的实施方案可在其中操作的实例计算机***的框图。
具体实施方式
本公开的方面涉及存储器子***处的数据块切换。存储器子***可为存储装置、存储器模块,或存储装置与存储器模块的混合。结合图1描述存储装置及存储器模块的实例。大体来说,主机***可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子***。主机***可提供待存储在存储器子***处的数据且可请求从存储器子***检索数据。
存储器装置可为非易失性存储器装置。非易失性存储器装置为一或多个裸片的封装。每个裸片可由一或多个平面组成。平面可分组成逻辑单元(LUN)。对于一些类型的非易失性存储器装置(例如,NAND装置),每个平面由一组物理块组成。每个块由一组页组成。每个页由一组存储器单元(“单元”)组成。单元为存储信息的电子电路。下文中,数据块指代用以存储数据的存储器装置的单元,且可包含存储器单元群组、字线群组、字线或个别存储器单元。
数据操作可由存储器子***执行。数据操作可为主机起始的操作。例如,主机***可在存储器子***上起始数据操作(例如,写入、读取、擦除等)。主机***可将存取请求(例如,写入命令、读取命令)发送到存储器子***,以便将数据存储在存储器子***处的存储器装置上,且从存储器子***上的存储器装置读取数据。如由主机请求所指定,待读取或写入的数据在下文中被称作“主机数据”。主机请求可包含主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、名字空间),其为主机***与主机数据关联的位置。逻辑地址信息(例如,LBA、名字空间)可为主机数据的元数据的部分。元数据还可包含错误处理数据(例如,ECC码字、奇偶校验码)、数据版本(例如,用于区分写入的数据的使用期限)、有效位图(其中LBA或逻辑传输单元包含有效数据)等。
存储器子***可执行关于包含在存储器子***中的一或多个存储器装置的各种操作。例如,可在一或多个存储器装置处执行读取操作、编程(即,写入)操作及擦除操作。存储器装置可包含一或多个数据块,所述数据块可包含一或多个存储器单元阵列,例如各自用于存储单个数据位的单层级单元(SLC)或各自存储多个数据位的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)或四层级单元(QLC)(在本文中统称为XLC)。每种存储器单元类型可具有不同数据密度,所述数据密度对应于每存储器单元可存储的数据量(例如,数据位)。
存储器装置可配置成包含具有SLC的一或多个数据块(被称为SLC数据块)及具有XLC的一或多个数据块(被称为XLC数据块)。存储器装置还可配置成使得存储器装置的第一部分布建为高速缓冲存储器,而存储器装置的第二部分布建为用户空间。在一些常规存储器子***中,高速缓冲存储器可包含一或多个SLC存储器单元(例如,块),且用户空间可包含一或多个XLC存储器单元。存储器单元可包含存储器单元群组、字线群组、字线或个别存储器单元。例如,存储器单元可包含一或多个块。高速缓冲存储器也可布建成包含一或多个XLC存储器单元,使得高速缓冲存储器包含SLC存储器单元及XLC存储器单元两者。响应于确定待在存储器装置处布建额外用户空间,高速缓冲存储器的XLC存储器单元可重新配置为用户空间存储器单元。
主机游标可用于管理写入操作的性能。游标可通过确定在何处、何时及以何序列将主机数据写入到存储器装置来管理存储器操作的执行。在一些实例中,游标可为到存储器装置的可用数据块的指针。主机游标可指示存储器装置的可用以存储传入主机数据的可用数据块(也称为开放块或开放数据块)。在一些实例中,可用数据块可为数据块的所有存储器单元都可用以存储主机数据的空数据块,或数据被写入到数据块的一或多个存储器单元而数据块的一或多个其它存储器单元可用以存储主机数据的部分空数据块。在常规存储器子***中,单个主机游标可用于管理写入操作的性能。高速缓冲存储器可包含一或多个可用数据块,且主机游标可指示高速缓冲存储器的用以以SLC模式或XLC模式存储传入主机数据的可用数据块。响应于确定高速缓冲存储器不包含可用数据块,主机游标可指示用户空间的用以以XLC模式存储传入主机数据的可用数据块。后续传入主机数据可被写入到可用用户空间数据块,如由主机游标所指示,直到用户空间不包含可用数据块为止。
在存储器子***的操作期间,空闲时间周期可在未接收到待存储于存储器子***处的传入主机数据时发生。在一些情况下,在空闲时间周期的起始处,无可用于传入主机数据的高速缓冲存储器数据块,且一或多个用户空间数据块可用于传入主机数据。因而,在空闲时间周期的起始处,主机游标可将用户空间数据块指示为可用数据块。由主机游标指示的可用用户空间数据块可为部分空数据块。可在空闲时间周期期间在存储器子***处执行例如垃圾收集操作的媒体管理操作,以使高速缓冲存储器及/或用户空间的一或多个数据块可用于后续传入主机数据。在空闲时间周期完成之后,可接收待存储于存储器子***处的传入主机数据。响应于主机游标在空闲时间周期的起始处将部分可用数据块指示为可用用户数据块,代替以SLC模式存储于新可用高速缓冲存储器数据块处,可以XLC模式将传入主机数据存储于部分可用数据块处。
常规存储器子***并不提供用于在用户空间数据块未封闭(即,可用)时将主机数据以SLC模式写入到可用高速缓冲存储器数据块的机制。结果,传入主机数据被以XLC模式写入到可用用户空间数据块以封闭可用用户空间数据块,即使一或多个高速缓冲存储器数据块可用也如此。当数据被写入到数据块的每个存储器单元时,数据块可被视为封闭的。写入性能显著降低,这是由于代替以SLC模式将主机数据写入到可用高速缓冲存储器数据块,主机数据被以XLC模式写入到可用用户空间数据块以封闭用户空间数据块,且XLC模式时延大于SLC模式时延。
本公开的方面通过提供由第一主机游标指示的第一可用数据块及由第二主机游标指示的第二可用数据块来解决上文及其它不足。通过提供第二主机游标以指示第二可用数据块,提供了即使以XLC模式开放的用户空间数据块未封闭,仍用于将主机数据以SLC模式写入到高速缓冲存储器的机制。第一主机游标及第二主机游标可充当存储器子***的高速缓冲存储器及用户空间两者中的可用数据块的记录。使用第一主机游标及第二主机游标,存储器子***可识别并选择用以写入传入主机数据的可用数据块,以降低写入操作时延。
本公开的优势包含但不限于改进了存储器子***的性能,这是因为总写入操作时延可被降低。例如,可将主机数据以SLC模式写入到高速缓冲存储器数据块而非以XLC模式写入到用户空间数据块,即使用户空间数据块尚未封闭(即,包含一或多个可用XLC)也如此。因此,通过提供至少第二主机游标以指示第二可用数据块,相比仅由第一主机游标指示一个可用数据块时的情况,可成功地以较少时间执行写入操作。因而,由于可以较少时间执行写入操作,因此存储器子***的总写入时延可被降低。写入时延降低可使得存储器子***能够满足服务质量(QoS)要求,所述要求指定当在存储器子***处执行写入操作时的各种操作要求。
图1说明根据本公开的一些实施例的包含存储器子***110的实例计算***100。存储器子***110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或此类媒体的组合。
存储器子***110可为存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡,及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM),及各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算***100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(IoT)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器及处理装置的此类计算装置。
计算***100可包含耦合到一或多个存储器子***110的主机***120。在一些实施例中,主机***120耦合到不同类型的存储器子***110。图1说明耦合到一个存储器子***110的主机***120的一个实例。如本文中所使用,“耦合到”或“与……耦合”大体上指代装置之间的连接,其可以是间接通信连接或直接通信连接(例如,没有介入装置),无论是有线还是无线的,包含例如电连接、光学连接、磁性连接等的连接。
主机***120可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,NVDIMM控制器),及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机***120使用存储器子***110,例如以将数据写入到存储器子***110及从存储器子***110读取数据。
主机***120可经由物理主机接口耦合到存储器子***110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、***组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机***接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)、开放NAND快闪接口(ONFI)、双数据速率(DDR)、低功率双数据速率(LPDDR),或任何其它接口。物理主机接口可用于在主机***120与存储器子***110之间传输数据。当存储器子***110通过PCIe接口与主机***120耦合时,主机***120可进一步利用NVM高速(NVMe)接口以存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子***110与主机***120之间传递控制、地址、数据及其它信号的接口。图1说明存储器子***110作为实例。大体来说,主机***120可经由相同通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子***。
存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器及就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)及三维NAND(3DNAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)及四层级单元(QLC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或此类的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可分组成页,页可指存储器装置的用以存储数据的逻辑单元。对于一些类型的存储器(例如,NAND),页可被分组以形成块。
尽管描述了非易失性存储器装置,例如3D交叉点非易失性存储器单元阵列及NAND型快闪存储器(例如,2D NAND、3D NAND),但存储器装置130可是基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器,及电可擦除可编程只读存储器(EEPROM)。
存储器子***控制器115(为简单起见,或为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据,以及其它此类操作。存储器子***控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑以执行本文中所描述的操作的数字电路。存储器子***控制器115可为微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子***控制器115可包含配置成执行存储在本地存储器119中的指令的处理器117(例如,处理装置)。在所说明的实例中,存储器子***控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子***110的操作(包含处理存储器子***110与主机***120之间的通信)的各种过程、操作、逻辑流程及例程。
在一些实施例中,本地存储器119可包含存储器寄存器,其存储存储器指针、所提取数据等。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子***110已说明为包含存储器子***控制器115,但在本公开的另一实施例中,存储器子***110不包含存储器子***控制器115,而是可替代地依赖于外部控制(例如,由外部主机或由与存储器子***分离的处理器或控制器提供)。
大体来说,存储器子***控制器115可从主机***120接收命令或操作,且可将命令或操作转换成指令或适当命令以实现对存储器装置130的所要存取。存储器子***控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作,及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子***控制器115可进一步包含主机接口电路以经由物理主机接口与主机***120通信。主机接口电路可将从主机***接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机***120的信息。
存储器子***110还可包含未说明的额外电路或组件。在一些实施例中,存储器子***110可包含高速缓冲存储器或缓冲器(例如,DRAM)及地址电路(例如,行解码器及列解码器),所述地址电路可从存储器子***控制器115接收地址并对地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子***控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子***控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130为受管理存储器装置,其为与本地控制器(例如,本地控制器135)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例为受管理NAND(MNAND)装置。
存储器子***110包含可用于维持存储器子***110的两个或更多个主机游标的游标组件113。在一些实施例中,控制器115包含游标组件113的至少一部分。例如,控制器115可包含处理器117(处理装置),其被配置成执行存储在本地存储器119中的指令以用于执行本文中所描述的操作。在一些实施例中,游标组件113为主机***120、应用程序或操作***的部分。
游标组件113可维持各自指示存储器子***的待写入主机数据的可用数据块的两个或更多个主机游标。第一主机游标可识别存储器子***的第一部分的可用数据块,其中第一部分对应于第一写入模式。第二主机游标可识别存储器子***的第二部分的可用数据块,其中第二部分对应于第二写入模式。第一写入模式可对应于存储器子***的每存储器单元的第一位数,且第二写入模式可对应于存储器子***的每存储器单元的第二位数。在一些实施方案中,每存储器单元的第一位数大于每存储器单元的第二位数。在其它实施方案中,第二位数大于第一位数。基于存储器子***的第一部分的数据块的可用性,游标组件可确定在与第一主机游标相关联的数据块或与第二主机游标相关联的数据块处写入主机数据。本文中描述关于游标组件113的操作的其它细节。
图2为根据本公开的一些实施例的用以在实例存储器装置处执行数据块切换以用于写入主机数据的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的游标组件113执行。尽管以特定序列或次序示出,但除非另外指定,否则可修改所述过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实施例中,可省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程是可能的。
在操作210处,处理装置接收待写入到存储器子***的主机数据。存储器子***可包含一或多个存储器装置,其中每个存储器装置可包含一或多个数据块。每个数据块可包含一或多个存储器单元阵列,例如SLC或XLC。每种存储器单元类型可具有不同数据密度,所述数据密度对应于每存储器单元可存储的数据量(例如,数据位)。
存储器子***可配置成使得以各种模式使用存储器子***的一或多个部分。例如,存储器子***的第一部分可用作高速缓冲存储器且存储器子***的第二部分可暴露为用户空间。高速缓冲存储器可为存储器子***的在主机数据被移动以在用户空间处进行长期存储之前临时存储主机数据的部分。在一些实施例中,可以SLC模式来写入数据到高速缓冲存储器的一或多个块的写入。在其它或类似实施例中,可以XLC模式来写入数据到用户空间的一或多个块的写入。如果无可用以以SLC模式存储传入主机数据的高速缓冲存储器块,则可以XLC模式将主机数据写入到用户空间,而非首先在高速缓冲存储器处以SLC模式写入数据且接着在用户空间处以XLC模式进行重写。
在操作220处,处理装置将主机数据的第一部分写入到存储器子***的第一可用数据块,其中第一可用数据块与第一写入模式相关联。第一可用数据块可为空数据块(即,数据块的所有存储器单元都可用于主机数据)或部分空数据块(即,数据被写入到数据块的一或多个存储器单元且数据块的一或多个其它存储器单元可用于主机数据)。在一些实例中,第一可用数据块可包含在存储器子***的第一部分(即,用户空间)中,其中第一部分对应于至少第一写入模式。第一写入模式可对应于第一可用数据块的每存储器单元编程第一位数。例如,第一可用数据块可包含一或多个QLC。结果,第一写入模式可为QLC写入模式。第一开放块可由第一主机游标识别为可用数据块。
在操作230处,处理装置接收存储器子***的第二可用数据块可用于主机数据的指示,其中第二可用数据块与第二写入模式相关联。在一些实例中,第二可用数据块可包含在存储器子***的第二部分(即,高速缓冲存储器)中,其中第二部分对应于至少第二写入模式。第二写入模式可对应于第二可用数据块的每存储器单元的第二位数。例如,第二可用数据块可包含一或多个SLC。结果,第二写入模式可为SLC写入模式。第二可用数据块可由第二主机游标识别为可用数据块。
第二可用数据块可用的指示可是由于在存储器子***的第二部分的一或多个数据块上完成了垃圾收集操作而被传输到处理装置。
在操作240处,处理装置基于接收到的指示确定将主机数据的第二部分写入到第二可用数据块。在一些实例中,在接收到指示时,第一可用数据块可是可用于主机数据的第二部分的(即,可包含一或多个XLC)。处理装置可在第一可用数据块被封闭之前确定将主机数据的第二部分写入到第二可用数据块。例如,可在数据被写入到第一可用数据的所有存储器单元之前将数据写入到第二可用数据块。处理装置可确定将主机数据的第二部分写入到第二可用数据块,因为相比第一可用数据块,第二可用数据块与每存储器单元的较小位数相关联,且因此,与将主机数据的第二部分写入到第二可用数据块相关联的写入操作时延小于与将主机数据的第二部分写入到第一可用数据块相关联的写入操作时延。
在操作250处,响应于确定将主机数据的第二部分写入到第二可用数据块,处理装置在以第一写入模式封闭第一开放块之前以第二写入模式将主机数据的第二部分写入到第二可用数据块。例如,可在主机数据被写入到第一开放块的每个存储器单元之前将主机数据的第二部分写入到第二可用数据块。
图3A说明根据本公开的一些实施例的实例存储器装置300。在一些实施例中,存储器装置300可包含第一部分310及第二部分320。第一部分310及第二部分320可为单个存储器装置300的部分。在其它实施例中,第一部分310可为存储器子***的第一存储器装置且第二部分320可为第二存储器装置。
第一部分310及第二部分320可各自包含至少一个数据块。每个数据块可包含一或多个存储器单元阵列,例如SLC或XLC。在一些实施例中,数据块可为封闭数据块330或可用数据块(即,空数据块340或部分空数据块350)中的至少一个。封闭数据块330可为所有存储器单元都填充有主机数据或垃圾收集数据中的至少一个的数据块。主机数据可为待写入到存储器装置300的从主机***(例如,图1的主机***120)接收的数据。垃圾收集数据可包含先前被写入到存储器装置300的数据块且在垃圾收集过程期间已被移动到另一数据块的数据。封闭数据块330可完全填充有数据,且因此不可用于待写入的数据。如先前所论述,可用数据块可包含可用以存储新主机数据的至少一个存储器单元。
第一部分310的一或多个数据块可与第一写入模式相关联。第一写入模式可对应于每个数据块的每存储器单元的第一位数。在一些实施例中,第一写入模式可对应于每存储器单元两个或更多个位(即,XLC)。第二部分320的一或多个数据块可与第二写入模式相关联。第二写入模式可对应于每个数据块的每存储器单元的第二位数。在一些实施例中,第二写入模式可对应于每存储器单元一个位(即,SLC)。在一些实施例中,第一写入模式的每存储器单元的第一位数可大于第二写入模式的每存储器单元的第二位数。
第一部分310可对应于第一主机游标360,且第二部分320可对应于第二主机游标370。第一主机游标360可指示第一部分310的可用以写入传入主机数据的数据块,而第二主机游标370可指示第二部分320的可用以写入传入主机数据的数据块。
图3B说明根据本公开的一些实施例的从将主机数据写入到与实例存储器装置300的第一写入模式相关联的第一可用数据块380到与第二写入模式相关联的第二可用数据块390的切换。可由存储器装置300从主机***接收主机数据,其中主机数据待写入到存储器装置300的第一可用数据块380。在主机数据被写入到第一可用数据块时,第一可用数据块380的存储器单元可被填充有主机数据,使得第一可用数据块380变得封闭。如果第一可用数据块380变得封闭,则第一主机游标360可经更新以指示第一写入模式部分的用以写入主机数据的另一可用数据块。
可接收到存储器装置300的第二可用数据块390可用于存储主机数据的指示。在一些实施例中,第二可用数据块390可为第二部分320的可用数据块。基于接收到的指示,处理装置可确定将主机数据的第二部分写入到存储器装置300的由第一主机游标360指示的第一可用数据块380,还是存储器装置300的由第二主机游标370指示的第二可用数据块390。在一些实例中,由第一主机游标360指示的第一可用数据块380可为部分空数据块。代替将主机数据的第二部分写入到部分空的第一可用数据块380,处理装置可在封闭第一可用数据块380之前确定将主机数据的第二部分写入到第二可用数据块390。处理装置可确定将主机数据的第二部分写入到第二可用数据块390,因为相比第一可用数据块380,第二可用数据块390与每存储器单元的较小位数相关联,且因此,与将主机数据的第二部分写入到第二可用数据块390相关联的写入操作时延小于与将主机数据的第二部分写入到第一可用数据块380相关联的写入操作时延。
图3C说明根据本公开的一些实施例的以实例存储器装置300的第二写入模式将主机数据写入到第二可用数据块390。处理装置可确定以第二写入模式将主机数据的第二部分写入到第二可用数据块390。
响应于确定将主机数据的第二部分写入到第二可用数据块390,可将主机数据的第二部分写入到第二可用数据块390。第二可用数据块390可由第二主机游标370指示。在主机数据被写入到第二可用数据块390时,第二可用数据块390的存储器单元可被填充有主机数据,使得第二可用数据块390变得封闭。如果第二可用数据块390变得封闭,则第二主机游标370可经更新以指示第二部分320的用以写入主机数据的另一可用数据块。主机数据可被写入到第二部分320的可用数据块,直到第二部分320的所有数据块都被封闭或未接收到传入主机数据为止。
图4为根据本公开的一些实施例的用以执行数据块切换以用于垃圾收集的实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1的游标组件113执行。尽管以特定序列或次序示出,但除非另外指定,否则可修改所述过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实施例中,可省略一或多个过程。因此,在每一实施例中,并非需要全部过程。其它过程流程是可能的。
在操作410处,处理装置接收对存储器装置的数据块执行垃圾收集操作的指示。存储器装置可包含一或多个数据块,其中每个数据块包含一或多个存储器单元阵列,例如SLC或XLC。在一些实例中,存储器装置可配置成使得一或多个部分被保留用于各种目的。存储器装置的第一部分可布建为高速缓冲存储器,其中一或多个高速缓冲存储器数据块配置成以SLC模式进行写入。存储器装置的第二部分可配置为用户空间,其中一或多个用户空间数据块配置成以XLC模式进行写入。
垃圾收集操作可包含识别存储器装置的第一部分中包含不需要数据的数据块,并清除所述数据块以维持最佳写入速度。垃圾收集操作可进一步包含将所需数据写入到存储器装置的第二部分的数据块并从第一部分去除所写入数据。
在操作420处,处理装置识别存储器装置的对应于主机游标的第一可用数据块及存储器装置的对应于垃圾收集游标的第二可用数据块。主机游标可指示存储器装置的包含可用于写入主机数据的存储器单元的可用数据块。垃圾收集游标可指示存储器装置的被保留用于存储垃圾收集数据(即,已被写入且从先前经受垃圾收集操作的块去除的数据)的可用数据块。
在操作430处,处理装置基于第一可用数据块的状况确定将经受垃圾收集操作的数据块的数据写入到第一可用数据块还是第二可用数据块。在一些实例中,第一可用数据块的状况可为第一可用数据块是否为部分空数据块。处理装置可确定将来自经受垃圾收集操作的数据块的数据写入到部分空的第一可用数据块,以封闭第一可用数据块,而非将数据块的数据写入到第二可用数据块。
在操作440处,响应于确定将数据块的数据写入到第一可用数据块,处理装置将数据块的数据存储到第一可用数据块以封闭第一可用数据块。处理装置可基于有利于在写入到不同可用数据块之前封闭部分空块的存储器策略来确定将数据写入到第一可用数据块。一旦第一可用数据块被封闭,不再可将数据写入到第一可用数据块,因为第一可用数据块的所有存储器单元都被填充。处理装置可确定将来自经受垃圾收集操作的其它数据块的数据写入到存储器装置的对应于垃圾收集游标的第二可用数据块。
图5A说明根据本公开的一些实施例的用于执行垃圾收集操作的实例存储器装置500。在一些实施例中,存储器装置500可包含第一部分510及第二部分520。第一部分510及第二部分520可为单个存储器装置500的部分。在其它实施例中,第一部分510可为第一存储器装置且第二部分520可为第二存储器装置。
第一部分510及第二部分520可各自包含至少一个数据块。每个数据块可包含一或多个存储器单元阵列,包含SLC或XLC中的至少一个。第一部分510的一或多个数据块可与第一写入模式相关联。第一写入模式可对应于每个数据块的每存储器单元的第一位数。在一些实施例中,第一写入模式可对应于每存储器单元一或多个位(即,SLC)。第二部分520的一或多个数据块可与第二写入模式相关联。在一些实施例中,第二写入模式可对应于每个数据块的每存储器单元的第二位数。
第一部分510及第二部分520可对应于主机游标530。主机游标530可指示第一部分510或第二部分520的待存储传入主机数据的可用数据块。第一部分510及第二部分520可进一步与垃圾收集游标570对应。垃圾收集游标570可指示存储器装置500的被保留用于存储垃圾收集数据的可用数据块。
可接收对存储器装置500的数据块执行垃圾收集操作的请求。第一数据块580可被选择用于垃圾收集。第一数据块580可包含第一部分510及/或第二部分520的封闭数据块。在一些实例中,可基于第一数据块580的不需要主机数据(即,无效数据)的量来选择第一数据块580。第一数据块580可被选择用于垃圾收集,以从第一数据块580去除不需要的数据以允许存储后续主机数据。
响应于接收到执行垃圾收集操作的请求及选择第一数据块580,可识别第一垃圾收集块及第二垃圾收集块。第一垃圾收集块可为由主机游标530指示的第二数据块560,且第二垃圾收集块可为由垃圾收集游标570指示的任何可用数据块。可基于可用数据块560的状况确定将第一数据块580的垃圾收集数据写入到可用数据块560,还是由垃圾收集游标570指示的可用数据块。在一些实例中,可用数据块560的状况可为可用数据块560是否为部分空数据块。处理装置可确定将第一数据块580的垃圾收集数据写入到部分空的第二可用数据块560,以封闭第二数据块560,而非将第一数据块580的垃圾收集数据写入到由垃圾收集游标570指示的数据块。
图5B说明根据本公开的一些实施例的对实例存储器装置执行垃圾收集操作。如上文所论述,处理装置可确定将第一数据块580的垃圾收集数据写入到部分空的第二数据块560,以封闭第二数据块560,而非将垃圾收集数据写入到由垃圾收集游标570指示的可用块。响应于确定将垃圾收集数据写入到第二数据块560,可将第一数据块580的垃圾收集数据(即,所需数据)写入到第二数据块560以便填充第二数据块560。可从第一数据块580去除写入到第一数据块580的不需要及所需数据。响应于封闭第二数据块560,主机游标530可经更新以指示存储器装置500的第二部分520的另一可用数据块。
图5C说明根据本公开的一些实施例的对实例存储器装置执行垃圾收集操作。在一些实例中,第三数据块590可被选择用于垃圾收集。由主机游标530指示的可用数据块及由垃圾收集游标570指示的可用数据块可被识别为用以存储第三数据块590的垃圾收集数据的候选数据块。处理装置可基于由主机游标530指示的可用数据块的状况确定将第三数据块590的垃圾收集数据写入到由主机游标530还是垃圾收集游标570指示的可用数据块。在一些实例中,所述状况可为由主机游标530指示的可用数据块是否为部分空块。响应于确定由主机游标530指示的可用数据块并非部分空块(即,为空块),处理装置可确定将第三数据块590的垃圾收集数据写入到由垃圾收集游标570指示的可用数据块。在其它或类似实例中,所述状况可进一步为主机游标530是否指示第二部分520中的块。响应于进一步确定主机游标530并不指示第二部分520中的块(即,指示高速缓冲存储器中待以SLC模式写入的块),处理装置可确定将第三数据块590的垃圾收集数据写入到由垃圾收集游标570指示的可用数据块。
响应于确定将垃圾收集数据写入到由垃圾收集游标570指示的可用数据块,可将第三数据块590的垃圾收集数据写入到由垃圾收集游标570指示的可用数据块。可从第三数据块590去除第三数据块590的不需要数据及所需经写入数据。
图6说明计算机***600的实例机器,在所述实例机器内可执行用于使机器执行本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机***600可对应于主机***(例如,图1的主机***120),所述主机***包含、耦合到或利用存储器子***(例如,图1的存储器子***110)或可用于执行控制器的操作(例如,执行操作***以执行对应于图1的游标组件113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网及/或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、开关或桥接器,或能够(顺序的或以其它方式)执行指定由所述机器采取的动作的指令集的任何机器。此外,虽然说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合个别地或共同地执行一(或多个)指令集以执行本文中所论述的方法中的任何一或多种。
实例计算机***600包含处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等),及数据存储***618,它们经由总线630彼此通信。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602配置成执行指令626以用于执行本文中所论述的操作及步骤。计算机***600可进一步包含网络接口驱动器608以在网络620上通信。
数据存储***618可包含机器可读存储媒体624(也称为计算机可读媒体),其上存储有一或多个指令集626或体现本文中所描述的方法或功能中的任何一或多种的软件。指令626还可在其由计算机***600执行期间完全或至少部分地驻存在主存储器604内及/或处理装置602内,主存储器604及处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储***618及/或主存储器604可对应于图1的存储器子***110。
在一个实施例中,指令626包含用以实施对应于游标组件(例如,图1的游标组件113)的功能性的指令。虽然在实例实施例中将机器可读存储媒体624示出为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集,且使机器执行本公开的方法中的任何一种或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体及磁性媒体。
已关于计算机存储器内的数据位的操作的算法及符号表示而呈现先前详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给本领域的其它技术人员的方式。算法在此处且大体上被认为是产生所要结果的操作的自洽序列。操作是需要对物理量进行物理操纵的操作。这些量通常但未必呈能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。有时,主要出于通用的原因,已证明将这些信号称为位、值、元素、符号、字符、项、数目等是方便的。
然而,应牢记,所有这些及类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可指操纵及变换计算机***的寄存器及存储器内的表示为物理(电子)量的数据为计算机***存储器或寄存器或其它此类信息存储***内的类似地表示为物理量的其它数据的计算机***或类似电子计算装置的动作及过程。
本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的磁盘(包含软盘、光盘、CD-ROM及磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适于存储电子指令的任何类型的媒体,它们各自耦合到计算机***总线。
本文中呈现的算法及显示器并非在本质上与任何特定计算机或设备相关。各种通用***可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述般呈现多种这些***的结构。另外,并不参考任何特定编程语言来描述本公开。应了解,可使用多种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机***(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。应显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神及范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。

Claims (20)

1.一种方法,其包括:
接收待写入到存储器子***的主机数据;
将所述主机数据的第一部分写入到所述存储器子***的第一可用数据块,其中所述第一可用数据块与第一写入模式相关联;
接收所述存储器子***的第二可用数据块可用以写入的指示,其中所述第二可用数据块与第二写入模式相关联;
由处理装置基于接收到的指示确定将所述主机数据的第二部分写入到所述第二可用数据块;及
响应于确定将所述主机数据的所述第二部分写入到所述第二可用数据块,在以所述第一写入模式封闭所述第一可用数据块之前,以所述第二写入模式将所述主机数据的所述第二部分写入到所述第二可用数据块。
2.根据权利要求1所述的方法,其中第一游标对应于所述第一可用数据块且第二游标对应于所述第二可用数据块,且其中所述第一游标及所述第二游标各自指示所述存储器子***的用以写入数据的可用数据块。
3.根据权利要求2所述的方法,其中所述第二游标为垃圾收集游标。
4.根据权利要求1所述的方法,其中所述第一写入模式对应于所述存储器子***的每存储器单元的第一位数,且所述第二写入模式对应于所述存储器子***的每存储器单元的第二位数,且其中每存储器单元的所述第一位数大于每存储器单元的所述第二位数。
5.根据权利要求4所述的方法,其中所述第一写入模式对应于所述存储器子***的每存储器单元的两个或更多个位,且所述第二写入模式对应于所述存储器子***的每存储器单元的一个位。
6.根据权利要求1所述的方法,其中所述指示指定垃圾收集操作已清空所述第二可用数据块。
7.根据权利要求1所述的方法,其中所述第二可用数据块与所述存储器子***的高速缓冲存储器相关联,且其中所述指示指定所述高速缓冲存储器可用于后续写入操作。
8.一种***,其包括:
存储器装置;及
处理装置,其以操作方式与所述存储器装置耦合以进行以下操作:
接收对所述存储器装置的数据块执行垃圾收集操作的指示;
识别所述存储器装置的第一可用数据块及所述存储器装置的第二可用数据块,其中所述第一可用数据块对应于主机游标,且其中所述第二可用数据块对应于垃圾收集游标;
基于所述第一可用数据块的状况确定将经受所述垃圾收集操作的所述数据块的数据写入到所述第一可用数据块还是所述第二可用数据块;及
响应于确定将所述数据块的所述数据写入到所述第一可用数据块,存储所述数据块的所述数据以封闭所述第一可用数据块。
9.根据权利要求8所述的***,其中所述状况包括响应于所述第一可用数据块为部分空数据块而将经受所述垃圾收集操作的所述数据块的所述数据写入到所述第一可用数据块,及响应于所述第一可用数据块为开放数据块而将所述数据写入到所述第二可用数据块。
10.根据权利要求9所述的***,其中封闭所述第一可用数据块对应于将所述数据写入到所述部分空数据块,使得所述部分空数据块的多个存储器单元中的每一个都包括主机数据或垃圾收集数据中的至少一种。
11.根据权利要求10所述的***,其中所述数据块与对应于所述存储器装置的每存储器单元的第一位数的第一写入模式相关联,且所述第一可用数据块及所述第二可用数据块与对应于所述存储器装置的每存储器单元的第二位数的第二写入模式相关联,且其中每存储器单元的所述第一位数小于每存储器单元的所述第二位数。
12.根据权利要求11所述的***,其中所述第一写入模式对应于所述存储器装置的每存储器单元的一个位,且所述第二写入模式对应于所述存储器装置的每存储器单元的两个或更多个位。
13.根据权利要求8所述的***,其中所述主机游标对应于所述存储器装置的用以写入主机数据的可用数据块,且所述垃圾收集游标对应于所述存储器装置的用以存储一或多个数据块的数据的可用数据块,所述存储器装置的所述一或多个数据块经受所述垃圾收集操作。
14.一种存储有指令的有形非暂时性计算机可读媒体,所述指令在被执行时使处理装置进行以下操作:
接收待写入于存储器子***处的主机数据;
将所述主机数据的第一部分写入到所述存储器子***的第一可用数据块,其中所述第一可用数据块与第一写入模式相关联;
接收所述存储器子***的第二可用数据块可用以写入的指示,其中所述第二可用数据块与第二写入模式相关联;
基于接收到的指示确定将所述主机数据的第二部分写入到所述第二可用数据块;及
响应于确定将所述主机数据的所述第二部分写入到所述第二可用数据块,以所述第二写入模式将所述主机数据的所述第二部分写入到所述第二可用数据块。
15.根据权利要求14所述的非暂时性计算机可读媒体,其中第一游标对应于所述第一可用数据块且第二游标对应于所述第二可用数据块,且其中所述第一游标及所述第二游标各自指示所述存储器子***的用以写入数据的可用数据块。
16.根据权利要求15所述的非暂时性计算机可读媒体,其中所述第二游标为垃圾收集游标。
17.根据权利要求14所述的非暂时性计算机可读媒体,其中所述第一写入模式对应于所述存储器子***的每存储器单元的第一位数,且所述第二写入模式对应于所述存储器子***的每存储器单元的第二位数,且其中每存储器单元的所述第一位数大于每存储器单元的所述第二位数。
18.根据权利要求17所述的非暂时性计算机可读媒体,其中所述第一写入模式对应于所述存储器子***的每存储器单元的两个或更多个位,且所述第二写入模式对应于所述存储器子***的每存储器单元的一个位。
19.根据权利要求14所述的非暂时性计算机可读媒体,其中所述指示指定垃圾收集操作已清空所述第二可用数据块。
20.根据权利要求14所述的非暂时性计算机可读媒体,其中所述第二可用数据块与所述存储器子***的高速缓冲存储器相关联,且其中所述指示指定所述高速缓冲存储器可用于后续写入操作。
CN202011528569.7A 2019-12-23 2020-12-22 存储器子***处的数据块切换 Active CN113093990B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/725,792 2019-12-23
US16/725,792 US11188459B2 (en) 2019-12-23 2019-12-23 Data block switching at a memory sub-system

Publications (2)

Publication Number Publication Date
CN113093990A true CN113093990A (zh) 2021-07-09
CN113093990B CN113093990B (zh) 2024-05-14

Family

ID=76437252

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011528569.7A Active CN113093990B (zh) 2019-12-23 2020-12-22 存储器子***处的数据块切换

Country Status (2)

Country Link
US (2) US11188459B2 (zh)
CN (1) CN113093990B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11188459B2 (en) * 2019-12-23 2021-11-30 Micron Technology, Inc. Data block switching at a memory sub-system
US11803444B1 (en) * 2022-06-15 2023-10-31 Micron Technology, Inc. Cooperative memory subsystem data recovery

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679446A (zh) * 2013-08-16 2015-06-03 Lsi公司 用于使用经分割快闪转变层的方法及设备
US20180211708A1 (en) * 2017-01-25 2018-07-26 Toshiba Memory Corporation Memory system and control method
US20180293003A1 (en) * 2017-04-07 2018-10-11 Micron Technology, Inc. Memory management
CN109716309A (zh) * 2016-09-19 2019-05-03 美光科技公司 具有包含静态及动态单元的混合高速缓冲存储器的存储器装置及电子***以及相关方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8537613B2 (en) * 2011-03-31 2013-09-17 Sandisk Technologies Inc. Multi-layer memory system
US9298603B2 (en) * 2011-09-09 2016-03-29 OCZ Storage Solutions Inc. NAND flash-based storage device and methods of using
US9747202B1 (en) * 2013-03-14 2017-08-29 Sandisk Technologies Llc Storage module and method for identifying hot and cold data
US9262316B2 (en) * 2013-12-09 2016-02-16 International Business Machines Corporation Recording dwell time in a non-volatile memory system
US9727249B1 (en) * 2014-02-06 2017-08-08 SK Hynix Inc. Selection of an open block in solid state storage systems with multiple open blocks
US9778863B2 (en) * 2014-09-30 2017-10-03 Sandisk Technologies Llc System and method for folding partial blocks into multi-level cell memory blocks
US9697134B2 (en) * 2015-06-10 2017-07-04 Micron Technology, Inc. Memory having a static cache and a dynamic cache
US10223259B1 (en) * 2017-08-31 2019-03-05 Micron Technology, Inc. Memory device with dynamic storage mode control
JP7030463B2 (ja) * 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
US11188459B2 (en) * 2019-12-23 2021-11-30 Micron Technology, Inc. Data block switching at a memory sub-system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679446A (zh) * 2013-08-16 2015-06-03 Lsi公司 用于使用经分割快闪转变层的方法及设备
CN109716309A (zh) * 2016-09-19 2019-05-03 美光科技公司 具有包含静态及动态单元的混合高速缓冲存储器的存储器装置及电子***以及相关方法
US20180211708A1 (en) * 2017-01-25 2018-07-26 Toshiba Memory Corporation Memory system and control method
US20180293003A1 (en) * 2017-04-07 2018-10-11 Micron Technology, Inc. Memory management

Also Published As

Publication number Publication date
US20210191852A1 (en) 2021-06-24
US11188459B2 (en) 2021-11-30
CN113093990B (zh) 2024-05-14
US20220050772A1 (en) 2022-02-17

Similar Documents

Publication Publication Date Title
CN115699185A (zh) 在存储装置上每单元实施可变数目的位
US11422945B2 (en) Generating, maintaining, or utilizing a compressed logical-to-physical table based on sequential writes
US11836076B2 (en) Implementing mapping data structures to minimize sequentially written data accesses
US20240184695A1 (en) Managing power loss recovery using a dirty section write policy for an address mapping table in a memory sub-system
US20220050772A1 (en) Data block switching at a memory sub-system
CN114981785A (zh) 基于改变高速缓存中数据块的写入模式执行媒体管理操作
US20230195350A1 (en) Resequencing data programmed to multiple level memory cells at a memory sub-system
US20220188231A1 (en) Low-bit density memory caching of parallel independent threads
US20230069382A1 (en) Managing host input/output in a memory system executing a table flush
US11816345B2 (en) Zone block staging component for a memory subsystem with zoned namespace
CN113360091B (zh) 用于存取操作的内部命令
CN115639951A (zh) 在存储器子***中实施自动速率控制
CN115705159A (zh) 存储器子***中双字的智能交换和有效编码
WO2022027578A1 (en) Memory overlay using host memory buffer
CN115048040A (zh) 基于有效数据的比率的媒体管理操作
CN113129974A (zh) 跟踪在存储器装置处执行的操作
US11934676B2 (en) Memory command aggregation to improve sequential memory command performance
US20240231695A1 (en) Managing retention latency for memory devices of vehicle systems
US11868642B2 (en) Managing trim commands in a memory sub-system
US11922011B2 (en) Virtual management unit scheme for two-pass programming in a memory sub-system
US11791000B2 (en) Valid translation unit count-based memory management
US11847349B2 (en) Dynamic partition command queues for a memory device
US11899972B2 (en) Reduce read command latency in partition command scheduling at a memory device
US20230409239A1 (en) Efficient command fetching in a memory sub-system
US20240176527A1 (en) Memory device region allocation using lifetime hints

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