CN108958907A - 用于数据存储系统的上下文感知动态命令调度 - Google Patents

用于数据存储系统的上下文感知动态命令调度 Download PDF

Info

Publication number
CN108958907A
CN108958907A CN201810225118.2A CN201810225118A CN108958907A CN 108958907 A CN108958907 A CN 108958907A CN 201810225118 A CN201810225118 A CN 201810225118A CN 108958907 A CN108958907 A CN 108958907A
Authority
CN
China
Prior art keywords
command
queue
order
host
data
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
CN201810225118.2A
Other languages
English (en)
Other versions
CN108958907B (zh
Inventor
S.吉恩
赖昀佐
刘海宁
Y.帕夫连科
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies 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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN108958907A publication Critical patent/CN108958907A/zh
Application granted granted Critical
Publication of CN108958907B publication Critical patent/CN108958907B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/374Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a self-select method with individual priority code comparator
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W74/00Wireless channel access
    • H04W74/002Transmission of channel access control information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W74/00Wireless channel access
    • H04W74/08Non-scheduled access, e.g. ALOHA
    • H04W74/0866Non-scheduled access, e.g. ALOHA using a dedicated channel for access
    • H04W74/0875Non-scheduled access, e.g. ALOHA using a dedicated channel for access with assigned priorities based access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)

Abstract

主题技术提供了管理数据存储系统。命令被标识为第一命令类型或第二命令类型。将被标识为第一命令类型的命令分配给第一队列,并将被标识为第二命令类型的命令被分配给第二队列。在基于调度比率处理来自第一队列的命令和来自第二队列的命令超过预定时间段之后,确定数据存储系统的写入放大因子、在所述预定时间段期间主机读取命令的数量和主机写入命令的数量。基于写入放大因子、主机读取命令的数量、主机写入命令的数量和预定的调度比率因子来更新调度比率。基于更新后的调度比率处理后续来自第一队列和第二队列的命令。

Description

