CN115145475A - 用于调度在存储器系统中执行的操作的设备和方法 - Google Patents

用于调度在存储器系统中执行的操作的设备和方法 Download PDF

Info

Publication number
CN115145475A
CN115145475A CN202111329831.XA CN202111329831A CN115145475A CN 115145475 A CN115145475 A CN 115145475A CN 202111329831 A CN202111329831 A CN 202111329831A CN 115145475 A CN115145475 A CN 115145475A
Authority
CN
China
Prior art keywords
memory
data
controller
unit
unit operation
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.)
Withdrawn
Application number
CN202111329831.XA
Other languages
English (en)
Inventor
李知勋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SK Hynix Inc
Original Assignee
SK Hynix 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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN115145475A publication Critical patent/CN115145475A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0658Controller construction arrangements
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0613Improving I/O performance in relation to throughput
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本公开涉及一种存储器系统,包括:多个存储器组,能够执行数据输入/输出操作;以及控制器,被配置为将服从数据输入/输出命令的操作划分为与多个存储器组相对应的至少一个单元操作,并且基于关于多个存储器组的操作状态的第一信息以及关于可用资源的第二信息,将至少一个单元操作分配给与多个存储器组相对应的多个队列。

Description

用于调度在存储器系统中执行的操作的设备和方法
相关申请的交叉引用
本专利申请要求于2021年3月31日提交的、申请号为10-2021-0041916的韩国专利申请的权益,该韩国专利申请的全部公开内容通过引用并入本文。
技术领域
本文描述的本公开实施例涉及一种存储器系统,并且更特别地,涉及一种用于调度在存储器系统中执行的操作的设备和方法。
背景技术
最近,计算环境的范例已经转变为能够随时随地访问计算机系统的普适计算。因此,便携式电子装置(例如,移动电话、数码相机、笔记本电脑等)的使用正在迅速增加。这些便携式电子装置均可以使用或包括具有至少一个存储器装置的存储器系统。存储器系统可以是数据存储装置。数据存储装置可以用作便携式电子装置的主存储装置或辅助存储装置。
与硬盘不同,这种数据存储装置使用非易失性半导体存储器,表现出提高的稳定性和耐久性,不具有机械驱动部件(例如,机械臂),因此提供高的数据访问速度和相对低的功耗。具有这些优点的数据存储装置的示例包括但不限于通用串行总线(USB)存储器装置、具有各种接口的存储卡、固态驱动器(SSD)等。
发明内容
本公开的实施例可以提供一种数据处理系统以及操作该数据处理系统的方法。该数据处理系统包括诸如存储器系统和主机的组件和资源,并且能够基于组件和资源的使用情况动态地分配用于组件之间的数据通信的多个数据路径。
另外,本公开的实施例可以提供一种设备和方法,该设备和方法用于基于关于存储器系统中可用资源的第一信息以及关于多个存储器组中正在执行或计划执行的操作的第二信息来将数据输入/输出操作分配给多个存储器组,以提高存储器系统的数据输入/输出性能。
存储器系统中的控制器可以将与从外部装置输入的数据输入/输出相关命令相对应的任务划分为对应于存储器组的单元操作。每个存储器组能够以交错模式独立地执行数据输入/输出相关操作。控制器可以将单元操作分配给存储器组。在将单元操作分配给存储器组的过程中,控制器被配置为基于可用资源信息确定是分配单元操作还是改变单元操作的分配次序。
根据本公开的实施例,存储器系统中的控制器可以根据与数据输入/输出相关的单元操作的类型来确定单元操作的不同权重,以对每个存储器组中正在执行或计划执行的操作进行评分。当每个存储器组中可用资源可以用于单元操作时,控制器可以被配置为将单元操作分配给每个存储器组。此外,控制器可以避免单元操作倾向于分配给特定存储器组直到该特定存储器组无法执行附加单元操作的情况。因此,控制器可以在每个存储器组的能力范围内控制单元操作的分配,以提高存储器系统的操作安全性。另外,由于控制器可以基于关于每个存储器组中正在执行或计划执行的单元操作的处理速度、处理时间等的数字化来对每个存储器组的操作负担进行评分,因此控制器可以容易地改变或调整多个存储器组所执行的单元操作的执行顺序。
在实施例中,一种存储器系统可以包括:多个存储器组,能够执行数据输入/输出操作;以及控制器,被配置为将服从数据输入/输出命令的操作划分为与多个存储器组相对应的至少一个单元操作,并且基于关于多个存储器组的操作状态的第一信息以及关于可用资源的第二信息将至少一个单元操作分配给与多个存储器组相对应的多个队列。
控制器可以进一步被配置为基于多个存储器组中正在执行的至少一个第一单元操作以及分配给多个存储器组的至少一个第二单元操作来确定第一信息。
控制器可以通过以下方式来确定第一信息:根据单元操作的类型为至少一个第一单元操作和至少一个第二单元操作分配不同的权重;基于分配给至少一个第一单元操作和至少一个第二单元操作的权重,对各个存储器组的操作负担进行评分;并且将评分的操作负担与参考值进行比较。
多个存储器组中的每一个可以包括存储数据项的多个非易失性存储器单元以及用于临时存储数据项的缓冲存储器。多个存储器组中的每一个可以以交错模式独立地执行至少一个单元操作。
控制器可以被配置为在将至少一个单元操作分配给多个队列之前,基于第一信息和第二信息调整或改变至少一个单元操作的分配顺序。
多个队列中的每一个可以对应于多个存储器组中的每一个。控制器可以进一步包括可与多个队列区分的未决队列。
控制器可以进一步被配置为为至少一个单元操作分配至少一个资源。当单元操作的数量大于资源的数量时,控制器可以被配置为将至少一个单元操作分配给未决队列,而不是多个队列。
资源的数量可以等于控制器中包括的闪存转换层或闪存接口层所分配的用于数据输入/输出的元数据的数量。
资源的数量可以等于控制器能够控制的线程的数量。
在另一实施例中,一种用于操作存储器系统的方法可以包括:将服从数据输入/输出命令的操作划分为对应于多个存储器组的至少一个单元操作;基于多个存储器组中正在执行的至少一个第一单元操作以及分配给多个存储器组的至少一个第二单元操作,确定关于多个存储器组的操作状态的第一信息;以及基于关于可用资源的第二信息以及第一信息,将至少一个单元操作分配给与多个存储器组相对应的多个队列。
确定第一信息可以包括:根据单元操作的类型为至少一个第一单元操作和至少一个第二单元操作分配不同的权重;基于分配给至少一个第一单元操作和至少一个第二单元操作的权重,对各个存储器组的操作负担进行评分;以及将评分的操作负担与参考值进行比较。
至少一个单元操作可以由多个存储器组中的每一个以交错模式独立地执行。
当单元操作的数量大于资源的数量时,可以不将至少一个单元操作分配给多个队列。
该方法可以进一步包括将未分配的单元操作分配给未决队列。
该方法可以进一步包括:在将至少一个单元操作分配给多个队列之前,基于第一信息和第二信息调整或改变至少一个单元操作的分配顺序。
在另一实施例中,一种与多个存储器组通信的控制器,该多个存储器组能够经由多个数据路径执行数据输入/输出操作,该控制器包括至少一个处理器、至少一个存储器和逻辑,该逻辑的至少一部分被包括在硬件中。逻辑可以被配置为:在至少一个存储器中建立第一区域和第二区域,第一区域用于临时存储关于服从从外部装置输入的命令的操作的第一操作数据,第二区域用于临时存储关于计划在多个存储器组中执行的至少一个第二单元操作的第二操作数据;以及基于关于可用资源的第二信息以及关于多个存储器组的操作状态的第一信息,根据第一操作数据生成第二操作数据。
逻辑可以被配置为基于多个存储器组中正在执行的至少一个第一单元操作以及第二区域中存储的第二操作数据的至少一个第二单元操作来确定第一信息。
逻辑可以通过以下方式来确定第一信息:根据单元操作的类型为至少一个第一单元操作和至少一个第二单元操作分配不同的权重;基于分配给至少一个第一单元操作和至少一个第二单元操作的权重,对各个存储器组的操作负担进行评分;并且将评分的操作负担与参考值进行比较。
逻辑可以进一步被配置为:在至少一个存储器中建立第三区域,第三区域用于临时存储未包括在第二操作数据中的、关于至少一个未决操作或至少一个未决单元操作的第三操作数据;以及基于第一信息和第二信息,根据第一操作数据生成第三操作数据。
逻辑可以进一步被配置为在生成待存储在第二区域中的第二操作数据或待存储在第三区域中的第三操作数据时,基于第一区域中存储的第一操作数据,调整或改变第二操作数据或第三操作数据的顺序。
在另一实施例中,一种存储器系统可以包括:存储器装置,被配置为响应于操作指示符,对其中包括的第一存储器组和第二存储器组中的相应一个独立地执行操作;第一至第三队列,每个队列被配置为基于先进先出(FIFO)方案对操作指示符进行排队,第一队列和第二队列中的每一个将排队的操作指示符出队到相应存储器组的存储器装置;以及控制组件,被配置为根据第一和第二存储器组的可用资源以及状态将每个操作指示符入队到第一至第三队列中的一个中,其中将为入队到第一队列和第二队列中的一个中的操作指示符的操作分配可用资源,其中状态表示相应存储器组正在执行的操作以及在第一队列和第二队列中的相应一个中排队的操作指示符的操作,其中当可用资源不足以分配给操作指示符的操作时或者当相应存储器组的状态大于阈值时,控制组件将操作指示符入队到第三队列中,并且其中控制组件进一步被配置为根据可用资源和状态,将操作指示符从第三队列中出队,以将出队的操作指示符入队到第一队列和第二队列中的相应一个中。
附图说明
本文的描述参照了附图,其中,在整个附图中,相同的附图标记指代相同的部分。
图1示出根据本公开的实施例的存储器系统。
图2示出根据本公开的实施例的数据处理系统。
图3示出根据本公开的另一实施例的存储器系统。
图4示出根据本公开的实施例的图1至图3所示的控制器中包括的内部配置。
图5示出在存储器系统中执行的数据输入/输出操作的低效管理。
图6示出根据本公开的实施例的用于操作存储器系统的方法。
图7示出根据本公开的实施例的被配置为控制数据输入/输出操作的控制器的第一示例。
图8示出根据本公开的另一实施例的被配置为控制数据输入/输出操作的控制器的第二示例。
图9示出在根据本公开的实施例的存储器系统中执行的数据输入/输出操作的管理。
具体实施方式
以下参照附图描述本公开的各个实施例。然而,本公开的元件和特征可以被不同地配置或布置以形成其它实施例,其它实施例可以是公开的实施例中任一个的变型。
在本公开中,对“一个实施例”、“示例性实施例”、“实施例”、“另一实施例”、“一些实施例”、“各个实施例”、“其它实施例”、“可选实施例”等中包括的各种特征(例如,元件、结构、模块、组件、操作、特性等)的引用旨在表示任何这些特征可以包括在本公开的一个或多个实施例中,但是可以或不一定组合在相同的实施例中。
在本公开中,术语“包括”、“包括有”、“包含”和“包含有”是开放式的。如在所附权利要求中所使用的,这些术语指定存在所陈述的元件,并且不排除一种或多种其它元件的存在或添加。权利要求中的术语不排除设备包括附加组件(例如,接口单元、电路等)。
在本公开中,各种单元、电路或其它组件可以被描述或声称为“被配置为”执行一项或多项任务。在这种上下文中,“被配置为”用于通过指示块/单元/电路/组件包括在操作期间执行一项或多项任务的结构(例如,电路)来暗示结构。因此,即使在指定的块/单元/电路/组件当前未操作(例如,未接通或未激活)时,块/单元/电路/组件也可以说是被配置为执行任务。与“被配置为”语言一起使用的块/单元/电路/组件包括硬件——例如电路、存储可运行以实施操作的程序指令的存储器等。另外,“被配置为”可以包括通用结构(例如,通用电路),其由软件和/或固件(例如,FPGA或运行软件的通用处理器)操纵,从而以能够执行所讨论任务的方式进行操作。“被配置为”还可以包括使制造工艺(例如,半导体制造设施)适应制造适于实施或执行一项或多项任务的装置(例如,集成电路)。
如在本公开中所使用的,术语“电路”或“逻辑”是指以下所有:(a)纯硬件电路实施方式(诸如仅在模拟和/或数字电路中的实施方式)和(b)电路和软件(和/或固件)的组合,诸如(如适用于):(i)处理器的组合或(ii)一起工作以使诸如移动电话或服务器的设备执行各种功能的处理器/软件(包括数字信号处理器)、软件和存储器的一部分,以及(c)诸如微处理器或微处理器的一部分的电路,即使软件或固件物理上不存在,该电路也需要软件或固件进行操作。“电路”或“逻辑”的这种定义适用于该术语在本申请中的所有使用,包括在任何权利要求中的所有使用。作为另一示例,如本申请中所使用的,术语“电路”或“逻辑”还涵盖仅处理器(或多个处理器)或者处理器的一部分及其(或它们的)随附软件和/或固件的实施方式。如果适用于特别声明的元件,则术语“电路”或“逻辑”还涵盖,例如存储装置的集成电路。
如本文所使用的,术语“第一”、“第二”、“第三”等用作它们前面的名词的标签,并不暗示任何类型的(例如,空间的、时间的、逻辑的等)排序。术语“第一”和“第二”不一定意味着第一个值必须在第二个值之前写入。进一步地,尽管本文可以使用术语来标识各种元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与另外具有相同或相似名称的另一个元件区分开。例如,可以将第一电路与第二电路区分开。
进一步地,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除可能影响确定的其它因素。也就是说,确定可以仅基于那些因素或至少部分地基于那些因素。考虑短语“基于B确定A”。虽然在这种情况下,B是影响A的确定的因素,但这种短语并不排除A的确定也基于C。在其它情况下,A可以仅基于B确定。
本文中,数据的项、数据项、数据条目或数据的条目可以是位的序列。例如,数据项可以包括文件的内容、文件的一部分、存储器中的页面、面向对象的程序中的对象、数字消息、数字扫描图像、视频或音频信号的一部分、元数据或任何其它可以由位序列表示的实体。根据实施例,数据项可以包括离散对象。根据另一实施例,数据项可以包括两个不同组件之间的传输包内的信息单元。
现在将参照附图描述本公开的实施例,其中相同的附图标记指代相同的元件。
图1示出根据本公开的实施例的存储器系统110。
参照图1,存储器系统110可以包括存储器装置150和控制器130。存储器装置150和控制器130在存储器系统110中可以彼此物理地分开。存储器装置150和控制器130可以经由至少一个数据路径连接。例如,数据路径可以包括通道(channel)和/或通路(way)。根据实施例,存储器装置150和控制器130可以在功能上进行划分。此外,根据实施例,存储器装置150和控制器130可以利用单个芯片或多个芯片来实施。
存储器装置150可以包括多个存储器组162、164、166。本文中,多个存储器组162、164、166可以理解为一组,其包括非易失性存储器单元并且独立地执行数据输入/输出操作。例如,如果第一存储器组162中正在执行读取操作,则待对第一存储器组162执行的另一读取操作、写入操作或擦除操作处于等待状态。另一方面,即使当第一存储器组162中正在执行读取操作时,第二存储器组164或第三存储器组166也可以独立地执行另一读取操作、另一写入操作或另一擦除操作。
根据实施例,独立执行数据输入/输出操作的多个存储器组162、164、166中的每一个可以包括:多个非易失性存储器单元,用于存储数据项;缓冲器,用于在数据输入/输出操作期间临时存储数据项;以及电压供应电路170(参照图2),用于生成并供应具有各种电平的操作电压,该操作电压用于多个非易失性存储器单元中的数据输入/输出操作。例如,多个存储器组162、164、166中的每一个可以包括存储器平面或存储器管芯,存储器平面或存储器管芯包括图2所示的至少一个存储块152、154、156。存储块152可以理解为一组非易失性存储器单元,其中在单个擦除操作期间数据被一起擦除。存储块152可以包括多个页面。根据实施例,每个页面可以理解为一组非易失性存储器单元,其中数据在单个编程操作期间被一起存储或在单个读取操作期间被一起读出。
根据实施例,存储器平面可以被视为逻辑或物理分区,其包括:至少一个存储块152;驱动电路,能够控制包括多个非易失性存储器单元的阵列;以及缓冲器,可以临时存储待输入到非易失性存储器单元的数据或从非易失性存储器单元输出的数据。
根据实施例,存储器管芯可以包括至少一个存储器平面。存储器管芯可以理解为在物理上可区分的衬底上实施的一组组件。每个存储器管芯可以通过数据路径连接到控制器130。每个存储器管芯可以包括与控制器130交换数据和信号的接口。
根据实施例,存储器装置150可以包括多个存储器组162、164、166,存储器组162、164、166包括至少一个存储块152、至少一个存储器平面或至少一个存储器管芯。图1所示的存储器装置150的内部配置可以根据存储器系统110的性能而改变。因此,实施例不限于图1所示的内部配置。
控制器130可以响应于从外部装置输入的请求而执行数据输入/输出操作。例如,当控制器130响应于从外部装置输入的读取请求而执行读取操作时,存储器装置150中包括的多个非易失性存储器单元中存储的数据被传送到控制器130。
控制器130可以利用存储器144进行数据输入/输出操作。例如,控制器130可以将从存储器装置150传送的数据临时存储在图2和图3所示的存储器144中。控制器130可以响应于读取请求而将存储器144中存储的数据输出到外部装置。
参照图1,控制器130可以在存储器144中建立多个队列。本文中,队列是数据根据先进先出(first-in-first-out,FIFO)方案入队和出队的基本数据结构。队列可以理解为有限的有序列表,其中在一端(后面)仅执行插入操作(入队),在另一端(前面)仅执行删除操作(出队)。由于队列中存储的信息或数据是顺序输出的,因此当多个信息或数据存储在队列中时,无法改变输出次序。控制器130可以将从外部装置(例如,图2所示的主机102)传送的数据项Data和命令CMD顺序地插入到命令队列56中。如果控制器130没有改变命令CMD的操作次序,则将相应的命令CMD顺序地存储到运行队列180。本文中,运行队列180可以包括多个组队列182、184、186和未决队列188。多个组队列182、184、186可以与存储器装置150中的多个存储器组162、164、166一一对应。多个组队列182、184、186可以顺序地存储关于计划在多个存储器组162、164、166中执行的单元操作或任务的信息和数据。未分配给多个组队列182、184、186并因此处于未决的至少一个单元操作或任务可以包括在未决队列188中。
控制器130中的资源管理组件190可以改变或调整服从从命令队列56输出的命令并且分配给运行队列180的操作的运行次序或顺序。资源管理组件190可以首先基于在多个存储器组162、164、166中执行的至少一个第一单元操作以及分配给多个组队列182、184、186的至少一个第二单元操作来确定关于多个存储器组162、164、166的操作状态的第一信息(下文中称为状态信息),至少一个第二单元操作计划在多个存储器组162、164、166中执行。而且,资源管理组件190可以确定控制器130或存储器系统110可以分配以执行至少一个第一单元操作和至少一个第二单元操作的第二信息(下文中称为可用资源信息)。基于关于多个存储器组162、164、166的操作状态的第一信息以及关于多个存储器组162、164、166的可用资源的第二信息,资源管理组件190可以控制服从从命令队列56输出的命令并且分配给运行队列180的操作的分配。例如,资源管理组件190可以确定哪些服从命令队列56中排队的命令的队列操作被分配给多个组队列182、184、186和未决队列188之中。在该过程中,资源管理组件190可以改变或调整服从从命令队列56出队的多个输入命令的操作被分配给运行队列180的分配顺序。
另外,资源管理组件190可以将关于服从输入命令的操作、尚未传送到多个组队列182、184、186的信息传送到未决队列188。基于多个存储器组162、164、166的状态信息和可用资源信息,资源管理组件190可以将包括在未决队列188中或已经分配给未决队列188的操作分配给多个组队列182、184、186。
控制器130可以包括资源管理组件190。根据实施例,资源管理组件190可以包括资源分配器194和资源检查器192。例如,资源检查器192包括关于存储器系统110和控制器130中的可用资源的信息。进一步地,资源检查器192可以根据操作的类型将不同的权重分配给多个存储器组162、164、166中正在执行或计划执行的操作。资源检查器192可以基于不同的权重对多个存储器组162、164、166的操作负担进行评分,以确定关于多个存储器组162、164、166的操作状态的第一信息。例如,读取操作的权重为2,编程操作的权重为10,擦除操作的权重为20。当第一存储器组162正在执行读取操作并且与第一存储器组162相对应的第一组队列182包括计划在第一存储器组162中执行的另一读取操作和编程操作时,关于第一存储器组162的操作状态的第一信息可以量化为14(=2×2+10×1)。此外,作为另一示例,第二存储器组164中正在执行擦除操作,并且与第二存储器组164相对应的第二组队列184中包括读取操作和写入操作或者已经被分配了读取操作和写入操作。在这种情况下,关于第二存储器组164的操作状态的第一信息可以量化为32(=20×1+2×1+10×1)。
资源检查器192给出的权重可以根据数据输入/输出操作的类型而变化。根据实施例,权重可以根据数据输入/输出操作所花费资源的大小或数量而调整或变化。例如,当存储器系统110中设置的读取操作的操作裕量是α并且写入操作的操作裕量是3α时,赋予写入操作的权重可以是赋予读取操作的权重的三倍。
资源检查器192可以确定关于存储器系统110或控制器130可以分配以进行操作的可用资源的第二信息。根据实施例,资源检查器192不仅可以确定存储器系统110或控制器130可以利用或分配的最大资源数量,而且还可以确定存储器系统110或控制器130可以为多个存储器组162、164、166中正在执行的第一单元操作以及计划在多个存储器组162、164、166中执行并分配给多个组队列182、184、186的第二单元操作分配的资源量。例如,资源的数量可以与元数据的数量相同,该元数据与数据输入/输出操作相关并且在控制器130中的闪存转换层(FTL)或闪存接口层(FIL)中分配。例如,当存储器系统110或控制器130可以分配的最大资源数量为20时,可以为单个数据输入/输出操作分配单个资源。如果第一存储器组162中正在执行一个操作并且第一组队列182包括计划在第一存储器组162中执行的三个操作,则已经为第一存储器组162分配了四个资源。因此,当最大资源数量为20但已经分配了4个资源时,关于可用资源的第二信息可以是16。而且,如果第二存储器组164中正在执行或计划执行五个操作,则关于可用资源的第二信息可以是11(=16-5)。
根据实施例,资源的数量可以等于控制器130可以控制的线程的数量。在存储器系统110中,线程可以是进程或过程的组成部分。此外,运行线程可以是控制器130可以独立管理的编程指令序列。
当资源检查器192确定多个存储器组162、164、166的状态信息和可用资源信息时,资源分配器194确定将哪个服从命令队列56中的命令的操作分配给运行队列180。作为示例,存储器系统110或控制器130可以分配的最大资源数量为20。可以为多个存储器组162、164、166中正在执行的第一单元操作以及计划在多个存储器组162、164、166中执行并分配给多个组队列182、184、186的第二单元操作分配20个资源。当所有20个资源已经分配给第一单元操作和第二单元操作时,资源分配器194可以将关于服从从命令队列56出队的命令的操作的信息传送到运行队列180中的未决队列188。另一方面,当已经为多个存储器组162、164、166中正在执行的第一单元操作以及计划在多个存储器组162、164、166中执行并且已经分配给多个组队列182、184、186的第二单元操作分配了15个资源时,资源分配器194可以基于可用资源信息,将关于服从命令队列56(或未决队列188)中存储的至少一个命令的五个单元操作的信息传输到多个组队列182、184、186中。
根据实施例,资源分配器194可以将关于服从从命令队列56出队的命令的操作的信息传送到运行队列180。资源分配器194可以改变或调整单元操作分配给运行队列180的顺序。例如,存在至少一个可用资源,并且对应于从命令队列56出队的命令并且待分配给运行队列180的单元操作是写入操作。资源分配器194可以将多个存储器组162、164、166的操作状态相互比较,并且将写入操作分配给对应于最低分值的存储器组。例如,如果第一至第三存储器组162、164、166的操作状态被分别确定为值10、30和2,则写入操作可以被分配在第三存储器组166中执行。
作为示例,服从从命令队列56输出的命令的操作包括用于读取所有第一至第三存储器组162、164、166中的数据的多个读取单元操作。当第一存储器组162的操作状态远远大于其它存储器组164、166的操作状态时,可以将待在第一存储器组162中执行的读取单元操作传送到未决队列188中。进一步地,即使可以在其它存储器组164、166中快速地执行读取单元操作,但是读取操作的等待时间可能很长,因为当第一存储器组162中执行的读取单元操作完成时,该读取操作已经成功完成。因此,如果可以在读取操作之前执行另一数据输入/输出操作,则可以提高存储器系统110的数据输入/输出性能。如果在读取操作之后,服从从命令队列56输出的另一命令的另一操作是仅仅待在第三存储器组166中执行的写入操作,则资源分配器194可以将写入操作早于待在所有第一至第三存储器组162、164、166中执行的相应读取操作分配给第三存储器组。
根据实施例,资源分配器194可以将服从从命令队列56输出的命令的操作划分为对应于各个存储器组162、164、166的多个单元操作。如上所述,多个存储器组162、164、166可以独立地执行数据输入/输出单元操作。资源分配器194可以确定服从从外部装置输入的命令的操作是包括在多个存储器组162、164、166中的一些中执行的多个单元操作,还是包括仅在多个存储器组162、164、166之中的特定存储器组中执行的单元操作。例如,当服从从外部装置输入的命令的操作应当在多个存储器组162、164、166中执行时,资源分配器194可以将操作划分为单元操作或任务(可以被分配给存储器组162、164、166),并且将单元操作传送到组队列182、184、186中,每个组队列对应于多个存储器组162、164、166中的每一个。
如上所述,控制器130不仅可以基于存储器装置150正在执行的操作以及计划由存储器装置150执行的操作来确定关于存储器装置150的操作状态的第一信息,而且还可以确定关于由存储器系统110和控制器130分配和控制的可用资源的第二信息。控制器130可以将与从外部装置传输的命令相对应的操作或任务划分为与存储器装置150中的多个存储器组162、164、166相对应的单元操作,并且可以基于关于操作状态和可用资源的第一信息和第二信息将单元操作分配给多个存储器组162、164、166。由此,控制器130可以提高存储器系统110的数据输入/输出性能,并且更清楚地估计或预测数据输入/输出操作的完成时间。
在下文中,将集中于图1以及图2至图4中描述的控制器130和存储器装置150之间可以在技术上区分的操作或组件进行描述。具体地,将参照图3至图4更详细地描述控制器130中的闪存转换层(FTL)240。根据实施例,控制器130中的闪存转换层(FTL)的作用和功能可能会有所不同。
图2和图3示出根据本公开的一个或多个实施例的存储器系统110可以执行的一些操作。
参照图2,数据处理系统100可以包括主机102,主机102与诸如存储器系统110的存储器系统接合或联接。例如,主机102和存储器系统110可以经由数据总线、主机线缆等彼此联接以执行数据通信。
存储器系统110可以包括存储器装置150和控制器130。存储器系统110中的存储器装置150和控制器130可以被视为在物理上彼此分开的组件或元件。存储器装置150和控制器130可以经由至少一个数据路径连接。例如,数据路径可以包括通道和/或通路。
根据实施例,存储器装置150和控制器130可以是在功能上划分的组件或元件。进一步地,根据实施例,存储器装置150和控制器130可以利用单个芯片或多个芯片来实施。控制器130可以响应于从外部装置输入的请求而执行数据输入/输出操作。例如,当控制器130响应于从外部装置输入的读取请求而执行读取操作时,存储器装置150中包括的多个非易失性存储器单元中存储的数据被传送到控制器130。
如图1所示,存储器装置150可以包括多个存储块152、154、156。存储块152、154、156可以理解为通过单个擦除操作将数据一起移除的一组非易失性存储器单元。尽管未示出,但是存储块152、154、156可以包括页面,该页面是在单个编程操作期间将数据一起存储或在单个读取操作期间将数据一起输出的一组非易失性存储器单元。例如,一个存储块可以包括多个页面。
例如,存储器装置150可以包括多个存储器平面或多个存储管芯。根据实施例,存储器平面可以被认为是逻辑或物理分区,其包括:至少一个存储块;驱动电路,能够控制包括多个非易失性存储器单元的阵列;以及缓冲器,可以临时存储输入到非易失性存储器单元或从非易失性存储器单元输出的数据。
另外,根据实施例,存储器管芯可以包括至少一个存储器平面。存储器管芯可以理解为在物理上可区分的衬底上实施的一组组件。每个存储器管芯可以通过数据路径连接到控制器130。每个存储器管芯可以包括与控制器130交换数据项和信号的接口。
根据实施例,存储器装置150可以包括至少一个存储块152、154、156,至少一个存储器平面或至少一个存储器管芯。图1所示的存储器装置150的内部配置可以根据存储器系统110的性能而不同。本公开的实施例不限于图2所示的内部配置。
参照图2,存储器装置150可以包括能够向存储块152、154、156供应至少一些电压的电压供应电路170。电压供应电路170可以将读取电压Vrd、编程电压Vprog、通过电压Vpass或擦除电压Vers供应到存储块中包括的非易失性存储器单元中。例如,在用于读取存储块152、154、156中包括的非易失性存储器单元中存储的数据的读取操作期间,电压供应电路170可以将读取电压Vrd供应到所选择的非易失性存储器单元中。在用于将数据存储在存储块152、154、156中包括的非易失性存储器单元中的编程操作期间,电压供应电路170可以将编程电压Vprog供应到所选择的非易失性存储器单元中。而且,在对所选择的非易失性存储器单元执行的读取操作或编程操作期间,电压供应电路170可以将通过电压Vpass供应到未选择的非易失性存储器单元中。在用于擦除存储块152、154、156中包括的非易失性存储器单元中存储的数据的擦除操作期间,电压供应电路170可以将擦除电压Vers供应到存储块中。
存储器装置150可以存储关于基于执行哪种操作而供应到存储块152、154、156的各种电压的信息。例如,当存储块152、154、156中的非易失性存储器单元可以存储多位数据时,可能需要用于识别或读取多位数据项的多个电平的读取电压Vrd。存储器装置150可以包括表,该表包括与多个电平的读取电压Vrd相对应的信息,该多个电平的读取电压Vrd对应于多位数据项。例如,该表可以包括寄存器中存储的偏置值,每个偏置值对应于特定电平的读取电压Vrd。用于读取操作的读取电压Vrd的偏置值的数量可以限于预设范围内。而且,可以对偏置值进行量化。
主机102可以包括便携式电子装置(例如,移动电话、MP3播放器、膝上型计算机等)或非便携式电子装置(例如,台式计算机、游戏机、电视、投影仪等)。
主机102还可以包括至少一个操作系统(OS),其可以控制主机102中执行的功能和操作。OS可以提供与存储器系统110可操作地接合的主机102和旨在将数据存储在存储器系统110中的用户之间的互操作性。OS可以支持与用户请求相对应的功能和操作。作为示例而非限制,根据主机102的移动性,OS可以分类为通用操作系统和移动操作系统。根据系统需求或用户环境,通用操作系统可以分为个人操作系统和企业操作系统。与个人操作系统相比,企业操作系统可以专门用于保护和支持高性能计算。
移动操作系统可以用于支持针对移动性的服务或功能(例如,省电功能)。主机102可以包括多个操作系统。对应于用户的请求,主机102可以运行与存储器系统110互锁的多个操作系统。主机102可以将与用户的请求相对应的多个命令传输到存储器系统110中,从而在存储器系统110内执行与多个命令相对应的操作。
存储器系统110中的控制器130可以响应于从主机102输入的请求或命令而控制存储器装置150。例如,控制器130可以执行读取操作以将从存储器装置150读取的数据提供到主机102,并且可以执行写入操作(或编程操作)以将从主机102输入的数据存储在存储器装置150中。为了执行数据输入/输出(I/O)操作,控制器130可以控制和管理读取数据、编程数据、擦除数据等的内部操作。
根据实施例,控制器130可以包括主机接口132、处理器134、错误校正电路138、电源管理单元(PMU)140、存储器接口142和存储器144。如图2所示的控制器130中包括的组件可以根据关于存储器系统110的结构、功能、操作性能等而有所不同。
例如,根据主机接口的协议,存储器系统110可以利用可以与主机102电联接的各种类型的存储装置中的任一种来实施。合适的存储装置的非限制性示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、尺寸减小的MMC(RS-MMC)、微型MMC、安全数字(SD)卡、迷你SD、微型SD、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒等。根据存储器系统110的实施方式,可以向控制器130添加或省略组件。
主机102和存储器系统110分别可以包括控制器或根据一个或多个预定协议传输和接收信号、数据等的接口。例如,存储器系统110中的主机接口132可以包括能够向主机102传输信号、数据等或从主机102接收信号、数据等的设备。
控制器130中包括的主机接口132可以接收从主机102输入的信号、命令(或请求)和/或数据。例如,主机102和存储器系统110可以使用用于数据通信的预定的一组规则或程序或者预设的接口以在它们之间传输和接收数据。用于数据通信的一组规则或程序或者主机102和存储器系统110支持的用于发送和接收数据的接口的示例包括通用串行总线(USB)、多媒体卡(MMC)、并行高级技术附件(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、高速外围组件互连(PCIe或PCI-e)、串列SCSI(SAS)、串行高级技术附件(SATA)、移动工业处理器接口(MIPI)等。根据实施例,主机接口132是一种用于与主机102交换数据的层,并且由被称为主机接口层(HIL)的固件来实施或由其驱动。根据实施例,主机接口132可以包括图1所示的命令队列56。
电子集成驱动器(IDE)或高级技术附件(ATA)可以用作传输和接收数据的接口之一,例如,可以使用包括并行连接的40根导线的电缆来支持主机102与存储器系统110之间的数据传输和数据接收。当多个存储器系统110连接到单个主机102时,可以通过使用多个存储器系统110所连接到的位置或拨码开关将多个存储器系统110划分为主设备(master)和从设备(slave)。设置为主设备的存储器系统110可以用作主存储器装置。IDE(ATA)可以包括例如快速ATA、ATAPI或增强型IDE(EIDE)。
串行高级技术附件(SATA)接口是一种串行数据通信接口,其与电子集成驱动器(IDE)装置所使用的并行数据通信接口的各种ATA标准兼容。IDE接口中的40根导线可以减少到SATA接口的6根导线。例如,IDE的40个并行信号可以转换为SATA接口的6个串行信号。SATA接口由于其更快的数据传输和接收速率以及主机102在数据传输和接收时使用较少的资源消耗而被广泛使用。SATA接口可以将多达30个外部装置连接到主机102中包括的单个收发器。另外,SATA接口可以支持热插拔,该热插拔允许外部装置附接到主机102或从主机102分离,即使主机102和另一装置之间正在执行数据通信。因此,即使当主机102通电时,存储器系统110也可以像通用串行总线(USB)所支持的装置一样,作为附加装置连接或断开。例如,在具有eSATA端口的主机102中,存储器系统110可以像外部硬盘一样自由地附接到主机102或从主机102分离。
小型计算机系统接口(SCSI)是一种串行数据通信接口,其用于将计算机或服务器与其它外围装置连接。与诸如IDE和SATA的其它接口相比,SCSI可以提供高传输速度。在SCSI中,主机102和至少一个外围装置(例如,存储器系统110)串联连接,但是主机102和每个外围装置之间的数据传输和接收可以通过并行数据通信来执行。在SCSI中,很容易将诸如存储器系统110的装置连接到主机102或从主机102断开。SCSI可以支持将15个其它装置连接到主机102中包括的单个收发器。
串列SCSI(SAS)可以被理解为SCSI的串行数据通信版本。在SAS中,主机102和多个外围装置串联连接,主机102和每个外围装置之间的数据传输和接收可以按照串行数据通信方案执行。SAS可以通过串行电缆而不是并行电缆来支持主机102和外围装置之间的连接,以容易地使用SAS来管理设备,并且增强或提高操作可靠性和通信性能。SAS可以支持将八个外部装置连接到主机102中包括的单个收发器。
高速非易失性存储器(NVMe)是一种至少基于高速外围组件互连(PCIe)的接口,其被设计为提高配备有非易失性存储器系统110的主机102、服务器、计算装置等的性能和设计灵活性。PCIe可以使用插槽或特定电缆来连接计算装置(例如,主机102)和外围装置(例如,存储器系统110)。例如,PCIe可以使用多个引脚(例如,18个引脚、32个引脚、49个引脚或82个引脚)和至少一根导线(例如,x1、x4、x8或x16),以实现每秒超过数百MB(例如,250MB/s、500MB/s、984.6250MB/s或1969MB/s)的高速数据通信。根据实施例,PCIe方案可以实现每秒数十至数千兆比特的带宽。NVMe可以支持诸如SSD的存储器系统110的操作速度,其比硬盘更快。
根据实施例,主机102和存储器系统110可以通过通用串行总线(USB)连接。通用串行总线(USB)是一种可扩展、可热插拔的即插即用的串行接口,其可以在主机102和诸如以下的外围装置之间提供经济有效的标准连接:键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等。诸如存储器系统110的多个外围装置可以联接到主机102中包括的单个收发器。
参照图2,错误校正电路138可以校正从存储器装置150读取的数据的错误位,并且可以包括错误校正码(ECC)编码器和ECC解码器。ECC编码器可以对待编程到存储器装置150的数据执行错误校正编码,以生成添加了奇偶校验位的编码数据,并且将编码数据存储在存储器装置150中。当控制器130读取存储器装置150中存储的数据时,ECC解码器可以检测和校正从存储器装置150读取的数据中包含的错误位。例如,在对从存储器装置150读取的数据执行错误校正解码之后,错误校正电路138确定错误校正解码是否已经成功,并且基于错误校正解码的结果输出指令信号(例如,校正成功信号或校正失败信号)。错误校正电路138可以使用奇偶校验位,以便校正读取数据的错误位,该奇偶校验位是在针对存储器装置150中存储的数据的ECC编码过程中生成的。当错误位的数量大于或等于可校正错误位的数量时,错误校正电路138可以不校正错误位,而是可以输出指示校正错误位失败的校正失败信号。
根据实施例,错误校正电路138可以基于诸如以下的编码调制执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)码、turbo码、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)、分组编码调制(BCM)等。错误校正电路138可以包括基于上述码中的至少一种执行错误校正操作的所有电路、模块、系统和/或装置。图2所示的错误校正电路138可以包括图1所示的控制器130中包括的至少一些组件。
例如,ECC解码器可以对从存储器装置150传输的数据执行硬判决解码或软判决解码。硬判决解码可以理解为针对错误校正概括性分类的两种方法中的一种。硬判决解码可以包括通过从存储器装置150中的非易失性存储器单元读取数字数据“0”或“1”来校正错误位的操作。由于硬判决解码处置二进制逻辑信号,因此电路/算法设计或配置可以比软判决解码更简单,并且处理速度可以比软判决解码更快。
软判决解码可以将存储器装置150中的非易失性存储器单元的阈值电压量化为两个或更多个量化值(例如,多位数据、近似值、模拟值等),以便基于两个或多个量化值来校正错误位。控制器130可以从存储器装置150中的多个非易失性存储器单元接收两个或更多个字母或量化值,然后基于通过将量化值表征为诸如条件概率或似然性的信息组合而生成的信息来执行解码。
根据实施例,ECC解码器可以使用被设计用于软判决解码的方法之中的低密度奇偶校验和生成器矩阵(LDPC-GM)码。低密度奇偶校验(LDPC)码使用一种算法,该算法可以根据可靠性从存储器装置150中读取若干位的数据值,而不是像硬判决解码那样简单地读取数据1或0,并且通过消息交换对该过程迭代重复以提高值的可靠性。然后,将这些值最终确定为数据1或0。例如,使用LDPC码的解码算法可以理解为概率解码。在硬判决解码中,将从非易失性存储器单元输出的值解码为0或1。与硬判决解码相比,软判决解码可以基于随机数信息确定非易失性存储器单元中存储的值。关于位翻转(可以被认为是可能在存储器装置150中出现的错误),软判决解码可以提供更高的校正错误和恢复数据的概率,以及提供校正后的数据的可靠性和稳定性。LDPC-GM码可以具有内部LDGM码可以与高速LDPC码串联的方案。
根据实施例,ECC解码器可以使用例如低密度奇偶校验卷积码(LDPC-CC)来进行软判决解码。LDPC-CC可以具有使用基于可变块长度和移位寄存器的线性时间编码和流水化解码(pipeline decoding)的方案。
根据实施例,ECC解码器可以使用例如对数似然比Turbo码(LLR-TC)来进行软判决解码。可以将对数似然比(LLR)作为采样值与理想值之间距离的非线性函数计算。另外,Turbo码(TC)可以包括二维或三维的简单码(例如,汉明码),并且在行方向和列方向上重复解码以提高值的可靠性。
电源管理单元(PMU)140可以控制提供到控制器130的电力。PMU 140可以监测供应到存储器系统110的电力(例如,供应到控制器130的电压),并且将电力提供到控制器130中包括的组件。PMU 140不仅可以检测通电或断电,而且还可以生成触发信号以使存储器系统110能够在供应到存储器系统110的电力不稳定时紧急备份当前状态。根据实施例,PMU 140可以包括能够积累可以用于紧急情况的电力的装置或组件。
存储器接口142可以用作处置在控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102输入的命令或请求而控制存储器装置150。在当存储器装置150是闪速存储器时的情况下,存储器接口142可以生成存储器装置150的控制信号,并且可以在处理器134的控制下处理输入到存储器装置150或从存储器装置150输出的数据。
例如,当存储器装置150包括NAND闪速存储器时,存储器接口142包括NAND闪存控制器(NFC)。存储器接口142可以提供用于处置控制器130和存储器装置150之间的命令和数据的接口。根据实施例,存储器接口142可以通过被称为闪存接口层(FIL)的固件来实施或由该固件驱动,以用于与存储器装置150交换数据。存储器接口142可以包括图1所示的运行队列180或多个组队列182、184、186。
根据实施例,存储器接口142可以支持开放的NAND闪存接口(ONFi)、切换模式等,用于与存储器装置150的数据输入/输出。例如,ONFi可以使用数据路径(例如,通道、通路等),该数据路径包括至少一个能够支持以8位或16位数据为单位的双向传输和接收的信号线。控制器130与存储器装置150之间的数据通信可以通过关于异步单倍数据速率(SDR)、同步双倍数据速率(DDR)、切换双倍数据速率(DDR)等的至少一个接口来实现。
存储器144可以用作存储器系统110或控制器130的工作存储器,同时临时存储存储器系统110和控制器130中执行的操作的事务数据。例如,在将从存储器装置150输出的读取数据输出到主机102之前,存储器144可以响应于来自主机102的读取请求而临时存储该读取数据。另外,控制器130可以在将从主机102输入的写入数据编程到存储器装置150之前,将该写入数据临时存储在存储器144中。当控制器130控制存储器装置150的、诸如数据读取操作、数据写入或编程操作、数据擦除操作的操作时,可以将在存储器系统110的控制器130和存储器装置150之间传输的数据临时存储在存储器144中。
除了读取数据或写入数据之外,存储器144还可以存储用于在主机102和存储器装置150之间输入或输出数据的信息(例如,映射数据、读取请求、编程请求等)。根据实施例,存储器144可以包括命令队列、程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等中的一个或多个。控制器130可以在存储器144中为被设立以执行数据输入/输出操作的组件分配一些存储空间。例如,在存储器144中设立的写入缓冲器可以用于临时存储进行编程操作的目标数据。
在实施例中,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或两者来实施。尽管图2示出了例如存储器144设置在控制器130内,但是实施例不限于此。存储器144可以位于控制器130的内部或外部。例如,存储器144可以通过具有存储器接口的外部易失性存储器来实现,该存储器接口在存储器144和控制器130之间传送数据和/或信号。
处理器134可以控制存储器系统110的全部操作。例如,处理器134可以响应于从主机102输入的写入请求或读取请求,控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以运行固件以控制存储器系统110中的编程操作或读取操作。本文中,固件可以被称为闪存转换层(FTL)。将参照图3和图4详细描述FTL的示例。根据实施例,处理器134可以利用微处理器、中央处理单元(CPU)等来实施。
根据实施例,存储器系统110可以利用至少一个多核处理器来实施。多核处理器是一种电路或芯片,其中集成了被视为不同处理区域的两个或更多个内核。例如,当多核处理器中的多个内核独立地驱动或运行多个闪存转换层(FTL)时,可以提高存储器系统110的数据输入/输出速度(或性能)。根据实施例,存储器系统110中的数据输入/输出(I/O)操作可以通过多核处理器中的不同内核独立地执行。
控制器130中的处理器134可以执行与从主机102输入的请求或命令相对应的操作。此外,存储器系统110可以独立于从主机102输入的命令或请求而执行操作。在一种情况下,控制器130响应于从主机102输入的请求或命令而执行的操作可以被视为前台操作,而控制器130独立于从主机102输入的请求或命令而执行的操作可以被视为后台操作。控制器130可以执行前台操作或后台操作以读取存储器装置150中的数据、将数据写入存储器装置150或擦除存储器装置150中的数据。另外,与作为从主机102传输的设置命令的设置参数命令或设置特征命令相对应的参数设置操作可以被认为是前台操作。作为在没有从主机102传输的命令的情况下执行的后台操作,控制器130可以执行垃圾收集(GC)、损耗均衡(WL)、用于识别和处理坏块的坏块管理等。
根据实施例,可以执行与前台操作和后台操作两者基本相似的操作。例如,当存储器系统110响应于从主机102输入的请求或命令而执行垃圾收集(例如,手动GC)时,垃圾收集可以被视为前台操作。当存储器系统110独立于主机102而执行垃圾收集(例如,自动GC)时,垃圾收集可以被视为后台操作。
当存储器装置150包括每个包括多个非易失性存储器单元的多个管芯(或多个芯片)时,控制器130可以针对从主机102输入的多个请求或命令执行并行处理,以提高存储器系统110的性能。例如,所传输的请求或命令可以被划分为多个组,该多个组包括存储器装置150中包括的多个平面、多个管芯或多个芯片中的至少一些,多个组的请求或命令在每个平面、每个管芯或每个芯片中单独或并行处理。
控制器130中的存储器接口142可以通过至少一个通道和至少一个通路连接到存储器装置150中的多个管芯或芯片。当控制器130响应于与包括非易失性存储器单元的多个页面相关联的请求或命令而通过每个通道或每个通路将数据分配并存储在多个管芯中时,与请求或命令相对应的多个操作可以在多个管芯或平面中同时或并行地执行。这种处理方法或方案可以被视为交错法。由于存储器系统110的数据输入/输出速度因通过利用交错法操作而提高,因此可以提高存储器系统110的数据I/O性能。
作为示例而非限制,控制器130可以识别与存储器装置150中包括的多个管芯相关联的多个通道(或多个通路)的状态。控制器130可以将每个通道或每个通路的状态确定为忙碌状态、就绪状态、活动状态、空闲状态、正常状态和异常状态中的一种。控制器确定通过哪个通道或通路来传递指令(和/或数据)可以与物理块地址相关联。控制器130可以参考从存储器装置150传递的描述符。描述符可以包括描述关于存储器装置150的某些情况的参数块或页面。描述符可以具有预定格式或结构。例如,描述符可以包括装置描述符、配置描述符、单元描述符等。控制器130可以参考或使用描述符来确定使用哪个(哪些)通道或通路来交换指令或数据。
参照图2,存储器系统110中的存储器装置150可以包括多个存储块152、154、156。多个存储块152、154、156中的每一个包括多个非易失性存储器单元。根据实施例,存储块152、154、156可以是一起被擦除的一组非易失性存储器单元。存储块152、154、156可以包括多个页面,这些页面是一起进行读取或编程的一组非易失性存储器单元。
在一个实施例中,每个存储块152、154或156可以具有高集成度的三维堆叠结构。此外,存储器装置150可以包括多个管芯,每个管芯包括多个平面,每个平面包括多个存储块152、154、156。存储器装置150的配置可以根据存储器系统110的性能而改变。
图2示出了包括多个存储块152、154和156的存储器装置150。根据一个存储器单元中可以存储的位数,多个存储块152、154和156可以是单层单元(SLC)存储块、多层单元(MLC)存储块等中的任一个。SLC存储块包括由每个存储器单元存储一位数据的存储器单元实施的多个页面。SLC存储块可以比MLC存储块具有更高的数据I/O操作性能和耐久性。MLC存储块包括由每个存储器单元存储多位数据(例如,两位或更多位数据)的存储器单元实施的多个页面。与SLC存储块相比,针对相同的空间,MLC存储块可以具有更大的存储容量。就存储容量而言,MLC存储块可以是高度集成的。
在实施例中,存储器装置150可以利用诸如双层单元(DLC)存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合的MLC存储块来实施。DLC存储块可以包括由每个存储器单元能够存储2位数据的存储器单元实施的多个页面。TLC存储块可以包括由每个存储器单元能够存储3位数据的存储器单元实施的多个页面。QLC存储块可以包括由每个存储器单元能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可以利用包括由每个存储器单元能够存储五位或更多位数据的存储器单元实施的多个页面的块来实施。
根据实施例,控制器130可以使用存储器装置150中包括的MLC存储块作为一个存储器单元中存储一位数据的SLC存储块。多层单元(MLC)存储块的数据输入/输出速度可比SLC存储块的数据输入/输出速度慢。也就是说,当MLC存储块用作SLC存储块时,可以减少读取或编程操作的裕量。例如,当MLC存储块用作SLC存储块时,控制器130可以以更高的速度执行数据输入/输出操作。因此,因为缓冲器可能需要较高的数据输入/输出速度以提高存储器系统110的性能,所以控制器130可以使用MLC存储块作为SLC缓冲器来临时存储数据。
进一步地,根据实施例,控制器130可以多次将数据编程到MLC,而不对存储器装置150中包括的特定MLC存储块执行擦除操作。通常,非易失性存储器单元不支持数据重写。然而,控制器130可以使用MLC能够存储多位数据的特征多次将1位数据编程到MLC。对于MLC重写操作,当将1位数据编程到MLC时,控制器130可以将编程次数存储为单独的操作信息。根据实施例,对MLC的阈值电压进行均匀均衡的操作可以在将另一个1位数据编程到相同MLC之前执行,其中每个MLC已经存储了另一位数据。
在实施例中,存储器装置150被实现为诸如闪速存储器的非易失性存储器,例如实现为NAND闪速存储器、NOR闪速存储器等。在另一实施例中,存储器装置150可以通过以下中的至少一种来实施:相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋转移力矩随机存取存储器(STT-RAM)和自旋转移力矩磁性随机存取存储器(STT-MRAM)等。
参照图3,存储器系统中的控制器130与主机102和存储器装置150一起操作。如图所示,控制器130包括主机接口132、闪存转换层(FTL)240、存储器接口142和先前参照图2标识的存储器144。
根据实施例,图2所示的错误校正电路138可以被包括在闪存转换层(FTL)240中。在另一实施例中,错误校正电路138可以被实施为控制器130中包括的或与控制器130相关联的单独模块、电路、固件等。
主机接口132可以处置从主机102传输的命令、数据等。作为示例而非限制,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收的命令、数据等,并且例如,按照它们存储在命令队列56中的次序将它们输出到缓冲器管理器52。缓冲器管理器52可以对从命令队列56接收的命令、数据等进行分类、管理或调整。事件队列54可以顺序地传输用于处理从缓冲器管理器52接收的命令、数据等的事件。
多个相同特性的命令或数据可以从主机102传输,或者多个不同特性的命令和数据可以在由主机102混合或打乱之后传输到存储器系统110。例如,用于读取数据的多个命令(即,读取命令)可以传递到存储器系统110,或者用于读取数据的命令(即,读取命令)以及用于编程/写入数据的命令(即,写入命令)可以交替地传输到存储器系统110。主机接口132可以将从主机102传输的命令、数据等顺序地存储在命令队列56中。此后,主机接口132可以根据已经从主机102传输的命令、数据等的特性估计或预测控制器130将会执行哪种内部操作。主机接口132可以基于命令、数据等的特性来确定它们的处理次序和优先级。
根据从主机102传输的命令、数据等的特性,主机接口132中的缓冲器管理器52被配置为确定缓冲器管理器52是应将命令、数据等存储在存储器144中,还是应将命令、数据等传递到闪存转换层(FTL)240。事件队列54接收从缓冲器管理器52传输的事件(这些事件是存储器系统110或控制器130响应于命令、数据等而待在内部运行和处理的),并以事件输入到事件队列54的次序将事件传递到闪存转换层(FTL)240。
根据实施例,图3所示的闪存转换层(FTL)240可以实施多线程方案以执行数据输入/输出(I/O)操作。多线程FTL可以通过多核处理器使用控制器130中包括的多线程来实施。
根据实施例,闪存转换层(FTL)240可以包括主机请求管理器(HRM)46、映射管理器(MM)44、状态管理器(GC/WL)42和块管理器(BM/BBM)48。主机请求管理器(HRM)46可以管理从事件队列54传输的事件。映射管理器(MM)44可以处置或控制映射数据。状态管理器42可以执行垃圾收集(GC)或损耗均衡(WL)。块管理器48可以对存储器装置150中的块运行命令或指令。
作为示例而非限制,主机请求管理器(HRM)46可以使用映射管理器(MM)44和块管理器48来处置或处理根据从主机接口132传递的读取和编程命令以及事件的请求。主机请求管理器(HRM)46可以向映射管理器(MM)44发送查询请求,以确定对应于与事件一起输入的逻辑地址的物理地址。主机请求管理器(HRM)46可以将读取请求以及物理地址一起发送到存储器接口142,以处理读取请求,即处置事件。在一个实施例中,主机请求管理器(HRM)46可以向块管理器48发送编程请求(或写入请求),以将数据编程到存储器装置150中未存储数据的特定空页面,然后可以向映射管理器(MM)44传输与该编程请求相对应的映射更新请求,以更新将逻辑地址与物理地址彼此映射的信息中与经编程的数据相关的项。
块管理器48可以将从主机请求管理器(HRM)46、映射管理器(MM)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或增强存储器系统110的编程或写入性能,块管理器48可以收集编程请求,并且将针对多平面和单触发编程操作的闪存编程请求发送到存储器接口142。在实施例中,块管理器48向存储器接口142发送若干个闪存编程请求,以增强或最大化多通道和多方向闪存控制器的并行处理。
在一个实施例中,块管理器48可以根据有效页面的数量来管理存储器装置150中的块,在需要空闲块时选择并擦除没有有效页面的块,并且当确定将要执行垃圾收集时,选择包括最少数量的有效页面的块。状态管理器42可以执行垃圾收集以将所选择块中存储的有效数据移动到空块,并且擦除所选择块中存储的数据,使得存储器装置150可以具有足够的空闲块(即,没有数据的空块)。当块管理器48将关于待擦除的块的信息提供到状态管理器42时,状态管理器42可以检查待擦除的块的所有闪存页面,以确定该块的每个页面是否有效。
例如,为了确定每个页面的有效性,状态管理器42可以识别每个页面的带外(OOB)区域中记录的逻辑地址。为了确定每个页面是否有效,状态管理器42可以将页面的物理地址与映射到根据查询请求获得的逻辑地址的物理地址进行比较。状态管理器42将针对每个有效页面将编程请求发送到块管理器48。当编程操作完成时,可以通过映射管理器44来更新映射表。
映射管理器44可以管理映射数据,例如逻辑-物理映射表。映射管理器44可以处理主机请求管理器(HRM)46或状态管理器42所生成的各种请求,例如查询、更新等。映射管理器44可以将整个映射表存储在存储器装置150(例如,闪速存储器/非易失性存储器)中,并且根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求时发生映射高速缓存未命中时,映射管理器44可以向存储器接口142发送读取请求以加载存储器装置150中存储的相关映射表。当映射管理器44中的脏高速缓存块的数量超过一定阈值时,可以向块管理器48发送编程请求,从而形成干净高速缓存块,并且可以将脏映射表存储在存储器装置150中。
当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器(HRM)46可以针对页面的相同逻辑地址来编程最新版本的数据,并且在当前发出更新请求。当状态管理器42在有效页面的复制未正常完成的状态下请求映射更新时,映射管理器44可以不执行映射表更新。这是由于,当状态管理器42请求映射更新并且稍后才完成有效页面复制时,映射请求以及旧物理信息一起发出。映射管理器44可以在或仅当最新的映射表仍然指向旧的物理地址时执行映射更新操作以确保准确性。
图4示出根据本公开的实施例的图1至图3所示的控制器的内部配置。
参照图4,控制器130中的闪存转换层(FTL)240可以划分为三层:地址转换层ATL;虚拟闪存层VFL;以及闪存接口层FIL。
例如,地址转换层ATL可以将从文件系统传输的逻辑地址LA转换为逻辑页面地址。地址转换层ATL可以执行关于逻辑地址空间的地址转换过程。也就是说,地址转换层ATL可以基于闪速存储器140的逻辑页面地址LPA映射到从主机传输的逻辑地址LA的映射信息来执行地址转换处理。这种逻辑-逻辑地址映射信息(下文中称为L2L映射)可以存储在存储器装置150中存储元数据的区域中。
虚拟闪存层VFL可以将地址转换层ATL所映射的逻辑页面地址LPA转换为虚拟页面地址VPA。此处,虚拟页面地址VPA可以对应于虚拟存储器装置的物理地址。也就是说,虚拟页面地址VPA可以对应于存储器装置150中的存储块。如果存储器装置150中的存储块之中存在坏块,则该坏块可以被虚拟闪存层VFL排除。另外,虚拟闪存层VFL可以包括恢复算法,该恢复算法用于扫描扫描区域,以恢复存储器装置150中存储的逻辑到虚拟地址映射信息(L2V映射)以及用于存储用户数据的数据区域中的映射信息。恢复算法能够恢复逻辑到虚拟地址映射信息(L2V映射)。虚拟闪存层VFL可以基于通过恢复算法恢复的逻辑到虚拟地址映射信息(L2V映射),执行关于虚拟地址空间的地址转换过程。
闪存接口层FIL可以将虚拟闪存层VFL的虚拟页面地址转换为存储器装置150的物理页面地址。闪存接口层FIL执行用于与存储器装置150接口连接的低级操作。例如,闪存接口层FIL可以包括用于控制存储器装置150的硬件的低级驱动程序、用于检查和校正从存储器装置150传输的数据中的错误的错误校正码(ECC)以及用于执行诸如坏块管理(BBM)的操作的模块。
图5示出在存储器系统中执行的数据输入/输出操作的低效管理。
参照图5,存储器装置150中的多个管芯DIE0至DIE3可以对应于图1所示的多个存储器组162、164、166。多个管芯DIE0至DIE3能够独立地执行数据输入/输出操作。控制器130中的多个队列Queue0至Queue3与存储器装置150中的多个管芯DIE0至DIE3可以一一对应。
对第一管芯DIE0执行第一擦除操作并为第一擦除操作分配一个资源。对第二管芯DIE1执行第一编程(写入)操作并为第一编程操作分配一个资源。另一方面,在第三管芯DIE2和第四管芯DIE3中没有执行任何操作,并且第三管芯DIE2和第四管芯DIE3当前处于空闲状态。而且,参考包括计划在多个管芯DIE0至DIE3中执行的单元操作的多个队列Queue0至Queue3,向第一队列Queue0分配11个单元操作,并且为该11个单元操作分配11个资源。向第二队列Queue1分配3个单元操作,并且为该3个单元操作分配三个资源。另一方面,第三队列Queue2和第四队列Queue3中可不包括单元操作,并且可不为第三管芯DIE2和第四管芯DIE3分配资源。
如果控制器130可以分配的总资源数量为16,则可用资源(Free Resource)的数量变为0。也就是说,已经针对第一管芯DIE0和第二管芯DIE1中执行的至少一个第一单元操作以及第一队列Queue0和第二队列Queue1并且计划在第一管芯DIE0和第二管芯DIE1中执行的至少一个第二单元操作分配了所有16个资源。
由于没有可用资源,因此即使与从命令队列56出队的命令相对应的其它单元操作仅仅可以在第三管芯DIE2和第四管芯DIE3中执行,但是也无法将其它单元操作分配给与第三管芯DIE2和第四管芯DIE3相对应的第三队列Queue2和第四队列Queue3。当控制器130基于可用资源信息将与从命令队列56出队的命令相对应的单元操作和任务顺序地分配给多个队列Queue0至Queue3时,多个管芯DIE0至DIE3中的一些可能处于忙碌状态,而另外一些可能处于空闲状态。即使多个管芯DIE0至DIE3可以独立地执行数据输入/输出操作,但是当控制器130没有将多个单元操作有效地分配给多个管芯DIE0至DIE3时,图5中描述的情况仍然可能发生。在这种情况下,存储器系统的数据输入/输出性能可能会劣化。
图6示出根据本公开的实施例的用于操作存储器系统的方法。
参照图6,用于操作存储器系统的方法可以包括:将响应于输入命令的操作划分为与存储器组相对应的多个单元操作(302);检查关于存储器组中正在执行或计划执行的单元操作的状态信息(304);并且基于存储器组的可用资源信息和状态信息确定是否将多个单元操作分配给存储器组(306)。本文中,存储器组可以被单独配置为以交错模式执行数据输入/输出(I/O)操作。例如,各个存储器组包括存储器管芯或存储器平面。
在接收到从外部装置输入的命令之后,存储器系统110可以识别命令的类型以及服从该命令的操作将在哪个存储器组中执行。例如,输入命令可以分类为读取命令、编程命令和擦除命令。与存储器系统110通信的外部装置(例如,图2至图3所示的主机102)可以传输具有对应于预设协议的格式的命令。而且,当从外部装置输入的命令与数据输入/输出操作相关时,相应的命令可以与地址一起输入。通常,外部装置可以将与外部装置所使用的地址方案相对应的地址传输到存储器系统。地址的示例是逻辑地址。存储器系统可以对逻辑地址执行地址转换,以获得物理地址。本文中,物理地址可以是存储器系统内部使用的地址系统。根据实施例,外部装置可以将逻辑地址和物理地址两者传输到存储器系统。存储器系统可以基于从外部装置输入的命令和地址来识别存储器系统内部执行的操作类型以及操作应当在哪里执行。基于该信息,存储器系统110可以将与从外部装置输入的命令相对应的操作或任务划分为与至少一个存储器组相对应的至少一个单元操作(302)。本文中,存储器组可以理解为能够在存储器装置150内独立地执行数据输入/输出操作的组件。
存储器系统110可以收集关于存储器组中正在执行的至少一个第一单元操作以及计划在存储器组中执行的至少一个第二单元操作的信息(304)。例如,可以基于从控制器130传输到存储器组的命令或等待从存储器组接收响应的命令来识别存储器组中正在执行的第一单元操作。而且,可以基于与每个存储器组相对应的队列中包括的信息来识别计划在存储器组中执行的第二单元操作。
根据实施例,存储器系统110可以根据单元操作的类型为至少一个第一单元操作和至少一个第二单元操作分配不同的权重,并且量化每个存储器组的状态信息。本文中,根据单元操作的类型给出的权重可以根据单元操作所花费的资源而变化。例如,读取操作、编程操作和擦除操作这三种数据输入/输出操作的操作裕量(例如,正常执行操作的时间范围)分别为1秒、5秒和10秒。在这种情况下,可以将权重确定为每个读取操作为1,每个编程操作为5,每个擦除操作为10。操作时间、功耗等可以用作确定赋予单元操作的权重的来源或参考。例如,第一存储器组中正在执行或计划执行两个读取操作,第二存储器组中正在执行或计划执行三个写入操作。关于第一存储器组的操作状态的信息可以为2(=1×2),关于第二存储器组的操作状态的信息可以量化为15(=5×3)。
在确定存储器组的可用资源信息和状态信息之后,存储器系统110可以基于可用资源信息和状态信息确定是否分配单元操作(306)。可用资源信息可以通过从存储器系统110所控制的最大资源数量中减去已经分配给存储器组中正在执行或计划执行的单元操作的资源数量而确定。例如,当存储器系统110中的最大资源数量为20并且已分配的资源数量为12时,可用资源信息变为8(=20-12)。
存储器系统110或控制器130中的最大资源数量可以根据存储器系统110的性能和设计而变化。根据实施例,最大资源数量可以与控制器130中的闪存转换层(FTL)或闪存接口层(FIL)所分配的数据输入/输出相关元信息的数量相同。在另一实施例中,最大资源数量可以与控制器130可以控制的线程的数量相同。
根据实施例,存储器系统110可以基于可用资源信息确定可以分配多少单元操作。例如,如果可用资源信息为5,则控制器130可以将五个单元操作分配给与多个存储器组相对应的多个队列。存储器系统110可以响应于关于存储器组的状态信息而确定单元操作分配给与多个存储器组相对应的多个队列之中的哪个(哪些)队列。例如,可以基于第一存储器组中正在执行的第一单元操作以及计划在第一存储器组中执行的第二单元操作来确定关于第一存储器组的状态信息。然后,可以将关于第一存储器组的状态信息与参考值进行比较。当状态信息等于或大于参考值时,存储器系统110可以将计划在其它存储器组中执行的至少一个其它单元操作而不是计划在第一存储器组中执行的单元操作分配给对应于其它存储器组的队列。可以将计划在第一存储器组中执行的单元操作分配给未决队列188。通过这些过程,存储器系统110可以避免图5所示的、所有资源被分配给待在特定存储器组中执行的操作而其它存储器组处于空闲状态的情况。因此,可以提高存储器系统110的数据I/O性能。
而且,用于操作存储器系统的方法可以进一步包括改变未分配操作和未分配单元操作的执行次序(308)。存储器系统110可以根据每个存储器组的状态信息分配待在相应存储器组中执行的单元操作。然而,根据数据输入/输出操作的类型或数据输入/输出操作的执行范围,可不分配特定的单元操作,而是可分配另一个单元操作以提高存储器系统110的数据I/O性能。基于每个存储器组的状态信息以及关于待分配权重的单元操作的信息,存储器系统110可以确定未分配单元操作之中哪个单元操作可以首先分配。因此,存储器系统110可以改变或调整未分配操作或未分配单元操作的执行次序(或分配顺序)以提高数据输入/输出性能。
图7示出根据本公开的实施例的被配置为控制数据输入/输出操作的控制器的第一示例。
参照图7,控制器130可以识别输入命令CMD并生成任务(操作260)。控制器130可以将任务划分为与多个存储器组MG中的每一个相对应的至少一个单元操作(Unit OP(s))(操作262)。
控制器130可以计算用于确定多个存储器组的状态信息的分数(credit)(操作264)。此处,分数可以基于预设权重而确定。权重可以是根据单元操作的类型而设置的数值。根据实施例,权重可以根据每个存储器组针对单元操作所消耗的资源来确定。例如,所消耗的资源可以包括电力、时间等。控制器130可以响应于每个存储器组中正在执行或计划执行的单元操作的类型和数量而确定分数。
控制器130可以将确定为多个存储器组的状态信息的分数与参考值或阈值进行比较(操作266)。如果特定存储器组的分数等于或大于参考值或阈值,则控制器130可以阻止向相应存储器组另外分配单元操作。根据实施例,控制器130可以将未分配单元操作传输到图1所示的未决队列188。当将作为多个存储器组的状态信息的分数与参考值进行比较时,控制器130可以确定新的单元操作可以分配给哪个存储器组。
控制器130可以检查是否存在可用资源(操作268)。每当向对应于多个存储器组的组队列(GQ)182、184、186(参见图1)分配单元操作时,控制器130可以减少可用资源的数量。另外,当存储器装置150中的多个存储器组162、164、166中正在执行的单元操作的结果或响应传输到控制器130时,控制器130可以增加可用资源的数量。
当存在可用资源时,控制器130可以将单元操作(Unit OP)传输到与多个存储器组相对应的组队列182、184、186中的至少一个(操作270)。另一方面,当没有可用资源时,控制器130可以将相应的单元操作(Unit OP)传输到未决队列188。
根据实施例,控制器130可以按照具有低分数的存储器组到具有高分数的存储器组的次序分配单元操作。进一步地,控制器130可以重新排序或改变待在存储器组中执行并且待分配给组队列的单元操作的分配次序(操作270)。
而且,根据实施例,控制器130可以改变或重新排序待运行的单元操作的次序,以减少存储器组的状态信息之间的偏差。如果可以减小存储器组的状态信息的偏差,则可以增加多个存储器组中并行执行数据输入/输出操作的操作时段(例如,并行处理时段),从而可以提高关于存储器系统的数据输入/输出操作的性能。
图8示出根据本公开的另一实施例的被配置为控制数据输入/输出操作的控制器的第二示例。
参照图8,控制器130可以并行地执行将存储器系统的可用资源分配给单元操作的操作以及基于管芯的状态信息来确定单元操作分配给哪个管芯的另一操作两者,以提高在存储器系统中执行数据输入/输出操作的效率。
控制器130可以生成与输入命令(Inputted CMD)或作为后台操作而生成的命令(BG CMD)相对应的任务(操作412)。此处,作为后台操作而生成的命令可以包括针对垃圾收集、损耗均衡等而生成的读取、编程或擦除命令。
控制器130可以将所生成的任务划分为单元操作(Unit OP(s))(操作414)。本文中,单元操作(Unit OP(s))可以基于管芯而分开。例如,当对两个管芯执行读取任务时,该读取任务可以被划分为两个读取单元操作。此处,管芯呈现为与存储器装置150内能够独立执行数据输入/输出操作的区域相对应的示例。根据实施例,能够独立地执行数据输入/输出操作的区域可以利用大于或小于管芯的单元或组件来代替。例如,当以平面为单位独立执行数据输入/输出操作或者每个平面支持交错模式时,可以以平面为单位对读取任务进行划分。
控制器130可以确定是否存在可用资源(操作416)。如果没有可用资源(操作416中为“否”),则单元操作可能处于未决状态(操作420)。作为单元操作处于未决状态的示例,可以将与单元操作相对应的数据或信息传输到如参照图1所描述的未决队列188。如果存在可用资源(操作416中为“是”),则控制器130可以为单元操作分配资源(操作418)。
控制器130可以量化或数字化关于在每个管芯中正在执行的第一单元操作的状态信息(操作422)。此后,控制器130可以量化或数字化计划在每个管芯中执行的第二单元操作的状态信息(操作424)。根据单元操作的类型,每个管芯中正在执行或计划执行的第一单元操作和第二单元操作可以被赋予不同的权重。本文中,权重可以基于执行每个单元操作所花费的资源而确定。
在基于每个管芯中正在执行的第一单元操作以及计划在每个管芯中执行的第二单元操作量化状态信息之后,控制器130可以基于量化的状态信息确定哪个管芯可以首先执行单元操作(操作426)。根据实施例,控制器130可以将量化的状态信息与参考值进行比较。当状态信息低于参考值(操作426中为“是”)时,控制器130可以将单元操作分配给相应的管芯(操作428)。然而,如果状态信息高于参考值(操作426中为“否”),则控制器130可能不将单元操作分配给相应的管芯并且单元操作可能处于未决状态(操作420)。例如,第一管芯的状态信息为30,第二管芯的状态信息为10。当参考值为20时,可以不将新的单元操作分配给第一管芯,而可以将新的单元操作分配给第二管芯。在将单元操作分配给特定管芯(操作428)之前,应当为单元操作分配至少一个可用资源(操作418)。
参照图7和图8,控制器130可以通过基于存储器装置150的可用资源信息和状态信息分配数据输入/输出操作来提高存储器系统的数据输入/输出性能。根据实施例,可以在存储器系统110中顺序地或并行地执行收集和确定存储器装置150的可用资源信息和状态信息以及确定是否分配单元操作的操作。而且,在确定是否分配单元操作的过程中,可以基于存储器装置150的状态信息来改变或调整单元操作的执行次序。
图9示出根据本公开的实施例的在存储器系统中执行的数据输入/输出操作的管理。
参照图9,存储器装置150中的多个管芯DIE0至DIE3可以对应于多个存储器组162、164、166,这些存储器组162、164、166可以独立地执行数据输入/输出操作(参见图1)。控制器130中的多个队列Queue0至Queue3与存储器装置150中的多个管芯DIE0至DIE3可以一一对应。
在第一管芯DIE0中执行第一擦除操作并为第一擦除操作分配一个资源。在第二管芯DIE1中执行第一编程(写入)操作并为第一编程(写入)操作分配一个资源。另一方面,第三管芯DIE2和第四管芯DIE3中没有执行任何操作,并且第三管芯DIE2和第四管芯DIE3当前处于空闲状态。而且,参考包括计划在多个管芯DIE0至DIE3中执行的单元操作的多个队列Queue0至Queue3,向第一队列Queue0分配一个第一读取操作,并且为第一读取操作分配一个资源。向第二队列Queue1分配一个第二编程(写入)操作和一个第二读取操作,并且为第二编程操作和第二读取操作分配两个资源。另一方面,第三队列Queue2和第四队列Queue3中可不包括操作,并且可能不为第三管芯DIE2和第四管芯DIE3分配资源。
如果控制器130可以分配的总资源数量为16,则可用资源(“Free Resource”)的数量为11。也就是说,16个资源之中的5个资源分配给第一管芯DIE0和第二管芯DIE1以及与第一管芯DIE0和第二管芯DIE1相对应的第一队列Queue0和第二队列Queue1。剩余的11个资源是可用的。
控制器130可以确定关于多个管芯DIE0至DIE3的状态信息。此处,可以为每个单元操作分配权重。例如,赋予的不同权重分别为读取操作为2、编程(写入)操作为10、擦除操作为20,并且用于确定状态信息的阈值(参考值)为22。
在第一管芯DIE0中,由于正在执行擦除操作并且计划执行读取操作,因此状态信息的数值为22(=20×1+2×1)。此外,由于第二管芯DIE1中正在执行第一编程(写入)操作并且计划执行第二编程操作和读取操作,因此状态信息的数值为22(=10×2+2×1)。当可以将第一管芯DIE0和第二管芯DIE1的量化状态信息与阈值(参考值)进行比较时,状态信息可以等于或大于参考值。在这种情况下,控制器130可以不再向第一管芯DIE0和第二管芯DIE1分配更多的单元操作。
当从命令队列56传输的一些单元操作应当在第一管芯DIE0和第二管芯DIE1中执行时,控制器130可以将相应的单元操作传输到未决队列188。通过该操作,控制器130可能不浪费资源,并且可以保持11个可用资源。此外,如果可以在第三管芯DIE2或第四管芯DIE3中而不是在第一管芯DIE0和第二管芯DIE1中执行与从命令队列56输出的另一命令相对应的其它单元操作,则控制器130可以为其它单元操作分配可用资源,并且将其它单元操作分配给对应于第三管芯DIE2或第四管芯DIE3的第三组队列Queue2或第四组队列Queue3。
参照图5和图9,控制器130可以有效地管理存储器系统中执行的数据输入/输出操作。在图5中,实际运行时间会由于先前分配的操作而延迟。由于控制器130已经为操作顺序地分配了资源,因此可能发生存储器装置150的一些区域中不再分配或执行更多操作的情况。然而,在图9中,可以基于参考值和量化状态信息来限制计划在存储器装置150中的多个管芯DIE0至DIE3中执行的操作。在实施例中,可以避免以下情况:在预先分配了资源的情况下,对特定管芯执行的单元操作必须等待计划在另一管芯中执行的其它单元操作完成。因此,可以提高存储器系统110的数据输入/输出性能。
如上所述,根据本公开的实施例的存储器系统可以在执行与从外部装置传输的命令相对应的数据I/O操作时,提高数据I/O性能。
另外,根据本公开的实施例的存储器系统可以有效地分配或管理在执行数据输入/输出操作的过程中使用的资源,并且可以抑制不必要的资源消耗以提高存储器系统的数据输入/输出性能。
此外,根据本公开的实施例的存储器系统可以估计或预测哪个操作可能需要很长时间才能完全执行或者操作完全执行需要多长时间,使得存储器系统可以将关于数据输入/输出操作的预期完成时间反馈给外部装置。
虽然已经针对具体实施例示出和描述了本教导,但是根据本公开,对于本领域技术人员而言显而易见的是,可以在不脱离如所附权利要求中定义的精神和范围的情况下进行各种改变和修改。此外,可以对实施例进行组合以形成另外的实施例。

