CN109522248B - 存储控制器的操作方法及储存设备的操作方法 - Google Patents
存储控制器的操作方法及储存设备的操作方法 Download PDFInfo
- Publication number
- CN109522248B CN109522248B CN201810882420.5A CN201810882420A CN109522248B CN 109522248 B CN109522248 B CN 109522248B CN 201810882420 A CN201810882420 A CN 201810882420A CN 109522248 B CN109522248 B CN 109522248B
- Authority
- CN
- China
- Prior art keywords
- write buffer
- delay time
- write
- buffer
- command
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
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)
- Memory System (AREA)
Abstract
一种被配置为控制非易失性存储设备的存储控制器的操作方法,包括:从外部接收命令;基于当前可用写缓冲器、先前可用写缓冲器以及参考值来计算延迟时间;以及基于延迟时间对命令进行处理。
Description
相关申请的交叉引用
本公开要求于2017年9月19日在韩国知识产权局提交的韩国专利申请No.10-2017-0120594的优先权,其全部内容通过引用并入本文中。
技术领域
本文所述的示例性实施例涉及储存设备,更具体地,涉及存储控制器的操作方法和包括该存储控制器在内的储存设备的操作方法。
背景技术
半导体存储设备被分类为在断电时丢失其中存储的数据的易失性存储设备(例如,静态随机存取存储器(SRAM)、动态RAM(DRAM)和同步DRAM(SDRAM))以及即使在断电时也保留其中存储的数据的非易失性存储设备(例如,只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存设备、磁RAM(MRAM)、电阻RAM(RRAM)、相变RAM(PRAM)和铁电RAM(FRAM))。
如今,正使用各种技术来改善基于闪存的储存设备的性能。例如,储存设备将从主机接收的写数据存储在单独的缓冲存储器中,并向主机通知写数据被完全存储。然后,储存设备将缓冲存储器中存储的写数据编程到闪存中。如上所述,储存设备通过使用各种资源(例如,缓冲存储器)来改善性能。然而,由于资源是有限的(例如,容量的限制),因此需要各种方式来高效地使用资源,同时维持储存设备的性能。
发明内容
示例性实施例提供了能够改善性能的存储控制器的操作方法和储存设备的操作方法。
根据示例实施例的一个方面,一种被配置为控制非易失性存储设备的存储控制器的操作方法,包括:从外部设备接收命令;基于当前可用写缓冲器、先前可用写缓冲器以及参考值来计算延迟时间;以及基于延迟时间对命令进行处理。
根据示例性实施例的另一方面,一种被配置为控制非易失性存储设备的存储控制器的操作方法,包括:从外部设备接收命令;基于当前可用写缓冲器、先前可用写缓冲器和参考值来计算第一延迟时间;基于写缓冲器释放速率来计算最大延迟时间,所述写缓冲器释放速率表示每单位时间释放的写缓冲器的第一量与每单位时间分配的写缓冲器的第二量之间的差;以及基于所述延迟时间和所述最大延迟时间来对所述命令进行处理。
根据示例性实施例的另一方面,一种储存设备的操作方法包括:从外部设备接收命令;以及基于第一延迟时间和最大延迟时间来选择性地延迟处理所述命令。所述第一延迟时间是基于当前可用写缓冲器、先前可用写缓冲器和参考值来计算的,以及所述最大延迟时间是基于写缓冲器释放速率来计算的,所述写缓冲器释放速率表示每单位时间释放的写缓冲器的第一量与每单位时间分配的写缓冲器的第二量之间的差。
附图说明
通过参考以下附图的以下描述,上述和其他目的和特征将变得显而易见,其中,除非另有说明,否则相似的附图标记在各个附图中指代相似的部件,并且在附图中:
图1是示出了根据示例性实施例的计算系统的框图;
图2是示出了图1的存储控制器的框图;
图3是示出了图1的存储控制器的操作方法的流程图;
图4是用于描述图3的操作方法的视图;
图5是用于描述图4的存储控制器的操作方法的时序图;
图6是示出了图4的延迟计算单元的框图;
图7是用于描述根据示例性实施例的存储控制器的操作的框图;
图8是用于描述根据示例性实施例的存储控制器的操作的流程图;
图9是用于描述图7的存储控制器的操作的时序图;
图10是用于描述根据示例性实施例的存储控制器的操作的框图;
图11是用于描述根据示例性实施例的存储控制器的操作的流程图;
图12是用于描述图10的存储控制器的操作的时序图;
图13是示出了根据示例性实施例的计算系统的框图;
图14是示出了根据示例性实施例的计算系统的框图;以及
图15是示出了应用根据示例性实施例的储存设备的固态驱动(SSD)系统的框图。
具体实施方式
下面,可以以使本领域普通技术人员容易实现本发明构思的程度详细并清楚地描述本发明构思的示例性实施例。
在具体实施方式中参考术语“部件”、“单元”、“模块”等描述的组件和附图中示出的功能块可以用软件、硬件或其组合来实现。在实施例中,软件可以是机器代码、固件、嵌入式代码和应用软件。例如,硬件可以包括电学电路、电气电路、处理器、计算机、集成电路、集成电路核、压力传感器、惯性传感器、微机电系统(MEMS)、无源元件或者其组合。
图1是示出了根据示例性实施例的计算系统的框图。参考图1,计算系统10包括主机11和储存设备100。在示例性实施例中,计算系统10可以是计算系统或信息处理系统,比如计算机、笔记本电脑、服务器、工作站、便携式通信终端、个人数字助理(PDA)、便携式多媒体播放器(PMP)、智能电话或可穿戴设备。主机11可以向储存设备100发送命令CMD。主机11可以读取储存设备100中存储的数据或者可以将数据存储在储存设备100中。
储存设备100可以包括存储控制器110和非易失性存储设备120。在示例性实施例中,储存设备100可以包括大容量储存介质,比如固态驱动器(SSD)、存储卡、存储棒等。
存储控制器110可以响应于来自主机11的命令CMD来控制非易失性存储设备120。在存储控制器110的控制下,非易失性存储设备120可以存储数据或者可以将其中存储的数据提供给存储控制器110。
根据示例性实施例的存储控制器110可以包括资源池111、命令队列112、命令处理单元113、延迟计算单元114和闪存转换层(FTL)115。下面,为了清楚地描述示例性实施例,假设从主机11接收的命令CMD是写命令。然而,本示例性实施例的范围和精神不限于此。例如,存储控制器110可以从主机11接收各种命令,并且可以根据所接收的命令进行操作。
资源池111可以包括用于处理来自主机11的命令CMD的各种资源。例如,资源池111可以包括或管理写缓冲器、读缓冲器等。可以分配(或使用)资源池111的写缓冲器、读缓冲器等来处理命令CMD,并且可以在处理命令CMD之后以可用的形式释放(或返回)所述写缓冲器、读缓冲器等。在示例性实施例中,可以通过FTL 115的维护操作(例如,垃圾收集操作、读取回收操作、数据恢复操作和数据备份操作)来分配(或使用)或释放(或返回)资源池111的资源。在示例性实施例中,资源池111的资源可以是在初始化储存设备100时设置的,或者可以在储存设备100操作时改变。
命令队列112可以被配置为对从主机11接收的命令CMD进行排队。例如,命令队列112可以被配置为根据接收的顺序或优先级顺序对来自主机11的命令CMD进行排队。备选地,命令队列112可以被配置为根据预先设置的算法对接收到的命令进行排队。
命令处理单元113可以被配置为处理在命令队列112中排队的命令。例如,命令处理单元113可以获取在命令队列112中排队的多个命令中的至少一个命令,并且可以处理所获取的命令。在示例性实施例中,命令处理单元113处理命令CMD可以意味着分配用于命令CMD的写缓冲器(例如,分配新的写缓冲器),并且将来自主机11的写数据存储在所分配的写缓冲器中。下面,分配适当的写缓冲器并且将写数据存储在所分配的写缓冲器中的操作被称为命令处理单元113的“命令处理”。也就是说,在命令处理单元113处处理命令CMD可以包括为命令CMD分配写缓冲器并且将写数据存储在所分配的写缓冲器中。
如上所述,命令处理单元113可以通过分配资源池111中包括的写缓冲器的一部分来处理所获取的命令。在这种情况下,如果资源池111的可用写缓冲器不足,则由于命令处理单元113未能处理所获取的命令,因此命令处理单元113可以在确保可用写缓冲器之后处理所获取的命令。
在示例性实施例中,如上所述,在执行FTL 115的维护操作的情况下,由于写缓冲器是关于维护操作而分配的,因此资源池111的可用写缓冲器可能不足。在这种情况下,由于所获取的命令是在确保可用写缓冲器之后被处理的,因此与所获取的命令相关联的延迟时间(例如,第一延迟时间)可以急剧增加。也就是说,与命令相关联的延迟时间可以在储存设备100的特定状况(例如,执行垃圾收集操作的状况)下急剧增加。
根据示例性实施例的命令处理单元113可以基于由延迟计算单元114计算的延迟时间来处理(或延迟处理)所获取的命令。例如,延迟计算单元114可以基于当前可用写缓冲器的大小(例如,第一大小)、先前可用写缓冲器的大小(例如,第二大小)和资源池111的参考值来计算延迟时间。也就是说,当前可用写缓冲器的大小和可用写缓冲器的变化两者都可以应用于由延迟计算单元114计算的延迟时间。因此,在基于所计算的延迟时间来处理所获取的命令的情况下,可以在处理每个命令时确保可用写缓冲器,从而防止在特定状况下与命令CMD相关联的延迟急剧增加。将参考图3和图4更全面地描述延迟计算单元114的延迟时间计算操作。
如上所述,命令处理单元113可以基于所计算的延迟时间来处理命令,从而防止与命令相关联的延迟时间急剧增加。
FTL 115可以基于由命令处理单元113处理的命令CMD来在非易失性存储设备120上执行操作。在示例性实施例中,FTL 115可以在主机11和非易失性存储设备120之间提供接口,使得非易失性存储设备120被高效地使用。FTL 115可以将从主机11提供的逻辑地址转换为可在非易失性存储设备120中使用的物理地址。FTL 115可以通过映射表(未示出)执行地址转换操作。
在示例性实施例中,如上所述,FTL 115可以执行维护操作,比如垃圾收集操作、读取回收操作、数据恢复操作和数据备份操作。在这种情况下,为了执行维护操作,FTL 115可以分配(或使用)资源池111的资源(例如,写缓冲器),并且可以在完成维护操作之后释放(或返回)所分配的(或使用的)资源。
如上所述,根据示例性实施例的储存设备100可以基于在资源池111的当前状态和先前状态下分配的写缓冲器的大小和参考大小来计算延迟时间,并且可以基于所计算的延迟时间以第一操作(即,以延迟处理)延迟处理命令,从而防止在特定状况下延迟急剧增加。这样的命令将是已经被延迟处理的命令。
图2是示出了图1的存储控制器110的框图。参考图1和图2,存储控制器110可以包括资源池111、命令队列112、命令处理单元113、延迟计算单元114、FTL 115、处理器116、随机存取存储器(RAM)117、主机接口118和闪存接口119。参考图1描述了资源池111、命令队列112、命令处理单元113、延迟计算单元114和FTL 115,因此,这里将不再重复其详细描述。
处理器116可以执行存储控制器110的整体操作。RAM 117可以存储存储控制器110操作所需的各种信息。在示例性实施例中,RAM117可以是资源池111中包括的写缓冲器或由资源池111管理的写缓冲器。然而,本示例性实施例的范围和精神不限于此。例如,资源池111中包括的或由资源池111管理的写缓冲器可以是单独的缓冲存储器。
在示例性实施例中,资源池111、命令队列112、命令处理单元113、延迟计算单元114和FTL 115中的每一个可以以软件配置、硬件配置或其组合的形式来实现。在资源池111、命令队列112、命令处理单元113、延迟计算单元114和FTL 115分别用软件配置实现的情况下,软件配置可以存储在RAM 117中,并且RAM 117中存储的软件配置可以由处理器116驱动。
存储控制器110可以通过主机接口118与主机11通信。在示例性实施例中,主机接口118可以包括各种接口中的至少一个,诸如,双倍数据速率(DDR)接口、通用串行总线(USB)接口、多媒体卡(MMC)接口、嵌入式MMC(eMMC)接口、外围组件互连(PCI)接口、PCI-快速(PCI-E)接口、高级技术附件(ATA)接口、串行ATA接口、并行ATA接口、小型计算机小接口(SCSI)、增强型小磁盘接口(ESDI)、集成驱动电子(IDE)接口、火线、通用闪存(UFS)接口、非易失性存储器快速(NVMe)接口和其它接口。存储控制器110可以被配置为通过闪存接口119与非易失性存储设备120通信。
图3是示出了图1的存储控制器110的操作的方法的流程图。下面,为了简要描述,将基于存储控制器110的操作方法来描述示例性实施例。然而,本示例性实施例的范围和精神不限于此。例如,可以分别由存储控制器110、由存储控制器110中包括的各个组件、或由存储控制器110中驱动软件的处理器116来执行图3的流程图的操作。
下面,为了简要描述,使用术语“当前可用缓冲器ABCR”和“先前可用缓冲器ABPR”。当前可用缓冲器ABCR指代在当前状态或当前时间可用的写缓冲器(即,未分配用于特定操作的写缓冲器或者能够分配用于特定操作的写缓冲器),并且先前可用写缓冲器ABPR指代先前状态下可用的写缓冲器。
此外,为了便于描述,当前可用缓冲器ABCR的大小可以称为“当前可用缓冲器ABCR”,并且先前可用缓冲器ABPR的大小可以称为“先前可用缓冲器ABPR”。也就是说,当前可用缓冲器ABCR被称为“特定值”意味着当前可用缓冲器ABCR的大小是“特定值”。然而,上述值和假设是用于简要且清楚地描述示例性实施例的技术构思,并且示例性实施例的范围和精神可以不限于此。
参考图1和图3,在操作S110中,存储控制器110可以从命令队列112获取命令CMD。例如,命令队列112可以被配置为对来自主机11的多个命令进行排队。命令处理单元113可以获取在命令队列112中排队的多个命令中的至少一个命令CMD。在示例性实施例中,可以省略命令队列112。在这种情况下,可以用从主机11接收命令的操作来代替获取命令的操作。
在操作S120中,存储控制器110可以确定当前可用缓冲器ABCR是否小于参考值TH。例如,存储控制器110的延迟计算单元114可以监控资源池111以感测当前可用缓冲器ABCR。资源池111可以确定当前可用缓冲器ABCR是否小于参考值TH。在示例性实施例中,参考值TH可以是用于维持储存设备100的性能而预定义的值。为了维持储存设备100的性能,资源池111的可用写缓冲器的大小可以被配置为被维持为大于参考值TH。
如果当前可用缓冲器ABCR不小于参考值TH,则在操作S130中,存储控制器110可以以第二操作正常处理所获取的命令CMD(即,以正常处理来正常处理所获取的命令CMD)。例如,当前可用缓冲器ABCR的大小不小于参考值TH可以意味着资源池111中的可用写缓冲器是足够的。因此,存储控制器110可以在没有延迟时间的情况下或者基于预定义的延迟时间向所获取的命令CMD分配写缓冲器,并且可以以正常处理来对所获取的命令CMD进行正常处理。在示例性实施例中,预定义的时间可以是由主机11和储存设备100之间的接口预定义的时间,或者可以是用于维持储存设备100的性能而预定义的时间。
如果当前可用缓冲器ABCR的大小小于参考值TH,则在操作S140中,存储控制器110可以基于当前可用缓冲器ABCR、先前可用缓冲器ABPR以及参考值TH来计算延迟时间DL。在示例性实施例中,当前可用缓冲器ABCR的大小和可用写缓冲器的变化两者都可以应用于延迟时间DL。将参考图4更全面地描述用于计算延迟时间DL的方法。
在操作S150中,存储控制器110可以基于所计算的延迟时间DL来延迟处理命令CMD。例如,存储控制器110可以在从命令队列112获取命令CMD的时间起经过了延迟时间DL之后,处理命令CMD。这样,由于命令CMD被延迟处理的时间与所计算的延迟时间DL一样多,因此可以在延迟时间DL期间在资源池111中确保写缓冲器。因此,由于确保了足够的写缓冲器,因此在稍后处理命令时可以防止在特定状况(例如,垃圾收集情况)下命令的延迟急剧增加。
图4是用于描述图3的操作方法的图。为了容易描述示例性实施例的技术思想,假设资源池111是使用写缓冲器实现的,并且写缓冲器的整个大小是“100”。此外,假设参考值TH为“40”,当前可用缓冲器ABCR为“20”,并且先前可用缓冲器ABPR是“40”。也就是说,将参考图4描述当前可用缓冲器ABCR小于参考值TH的情况的操作。在图4中,阴影表示当前分配的写缓冲器(即,当前使用的写缓冲器)。
参考图1、图3和图4,可以在命令队列112中排队来自主机11的多个命令CMD1至CMDn。命令处理单元113可以获取在命令队列112中排队的多个命令CMD1至CMDn中的第一命令CMD1。在示例性实施例中,第一命令CMD1可以是首先要被处理的命令,这取决于命令队列112的排队方式。
在这种情况下,延迟计算单元114可以确定资源池111中的当前可用缓冲器ABCR的大小是否小于参考值TH。如上所述,由于当前可用缓冲器ABCR小于参考值TH,因此延迟计算单元114可以计算延迟时间DL。在示例性实施例中,延迟计算单元114可以基于以下等式1计算延迟时间DL。
DL=[TH-ABCR]*P+[(TH-ABCR)-(TH-ABPR)]*D [等式1]
参考等式1,“DL”表示所计算的延迟时间,“ABCR”表示当前状态的当前可用缓冲器的大小,并且“TH”表示与可用写缓冲器相关联的参考值。“P”表示用于将当前可用缓冲器的大小与参考值之间的差转换为延迟时间的第一控制参数,“D”表示用于将可用缓冲器的变化转换为延迟时间的第二控制参数。
如上所述,当前可用缓冲器ABCR可以表示在获取第一命令CMD1时的可用写缓冲器的大小,并且先前可用缓冲器ABPR的大小可以表示在第一命令CMD1之前获取另一命令时(即,在紧接第一命令CMD1之前获取另一命令时)的可用写缓冲器的大小。
参考等式1右侧的第一项(即“[TH-ABCR]*P”),因为参考值TH是预先设置的值,因此延迟时间DL可以随着当前可用缓冲器ABCR的增加而减小,并且延迟时间DL可以随着当前可用缓冲器ABCR的减少而增加。参考等式1右侧的第二项(即,“[(TH-ABCR)-(TH-ABPR)]*D”),延迟时间DL可以随着先前可用缓冲器ABPR和当前可用缓冲器ABCR之间的差的增加而增加。换句话说,如果当前可用缓冲器ABCR大于先前可用缓冲器ABPR,则延迟时间DL会减小,并且如果当前可用缓冲器ABCR小于先前可用缓冲器ABPR,则延迟时间DL会增加。也就是说,根据示例性实施例的延迟计算单元114可以基于资源池111的当前可用缓冲器ABCR和可用缓冲器的变化((TH-ABCR)-(TH-ABPR))两者来计算延迟时间DL。
命令处理单元113可以基于延迟时间DL来处理第一命令CMD1。例如,命令处理单元113可以基于所计算的延迟时间DL对第一命令CMD1进行延迟处理。在示例性实施例中,在命令处理单元113处对第一命令CMD1进行处理可以包括从资源池111分配写缓冲器,如图4的虚线所示。换句话说,命令处理单元113可以通过在经过延迟时间DL之后为第一命令CMD1分配写缓冲器来延迟处理第一命令CMD1。
之后,FTL 115可以执行与第一命令CMD1相对应的操作。例如,在第一命令CMD1是写命令的情况下,FTL 115可以将所分配的写缓冲器中存储的写数据存储在非易失性存储设备120中。
在示例性实施例中,存储控制器110可以在处理所获取的第一命令CMD1之后但在FTL 115执行与第一命令CMD1相关联的操作之前,向主机11提供对第一命令CMD1的响应(例如,发送对第一命令CMD1的响应)。提供对第一命令CMD1的响应的时间可以充当与第一命令CMD1相关联的延迟或等待时间。
在示例性实施例中,当前可用缓冲器ABCR、先前可用缓冲器ABPR以及参考值TH是特定值。然而,本示例性实施例的范围和精神不限于此。例如,可以将当前可用缓冲器ABCR、先前可用缓冲器ABPR以及参考值TH计算为相对于整个资源池111的比率。
如上所述,在当前可用缓冲器ABCR小于参考值TH的情况下,存储控制器110可以基于当前可用缓冲器ABCR、先前可用缓冲器ABPR以及参考值TH来计算与所获取的第一命令CMD1相关联的延迟时间DL,并且可以基于所计算的延迟时间DL来处理所获取的第一命令CMD1。在这种情况下,可以在延迟时间DL期间确保在资源池111中的可用写缓冲器,从而防止以下特定命令的延迟急剧增加。
图5是用于描述图4的存储控制器110的操作的时序图。为了说明的简洁和描述的方便,图5中示出了与第一命令CMD1和第二命令CMD2相关联的处理。此外,如在以上描述中所阐述的那样,假设参考值TH是“40”。此外,图5的时序图是基于存储控制器110来描述的。然而,本示例性实施例的范围和精神不限于此。例如,根据图5的时序图的操作可以由存储控制器110中包括的各个组件或由驱动软件的处理器116(参考图2)执行。
参考图4和图5,在第一时间点t1(第一时间点)处,存储控制器110可以获取第一命令CMD1。在示例性实施例中,第一命令CMD1可以是在命令队列112中排队的多个命令CMD1至CMDn中的一个命令。
在第一时间点t1之前的第0个时间点t0处,第0个可用缓冲器AB0可以是“40”。在示例性实施例中,第0个时间点t0可以是在第一命令CMD1之前(或紧接在第一命令CMD1之前)从命令队列112获取命令的时间点。在第一时间点t1处,第一可用缓冲器AB1可以是“20”。
关于第一时间点t1,第0可用缓冲器AB0可以是先前可用缓冲器(即,ABPR),并且第一可用缓冲器AB1可以是当前可用缓冲器(即,ABCR)。在这种情况下,当前可用缓冲器可以小于先前可用缓冲器。换句话说,在第一时间点t1处使用的写缓冲器的大小可以大于在第0时间点t0处使用的写缓冲器的大小。由于FTL 115的维护操作可能发生这种现象。例如,在FTL115执行维护操作(例如,垃圾收集操作)的情况下,FTL 115可以从资源池111分配(或使用)写缓冲器。也就是说,通过FTL 115的维护操作分配的写缓冲器(或使用的写缓冲器)的大小可以增加。
如上所述,由于第一可用缓冲器AB1小于参考值TH,因此存储控制器110可以基于可用缓冲器AB0和AB1以及参考值TH来计算延迟时间DL。例如,参考上述等式1,关于第一时间点t1,因为当前可用缓冲器ABCR是第一可用缓冲器ABl,并且先前可用缓冲器ABPR是第0可用缓冲器AB0,因此当前可用缓冲器ABCR和先前可用缓冲器ABPR可以分别为“20”和“40”。为了便于描述,假设第一控制参数“P”和第二控制参数“D”中的每一个参数是(但不限于)“1”,在第一时间点t1处计算的第一延迟时间DL1可以对应于值“40”。
存储控制器110可以基于与值“40”相对应的第一延迟时间DL1来延迟处理第一命令CMD1。例如,存储控制器110可以在从第一时间点t1起始经过第一时间T1时的第二时间点t2处对第一命令CMD1进行处理。在这种情况下,第一时间T1可以长于或等于第一延迟时间DL1。也就是说,存储控制器110可以在经过第一延迟时间DL1之后(即,在经过第一延迟时间或经过了该延迟时间之后)处理第一命令CMD1。换句话说,存储控制器110可以将对第一命令CMD1的处理延迟至少与第一延迟时间DL1一样多。
之后,存储控制器110可以在第三时间点t3处获取第二命令CMD2,并且可以计算第二延迟时间DL2。在第三时间点t3处,第二可用缓冲器AB2可以是“20”。关于第三时间点t3,当前可用缓冲器ABCR可以是第二可用缓冲器AB2,并且先前可用缓冲器ABPR可以是第一可用缓冲器AB1。如在以上描述中所阐述的,假设第一控制参数“P”和第二控制参数“D”中的每一个参数都是“1”,则与第二命令CMD2相关联的第二延迟时间DL2可以对应于值“20”。
存储控制器110可以基于与值“20”相对应的第二延迟时间DL2来延迟处理第二命令CMD2。例如,存储控制器110可以在从第三时间点t3起经过第二时间T2时的第四时间点t4处对第二命令CMD2进行处理。在这种情况下,第二时间T2可以长于或等于第二延迟时间DL2,并且可以短于第一延迟时间DL1。换句话说,存储控制器110可以将对第二命令CMD2的处理延迟至少与第二延迟时间DL2一样多。
第一延迟时间DL1和第二延迟时间DL2彼此不同是指在第一时间点t1和第三时间点t3处的当前可用缓冲器ABcR是相同的,但可用缓冲器的变化是不同的。例如,关于第一时间点t1,当前可用缓冲器ABCR与先前可用缓冲器ABPR之间的差是“20”。相比之下,关于第二时间点t2,当前可用缓冲器ABCR与先前可用缓冲器ABPR之间的差是“0”。这意味着可用缓冲器在第一时间点t1处减小(或使用的缓冲器的量(例如,第一量)增加),并且可用缓冲器在第二时间点t2处未减小。在示例性实施例中,可用缓冲器减小可以意味着资源池111的写缓冲器被分配(或使用)用于FTL 115的维护操作。
换句话说,由于在第一时间点t1处可用缓冲器的大小有减小的趋势,因此可以通过增加与第一命令CMD1相关联的延迟时间来确保可用缓冲器。由于在第三时间点t3处可用缓冲器的大小没有减小,因此即使第二时间点t2的延迟时间短于第一时间点t1的延迟时间,也可以确保可用缓冲器。
如上所述,根据示例性实施例,存储控制器110可以基于资源池111的当前可用缓冲器的大小和资源池111的可用缓冲器的变化两者来计算与命令相关联的延迟时间,从而防止在特定状况下命令的延迟急剧增加。
尽管未在图5中示出,但是在示例性实施例中,如果所计算的延迟时间DL小于特定值,则存储控制器110可以对所获取的命令进行正常处理。例如,所计算的延迟时间DL可以具有负(-)值。在这种情况下,如果处理命令所需的写缓冲器足够,则存储控制器110可以在没有延迟时间的情况下或基于预先设置的延迟时间来处理命令。
作为更详细的示例,假设当前可用缓冲器ABCR是“30”并且先前可用缓冲器ABPR是“10”(假设第一控制参数“P”和第二控制参数“D”都是“1”),则延迟时间DL可以根据等式1而与值“-10”(即,负值)相对应。这意味着可用缓冲器的变化有增加趋势。换句话说,这意味着,由于缓冲器释放速率比缓冲器分配速率快,因此之后可以快速确保可用写缓冲器。因此,在延迟时间DL与负(-)值相对应的情况下,即使存储控制器110在没有延迟时间的情况下或基于预先设置的延迟时间处理命令,也可以在稍后处理命令时确保足够的写缓冲器。
示例性实施例被描述为:关于任一时间点,先前可用缓冲器ABPR是可用缓冲器的大小。然而,本示例性实施例的范围和精神不限于此。例如,先前可用缓冲器ABPR可以是特定范围内包括的可用缓冲器的平均值。例如,先前可用缓冲器ABPR可以是从特定时间点(例如,先前时间点)到当前时间点感测到的可用缓冲器的平均值。
在示例性实施例中,延迟计算单元114基于为特定值的当前可用缓冲器ABCR、先前可用缓冲器ABPR以及参考值TH来计算延迟时间DL。然而,本示例性实施例的范围和精神不限于此。例如,延迟计算单元114可以基于当前分配的(或使用的)缓冲器的大小、先前分配的(或使用的)缓冲器的大小和参考值(在这种情况下,参考值是与分配(或使用)的缓冲器相关联的参考值)来计算延迟时间DL。在这种情况下,可以通过以下等式2计算延迟时间。
DL=[UBCR-TH′]*P+[(UBCR-TH′)-(UBPR-TH′)]*D [等式2]
参考等式2,“UBCR”表示当前分配(或使用)的缓冲器的大小,“UBPR”表示先前分配(或使用)的缓冲器的大小,且“TH”表示与所分配(或使用)的缓冲器相关联的参考值。已参考等式1对其它参数进行描述,因此在此不再重复其详细描述。根据等式2,延迟计算单元114可以基于分配的写缓冲器的大小和分配的写缓冲器的变化来计算延迟时间DL。
在示例性实施例中,尽管未在图5中示出,但是对参考值TH减去当前可用缓冲器ABCR得到的值进行累加而得到的值可以应用于延迟时间DL。例如,可以累加等式1的第一项的值“[TH-ABCR]”(即,参考值TH和当前可用缓冲器ABCR之间的差)。累加值可以应用于延迟时间DL。例如,可以通过以下等式3计算延迟时间DL。
DL=[TH-ABCR]*P+[(TH-ABCR)-(TH-ABPR)]*D+∑(TH-AB)*I [等式3]
在等式3中,“AB”表示先前时间点检测到的可用缓冲器的大小,“I”表示用于将累加值转换为延迟时间的控制参数。已参考等式1对其它参数进行描述,因此在此不再重复其详细描述。也就是说,等式3的第三项表示参考值TH与当前可用缓冲器ABCR之间的差的累加值。
在特定情况下(例如,当前可用缓冲器ABCR为“0”并且先前可用缓冲器ABPR为“0”的情况,或者当前可用缓冲器ABCR以及先前可用缓冲器ABPR相同的情况),等式3的第二项([(TH-ABCR)-(TH-ABPR)]*D)的值可以是0。在这种情况下,可用写缓冲器的变化可以不应用于延迟时间DL。为此,参考等式3的第三项,参考值TH和当前可用缓冲器ABCR之间的差的累加值可以应用于延迟时间DL。因此,当基于延迟时间DL处理命令时,可以充分确保可用写缓冲器,从而防止与命令相关联的延迟急剧增加。在不脱离示例性实施例的技术构思的情况下,可以不同地改变或修改上述计算延迟时间DL的方法。
图6是示出了图4的延迟计算单元114的框图。参考图4和图6,延迟计算单元114可以包括寄存器114A、第一减法器114B、第二减法器114C、参数控制器114D和加法器114E。
寄存器114A可以接收与当前可用缓冲器AB[i]有关的信息。寄存器114A可以存储与所接收的当前可用缓冲器AB[i]有关的信息和与先前可用缓冲器AB[i-1]有关的信息。在示例性实施例中,先前可用缓冲器AB[i-1]可以是特定时间点的可用缓冲器或特定时间间隔内的可用缓冲器的平均值。
第一减法器114B可以被配置为计算并输出当前可用缓冲器AB[i]与参考值TH之间的差。例如,第一减法器114B可以输出参考值TH减去当前可用缓冲器AB[i]的值。在示例性实施例中,从第一减法器114B输出的值可以是与等式1的右侧的第一项相对应的值。
第二减法器114C可以被配置为从寄存器114A接收先前可用缓冲器AB[i-1],并且计算并输出当前可用缓冲器AB[i]与先前可用缓冲器AB[i-1]之间的差。例如,第二减法器114C可以输出先前可用缓冲器AB[i-1]减去当前可用缓冲器AB[i]的值。在示例性实施例中,从第二减法器114C输出的值可以是与等式1的右侧的第二项相对应的值。
参数控制器114D可以被配置为控制第一控制参数“P”和第二控制参数“D”。如参考等式1所描述地,第一控制参数“P”表示用于将当前可用缓冲器的大小与参考值之间的差转换为延迟时间的控制参数,第二控制参数“D”表示用于将可用缓冲器的变化转换为延迟时间的控制参数。参数控制器114D可以控制第一控制参数“P”和第二控制参数“D”。
在示例性实施例中,可以根据感测当前可用缓冲器AB[i]和先前可用缓冲器AB[i-1]的时间点来不同地设置第二控制参数“D”。例如,随着感测当前可用缓冲器AB[i]的时间点与感测先前可用缓冲器AB[i-1]的时间点之间的时间差变得更大,控制参数“D”的值可以减小。
来自参数控制器114D的第一控制参数“P”和第二控制参数“D”分别与第一减法器114B的输出值和第二减法器114C的输出值组合,并且组合结果可以被提供给加法器114E。加法器114E可以将输入值相加以输出延迟时间DL。
在示例性实施例中,图6中所示的延迟计算单元114是用于描述用于计算延迟时间DL的配置的示例,并且示例性实施例的范围和精神不限于此。
延迟计算单元114中包括的各个组件可以以硬件的形式实现。备选地,延迟计算单元114中包括的各个组件可以以软件的形式实现,并且可以由存储控制器110的处理器116(参考图2)或由单独的设备驱动。
图7是用于描述根据示例性实施例的存储控制器210的操作的框图,并且图8是用于描述根据示例性实施例的存储控制器210的操作的流程图。图7中省略了不必要的组件以清楚地描述示例性实施例。此外,参考图1至图6描述的组件可以在图7至图8中以相似的附图标记标记,并且在此将不再重复其详细描述。
参考图7和图8,存储控制器210可以执行操作S210和操作S230。操作S210至操作S230类似于图3的操作S110至操作S130,因此,这里将不再重复其详细描述。
如果当前可用缓冲器ABCR小于参考值TH,则在操作S240中,存储控制器210可以基于缓冲器释放速率BRR来计算最大延迟时间DLMAX。
例如,如图7中所示,除了命令处理操作之外,FTL 215的维护操作可以分配(或使用)资源池211的资源,并且可以释放(或返回)资源池211的资源。在这种情况下,延迟计算单元214可以感测缓冲器释放速率BRR。缓冲器释放速率BRR可以表示每单位时间释放的资源(例如,写缓冲器)与每单位时间分配的资源之间的大小差。也就是说,在每单位时间分配“30”的写缓冲器(例如,每单位时间分配第二量的写缓冲器)并且每单位时间释放“50”的写缓冲器(例如,每单位时间释放第一量的写缓冲器)的情况下,缓冲器释放速率BRR可以对应于值“20”。相反,在每单位时间分配“30”的写缓冲器并且每单位时间释放“20”的写缓冲器的情况下,缓冲器释放速率BRR可以对应于值“-10”。也就是说,随着缓冲器释放速率BRR变得更高,可以更快地确保可用写缓冲器。
延迟计算单元214可以基于所感测的缓冲器释放速率BRR来计算最大延迟时间DLMAX。例如,随着缓冲器释放速率BRR变得更高,可以更快地确保可用写缓冲器。也就是说,即使与命令相关联的延迟时间很短,也可以确保足够的可用缓冲器。
在示例性实施例中,根据FTL 215的维护操作的缓冲器释放速率BRR可能影响储存设备的性能。也就是说,在与命令相关联的延迟时间长于最大延迟时间DLMAX的情况下,由于与命令处理相关联的延迟,因此性能可能会降低。因此,延迟计算单元214可以基于缓冲器释放速率BRR来计算最大延迟时间DLMAX,使得储存设备的性能的降低最小化,并且确保足够的可用缓冲器。例如,随着缓冲器释放速率BRR增加,延迟计算单元214可以减小最大延迟时间DLMAX,并且随着缓冲器释放速率BRR降低,可以增加最大延迟时间DLMAX。
在示例性实施例中,最大延迟时间可以是由单独的计算电路或计算软件基于缓冲器释放速率BRR计算的,或者可以以预定表(PDT)方式来选择的。
在计算最大延迟时间DLMAX之后,在操作S250中,存储控制器210可以基于最大延迟时间DLMAX来处理命令CMD。例如,如图7所示,命令处理单元213可以基于最大延迟时间DLMAX处理从命令队列212获取的第一命令CMD1。
在这种情况下,与参考图1至图8描述的示例性实施例不同,命令处理单元213可以在最大延迟时间DLMAX内(即,在经过最大延迟时间之前)处理所获取的第一命令CMD1。原因在于:如果与第一命令CMD1相关联的延迟时间超过最大延迟时间DLMAX,则储存设备的整体性能降低。因此,命令处理单元213可以在最大延迟时间DLMAX内处理第一命令CMD1。
图9是用于描述图7的存储控制器210的操作的时序图。为了清楚地描述示例性实施例的技术构思,在图9中示出了第一命令CMD1和第二命令CMD2的处理,并且假设在获取第一命令CMD1和第二命令CMD2的时间点处,可用缓冲器ABCR小于参考值TH。
此外,将基于存储控制器210的操作来描述图9的时序图。然而,可以由存储控制器210中包括的相应组件执行图9中所示的操作。然而,上述配置可以仅是示例,并且示例性实施例的范围和精神可以不限于此。
参考图7和图9,在第一时间点t1处,存储控制器210可以获取第一命令CMD1。在第一时间点t1处,缓冲器释放速率可以是第一缓冲器释放速率BRRl。如上所述,存储控制器210(具体地,延迟计算单元214)可以感测第一缓冲器释放速率BRRl,并且可以基于感测到的第一缓冲器释放速率BRR1来计算第一最大延迟时间DLMAX1。
存储控制器210可以基于所计算的第一最大延迟时间DLMAX1来处理第一命令CMD1。例如,存储控制器210可以在从第一时间点t1起始经过第一时间T1时的第二时间点t2处对第一命令CMD1进行处理。在这种情况下,第一时间T1可以短于或等于第一最大延迟时间DLMAX1。
在第三时间点t3处,存储控制器210可以获取第二命令CMD2。在第三时间点t3处,缓冲器释放速率可以是第二缓冲器释放速率BRR2。在这种情况下,第二缓冲器释放速率BRR2可以比第一缓冲器释放速率BRR1快。换句话说,在第二时间点t2处每单位时间返回的写缓冲器的大小可以大于在第一时间点t1处每单位时间返回的写缓冲器的大小。存储控制器210(具体地,延迟计算单元214)可以感测第二缓冲器释放速率BRR2,并且可以基于感测到的第二缓冲器释放速率BRR2来计算第二最大延迟时间DLMAX2。在这种情况下,第二最大延迟时间DLMAX2可以比第一最大延迟时间DLMAX1短。参考图7和图8对此进行描述,因此,这里将不再重复其详细描述。
存储控制器210可以在从第三时间点t3起经过第二时间T2时的第四时间点t4处对第二命令CMD2进行处理。在这种情况下,第二时间T2可以短于或等于第二最大延迟时间DLMAX2。
如上所述,存储控制器210可以基于缓冲器释放速率BRR来计算最大延迟时间DLMAX,并且可以基于所计算的最大延迟时间DLMAX来处理命令,从而防止储存设备性能下降。
图10是用于描述根据示例性实施例的存储控制器310的操作的框图,并且图11是用于描述根据示例性实施例的存储控制器310的操作的流程图。图10中省略了不必要的组件以清楚地描述示例性实施例。此外,参考图1至图9描述的组件可以在图10至图11中以相似的附图标记标记,并且在此将不再重复其详细描述。
参考图10和图11,存储控制器310可以执行操作S310和操作S330。操作S310至操作S330类似于图3的操作S110至操作S130,因此,这里将不再重复其详细描述。
如果可用缓冲器ABCR的大小小于参考值TH,则存储控制器310可以执行操作S340和操作S350。操作S340类似于图3的操作S130,因此,这里将不再重复其详细描述。此外,操作S350类似于图8的操作S240,因此,这里将不再重复其详细描述。
在操作S360中,存储控制器310可以确定所计算的延迟时间DL是否大于所计算的最大延迟时间DLMAX。例如,如图10所示,延迟计算单元314可以基于当前可用缓冲器ABCR、先前可用缓冲器ABPR和参考值TH来计算延迟时间DL。延迟计算单元314可以基于缓冲器释放速率BRR来计算最大延迟时间DLMAX。参考图1至图9对延迟时间DL和最大延迟时间DLMAX进行描述,因此这里不再重复其详细描述。
存储控制器310可以基于延迟时间DL和最大延迟时间DLMAX来处理第一命令CMD1。例如,如果延迟时间DL大于最大延迟时间DLMAX,则在操作S370中,存储控制器310可以基于最大延迟时间DLMAX来延迟处理命令CMD。例如,如上所述,最大延迟时间DLMAX可以表示导致储存设备性能下降的延迟时间。也就是说,在延迟时间DL大于最大延迟时间DLMAX的情况下,为了防止储存设备的性能降低,存储控制器310可以在最大延迟时间DLMAX内处理从命令队列312获取的第一命令CMD1。因此,可以防止储存设备的性能降低。
如果延迟时间DL不大于最大延迟时间DLMAX,则在操作S380中,存储控制器310可以基于延迟时间DL来对命令CMD进行延迟处理。例如,如上所述,延迟时间DL可以是应用当前可用缓冲器和可用缓冲器的变化的时间。因此,当存储控制器310基于延迟时间DL对命令进行延迟处理时,可以确保可用写缓冲器,从而防止稍后与命令相关联的延迟急剧增加。在示例性实施例中,在操作S380中,与命令相关联的实际延迟时间可以长于或等于所计算的延迟时间DL,并且可以短于最大延迟时间DLMAX。也就是说,存储控制器310可以使与命令相关联的实际延迟时间短于最大延迟时间DLMAX,从而防止储存设备性能降低。此外,存储控制器310可以使与命令相关联的实际延迟时间长于延迟时间DL,从而保证可用写缓冲器。因此,有可能可以防止储存设备的性能降低和在特定状况下命令的延迟急剧增加。
图12是用于描述图10的存储控制器310的操作的时序图。为了说明的简洁,图12中示出了与第一命令CMD1和第二命令CMD2相关联的操作。此外,将基于存储控制器310的操作来描述图9的时序图。然而,可以由存储控制器310中包括的相应组件执行图12中所示的操作。然而,上述配置可以仅是示例,并且示例性实施例的范围和精神可以不限于此。
参考图10和图12,存储控制器310可以在第一时间点t1处获取第一命令CMD1。在这种情况下,存储控制器310可以基于当前可用缓冲器ABCR、先前可用缓冲器ABPR以及参考值TH来计算第一延迟时间DL1,并且可以基于缓冲器释放速率BRR来计算第一最大延迟时间DLMAX1。
存储控制器310可以在从第一时间点t1起经过第一时间T1时的第二时间点t2处对第一命令CMD1进行处理。假设第一延迟时间DL1长于第一最大延迟时间DLMAX1,则第一时间T1可以短于或等于第一最大延迟时间DLMAX1。也就是说,如上所述,如果第一延迟时间DL1长于第一最大延迟时间DLMAX1,则存储控制器310可以将第一命令CMD1延迟处理与第一时间T1一样多的时间,第一时间T1短于或等于第一最大延迟时间DLMAX1,从而防止储存设备的性能降低。
之后,存储控制器310可以在第三时间点t3处获取第二命令CMD2。在这种情况下,存储控制器310可以基于当前可用缓冲器ABCR、先前可用缓冲器ABPR以及参考值TH来计算第二延迟时间DL2,并且可以基于缓冲器释放速率BRR来计算第二最大延迟时间DLMAX2。
存储控制器310可以在从第三时间点t3起经过第二时间T2时的第四时间点t4处对第二命令CMD2进行处理。假设第二延迟时间DL2短于第二最大延迟时间DLMAX2,则第二时间T2可以长于或等于第二延迟时间DL2,并且可以短于或等于第二最大延迟时间DLMAX2。也就是说,如上所述,在第二延迟时间DL2短于第二最大延迟时间DLMAX2的情况下,存储控制器310可以将第二命令CMD2延迟处理与第二时间T2一样多的时间,从而防止储存设备的性能降低并确保可用写缓冲器。因此,有可能可以防止储存设备的性能降低和在特定状况下命令的延迟急剧增加。
图13是示出了根据示例性实施例的计算系统的框图。参考图13,计算系统1000可以包括主机1100和储存设备1200。参考图1对主机1100和储存设备1200进行描述,因此,在此将不再重复其详细描述。
储存设备1200可以包括存储控制器1210、非易失性存储设备1220和缓冲存储设备1230。以上描述了存储控制器1210和非易失性存储设备1220,因此,这里将不再重复其详细描述。
缓冲存储设备1230可以用作储存设备1200的工作存储器、高速缓冲存储器、缓冲存储器等。在示例性实施例中,缓冲存储设备1230是由参考图1至图12描述的资源池管理的。例如,缓冲存储设备1230可以被分配作为写缓冲器或读缓冲器,并且这种分配可以由资源池管理。
如参考图1至图2所述,存储控制器1210可以监控与缓冲存储设备1230中的可用缓冲器、分配的缓冲器或释放的缓冲器有关的信息,并且可以通过所监控的信息来计算延迟时间DL或最大延迟时间DLMAX。存储控制器1210可以基于所计算的延迟时间DL和所计算的最大延迟时间DLMAX来选择性地延迟处理来自主机1100的命令。
图14是示出了根据示例性实施例的计算系统的框图。参考图14,计算系统2000可以包括主机2100和储存设备2200。储存设备2200可以包括存储控制器2210和非易失性存储设备2220。以上描述了主机2100、储存设备2200、存储控制器2210和非易失性存储设备2220,因此,这里将不再重复其详细描述。
主机2100可以包括主机缓冲存储器(HBM)2110。存储控制器2210可以使用主机2100的主机缓冲存储器2110。例如,存储控制器2210可以使用主机缓冲存储器2110来作为写缓冲器或读缓冲器。备选地,存储控制器2210可以将在操作期间使用的各种信息存储在主机缓冲存储器2110中。在示例性实施例中,主机缓冲存储器2110可以由存储控制器2210中包括的资源池(未示出)管理。也就是说,存储控制器2210可以使用主机2100的主机缓冲存储器2110以处理来自主机2100的命令。
在示例性实施例中,尽管未在图14中示出,但是主机2100可以包括参考图1至图12描述的资源池、命令队列、命令处理单元、延迟处理单元或FTL。也就是说,主机2100可以被配置为基于参考图1至图12描述的操作方法选择性地对命令进行延迟处理。
在示例性实施例中,参考图13和图14描述根据示例性实施例的存储控制器的资源池中可使用的配置。然而,本示例性实施例的范围和精神不限于此。例如,资源池可以包括或管理各种缓冲存储器,或者可以包括或管理用于处理命令的软件资源、硬件资源或其组合。
图15是示出了应用根据示例性实施例的储存设备的固态驱动(SSD)系统3000的框图。参考图15,SSD系统3000可以包括主机3100和SSD 3200。
SSD 3200通过信号连接器3201与主机3100交换信号SIG,并且通过电源连接器3202向SSD 3200供应电力PWR。SSD 3200包括SSD控制器3210、多个闪存3221至322n、辅助电源3230和缓冲存储器3240。
SSD控制器3210可以响应于来自主机3100的信号SIG来控制闪存3221至322n。在示例性实施例中,SSD控制器3210可以基于参考图1至图14描述的操作方法来选择性地对来自主机3100的命令进行延迟处理。
闪存3221至322n可以在SSD控制器3210的控制下操作。辅助电源3230通过电源连接器3202与主机3100连接。可以由来自主机3100的电力PWR对辅助电源3230进行充电。当未从主机3100平稳地供应电力PWR时,辅助电源3230可以为SSD3200供电。
缓冲存储器3240用作为SSD 3200的缓冲存储器。在示例性实施例中,如参考图1至图14所描述的那样,缓冲存储器3240可以是由资源池管理的用于命令处理的资源。
如上所述,根据示例性实施例,用于控制非易失性存储设备的存储控制器可以基于当前可用缓冲器、先前可用缓冲器和参考值来计算延迟时间,并且可以基于所计算的延迟时间来延迟处理命令。备选地,存储控制器可以基于缓冲器释放速率来计算最大延迟时间,并且可以基于所计算的最大延迟时间来延迟处理命令。这样,可以防止在特定状况下命令的延迟急剧增加,并且防止储存设备的性能降低。这意味着储存设备的性能得到改善。
根据示例性实施例,储存设备或存储控制器可以基于所使用的资源(例如,写缓冲器)的量来计算延迟时间,并且可以基于所计算的延迟时间来选择性地延迟处理命令。这样,由于在延迟时间期间确保了可用写缓冲器,因此可以防止在特定状况下命令的延迟急剧增加。因此,可以提供能够改善性能的存储控制器的操作方法和储存设备的操作方法。
尽管已经参考实施例描述了示例性实施例,但是对于本领域技术人员来说显而易见的是,在不脱离本示例性实施例的精神和范围的情况下,可以进行各种改变和修改。因此,应当理解,上述实施例不是限制性的,而是说明性的。
Claims (14)
1.一种操作被配置为控制非易失性存储设备的存储控制器的方法,所述方法包括:
响应于从外部设备接收每个写命令,基于所述存储控制器的写缓冲器的当前可用大小、所述写缓冲器处理先前写命令的先前可用大小和参考大小来计算将所述存储控制器的所述写缓冲器的所述当前可用大小至少增加到所述参考大小所需要的延迟时间;
在所述延迟时间期间,将所述写缓冲器的所述当前可用大小至少增加到所述参考大小;
分配在至少具有所述参考大小的所述写缓冲器内的空间,并将所述写命令的写数据存储在所述写缓冲器内的所述空间中。
2.根据权利要求1所述的方法,其中所述写缓冲器的所述当前可用大小表示在接收到所述写命令时的第一时间点处的所述写缓冲器的第一大小,并且所述写缓冲器的所述先前可用大小表示在接收到所述先前写命令时的所述第一时间点之前的所述写缓冲器的第二大小。
3.根据权利要求1所述的方法,其中,随着所述参考大小减去所述写缓冲器的所述当前可用大小而得到的值增加,所述延迟时间增加,以及
其中,随着所述写缓冲器的所述先前可用大小减去所述写缓冲器的所述当前可用大小而得到的值增加,所述延迟时间增加。
4.根据权利要求1所述的方法,其中,在从接收到所述写命令时的时间点起经过所述延迟时间之后,对所述写命令进行处理。
5.根据权利要求1所述的方法,还包括:
如果所述写缓冲器的所述当前可用大小大于所述参考大小或者所述延迟时间小于特定值,则分配在所述写缓冲器内的所述空间,并将所述写命令的写数据存储在所述写缓冲器的所述空间中,而不将所述写缓冲器的所述当前可用大小至少增加到所述参考大小。
6.根据权利要求5所述的方法,还包括:
在将所述写命令的写数据存储在所述写缓冲器的所述空间中之后,向所述外部设备发送对所述写命令的响应。
7.根据权利要求5所述的方法,还包括:
将存储在所述写缓冲器内的所述空间中的所述写数据写入所述非易失性存储设备。
8.根据权利要求1所述的方法,还包括:将从所述外部设备接收的所述写命令在命令队列中进行排队。
9.一种操作被配置为控制非易失性存储设备的存储控制器的方法,所述方法包括:
响应于从外部设备接收每个写命令,基于所述存储控制器的写缓冲器的当前可用大小、所述写缓冲器的先前可用大小和参考大小来计算将所述存储控制器的所述写缓冲器的所述当前可用大小至少增加到所述参考大小所需要的第一延迟时间;
基于写缓冲器释放速率来计算最大延迟时间,所述写缓冲器释放速率表示每单位时间释放的所述写缓冲器的第一量与每单位时间分配的所述写缓冲器的第二量之间的差;以及
如果所述第一延迟时间大于所述最大延迟时间,则在所述最大延迟时间期间将所述写缓冲器的所述当前可用大小至少增加到所述参考大小;
如果所述第一延迟时间小于所述最大延迟时间,则在所述延迟时间期间将所述写缓冲器的所述当前可用大小至少增加到所述参考大小;
分配在至少具有所述参考大小的所述写缓冲器内的空间;以及
将所述写命令的写数据存储在所述写缓冲器内的所述空间中。
10.根据权利要求9所述的方法,其中,如果在所述非易失性存储设备上执行维护操作,则所述写缓冲器释放速率降低。
11.根据权利要求10所述的方法,其中,随着第一量的写缓冲器释放速率增加,则所述最大延迟时间减少。
12.根据权利要求9所述的方法,其中,随着所述参考大小减去所述写缓冲器的所述当前可用大小而得到的值增加,所述第一延迟时间增加,以及
其中,随着所述写缓冲器的所述先前可用大小减去所述写缓冲器的所述当前可用大小而得到的值增加,所述第一延迟时间增加。
13.根据权利要求9所述的方法,还包括:
如果所述第一延迟时间大于所述最大延迟时间,则分配在所述写缓冲器内的所述空间,并将所述写命令的写数据存储在所述写缓冲器的所述空间中,而不在经过所述最大延迟时间之前,将所述写缓冲器的所述当前可用大小至少增加到所述参考大小对所述命令进行处理;以及
如果所述第一延迟时间不大于所述最大延迟时间,则分配在所述写缓冲器内的所述空间,并将所述写命令的写数据存储在所述写缓冲器的所述空间中,而在经过所述第一延迟时间之后将所述写缓冲器的所述当前可用大小至少增加到所述参考大小。
14.根据权利要求9所述的方法,还包括:
如果所述写缓冲器的当前可用大小大于所述参考大小或者所述第一延迟时间小于特定值,则分配在所述写缓冲器内的所述空间,并将所述写命令的所述写数据存储在所述写缓冲器的所述空间中,而不将所述写缓冲器的所述当前可用大小至少增加到所述参考大小。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0120594 | 2017-09-19 | ||
KR1020170120594A KR102450514B1 (ko) | 2017-09-19 | 2017-09-19 | 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522248A CN109522248A (zh) | 2019-03-26 |
CN109522248B true CN109522248B (zh) | 2023-07-11 |
Family
ID=65719290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810882420.5A Active CN109522248B (zh) | 2017-09-19 | 2018-08-03 | 存储控制器的操作方法及储存设备的操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10824564B2 (zh) |
KR (1) | KR102450514B1 (zh) |
CN (1) | CN109522248B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877669B1 (en) * | 2011-06-30 | 2020-12-29 | Amazon Technologies, Inc. | System and method for providing a committed throughput level in a data store |
WO2016171738A1 (en) * | 2015-04-23 | 2016-10-27 | Hewlett Packard Enterprise Development Lp | Storage reclamation in a thin provisioned storage device |
US10969994B2 (en) * | 2018-08-08 | 2021-04-06 | Micron Technology, Inc. | Throttle response signals from a memory system |
US11074007B2 (en) * | 2018-08-08 | 2021-07-27 | Micron Technology, Inc. | Optimize information requests to a memory system |
KR20200057311A (ko) | 2018-11-16 | 2020-05-26 | 삼성전자주식회사 | 통신되는 데이터의 양을 동작의 중단 빈도에 따라 스로틀링하는 스토리지 장치 |
TWI784120B (zh) * | 2019-01-17 | 2022-11-21 | 韓商愛思開海力士有限公司 | 用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體 |
KR20210026103A (ko) | 2019-08-29 | 2021-03-10 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
KR102635689B1 (ko) * | 2019-08-30 | 2024-02-14 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 |
KR20220055717A (ko) | 2020-10-27 | 2022-05-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20220127076A (ko) * | 2021-03-10 | 2022-09-19 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작 방법 |
KR102529761B1 (ko) | 2021-03-18 | 2023-05-09 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
KR102496994B1 (ko) | 2021-03-23 | 2023-02-09 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
KR20230023470A (ko) * | 2021-08-10 | 2023-02-17 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그의 딜레이 시간을 계산하는 모델을 최적화하는 호스트 장치 |
US20230064781A1 (en) * | 2021-08-31 | 2023-03-02 | Micron Technology, Inc. | Dynamic buffer limit for at-risk data |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7165129B1 (en) * | 2004-01-26 | 2007-01-16 | Cisco Technology, Inc. | Method and apparatus for self-tuning transaction batching |
CN102890653A (zh) * | 2011-07-18 | 2013-01-23 | 群联电子股份有限公司 | 指令执行方法、存储器控制器与存储器储存装置 |
CN103631728A (zh) * | 2012-08-27 | 2014-03-12 | 苹果公司 | 使用自适应压缩比率快速执行刷新命令 |
TW201536071A (zh) * | 2014-01-28 | 2015-09-16 | Univ King Abdullah Sci & Tech | 多點跳躍網路的緩衝器尺寸調整 |
CN105701029A (zh) * | 2014-11-25 | 2016-06-22 | 华为技术有限公司 | 一种异构存储优化方法及装置 |
CN106133709A (zh) * | 2014-02-27 | 2016-11-16 | 三星电子株式会社 | 用于防止存储器中的存储体冲突的方法和装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6842836B2 (en) * | 2001-11-07 | 2005-01-11 | Hewlett-Packard Development Company, L.P. | Streaming media cache filing |
JP4901310B2 (ja) | 2006-05-31 | 2012-03-21 | 株式会社日立製作所 | 記憶制御装置及び記憶制御装置のコマンド実行数制御方法 |
JP4679494B2 (ja) | 2006-11-22 | 2011-04-27 | Necシステムテクノロジー株式会社 | ディスクアレイ装置システム、ディスクアレイ装置制御方法、および、プログラム |
US8250197B2 (en) * | 2008-10-28 | 2012-08-21 | Vmware, Inc. | Quality of service management |
JP2011081769A (ja) * | 2009-09-14 | 2011-04-21 | Ricoh Co Ltd | データ転送装置、データ転送デバイスおよびデータ転送方法 |
US9959209B1 (en) * | 2010-03-23 | 2018-05-01 | Western Digital Technologies, Inc. | Data storage device adjusting command rate profile based on operating mode |
JP5535128B2 (ja) | 2010-12-16 | 2014-07-02 | 株式会社東芝 | メモリシステム |
JP5752267B2 (ja) * | 2011-01-11 | 2015-07-22 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | 同時要求スケジューリング |
US8996450B1 (en) | 2011-12-31 | 2015-03-31 | Teradata Us, Inc. | System and method for allocating resources in a mixed SSD and HDD storage environment |
US9274966B1 (en) | 2013-02-20 | 2016-03-01 | Western Digital Technologies, Inc. | Dynamically throttling host commands to disk drives |
US9229864B1 (en) * | 2013-03-15 | 2016-01-05 | Emc Corporation | Managing metadata synchronization for reducing host system latency in a storage system |
KR102147993B1 (ko) * | 2013-11-14 | 2020-08-25 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 동작 방법 |
US20160210060A1 (en) | 2015-01-21 | 2016-07-21 | HGST Netherlands B.V. | Dynamic resource allocation within storage devices |
US9575664B2 (en) | 2015-04-08 | 2017-02-21 | Prophetstor Data Services, Inc. | Workload-aware I/O scheduler in software-defined hybrid storage system |
US9639280B2 (en) * | 2015-06-18 | 2017-05-02 | Advanced Micro Devices, Inc. | Ordering memory commands in a computer system |
-
2017
- 2017-09-19 KR KR1020170120594A patent/KR102450514B1/ko active IP Right Grant
-
2018
- 2018-06-13 US US16/007,667 patent/US10824564B2/en active Active
- 2018-08-03 CN CN201810882420.5A patent/CN109522248B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7165129B1 (en) * | 2004-01-26 | 2007-01-16 | Cisco Technology, Inc. | Method and apparatus for self-tuning transaction batching |
CN102890653A (zh) * | 2011-07-18 | 2013-01-23 | 群联电子股份有限公司 | 指令执行方法、存储器控制器与存储器储存装置 |
CN103631728A (zh) * | 2012-08-27 | 2014-03-12 | 苹果公司 | 使用自适应压缩比率快速执行刷新命令 |
TW201536071A (zh) * | 2014-01-28 | 2015-09-16 | Univ King Abdullah Sci & Tech | 多點跳躍網路的緩衝器尺寸調整 |
CN106133709A (zh) * | 2014-02-27 | 2016-11-16 | 三星电子株式会社 | 用于防止存储器中的存储体冲突的方法和装置 |
CN105701029A (zh) * | 2014-11-25 | 2016-06-22 | 华为技术有限公司 | 一种异构存储优化方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109522248A (zh) | 2019-03-26 |
US10824564B2 (en) | 2020-11-03 |
US20190087332A1 (en) | 2019-03-21 |
KR20190032716A (ko) | 2019-03-28 |
KR102450514B1 (ko) | 2022-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522248B (zh) | 存储控制器的操作方法及储存设备的操作方法 | |
US10614888B2 (en) | Memory system that selectively writes in single-level cell mode or multi-level cell mode to reduce program/erase cycles | |
US9928169B2 (en) | Method and system for improving swap performance | |
US8463826B2 (en) | Incremental garbage collection for non-volatile memories | |
CN109254926B (zh) | 数据储存装置及非挥发式存储器操作方法 | |
US20180121354A1 (en) | Memory system | |
US11334493B2 (en) | Memory system and operating method thereof | |
CN106164873B (zh) | 当到达寿命终止条件时约束写入固态存储器的方法和装置 | |
US9396108B2 (en) | Data storage device capable of efficiently using a working memory device | |
CN112783424B (zh) | 存储装置及其控制方法 | |
JP5787451B2 (ja) | エミュレート電気的消去可能(eee)メモリおよび動作方法 | |
TWI712882B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN113986773A (zh) | 基于固态硬盘的写放大优化方法、装置及计算机设备 | |
CN110888820B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
CN108376051B (zh) | 数据存储装置 | |
US10564886B2 (en) | Methods and apparatus for controlling flash translation layer recycle from host | |
CN110888593B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
KR20150102329A (ko) | 데이터 저장 장치 | |
US10515693B1 (en) | Data storage apparatus and operating method thereof | |
US20190050154A1 (en) | Method, associated memory device and controller thereof for performing dynamic resource management | |
CN111796762B (zh) | 存储装置、控制器以及控制器的操作方法 | |
CN111966294B (zh) | 存储数据的方法、装置、设备及存储介质 | |
US11599298B1 (en) | Storage system and method for prediction-based pre-erase of blocks to improve sequential performance | |
US20240143208A1 (en) | Data storage device and method for determining buffer size of the data storage device | |
US20240126463A1 (en) | Data storage device and method for determining buffer size of the data storage device |
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 |