相关申请的交叉引用
本申请要求于2018年12月7日向韩国知识产权局提交的标题为“存储系统及其操作方法”的韩国专利申请no.10-2018-0157475的优先权,其整体通过引用包含于此。
实施例涉及存储系统,更具体地涉及包括计算设备的存储系统以及管理该存储系统的功率的方法。
背景技术:
闪存作为一种非易失性存储器,即使在断电时也可以保持存储在其中的数据。广泛使用的包括闪存的存储设备,诸如嵌入式多媒体卡(emmc)、通用闪存(ufs)、固态驱动器(ssd)或存储卡,该存储设备已有效地用于存储或移动大量数据。计算系统趋向于异构系统,包括负责系统总体管理的主机和分配给特定任务的用于加速处理的计算设备。计算设备可以实现为安装在存储设备中的存储加速平台,或者可以与存储设备形成一个模块。
技术实现要素:
根据一方面,提供一种存储系统,包括:非易失性存储器,其存储数据;计算设备,用于对从该非易失性存储器或存储系统外部的主机提供的输入数据执行数据处理;以及控制器,用于控制对该非易失性存储器的写入操作和读取操作,在计算设备正执行数据处理时监控计算设备的操作状态,并且根据监控结果动态管理计算设备的功率。
根据另一方面,提供一种包括计算设备和存储控制器的存储系统的操作方法,该操作方法包括:由计算设备对接收的输入数据执行数据处理;在计算设备正执行数据处理时,由存储控制器接收关于计算设备的操作状态的状态信息;以及在计算设备正执行数据处理时,由存储控制器基于接收的状态信息管理计算设备的功率。
根据另一方面,提供一种存储系统,包括:包括非易失性存储器和存储控制器的存储设备,存储控制器用于控制针对该非易失性存储器的写入和读取;以及计算设备,用于与存储控制器通信并对接收的输入数据执行数据处理,其中存储控制器基于计算设备的操作状态来管理计算设备的功率。
附图说明
通过参考附图详细描述示例性实施例,对于本领域技术人员而言,特征将变得明显,附图中:
图1图示了根据实施例的存储系统和数据处理系统;
图2图示了根据示例实施例的存储系统;
图3图示了根据示例实施例的存储控制器;
图4图示了根据示例实施例的计算设备;
图5图示了根据示例实施例的存储系统的操作方法;
图6图示了根据示例实施例的存储系统的操作方法;
图7a和图7b图示了示出根据实施例动态调整提供给存储系统中的计算设备的驱动电压的电压电平和时钟信号的频率的示例的图;
图8a和图8b图示了根据实施例调整存储系统中的计算设备的硬件利用率的示例;
图9图示了根据实施例调整将要传输到存储系统中的计算设备的输入数据的传输速率的示例;
图10a到图10d图示了根据示例实施例的管理数据的表格;
图11图示了根据示例实施例的存储系统的操作方法;
图12图示了根据示例实施例的存储系统的操作方法的流程图;
图13图示了根据实施例的存储系统和数据处理系统;
图14图示了根据示例实施例的存储系统;
图15图示了根据示例实施例的数据处理系统;
图16图示了根据示例实施例的数据处理系统;以及
图17图示了根据示例实施例的固态驱动器(ssd)系统。
具体实施方式
图1图示了根据实施例的存储系统100和数据处理系统1000。数据处理系统1000可以嵌入在电子设备中或者由电子设备实现。电子设备可以实现为,例如个人计算机(pc)、数据服务器、超移动pc(umpc)、工作站、上网本、网络附加存储(nas)、智能电视、物联网(iot)设备或便携式电子设备。便携式电子设备可以是膝上型计算机、移动电话、智能电话、平板pc、个人数字助理(pda)、企业数字助理(eda)、数字静态摄像机、数字视频摄像机、音频设备、便携式多媒体播放器(pmp)、个人导航设备(pnd)、mp3播放器、手持游戏控制器、电子书、可穿戴设备等。
参考图1,数据处理系统1000可以包括存储系统100和主机200。
主机200管理数据处理系统1000的总体操作。主机200可以在存储系统100中存储数据以及从存储系统100读取数据。例如,主机200可以向存储系统100发送写入命令和待写入数据或者读取命令。此外,主机200可以向存储系统100分配任务和数据以及控制存储系统100,使得存储系统100通过处理该数据来执行任务。例如,主机200可以向存储系统100发送用于执行任务的数据处理命令连同要在存储系统100中处理的数据,或者向存储系统100发送针对存储在存储系统100中的数据的数据处理命令。
主机200可以通过中央处理元件(cpu)、处理器、微处理器、应用处理器(ap)等来实现,根据实施例,主机200可以通过片上系统(soc)来实现。
根据示例实施例,存储系统100可以包括存储控制器110、非易失性存储器(nvm)120和计算设备130。存储系统100可以称为存储设备。存储系统100可以响应于来自主机200的命令而存储或处理数据。根据实施例,存储系统100可以通过用于加速数据处理的存储加速平台来实现。例如,存储系统100可以是固态驱动器(ssd)、嵌入式多媒体卡(emmc)、嵌入式ufs存储设备、ufs存储库、紧致闪存(cf)卡、安全数码(sd)卡、微sd卡、迷你sd卡、极速数码(xd)卡或记忆棒。
nvm120可以存储数据。nvm120可以存储从主机200提供的数据或者从计算设备130提供的数据。nvm120可以包括存储单元阵列(mca),其包括即使切断存储系统100的功率时也能够保持所存储数据的非易失性存储单元,并且mca可以划分成多个存储块。该多个存储块可以具有二维(2d)水平结构,其中存储单元被二维布置在同一平面(或层)上,或者具有三维(3d)竖直结构,其中非易失性存储单元是三维布置的。存储单元可以是存储1比特数据的单层级单元(slc)、存储2比特数据的多层级单元(mlc)、存储3比特数据的三层级单元(tlc)或存储4比特数据的四层级单元(qlc)。然而,存储单元不限于此,存储单元可以存储5比特或更多比特数据。
根据一些实施例,nvm120可以包括多个管芯(die),每个管芯包括mca,或者nvm120可以包括多个芯片。例如,nvm120可以包括多个芯片,并且该多个芯片中的每个可以包括多个管芯。根据实施例,nvm120可以包括多个通道,每个管芯包括多个芯片。
根据实施例,nvm120可以是nand闪速存储设备。然而,nvm120可以通过电阻存储设备来实现,诸如电阻随机存取存储器(ram)、相变ram和磁性ram。此后,基于nvm120是nand闪速存储设备的假设来描述实施例。
计算设备130用于对接收的数据执行数据处理,并且可以执行主机200分配的任务。根据实施例,计算设备130可以通过驱动应用对接收的数据(即,输入数据)执行并行数据处理。该应用可以包括与任务执行有关的多个数据操作,例如,算术操作、卷积操作、轮询操作等等。例如,当计算设备130执行基于神经网络的任务时,应用可以包括神经网络模型。基于各种类型的神经网络中至少一种,神经网络模型可以包括多个数据操作,并且输入和输出该多个数据操作的大小、权重、偏置等,各种类型的神经网络包括卷积神经网络(cnn)、区域cnn(r-cnn)、区域候选网络(rpn)、循环神经网络(rnn)、基于堆栈的深度神经网络(s-dnn)、状态-空间动态神经网络(s-sdnn)、反卷积网络、深度信念网络(dbn)、受限玻尔兹曼机(rmb)、全卷积网络、长短时记忆(lstm)网络以及分类网络。
例如,计算设备130可以通过图形处理元件(gpu)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、神经处理元件(npu)等来实现。然而,计算设备130不限于此,计算设备130可以通过各种类型的加速电路(加速器)来实现以执行为执行所分配任务所需的数据处理,例如并行数据操作。
存储控制器110可以管理存储系统100的总体操作以及控制nvm120和计算设备130,使得执行根据从主机200接收的命令的操作。例如,存储控制器110可以响应于来自主机200的写入或读取命令来控制nvm120,使得数据写入到nvm120上或从nvm120中读取,以及控制nvm120的擦除操作。此外,存储控制器110可以管理nvm120的各种操作,诸如垃圾收集、坏块管理、读回收和读替换,并且管理nvm120的功率。
此外,存储控制器110可以控制计算设备130,使得计算设备130执行任务。存储控制器110可以向计算设备130提供从主机200接收的或存储在nvm120中的数据和/或应用。存储控制器110可以配置或调整计算设备130的操作环境。具体地,存储控制器110可以在计算设备130执行任务时动态管理计算设备130的功率。
存储控制器110可以包括功率管理器30。功率管理器30可以监控计算设备130的实时操作状态,例如,利用率、温度、运行时间、时钟信号频率、驱动电压电平等等,并且基于监控结果来动态控制计算设备130的功率。利用率表示单位时间硬件资源的使用百分比,即处理数据的硬件资源中用于实际数据处理的硬件资源的百分比。例如,计算设备130可以包括多个处理元件(图2的pe),并且该多个处理元件中的至少一些可以被激活(或开启)以处理数据。利用率可以表示在被激活的处理元件中执行数据处理的处理元件的百分比。
根据实施例,功率管理器30可以调整提供给计算设备130的驱动电压或时钟信号频率中的至少一项。根据实施例,功率管理器30可以调整要提供给计算设备130的数据的传输速率。根据实施例,功率管理器30可以调整计算设备130的硬件资源的利用率。例如,功率管理器30可以确定包括在计算设备130中的多个处理元件(图2的pe)中要被激活以执行数据处理的至少一些处理元件的数目,并且激活该至少一些处理元件。
此外,功率管理器30可以分析要提供给计算设备130的数据的大小(即,数据量)和应用的特性,并基于分析结果配置计算设备130的操作环境。例如,功率管理器30可以通过分析应用特性和数据大小来计算数据处理量,即数据操作量,并且基于数据操作量确定多个处理元件中要被激活的至少一些处理元件的数目。功率管理器30可以基于数据操作量和计算设备130执行任务时的操作状态来管理计算设备130的功率。
图2图示了根据示例实施例的存储系统100。参考图2,存储系统100可以包括存储控制器110、nvm120、计算设备130、缓冲存储器140、电压发生器(vgen)150和时钟信号发生器(cgen)160。不再重复参考图1对存储控制器110、nvm120和计算设备130的描述。
缓冲存储器140可以在存储系统100中作为缓冲器操作,临时存储数据dt。缓冲存储器140可以存储从主机200接收的或从nvm120读取的数据dt,并存储由计算设备130生成的数据,例如任务执行结果,也即,计算设备130的输出数据dt_o。例如,当计算设备130基于存储在nvm120中的数据执行任务时,存储控制器110可以从nvm120读取数据dt并将数据dt存储在缓冲存储器140中。当计算设备130执行任务时,存储控制器110可以向计算设备130发送存储在缓冲存储器140中的数据dt作为输入数据dt_i。当计算设备130完成任务时,存储控制器110可以在缓冲存储器140中临时存储任务执行结果,也即计算设备130的输出数据dt_o,并且响应于来自主机200的请求而向主机200发送输出数据dt_o。
缓冲存储器140可以通过易失性存储器来实现,例如动态ram(dram)、静态ram(sram)等等,或者通过各种类型的非易失性存储器来实现,例如电阻非易失性存储器,诸如mram、pram、电阻ram(reram)等等,闪速存储器、纳米浮栅存储器(nfgm)、、聚合物ram(poram)、铁电ram(fram)等等。在本实施例中,缓冲存储器140提供在存储控制器110外部,但是缓冲存储器140也可以提供在存储控制器110的内部。
vgen150可以生成存储系统100中使用的各种电压。例如,vgen150可以通过功率管理集成电路(pmic)、功率管理单元(pmu)等来实现。vgen150可以基于从存储系统100的外部(例如,主机200)提供的外部电压来生成电压。根据实施例,vgen150可以生成nvm120的驱动电压,也即第一驱动电压vd1,以及计算设备130的驱动电压,也即第二驱动电压vd2,并将第一驱动电压vd1和第二驱动电压vd2分别提供给nvm120和计算设备130。vgen150可以在功率管理器30的控制下调整第一驱动电压vd1和/或第二驱动电压vd2的电压电平。
cgen160可以生成存储系统100中使用的各种时钟信号。例如,cgen160可以通过振荡器、锁相环(pll)、延时锁定环(dll)等来实现。cgen160可以生成nvm120使用的时钟信号,也即第一时钟信号clk1,以及计算设备130使用的时钟信号,也即第二时钟信号clk2。cgen160可以在功率管理器30的控制下调整第一时钟信号clk1和/或第二时钟信号clk2的频率。
如上面参考图1所描述的,当计算设备130正在执行任务时,存储控制器110的功率管理器30可以监控计算设备130的操作状态,并基于监控结果动态管理计算设备130的功率。功率管理器30可以周期性或非周期性地多次从计算设备130接收状态信息if_s,并基于该状态信息if_s管理计算设备130的功率。例如,状态信息if_s可以包括计算设备130的利用率、温度或运行时间中的至少一项,并且还可以包括时钟信号频率和驱动电压电平。时钟信号频率和驱动电压电平可以分别接收自vgen150和cgen160。
存储控制器110可以控制存储系统100的其他组件,例如nvm120、计算设备130、缓冲存储器140、vgen150和cgen160。存储控制器110可以响应于来自主机120的命令cmd而控制nvm120的写入和读取操作以及计算设备130的数据处理。
功率管理器30可以基于状态信息if_s生成用于计算设备130的功率控制的功率控制信号cs_pm,并向计算设备130、vgen150或cgen160中的至少一个发送该功率控制信号cs_pm。
根据实施例,功率管理器30可以动态调整计算设备130的第二驱动电压vd2的电压电平和/或第二时钟信号clk2的频率。功率管理器30可以向vgen150和/或cgen160发送功率控制信号cs_pm,其指示第二驱动电压vd2的电压电平和/或第二时钟信号clk2的频率的变化。
根据实施例,功率管理器30可以确定包括在计算单元131中的多个处理元件中要被激活以执行数据处理的至少一些处理元件pe的数目。在这种情况下,处理元件pe是处理单位操作的操作电路,其可以通过cpu的核、gpu的算术逻辑单元(alu)、fpga的查找表(lut)等来实现。
功率管理器30可以向计算设备130发送指示要被激活的处理元件pe的索引范围,作为功率控制信号cs_pm。相应地,可以动态改变要被激活以执行数据处理的处理元件pe的数目。
根据实施例,可以在存储控制器110和计算设备130之间提供第一路径p1和第二路径p2,诸如输入数据dt_i和输出数据dt_o之类的数据可以通过第一路径p1发送和接收,而包括状态信息if_s和功率控制信号cs_pm在内的各种类型的控制信号可以通过第二路径p2发送和接收。可以对第一路径p1和第二路径p2应用不同的接口方案。外围组件互连高速(pcie)方案可以用于第一路径p1,而互集成电路(i2c)接口方案可以用于第二路径p2。在实现方式中,第一路径p1和第二路径p2可以是应用相同的接口方案的同构路径。
根据实施例,功率管理器30可以调整输入数据dt_i的传输速率。当输入数据dt_i的传输速率增大时,计算设备130的功耗也可能增大,当输入数据dt_i的传输速率减小时,计算设备130的功耗也可能减小。然而,当输入数据dt_i的传输速率低于计算设备130的数据处理速率时,计算设备130的性能可能降低。因此,功率管理器30可以基于计算设备130的状态信息if_s来确定输入数据dt_i的传输速率,使得计算设备130的功耗降低但计算设备130的性能没有恶化。存储控制器110可以基于所确定的传输速率向计算设备130发送输入数据dt_i。
如参考图1和图2所描述的,在存储系统100中,存储控制器110可以配置计算设备130的操作环境并且动态管理计算设备130的功率。当计算设备130基于恒定电压和频率操作或最大限度地使用多个处理元件pe而不考虑应用的复杂性和数据量时,计算设备130的功耗可能增大,并且计算设备130的性能可能降低。然而,在根据实施例的存储系统100中,计算设备130的操作环境是根据应用的复杂性和数据量的,并且基于计算设备130的实时操作状态对功率进行动态管理,因此,计算设备130的功耗可以降低而没有性能恶化。
此外,在根据实施例的存储系统100中,存储控制器110管理功率,主机200仅确定任务分配和任务执行时间点,因此,可以最小化主机200的介入,由此可以减小主机200的工作负荷。
同时,如果计算设备130在执行任务的同时直接管理功率,则计算设备130的硬件资源用于功率管理,并且因此计算设备130的性能可能降低,但是在根据实施例的存储系统100中,存储控制器110动态管理计算设备130的功率,因此计算设备130的硬件资源可以最大限度地被分配给应用的驱动加速,也即,并行数据处理,由此提高计算设备130的性能。
图3图示了根据示例实施例的存储控制器110。参考图3,存储控制器110可以包括处理器10、ram20、功率管理器30、主机接口(i/f)电路40、缓冲i/f电路50、设备i/f电路60和nandi/f电路(或nand闪速i/f)70。存储控制器110的组件,例如处理器10、ram20、功率管理器30、主机i/f电路40、缓冲i/f电路50、设备i/f电路60和nandi/f电路,可以经由总线80相互通信。
处理器10可以包括cpu、微处理器等,并控制存储控制器110的总体操作。根据实施例,处理器10可以通过多核处理器,例如双核、四核处理器等来实现。
ram20在处理器10的控制下操作并且可以用作操作存储器、缓冲存储器、高速缓存存储器等等。例如,ram20可以通过易失性存储器来实现,例如dram、sram等,或者通过非易失性存储器来实现,例如pram、闪速存储器等等。ram20可以存储用于控制存储控制器110的固件和数据。所存储的固件和数据可以被处理器10驱动或处理。通过固件实现的存储控制器110的软件层级架构可以包括接口层、闪存转换层(ftl)等等。
功率管理器30可以动态管理包括存储控制器110的存储系统(图2的100)的功率。如上所述,功率管理器30可以配置计算设备(图2的130)的操作环境并动态管理计算设备130的功率。功率管理器30可以通过软件(或固件)、硬件或其组合来实现。当功率管理器30通过软件实现时,形成功率管理器30的程序指令可以加载到ram20上并由处理器10执行。
主机i/f电路40在处理器10的控制下与外部主机200通信。主机i/f电路40可以采用各种接口方案中的至少一种,例如,通用串行总线(usb)、高级技术附件(ata)、串行ata(sata)、并行ata(pata)、串行附接小型计算机系统接口(sas)、高速芯片间互连(hsic)、小型计算机系统接口(scsi)、外围组件互连(pci)、pci高速(pcie)、ufs、sd、mmc、emmc、双列直插式存储模块(dimm)、寄存dimm(rdimm)、负荷降低dimm(lrdimm)、增强小磁盘接口(esdi)、集成驱动电子(ide)等等。
缓冲i/f电路50提供存储控制器110与缓冲存储器140之间的接口。要存储到nvm120中的数据、从nvm120读取的数据或者计算设备130的输出数据(图2的dt_o)可以通过缓冲i/f电路50临时存储在缓冲存储器140中。
设备i/f电路60提供存储控制器110与计算设备130之间的接口。此外,设备i/f电路60可以提供存储控制器110和vgen(图2的150)之间以及存储控制器110和cgen(图2的160)之间的接口。
nandi/f电路70可以提供存储控制器110和nvm120之间的接口。例如,映射表、写入数据和读取数据可以通过nandi/f电路70在存储控制器110和nvm120之间发送和接收。根据实施例,nandi/f电路70的数目可以对应于包括在存储系统100中的非易失性存储器芯片的数目或者对应于存储控制器110与nvm120之间的通道数目。根据实施例,nandi/f电路70可以提供作为存储控制器110和计算设备130之间的控制路径,例如第二路径(图2的p2)。
在实现方式中,存储控制器110还可以包括检错纠错(ecc)引擎等以对要存储在nvm120中的数据进行编码以及对从nvm120读取的数据进行解码。
图4图示了根据示例实施例的计算设备130。参考图4,计算设备130可以包括计算单元131、存储器132、控制逻辑133、温度传感器134和i/f电路135。
计算单元131可以包括多个处理元件pe并执行分配给计算设备130的任务。该多个处理元件pe中被激活的处理元件pe,例如,开启状态的处理元件pe,可以执行数据处理。
存储器132可以存储从外部接收的数据或在计算设备130内部生成的数据。例如,存储器132可以存储输入数据dt_i以及存储在计算单元131处理至少一部分输入数据dt_i时生成的中间数据和/或输出数据dt_o。存储器132也可以存储接收的应用。存储器132可以通过易失性存储器来实现,例如dram、sram等,或者通过非易失性存储器实现,例如电阻非易失性存储器,诸如mram、pram或reram等等,闪速存储器、nfgm、poram、fram等等。
控制逻辑133可以控制计算单元131和存储器132,从而基于应用执行任务。此外,控制逻辑133可以计算硬件资源(也即,计算单元131)的利用率和单位数据处理的运行时间,并且生成关于利用率和运行时间的信息,也即利用率信息if_ul和运行时间信息if_r。
温度传感器134可以感测计算设备130内部的温度并生成温度信息if_tp。温度信息if_tp可以被发送给存储控制器110。当计算设备130执行任务时,处理元件pe操作并因此产生热量。计算设备130的温度可以影响计算设备130的性能和耐用性。计算设备130温度的增加可能导致计算设备130的功耗增大。当温度增加到阈值以上时,计算设备130可能损坏。因此,可以基于温度传感器134感测的温度来动态管理计算设备130的功率和热量节流(throttling)。
i/f电路135提供存储控制器110和计算设备130之间的接口。通过i/f电路135,可以从存储控制器110接收例如功率控制信号cs_pm的控制信号以及输入数据dt_i,并且可以向存储控制器110发送例如利用率信息if_ul、运行时间信息if_r和温度信息if_tp之类的状态信息或输出数据dt_o。
尽管图4示出计算设备130包括一个i/f电路135,计算设备130也可以包括多个i/f电路135。例如,当对数据传输路径和控制信号与状态信息传输路径应用不同的接口方案时,计算设备130可以包括至少两个i/f电路135。
图5图示了根据示例实施例的存储系统100的操作方法。图5图示了配置计算设备130的操作环境的方法。
参考图5,可以从主机200接收数据处理命令cmd_dp。根据实施例,数据处理命令cmd_dp可以包括分配与将由计算设备130执行的任务关联的应用app和数据dt的指示。存储控制器110可以从nvm120读取该应用app和数据dt并将应用app和数据dt存储在缓冲存储器140中。存储控制器110可以向计算设备130发送应用app和数据dt。数据dt可以作为输入数据dt_i存储在计算设备130的存储器132中。根据实施例,主机200可以提供应用app或数据dt的至少一项,并且如上所述的,从主机200发送的该应用app和数据dt可以临时存储在缓冲存储器140中,并继而发送到计算设备130。
在这种情况下,存储控制器110的功率管理器30可以分析应用app的特性和数据dt的大小(也即,数据量),并基于分析结果来配置计算设备130的操作环境。
根据实施例,功率管理器30可以通过分析应用app的特性和数据dt的大小来计算数据处理量,也即数据操作量,并基于数据操作量来确定要在其上执行数据处理的多个处理元件pe中至少一些处理元件pe(也即,要被激活的处理元件pe)的数目。功率管理器30可以生成对要被激活的至少一些处理元件pe的数目加以指示的索引范围控制信号cs_ir,并将该索引范围控制信号cs_ir作为功率管理控制信号发送给计算设备130。计算设备130可以响应于索引范围控制信号cs_ir,激活该多个处理元件pe中对应于所确定的数目的至少一些处理元件pe。
根据实施例,功率管理器30可以基于分析结果确定提供给计算设备130的第二驱动电压vd2的电压电平和第二时钟信号clk2的频率。在一种实现中,第二驱动电压vd2的电压电平和第二时钟信号clk2的频率可以分别根据预设的初始值来确定。
可以从主机200接收执行命令cmd_ex,并且存储控制器110可以向计算设备130发送执行命令cmd_ex或对应于执行命令cmd_ex的控制信号。响应于执行命令cdm_ex,计算设备130可以通过基于应用app对输入数据dt_i执行数据处理来执行任务。
图6图示了根据示例实施例的存储系统100的操作方法。图6图示了动态管理计算设备130的功率的方法。
参考图6,计算设备130可以对输入数据dt_i执行数据处理。激活的处理元件pe,也即开启状态的处理元件pe,可以根据分配的应用对输入数据dt_i执行数据处理。根据数据处理生成的中间处理结果dt_mo可以存储在存储器132中并在数据处理中再使用。存储在缓冲存储器140中的待处理数据dt可以作为输入数据dt_i以特定单元(例如,分组单元)发送给计算设备130。
当计算设备130正在操作时,也即任务正在执行时,存储控制器110可以管理计算设备130的功率。存储控制器110可以在计算设备130正执行任务时监控计算设备130的操作状态。具体地,功率管理器30可以通过从计算设备130接收状态信息if_s来监控计算设备130的操作状态。状态信息if_s可以包括利用率信息if_ul、运行时间信息if_r或温度信息if_tp中的至少一项。功率管理器30也可以接收第二驱动电压vd2的电压电平信息和第二时钟信号clk2的频率信息。根据实施例,存储控制器110可以周期性或非周期性地接收状态信息if_s。
功率管理器30可以基于状态信息if_s来管理计算设备130的功率。作为一个示例,功率管理器30可以基于利用率信息if_ul来动态调整第二驱动电压vd2的电压电平和第二时钟信号clk2的频率中的至少一项。例如,功率管理器30可以在计算设备130的利用率低于目标值时增大频率和电压电平。功率管理器30可以向vgen150和cgen160分别发送指示电压电平变化和频率变化的电压控制信号cs_v和频率控制信号cs_f。vgen150和cgen160可以分别基于电压控制信号cs_v和频率控制信号cs_f改变第二驱动电压vd2的电压电平和第二时钟信号clk2的频率。
功率管理器30也可以基于温度信息if_tp来调整第二驱动电压vd2的电压电平和第二时钟信号clk2的频率中的至少一项。例如,功率管理器30可以在计算设备130的温度高于目标值时降低频率和电压电平。相应地,可以动态管理计算设备130的热量节流。
作为另一示例,功率管理器30可以基于利用率信息if_ul调整计算设备130的硬件资源的利用率。例如,功率管理器30可以管理该多个处理元件pe中要被激活的至少一些处理元件pe的数目。例如,功率管理器30可以在利用率低于目标值时增大要被激活的至少一些处理元件pe的数目。功率管理器30可以向计算设备130发送对要被激活的至少一些处理元件pe的数目的变化值加以指示的索引范围控制信号cs_ir。计算单元131可以基于该索引范围控制信号cs_ir增大要被激活的至少一些处理元件pe的数目。
作为另一示例,功率管理器30可以基于运行时间信息if_r调整输入数据dt_i的传输速率。例如,当运行时间比参考值快时,可以降低输入数据dt_i的传输速率。
图7a和图7b是示出根据实施例动态调整提供给存储系统中的计算设备的驱动电压的电压电平和时钟信号频率的示例的图。参考图6和图7a,功率管理器30可以动态改变要提供给计算设备130的驱动电压(第二驱动电压vd2)的电压电平。参考图6和图7b,功率管理器30可以动态改变要提供给计算设备130的时钟信号(第二时钟信号clk2)的频率。
如上面参考图6所描述的,功率管理器30可以周期性或非周期性地接收状态信息if_s并基于状态信息if_s改变驱动电压的电压电平。例如,功率管理器30可以在时间点t1接收状态信息if_s并基于状态信息if_s将驱动电压的电压电平从第一电平vl1改变成第二电平vl2,此后,在时间点t2接收状态信息if_s并基于状态信息if_s将驱动电压的电压电平从第二电平vl2改变成第三电平vl3。
如上面参考图6所描述的,功率管理器30可以周期性或非周期性地接收if_s并基于状态信息if_s改变时钟信号(也即第二时钟信号clk2)的频率。例如,功率管理器30可以在时间点t1接收状态信息if_s并基于状态信息if_s将时钟信号的频率从第一频率f1改变成第二频率f2,此后,在时间点t2接收状态信息if_s并基于状态信息if_s将时钟信号的频率从第二频率f2改变成第三频率f3。
如上所述,功率管理器30可以根据计算设备130的操作状态动态改变提供给计算设备130的驱动电压的电压电平和时钟信号的频率。
图8a和图8b示出了根据实施例调整存储系统中的计算设备的硬件利用率的示例。参考图8a和图8b,包括在计算设备中的计算单元131可以包括多个处理元件pe。功率管理器(图6的30)可以基于状态信息(图6的if_s)减小要被激活的至少一些处理元件pe的数目(如图8a所示),或者可以增大要被激活的至少一些处理元件pe的数目(如图8b所示)。功率管理器30可以根据计算设备130的操作状态调整要被激活的至少一些处理元件pe的数目。
图9示出了根据实施例调整要传输到存储系统中的计算设备的输入数据的传输速率的示例。参考图6和图9,输入数据dt_i可以以特定单元从缓冲存储器140发送到计算设备130,并且功率管理器30可以调整传输速率。
例如,输入数据dt_i可以以分组单元发送。第一到第六分组pk0到pk5可以向计算设备130顺序发送。功率管理器30可以在时间点t1接收状态信息if_s并基于状态信息if_s降低传输速率,使得第三分组pk2和第四分组pk3的发送周期为t2,长于先前发送第一分组pk0和第二分组pk1的周期t1。此后,功率管理器30可以在时间点t2接收状态信息if_s并基于状态信息if_s增大传输速率。在时间点t2之后,可以增大输入数据dt_i的传输速率,使得第五分组pk4和第六分组pk5的发送周期为t3,短于发送第三分组pk2和第四分组pk3的周期t2。
参考图6,功率管理器30可以基于管理数据mdt来管理功率。管理数据mdt可以存储在nvm120中,并且存储控制器110可以将管理数据mdt加载到缓冲存储器140或内部ram(图3的20)中,并基于状态信息if_s、参考管理数据mdt来管理功率。管理数据mdt是用于计算设备130的功率管理的数据,其可以是数据表、元数据、比特文件等。例如,管理数据mdt可以包括对应于利用率的、驱动电压和时钟信号频率的缩放因子。
图10a到图10d是图示根据示例实施例的管理数据的表格。在图10a到10d中,a、b和c是频率缩放因子sf_f的值,而d、e和f是电压缩放因子sf_v的值。
参考图10a,管理数据mdta可以包括对应于利用率ul的频率缩放因子sf_f和电压缩放因子sf_v。例如,当计算设备130的利用率ul为20%时,功率管理器30可以分别基于频率缩放因子sf_f和电压缩放因子sf_v将时钟信号(也即第二时钟信号clk2)的频率增大bmhz(兆赫兹)和/或将驱动电压(也即第二驱动电压vd2)的电压电平增大ev(伏特)。
参考图10b,管理数据mdtb可以包括对应于当前利用率和目标利用率之间的差(也即利用率增量值dul)的频率缩放因子sf_f和电压缩放因子sf_v。例如,当当前利用率为80%并且目标利用率为60%时,功率管理器30可以基于对应于利用率增量值dul(也即,-20%)的频率缩放因子sf_f和电压缩放因子sf_v将第二时钟信号clk2的频率减小bmhz和/或将第二驱动电压vd2的电压电平减小ev。
参考图10c,管理数据mdtc可以包括对应于温度tp的频率缩放因子sf_f和电压缩放因子sf_v。例如,当计算设备130的温度是50°时,功率管理器30可以基于对应于50°的温度tp的频率缩放因子sf_f和电压缩放因子sf_v将第二时钟信号clk2的频率减小cmhz和/或将第二驱动电压vd2的电压电平减小fv。
参考图10d,管理数据mdtd可以包括对应于当前温度和目标温度之间的差(也即温度增量值dtp)的频率缩放因子sf_f和电压缩放因子sf_v。例如,当当前温度为50°并且目标温度为30°时,温度增量值dtp为-20°,功率管理器30可以基于对应于温度增量值dtp(也即,-20°)的频率缩放因子sf_f和电压缩放因子sf_v将第二时钟信号clk2的频率减小amhz和/或将第二驱动电压vd2的电压电平减小dv。
已经作为示例描述了由功率管理器30执行的、基于状态信息if_s和管理数据来管理计算设备130的功率的方法。然而,功率管理器30可以基于状态信息if_s通过多种方式来管理计算设备130的功率,并且管理数据可以通过各种格式配置。
图11图示了根据示例实施例的存储系统100的操作方法。图11图示了在计算设备130完成任务后存储系统100的操作方法。
参考图11,当任务完成时,任务执行结果(也即,输出数据dt_o)可以存储在存储器132中。存储控制器110可以将来自计算设备130的输出数据dt_o存储在缓冲存储器140中。
存储控制器110可以控制计算设备130,使得计算设备130处于低功率状态(空闲状态或关闭状态)。例如,存储控制器110可以向计算设备130发送指示切换到空闲状态的状态切换信号cs_idle。根据实施例,存储控制器110可以向vgen150和cgen160分别发送电压控制信号cs_v和频率控制信号cs_f以控制第二驱动电压vd2和第二时钟信号clk2,使得提供给计算设备130的第二驱动电压vd2的电压电平和第二时钟信号clk2的频率分别具有最小值。相应地,计算设备130可以切换到空闲状态并且可以最小化计算设备130的功耗。
存储控制器110可以向主机200发送输出数据dt_o。例如,存储控制器110可以响应于来自主机200的请求向主机200发送输出数据dt_o。
图12是根据示例实施例的存储系统的操作方法流程图。本实施例涉及图1的存储系统100的操作方法,因此上面参考图1到图11进行的描述也适用于本实施例。
参考图12,在操作s110,存储控制器110可以从主机200接收数据处理命令。数据处理命令可以包括关于分配与将由计算设备130执行的任务关联的应用和输入数据的指示。根据实施例,存储控制器100可以从nvm120读取该应用和输入数据。根据实施例,可以从主机200提供该应用和输入数据。
在操作s120,存储控制器110可以基于要发送到计算设备130的应用和输入数据来配置计算设备130的操作环境。根据实施例,存储控制器110可以分析应用的特性和输入数据的量。存储控制器110可以基于分析结果计算数据操作量,并基于数据操作量确定计算设备130的硬件利用率。例如,存储控制器110可以确定(或调整)包括在计算设备130中的多个处理元件中要被激活以执行数据处理的至少一些处理元件的数目。
在操作s130,计算设备130可以基于接收的应用和输入数据来执行数据处理。计算设备130可以在操作s120中配置的操作环境中执行数据处理。
在操作s140,存储控制器110可以在计算设备130正执行数据处理时接收计算设备130的操作状态,例如状态信息。存储控制器110可以通过周期性或非周期性地监控计算设备130来接收计算设备130的操作状态。存储控制器110可以接收关于计算设备130的特性的信息,例如利用率、运行时间、温度等等,还可以接收计算设备130的驱动电压的电压电平和时钟信号的频率。根据实施例,计算设备130可以响应于存储控制器110的请求而向存储控制器110周期性地发送该信息。
在操作s150,存储控制器110可以基于计算设备130的操作状态来管理计算设备130的功率。如参考图6到图10所描述的,存储控制器110可以基于指示计算设备130的操作状态的各种数据来动态管理计算设备130的功率。计算设备130可以在根据存储控制器110的功率管理而改变的操作环境中执行数据处理。例如,存储控制器110可以基于操作状态改变计算设备130的驱动电压的电平和/或计算设备130的时钟信号的频率。相应地,计算设备130可以基于改变的驱动电压的电压电平和改变的时钟信号频率来执行数据处理。
当数据处理完成时,计算设备130可以向存储控制器110发送数据处理结果,并在操作s170中切换到低功率状态。根据实施例,存储控制器110可以将接收的数据处理结果存储在缓冲存储器140中,并向计算设备130发送用于控制计算设备130到低功率状态(例如,空闲状态或关闭状态)的控制信号。
在操作s180,存储控制器110可以向主机200发送数据处理结果。根据实施例,存储控制器110可以响应于主机200的请求而向主机200发送数据处理结果。
图13图示了根据实施例的存储系统100a和数据处理系统1000a。参考图13,数据处理系统1000a可以包括主机200和存储系统100a,而存储系统100a可以包括存储控制器110、nvm120和计算设备130a。图13的数据处理系统1000a的配置和操作类似于图1的数据处理系统1000的配置和操作。
图13与图1的区别仅在于计算设备130a可以直接与主机200通信。计算设备130a可以通过第一路径p1a与存储控制器110通信以及通过第二路径p2a与主机200通信。计算设备130a可以包括用于与存储控制器110通信的第一接口if1和用于与主机200通信的第二接口if2。
存储控制器110和计算设备130a之间的通信和操作可以与上面参考图1到图12描述的相同。存储控制器110可以监控计算设备130a的操作状态并动态管理计算设备130a的功率。
计算设备130a可以通过第二路径p2a从主机200接收未存储在nvm120中的数据dt或命令cmd。例如,计算设备130a可以通过第二路径p2a从主机200接收实时数据dt(例如,日志数据),并且处理所接收的数据dt。根据实施例,计算设备130a可以通过第二路径p2a接收应用。计算设备130a可以通过第二路径p2a直接向主机200发送数据处理结果。备选地,计算设备130a可以通过第一路径p1a向存储控制器110发送数据处理结果,存储控制器110可以向主机200发送该数据处理结果。
图14图示了根据示例实施例的存储系统100b。参考图14,存储系统100b可以包括存储控制器110b、nvm120和计算设备130。存储控制器110b可以包括第一控制器111和第二控制器112。存储系统100b还可以包括缓冲存储器、vgen、cgen等等。
第一控制器111可以管理存储系统100b的普通操作,而第二控制器112可以管理nvm120的写入/读取操作。第一控制器111可以管理存储系统100b的功率,例如,动态管理计算设备130的功率。第一控制器111可以包括功率管理器30,并且功率管理器30可以周期性或非周期性地接收指示计算设备130的操作状态的状态信息if_s,并基于状态信息if_s生成用于控制计算设备130的功率的功率控制信号cs_pm。功率管理器30的详细操作已在上文描述。
第二控制器110可以在第一控制器111和nvm120之间并且可以调度nvm120的编程操作。例如,第一控制器111可以与主机200通信并向第二控制器112发送从主机200接收的写入数据。第二控制器112可以缓冲从第一控制器111接收的数据并调度该数据的编程。根据实施例,第一控制器111可以将逻辑地址转换成物理地址并向第二控制器112发送该物理地址。第二控制器112可以控制nvm120,使得写入数据被编程在nvm120的存储区域中对应于该物理地址的存储区域中。
根据实施例,第一控制器111和第二控制器112的每一个可以通过半导体器件(例如,半导体芯片)来实现,并且包括用于与外部设备通信的至少一个接口电路。第一控制器111可以包括用于与主机200、第二控制器112和计算设备130通信的接口电路,第二控制器112可以包括用于与第一控制器111和nvm120通信的接口电路。
图15图示了根据示例实施例的数据处理系统1000c。参考图15,数据处理系统1000c可以包括主机200、存储设备100c和计算设备300。存储设备100c可以包括存储控制器110和nvm120。存储设备100c和计算设备300的每一个可以通过半导体器件(例如半导体芯片或半导体模块)来实现,并且存储设备100c和计算设备300可以称为存储系统。
存储设备100c可以与主机200通信并且通过直接路径dp与计算设备300直接通信。存储设备100c可以通过直接路径dp向计算设备300发送数据dt以及动态管理计算设备300的功率。包括在存储控制器110中的功率管理器30可以周期性或非周期性地接收计算设备300的状态信息if_s,以及基于状态信息if_s动态管理计算设备300的功率。功率管理器30可以生成用于控制计算设备300的功率的功率控制信号cs_pm,并向计算设备300发送该功率控制信号cs_pm。
计算设备300可以基于从主机200分配的任务和数据来执行任务。也即,计算设备300可以执行数据处理。计算设备300可以从主机200接收用于执行任务的应用和输入数据。根据实施例,计算设备300可以与主机200直接通信并从主机200接收应用和输入数据。
图16图示了根据示例实施例的数据处理系统1000d。参考图16,数据处理系统1000d可以包括多个(第一到第四)存储系统100_1、100_2、100_3和100_4以及主机200。该多个存储系统100_1、100_2、100_3和100_4和主机200可以经由总线600相互通信。
该多个存储系统100_1、100_2、100_3和100_4可以分别包括存储控制器110_1、110_2、110_3和110_4以及nvm120_1、120_2、120_3和120_4。该多个存储系统100_1、100_2、100_3和100_4中的至少一个,例如第一存储系统100_1可以包括计算设备130。参考图1、图13和图14描述的存储系统100、100a和100b可以用作第一存储系统100_1,存储控制器110_1中的功率管理器30可以基于计算设备130的操作状态来动态管理计算设备130的功率。
计算设备130可以对存储在第一存储系统110_1中的数据,也即存储在nvm120_1中的数据,或从另一存储系统100_2、100_3或100_4提供的数据,执行数据处理。例如,第二存储系统100-2可以向第一存储系统110_1发送数据dt,计算设备130可以对从第二存储系统100_2接收的数据dt执行数据处理。根据实施例,第二存储系统100_2可以通过直接存储器存取(dma)机制直接向第一存储系统110_1发送数据dt,而无需通过主机200传递。
根据实施例,多个存储系统100_1、100_2、100_3和100_4中的每个可以通过一个模块来实现并安装在主板的槽中。例如,多个存储系统100_1、100_2、100_3和100_4可以安装在pcie槽中并通过pcie总线与主机200和其他存储系统通信。因为该多个存储系统100_1、100_2、100_3和100_4中的至少一个,例如第一存储系统100_1,包括计算设备130,因此不需要单独的槽来安装计算设备130。相应地,根据实施例的数据处理系统1000d可以包括加速功能并保持数据存储容量。此外,由于第一存储系统100_1的存储控制器110_1动态管理计算设备130的功率,计算设备130的性能可以改善,并且主机200用于功率管理的工作负荷可以降低。
图17图示了根据示例实施例的ssd系统2000。参考图17,ssd系统2000可以包括主机2100和ssd2200。ssd2200可以通过信号连接器向主机2100发送信号sgl以及从主机2100接收信号sgl,并通过功率连接器接收功率pwr。ssd2200可以包括ssd控制器2210、多个存储设备2230、2240和2250、计算设备130和辅助电源2220。图1、图13和图14的存储系统100、100a和100b可以用作ssd2200。包括在ssd控制器2210中的功率管理器30可以基于计算设备130的操作状态来动态管理计算设备130的功率。辅助电源2220可以生成将由ssd2200使用的各种电流的电压v,例如计算设备130的驱动电压。功率管理器30可以基于计算设备130的操作状态,通过控制辅助电源2220来调整计算设备130的驱动电压的电压电平。此外,功率管理器30可以基于计算设备130的操作状态来动态调整计算设备130的时钟信号的频率或计算设备130的硬件资源利用率。相应地,计算设备130的性能可以改善,主机2100用于功率管理的工作负荷可以降低。
根据上述实施例的存储系统不仅可以安装在或应用于ssd系统2000,而且可以用于存储卡系统、计算系统、ufs等等。
实施例提供了包括计算设备的存储系统,其中存储控制器根据计算设备的操作状态来动态管理计算设备的功率,还提供了存储系统的操作方法。
以功能块、单元、模块和/或方法的形式描述了实施例并在图中示出。本领域技术人员将理解,这些块、单元、模块和/或方法通过电子(或光学)电路在物理上实现,诸如逻辑电路、分立器件、微处理器、硬线电路、存储器元件、布线连接等等,其可以使用基于半导体的加工技术或其他制造技术形成。在块、单元、模块和/或方法通过微处理器或类似方式实现的情况下,它们可以使用软件(例如,微代码)进行编程以执行本文讨论的各种功能,并且可以可选地由固件和/或软件驱动。备选地,每个块、单元、模块和/或方法可以通过专用硬件来实现,或者作为执行部分功能的专用硬件和执行其他功能的处理器(例如,一个或多个编程微处理器及其关联电路)的组合来实现。同样,实施例的每个块、单元和/或模块可以物理上分离成两个或更多交互的分立块、单元和/或模块而不偏离本公开范围。进一步地,实施例的块、单元和/或模块可以物理上合并成更复杂的块、单元和/或模块而不偏离本公开范围。
本文已经描述了示例实施例,尽管采用了特定术语,但是它们仅在通用和描述性意义上使用和解释,而不是限制目的。在一些实例中,对于本申请提交时的本领域普通技术人员将明显的是,结合特定实施例描述的特征、特性和/或元素可以单独使用或者与结合其他实施例描述的特征、特性和/或元素合并使用,除非特别指出。相应地,本领域技术人员将理解,可以做出形式和细节上的各种改变而不偏离如下权利要求中阐明的本发明的精神和范围。