Claims (20)

1.一种存储器系统,包括:
多个存储器组,能够执行数据输入/输出操作;以及
控制器,所述控制器:
将服从数据输入/输出命令的操作划分为与所述多个存储器组相对应的至少一个单元操作,以及
基于关于所述多个存储器组的操作状态的第一信息以及关于可用资源的第二信息,将所述至少一个单元操作分配给与所述多个存储器组相对应的多个队列。
2.根据权利要求1所述的存储器系统,其中所述控制器进一步基于所述多个存储器组中正在执行的至少一个第一单元操作以及分配给所述多个存储器组的至少一个第二单元操作,确定所述第一信息。
3.根据权利要求2所述的存储器系统,其中所述控制器通过以下方式来确定所述第一信息:
根据单元操作的类型为所述至少一个第一单元操作和所述至少一个第二单元操作分配不同的权重,
基于分配给所述至少一个第一单元操作和所述至少一个第二单元操作的权重,对各个存储器组的操作负担进行评分,并且
将评分的操作负担与参考值进行比较。
4.根据权利要求1所述的存储器系统,
其中所述多个存储器组中的每一个包括存储数据项的多个非易失性存储器单元以及临时存储所述数据项的缓冲存储器,并且
其中所述多个存储器组中的每一个以交错模式独立地执行所述至少一个单元操作。
5.根据权利要求1所述的存储器系统,其中所述控制器在将所述至少一个单元操作分配给所述多个队列之前,基于所述第一信息和所述第二信息调整或改变所述至少一个单元操作的分配顺序。
6.根据权利要求1所述的存储器系统,
其中所述多个队列分别对应于所述多个存储器组,并且
其中所述控制器进一步包括与所述多个队列区分的未决队列。
7.根据权利要求6所述的存储器系统,
其中所述控制器进一步为所述至少一个单元操作分配至少一个资源,并且
其中当单元操作的数量大于资源的数量时,所述控制器将所述至少一个单元操作分配给所述未决队列,而不是所述多个队列。
8.根据权利要求7所述的存储器系统,其中所述资源的数量等于所述控制器中包括的闪存转换层或闪存接口层分配的用于数据输入/输出的元数据的数量。
9.根据权利要求7所述的存储器系统,其中所述资源的数量等于所述控制器能够控制的线程的数量。
10.一种操作存储器系统的方法,所述方法包括:
将服从数据输入/输出命令的操作划分为与多个存储器组相对应的至少一个单元操作;
基于所述多个存储器组中正在执行的至少一个第一单元操作以及分配给所述多个存储器组的至少一个第二单元操作,确定关于所述多个存储器组的操作状态的第一信息;并且
基于关于可用资源的第二信息以及所述第一信息,将所述至少一个单元操作分配给与所述多个存储器组相对应的多个队列。
11.根据权利要求10所述的方法,其中确定所述第一信息包括:
根据单元操作的类型为所述至少一个第一单元操作和所述至少一个第二单元操作分配不同的权重;
基于分配给所述至少一个第一单元操作和所述至少一个第二单元操作的权重,对所述各个存储器组的操作负担进行评分;并且
将评分的操作负担与参考值进行比较。
12.根据权利要求10所述的方法,其中所述至少一个单元操作由所述多个存储器组中的每一个以交错模式独立地执行。
13.根据权利要求10所述的方法,其中当单元操作的数量大于资源的数量时,不将所述至少一个单元操作分配给所述多个队列。
14.根据权利要求13所述的方法,进一步包括将未分配的单元操作分配给未决队列。
15.根据权利要求10所述的方法,进一步包括:在将所述至少一个单元操作分配给所述多个队列之前,基于所述第一信息和所述第二信息调整或改变所述至少一个单元操作的分配顺序。
16.一种控制器,所述控制器与多个存储器组通信,所述多个存储器组能够经由多个数据路径执行数据输入/输出操作,所述控制器包括至少一个处理器、至少一个存储器和逻辑,所述逻辑的至少一部分包括在硬件中,
其中所述逻辑:
在所述至少一个存储器中建立第一区域和第二区域,所述第一区域临时存储关于服从从外部装置输入的命令的操作的第一操作数据,所述第二区域临时存储关于计划在所述多个存储器组中执行的至少一个第二单元操作的第二操作数据;以及
基于关于可用资源的第二信息以及关于所述多个存储器组的操作状态的第一信息,根据所述第一操作数据生成所述第二操作数据。
17.根据权利要求16所述的控制器,其中所述逻辑进一步基于所述多个存储器组中正在执行的至少一个第一单元操作以及所述第二区域中存储的所述第二操作数据的至少一个第二单元操作,确定所述第一信息。
18.根据权利要求17所述的控制器,其中所述逻辑通过以下方式来确定所述第一信息:
根据单元操作的类型为所述至少一个第一单元操作和所述至少一个第二单元操作分配不同的权重,
基于分配给所述至少一个第一单元操作和所述至少一个第二单元操作的权重,对各个存储器组的操作负担进行评分,并且
将评分的操作负担与参考值进行比较。
19.根据权利要求16所述的控制器,其中所述逻辑进一步,
在所述至少一个存储器中建立第三区域,所述第三区域临时存储未包括在所述第二操作数据中的、关于至少一个未决操作或至少一个未决单元操作的第三操作数据;以及
基于所述第一信息和所述第二信息,根据所述第一操作数据生成所述第三操作数据。
20.根据权利要求19所述的控制器,其中所述逻辑进一步在生成待存储在所述第二区域中的所述第二操作数据或待存储在所述第三区域中的所述第三操作数据时,基于所述第一区域中存储的所述第一操作数据,调整或改变所述第二操作数据或所述第三操作数据的顺序。
CN202111329831.XA 2021-03-31 2021-11-11 用于调度在存储器系统中执行的操作的设备和方法 Withdrawn CN115145475A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2021-0041916 2021-03-31
KR1020210041916A KR20220135786A (ko) 2021-03-31 2021-03-31 메모리 시스템에 포함된 복수의 메모리 장치에서 수행되는 동작에 대해 스케줄링하는 장치 및 방법