用于数据存储系统的上下文感知动态命令调度
技术领域
本公开一般涉及用于数据存储系统的调度命令。
背景技术
在诸如固态驱动器(SSD)的数据存储系统中,命令按照命令被接收的顺序进行排队和处理。等待先前的命令被处理可能会导致队列中的下一个命令的延迟。延迟对某些类型的命令(例如主机读取命令)来说可能比对其他类型的命令更为关键。例如,主机读取命令的读取延迟可能会对数据存储系统的驱动器性能产生负面影响。
发明内容
主题技术的各个方面涉及用于管理数据存储系统的方法。该方法可以包括将命令标识为第一命令类型或第二命令类型。该方法还可以包括将被标识为第一命令类型的命令分配给第一队列以及将被标识为第二命令类型的命令分配给第二队列,并且基于调度比率处理来自第一队列的命令和来自第二队列的命令。该方法可以进一步包括:在基于所述调度比率处理来自第一队列的命令和来自第二队列的命令超过预定时间段之后,确定数据存储系统的写入放大因子、在所述预定时间段期间从主机设备接收的主机读取命令的数量和主机写入命令的数量,其中第一命令类型包括主机读取命令,并且第二命令类型包括主机写入命令。该方法还可以包括:基于所确定的写入放大因子、主机读取命令的数量、主机写入命令的数量以及预定的调度比率因子来更新调度比率;以及基于更新后的调度比率来处理后续来自第一队列和第二队列的命令。
在某些方面,本技术主题还涉及数据存储系统被提供。数据存储系统可以包括用于将命令标识为第一命令类型或第二命令类型的部件。数据存储系统还可以包括用于将被标识为第一命令类型的命令分配给第一队列以及将被标识为第二命令类型的命令分配给第二队列的部件。数据存储系统还可以包括用于基于调度比率处理来自所述第一队列的命令和来自所述第二队列的命令的部件。数据存储系统还可以包括用于在基于所述调度比率处理来自第一队列的命令和来自第二队列的命令超过预定时间段之后,确定数据存储系统的写入放大因子、在所述预定时间段期间从主机设备接收的主机读取命令的数量和主机写入命令的数量的部件,其中第一命令类型包括主机读取命令,以及第二命令类型包括主机写入命令。数据存储系统还可以包括用于基于所确定的写入放大因子、主机读取命令的数量、主机写入命令的数量以及预定的调度比率因子来更新调度比率的部件。数据存储系统还可以包括用于基于更新后的调度比率来处理后续来自第一队列和第二队列的命令的部件。
主题技术的各个方面还涉及包括多个存储设备的数据存储系统,每个存储设备包括多个非易失性存储器裸芯(memory die),以及耦合到多个存储设备的控制器。控制器可以被配置为将命令标识为第一命令类型或第二命令类型。控制器还可以被配置为将被标识为第一命令类型的命令分配给第一队列以及将被标识为第二命令类型的命令分配给第二队列。控制器可以进一步被配置为基于调度比率来处理来自第一队列的命令和来自第二队列的命令。控制器可以被配置为:在基于所述调度比率处理来自第一队列的命令和来自第二队列的命令超过预定时间段之后,确定数据存储系统的写入放大因子、在所述预定时间段期间从主机设备接收的主机读取命令的数量和主机写入命令的数量,其中第一命令类型包括主机读取命令,以及第二命令类型包括主机写入命令。控制器还可以被配置为:基于所确定的写入放大因子、主机读取命令的数量、主机写入命令的数量以及预定的调度比率因子来更新调度比率。控制器可以进一步被配置为:基于更新后的调度比率来处理后续来自第一队列和第二队列的命令。
应该理解,根据下面的详细描述,本公开的其他配置对于本领域技术人员来说将变得清楚,其中本公开的各种配置以例示的方式示出和描述。如将认识到的,本公开能够具有其他和不同的配置,并且能够在各个其他方面对其若干细节进行修改,全部都不脱离本公开的范围。因此,附图和详细描述应被视为本质上是例示性的而非限制性的。
附图说明
图1是描绘根据本主题技术的各个方面的数据存储系统的组件的框图。
图2是描绘根据本主题技术的各个方面的数据存储设备的控制器中的示例命令队列的框图。
图3A和图3B是描绘根据本主题技术的各个方面的用于管理数据存储系统的示例过程的流程图。
具体实施方式
以下阐述的详细描述旨在作为对本主题技术的各种配置的描述,并且不旨在表示可以实践本主题技术的仅有的配置。所附的附图被纳入本文并构成详细描述的一部分。该详细描述包括了具体细节,目的是提供对本主题技术的透彻理解。然而,将清楚的是,可以无需这些具体细节来实践本主题技术。在一些情况中,以框图形式示出结构和组件,以避免模糊本主题技术的概念。为了便于理解,相同的组件标有相同的附图标记。
控制器管理数据存储设备(诸如固态驱动器(SSD)),并在数据存储设备的非易失性存储器(诸如NAND闪存)上执行数据操作。控制器可以从主机设备接收操作命令(例如,主机读取命令、主机写入命令)。某些操作命令(例如,擦除命令、写入命令、读取命令、错误纠正等)可以由数据存储设备固件在内部生成。操作命令可以按照接收和/或生成的顺序排队以供运行。操作命令的数据操作可以按照排队的顺序执行。然而,队列中较早的操作命令可能会增加队列中较晚的操作命令的延迟。本主题技术可以例如通过基于操作命令的类型将操作命令排队到多个队列中并且基于调度比率从各个队列调度操作命令来提高数据存储系统的性能。调度比率可以基于根据本文所描述的过程接收和/或生成的操作命令的数量而被动态地更新。
图1是描绘根据本主题技术的各种实施方式的示例数据存储系统100的组件的框图。数据存储系统100可以包括主机系统110和数据存储设备120。数据存储设备120(例如,固态驱动器)可以包括主机接口130、控制器140、存储器150和非易失性存储器160A-160C。
主机系统110表示被配置为耦合到数据存储设备120,以经由主机接口130向数据存储设备120发送数据和从数据存储设备120接收数据。主机系统110可以是诸如个人计算机、服务器、工作站、膝上型计算机、PDA、智能电话等的计算系统。或者,主机系统110可以是诸如数码相机、数字音频播放器、数字视频记录器等的电子设备。
主机接口130可以包括用于将主机系统110可操作地耦合到控制器140的电连接和物理连接两者。主机接口130可以被配置为在主机系统110和控制器140之间通信数据、地址和控制信号。主机接口130可以使用任何专有或标准的接口协议,包括但不限于串行高级技术附件(SATA)、高级技术附件(ATA)、小型计算机系统接口(SCSI)、PCI扩展(PCI-X)、光纤通道、串行连接SCSI(SAS)、安全数字(SD)、嵌入式多媒体卡(EMMC)、通用闪存存储(UFS)和外围组件互连高速(PCIe)。
根据本主题技术的各个方面,主机接口130可以使用标准化或专有的无线接口标准和协议来实施主机系统110与数据存储设备120之间的无线连接。就这点而言,主机接口130或数据存储设备120的其他组件可以包括无线收发器以将主机系统110和数据存储设备120置于与彼此的无线通信中。
控制器140被配置为响应于来自主机系统110的写入命令而将从主机系统110接收到的数据存储在非易失性存储器160A-160C中,并且响应于来自主机系统110的读取命令而读取存储在非易失性存储器160A-160C中的数据并经由主机接口130将所读取的数据传送到主机系统110。控制器140可以包括若干内部组件(图1中未示出),诸如多个处理器核心、存储器、闪存组件接口(例如,管理沿着到非易失性存储器160A-160C的连接的指令和数据传输的多路复用器)、I/O接口、错误纠正码(ECC)模块等。ECC模块可以被配置为根据从主机系统110接收的数据生成要存储在非易失性存储器160A-160C中的码字,并且在将解码后的数据发送到主机系统110之前解码从非易失性存储器160A-160C读取的码字。各种ECC解决方案可用于编码和解码数据以生成码字。在一些方面,控制器140的一个或多个元件可以被集成到单个芯片中。在其它方面,可以在多个分立组件上实施这些元件。
控制器140可以包括多核处理器。例如,可以将多核处理器中的各个核分配给单独的过程。例如,控制器140可以被配置为运行管理操作命令流和地址映射的代码或指令,并执行计算以及生成操作命令。控制器140可以被配置为监测和控制数据存储设备120中的组件的操作。控制器140可以包括通用微处理器、微控制器、数字信号处理器(DSP),专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑、分立硬件组件或前述的组合。
指令序列可作为固件存储在控制器140内的存储器中。指令序列也可以被存储在存储器150、非易失性存储器160A-160C并可以从存储器150、非易失性存储器160A-160C读取,或从主机系统110接收(例如,经由主机接口130)。存储器150和非易失性存储器160A-160C表示可以在其上存储可由控制器140运行的指令/代码的机器或计算机可读介质的示例。机器或计算机可读介质一般可以指用于向控制器140、它的处理器提供指令的任何有形和非暂时性介质,该介质包括易失性介质(诸如用于存储器150或用于控制器140内的缓冲器的动态存储器)和非易失性介质(诸如电子介质、光学介质和磁性介质)两者。
控制器140可以使用存储器150来临时存储用于管理数据存储设备120的数据和信息。在一些方面,存储器150表示用于临时存储用于管理数据存储设备120的数据和信息的易失性存储器。根据本主题技术的各个方面,存储器150可以是诸如双倍数据速率(DDR)RAM的随机存取存储器(RAM)。其他类型的RAM也可以被用来实施存储器150。存储器150可以使用单个RAM模块或多个RAM模块来实施。虽然存储器150被描绘为与控制器140不同,但是存储器150可以被并入到控制器140中,而不脱离本公开的范围。或者,存储器150可以是诸如磁盘、闪存等的非易失性存储器。
非易失性存储器160A-160C表示用于存储数据的非易失性存储器设备。数据存储设备120中的非易失性存储器的数量可以是诸如2、4、8、16等的任何数量。为了简化讨论,在图1中描绘了非易失性存储器160A-160C。非易失性存储器160A-160C不限于任何特定容量或配置。非易失性存储器160A-160C中的每一个可以被组织成块和页面。块的每一个可以包括多个页面,例如256,并且页面的每一个可以包含一个或多个数据的扇区或部分。
根据本技术主题的各个方面,非易失性存储器160A-160C包括例如NAND闪存。非易失性存储器160A-160C可以包括多级单元(MLC)闪存和/或三级单元(TLC)存储器。在一些方面,非易失性存储器160A-160C可以进一步包括三维(3D)闪存。在一些方面,非易失性存储器160A-160C可以包括一个或多个混合存储器设备,其中混合存储器设备可以以SLC、MLC或TLC模式中的一个或多个模式运转。本主题技术不限于这些类型的存储器,并且可以被应用于使用多于三个级别(例如,每个单元4位,每个单元5位等)来配置和操作的闪存单元。
图2是描绘根据本主题技术的各个方面的数据存储设备120的控制器140的示例命令队列的框图。控制器140包括高优先级队列142、低优先级队列144和闪存通道控制器146。控制器140可以经由主机接口130从主机系统110接收主机操作命令。主机操作命令可以包括从非易失性存储器160A-160C读取数据的主机读取命令。在一些情况下,主机命令还可以包括将数据写入非易失性存储器160A-160C的主机写入命令。在一些方面,控制器140可以生成内部操作命令。内部操作命令可以包括内部编程命令、内部擦除命令、内部读取命令和错误纠正命令。例如,可以基于垃圾收集(GC)、背景介质扫描(BGMS)或设置/获取特征来生成内部操作命令。
控制器140可以将操作命令(例如,主机操作命令和内部操作命令)标识为高优先级命令或低优先级命令。例如,每种类型的操作命令可以被分类为低优先级命令或高优先级命令。控制器140可基于分类列表或其他类型的查找数据结构将操作命令标识为高优先级命令或低优先级命令,以决定操作命令的优先级,使得可以用减少的等待时间来处理那些影响数据存储设备的驱动性能的操作命令。例如,主机读取命令可以被标识为高优先级命令。在一些情况中,由于错误计数或操作故障而从数据位置移动数据的内部错误纠正命令可以被标识为高优先级命令。在一些方面,诸如主机写入命令、内部编程命令、内部擦除命令和内部读取命令的操作命令可以被标识为低优先级命令。
被标识为高优先级命令的操作命令被分配给高优先级队列142,并且被标识为低优先级命令的操作命令被分配给低优先级队列144。在一些方面,基于在控制器140接收到操作命令时的时间,控制器140中的各个队列中的操作命令可以按照时间顺序排队。
控制器140可以基于调度比率来调度来自高优先级队列142和低优先级队列144的操作命令。例如,调度比率可以定义针对被处理的来自低优先级队列的每个预定数量的操作命令,被处理的来自高优先级队列的操作命令的数量。例如,控制器140可以针对来自低优先级队列的每一个操作命令而从高优先级队列调度九个操作命令。
初始调度比率可以基于主机读取命令的平均读取延迟来确定。例如,初始调度比率可以通过基于任意调度比率来处理测试操作命令并且监测在处理期间主机读取命令的平均读取延迟来确定。可以调整和测试该任意调度比率,直到确定使得达到主机读取命令的最佳或目标平均读取延迟的调度比率为止。使得达到目标平均读取延迟的调度比率可以被设置为初始调度比率。在一些方面,除了主机读取命令的平均读取延迟之外,可以针对数据存储设备120中的不同过度供应水平(例如,7%、10%等)确定初始调度比率。
闪存通道控制器146可以基于初始调度比率来处理来自高优先级队列和低优先级队列的操作命令。闪存通道控制器146可以通过向非易失性存储器160A-160C发出对应于操作命令的命令来处理该操作命令。当闪存通道控制器146在预定时间段(例如,10秒)基于初始调度比率来处理来自高优先级队列和低优先级队列的操作命令时,控制器140可以使用等式(1)来更新调度比率:
A:主机读取命令的数量
B:主机写入命令的数量
C:写入放大因子
D:调度比率因子
E:调度比率
控制器140可以保持存储器150中的操作命令的日志。例如,日志可以包括操作命令的类型和在预定时间段期间被处理的各种类型的操作命令的数量。例如,主机读取命令的数量A可以是在预定时间段期间从主机系统110接收到的主机读取命令的数量。例如,主机写入命令的数量B是基于日志的、在预定时间段期间接收到的主机写入命令的数量。
写入放大因子C表示针对从主机系统110接收的每个主机写入命令而执行的写入操作的数量。写入放大因子可以与数据存储设备120中的块的编程/擦除周期的数量相关。随着编程/擦除周期的数量增加,写入放大因子可能会增加。例如,非易失性存储器160A-160C的块能够在块被取出循环并变得不可用之前容忍有限数量的编程/擦除周期。因此,随着数据存储设备120接近其使用寿命,非易失性存储器160A-160C中的可用块的数量可能减少。当可用块的数量减少时,可能需要控制器140执行更多数据重新定位和/或垃圾收集以适应新的主机写入命令。这可能会导致写入放大因子的增大。在一些方面,包括与非易失性存储器160A-160C的不同生命阶段相关联的预定义的写入放大因子的表可以被存储在存储器150中。
可以使用等式(1),基于初始调度比率E、主机读取命令的数量A、主机写入命令的数量B和写入放大因子C来确定调度比率因子D。
初始调度比率是基于操作命令类型的特定混合来确定的。然而,在数据存储设备的操作期间,操作命令类型的混合可能从用于确定初始调度比率的操作命令类型的特定混合而改变,并且由初始调度比率带来的平均读取延迟可能偏离主机读取命令的最优或目标平均读取延迟。为了保持最佳或目标平均读取延迟,控制器140可以通过使用所确定的调度比率因子D确定新的调度比率E来更新调度比率。例如,控制器140可以确定在预定时间段内主机写入命令的数量A和主机读取命令的数量B。控制器140还可以使用,例如存储在存储器150中的表来确定写入放大因子C。调度比率因子D可以从存储器150读取。使用等式(1),控制器140确定用于更新调度比率的新的调度比率。控制器140可以用新的调度比率来更新初始调度比率。控制器140基于更新后的调度比率来调度和处理后续接收到的操作命令。
图3A描绘了根据本主题技术的各个方面的用于管理数据存储设备120的示例过程的流程图。为了解释的目的,本文参考在本文描述的组件和/或过程来描述示例过程300的各个框。例如,过程300的一个或多个框可以由一个或多个处理器来实施,包括例如图1的控制器140或者控制器140的一个或多个组件或处理器。在一些实施方式中,可以由一个或多个不同的处理器或控制器将一个或多个框与其他框分开实施。进一步为了解释的目的,示例过程300的框被描述为串行或线性地发生。然而,示例过程300的多个框可以并行发生。另外,不需要以所示顺序执行示例过程300的框和/或不需要执行示例过程300的一个或多个框。
在框310处,控制器140接收操作命令。例如,控制器140经由主机接口130从主机系统110接收主机命令(即,主机读取命令和主机写入命令)。在一些方面,基于例如GC或BGMS生成的内部命令可以被包括在操作命令中。在框320处,控制器140将操作命令标识为高优先级命令或低优先级命令。例如,主机读取命令可以被标识为高优先级命令。在一些方面,错误纠正命令可以被标识为高优先级命令。由控制器140生成的诸如主机读取命令、内部写入命令、内部擦除命令和内部读取命令的操作命令可以被标识为低优先级命令。
在框330处,控制器140将操作命令分配给高优先级队列142和低优先级队列144。例如,被标识为高优先级命令的操作命令被分配给高优先级队列142,并且被标识为低优先级命令的操作命令被分配给低优先级队列144。
图3B描绘了根据本主题技术的各个方面的用于管理数据存储设备120的示例过程的流程图。为了解释的目的,本文参考在本文描述的组件和/或过程来描述示例过程340的各个框。例如,过程340的一个或多个框可以由一个或多个处理器来实施,包括例如图1的控制器140或者控制器140的一个或多个组件或处理器。在一些实施方式中,可以由一个或多个不同的处理器或控制器将一个或多个框与其他框分开实施。进一步为了解释的目的,示例过程340的框被描述为串行或线性地发生。然而,示例过程340的多个框可以并行发生。另外,不需要以所示顺序执行示例过程340的框和/或不需要执行示例过程340的一个或多个框。
在框350处,控制器140基于调度比率来处理来自高优先级队列142的高优先级命令和来自低优先级队列144的低优先级命令。例如,如果调度比率指示9:1,则控制器140的闪存通道控制器146可以连续地处理九个来自高优先级队列142的高优先级命令。在闪存通道控制器146处理了九个来自高优先级队列142的高优先级命令之后,闪存通道控制器146可以处理一个来自低优先级队列144的低优先级命令。
在框360处,确定是否已经经过了预定时间。例如,当在来自高优先级队列142的高优先级命令和来自低优先级队列144的低优先级命令的处理开始之后已经经过了预定时间(例如,10秒)时,控制器140确定已经经过了预定时间(框360=是),并且过程340前进至框370。否则,当控制器确定尚未经过预定时间时(框360=否),过程340返回框350。
在框370处,确定主机读取命令的数量、主机写入命令的数量以及写入放大因子。例如,控制器140可以确定在预定时间期间从主机系统110接收的主机读取命令的数量和主机写入命令的数量。在一些方面,控制器140可以基于数据存储设备120的编程/擦除周期的数量来确定写入放大因子。
在框380处,控制器140更新调度比率。控制器140基于所确定的主机读取命令的数量、主机写入命令的数量和写入放大因子来确定新的调度比率。例如,使用等式(1),控制器140通过将所确定的主机读取命令的数量除以所确定的主机写入命令的数量和写入放大因子的乘积来确定新的调度比率。相除的结果乘以预定的调度比率因子。计算的结果是新的调度比率。控制器140用新的调度比率更新现有调度比率。过程340返回到框350。基于更新后的调度比率处理后续的操作命令。
应该理解,本文描述的例示性框、模块、元件、组件、方法和算法可以被实施为电子硬件、计算机软件或两者的组合。为了例示硬件和软件之间的可交换性,上面已经对各种例示性框、模块、单元、组件、方法和算法围绕其功能进行了一般描述。至于这种功能是实施成硬件还是实施成软件,取决于特定的应用和对整个系统所施加的设计约束。熟练的技术人员可以针对每个特定应用以各种方式实施所述功能。各种组件和框可以不同地布置(例如,以不同的顺序排列,或以不同的方式分割),全部都不脱离本主题技术的范围。
可以理解的是,所公开的过程中的步骤的具体顺序或层次被呈现为一些示例性方法的例示。可以理解的是,基于设计偏好和/或其他考虑,可以重新布置过程中的步骤的具体顺序或层次。例如,在一些实施方式中,可以同时执行步骤的一些。因此,所附方法权利要求以示样顺序呈现了各个步骤的要素,但并不意味着将其限于所呈现的具体顺序或层次。
提供先前的描述是为了使本领域的任何技术人员能够实践本文描述的各个方面。先前的描述提供了本主题技术的各种示例,并且本主题技术不限于这些示例。对于本领域技术人员来说,对这些方面的各种修改都将是很清楚的,并且,本文所定义的通用原理也可以应用于其它方面。因此,权利要求不旨在被限制于本文所示的各个方面,而是要符合与语言声明相一致的全部范围,其中以单数形式对元件的引用并非旨在意味“一个且仅一个”(除非具体这样说明),而是“一个或多个”。除非具体说明,否则术语“一些”是指一个或多个。男性的代词(例如,他的)包括女性和中性(如她的和它的),并且反之亦然。标题和副标题(如果有的话)仅用于方便,并且不限制主题公开。
谓词“被配置为”、“可被操作来”和“被编程为”并不意味着主题的任何特定的有形或无形修改,而是旨在可被互换地使用。例如,被配置为监测和控制操作或组件的处理器也可以意味着被编程为监测和控制操作的处理器,或者可被操作来监测和控制操作的处理器。同样,被配置为运行代码的处理器可以被解释为被编程为运行代码或可被操作来运行代码的处理器。
短语“与...通信”和“耦合”是指经由在本文命名或未命名的一个或多个组件(例如,存储卡读取器)与...直接通信或与...间接通信。
诸如“方面”的短语并不意味着这样的方面对于本主题技术是必要的,或者这样的方面应用于本主题技术的全部配置。与方面相关的公开可以应用于全部配置或一个或多个配置。方面可以提供一个或多个示例。诸如方面的短语可以指一个或多个方面,并且反之亦然。诸如“实施例”的短语并不意味着这样的实施例对于本主题技术是必要的,或者这样的实施例应用于本主题技术的全部配置。与实施方式相关的公开可以应用于全部方面或一个或多个方面。实施方式可以提供一个或多个示例。诸如“实施例”的短语可以指一个或多个实施方式,并且反之亦然。诸如“配置”的短语并不意味着这样的配置对于本主题技术是必要的,或者这样的配置应用于本主题技术的全部配置。与配置相关的公开可以应用于全部配置或一个或多个配置。配置可以提供一个或多个示例。诸如“配置”的短语可以指一个或多个配置,并且反之亦然。
本文使用词语“示例性”来意味“用作示例或例示”。本文描述为“示例性”的任何方面或设计不一定必须被解释为相对于其他方面或设计是优选或有利的。

