CN115373589A - 用于使用队列再填充时间的存储器系统配置的技术 - Google Patents
用于使用队列再填充时间的存储器系统配置的技术 Download PDFInfo
- Publication number
- CN115373589A CN115373589A CN202210447519.9A CN202210447519A CN115373589A CN 115373589 A CN115373589 A CN 115373589A CN 202210447519 A CN202210447519 A CN 202210447519A CN 115373589 A CN115373589 A CN 115373589A
- Authority
- CN
- China
- Prior art keywords
- queue
- command
- memory system
- memory
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3215—Monitoring of peripheral devices
- G06F1/3225—Monitoring of peripheral devices of memory devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0625—Power saving in storage systems
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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/0653—Monitoring storage devices or systems
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请涉及用于使用队列再填充时间的存储器系统配置的技术。存储器系统可从主机系统接收命令,并且可将所述命令添加到包含待由所述存储器系统执行的命令集合的命令队列。所述存储器系统可使用所述命令队列的至少一个队列标签的测量结果来确定所述命令队列的队列再填充时间,并且可响应于所述所确定队列再填充时间而调整所述命令队列的至少一个资源。在一些实例中,所述存储器系统可基于所述队列再填充时间而再分配先前分配到所述命令队列的处理或存储器资源、撤销激活先前分配到所述命令队列的处理或存储器资源、调整所述命令队列的阈值队列深度或其任何组合,以及其它选项。
Description
交叉参考
本专利申请要求由波尔齐奥(Porzio)等人于2021年4月28日提交的标题为“用于使用队列再填充时间的存储器系统配置的技术(TECHNIQUES FOR MEMORY SYSTEMCONFIGURATION USING QUEUE REFILL TIME)”的第17/243,321号美国专利申请的优先权,所述美国专利申请转让给本受让人,并且明确地以全文引用的方式并入本文中。
技术领域
本技术领域涉及用于使用队列再填充时间的存储器系统配置的技术。
背景技术
存储器装置广泛地用于将信息存储在例如计算机、用户装置、相机、数字显示器等各种电子装置中。通过将存储器装置内的存储器单元编程为各种状态来存储信息。举例来说,二进制存储器单元可编程为两个支持状态中的一个,常常对应于逻辑1或逻辑0。在一些实例中,单个存储器单元可支持多于两个可能状态,存储器单元可存储所述多于两个可能状态中的任一个。为了存取由存储器装置存储的信息,组件可读取或感测存储器装置内的一或多个存储器单元的状态。为了存储信息,组件可将存储器装置内的一或多个存储器单元写入或编程为对应状态。
存在各种类型的存储器装置,包含磁性硬盘、随机存取存储器(RAM)、只读存储器(ROM)、动态RAM(DRAM)、同步动态RAM(SDRAM)、静态RAM(SRAM)、铁电RAM(FeRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、快闪存储器、相变存储器(PCM)、3维交叉点存储器(3D交叉点)、或非(NOR)和与非(NAND)存储器装置等。存储器装置可为易失性或非易失性的。除非由外部电源周期性地刷新,否则易失性存储器单元(例如,DRAM单元)可能随时间推移而丢失其编程状态。非易失性存储器单元(例如,NAND存储器单元)即使在不存在外部电源的情况下仍可在很长一段时间内维持其编程状态。
发明内容
描述一种设备。在一些实例中,设备可包含存储器装置以及与存储器装置耦合的控制器。控制器可被配置成致使设备:从主机系统接收命令;将命令添加到命令队列,其中命令队列包含待由存储器系统执行的命令集合,并且其中命令集合中的每一个对应于命令队列的相应队列标签;基于命令队列的一个队列标签而测量命令队列的队列再填充时间;以及基于队列再填充时间而调整用于命令队列的至少一个资源。
描述一种存储代码的非暂时性计算机可读媒体。在一些实例中,代码可包含指令,所述指令在由电子装置的处理器执行时致使电子装置:从主机系统接收命令;将命令添加到命令队列,其中命令队列包含待由存储器系统执行的命令集合,并且其中命令集合中的每一个对应于命令队列的相应队列标签;基于命令队列的一个队列标签而测量命令队列的队列再填充时间;以及基于队列再填充时间而调整用于命令队列的至少一个资源。
描述一种方法。在一些实例中,方法可包含:从主机系统接收命令;将命令添加到命令队列,其中命令队列包含待由存储器系统执行的命令集合,并且其中命令集合中的每一个对应于命令队列的相应队列标签;基于命令队列的一个队列标签而测量命令队列的队列再填充时间;以及基于队列再填充时间而调整用于命令队列的至少一个资源。
附图说明
图1和2说明根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的系统的实例。
图3说明根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的命令队列配置的实例。
图4说明根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的过程流程的实例。
图5展示根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的存储器系统的框图。
图6展示说明根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的一或多种方法的流程图。
具体实施方式
与主机系统电子通信的存储器系统可从主机系统接收一或多个命令。举例来说,存储器系统可接收读取命令以读取存储器系统的存储器装置的一或多个存储器单元的逻辑状态或接收写入命令以将逻辑状态写入到存储器装置的一或多个存储器单元。一些存储器系统可能够每次执行多于一个命令或存储多于一个命令以供执行。在此类实例中,存储器系统可被配置成具有命令队列。命令队列可存储待由存储器系统执行或当前正由存储器系统执行(或两者)的命令的列表。命令队列的每一命令可与相应队列标签(例如,命令的列表的队列条目)相关联,其中命令队列中的队列标签的数量可被称为队列深度。如果存储器系统完成执行给定队列标签的命令,则存储器系统可从命令队列移除所述命令。主机系统可将新命令发送到存储器系统,并且存储器系统可用新命令再填充给定队列标签。用新命令再填充队列标签的时间可被称为再填充时间,并且命令队列可具有与命令队列的一或多个队列标签的再填充时间相关联的队列再填充时间。存储器系统可为命令队列分配某一数量的资源(例如,某一数量的处理功率和存储器资源)。然而,在命令队列的队列再填充时间期间,由于用于命令队列的资源的数量的潜在地不准确分配,所分配资源中的一些可能会未被使用,从而实际上降低存储器系统的效率。
为了高效地利用存储器系统的资源,存储器系统可响应于所测量队列再填充时间而再分配命令队列资源。在一些实例中,存储器系统可执行操作,例如运行测试,例如基准测试,以测量命令队列的队列再填充时间。在测试,例如基准测试期间,命令队列可填充到具体队列深度(例如,1、8或32的队列深度)。存储器系统可测量队列再填充时间作为命令的完成与来自基准测试的同一队列标签处的新命令的再插入之间的时间。一旦存储器系统确定队列再填充时间,存储器系统就可为命令队列再分配资源(例如,处理资源、存储器资源或两者、其它资源)。举例来说,存储器系统可在队列再填充时间期间使用命令队列资源来执行其它任务,或存储器系统可在队列再填充时间期间将处理功率减小一定量。在队列再填充时间的持续时间期间,存储器系统可通过减小与命令队列相关的一或多个时钟速度或减小供应到处理器的电压来减小处理功率。在一些其它实例中,存储器系统可不利用完整队列深度且可响应于队列再填充时间而调整队列深度。在此类实例中,存储器系统可调整命令队列资源以匹配所调整队列深度,并且可将额外资源再用于其它过程。另外或替代地,存储器系统可调整存储器装置并行度、用于存取存储器系统的存储器装置的命令的类型,或分配给命令队列的存储器单元的量。使用本文中所描述的方法,存储器系统可通过在队列再填充时间、队列深度和命令队列资源方面使资源使用与存储器系统能力相一致来改进系统效率。
首先在参考图1和2的系统和装置的上下文中描述本公开的特征。在参考图3的命令队列配置和参考图4的过程流程的上下文中描述本公开的额外特征。参考图5和6,本公开的这些和其它特征通过涉及用于使用队列再填充时间的存储器系统配置的技术的设备图和流程图的上下文来进一步说明,且在所述设备图和流程图的上下文中进行描述。
图1说明根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的系统100的实例。系统100包含与存储器系统110耦合的主机系统105。
存储器系统110可为或包含任何装置或装置集合,其中装置或装置集合包含至少一个存储器阵列。举例来说,存储器系统110可为或包含通用快闪存储(UFS)装置、嵌入式多媒体控制器(eMMC)装置、快闪装置、通用串行总线(USB)快闪装置、安全数字(SD)卡、固态驱动器(SSD)、硬盘驱动器(HDD)、双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM),或非易失性DIMM(NVDIMM),以及其它可能性。
系统100可包含在计算装置中,所述计算装置例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(IoT)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的任何其它计算装置。
系统100可包含主机系统105,其可与存储器系统110耦合。在一些实例中,此耦合可包含与主机系统控制器106的接口,所述主机系统控制器可为被配置成致使主机系统105根据如本文中所描述的实例执行各种操作的控制器或控制组件的实例。主机系统105可包含一或多个装置,并且在一些情况下,可包含处理器芯片组和通过处理器芯片组执行的软件堆栈。举例来说,主机系统105可包含被配置成用于与存储器系统110或其中的装置通信的应用程序。处理器芯片组可包含一或多个核心、一或多个高速缓存(例如,主机系统105本地的或包含在所述主机系统中的存储器)、存储器控制器(例如,NVDIMM控制器),以及存储协议控制器(例如,外围组件互连高速(PCIe)控制器、串行高级技术附件(SATA)控制器)。主机系统105可使用存储器系统110,例如,将数据写入到存储器系统110和从存储器系统110读取数据。虽然在图1中展示一个存储器系统110,但主机系统105可与任何数量的存储器系统110耦合。
主机系统105可经由至少一个物理主机接口与存储器系统110耦合。在一些情况下,主机系统105和存储器系统110可被配置成使用相关联协议经由物理主机接口通信(例如,以在存储器系统110与主机系统105之间交换或以其它方式传达控制、地址、数据和其它信号)。物理主机接口的实例可包含但不限于SATA接口、UFS接口、eMMC接口、PCIe接口、USB接口、光纤通道接口、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、双数据速率(DDR)接口、DIMM接口(例如,支持DDR的DIMM套接接口)、开放NAND快闪接口(ONFI),以及低功率双数据速率(LPDDR)接口。在一些实例中,一或多个此类接口可包含在主机系统105的主机系统控制器106与存储器系统110的存储器系统控制器115中或以其它方式在其之间得到支持。在一些实例中,主机系统105可经由用于包含在存储器系统110中的每一存储器装置130的相应物理主机接口,或经由用于包含在存储器系统110中的每一类型的存储器装置130的相应物理主机接口与存储器系统110耦合(例如,主机系统控制器106可与存储器系统控制器115耦合)。
存储器系统110可包含存储器系统控制器115和一或多个存储器装置130。存储器装置130可包含任何类型的存储器单元(例如,非易失性存储器单元、易失性存储器单元,或其任何组合)的一或多个存储器阵列。虽然图1的实例中展示两个存储器装置130-a和130-b,但存储器系统110可包含任何数量的存储器装置130。此外,如果存储器系统110包含多于一个存储器装置130,则存储器系统110内的不同存储器装置130可包含相同或不同类型的存储器单元。
存储器系统控制器115可与主机系统105耦合和通信(例如,经由物理主机接口),并且可为被配置成致使存储器系统110根据如本文中所描述的实例执行各种操作的控制器或控制组件的实例。存储器系统控制器115还可与存储器装置130耦合和通信以在存储器装置130处执行一般可被称作存取操作的操作,例如读取数据、写入数据、擦除数据,或刷新数据,以及其它此类操作。在一些情况下,存储器系统控制器115可从主机系统105接收命令且与一或多个存储器装置130通信以(例如,在一或多个存储器装置130内的存储器阵列处)执行此类命令。举例来说,存储器系统控制器115可从主机系统105接收命令或操作,并且可将命令或操作转换成指令或适当的命令,以实现对存储器装置130的所要存取。在一些情况下,存储器系统控制器115可与主机系统105和一或多个存储器装置130交换数据(例如,响应于或以其它方式结合来自主机系统105的命令)。举例来说,存储器系统控制器115可将与存储器装置130相关联的响应(例如,数据包或其它信号)转换成用于主机系统105的对应信号。
存储器系统控制器115可被配置成用于与存储器装置130相关联的其它操作。举例来说,存储器系统控制器115可执行或管理操作,例如耗损均衡操作、垃圾收集操作、例如错误检测操作或错误校正操作的错误控制操作、加密操作、高速缓存操作、媒体管理操作、后台刷新、健康监测,以及与来自主机系统105的命令相关联的逻辑地址(例如,逻辑块地址(LBA))和与存储器装置130内的存储器单元相关联的物理地址(例如,物理块地址)之间的地址翻译。
存储器系统控制器115可包含硬件,例如一或多个集成电路或离散组件、缓冲存储器,或其组合。硬件可包含具有专用(例如,硬译码)逻辑的电路系统,以执行本文中归于存储器系统控制器115的操作。存储器系统控制器115可为或包含微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP)),或任何其它合适的处理器或处理电路系统。
存储器系统控制器115还可包含本地存储器120。在一些情况下,本地存储器120可包含只读存储器(ROM)或其它存储器,其可存储可由存储器系统控制器115执行的操作代码(例如,可执行指令)以执行本文中归于存储器系统控制器115的功能。在一些情况下,本地存储器120可另外或替代地包含静态随机存取存储器(SRAM)或其它存储器,其可由存储器系统控制器115用于例如与本文中归于存储器系统控制器115的功能相关的内部存储或运算。另外或替代地,本地存储器120可充当用于存储器系统控制器115的高速缓存。举例来说,如果从存储器装置130读取或写入到所述存储器装置,则数据可存储在本地存储器120中,并且所述数据可在本地存储器120中可用,以供主机系统105根据高速缓存策略进行后续检索或操纵(例如,更新)(例如,相对于存储器装置130的时延减少)。
虽然图1中的存储器系统110的实例已说明为包含存储器系统控制器115,但在一些情况下,存储器系统110可不包含存储器系统控制器115。举例来说,存储器系统110可另外或替代地依赖于外部控制器(例如,由主机系统105实施)或可分别在存储器装置130内部的一或多个本地控制器135,以执行本文中归于存储器系统控制器115的功能。一般来说,本文中归于存储器系统控制器115的一或多个功能可在一些情况下改为由主机系统105、本地控制器135或其任何组合执行。在一些情况下,至少部分地由存储器系统控制器115管理的存储器装置130可被称作受管理存储器装置。受管理存储器装置的实例为受管理NAND(MNAND)装置。
存储器装置130可包含非易失性存储器单元的一或多个阵列。举例来说,存储器装置130可包含NAND(例如,NAND快闪)存储器、ROM、相变存储器(PCM)、自选存储器、其它基于硫族化物的存储器、铁电随机存取存储器(RAM)(FeRAM)、磁性RAM(MRAM)、NOR(例如,NOR快闪)存储器、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、电可擦除可编程ROM(EEPROM),或其任何组合。另外或替代地,存储器装置130可包含易失性存储器单元的一或多个阵列。举例来说,存储器装置130可包含RAM存储器单元,例如动态RAM(DRAM)存储器单元和同步DRAM(SDRAM)存储器单元。
在一些实例中,存储器装置130可(例如,在同一裸片上或在同一封装内)包含本地控制器135,其可对相应存储器装置130的一或多个存储器单元执行操作。本地控制器135可结合存储器系统控制器115操作,或可执行本文中归于存储器系统控制器115的一或多个功能。举例来说,如图1中所说明,存储器装置130-a可包含本地控制器135-a,并且存储器装置130-b可包含本地控制器135-b。
在一些情况下,存储器装置130可为或包含NAND装置(例如,NAND快闪装置)。存储器装置130可为或包含存储器裸片160。举例来说,在一些情况下,存储器装置130可为包含一或多个裸片160的封装。在一些实例中,裸片160可为从晶片切割的一块电子级半导体(例如,从硅晶片切割的硅裸片)。每一裸片160可包含一或多个平面165,并且每一平面165可包含相应的块170的集合,其中每一块170可包含相应的页175的集合,并且每一页175可包含存储器单元集合。
在一些情况下,NAND存储器装置130可包含被配置成各自存储一个信息位的存储器单元,其可被称作单层级单元(SLC)。另外或替代地,NAND存储器装置130可包含被配置成各自存储多个信息位的存储器单元,如果被配置成各自存储两个信息位,则其可被称作多层级单元(MLC),如果被配置成各自存储三个信息位,则其可被称作三层级单元(TLC),如果被配置成各自存储四个信息位,则其可被称作四层级单元(QLC),或更一般地被称作多层级存储器单元。相对于SLC存储器单元,多层级存储器单元可提供更大的存储密度,但在一些情况下,可涉及用于支持电路系统的更窄读取或写入容限或更大复杂性。
在一些情况下,平面165可指块170的群组,并且在一些情况下,可在不同平面165内发生并行操作。举例来说,可对不同块170内的存储器单元执行并行操作,只要不同块170处于不同平面165中即可。在一些情况下,在不同平面165中执行并行操作可受制于一或多个限制,例如对不同页175内的存储器单元执行并行操作,所述存储器单元在其相应平面165内具有相同页地址(例如,与命令解码、页地址解码电路系统,或跨越平面165共享的其它电路系统相关)。
在一些情况下,块170可包含组织成行(页175)和列(例如,串,未展示)的存储器单元。举例来说,同一页175中的存储器单元可共享共同字线(例如,与其耦合),并且同一串中的存储器单元可共享共同数字线(其可替代地被称作位线)(例如,与其耦合)。
对于一些NAND架构,存储器单元可在第一粒度级别(例如,在页粒度级别)读取和编程(例如,写入),但可在第二粒度级别(例如,在块粒度级别)擦除。也就是说,页175可为可独立地编程或读取(例如,作为单个编程或读取操作的部分同时编程或读取)的存储器(例如,存储器单元集合)的最小单元,并且块170可为可独立地擦除(例如,作为单个擦除操作的部分同时擦除)的存储器(例如,存储器单元集合)的最小单元。此外,在一些情况下,NAND存储器单元可在可用新数据重新写入之前被擦除。因此,举例来说,在一些情况下,可直到包含页175的整个块170已被擦除才更新已使用的页175。
系统100可包含支持用于使用队列再填充时间的存储器系统配置的技术的任何数量的非暂时性计算机可读媒体。举例来说,主机系统105、存储器系统控制器115或存储器装置130可包含或以其它方式可存取一或多个非暂时性计算机可读媒体,所述非暂时性计算机可读媒体存储指令(例如,固件)以执行本文中归于主机系统105、存储器系统控制器115或存储器装置130的功能。举例来说,如果由主机系统105(例如,由主机系统控制器106)、由存储器系统控制器115,或由存储器装置130(例如,由本地控制器135)执行,则此类指令可致使主机系统105、存储器系统控制器115或存储器装置130执行如本文中所描述的一或多个相关联功能。
在一些情况下,存储器系统110可利用存储器系统控制器115以提供受管理存储器系统,所述受管理存储器系统可包含例如一或多个存储器阵列和与本地(例如,裸片上或封装中)控制器(例如,本地控制器135)组合的相关电路系统。受管理存储器系统的实例为MNAND系统。
在一些实例中,存储器系统110可在给定时间从主机系统105接收多个命令,并且可将所述多个命令存储在命令队列中。命令队列可为运行中命令(例如,正由存储器系统110执行或待由所述存储器系统执行的命令)的列表的实例。命令队列的每一命令可与相应队列标签相关联,并且在给定时间存在于命令队列中的命令的数量可被称作队列深度。一旦存储器系统110执行存储在给定队列标签处的命令,给定标签处的命令就可从命令队列移除,并且新命令可在给定队列标签处添加到命令队列。在一些实例中,系统100可花费时间以用新命令再填充给定队列标签。在此时间期间,分配给命令队列的资源的至少部分可能会未被使用。举例来说,与处理命令队列相关的资源的子集可能会未被使用,从而导致存储器系统110处的功率消耗不具有对应性能增益。
如本文中所描述,存储器系统110可测量命令队列的队列再填充时间,并且可响应于队列再填充时间而调整用于命令队列的资源。在一些实例中,存储器系统110可测量命令队列的队列标签中的一或多个的再填充时间。也就是说,存储器系统110可测量完成具体队列标签的命令的执行与在具体队列标签处插入新命令之间的时间。在一些实例中,存储器系统110可对一或多个队列标签的再填充时间求平均,并且将所述平均值设置为队列再填充时间。在另一实例中,存储器系统110可确定一或多个队列标签的最快再填充时间,并且可将所述最快再填充时间设置为队列再填充时间。在一些实例中,队列再填充时间可经更新以反映对存储器系统110或主机系统105的改变。一旦存储器系统110确定队列再填充时间,存储器系统110就可响应于队列再填充时间而调整用于命令队列的资源。举例来说,存储器系统可响应于队列再填充时间而调整用于命令队列的处理资源。另外或替代地,存储器系统110可响应于队列再填充时间而调整命令队列的队列深度,并且继而可调整用于命令队列的资源以支持所调整队列深度。存储器系统110可响应于所调整队列深度而调整存储器装置130的并行度、用于从存储器装置130读取数据的读取命令的类型、分配到命令队列的存储器资源,或其任何组合。本文中所描述的方法可允许存储器系统110满足阈值性能而无过量功率消耗。
图2说明根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的系统200的实例。系统200可为如参考图1或其方面所描述的系统100的实例。系统200可包含存储器系统210,其配置成存储从主机系统205接收到的数据,并且如果由主机系统205使用存取命令(例如,读取命令或写入命令)来请求,则将数据发送到主机系统205。系统200可实施如参考图1所描述的系统100的方面。举例来说,存储器系统210和主机系统205可分别为存储器系统110和主机系统105的实例。
如本文中所描述,存储器系统210可包含存储器装置240,以例如响应于从主机系统205接收到存取命令而存储在存储器系统210与主机系统205之间传送的数据。存储器装置240可包含如参考图1所描述的一或多个存储器装置。举例来说,存储器装置240可包含NAND存储器、PCM、自选存储器、3D交叉点、其它基于硫族化物的存储器、FERAM、MRAM、NOR(例如,NOR快闪)存储器、STT-MRAM、CBRAM、RRAM,或OxRAM。
存储器系统210可包含存储控制器230以用于控制直接进出存储器装置240的数据的传递,例如,用于存储数据、检索数据,和确定待将数据存储在其中和待从其检索数据的存储器位置。存储控制器230可使用特定针对每一类型的存储器装置240的协议直接地或经由总线(未展示)与存储器装置240通信。在一些情况下,单个存储控制器230可用于控制相同或不同类型的多个存储器装置240。在一些情况下,存储器系统210可包含多个存储控制器230,例如,用于每一类型的存储器装置240的不同存储控制器230。在一些情况下,存储控制器230可实施如参考图1所描述的本地控制器135的方面。
存储器系统210可另外包含用于与主机系统205通信的接口220,和用于暂时存储在主机系统205与存储器装置240之间传送的数据的缓冲器225。接口220、缓冲器225和存储控制器230可用于在主机系统205与存储器装置240之间翻译数据(例如,如由数据路径250所展示),并且可共同地被称作数据路径组件。
在传送期间使用缓冲器225暂时存储数据可允许在处理命令时缓冲数据,由此减少命令之间的时延且允许与命令相关联的任意数据大小。这还可允许处置命令突发,并且一旦突发停止,就可存储或传输所缓冲数据(或两者)。缓冲器225可包含相对快速的存储器(例如,一些类型的易失性存储器,例如SRAM或DRAM),或硬件加速器或两者,以允许快速地将数据存储到缓冲器225和从所述缓冲器检索数据。缓冲器225可包含用于缓冲器225与其它组件之间的双向数据传送的数据路径切换组件。
数据在缓冲器225内的暂时存储可指在执行存取命令期间数据在缓冲器225中的存储。也就是说,在完成存取命令后,相关联数据可不再维持在缓冲器225中(例如,可用额外存取命令的数据覆写)。另外,缓冲器225可为非高速缓存缓冲器。也就是说,主机系统205不可直接从缓冲器225读取数据。举例来说,读取命令可添加到队列,而无需将地址与已在缓冲器225中的地址进行匹配的操作(例如,无需高速缓存地址匹配或查找操作)。
存储器系统210可另外包含用于执行从主机系统205接收到的命令且在移动数据时控制数据路径组件的存储器系统控制器215。存储器系统控制器215可为如参考图1所描述的存储器系统控制器115的实例。总线235可用于在系统组件之间通信。
在一些情况下,一或多个队列(例如,命令队列260、缓冲器队列265,以及存储队列270)可用于控制存取命令的处理和对应数据的移动。这在例如由存储器系统210同时处理来自主机系统205的多于一个存取命令的情况下可为有益的。作为可能实施方案的实例,分别在接口220、存储器系统控制器215和存储控制器230处描绘命令队列260、缓冲器队列265和存储队列270。然而,队列(如果使用)可位于存储器系统210内的任何位置。
在主机系统205与存储器装置240之间传送的数据可在存储器系统210中采用与非数据信息(例如,命令、状态信息)不同的路径。举例来说,存储器系统210中的系统组件可使用总线235彼此通信,而数据可通过数据路径组件而非总线235使用数据路径250。存储器系统控制器215可通过经由总线235与数据路径组件通信(例如,使用特定针对存储器系统210的协议)而控制如何和是否在主机系统205与存储器装置240之间传送数据。另外或替代地,存储器系统210可包含数据总线280。数据总线280可支持数据路径250或为所述数据路径的实例。数据总线280可允许在存储器系统210中的系统组件的子集之间传送数据。举例来说,数据总线280可连接到缓冲器225、接口220、存储控制器230或组件的这些或另一子集的某一组合,并且可允许缓冲器225、接口220、存储控制器230或这些或其它组件的某一组合交换数据。
如果主机系统205将存取命令传输到存储器系统210,则接口220可例如根据协议(例如,UFS协议或eMMC协议)接收命令。因此,接口220可被视为存储器系统210的前端。在接收到每一存取命令后,接口220就可例如经由总线235将命令传达到存储器系统控制器215。在一些情况下,可通过接口220将每一命令添加到命令队列260,以将命令传达到存储器系统控制器215。
存储器系统控制器215可确定是否已根据来自接口220的通信而接收到存取命令。在一些情况下,存储器系统控制器215可确定已通过从命令队列260检索到命令而接收到存取命令。在例如已由存储器系统控制器215从命令队列260检索命令之后,可将所述命令从命令队列移除。在一些情况下,存储器系统控制器215可致使接口220例如经由总线235从命令队列260移除命令。
在确定已接收到存取命令后,存储器系统控制器215就可执行存取命令。对于读取命令,这可意谓从存储器装置240获得数据以及将数据传输到主机系统205。对于写入命令,这可意谓从主机系统205接收数据并将数据移动到存储器装置240。
在任一情况下,存储器系统控制器215可将缓冲器225尤其用于从主机系统205接收到的或发送到所述主机系统的数据的暂时存储。缓冲器225可被视为存储器系统210的中端。在一些情况下,缓冲器地址管理(例如,指向缓冲器225中的地址位置的指针)可由接口220、缓冲器225或存储控制器230中的硬件(例如,专用电路)执行。
为了处理从主机系统205接收到的写入命令,存储器系统控制器215可首先确定缓冲器225是否具有足够可用空间以存储与命令相关联的数据。举例来说,存储器系统控制器215可例如经由固件(例如,控制器固件)确定缓冲器225内可用于存储与写入命令相关联的数据的空间量。
在一些情况下,缓冲器队列265可用于控制与存储在缓冲器225中的数据相关联的命令流,所述命令流包含写入命令。缓冲器队列265可包含与当前存储在缓冲器225中的数据相关联的存取命令。在一些情况下,命令队列260中的命令可通过存储器系统控制器215移动到缓冲器队列265,并且可在相关联数据存储在缓冲器225中的同时保持在缓冲器队列265中。在一些情况下,缓冲器队列265中的每一命令可与缓冲器225处的地址相关联。也就是说,可维持指示与每一命令相关联的数据存储在缓冲器225中何处的指针。使用缓冲器队列265,可从主机系统205依序接收多个存取命令且可同时处理存取命令的至少部分。
如果缓冲器225具有足够空间以存储写入数据,则存储器系统控制器215可致使接口220例如根据协议(例如,UFS协议或eMMC协议)将可用性的指示传输到主机系统205(例如,“准备好传送”指示)。在接口220随后从主机系统205接收与写入命令相关联的数据时,接口220可使用数据路径250将数据传送到缓冲器225以供暂时存储。在一些情况下,接口220可从缓冲器225或缓冲器队列265获得缓冲器225内待存储数据的位置。接口220可例如经由总线235向存储器系统控制器215指示是否已完成到缓冲器225的数据传送。
在写入数据已通过接口220存储在缓冲器225中之后,数据可从缓冲器225传送出来且存储在存储器装置240中。这可使用存储控制器230完成。举例来说,存储器系统控制器215可致使存储控制器230使用数据路径250从缓冲器225检索数据并将数据传送到存储器装置240。存储控制器230可被视为存储器系统210的后端。存储控制器230可例如经由总线235向存储器系统控制器215指示已完成到存储器装置240中的存储器装置的数据传送。
在一些情况下,存储队列270可用于辅助写入数据的传送。举例来说,存储器系统控制器215可将写入命令从缓冲器队列265推送(例如,经由总线235)到存储队列270以供处理。存储队列270可包含用于每一存取命令的条目。在一些实例中,存储队列270可另外包含:缓冲器指针(例如,地址),其可指示缓冲器225中存储与命令相关联的数据的位置;以及存储指针(例如,地址),其可指示存储器装置240中与数据相关联的位置。在一些情况下,存储控制器230可从缓冲器225、缓冲器队列265或存储队列270获得缓冲器225内待从其获得数据的位置。存储控制器230可管理存储器装置240内用于存储数据(例如,执行耗损均衡、垃圾收集等)的位置。条目可例如通过存储器系统控制器215添加到存储队列270。在完成数据的传送后,条目就可例如通过存储控制器230或存储器系统控制器215从存储队列270移除。
为了处理从主机系统205接收到的读取命令,存储器系统控制器215可再次首先确定缓冲器225是否具有足够可用空间以存储与命令相关联的数据。举例来说,存储器系统控制器215可例如经由固件(例如,控制器固件)确定在缓冲器225内可用于存储与读取命令相关联的数据的空间量。
在一些情况下,缓冲器队列265可用于以与上文关于写入命令所论述的类似方式来辅助与读取命令相关联的数据的缓冲器存储。举例来说,如果缓冲器225具有足够空间以存储读取数据,则存储器系统控制器215可致使存储控制器230从存储器装置240检索与读取命令相关联的数据且使用数据路径250将数据存储在缓冲器225中以用于暂时存储。存储控制器230可例如经由总线235向存储器系统控制器215指示已完成到缓冲器225的数据传送。
在一些情况下,存储队列270可用于辅助读取数据的传送。举例来说,存储器系统控制器215可将读取命令推送到存储队列270以供处理。在一些情况下,存储控制器230可从缓冲器225或存储队列270获得存储器装置240内的从其检索数据的位置。在一些情况下,存储控制器230可从缓冲器队列265获得缓冲器225内待存储数据的位置。在一些情况下,存储控制器230可从存储队列270获得缓冲器225内待存储数据的位置。在一些情况下,存储器系统控制器215可将由存储队列270处理的命令移动回到命令队列260。
在数据已通过存储控制器230存储在缓冲器225中之后,数据可从缓冲器225传送出来且发送到主机系统205。举例来说,存储器系统控制器215可致使接口220使用数据路径250从缓冲器225检索数据,并且例如根据协议(例如,UFS协议或eMMC协议)将数据传输到主机系统205。举例来说,接口220可处理来自命令队列260的命令,并且可例如经由总线235向存储器系统控制器215指示已完成到主机系统205的数据传输。
存储器系统控制器215可根据次序(例如,根据命令队列260的次序的先进先出次序)执行所接收命令。对于每一命令,存储器系统控制器215可致使对应于命令的数据移动进出缓冲器225,如上文所论述。在数据移动到缓冲器225中且存储在所述缓冲器内时,命令可保持在缓冲器队列265中。如果已完成命令的处理(例如,如果已从缓冲器225传送出对应于存取命令的数据),则可例如通过存储器系统控制器215从缓冲器队列265移除命令。如果从缓冲器队列265移除命令,则先前存储与所述命令相关联的数据的地址可用于存储与新命令相关联的数据。
存储器系统控制器215可另外被配置成用于与存储器装置240相关联的操作。举例来说,存储器系统控制器215可执行或管理操作,例如耗损均衡操作、垃圾收集操作、例如错误检测操作或错误校正操作的错误控制操作、加密操作、高速缓存操作、媒体管理操作、后台刷新、健康监测,以及与来自主机系统205的命令相关联的逻辑地址(例如,LBA)和与存储器装置240内的存储器单元相关联的物理地址(例如,物理块地址)之间的地址翻译。也就是说,主机系统205可发布指示一或多个LBA的命令,并且存储器系统控制器215可识别由LBA指示的一或多个物理块地址。在一些情况下,一或多个连续LBA可对应于非连续的物理块地址。在一些情况下,存储控制器230可被配置成结合或代替存储器系统控制器215执行以上操作中的一或多个。在一些情况下,存储器系统控制器215可执行存储控制器230的功能,并且可省略存储控制器230。
如本文中所描述,存储器系统210可根据命令队列260的队列再填充时间而调整用于命令队列260的资源。存储器系统210可在某一时间从主机系统205接受多个命令,并且可将所述多个命令推送到命令队列260中。命令队列260的每一命令可对应于相应队列标签,并且在给定时间在命令队列260中的命令的数量可被称作队列深度。在一些实例中,存储器系统210的阈值队列深度可为32。也就是说,存储器系统210可将存储器资源分配到命令队列260,使得存储在命令队列260处的命令的数量可不超过32。
在一些实例中,存储器系统210可通过执行基准测试而确定命令队列260的队列再填充时间。基准测试可用于确定具体队列深度处(例如,在队列深度1、8、32或某一其它队列深度处)的存储器系统210的阈值性能。在基准测试期间,主机系统205可将多个命令(例如,用于随机读取基准的读取命令、用于随机写入基准测试的写入命令,或某一其它命令集合)发送到存储器系统210,以将命令队列260填充到具体队列深度。
在命令队列260被填满(例如,到具体队列深度)之后,存储器系统210可测量命令队列的一或多个队列标签的再填充时间。再填充时间可测量在先前存储在给定队列标签处的命令通过存储器系统210执行之后接口220在给定队列标签处插入新命令的时间。在一些实例中,存储器系统210可对一或多个队列标签的再填充时间求平均,并且将命令队列260的队列再填充时间设置为平均值。在一些其它实例中,存储器系统210可将命令队列260的队列再填充时间设置为一或多个队列标签的所测量再填充时间中的最快再填充时间。在一些实例中,存储器系统210可使用一或多个计时器(或一或多个时钟)来测量一或多个队列标签的再填充时间。在一些实例中,一或多个计时器可包含在接口220处,并且一或多个队列标签中的每一队列标签可与计时器(例如,相同计时器或不同计时器)相关联。给定队列标签的计时器可在接收到指示存储器系统210已执行给定队列标签的命令的完成信号(例如,从存储器系统控制器215)后就启动,并且在新命令插入在给定队列标签处之后停止。替代地,可使用所存储时戳(例如,指示命令在给定队列标签处从命令队列260移除的时戳和指示命令在给定队列标签处插入到命令队列260的时戳)来计算再填充时间。在一些实例中,再填充时间测量结果275(例如,一或多个队列标签的所测量再填充时间、命令队列260的队列再填充时间,或两者)可通过存储器系统210存储在例如接口220、存储器系统控制器215、一或多个存储器装置240,或其某一组合处。类似地,命令队列260可存储在接口220、存储器系统控制器215,或存储器系统210的另一组件处(例如,在高速缓存,例如SRAM高速缓存中)。
在一些实例中,存储器系统210可随时间推移而更新命令队列260。举例来说,存储器系统210可执行第二基准测试且确定第二队列再填充时间。如果第二队列再填充时间不同于队列再填充时间,则存储器系统210可更新队列再填充时间以反映第二队列再填充时间(例如,在再填充时间测量结果275中)。
在存储器系统210确定命令队列260的队列再填充时间之后,存储器系统210可调整用于命令队列260的一或多个资源。在一些实例中,存储器系统210可响应于队列再填充时间而调整用于命令队列260的处理资源。举例来说,存储器系统210可在队列再填充时间的持续时间内将与命令队列260相关联的处理资源的部分再分配到其它任务。在一些实例中,存储器系统210可再分配处理资源以执行不同于正再填充的队列标签的队列标签。在另一实例中,存储器系统210可减小在队列再填充时间期间分配给命令队列的处理资源的数量。举例来说,存储器系统210可在队列再填充时间的持续时间内针对一或多个组件(例如,CPU、内部系统总线、低密度奇偶校验(LDPC)引擎,或开放NAND快闪接口(ONFI))减小(或门控)与命令队列260相关的一或多个时钟速度,或减小供应到处理器(例如,CPU)的电压。在一些实例中,可根据队列再填充时间而缩放时钟速度或电压可减小的数量。也就是说,队列再填充时间越快,时钟速度和电压可减小得越少。
在一些实例中,存储器系统210可响应于队列再填充时间而调整命令队列260的队列深度,并且存储器系统210可根据所调整队列深度而对应地调整用于命令队列260的资源。在一些实例中,存储器系统210可能不会始终如一地达到命令队列260的如通过基准测试指定的队列深度或阈值队列深度(例如,32的最大队列深度)。举例来说,存储器系统210可在接口220正填充命令队列260时执行命令队列260的命令。作为实例,基准测试的具体队列深度可为32,但命令队列260可能通常未能达到小于32的队列深度。举例来说,虽然分配给命令队列260的资源支持32的阈值队列深度,但在实际执行中,存储器系统210可用命令将命令队列260加载到不同阈值队列深度(例如,16的实际操作最大队列深度)。在此类实例中,存储器系统210可减少命令队列260的阈值队列深度(例如,最大队列深度)。举例来说,存储器系统210可将阈值队列深度从第一阈值队列深度(例如,32的阈值队列深度)减少到小于32的阈值队列深度(例如,16的阈值队列深度)。在一些实例中,存储器系统210可根据基准测试,或更具体地说,所测量队列再填充时间而预测命令队列260的阈值队列深度,并且可将阈值队列深度调整到所预测阈值队列深度。
在存储器系统210调整命令队列260的阈值队列深度之后,存储器系统210可调整用于命令队列260的资源以匹配所调整阈值队列深度。在一些实例中,存储器系统210可调整存储器装置240的并行度以匹配所调整阈值队列深度。也就是说,存储器系统210可接通或切断一或多个存储器装置240,以用于处置命令队列260的存取命令,以支持所调整阈值队列深度。在一些实例中,存储器系统210可将阈值队列深度从第一队列深度调整到第二队列深度,其中第一队列深度大于第二队列深度。在此类实例中,存储器系统210可切断一或多个存储器装置240(或另外,撤销激活到一或多个存储器装置240的一或多个连接)。可接通或切断的存储器装置240的数量可取决于第一队列深度与第二队列深度之间的差。在一些实例中,如果存储器系统210包含并行地操作的多个处理器(例如,CPU),则存储器系统210可类似地响应于所调整阈值队列深度而调整处理器的并行度(例如,响应于减小命令队列260的阈值队列深度而撤销激活一或多个处理器)。
在一些实例中,用于存取存储器装置240的读取算法可经改变以支持所调整阈值队列深度。也就是说,存储器系统210可调整针对给定读取命令从存储器装置240读取的数据量。对于低于阈值的队列深度,存储器系统210可利用高速缓存读取(例如,感测和检索1到4页的数据),并且对于低于不同阈值的队列深度,存储器系统210可利用快速读取(感测和检索高达4千字节(KB)的数据)。在一些实例中,存储器系统210可调整用于命令队列260的存储器资源以支持所调整阈值队列深度。举例来说,存储器系统210可调整分配到存储器系统210的高速缓存大小(例如,SRAM高速缓存大小)。命令队列260可存储在高速缓存中,并且如果阈值队列深度减小,则存储器系统210可减小高速缓存大小。替代地,存储器系统210可再分配高速缓存(例如,初始地分配到高速缓存或高速缓存管理的资源)以服务于不与主机数据管理相关联的其它操作。
在一些实例中,存储器系统210可存储查找表,所述查找表包含队列再填充时间和针对队列再填充时间的相关联调整(例如,资源调整)。存储器系统210可将查找表存储在接口220、存储器系统控制器215或一或多个存储器装置240处。查找表可包含队列再填充时间的集合(例如,队列再填充时间的范围),并且队列再填充时间的集合中的每一队列再填充可包含如何调整处理器的时钟速度、处理器的电压、命令队列260的阈值队列深度、存储器装置240的并行度、处理器的并行度、用于存取存储器装置240的读取命令的类型、存储器系统210的高速缓存大小或其某一组合的指示。如果存储器系统210确定队列再填充时间,则存储器系统210可将所述队列再填充时间与查找表的队列再填充时间进行比较,并且可相应地调整用于命令队列260的资源。通过响应于所测量队列再填充时间而调整用于命令队列260的资源,存储器系统210可在效率和功率消耗方面提高存储器系统210的性能。另外,如果队列再填充时间动态地改变,则存储器系统210可确定所更新队列再填充时间且可对应地更新针对命令队列260的资源调整,从而支持对响应于命令队列260使用的改变而对队列资源管理的运作中更新。
图3说明根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的命令队列配置300的实例。在一些实例中,命令队列配置300可实施系统100和系统200的特征。举例来说,命令队列305和表325可为如参考图2所描述的命令队列260和再填充时间测量结果275的实例。在一些实例中,命令队列305可位于存储器系统与主机系统之间的接口处。接口可经由连接315-a与主机系统耦合,并且接口可经由连接315-b与存储器系统或存储器系统的组件耦合。在一些情况下,命令队列305可存储在存储器系统的高速缓存(例如,SRAM高速缓存)或存储器系统控制器处。在一些实例中,命令队列305可包含多个队列标签310(例如,32个队列标签)。
如参考图2所描述,存储器系统可经历基准测试以确定命令队列305的队列再填充时间。在基准测试期间,接口可经由连接315-a从主机系统接收多个命令以加载到命令队列305中。举例来说,存储器系统可接收多个命令且可在具体队列标签310(例如,对于32的阈值队列深度,队列标签0、1、2、3、4、5和至多31)处将每一命令添加到命令队列305。
在一些实例中,存储器系统可执行存储在命令队列305处的命令。举例来说,存储器系统可执行队列标签2处的命令。在命令的执行后,存储器系统就可从队列标签310移除命令,并且记录与移除所述命令相关联的第一时戳。举例来说,存储器系统可在队列标签2处从命令队列305移除命令,并且在表325中记录与在队列标签2(例如,t2,2)处从命令队列305移除命令相关联的时戳。在从命令队列305移除命令之后,存储器系统可在同一队列标签310处将新命令添加到命令队列305,并且可记录与将所述命令添加到命令队列305相关联的第二时戳。举例来说,存储器系统可在队列标签2处将新命令添加到命令队列305,并且记录与在队列标签2(例如,t2,1)处将所述新命令添加到命令队列305相关联的时戳。在存储器系统确定给定队列标签310的第一时戳和第二时戳之后,存储器系统或主机系统可通过计算第二时戳与第一时戳之间的差(Δt)来确定给定队列标签310的再填充时间。
在一些实例中,存储器系统可将第一时戳、第二时戳和再填充时间中的一个或全部存储在表325中。表325可为如参考图2所描述的再填充时间测量结果275的实例。表325可包含一定数量的列,其中每一列对应于命令队列305的不同队列标签310,使得存储器系统可记录并存储命令队列305的每一队列标签310的第一时戳、第二时戳和再填充时间(例如,对于32的阈值队列深度,有32个列)。在一些实例中,存储器系统可执行第二基准测试,并且更新表325的第一时戳、第二时戳和再填充时间的值作为第二基准测试的结果。在一些实例中,可根据与图3中所说明的格式不同的格式而存储表325。
在一些实例中,存储器系统或主机系统可基于存储在表325中的值而确定命令队列305的队列再填充时间(例如,使用所述值计算所述队列再填充时间)。举例来说,存储器系统可选择具有最低值的表325的再填充时间,并且将所述最低值设置为命令队列305的队列再填充时间。在一些实例中,存储器系统或主机系统可对表325的再填充时间求平均,并且将所述平均值设置为命令队列305的队列再填充时间。使用队列再填充时间,存储器系统可调整用于命令队列305的资源。举例来说,存储器系统可在队列再填充时间期间调整内部时钟速度,或在队列再填充时间期间将处理资源再分配到其它任务,如参考图2所论述。
另外或替代地,存储器系统可响应于队列再填充时间而调整命令队列305的队列深度(例如,阈值队列深度)。在基准测试期间,存储器系统可将命令添加到命令队列305,使得达到具体队列深度(例如,达到32的队列深度)。但是,在一些情况下,在存储器系统处于填充命令队列305的过程中时,可由存储器系统执行命令。举例来说,存储器系统可将命令队列305填充到队列标签3,并且存储器系统可执行存储在队列标签2处的命令。如果命令队列305具有用传入命令再填充的队列标签0到3,并且不使用队列标签4到31,则命令队列305的32的阈值队列深度可为过量的(例如,对应于资源到命令队列305的相对低效分配)。因而,所测量队列再填充时间可不反映阈值队列深度的队列再填充时间,而是反映小于阈值队列深度的队列深度的队列再填充时间。使用此信息,存储器系统可预测阈值队列深度(例如,实际操作阈值队列深度),并且可将阈值队列深度调整到所预测队列深度。举例来说,存储器系统可预测4的队列深度且将命令队列305的阈值队列深度(从32)调整到4。也就是说,命令队列305可包含队列标签0、1、2和3。
在存储器系统调整阈值队列深度之后,存储器系统还可调整资源以与所调整阈值队列深度相一致。举例来说,存储器系统可撤销激活或再分配用于命令队列305的处理资源的部分。存储器系统可撤销激活与队列标签4到31相关联的处理资源,或存储器系统可将所述处理资源再分配到其它任务(例如,执行队列标签0、1、2和3的命令)。另外或替代地,存储器系统可调整存储器系统的存储器装置的并行度、存储器系统的处理器的并行度、用于存取存储器装置的读取命令或存储器系统的高速缓存大小,如参考图2所描述。通过响应于队列再填充时间而调整阈值队列深度以及使命令队列305的资源与所调整阈值队列深度相一致,存储器系统可提高性能且减小功率消耗。
图4说明根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的过程流程400的实例。过程流程400可由存储器系统(或其一或多个组件),例如如参考图1和2所描述的存储器系统110或存储器系统210执行。存储器系统可确定例如如参考图2和3所描述的命令队列260或命令队列305的命令队列的队列再填充时间,并且可响应于所确定队列再填充时间而调整资源。在一些情况下,可实施以下的替代性实例,其中一些操作可按不同于所描述的次序执行或根本不执行。另外或替代地,操作可包含下文中未提及的额外特征,或可添加其它过程。
在405处,从主机系统接收命令。命令可为存取命令(例如,写入命令或读取命令)的实例。也就是说,命令可与存取存储器系统的一或多个存储器装置相关联。
在410处,将命令添加到命令队列。命令队列可包含待由存储器系统执行(或正由存储器系统执行)的命令的集合。命令队列中的命令的数量可被称作队列深度。在一些情况下,命令队列可支持每次存储阈值(例如,最大)数量的命令,被称作阈值队列深度或最大队列深度。在一些实例中,存储器系统可在具体队列标签(例如,当前未存储命令的空队列标签)处将命令添加到命令队列。
在415处,可测量命令队列的队列再填充时间。测量队列再填充时间可涉及测量命令队列的一或多个队列标签的再填充时间。再填充时间的实例可为存储器系统在队列标签处的第一命令的执行后就将第二命令(不同于第一命令)添加到队列标签所花费的时间。在一些实例中,存储器系统可使用一或多个队列标签的最快再填充时间作为队列再填充时间。在一些实例中,存储器系统可使用一或多个队列标签的再填充时间的平均值作为队列再填充时间。在一些实例中,存储器系统可将一或多个队列标签的再填充时间和命令队列的队列再填充时间存储在存储器系统的存储器装置处。在一些情况下,存储器系统可基于队列再填充时间计算阈值性能(例如,使用所述队列再填充时间计算阈值性能)。举例来说,存储器系统可将队列再填充时间乘以队列深度的量,并且确定存储器系统在每秒操作方面的性能。
在420处,可确定命令队列的队列再填充时间的改变是否满足阈值。如参考图2和3所描述,队列再填充时间可通过运行一或多个额外基准测试来随着条件改变而更新。存储器系统可将415处测量的队列再填充时间与过去的队列再填充时间进行比较,并且可确定所测量队列再填充时间与过去的队列再填充时间之间的差是否满足阈值。
在425处,不调整用于命令队列的资源(例如,如果队列再填充时间的改变未能满足用于触发对资源分配的更新的阈值)。
在430处,根据所测量队列再填充时间而调整用于命令队列的资源。在一些实例中,存储器系统可响应于队列再填充时间而调整用于命令队列的处理资源。举例来说,存储器系统可在队列再填充时间的持续时间期间使用用于命令队列的处理资源的至少部分来执行一或多个任务,撤销激活用于命令队列的处理资源的至少部分,或调整处理器的时钟速率或电压。另外或替代地,存储器系统可响应于队列再填充时间而调整命令队列的队列深度(例如,阈值队列深度,例如最大队列深度)。在一些实例中,存储器系统可调整用于命令队列的资源以支持所调整队列深度。举例来说,存储器系统可响应于所调整队列深度而调整并行地工作的存储器装置的数量或并行地工作的处理器的数量。另外或替代地,存储器系统可确定用于读取存储器装置中的一或多个的读取命令的类型,或可响应于所调整队列深度而调整分配到高速缓存(例如,SRAM高速缓存)的存储器资源的数量。
过程流程400的方面可由系统(例如系统100或系统200)中的控制器以及其它组件实施。举例来说,存储器系统的存储器系统控制器可执行过程流程400的一或多个方面。另外或替代地,过程流程400的方面可实施为存储在存储器中的指令(例如,存储在与存储器系统耦合的存储器中的固件)。举例来说,所述指令在由控制器(例如,存储器系统控制器)执行时可致使所述控制器执行过程流程400的操作。
图5展示根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的存储器系统520的框图500。存储器系统520可为如参考图1到4所描述的存储器系统的方面的实例。存储器系统520或其各种组件可为用于执行如本文中所描述的用于使用队列再填充时间的存储器系统配置的技术的各种方面的构件的实例。举例来说,存储器系统520可包含命令管理器525、队列管理器530、再填充时间管理器535、资源管理器540、性能管理器545、队列深度管理器550,或其任何组合。这些组件中的每一个可直接地或间接地(例如,经由一或多个总线)彼此通信。
命令管理器525可被配置为或以其它方式支持用于从主机系统接收命令的构件。队列管理器530可被配置为或以其它方式支持用于将命令添加到命令队列的构件,其中命令队列包含待由存储器系统执行的多个命令,并且其中多个命令中的每一个对应于命令队列的相应队列标签。再填充时间管理器535可被配置为或以其它方式支持用于至少部分地基于命令队列的至少一个队列标签(例如,使用其测量结果)而测量命令队列的队列再填充时间的构件。资源管理器540可被配置为或以其它方式支持用于至少部分地基于(例如,响应于)队列再填充时间而调整用于命令队列的至少一个资源的构件。
在一些实例中,为了支持调整用于命令队列的至少一个资源,资源管理器540可被配置为或以其它方式支持用于在与队列再填充时间相关联的持续时间期间使用用于命令队列的至少一个资源在存储器系统处执行一或多个操作的构件。
在一些实例中,为了支持调整用于命令队列的至少一个资源,资源管理器540可被配置为或以其它方式支持用于在与队列再填充时间相关联的持续时间期间撤销激活用于命令队列的至少一个资源的构件。
在一些实例中,为了支持调整用于命令队列的至少一个资源,资源管理器540可被配置为或以其它方式支持用于在与队列再填充时间相关联的持续时间期间调整处理器的时钟速率的构件。
在一些实例中,为了支持调整用于命令队列的至少一个资源,资源管理器540可被配置为或以其它方式支持用于在与队列再填充时间相关联的持续时间期间调整处理器的电压的构件。
在一些实例中,为了支持调整用于命令队列的至少一个资源,资源管理器540可被配置为或以其它方式支持用于将命令队列的队列深度(例如,阈值队列深度,例如最大队列深度)从第一队列标签数量调整到第二队列标签数量的构件,队列深度对应于由命令队列支持的命令的阈值数量。
在一些实例中,资源管理器540可被配置为或以其它方式支持用于至少部分地基于(例如,响应于)调整队列深度而调整存储器系统的并行地操作的存储器装置的数量、存储器系统的并行地操作的处理器的数量或两者的构件。
在一些实例中,资源管理器540可被配置为或以其它方式支持用于至少部分地基于(例如,响应于)调整队列深度而确定待由存储器系统用于读取操作的读取命令的类型的构件。
在一些实例中,资源管理器540可被配置为或以其它方式支持用于至少部分地基于(例如,响应于)调整队列深度而调整分配到高速缓存的存储器资源的数量的构件。
在一些实例中,资源管理器540可被配置为或以其它方式支持用于至少部分地基于(例如,响应于)调整队列深度而为与第一队列标签数量相关联但不与第二队列标签数量相关联的命令队列再分配资源的至少部分的构件。在一些实例中,第一队列标签数量大于第二队列标签数量。
在一些实例中,队列深度管理器550可被配置为或以其它方式支持用于至少部分地基于(例如,响应于)队列再填充时间而预测阈值队列深度的构件,其中命令队列的队列深度被调整到所预测阈值队列深度。
在一些实例中,命令在第一队列标签处添加到命令队列,并且命令管理器525可被配置为或以其它方式支持用于执行所述命令的构件。队列管理器530可被配置为或以其它方式支持用于至少部分地基于(例如,直接响应于)执行命令而从命令队列的第一队列标签移除命令的构件。命令管理器525可被配置为或以其它方式支持用于从主机系统接收第二命令的构件,并且队列管理器530可被配置为或以其它方式支持用于至少部分地基于(例如,由于)从命令队列移除命令而在第一队列标签处将第二命令添加到命令队列的构件,其中至少部分地基于从第一队列标签移除命令且在第一队列标签处将第二命令添加到命令队列(例如,使用与之相关联的值)而测量队列再填充时间。
在一些实例中,再填充时间管理器535可被配置为或以其它方式支持用于以与第一队列标签的第一关联存储指示从命令队列的第一队列标签移除命令的第一时间的第一时戳的构件。在一些实例中,再填充时间管理器535可被配置为或以其它方式支持用于以与第一队列标签的第二关联存储指示第二命令在第一队列标签处添加到命令队列的第二时间的第二时戳的构件。在一些实例中,再填充时间管理器535可被配置为或以其它方式支持用于计算第二时戳与第一时戳之间的差以确定队列再填充时间的构件。
在一些实例中,为了支持测量队列再填充时间,再填充时间管理器535可被配置为或以其它方式支持用于测量命令队列的多个队列标签的多个再填充时间的构件。在一些实例中,为了支持测量队列再填充时间,再填充时间管理器535可被配置为或以其它方式支持用于对多个再填充时间求平均以确定队列再填充时间的构件。
在一些实例中,再填充时间管理器535可被配置为或以其它方式支持用于将队列再填充时间存储在存储器系统的存储器装置、存储器系统的控制器、命令队列或其组合处的构件。
在一些实例中,再填充时间管理器535可被配置为或以其它方式支持用于至少部分地基于(例如,响应于)执行一或多个额外命令而调整命令队列的队列再填充时间的构件。
在一些实例中,性能管理器545可被配置为或以其它方式支持用于至少部分地基于(例如,根据)队列再填充时间而计算存储器系统的阈值性能的构件,其中至少部分地基于(例如,响应于)阈值性能而调整至少一个资源。
图6展示说明根据如本文中所公开的实例的支持用于使用队列再填充时间的存储器系统配置的技术的方法600的流程图。可由如本文中所描述的存储器系统或其组件实施方法600的操作。举例来说,可由如参考图1到5所描述的存储器系统执行方法600的操作。在一些实例中,存储器系统可执行指令集以控制装置的功能元件来执行所描述的功能。另外或替代地,存储器系统可使用专用硬件来执行所描述的功能的方面。
在605处,方法可包含从主机系统接收命令。可根据如本文中所公开的实例执行605的操作。在一些实例中,可由如参考图5所描述的命令管理器525执行605的操作的方面。
在610处,方法可包含将命令添加到命令队列,其中命令队列包含待由存储器系统执行的多个命令,并且其中多个命令中的每一个对应于命令队列的相应队列标签。可根据如本文中所公开的实例执行610的操作。在一些实例中,可由如参考图5所描述的队列管理器530执行610的操作的方面。
在615处,方法可包含至少部分地基于命令队列的至少一个队列标签(例如,使用与之相关联的一或多个值)而测量命令队列的队列再填充时间。可根据如本文中所公开的实例执行615的操作。在一些实例中,可由如参考图5所描述的再填充时间管理器535执行615的操作的方面。
在620处,方法可包含至少部分地基于(例如,响应于)队列再填充时间而调整用于命令队列的至少一个资源。可根据如本文中所公开的实例执行620的操作。在一些实例中,可由如参考图5所描述的资源管理器540执行620的操作的方面。
在一些实例中,如本文中所描述的设备可执行一或多种方法,例如方法600。设备可包含用于以下的特征、电路系统、逻辑、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读媒体):从主机系统接收命令,将命令添加到命令队列,其中命令队列包含待由存储器系统执行的多个命令,并且其中多个命令中的每一个对应于命令队列的相应队列标签,至少部分地基于命令队列的至少一个队列标签而测量命令队列的队列再填充时间,以及至少部分地基于队列再填充时间而调整用于命令队列的至少一个资源。
在方法600和本文中所描述的设备的一些实例中,调整用于命令队列的至少一个资源可包含用于以下的操作、特征、电路系统、逻辑、构件或指令:在与队列再填充时间相关联的持续时间期间使用用于命令队列的至少一个资源在存储器系统处执行一或多个操作。
在方法600和本文中所描述的设备的一些实例中,调整用于命令队列的至少一个资源可包含用于以下的操作、特征、电路系统、逻辑、构件或指令:在与队列再填充时间相关联的持续时间期间撤销激活用于命令队列的至少一个资源。
在方法600和本文中所描述的设备的一些实例中,调整用于命令队列的至少一个资源可包含用于以下的操作、特征、电路系统、逻辑、构件或指令:在与队列再填充时间相关联的持续时间期间调整处理器的时钟速率。
在方法600和本文中所描述的设备的一些实例中,调整用于命令队列的至少一个资源可包含用于以下的操作、特征、电路系统、逻辑、构件或指令:在与队列再填充时间相关联的持续时间期间调整处理器的电压。
在方法600和本文中所描述的设备的一些实例中,调整用于命令队列的至少一个资源可包含用于以下的操作、特征、电路系统、逻辑、构件或指令:将命令队列的队列深度从第一队列标签数量调整到第二队列标签数量,队列深度对应于由命令队列支持的命令的阈值数量。
方法600和本文中所描述的设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于调整队列深度而调整存储器系统的并行地操作的存储器装置的数量、存储器系统的并行地操作的处理器的数量或两者。
方法600和本文中所描述的设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于调整队列深度而确定由存储器系统用于读取操作的读取命令的类型。
方法600和本文中所描述的设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于调整队列深度而调整分配到高速缓存的存储器资源的数量。
方法600和本文中所描述的设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于调整队列深度而为与第一队列标签数量相关联但不与第二队列标签数量相关联的命令队列再分配资源的至少部分。
在方法600和本文中所描述的设备的一些实例中,第一队列标签数量可大于第二队列标签数量。
方法600和本文中所描述的设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于队列再填充时间而预测阈值队列深度,其中命令队列的队列深度可被调整到所预测阈值队列深度。
在方法600和本文中所描述的设备的一些实例中,命令可在第一队列标签处添加到命令队列,并且方法、设备和非暂时性计算机可读媒体可包含用于以下的其它操作、特征、电路系统、逻辑、构件或指令:执行命令,至少部分地基于执行命令而从命令队列的第一队列标签移除命令,从主机系统接收第二命令,以及至少部分地基于从命令队列移除命令而在第一队列标签处将第二命令添加到命令队列,其中可至少部分地基于从第一队列标签移除命令且在第一队列标签处将第二命令添加到命令队列而测量队列再填充时间。
方法600和本文中所描述的设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:以与第一队列标签的第一关联存储指示可从命令队列的第一队列标签移除命令的第一时间的第一时戳,以与第一队列标签的第二关联存储指示可在第一队列标签处将第二命令添加到命令队列的第二时间的第二时戳;以及计算第二时戳与第一时戳之间的差以确定队列再填充时间。
在方法600和本文中所描述的设备的一些实例中,测量队列再填充时间可包含用于以下的操作、特征、电路系统、逻辑、构件或指令:测量命令队列的多个队列标签的多个再填充时间,并且对多个再填充时间求平均以确定队列再填充时间。
方法600和本文中所描述的设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:将队列再填充时间存储在存储器系统的存储器装置、存储器系统的控制器、命令队列或其组合处。
方法600和本文中所描述的设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于执行一或多个额外命令而调整命令队列的队列再填充时间。
方法600和本文中所描述的设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于队列再填充时间而计算存储器系统的阈值性能,其中可至少部分地基于阈值性能而调整至少一个资源。
应注意,上文所描述的方法描述了可能的实施方案,并且操作和步骤可重新布置或以其它方式加以修改,并且其它实施方案是可能的。此外,可组合来自方法的两个或更多个的部分。
描述一种设备。设备可包含存储器装置,以及控制器,其与存储器装置耦合且被配置成致使设备:从主机系统接收命令;将命令添加到命令队列,其中命令队列包含待由存储器系统执行的命令集合,并且其中命令集合中的每一个对应于命令队列的相应队列标签;基于命令队列的一个队列标签而测量命令队列的队列再填充时间;以及基于队列再填充时间而调整用于命令队列的至少一个资源。
可使用多种不同技艺和技术中的任一个来表示本文中所描述的信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和芯片。一些图式可将信号说明为单个信号;然而,所述信号可表示信号的总线,其中所述总线可具有多种位宽度。
术语“电子通信”、“导电接触”、“连接”和“耦合”可指支持信号在组件之间流动的组件之间的关系。如果组件之间存在可在任何时间支持信号在组件之间流动的任何导电路径,则认为组件彼此电子通信(或彼此导电接触、或彼此连接、或彼此耦合)。在任何给定时间,基于包含所连接组件的装置的操作,彼此电子通信(或彼此导电接触、或彼此连接、或彼此耦合)的组件之间的导电路径可为开路或闭路。所连接组件之间的导电路径可为组件之间的直接导电路径,或所连接组件之间的导电路径可为可包含例如开关、晶体管或其它组件等中间组件的间接导电路径。在一些实例中,可例如使用例如开关或晶体管的一或多个中间组件将所连接组件之间的信号流动中断一段时间。
术语“耦合”是指从组件之间的开路关系移动到组件之间的闭路关系的条件,在所述开路关系中,信号当前不能够经由导电路径在所述组件之间传达,在所述闭路关系中,信号能够经由所述导电路径在所述组件之间传达。如果例如控制器的组件将其它组件耦合在一起,则所述组件发起允许信号经由先前不准许信号流动的导电路径在其它组件之间流动的改变。
术语“隔离”是指其中信号当前不能在组件之间流动的组件之间的关系。如果组件之间存在开路,则组件彼此隔离。举例来说,由定位在两个组件之间的开关分离的所述组件在开关断开的情况下彼此隔离。如果控制器隔离两个组件,则控制器实现以下改变:阻止信号使用先前准许信号流动的导电路径在组件之间流动。
术语“如果”、“在…时”、“基于”,或“至少部分地基于”可互换使用。在一些实例中,如果术语“如果”、“在…时”、“基于”或“至少部分地基于”用于描述条件性动作、条件性过程,或过程的部分之间的连接,则所述术语可互换。
术语“响应于”可指由于先前条件或动作而至少部分地(如果不完全地)发生的一个条件或动作。举例来说,可执行第一条件或动作,并且作为先前条件或动作发生的结果(不管是直接在第一条件或动作之后还是在第一条件或动作之后的一或多个其它中间条件或动作发生之后),第二条件或动作可至少部分地发生。
另外,术语“直接地响应于”或“直接响应于”可指作为先前条件或动作的直接结果而发生的一个条件或动作。在一些实例中,可执行第一条件或动作,并且可作为与是否发生其它条件或动作无关的先前条件或动作发生的结果而直接发生第二条件或动作。在一些实例中,可执行第一条件或动作,并且可作为先前条件或动作发生的结果而直接发生第二条件或动作,使得在较早条件或动作与第二条件或动作之间不发生其它中间条件或动作,或在较早条件或动作与第二条件或动作之间发生有限数量的一或多个中间步骤或动作。除非另外指定,否则本文中描述为“基于”、“至少部分地基于”或“响应于”某一其它步骤、动作、事件或条件执行的任何条件或动作可另外或替代地(例如,在替代性实例中)“直接响应于”或“直接地响应于”此类其它条件或动作而执行。
包含存储器阵列的本文中所论述的装置可形成在例如硅、锗、硅锗合金、砷化镓、氮化镓等半导体衬底上。在一些实例中,衬底是半导体晶片。在一些其它实例中,衬底可为绝缘体上硅(SOI)衬底,例如玻璃上硅(SOG)或蓝宝石上硅(SOP),或另一衬底上的半导体材料的外延层。可通过使用包含但不限于磷、硼或砷等各种化学物质的掺杂来控制衬底或衬底的子区的导电性。可在衬底的初始形成或生长期间,通过离子植入或通过任何其它掺杂方法来执行掺杂。
本文中所论述的切换组件或晶体管可表示场效应晶体管(FET),并且包括包含源极、漏极和栅极的三端子装置。各端子可通过例如金属的导电材料连接到其它电子元件。源极和漏极可为导电的,并且可包括重度掺杂(例如,简并)的半导体区。源极和漏极可通过轻度掺杂的半导体区或沟道分离。如果沟道为n型(即,多数载流子为电子),则FET可被称作n型FET。如果沟道为p型(即,大部分载流子为空穴),则FET可被称作p型FET。沟道可由绝缘栅极氧化物封端。可通过将电压施加到栅极来控制沟道导电性。举例来说,将正电压或负电压分别施加到n型FET或p型FET可使沟道变为导电的。如果大于或等于晶体管的阈值电压的电压施加到晶体管栅极,则晶体管可“接通”或“激活”。如果小于晶体管的阈值电压的电压施加到晶体管栅极,则晶体管可“断开”或“撤销激活”。
本文中结合附图所阐述的描述内容描述了实例配置,并且并不表示可实施的或在权利要求书的范围内的所有实例。本文中所使用的术语“示例性”意谓“充当实例、例子或说明”,并且不比其它实例“优选”或“有利”。具体实施方式包含提供对所描述的技术的理解的具体细节。然而,可在无这些具体细节的情况下实践这些技术。在一些例子中,以框图形式展示众所周知的结构和装置以免混淆所描述实例的概念。
在附图中,类似的组件或特征可具有相同的参考标记。此外,可通过在参考标记之后跟着短横和在类似组件之间进行区分的第二标记来区分相同类型的各种组件。如果在说明书中仅使用第一参考标记,则描述内容可适用于具有相同第一参考标记而与第二参考标记无关的类似组件中的任一个。
本文中所描述的功能可以硬件、由处理器执行的软件、固件或其任何组合实施。如果以由处理器执行的软件实施,则可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。其它实例和实施方案在本公开和所附权利要求书的范围内。举例来说,由于软件的本质,上文所描述的功能可使用由处理器执行的软件、硬件、固件、硬连线或这些中的任一个的组合来实施。实施功能的特征还可物理上位于各种位置处,包含经分布以使得功能的各部分在不同物理位置处实施。
举例来说,结合本文中的公开内容描述的各种说明性块和组件可使用经设计以执行本文中所描述的功能的通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合来实施或执行。通用处理器可为微处理器,但在替代性方案中,处理器可为任何处理器、控制器、微控制器或状态机。处理器可实施为计算装置的组合(例如,DSP和微处理器的组合、多个微处理器、与DSP核心结合的一或多个微处理器,或任何其它此类配置)。
如本文中(包含在权利要求书中)所使用,如在项列表(例如,后加例如“中的至少一个”或“中的一或多个”的短语的项列表)中所使用的“或”指示包含端点的列表,使得例如A、B或C中的至少一个的列表意谓A或B或C或AB或AC或BC或ABC(即,A和B和C)。而且,如本文中所使用,短语“基于”不应被解释为指代封闭条件集合。举例来说,在不脱离本公开的范围的情况下,描述为“基于条件A”的示例性步骤可基于条件A和条件B两者。换句话说,如本文中所使用,短语“基于”应以相同方式解释为短语“至少部分地基于”。
计算机可读媒体包含非暂时性计算机存储媒体和通信媒体两者,所述通信媒体包含有助于将计算机程序从一处传送到另一处的任何媒体。非暂时性存储媒体可为可由通用或专用计算机存取的任何可用媒体。借助于实例而非限制,非暂时性计算机可读媒体可包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)、光盘(CD)ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携载或存储呈指令或数据结构形式的所要程序代码构件且可由通用或专用计算机或者通用或专用处理器存取的任何其它非暂时性媒体。而且,适当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,则所述同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波等技术包含在媒体的定义中。如本文中所使用,磁盘和光盘包含CD、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上的组合还包含在计算机可读媒体的范围内。
提供本文中的描述以使所属领域的技术人员能够制造或使用本公开。本公开的各种修改对所属领域的技术人员来说将是显而易见的,并且本文中所定义的一般原理可在不脱离本公开的范围的情况下应用于其它变化形式。因此,本公开不限于本文中所描述的实例和设计,而是应符合与本文中所公开的原理和新颖特征一致的最广泛范围。
Claims (20)
1.一种设备,其包括:
存储器装置;以及
控制器,其与所述存储器装置耦合且被配置成致使所述设备:
从主机系统接收命令;
将所述命令添加到命令队列,其中所述命令队列包括待由存储器系统执行的多个命令,并且其中所述多个命令中的每一个对应于所述命令队列的相应队列标签;
至少部分地基于所述命令队列的至少一个队列标签而测量所述命令队列的队列再填充时间;以及
至少部分地基于所述队列再填充时间而调整用于所述命令队列的至少一个资源。
2.根据权利要求1所述的设备,其中被配置成致使所述设备调整用于所述命令队列的所述至少一个资源的所述控制器被配置成致使所述设备:
在与所述队列再填充时间相关联的持续时间期间使用用于所述命令队列的所述至少一个资源在所述存储器系统处执行一或多个操作。
3.根据权利要求1所述的设备,其中被配置成致使所述设备调整用于所述命令队列的所述至少一个资源的所述控制器被配置成致使所述设备:
在与所述队列再填充时间相关联的持续时间期间撤销激活用于所述命令队列的所述至少一个资源。
4.根据权利要求1所述的设备,其中被配置成致使所述设备调整用于所述命令队列的所述至少一个资源的所述控制器被配置成致使所述设备:
在与所述队列再填充时间相关联的持续时间期间调整处理器的时钟速率。
5.根据权利要求1所述的设备,其中被配置成致使所述设备调整用于所述命令队列的所述至少一个资源的所述控制器被配置成致使所述设备:
在与所述队列再填充时间相关联的持续时间期间调整处理器的电压。
6.根据权利要求1所述的设备,其中被配置成致使所述设备调整用于所述命令队列的所述至少一个资源的所述控制器被配置成致使所述设备:
将所述命令队列的队列深度从第一队列标签数量调整到第二队列标签数量,所述队列深度对应于由所述命令队列支持的命令的阈值数量。
7.根据权利要求6所述的设备,其中所述控制器进一步被配置成致使所述设备:
至少部分地基于调整所述队列深度而调整所述存储器系统的并行地操作的存储器装置的数量、所述存储器系统的并行地操作的处理器的数量或两者。
8.根据权利要求6所述的设备,其中所述控制器进一步被配置成致使所述设备:
至少部分地基于调整所述队列深度而确定待由所述存储器系统用于读取操作的读取命令的类型。
9.根据权利要求6所述的设备,其中所述控制器进一步被配置成致使所述设备:
至少部分地基于调整所述队列深度而调整分配到高速缓存的存储器资源的数量。
10.根据权利要求6所述的设备,其中所述控制器进一步被配置成致使所述设备:
至少部分地基于调整所述队列深度而为与所述第一队列标签数量相关联但不与所述第二队列标签数量相关联的所述命令队列再分配资源的至少部分。
11.根据权利要求6所述的设备,其中所述第一队列标签数量大于所述第二队列标签数量。
12.根据权利要求6所述的设备,其中所述控制器进一步被配置成致使所述设备:
至少部分地基于所述队列再填充时间而预测阈值队列深度,其中所述命令队列的所述队列深度被调整到所述所预测阈值队列深度。
13.根据权利要求1所述的设备,其中所述命令在第一队列标签处添加到所述命令队列,并且所述控制器进一步被配置成致使所述设备:
执行所述命令;
至少部分地基于执行所述命令而从所述命令队列的所述第一队列标签移除所述命令;
从所述主机系统接收第二命令;以及
至少部分地基于从所述命令队列移除所述命令而在所述第一队列标签处将所述第二命令添加到所述命令队列,其中至少部分地基于从所述第一队列标签移除所述命令且在所述第一队列标签处将所述第二命令添加到所述命令队列而测量所述队列再填充时间。
14.根据权利要求13所述的设备,其中所述控制器进一步被配置成致使所述设备:
以与所述第一队列标签的第一关联存储指示从所述命令队列的所述第一队列标签移除所述命令的第一时间的第一时戳;
以与所述第一队列标签的第二关联存储指示在所述第一队列标签处将所述第二命令添加到所述命令队列的第二时间的第二时戳;以及
计算所述第二时戳与所述第一时戳之间的差以确定所述队列再填充时间。
15.根据权利要求1所述的设备,其中被配置成致使所述设备测量所述队列再填充时间的所述控制器进一步被配置成致使所述设备:
测量所述命令队列的多个队列标签的多个再填充时间;以及
对所述多个再填充时间求平均以确定所述队列再填充时间。
16.根据权利要求1所述的设备,其中所述控制器进一步被配置成致使所述设备:
将所述队列再填充时间存储在所述存储器系统的所述存储器装置、所述存储器系统的所述控制器、所述命令队列或其组合处。
17.根据权利要求1所述的设备,其中所述控制器进一步被配置成致使所述设备:
至少部分地基于执行一或多个额外命令而调整所述命令队列的所述队列再填充时间。
18.根据权利要求1所述的设备,其中所述控制器进一步被配置成致使所述设备:
至少部分地基于所述队列再填充时间而计算所述存储器系统的阈值性能,其中至少部分地基于所述阈值性能而调整所述至少一个资源。
19.一种存储包括指令的代码的非暂时性计算机可读媒体,所述指令在由电子装置的处理器执行时致使所述电子装置:
从主机系统接收命令;
将所述命令添加到命令队列,其中所述命令队列包括待由存储器系统执行的多个命令,并且其中所述多个命令中的每一个对应于所述命令队列的相应队列标签;
至少部分地基于所述命令队列的至少一个队列标签而测量所述命令队列的队列再填充时间;以及
至少部分地基于所述队列再填充时间而调整用于所述命令队列的至少一个资源。
20.一种由存储器系统执行的方法,所述方法包括:
从主机系统接收命令;
将所述命令添加到命令队列,其中所述命令队列包括待由所述存储器系统执行的多个命令,并且其中所述多个命令中的每一个对应于所述命令队列的相应队列标签;
至少部分地基于所述命令队列的至少一个队列标签而测量所述命令队列的队列再填充时间;以及
至少部分地基于所述队列再填充时间而调整用于所述命令队列的至少一个资源。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/243,321 | 2021-04-28 | ||
US17/243,321 US11768629B2 (en) | 2021-04-28 | 2021-04-28 | Techniques for memory system configuration using queue refill time |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373589A true CN115373589A (zh) | 2022-11-22 |
Family
ID=83808400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210447519.9A Pending CN115373589A (zh) | 2021-04-28 | 2022-04-26 | 用于使用队列再填充时间的存储器系统配置的技术 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11768629B2 (zh) |
CN (1) | CN115373589A (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995014337A1 (en) * | 1993-11-19 | 1995-05-26 | Codex Corporation | Method for adaptive smoothing delay for packet voice applications |
US6128672A (en) * | 1998-03-10 | 2000-10-03 | Motorola, Inc. | Data transfer using software interrupt service routine between host processor and external device with queue of host processor and hardware queue pointers on external device |
CN1941737A (zh) * | 2005-09-30 | 2007-04-04 | 富士通株式会社 | 预测节点时延的方法和装置以及时延保证的方法和装置 |
US7389453B2 (en) * | 2005-10-20 | 2008-06-17 | Jon Udell | Queuing methods for distributing programs for producing test data |
US8661163B2 (en) * | 2011-08-22 | 2014-02-25 | Apple Inc. | Tag allocation for queued commands across multiple devices |
US9465555B2 (en) * | 2013-08-12 | 2016-10-11 | Seagate Technology Llc | Method and apparatus for efficient processing of disparate data storage commands |
KR20210098717A (ko) * | 2020-02-03 | 2021-08-11 | 에스케이하이닉스 주식회사 | 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치 |
CN112187563B (zh) * | 2020-09-04 | 2022-05-13 | 苏州浪潮智能科技有限公司 | 一种统计主操作码时延的方法和装置 |
KR20220039282A (ko) * | 2020-09-22 | 2022-03-29 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11327812B1 (en) * | 2020-10-19 | 2022-05-10 | EMC IP Holding Company LLC | Distributed storage system with per-core rebalancing of thread queues |
-
2021
- 2021-04-28 US US17/243,321 patent/US11768629B2/en active Active
-
2022
- 2022-04-26 CN CN202210447519.9A patent/CN115373589A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220350532A1 (en) | 2022-11-03 |
US11768629B2 (en) | 2023-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115248662A (zh) | 动态超级块 | |
CN114816900A (zh) | 用于存储器系统的温度跟踪 | |
CN114882927A (zh) | 存储器装置的事件管理 | |
US20230236986A1 (en) | Cache block budgeting techniques | |
US12019877B2 (en) | Metadata allocation in memory systems | |
US11886735B2 (en) | Data movement based on address table activity | |
US11899963B2 (en) | Suspension during a multi-plane write procedure | |
CN116364136A (zh) | 用于在保持损失后增强系统性能的技术 | |
CN115951932A (zh) | 用于命令序列调整的技术 | |
WO2022193218A1 (en) | Techniques to mitigate memory die misalignment | |
CN115373592A (zh) | 页线填充数据技术 | |
US11768629B2 (en) | Techniques for memory system configuration using queue refill time | |
CN117501229B (zh) | 高速缓存分配技术 | |
US20230342060A1 (en) | Techniques for data transfer operations | |
US20230043502A1 (en) | Read latency and suspend modes | |
US11762771B2 (en) | Advanced power off notification for managed memory | |
US20240201860A1 (en) | Address mappings for random access operations | |
US11972109B2 (en) | Two-stage buffer operations supporting write commands | |
US20230367710A1 (en) | Data defragmentation control | |
WO2023173363A1 (en) | Low-latency processing for unmap commands | |
US20240078020A1 (en) | Write booster pinning | |
WO2024020707A1 (en) | Memory performance evaluation using address mapping information | |
US20230367495A1 (en) | Host-enabled block swap techniques | |
WO2022217592A1 (en) | Cache allocation techniques | |
US20240069784A1 (en) | Idle mode temperature control for memory systems |
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 |