Publications (1)

Publication Number Publication Date
CN115145475A true CN115145475A (zh) 2022-10-04

Family

ID=83405553

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111329831.XA Withdrawn CN115145475A (zh) 2021-03-31 2021-11-11 用于调度在存储器系统中执行的操作的设备和方法

Country Status (3)

Country Link
US (1) US11704068B2 (zh)
KR (1) KR20220135786A (zh)
CN (1) CN115145475A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240329879A1 (en) * 2023-04-03 2024-10-03 Kioxia Corporation Creating isolation between multiple domains in a hierarchical multi-tenant storage device
US20240329864A1 (en) * 2023-04-03 2024-10-03 Kioxia Corporation Maintaining predictable latency among tenants

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013068862A1 (en) * 2011-11-11 2013-05-16 International Business Machines Corporation Memory module and memory controller for controlling a memory module
KR102371916B1 (ko) 2015-07-22 2022-03-07 삼성전자주식회사 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
US10552045B2 (en) * 2016-11-16 2020-02-04 Sandisk Technologies Llc Storage operation queue
KR20180118329A (ko) * 2017-04-21 2018-10-31 에스케이하이닉스 주식회사 메모리 시스템, 데이터 처리 시스템 및 그것의 동작 방법
KR102430209B1 (ko) 2017-09-07 2022-08-05 삼성전자주식회사 저장 장치 및 저장 장치에 포함된 컨트롤러들
KR102406340B1 (ko) * 2018-02-26 2022-06-13 에스케이하이닉스 주식회사 전자 장치 및 그것의 동작 방법
US10740003B2 (en) * 2018-03-23 2020-08-11 International Business Machines Corporation Latency-agnostic memory controller
US11327656B2 (en) * 2018-08-03 2022-05-10 Mobileye Vision Technologies Ltd. Accessing a dynamic memory module
TWI684860B (zh) * 2018-10-15 2020-02-11 慧榮科技股份有限公司 用來進行讀取加速之方法以及資料儲存裝置及其控制器
US20220283725A1 (en) * 2019-09-02 2022-09-08 Sk Hynix Inc Memory controller and operating method thereof