Claims (20)

1.一种用于管理数据存储系统的方法,所述方法包括:
将命令标识为第一命令类型或第二命令类型;
将被标识为第一命令类型的命令分配给第一队列并且将被标识为第二命令类型的命令分配给第二队列;
基于调度比率来处理来自第一队列的命令和来自第二队列的命令;
在基于所述调度比率处理来自第一队列的命令和来自第二队列的命令超过预定时间段之后,确定数据存储系统的写入放大因子、在所述预定时间段期间从主机设备接收的主机读取命令的数量和主机写入命令的数量,其中第一命令类型包括主机读取命令,并且第二命令类型包括主机写入命令;
基于所确定的写入放大因子、主机读取命令的数量、主机写入命令的数量以及预定的调度比率因子来更新调度比率;以及
基于更新后的调度比率来处理来自第一队列和第二队列的后续命令。
2.根据权利要求1所述的方法,其中第一命令类型包括从主机设备接收的主机读取命令,并且第二命令类型包括从主机设备接收的主机写入命令。
3.根据权利要求2所述的方法,还包括:
在存储器中保持在预定时间段期间从主机设备接收的主机读取命令的数量和主机写入命令的数量的日志。
4.根据权利要求1所述的方法,其中基于在数据存储系统上执行的编程/擦除周期的数量来确定数据存储系统的写入放大因子。
5.根据权利要求4所述的方法,其中基于数据存储系统的过度供应量来确定数据存储系统的写入放大因子。
6.根据权利要求1所述的方法,其中后续的命令被标识为第一命令类型和第二命令类型,并且基于所标识的命令类型被分配给第一队列或第二队列。
7.一种数据存储系统,包括:
用于将命令标识为第一命令类型或第二命令类型的部件;
用于将被标识为第一命令类型的命令分配给第一队列以及将被标识为第二命令类型的命令分配给第二队列的部件;
用于基于调度比率处理来自所述第一队列的命令和来自所述第二队列的命令的部件;
用于在基于所述调度比率处理来自第一队列的命令和来自第二队列的命令超过预定时间段之后,确定数据存储系统的写入放大因子、在预定时间段期间从主机设备接收的主机读取命令的数量和主机写入命令的数量的部件,其中第一命令类型包括主机读取命令,以及第二命令类型包括主机写入命令;
用于基于所确定的写入放大因子、主机读取命令的数量、主机写入命令的数量以及预定的调度比率因子来更新调度比率的部件;以及
用于基于更新后的调度比率来处理来自第一队列和第二队列的后续命令的部件。
8.根据权利要求7所述的数据存储系统,还包括:
用于在存储器中保持在预定时间段期间从主机设备接收的主机读取命令的数量和主机写入命令的数量的日志的部件。
9.根据权利要求7所述的数据存储系统,其中第一命令类型包括从主机设备接收的主机读取命令,并且第二命令类型包括从主机设备接收的主机写入命令。
10.根据权利要求7所述的数据存储系统,其中基于在数据存储系统上执行的编程/擦除周期的数量来确定数据存储系统的写入放大因子。
11.根据权利要求10所述的数据存储系统,其中基于数据存储系统的过度供应量来确定数据存储系统的写入放大因子。
12.根据权利要求7所述的数据存储系统,其中每个后续的命令被标识为第一命令类型和第二命令类型,并且基于所标识的命令类型被分配给第一队列或第二队列。
13.根据权利要求7所述的数据存储系统,所述调度比率指示所处理的来自第一队列的第一组命令的数量、对所处理的来自第二队列的第二组命令的数量。
14.一种数据存储系统,包括:
多个存储设备,每个存储设备包括多个非易失性存储器裸芯;以及
耦合到所述多个存储设备的控制器,其中所述控制器被配置为:
将命令标识为第一命令类型或第二命令类型;
将被标识为第一命令类型的命令分配给第一队列并且将被标识为第二命令类型的命令分配给第二队列;
基于调度比率来处理来自第一队列的命令和来自第二队列的命令;
在基于所述调度比率处理来自第一队列的命令和来自第二队列的命令超过预定时间段之后,确定数据存储系统的写入放大因子、在预定时间段期间从主机设备接收的主机读取命令的数量和主机写入命令的数量,其中第一命令类型包括主机读取命令,并且第二命令类型包括主机写入命令;
基于所确定的写入放大因子、主机读取命令的数量、主机写入命令的数量以及预定的调度比率因子来更新调度比率;以及
基于更新后的调度比率来处理后续来自第一队列和第二队列的命令。
15.根据权利要求14所述的数据存储系统,其中所述控制器还被配置为:
在存储器中保持在预定时间段期间从主机设备接收的主机读取命令的数量和主机写入命令的数量的日志。
16.根据权利要求14所述的数据存储系统,其中第一命令类型包括从主机设备接收的主机读取命令,并且第二命令类型包括从主机设备接收的主机写入命令。
17.根据权利要求14所述的数据存储系统,其中基于在数据存储系统上执行的编程/擦除周期的数量来确定数据存储系统的写入放大因子。
18.根据权利要求17所述的数据存储系统,其中基于数据存储系统的过度供应量来确定数据存储系统的写入放大因子。
19.根据权利要求14所述的数据存储系统,其中每个后续的命令被标识为第一命令类型和第二命令类型,并且基于所标识的命令类型被分配给第一队列或第二队列。
20.根据权利要求14所述的数据存储系统,所述调度比率指示所处理的来自第一队列的第一组命令的数量、对所处理的来自第二队列的第二组命令的数量。
CN201810225118.2A 2017-05-19 2018-03-19 用于数据存储系统的上下文感知动态命令调度 Active CN108958907B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/600,672 2017-05-19
US15/600,672 US10635617B2 (en) 2017-05-19 2017-05-19 Context-aware dynamic command scheduling for a data storage system

