用于存储器系统的功率管理
阅读说明:本技术 用于存储器系统的功率管理 (Power management for memory systems ) 是由 朱飞飞 何有信 于 2021-06-01 设计创作,主要内容包括:在某些方面,一种存储器系统可以包括至少一个存储设备和耦合到该至少一个存储设备的存储控制器。每个存储设备可以包括存储单元阵列和耦合到存储单元阵列的控制逻辑单元。存储控制器和存储设备的控制逻辑单元可以由具有第一预定功耗阈值的第一电源供电。存储设备的存储单元阵列可以由具有第二预定功耗阈值的第二电源供电。存储控制器可以被配置为:维持存储器操作的第一队列,其中第一队列中的存储器操作的执行导致来自第一电源的功耗;维持存储器操作的第二队列,其中第二队列中的存储器操作的执行导致来自第二电源的功耗;单独确定第一队列和第二队列中的后续存储器操作的各自执行是否分别导致对应的第一和第二电源过载;基于该确定,执行第一或第二队列中的不会导致对应的第一或第二电源过载的后续存储器操作;以及基于该确定,将第一或第二队列中的将导致对应的第一或第二电源过载的后续存储器操作延迟。(In certain aspects, a memory system may include at least one memory device and a memory controller coupled to the at least one memory device. Each memory device may include an array of memory cells and a control logic unit coupled to the array of memory cells. The memory controller and the control logic unit of the memory device may be powered by a first power supply having a first predetermined power consumption threshold. The memory cell array of the memory device may be powered by a second power supply having a second predetermined power consumption threshold. The storage controller may be configured to: maintaining a first queue of memory operations, wherein execution of the memory operations in the first queue results in power consumption from a first power supply; maintaining a second queue of memory operations, wherein execution of the memory operations in the second queue results in power consumption from a second power supply; separately determining whether respective performance of subsequent memory operations in the first queue and the second queue results in overloading the corresponding first and second power supplies, respectively; based on the determination, performing subsequent memory operations in the first or second queue that do not result in overloading the corresponding first or second power supply; and delaying, based on the determination, subsequent memory operations in the first or second queue that would result in overloading the corresponding first or second power supply.)
背景技术
本公开涉及存储器系统及其操作方法。
闪存是一种可以电擦除和重新编程的低成本、高密度、非易失性固态存储介质。随着NAND闪存平面数量的增加和读写性能的提升,峰值功率管理在固态存储产品中(尤其是在UFS(通用闪存)芯片中)变得越来越重要。现有的基于限制可存取NAND存储设备的数量和限制并行操作的总数的峰值功率控制方法不灵活,并且不能充分利用电源提供的可用裕量。因此,需要改进现有的功率管理方法以提高存储性能。
发明内容
在一方面,一种存储器系统可以包括至少一个存储设备和耦合到该至少一个存储设备的存储控制器。至少一个存储设备中的每一个可以包括存储单元阵列和耦合到存储单元阵列的控制逻辑单元。存储控制器和至少一个存储设备的控制逻辑单元可以由具有第一预定功耗阈值的第一电源供电。至少一个存储设备的存储单元阵列可以由具有第二预定功耗阈值的第二电源供电。存储控制器可以被配置为:维持存储器操作的第一队列,其中第一队列中的存储器操作的执行导致来自第一电源的功耗;维持存储器操作的第二队列,其中第二队列中的存储器操作的执行导致来自第二电源的功耗;单独确定第一队列和第二队列中的后续存储器操作的各自执行是否导致对应的第一和第二电源过载;基于该确定,执行第一或第二队列中的不会导致对应的第一或第二电源过载的后续存储器操作;以及基于该确定,将第一或第二队列中的将导致对应的第一或第二电源过载的后续存储器操作延迟。
在另一方面,提供了一种用于管理存储器系统的功率的方法。存储器系统可以包括至少一个存储设备以及耦合到至少一个存储设备的存储控制器。至少一个存储设备中的每一个可以包括存储单元阵列和耦合到存储单元阵列的控制逻辑单元。存储控制器和至少一个存储设备的控制逻辑单元可以由具有第一预定功耗阈值的第一电源供电。至少一个存储设备的存储单元阵列可以由具有第二预定功耗阈值的第二电源供电。该方法可以包括维持存储器操作的第一队列,其中第一队列中的存储器操作的执行导致来自第一电源的功耗。该方法还可以包括维持存储器操作的第二队列,其中第二队列中的存储器操作的执行导致来自第二电源的功耗。该方法还可以包括单独确定第一队列和第二队列中的后续存储器操作的各自执行是否导致对应的第一和第二电源过载。该方法还可以包括基于该确定,执行第一或第二队列中的不会导致对应的第一或第二电源过载的后续存储器操作。该方法还可以包括基于该确定,将第一或第二队列中的将导致对应的第一或第二电源过载的后续存储器操作延迟。
在另一方面,提供了一种非暂时性计算机可读介质。非暂时性计算机可读介质存储指令,该指令在由存储器系统的存储控制器执行时,使存储控制器执行管理存储器系统的功率的方法。存储器系统可以包括至少一个存储设备以及耦合到至少一个存储设备的存储控制器。至少一个存储设备中的每一个可以包括存储单元阵列和耦合到存储单元阵列的控制逻辑单元。存储控制器和至少一个存储设备的控制逻辑单元可以由具有第一预定功耗阈值的第一电源供电。至少一个存储设备的存储单元阵列可以由具有第二预定功耗阈值的第二电源供电。该方法可以包括维持存储器操作的第一队列,其中第一队列中的存储器操作的执行导致来自第一电源的功耗。该方法还可以包括维持存储器操作的第二队列,其中第二队列中的存储器操作的执行导致来自第二电源的功耗。该方法还可以包括单独确定第一队列和第二队列中的后续存储器操作的各自执行是否导致对应的第一和第二电源过载。该方法还可以包括基于该确定,执行第一或第二队列中的不会导致对应的第一或第二电源过载的后续存储器操作。该方法还可以包括基于该确定,将第一或第二队列中的将导致对应的第一或第二电源过载的后续存储器操作延迟。
附图说明
并入本文并形成说明书的一部分的附图示出了本公开的各方面,并且与说明书一起进一步用于解释本公开并使相关领域的技术人员能够做出和使用本公开。
图1示出了根据本公开的一些方面的具有存储器系统的示例性系统的框图。
图2A示出了根据本公开的一些方面的具有存储设备的示例性存储卡的图。
图2B示出了根据本公开的一些方面的具有存储设备的示例性固态驱动器(SSD)的图。
图3示出了根据本公开的一些方面的包括外围电路的示例性存储设备的示意图。
图4示出了根据本公开的一些方面的包括存储单元阵列和外围电路的示例性存储设备的框图。
图5A示出了根据本公开的一些方面的存储器系统的示例性实施方式。
图5B示出了根据本公开的一些方面的存储器系统的另一示例性实施方式。
图6示出了根据本公开的一些方面的具有改进的功率管理机制以防止电源过载的示例性存储器系统。
图7示出了根据本公开的一些方面的用于管理存储器系统的功率的示例性方法的流程图。
图8示出了根据本公开的一些方面的用于管理存储器系统的功率的另一示例性方法的流程图。
将参考附图描述本公开。
具体实施方式
尽管讨论了具体的构造和布置,但是应当理解,这样做仅出于说明的目的。这样,在不脱离本公开的范围的情况下,可以使用其他构造和布置。而且,本公开还可以用于多种其他应用中。如在本公开中描述的功能和结构特征可以以未在附图中具体描绘的方式彼此组合、调整和修改,使得这些组合、调整和修改在本公开的范围内。
通常,可以至少部分地根据上下文中的使用来理解术语。例如,至少部分地取决于上下文,本文所使用的术语“一个或多个”可以用于以单数意义描述任何特征、结构或特性,或者可以用于以复数意义描述特征、结构或特性的组合。类似地,至少部分地取决于上下文,诸如“一”或“所述”的术语可以同样被理解为传达单数用法或传达复数用法。另外,同样至少部分地取决于上下文,术语“基于”可以被理解为不一定旨在传达一组排他的因素,并且可以代替地允许存在不一定明确描述的附加因素。
随着NAND闪存平面数量的增加和读写性能的提升,峰值功率管理在固态存储产品中变得越来越重要。峰值功率控制的核心是限制并行存储器操作的数量。
一种常见的解决方案是将可存取存储设备的数量限制到上层。例如,将8个管芯管理为4个管芯,以确保并行操作的数量不超过限制。但是这种方法不灵活,因为它涉及上层闪存管理算法,并且难以动态调整并行操作的管芯的最大数量。此外,性能也会受到影响。例如,由于用于写入操作的并行操作的管芯的最大数量的限制,读取操作性能也会受到限制。
另一种解决方案是基于存储器操作的类型来记录并行操作的数量。当并行操作的数量超过阈值时,将不再触发操作。但是,这种方法也缺乏灵活性。例如,难以涵盖所有场景,例如,当多个管芯同时进行不同的操作时。此外,如果每个操作都被记录为一个正在运行的管芯,它可能无法在峰值功率范围内提供完整的性能。此外,延迟的存储器操作可能导致无法利用存储设备的缓存操作。
本申请提供了一种改进的功率管理解决方案以解决一个或多个上述问题。
图1示出了根据本公开的一些方面的具有存储器系统102的示例性系统100的框图。系统100可以是移动电话、台式计算机、膝上型计算机、平板电脑、车载计算机、游戏机、打印机、定位设备、可穿戴电子设备、智能传感器、虚拟现实(VR)设备、增强现实(AR)设备、或其中具有存储装置的任何其他合适的电子设备。如图1所示,系统100可以包括主机108和具有一个或多个存储设备104和存储控制器106的存储器系统102。主机108可以是电子设备的处理器(例如中央处理单元(CPU))或片上系统(SoC)(例如应用处理器(AP))。主机108可以被配置为向存储器系统102发送数据或从存储器系统102接收数据。
存储设备104可以是本公开中公开的任何存储设备。例如,存储设备104可以是NAND闪存设备或NOR闪存设备。在下面的描述中,使用基于NAND的存储设备104作为示例来公开改进的功率管理解决方案。需要注意的是,所公开的功率管理解决方案也可以应用于其他类型的存储设备。
根据一些实施方式,存储控制器106耦合到存储设备104和主机108,并被配置为控制存储设备104。存储控制器106可以管理存储在存储设备104中的数据并与主机108通信。在一些实施方式中,存储控制器106被设计用于在低占空比环境中操作,所述低占空比环境例如是安全数字(SD)卡、紧凑型闪存(CF)卡、通用串行总线(USB)闪存驱动器、或用于电子设备(例如个人计算机、数码相机、移动电话等)中的其他介质。在一些实施方式中,存储控制器106被设计用于在高占空比环境中操作,所述高占空比环境例如是用作诸如智能手机、平板电脑、膝上型计算机等的移动设备的数据存储装置的SSD或嵌入式多媒体卡(eMMC)、以及企业存储阵列。存储控制器106可以被配置为控制存储设备104的操作,例如读取、擦除和编程操作。存储控制器106还可以被配置为管理与存储或将要存储在存储设备104中的数据有关的各种功能,包括但不限于坏块管理、垃圾收集、逻辑到物理地址转换、损耗均衡,在一些实施方式中,存储控制器106还被配置为处理关于从存储设备104读取或写入到存储设备104的数据的纠错码(ECC)。存储控制器106也可以执行任何其他合适的功能,例如,对存储设备104进行格式化。存储控制器106可以根据特定的通信协议与外部设备(例如,主机108)通信。例如,存储控制器106可以通过各种接口协议中的至少一种与外部设备通信,所述接口协议例如USB协议、MMC协议、外围部件互连(PCI)协议、PCI快速(PCI-E)协议、高级技术附件(ATA)协议、串行ATA协议、并行ATA协议、小型计算机小型接口(SCSI)协议、增强型小型磁盘接口(ESDI)协议、集成驱动电子(IDE)协议、Firewire协议等。如本文所公开,存储控制器106可以被配置为管理存储器系统102的功率以提高存储器系统102的操作速度。
存储控制器106和一个或多个存储设备104可以集成到各种类型的存储设备中,例如,包括在同一封装中,例如包括在通用闪存存储(UFS)封装或eMMC封装中。即,可以实施存储器系统102并将其封装到不同类型的最终电子产品中。在如图2A所示的一个示例中,存储控制器106和单个存储设备104可以集成到存储卡202中。存储卡202可以包括PC卡(PCMCIA,个人计算机存储卡国际协会)、CF卡、智能媒体(SM)卡、存储棒、多媒体卡(MMC、RS-MMC、MMCmicro)、SD卡(SD、miniSD、microSD、SDHC)、UFS等。存储卡202还可以包括将存储卡202与主机(例如,图1中的主机108)耦合的存储卡连接器204。在如图2B所示的另一示例中,存储控制器106和多个存储设备104可以集成到SSD 206中。SSD 206可以还包括将SSD 206与主机(例如,图1中的主机108)耦合的SSD连接器208。在一些实施方式中,SSD 206的存储容量和/或操作速度大于存储卡202的存储容量和/或操作速度。
图3示出了根据本公开的一些方面的包括外围电路的示例性存储设备300的示意性电路图。存储设备300可以是图1中的存储设备104的示例。存储设备300可以包括存储单元阵列301和耦合到存储单元阵列301的外围电路302。存储单元阵列301可以是NAND闪存单元阵列,其中以NAND存储器串308的阵列的形式提供存储单元306,每个NAND存储器串308在衬底(未示出)上方垂直延伸。在一些实施方式中,每个NAND存储器串308包括串联耦合且垂直堆叠的多个存储单元306。每个存储单元306可以保持连续的模拟值,例如电压或电荷,这取决于在存储单元306的区域内捕获的电子的数量。每个存储单元306可以是浮栅类型的存储单元(包括浮栅晶体管)或电荷捕获类型的存储单元(包括电荷捕获晶体管)。
在一些实施方式中,每个存储单元306是具有两种可能的存储状态并且因此可以存储一位数据的单级单元(SLC)。例如,第一存储状态“0”可以对应于第一电压范围,而第二存储状态“1”可以对应于第二电压范围。在一些实施方式中,每个存储单元306是能够以多于四种存储状态存储多于一位的数据的多级单元(MLC)。例如,MLC可以每单元存储两位、每单元存储三位(也称为三级单元(TLC))或每单元存储四位(也称为四级单元(QLC))。每个MLC可以被编程为采用一系列可能的标称存储值。在一个示例中,如果每个MLC存储两位数据,则可以通过将三个可能的标称存储值之一写入单元来将MLC从擦除状态编程为呈现三个可能的编程级之一。第四标称存储值可以用于擦除状态。
如图3所示,每个NAND存储器串308可以包括在其源极端的源极选择栅极(SSG)晶体管310和在其漏极端的漏极选择栅极(DSG)晶体管312。SSG晶体管310和DSG晶体管312可以被配置为在读取和编程操作期间激活选定的NAND存储器串308(阵列的列)。在一些实施方式中,同一块304中的NAND存储器串308的SSG晶体管310通过同一源极线(SL)314(例如,公共SL)耦合到例如地。根据一些实施方式,每个NAND存储器串308的DSG晶体管312耦合到相应的位线316,数据可以经由输出总线(未示出)从该位线316读取或写入。在一些实施方式中,每个NAND存储器串308被配置为通过经由一条或多条DSG线313向相应DSG晶体管312的栅极施加选择电压(例如,高于DSG晶体管312的阈值电压)或取消选择电压(例如,0V),和/或通过经由一条或多条SSG线315向相应SSG晶体管310的栅极施加选择电压(例如,高于SSG晶体管310的阈值电压)或取消选择电压(例如,0V),来被选择或取消选择。
如图3所示,NAND存储器串308可以被组织成多个块304,每个块可以具有公共源极线314。在一些实施方式中,每个块304是用于擦除操作的基本数据单元,即,同一块304上的所有存储单元306同时被擦除。相邻NAND存储器串308的存储单元306可以通过字线318耦合,字线318选择存储单元306的哪一行受读取和编程操作影响。在一些实施方式中,每条字线318耦合到存储单元306的页320,其是用于编程操作的基本数据单元。一页320的以位为单位的尺寸可以与在一个块304中的由字线318耦合的NAND存储器串308的数量相关。每条字线318可以包括在相应的页320中的每个存储单元306处的多个控制栅极(栅电极)和耦合控制栅极的栅极线。
外围电路302可以通过位线316、字线318、源极线314、SSG线315和DSG线313耦合到存储单元阵列301。外围电路302可以包括任何合适的模拟、数字和混合信号电路,其通过经由位线316、字线318、源极线314、SSG线315和DSG线313向每个目标存储单元306施加电压信号和/或电流信号并从每个目标存储单元306感测电压信号和/或电流信号,来促进存储单元阵列301的操作。外围电路302可以包括使用金属氧化物半导体(MOS)技术形成的各种类型的外围电路。例如,图4示出了一些示例性外围电路302,其包括页缓冲器/感测放大器404、列解码器/位线驱动器406、输入/输出(I/O)电路407、行解码器/字线驱动器408、电压发生器410、控制逻辑单元412、寄存器414、接口416和数据总线418。应该理解,在一些示例中,也可以包括在图4中未示出的附加外围电路。
页缓冲器/感测放大器404可以被配置为根据来自控制逻辑单元412的控制信号从存储单元阵列301读取数据以及向存储单元阵列301编程(写入)数据。在一个示例中,页缓冲器/感测放大器404可以存储将被编程到存储单元阵列301的一页320中的一页编程数据(写入数据)。在另一示例中,页缓冲器/感测放大器404可以执行编程验证操作以确保数据已被正确地编程到耦合到选定字线318的存储单元306。在又一示例中,页缓冲器/感测放大器404还可以感测来自位线316的代表存储在存储单元306中的数据位的低功率信号,并在读取操作中将小电压摆幅放大至可识别的逻辑电平。
列解码器/位线驱动器406可以被配置为由控制逻辑单元412控制并且通过施加从电压发生器410生成的位线电压来选择一个或多个NAND存储器串308。I/O电路407可以耦合到页缓冲器/感测放大器404和/或列解码器/位线驱动器406,并被配置为将从数据总线418输入的数据引导(路由)到存储单元阵列301的期望存储单元区域(例如,组),以及将从期望存储单元区域输出的数据引导(路由)到数据总线418。
行解码器/字线驱动器408可以被配置为由控制逻辑单元412和存储单元阵列301的选定块304和选定块304的字线318控制。行解码器/字线驱动器408可以被进一步配置为使用从电压发生器410生成的字线电压来驱动选定字线318。电压发生器410可以被配置为由控制逻辑单元412控制并生成供应给存储单元阵列301的字线电压(例如,读取电压、编程电压、通过电压、局部电压和验证电压)。
控制逻辑单元412可以耦合到上述每个外围电路并且被配置为控制每个外围电路的操作。寄存器414可以耦合到控制逻辑单元412并且包括用于存储用于控制每个外围电路的操作的状态信息、命令操作代码(OP代码)和命令地址的状态寄存器、命令寄存器和地址寄存器。接口416可以耦合到控制逻辑单元412并且充当控制缓冲器以将从主机(未示出)接收的控制命令缓冲和中继到控制逻辑单元412以及将从控制逻辑单元412接收的状态信息缓冲和中继到主机。接口416还可以经由数据总线418耦合到I/O电路407并充当数据I/O接口和数据缓冲器,以将从主机(未示出)接收的写入数据缓冲和中继到I/O电路407以及将从I/O电路407读取的数据缓冲和中继到主机。例如,接口416可以包括耦合到数据总线418的数据I/O 417。
图5A示出了根据本公开的实施方式的存储器系统102的示例性实施方式。如图5A所示,存储器系统102可以包括至少一个存储设备104(例如,三维(3D)NAND存储设备)和耦合到存储设备104的存储控制器106。虽然为简单起见在图5A中仅描绘了一个存储设备104,但是可以使用多个存储设备。在一些实施方式中,存储设备(例如,104)也可以被称为“管芯”。存储设备104可以包括存储单元的阵列301(也称为存储单元阵列301)和耦合到存储单元阵列301的控制逻辑单元412,如上文结合图4所述。存储控制器106和控制逻辑单元412可以被配置为便于彼此之间的信息传输。此外,控制逻辑单元412可以被配置为控制存储单元阵列301以促进关于存储单元阵列301的数据操作。例如,数据编程(写入)操作可以如下实施:存储控制器106可以传输要被编程到控制逻辑单元412的数据,控制逻辑单元412又可以执行编程操作以将数据编程/写入到存储单元阵列301。在另一示例中,数据读取操作可以如下实施:控制逻辑单元412可以执行读取操作以从存储单元阵列301检索数据,然后将检索到的数据传输到存储控制器106。
存储控制器106和控制逻辑单元412可以由微处理器、微控制器(又名微控制器单元(MCU))、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、状态机、门控逻辑单元、分立硬件电路、以及被配置为执行以下详细描述的各种功能的其他合适的硬件、固件和/或软件来实施。在一些实施方式中,上述控制逻辑单元412的一个或多个功能可以用内容可寻址存储器(CAM)来实施。
如图5A所示,存储单元阵列301可以由电源Vcc供电,该电源供应电流Icc以促进由存储单元阵列301执行的存储器操作,例如读取操作、编程操作、擦除操作等。另一方面,控制逻辑单元412、存储控制器106以及它们之间的部件(例如,数据总线、直接存储器存取(DMA)设备等)由另一电源Vccq供电,该电源供应电流Iccq以促进与存储控制器106和控制逻辑单元412之间的信息传输相关的存储器操作,例如包括数据传输操作和指令传输操作的信息传输操作。示例性信息传输操作包括DMA读取操作和DMA编程(写入)操作。电源Vcc和Vccq中的每一个可以具有预定的功耗阈值,超过该阈值可能导致相应电流(Icc或Iccq)的显著下降,进而可能导致接收电流的相应部件发生故障。例如,当存储单元阵列301执行的存储器操作需要的功耗水平超过电源Vcc的功耗阈值时,并行执行存储器操作可能会导致电源Vcc过载,进而可能导致存储单元阵列301的故障。在另一示例中,当与存储控制器106和控制逻辑单元412之间的信息传输相关的存储器操作需要的功耗水平超过电源Vccq的功耗阈值时,并行执行存储器操作可能导致电源Vccq过载,这又可能导致存储控制器106和/或控制逻辑单元412的故障。
图5B示出了根据本公开的实施方式的存储器系统102的另一示例性实施方式。如图5B所示,存储控制器106可以耦合到多个存储设备(104A-104D)并且被配置为控制存储设备104A-104D。虽然图5B中描绘了四个存储设备,但是可以使用更少或更多的存储设备。存储控制器106可以包括与主机108(例如,PCIE主机)接口连接的PCIE层520和/或NVMe层530。PCIE层520和/或NVMe层530可以耦合到处理核心510,处理核心510可以被配置为通过执行存储在处理核心510的固件中的指令来实施各种存储器控制功能。例如,功率管理单元512可以通过存储在处理核心510的固件中的固件程序来实施。将结合图6更详细地讨论功率管理单元512的示例性实施方式。处理核心510可以耦合到存储设备控制器540、缓冲器550和DRAM控制器560。存储设备控制器540可以被配置为充当与存储设备104A-104D的接口。DRAM控制器560可以被配置为存取DRAM580上存储的信息。缓冲器550可以被配置为存储临时信息。一个或多个其他逻辑单元570也可以存在于存储控制器106中。
图6示出了具有改进的功率管理机制以防止电源过载的示例性存储器系统600。如图6所示,存储器系统600可以包括存储器操作启动器610、存储器操作的第一队列620、存储器操作的第二队列630、队列管理器640、存储器操作执行器650和多个存储单元阵列301A-301D。虽然图6中出于说明的目的描绘了四个存储单元阵列,但是可以使用更少或更多的存储单元阵列。在一些实施方式中,存储器操作启动器610、队列620和630、队列管理器640和存储器操作执行器650可以由存储设备控制器540实施。例如,存储控制器106可以执行存储在非暂时性计算机可读介质上的指令,以实施存储器操作启动器610、队列620和630以及队列管理器640的功能,并且存储设备控制器540可以执行存储在非暂时性计算机可读介质上的指令以实施存储器操作执行器650的功能。在一些实施方式中,非暂时性计算机可读介质可以是ROM设备的形式,并且指令可以是固件的形式。存储单元阵列301A-301D中的每一个可以包括类似于图5A中所示的控制逻辑单元412的集成控制逻辑单元(图6中未示出)。
存储器操作启动器610可以被配置为启动要执行的存储器操作,包括一种或多种类型的存储器操作,例如读取操作、编程操作、擦除操作、多平面操作、单平面操作、信息传输操作、编码操作和解码操作。读取操作是指由存储单元阵列执行以读取其中存储的数据的操作。编程操作是指由存储单元阵列执行以向其编程(写入)数据的操作。擦除操作是指由存储单元阵列执行以擦除(移除)存储在其中的数据的操作。单平面操作是指由存储单元阵列执行的仅涉及存储设备的单个平面的操作,而多平面操作是指涉及多个平面的操作。信息传输操作是指由存储控制器106和/或控制逻辑单元412(例如,图5A中所示)执行以在存储控制器106和存储单元阵列(例如,301A-301D)之间传输数据和/或指令的操作。例如,信息传输操作可以包括将数据从存储单元阵列传输到存储控制器106的DMA读取操作和将数据从存储控制器106传输到存储单元阵列的DMA编程(写入)操作。编码和解码操作可以由存储控制器106执行以检测和纠正错误。
每种类型的上述存储器操作的执行消耗功率。取决于执行特定存储器操作的部件,不同类型存储器操作的执行可能消耗来自不同电源的功率。例如,诸如读取操作、编程操作、擦除操作、多平面操作和单平面操作之类的存储器操作主要由存储单元阵列执行,其汲取电流Icc并从电源Vcc消耗功率。因此,Icc可以表示同时执行由存储单元阵列执行的多个存储器操作所导致的功耗。Icc还可以用于计算功耗值,其指示由这些同时执行的存储器操作所导致的功耗。因此,并行执行的存储单元阵列执行的并发存储器操作的数量可能受到电源Vcc的预定功耗阈值的限制。在另一示例中,诸如信息传输操作、编码操作和解码操作之类的存储器操作主要由存储控制器106执行,其汲取电流Iccq。与Icc类似,Iccq可以表示同时执行由存储控制器106执行的多个存储器操作所导致的功耗。Iccq还可以用于计算功耗值,其指示由这些同时执行的存储器操作所导致的功耗。因此,并行执行的存储控制器执行的并发存储器操作的数量可能受到电源Vccq的预定功耗阈值的限制。
队列620和630被配置为将导致来自不同电源的功耗的存储器操作分开。如图6所示,存储控制器106可以维持队列620(例如,在存储控制器106的缓冲器550中)以保持其执行导致来自电源Vccq的功耗的存储器操作的序列,并且存储控制器106可以维持队列630(例如,在存储控制器106的缓冲器550中)以保持其执行导致来自电源Vcc的功耗存储器操作的另一序列。例如,队列620可以保持诸如DMA读取操作、DMA编程操作等的存储器操作。如上所述,这种存储控制器执行的存储器操作的执行导致来自电源Vccq的功耗。在另一示例中,队列630可以保持诸如读取操作、编程操作、擦除操作等的存储器操作。如上所述,这种存储单元阵列执行的存储器操作的执行导致来自电源Vcc的功耗。
以这种方式将存储器操作分开可以促进改进的功率管理方法,其中可以有效地收获先前未充分利用的电源中的可用裕量。如图6所示,存储器操作执行器650(例如,由存储设备控制器540和/或相应的后端模块实施)可以被配置为并行执行多个存储器操作。例如,多个存储器操作可以包括其执行导致来自电源Vcc的功耗的多个存储器操作,并且多个存储器操作可以由多个存储单元阵列同时执行。在另一示例中,多个存储器操作可以包括其执行导致来自电源Vccq的功耗的多个存储器操作,并且多个存储器操作可以由存储控制器106同时执行以促进存储控制器106和多个存储单元阵列之间的信息传输。在进一步的示例中,多个存储器操作可以包括上述两种情况中描述的存储器操作的组合。在任何情况下,存储控制器106都可以将从电源Vcc汲取的总并发功耗控制在等于或低于电源Vcc的预定功耗阈值,并且将从电源Vccq汲取的总并发功耗控制在等于或低于电源Vccq的预定功耗阈值。
在一些实施方式中,上述功率管理方法可以使用队列管理器640来实施。例如,队列管理器640可以被配置为单独确定队列620中的后续存储器操作的执行是否会导致电源Vccq过载,以及队列630中的后续存储器操作的执行是否会导致电源Vcc过载。以队列620为例,队列管理器640可以确定当前功耗值,其指示并行执行从电源Vccq汲取功率的那些存储器操作的总并发功耗。在一些实施方式中,这种存储器操作的信息可以由存储器操作执行器650提供。例如,存储器操作执行器650可以维持同时执行从电源Vccq汲取功率的存储器操作的列表。队列管理器640可以获取该列表并确定该列表中的存储器操作的相应类型。存储器操作的每种类型可以对应于预定功耗值。功耗值可以采用多种形式,例如数值、数字值、模拟值、电流/电压/功率电平、或任何其他形式的能够指示存储器操作的同时执行所导致的功耗的信息。例如,在一些实施例中,可以将不同水平的功耗分为多个组,每个组由一个数字代码表示。在这种情况下,数字代码可以用作功耗值。在执行相应的存储器操作时,可以基于Vccq/Iccq的测量来预先确定预定功耗值。预定功耗值可以是绝对值(例如,以瓦特为单位)或相对值的形式。在采用相对值形式的情况下,可以基于预定的参考值计算出相对值,例如针对电源Vccq的预定功率阈值进行归一化,或者采用权重、百分比等形式。预定功耗阈值也可以与预定功耗值的形式相同。队列管理器640可以维持查找表(例如,存储在存储控制器106的RAM和/或DRAM580中),其包含存储器操作的类型和对应的功耗值之间的映射关系。这样,队列管理器640可以例如通过将存储器操作的相应类型映射到对应的预定功耗值,基于相应类型来确定与列表中的存储器操作对应的个体功耗值。在确定个体功耗值之后,队列管理器640可以通过将所有个体功耗值相加来确定当前功耗值。
在一些实施方式中,代替维持同时执行的存储器操作的列表,存储器操作执行器650和/或队列管理器640可以维持对应于队列620的当前功耗值。在完成存储器操作之后,其对应的功耗值可以从当前功耗值中扣除。另一方面,在后续的存储器操作加入并行执行后,可以将其对应的功耗值加入到当前功耗值。
为了防止当前功耗值超过电源Vccq的预定功耗阈值,队列管理器640可以控制队列620中的后续存储器操作的释放或保留。例如,如图6所示,DMA编程操作是队列620中的将与当前执行的存储器操作并行执行的下一个(后续)存储器操作。队列管理器640可以确定当前功耗值,如上所述,以及确定指示执行DMA编程操作的附加功耗的附加功耗值。队列管理器640然后可以确定当前和附加功耗值的总和是否超过电源Vccq的预定功耗阈值:
Psum+Pn<=Pmax 条件(1),其中Psum是指当前功耗值,Pn是指附加功耗值,并且Pmax是指预定功耗阈值。
如果满足条件(1),即意味着将DMA编程操作添加到同时执行的存储器操作池不会导致电源Vccq过载,则队列管理器640可以将DMA编程操作释放到存储器操作执行器以与当前在池中的存储器操作并行执行。否则,队列管理器640可以通过在队列620中保留DMA编程操作来延迟其执行,直到额外的功耗裕度可用(例如,完成一个或多个存储器操作)。
在一些实施方式中,队列管理器640可以基于环境条件(例如温度)来调整个体功耗值,以更准确地反映不同条件下的实际功耗。然后可以基于调整后的个体功耗值来确定当前功耗值。
虽然上面的示例是结合队列620来描述的,但是可以以类似的方式来实施结合队列630的功率管理。
本文公开的功率管理方法可以通过利用电源提供的裕度来提高存储器操作的整体速度。例如,数据读取操作通常需要两个存储器操作:分别添加到队列630和620的读取操作和DMA读取操作。DMA读取操作通常是性能瓶颈,因为执行DMA读取对电源Vccq施加的负担比执行读取操作对电源Vcc施加的负担更重。因此,队列630中的读取操作可以比队列620中的DMA读取操作更早完成。代替在空闲状态下等待DMA读取操作完成,队列管理器640可以使队列630前进以执行队列中的下一个存储器操作。以此方式,队列630中的下一个存储器操作可以与DMA读取操作同时执行,有效地收获电源Vcc的可用裕量。
在另一示例中,数据编程(写入)操作通常通过在DMA写入操作之后立即执行写入操作来实施。在执行写入操作期间,不执行后续的信息传输操作。结果,浪费了电源Vccq提供的可用裕量。使用本文公开的单独队列,可以使用两个存储器操作来实施数据编程操作,类似于数据读取操作。例如,可以分别使用添加到队列620和630的DMA编程操作和编程操作来实施数据写入操作。与数据读取情况不同,这里,执行编程操作对电源Vcc施加的负担可能比执行DMA编程操作对电源Vccq施加的负担更重。因此,DMA编程操作可能更早完成,从而在编程操作仍在执行的同时,为电源Vccq开辟可用裕量。代替在空闲状态下等待编程操作完成,队列管理器640可以前进到队列中的下一个存储器操作,例如另一DMA编程操作。该后续DMA编程操作然后可以与仍在执行中的编程操作并行执行,从而有效地提高了从存储控制器106到存储单元阵列的信息传输速率。
图7示出了根据本公开的一些方面的用于管理存储器系统的功率的示例性方法700的流程图。存储器系统可以是本文公开的任何合适的存储器系统。方法700可以由存储控制器106实施。应当理解,方法700中所示的操作可能不是穷尽的,并且也可以在任何所示操作之前、之后或之间执行其他操作。此外,一些操作可以同时执行,或者以与图7所示不同的顺序执行。
参考图7,方法700开始于操作710,其中存储控制器106可以确定指示并行执行多个存储器操作的总并发功耗的当前功耗值Psum。例如,如上所述,队列管理器640可以从存储器操作执行器650获得当前存储器操作的列表。然后队列管理器640可以确定存储器操作的相应类型,并且例如通过维持存储了存储器操作的类型与其对应的功耗值之间的映射关系的查找表,来基于相应类型确定个体功耗值。队列管理器640然后可以通过将所有的个体功耗值相加来确定当前功耗值。
在操作720,存储控制器106可以确定指示执行后续存储器操作的附加功耗的附加功耗值Pn。例如,队列管理器640可以基于存储器操作的类型来确定队列630中的后续存储器操作(例如,DMA编程)的功耗值,类似于在步骤710处确定同时执行的存储器操作的个体功耗值。
在操作730,存储控制器106可以确定Psum和Pn的总和是否超过预定功耗阈值(例如,电源Vccq的预定功耗阈值)。如果总和不超过预定功耗阈值,则方法700进行到步骤740,其中存储控制器106与多个存储器操作并行地执行后续存储器操作。否则,方法700进行到步骤750,其中存储控制器106将后续存储器操作的执行延迟。
图8示出了根据本公开的一些方面的用于管理存储器系统的功率的另一示例性方法800的流程图。存储器系统可以是本文公开的任何合适的存储器系统。方法800可以由存储控制器106实施。应当理解,方法800中所示的操作可能不是穷尽的,并且也可以在任何所示操作之前、之后或之间执行其他操作。此外,一些操作可以同时执行,或者以与图8所示不同的顺序执行。
参考图8,方法800开始于操作810,其中存储控制器106可以维持存储器操作的第一队列(例如,620),其中第一队列中的存储器操作的执行导致来自第一电源(例如,功率源Vccq)的功耗。在操作820中,存储控制器106可以维持存储器操作的第二队列(例如,630),其中第二队列中的存储器操作的执行导致来自第二电源(例如,电源Vcc)的功耗。
在操作830中,存储控制器106可以单独确定第一和第二队列中的后续存储器操作的各自执行是否会导致对应的第一和第二电源过载。例如,队列管理器640可以确定队列620中的DMA编程操作的执行是否会导致电源Vccq过载。电源过载条件可以类似于条件(1)在操作730中设置。例如,当Psum+Pn<=Pmax时,队列管理器640可以确定队列620中的DMA编程操作的执行(Pn)不会导致电源Vccq过载;当Psum+Pn>Pmax时,队列管理器640可以确定队列620中的DMA编程操作的执行(Pn)将导致电源Vccq过载。队列管理器640可以单独确定不同队列的电源过载条件。
在操作840,存储控制器106可以基于该确定而执行第一或第二队列中的不会导致对应的第一或第二电源过载的后续存储器操作。例如,在确定电源不会过载之后,队列管理器640可以将DMA编程操作释放或推送到同时执行的存储器操作池中。
在操作850,存储控制器106可以基于该确定而将第一或第二队列中的将导致对应的第一或第二电源过载的后续存储器操作延迟。例如,在确定电源将过载之后,队列管理器640可以阻止或延迟将DMA编程操作释放到同时执行的存储器操作池中。
本公开的另一方面涉及一种存储指令的非暂时性计算机可读介质,该指令在被执行时使一个或多个处理单元(例如存储控制器106)执行上述方法。计算机可读介质可以包括易失性或非易失性、磁性、半导体、磁带、光学、可移除、不可移除或其他类型的计算机可读介质或计算机可读存储设备。例如,计算机可读介质可以是只读存储器(ROM)的形式,并且指令可以是固件的形式。
根据本公开的一个方面,一种存储器系统包括至少一个存储设备和耦合到该至少一个存储设备的存储控制器。存储控制器可以被配置为确定指示并行执行多个存储器操作的总并发功耗的当前功耗值。存储控制器还可以被配置为确定指示执行后续存储器操作的附加功耗的附加功耗值。存储控制器还可以被配置为确定当前功耗值和附加功耗值的总和是否超过预定功耗阈值。在确定当前功耗值和附加功耗值的总和没有超过预定功耗阈值之后,存储控制器可以被配置为与多个存储器操作并行地执行后续存储器操作。
在一些实施方式中,存储控制器可以被配置为在确定当前功耗值和附加功耗值的总和超过预定功耗阈值之后延迟后续存储器操作的执行。
在一些实施方式中,存储控制器可以被配置为确定多个存储器操作的相应类型;基于相应类型,分别确定对应于多个存储器操作的个体功耗值;以及基于个体功耗值来确定当前功耗值。
在一些实施方式中,存储控制器可以被配置为基于环境条件调整所确定的个体功耗值;以及基于调整后的个体功耗值确定当前功耗值。
在一些实施方式中,存储器操作的每种类型对应于预定功耗值。存储控制器可以被配置为基于将多个存储器操作的相应类型映射到对应的预定功耗值来确定个体功耗值。
在一些实施方式中,多个存储器操作的类型包括读取操作、编程操作、擦除操作、多平面操作、单平面操作、信息传输操作、编码操作或解码操作。
在一些实施方式中,当前功耗值、附加功耗值或预定功耗阈值中的至少一个是基于预定基准计算的相对值的形式。
在一些实施方式中,至少一个存储设备中的每一个包括存储单元阵列和耦合到存储单元阵列的控制逻辑单元。存储控制器和至少一个存储设备的控制逻辑单元由具有第一预定功耗阈值的第一电源供电。至少一个存储设备的存储单元阵列由具有第二预定功耗阈值的第二电源供电。存储控制器被配置为:维持存储器操作的第一队列,其中第一队列中的存储器操作的执行导致来自第一电源的功耗;维持存储器操作的第二队列,其中第二队列中的存储器操作的执行导致来自第二电源的功耗;单独确定第一队列和第二队列中的后续存储器操作的各自执行是否会导致对应的第一和第二电源过载;基于该确定,执行第一或第二队列中不会导致对应的第一或第二电源过载的后续存储器操作;并且基于该确定,使第一或第二队列中将导致对应的第一或第二电源过载的后续存储器操作延迟。
在一些实施方式中,第一队列中的存储器操作包括信息传输操作。第二队列中的存储器操作包括读取操作、编程操作或擦除操作中的至少一种。
在一些实施方式中,存储设备包括三维(3D)NAND存储设备。
在另一方面,提供了一种用于管理存储器系统的功率的方法。该方法可以包括确定指示并行执行多个存储器操作的总并发功耗的当前功耗值。该方法还可以包括确定指示执行后续存储器操作的附加功耗的附加功耗值。该方法还可以包括确定当前和附加功耗值的总和是否超过预定功耗阈值。在确定当前和附加功耗值的总和没有超过预定功耗阈值之后,该方法可以包括与多个存储器操作并行地执行后续存储器操作。
在一些实施方式中,该方法还包括在确定当前和附加功耗值的总和超过预定功耗阈值之后,使后续存储器操作的执行延迟。
在一些实施方式中,该方法还包括确定多个存储器操作的相应类型;基于相应类型,分别确定对应于多个存储器操作的个体功耗值;并且基于个体功耗值确定当前功耗值。
在一些实施方式中,该方法还包括基于环境条件调整所确定的个体功耗值;以及基于调整后的个体功耗值确定当前功耗值。
在一些实施方式中,存储器操作的每种类型对应于预定功耗值。该方法包括基于将多个存储器操作的相应类型映射到对应的预定功耗值来确定个体功耗值。
在一些实施方式中,多个存储器操作的类型包括读取操作、编程操作、擦除操作、多平面操作、单平面操作、信息传输操作、编码操作或解码操作中的至少一种。
在一些实施方式中,当前功耗值、附加功耗值或预定功耗阈值中的至少一个是基于预定基准计算的相对值的形式。
在一些实施方式中,存储器系统包括至少一个存储设备和耦合到该至少一个存储设备的存储控制器。至少一个存储设备中的每一个包括存储单元阵列和耦合到存储单元阵列的控制逻辑单元。存储控制器和至少一个存储设备的控制逻辑单元由具有第一预定功耗阈值的第一电源供电。至少一个存储设备的存储单元阵列由具有第二预定功耗阈值的第二电源供电。该方法包括:维持存储器操作的第一队列,其中第一队列中的存储器操作的执行导致来自第一电源的功耗;维持存储器操作的第二队列,其中第二队列中的存储器操作的执行导致来自第二电源的功耗;单独确定第一队列和第二队列中的后续存储器操作的各自执行是否会导致对应的第一和第二电源过载;基于该确定,执行第一或第二队列中不会导致对应的第一或第二电源过载的后续存储器操作;并且基于该确定,使第一或第二队列中将导致对应的第一或第二电源过载的后续存储器操作延迟。
在一些实施方式中,第一队列中的存储器操作包括信息传输操作。第二队列中的存储器操作包括读取操作、编程操作或擦除操作中的至少一种。
在一些实施方式中,存储设备包括三维(3D)NAND存储设备。
在另一方面,提供了一种非暂时性计算机可读介质。非暂时性计算机可读介质存储指令,该指令在由存储器系统的存储控制器执行时,使存储控制器执行管理存储器系统的功率的方法。该方法可以包括确定指示并行执行多个存储器操作的总并发功耗的当前功耗值。该方法还可以包括确定指示执行后续存储器操作的附加功耗的附加功耗值。该方法还可以包括确定当前和附加功耗值的总和是否超过预定功耗阈值。在确定当前和附加功耗值的总和没有超过预定功耗阈值之后,该方法可以包括与多个存储器操作并行地执行后续存储器操作。
在一些实施方式中,该方法还包括在确定当前和附加功耗值的总和超过预定功耗阈值之后,使后续存储器操作的执行延迟。
在一些实施方式中,该方法还包括确定多个存储器操作的相应类型;基于相应类型,分别确定对应于多个存储器操作的个体功耗值;以及基于个体功耗值确定当前功耗值。
在一些实施方式中,该方法还包括基于环境条件调整所确定的个体功耗值;并基于调整后的个体功耗值确定当前功耗值。
在一些实施方式中,存储器操作的每种类型对应于预定功耗值。该方法包括基于将多个存储器操作的相应类型映射到对应的预定功耗值来确定个体功耗值。
在一些实施方式中,多个存储器操作的类型包括读取操作、编程操作、擦除操作、多平面操作、单平面操作、信息传输操作、编码操作或解码操作中的至少一种。
在一些实施方式中,当前功耗值、附加功耗值或预定功耗阈值中的至少一个是基于预定基准计算的相对值的形式。
在一些实施方式中,存储器系统包括至少一个存储设备和耦合到该至少一个存储设备的存储控制器。至少一个存储设备中的每一个包括存储单元阵列和耦合到存储单元阵列的控制逻辑单元。存储控制器和至少一个存储设备的控制逻辑单元由具有第一预定功耗阈值的第一电源供电。至少一个存储设备的存储单元阵列由具有第二预定功耗阈值的第二电源供电。该方法包括:维持存储器操作的第一队列,其中第一队列中的存储器操作的执行导致来自第一电源的功耗;维持存储器操作的第二队列,其中第二队列中的存储器操作的执行导致来自第二电源的功耗;单独确定第一队列和第二队列中的后续存储器操作的各自执行是否会导致对应的第一和第二电源过载;基于该确定,执行第一或第二队列中不会导致对应的第一或第二电源过载的后续存储器操作;并且基于该确定,使第一或第二队列中将导致对应的第一或第二电源过载的后续存储器操作延迟。
在一些实施方式中,第一队列中的存储器操作包括信息传输操作。第二队列中的存储器操作包括读取操作、编程操作或擦除操作中的至少一种。
在一些实施方式中,存储设备包括三维(3D)NAND存储设备。
特定实施方式的前述描述可以容易地被修改和/或改编以用于各种应用。因此,基于本文提出的教导和指导,这样的改编和修改旨在处于所公开的实施方式的等同物的含义和范围内。
本公开的广度和范围不应由任何上述示例性实施方式来限制,而应仅根据所附权利要求及其等同物来限定。
- 上一篇:一种医用注射器针头装配设备
- 下一篇:用于估算或预测基因型和表型的方法和组成