Also Published As

Publication number Publication date
KR20220135786A (ko) 2022-10-07
US20220317931A1 (en) 2022-10-06
US11704068B2 (en) 2023-07-18

Similar Documents

Publication Publication Date Title
US11526298B2 (en) Apparatus and method for controlling a read voltage in a memory system
CN113867995A (zh) 处理坏块的存储器系统及其操作方法
US11861189B2 (en) Calibration apparatus and method for data communication in a memory system
US20210279180A1 (en) Apparatus and method for controlling map data in a memory system
US11756643B2 (en) Apparatus and method for correcting an error in data transmission of a data processing system
US11620213B2 (en) Apparatus and method for handling data stored in a memory system
US11704068B2 (en) Apparatus and method for scheduling operations performed in plural memory devices included in a memory system
CN113467986A (zh) 用于修复存储器系统中数据错误的设备和方法
TW202316259A (zh) 用於控制資料處理系統中的共享記憶體的設備和方法
US11507501B2 (en) Apparatus and method for transmitting, based on assignment of block to HPB region, metadata generated by a non-volatile memory system
CN113553631A (zh) 用于在存储器系统中保护数据的设备和方法
CN114579040A (zh) 用于保持在存储器系统中存储的数据的设备和方法
US20230153032A1 (en) Apparatus and method for improving data input/output performance of storage
US11941289B2 (en) Apparatus and method for checking an error of a non-volatile memory device in a memory system
US11704281B2 (en) Journaling apparatus and method in a non-volatile memory system
US11645002B2 (en) Apparatus and method for controlling and storing map data in a memory system
CN113687769A (zh) 用于提高数据处理系统中的操作效率的设备和方法
US11775426B2 (en) Apparatus and method for securing a free memory block in a memory system
US11854657B2 (en) Memory device and memory system supporting interleaving operation and operation method thereof
US12050795B2 (en) Apparatus and method for managing map data between host and memory system
US20230333750A1 (en) Apparatus and method for power-loss data protection in a 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
WW01 Invention patent application withdrawn after publication

Application publication date: 20221004

WW01 Invention patent application withdrawn after publication