Publications (2)

Publication Number Publication Date
CN108958907A true CN108958907A (zh) 2018-12-07
CN108958907B CN108958907B (zh) 2022-01-04

Family

ID=64271753

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810225118.2A Active CN108958907B (zh) 2017-05-19 2018-03-19 用于数据存储系统的上下文感知动态命令调度

Country Status (3)

Country Link
US (3) US10635617B2 (zh)
CN (1) CN108958907B (zh)
DE (1) DE102018105943A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111538684A (zh) * 2018-12-28 2020-08-14 美光科技公司 主机自适应存储器装置优化
CN111638969A (zh) * 2019-03-01 2020-09-08 西部数据技术公司 改善主机设备的数据传输命令等待时间
CN112130906A (zh) * 2020-09-28 2020-12-25 深圳市宏旺微电子有限公司 一种主机命令处理的方法及装置
CN112306672A (zh) * 2019-08-02 2021-02-02 通用汽车环球科技运作有限责任公司 在嵌入式平台上使用共享服务器支持多视觉流的架构和方法
CN113220220A (zh) * 2020-02-03 2021-08-06 爱思开海力士有限公司 控制器、控制器的操作方法及包括该控制器的存储装置
CN113272903A (zh) * 2018-12-17 2021-08-17 美光科技公司 处理非易失性存储器中的操作冲突
CN114063879A (zh) * 2020-07-31 2022-02-18 伊姆西Ip控股有限责任公司 用于处理操作命令的方法、电子设备和计算机程序产品

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190040614A (ko) * 2017-10-11 2019-04-19 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
JP6757708B2 (ja) * 2017-10-31 2020-09-23 株式会社日立製作所 情報処理装置及び構成要素の管理方法
US10678458B2 (en) 2018-02-09 2020-06-09 Micron Technology, Inc. Data storage device idle time processing
US10564886B2 (en) * 2018-02-20 2020-02-18 Western Digital Technologies, Inc. Methods and apparatus for controlling flash translation layer recycle from host
US10489085B2 (en) * 2018-02-28 2019-11-26 Micron Technology, Inc. Latency-based scheduling of command processing in data storage devices
JP2021047781A (ja) * 2019-09-20 2021-03-25 キオクシア株式会社 メモリシステム
JP7337006B2 (ja) * 2020-03-03 2023-09-01 キオクシア株式会社 メモリシステムおよび制御方法
US11748277B2 (en) * 2020-03-05 2023-09-05 Seagate Technology, Llc Client input/output (I/O) access rate variation compensation
JP2023517080A (ja) * 2020-03-10 2023-04-21 マイクロン テクノロジー,インク. メモリサブシステムに対するキューの維持
US11972145B2 (en) * 2021-01-21 2024-04-30 Micron Technology, Inc. Opportunistic data movement
CN114546288A (zh) * 2022-02-27 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 一种降低关键命令时延的方法、系统、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102483712A (zh) * 2009-08-21 2012-05-30 国际商业机器公司 在存储器控制器处对命令进行有效调度的系统和方法
CN103135945A (zh) * 2013-03-25 2013-06-05 中国人民解放军国防科学技术大学 用于ssd的多通道动态读写调度方法
US9378136B1 (en) * 2014-06-30 2016-06-28 Emc Corporation Techniques for selecting write endurance classification of flash storage based on read-write mixture of I/O workload
US20170123730A1 (en) * 2015-10-29 2017-05-04 Netflix, Inc. Memory input/output management

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144379A1 (en) * 2003-12-31 2005-06-30 Eschmann Michael K. Ordering disk cache requests
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
US8732360B2 (en) * 2007-11-26 2014-05-20 Spansion Llc System and method for accessing memory
US7933283B1 (en) * 2008-03-04 2011-04-26 Cortina Systems, Inc. Shared memory management
US8732339B2 (en) * 2009-03-24 2014-05-20 Hewlett-Packard Development Company, L.P. NPIV at storage devices
US20120159040A1 (en) * 2010-12-15 2012-06-21 Dhaval Parikh Auxiliary Interface for Non-Volatile Memory System
US8707104B1 (en) * 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US9075712B2 (en) 2011-11-30 2015-07-07 International Business Machines Corporation Scheduling requests in a solid state memory device
US9838269B2 (en) * 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US20130290601A1 (en) * 2012-04-26 2013-10-31 Lsi Corporation Linux i/o scheduler for solid-state drives
WO2014088445A1 (en) * 2012-12-05 2014-06-12 Emc Corporation Storage resource usage analysis for customized application options
KR102034626B1 (ko) * 2013-06-26 2019-10-21 삼성전자 주식회사 메모리 동작을 제어하는 방법 및 장치
KR20150017526A (ko) * 2013-08-07 2015-02-17 삼성전자주식회사 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법
US9377958B2 (en) * 2014-08-12 2016-06-28 Facebook, Inc. Allocation of read/write channels for storage devices
US10324833B2 (en) * 2015-10-27 2019-06-18 Toshiba Memory Corporation Memory controller, data storage device, and memory control method
US10102119B2 (en) * 2015-10-30 2018-10-16 Sandisk Technologies Llc Garbage collection based on queued and/or selected write commands
US10592110B2 (en) * 2016-02-19 2020-03-17 International Business Machines Corporation Techniques for dynamically adjusting over-provisioning space of a flash controller based on workload characteristics

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102483712A (zh) * 2009-08-21 2012-05-30 国际商业机器公司 在存储器控制器处对命令进行有效调度的系统和方法
CN102483712B (zh) * 2009-08-21 2015-04-01 国际商业机器公司 在存储器控制器处对命令进行有效调度的系统和方法
CN103135945A (zh) * 2013-03-25 2013-06-05 中国人民解放军国防科学技术大学 用于ssd的多通道动态读写调度方法
US9378136B1 (en) * 2014-06-30 2016-06-28 Emc Corporation Techniques for selecting write endurance classification of flash storage based on read-write mixture of I/O workload
US20170123730A1 (en) * 2015-10-29 2017-05-04 Netflix, Inc. Memory input/output management

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113272903A (zh) * 2018-12-17 2021-08-17 美光科技公司 处理非易失性存储器中的操作冲突
US11481348B2 (en) 2018-12-17 2022-10-25 Micron Technology, Inc. Handling operation collisions in a non-volatile memory
CN111538684A (zh) * 2018-12-28 2020-08-14 美光科技公司 主机自适应存储器装置优化
CN111538684B (zh) * 2018-12-28 2024-01-09 美光科技公司 主机自适应存储器装置优化
CN111638969A (zh) * 2019-03-01 2020-09-08 西部数据技术公司 改善主机设备的数据传输命令等待时间
CN111638969B (zh) * 2019-03-01 2023-05-23 西部数据技术公司 改善主机设备的数据传输命令等待时间
CN112306672A (zh) * 2019-08-02 2021-02-02 通用汽车环球科技运作有限责任公司 在嵌入式平台上使用共享服务器支持多视觉流的架构和方法
CN113220220A (zh) * 2020-02-03 2021-08-06 爱思开海力士有限公司 控制器、控制器的操作方法及包括该控制器的存储装置
CN113220220B (zh) * 2020-02-03 2024-04-12 爱思开海力士有限公司 控制器、控制器的操作方法及包括该控制器的存储装置
CN114063879A (zh) * 2020-07-31 2022-02-18 伊姆西Ip控股有限责任公司 用于处理操作命令的方法、电子设备和计算机程序产品
CN114063879B (zh) * 2020-07-31 2024-04-09 伊姆西Ip控股有限责任公司 用于处理操作命令的方法、电子设备和存储介质
CN112130906A (zh) * 2020-09-28 2020-12-25 深圳市宏旺微电子有限公司 一种主机命令处理的方法及装置

Also Published As

Publication number Publication date
US11645217B2 (en) 2023-05-09
US20200218679A1 (en) 2020-07-09
US20180336150A1 (en) 2018-11-22
CN108958907B (zh) 2022-01-04
DE102018105943A1 (de) 2018-11-22
US20210279196A1 (en) 2021-09-09
US11061842B2 (en) 2021-07-13
US10635617B2 (en) 2020-04-28

Similar Documents

Publication Publication Date Title
CN108958907A (zh) 用于数据存储系统的上下文感知动态命令调度
US11435908B2 (en) Geometry-aware command scheduling
US9977623B2 (en) Detection of a sequential command stream
CN102841872B (zh) 用于命令处理的高性能路径
US11500780B2 (en) Recovery of validity data for a data storage system
KR101521958B1 (ko) 혼합 밀도 메모리 저장 장치
US11069413B2 (en) Memory system and nonvolatile memory
US8174912B2 (en) Systems and methods for circular buffering control in a memory device
EP2492817A2 (en) Efficient buffering for a system having non-volatile memory
US20100161886A1 (en) Architecture for Address Mapping of Managed Non-Volatile Memory
US20140258596A1 (en) Memory controller and memory system
EP2109035A3 (en) Storage control apparatus, data management system and data management method
US20130067147A1 (en) Storage device, controller, and read command executing method
US10929025B2 (en) Data storage system with I/O determinism latency optimization
US11474709B2 (en) Managing data for a data storage system
US11176035B2 (en) Data storage devices and data processing methods
CN102402401A (zh) 一种磁盘io请求队列调度的方法
CN111432899A (zh) 用于管理对共享端口的多核访问的系统和方法
US11256621B2 (en) Dual controller cache optimization in a deterministic data storage system
US20200257463A1 (en) Data Storage Systems and Methods for Self Adaptive Chip-Enable Setup Time
US20200004636A1 (en) Data Storage System with Strategic Contention Avoidance
US11402999B2 (en) Adaptive wear leveling using multiple partitions
US11954367B2 (en) Active time-based command prioritization in data storage devices

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