缓冲器分配的控制器和存储装置及操作存储装置的方法与流程

文档序号:14609348发布日期:2018-06-05 20:29阅读:173来源:国知局
缓冲器分配的控制器和存储装置及操作存储装置的方法与流程

技术领域

与示例实施例一致的方法和设备涉及一种控制器,更具体地讲,涉及一种提供高效缓冲器分配的控制器和存储装置以及存储装置的操作方法。



背景技术:

作为半导体存储器装置,非易失性存储器装置包括用于以非易失性方式存储数据的存储器单元。作为非易失性存储器装置的示例的闪存装置被用在各种类型的存储装置(诸如,存储器卡和固态硬盘(SSD))中,存储装置可在各种电子系统(诸如,移动电话、数码相机、个人数字助理(PDA)、便携式计算机和固定计算机)中被利用和使用。

存储装置可基于主机的请求来存储和读取数据。存储装置可包括多个闪存装置,并通过多个通道执行闪存装置的存储器操作(例如,数据写入和数据读取操作)。存储装置可包括用于暂时存储数据的存储元件(例如,缓冲器),并且写入数据或读取数据在存储器操作中可被暂时存储在缓冲器中。

存储器操作可在每个通道中执行,并且每个单独的通道可具有不同的操作状态。例如,多个存储器操作可处于将通过特定通道执行的待命状态。因此,如果通过特定通道针对存储器操作分配缓冲器,则将缓冲器解除分配可能会花费很长时间。照此,保持缓冲器的分配的寿命(lifetime)可被增加,并且缓冲器的可用性可被降低。



技术实现要素:

一个或多个示例实施例提供一种用于高效缓冲器分配的控制器和存储装置以及存储装置的操作方法。

根据示例实施例的方面,提供一种存储装置,包括:非易失性存储器,包括多个非易失性存储器单元;缓冲器,包括被配置为被分配给从主机获取的多个命令的多个存储空间;存储控制器,通过多个通道连接到非易失性存储器,所述存储控制器被配置为存储与所述多个通道中的每个通道的工作量对应的状态信息并将缓冲器分配给所述多个命令,其中,分配基于状态信息。

根据另一示例实施例的方面,提供一种被配置为通过多个通道控制非易失性存储器的存储控制器,所述存储控制器包括:中央处理器(CPU);获取电路,被配置为从主机获取多个命令;存储器,被配置为存储与所述多个通道中的每个通道的工作量对应的状态信息;预测和监视块,被配置为预测所述多个通道中的将被映射到所述多个命令的通道,并基于状态信息监视预测的通道的状态;缓冲器,包括基于监视的结果而将被分配给所述多个命令的多个存储空间。

根据另一示例实施例的方面,提供一种操作存储装置的方法,所述存储装置包括与第一通道对应的第一队列以及与第二通道对应的第二队列,所述方法包括:从主机顺序获取第一命令和第二命令,第一通道映射到第一命令,第二通道映射到第二命令;监视第一通道和第二通道的状态;基于指示将第二命令排队在第二队列中合适的监视的结果,优先将缓冲器分配给第二命令。

根据另一示例实施例的方面,提供一种被配置为通过多个通道控制非易失性存储器的存储控制器,所述存储控制器包括:缓冲器,包括将被分配给从主机接收的多个命令的多个存储空间;控制器,被配置为监视所述多个通道中的每个通道的状态,并基于所述多个通道中的每个通道的状态将缓冲器分配给多个命令。

附图说明

通过下面结合附图的详细描述,示例实施例将被更加清楚地理解,其中:

图1是根据示例实施例的电子系统的框图;

图2是根据示例实施例的被实现为固态硬盘(SSD)的存储装置的框图;

图3是根据示例实施例的控制器的框图;

图4A和图4B示出根据一个或多个示例实施例的存储在随机存取存储器(RAM)中的信息;

图5A和图5B示出根据一个或多个示例实施例的非易失性存储器的写入和读取操作中的缓冲器的寿命(lifetime);

图6至图8是根据一个或多个示例实施例的存储装置的操作方法的流程图;

图9是示出根据示例实施例的缓冲器分配操作的流程的框图;

图10示出基于是否使用根据示例实施例的缓冲器分配方案的缓冲器寿命的示例;

图11是示出根据示例实施例的缓冲器分配操作通过软件实现的示例的框图;

图12是根据示例实施例的存储装置的操作方法的流程图;

图13A、图13B、图14A、图14B、图15A、图15B、图15C和图16示出根据一个或多个示例实施例的各种状态信息产生操作和缓冲器分配操作;

图17是根据示例实施例的存储装置的操作方法的流程图;

图18是根据示例实施例的电子系统的框图。

具体实施方式

图1是根据示例实施例的电子系统10的框图。

参照图1,根据示例实施例的电子系统10包括主机100和存储装置200。存储装置200可以是固态硬盘(SSD)。然而,示例实施例不限于此,并且存储装置200可被实现为各种类型的装置(诸如,嵌入式多媒体卡(eMMC)、通用闪存(UFS)卡、紧凑型闪存(CF)卡、安全数字(SD)卡、微型安全数字(Micro SD)卡、迷你安全数字(Mini-SD)卡、极端数字(xD)卡和记忆棒)。

存储装置200可通过各种接口与主机100进行通信。主机100可请求存储装置200的数据处理操作(例如,数据读取操作或数据写入操作)。在示例实施例中,主机100可以是中央处理器(CPU)、处理器、微处理器、应用处理器(AP)等。根据示例实施例,主机100可被实现为片上系统(SoC)。

针对存储装置200与主机100之间的通信,可使用各种接口(诸如,先进技术附件(ATA)接口、串行ATA(SATA)接口、外部SATA(e-SATA)接口、小型计算机系统接口(SCSI)、串行连接SCSI(SAS)接口、外围组件互连(PCI)接口、PCI快速(PCI-E)接口、IEEE 1394接口、通用串行总线(USB)接口、安全数字(SD)卡接口、多媒体卡(MMC)接口、嵌入式多媒体卡(eMMC)接口和紧凑型闪存(CF)卡接口)。

存储装置200可包括非易失性存储器(NVM)220,其中,非易失性存储器(NVM)220包括多个非易失性存储器单元。在示例实施例中,非易失性存储器220可包括多个闪存单元。例如,闪存单元可以是NAND闪存单元。然而,示例实施例不限于此,并且存储器单元可以是电阻式存储器单元(诸如,电阻式随机存取存储器(ReRAM)单元)、相变RAM(PRAM)单元或磁RAM(MRAM)单元。

在示例实施例中,非易失性存储器220可以是三维(3D)存储器阵列。3D存储器阵列被单片地产生在均具有设置在硅基底上的有源区域的多个存储器单元阵列的至少一个物理级中,并且与存储器单元的操作有关的电路可设置在基底上或基底中。术语“单片地”指示阵列的每个级的层直接堆叠在阵列的下一级的层上。在示例实施例中,3D存储器阵列包括垂直NAND串,其中,在每个垂直NAND串中,至少一个存储器单元沿垂直方向被设置在另一存储器单元上。该至少一个存储单元可包括电荷捕获层。

这里通过引用包含的第7,679,133、8,553,466、8,654,587和8,559,235号美国专利以及公开号为2011/0233648的美国专利申请公开了共享字线和/或位线的多个级中设置的3D存储器阵列的适当配置。

存储装置200还可包括用于控制非易失性存储器220的存储器操作(例如,数据写入或读取操作)的存储控制器(以下,被称为控制器)210。存储装置200还可包括用于在数据写入和读取操作中暂时存储数据的缓冲器230。例如,缓冲器230可被实现为易失性存储器(诸如,动态RAM(DRAM)或静态RAM(SRAM))。例如,缓冲器230可包括用于暂时存储写入数据的写入数据缓冲器和用于暂时存储读取数据的读取数据缓冲器。可选地,缓冲器230可包括在控制器210中。

控制器210可通过一个或多个通道CH1至CHM来控制非易失性存储器220的存储器操作。例如,控制器210可通过M个通道CH1至CHM连接到非易失性存储器220,并将数据写入非易失性存储器220或从非易失性存储器220读取数据。例如,控制器210可并行控制连接到不同通道的非易失性存储器220。

根据示例实施例,非易失性存储器220可包括多个存储器芯片。非易失性存储器220可包括与M个通道CH1至CHM中的每一个通道对应的一个或多个存储器芯片。基于来自主机100的命令(或请求),控制器210可针对M个通道CH1至CHM使命令排队,并基于命令通过M个通道CH1至CHM将数据(Data)发送到非易失性存储器220或从非易失性存储器220接收数据(Data)。

根据示例实施例,控制器210可包括用于存储M个通道CH1至CHM的状态信息(或与M个通道CH1至CHM对应的非易失性存储器220的状态信息)的存储器211。根据示例实施例,存储器211可被实现为易失性存储器,诸如DRAM或SRAM。然而,示例实施例不限于此,并且存储器211可被实现为非易失性存储器(诸如,只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、相变存储器(PRAM)或闪存)。

M个通道CH1至CHM的状态信息(Status Info)可存储在存储器211中。例如,具有与M个通道CH1至CHM中的每个通道对应的一个或多个位的状态信息可以以位图或表的形式被存储。状态信息可指示针对映射到每个通道的命令的缓冲器230(或缓冲器230的存储空间)的分配是否适当(或合适)。

为设置每个通道的状态信息的值,例如,M个通道CH1至CHM中的每个通道的工作量可被确定。工作量可使用各种方案而被确定。例如,工作量可基于将通过每个通道被处理(或调度为被处理)的命令的数量而被确定。可选地,与M个通道CH1至CHM中的每个通道对应的非易失性存储器220可执行或被调度为执行需要相对长时间的后台操作,并且工作量可基于是否执行了后台操作而被确定。

状态信息的值可基于确定的工作量而被设置。例如,状态信息的值可基于确定的工作量是否大于阈值而被设置。例如,可确定将被处理的命令的数量是否大于特定数量。可选地,可确定命令或后台操作所需的时间是否大于特定参考时间。也就是说,可基于确定的工作量使用各种方案来产生状态信息。

根据示例实施例,M个通道CH1至CHM中的每个通道的状态信息可以是包括一个或多个位的信息。例如,当状态信息具有两个或更多个位的值时,可在各种阶段分析每个通道的工作量,并可基于分析的结果将状态信息设置为指示多个阶段中的任何一个阶段的值。各种后台操作(诸如,垃圾收集、坏块管理、数据回收和数据替换)可需要不同的时间,状态信息可基于后台操作的类型而被设置为指示多个阶段中的任何一个的值。

状态信息可指示新近映射到每个通道的命令(CMD)的处理时间和/或处理完成时间。例如,如果特定通道具有大的工作量,则新近映射到该特定通道的命令可具有较晚的处理时间,并因此具有迟的处理完成时间。否则,如果另一特定通道具有小的工作量,则新近映射到该另一特定通道的命令可具有相对早的处理时间。

根据示例实施例,缓冲器230可响应于从主机100获取的命令被分配以执行存储器操作(或命令处理),并且缓冲器230可基于状态信息而被分配。例如,因为状态信息可指示缓冲器230到M个通道CH1至CHM中的每个通道的分配是否合适,所以缓冲器230可优先被分配给与缓冲器230的分配合适的通道对应的命令。也就是说,用于通过M个通道CH1至CHM执行存储器操作的命令可被获取,并且缓冲器230可被优先分配给具有早的处理时间和/或早的处理完成时间的命令。

根据前述示例实施例,可解决以下问题:因为缓冲器230被分配给映射到特定通道的命令,并且缓冲器230的分配状态由于该特定通道的大工作量而被保持长时间,因此降低缓冲器230的可用性。例如,当缓冲器230在获取到命令的时间被分配给该命令时,如果该命令的处理时间晚,则缓冲器230的分配状态被不必要地保持。

相反,根据前述示例实施例,因为缓冲器230被优先分配给将在早的时间被处理的命令,并且缓冲器230在命令被完全处理后被解除分配,所以保持缓冲器230的分配的时间(例如,寿命(lifetime))可被减少。此外,因为缓冲器230被较晚地分配给将在较晚时间被处理的命令,所以用于该命令的缓冲器230的不必要地长时间分配可被防止。

图2是根据示例实施例的被实现为SSD的存储装置200的框图。

参照图2,存储装置200可与主机100进行通信,并包括控制器210、非易失性存储器220和缓冲器230。控制器210还可包括根据前述示例实施例的用于存储状态信息的存储器211以及用于控制存储装置200的全部操作的一个或多个处理核。例如,作为一个或多个处理核,图2示出用于执行关于与主机100接口连接的操作的主机CPU(HCPU)212以及用于执行关于与非易失性存储器220接口连接的操作的闪存CPU(FCPU)213。虽然在图2中示出了单个主机CPU 212和单个闪存CPU 213,但是示例实施例不限于此。例如,多个主机CPU和多个闪存CPU可包括在控制器210中。多个主机CPU可并行执行关于与主机100接口连接的操作,多个闪存CPU可并行执行关于与非易失性存储器220接口连接的操作。

控制器210通过M个通道CH1至CHM连接到非易失性存储器220。通道条带化(channel striping)可被执行,以将来自主机100的多个命令均匀地分配给M个通道CH1至CHM,因此,命令可被均匀地映射到M个通道CH1至CHM。M个通道CH1至CHM可基于非易失性存储器220的通过每个通道的命令处理状态而具有不同数量的排队的命令(或未完全处理的命令),并因此具有不同的工作量。

根据前述示例实施例,M个通道CH1至CHM的命令处理状态可被确定,基于确定的结果的状态信息可存储在存储器211中。此外,主机CPU 212或闪存CPU 213可检查存储在存储器211中的状态信息,并基于检查的状态信息控制缓冲器230的分配。例如,主机CPU 212或闪存CPU 213可基于状态信息优先将缓冲器230分配给具有早的处理时间(或早的处理完成时间)的命令。

图3是根据示例实施例的控制器300的框图。控制器300可以是包括在存储装置(诸如,SSD或存储器卡)中的元件,并可通过多个通道连接到非易失性存储器NVM以控制存储器操作。

参照图3,控制器300可包括CPU 310、RAM 320、缓冲器330、命令获取电路340、预测和监视器块350、直接存储器存取(DMA)管理器360、主机接口370和存储器接口380。虽然在图3中示出了单个CPU 310,但是控制器300可包括如上关于图2描述的多个CPU。RAM 320可存储各种类型的信息(例如,根据前述示例实施例的状态信息(Status Info))。

控制器300可通过主机接口370与主机进行通信。例如,命令获取电路340可从主机获取命令。此外,控制器300可通过存储器接口380与非易失性存储器NVM进行通信。例如,可通过存储器接口380在控制器300与非易失性存储器NVM之间交换写入数据和读取数据。来自主机的写入数据可暂时存储在缓冲器330中并然后被提供到非易失性存储器NVM,从非易失性存储器NVM读取的读取数据可暂时存储在缓冲器330中并然后被提供到主机。

预测和监视器块350可执行关于获取的命令的预测和监视操作。例如,预测和监视器块350可预测连接到非易失性存储器NVM的多个通道之中的将被映射到获取的命令的通道。映射到命令的通道可表示与从包括在命令中的逻辑地址转换的物理地址对应的连接到非易失性存储器装置的通道。

此外,预测和监视器块350可通过检查存储在RAM 320中的状态信息来监视通道的状态。例如,当命令被获取时,与指示映射到命令的通道的通道信息对应的状态信息可被读取,并且获取的命令和通道信息以及与通道信息对应的状态信息可被存储为可由CPU 310访问。例如,获取的命令可以以可由CPU 310分析的描述符(例如,命令描述符CMD Desc)的形式存储在RAM320中。与获取的命令对应的通道信息和状态信息可包括在命令描述符中,并与命令描述符一起被存储。

包括与缓冲器330中的多个存储空间之中的当前可分配存储空间有关的信息的DMA描述符(DMA Desc)还可存储在RAM 320中。例如,DMA描述符可包括与缓冲器330的有效可分配存储空间的地址有关的信息。缓冲器330可参照DMA描述符被分配给命令。

虽然在图3中将预测和监视器块350示出为单个功能块,但是示例实施例不限于此,并且用于执行预测的电路和用于执行监视的电路可被单独提供。图3的预测和监视器块350可被实现为包括例如电路的硬件。可选地,预测和监视器块350可被实现为包括多个程序并存储在控制器300中(例如,在RAM 320中)的软件。另外,预测和监视器块350可被实现为硬件和软件的组合。虽然,在图3中,缓冲器330包括在控制器300中,但是缓冲器330可如上关于图1和图2所述地被设置在控制器300的外部。

DMA管理器360可控制关于写入数据和读取数据的直接存储器存取操作。例如,DMA管理器360可控制将来自主机的写入数据存储在缓冲器330的操作以及从缓冲器330读取写入数据的操作,以将写入数据提供到非易失性存储器NVM。此外,DMA管理器360可控制将来自非易失性存储器NVM的读取数据存储在缓冲器330中的操作以及读取存储在缓冲器330中的读取数据的操作,以将读取数据提供到主机。

现在对图3中示出的控制器300的操作的示例进行详细描述。

多个命令可从主机被获取,预测和监视器块350可预测映射到获取的命令的通道。针对预测操作,可执行通道条带化,以将命令均匀地分配给通道。可使用各种方案来执行通道条带化操作。例如,可基于命令获取的顺序来顺序映射多个通道,或可通过使用包括在命令中的逻辑地址的计算来将通道映射到每个命令。

假设,控制器300顺序获取第一至第N命令,与获取的第一至第N命令对应的通道信息和状态信息存储在RAM 320中。

为处理第一至第N命令,CPU 310可通过使用存储在RAM 320中的各种类型的信息来控制缓冲器分配。例如,与最早获取的第一命令对应的状态信息可被检查。当基于每个通道的工作量来将状态信息设置为第一值或第二值时,可通过检查状态信息来确定针对第一命令的缓冲器330的分配是否合适。

如果映射到第一命令的通道具有大的工作量,并因此该通道的状态信息具有第一值,则可确定针对第一命令的缓冲器330的分配不合适。另外,如果映射到第一命令的通道具有小的工作量,并因此该通道的状态信息具有第二值,则可确定针对第一命令的缓冲器330的分配合适。

与上述第一命令相似,映射到第二至第N命令中的每个命令的通道的状态信息可被检查。基于检查的结果,与具有第一值的状态信息对应的命令以及与具有第二值的状态信息对应的命令可被确定。

CPU 310可基于检查状态信息的结果来选择被分配缓冲器330的命令。例如,如果与第一命令对应的状态信息具有第一值,则针对第一命令的缓冲器330的分配可被推迟。否则,如果与第二命令对应的状态信息具有第二值,则相比于第一命令,缓冲器330可被优先分配给第二命令。根据示例实施例,缓冲器330可被优先分配给第一至第N命令中的与具有第二值的状态信息对应的一个或多个命令,然后被分配给与具有第一值的状态信息对应的其他命令。

也就是说,CPU 310将缓冲器330优先分配给具有早的处理时间或早的处理完成时间的命令,而不管命令获取的顺序。照此,保持缓冲器330的分配的寿命可被减少,因此,缓冲器330的可用性可被提高。当缓冲器330的可用性被提高时,缓冲器330的大小可被减小。

图4A和图4B示出根据一个或多个示例实施例的存储在RAM 320中的信息。

RAM 320可包括如上所述的各种类型的存储器。例如,RAM 320可被实现为易失性存储器(诸如,SRAM或DRAM)。此外,RAM 320可被实现为紧耦合存储器(TCM)。

参照图3和图4A,当获取的命令的命令描述符存储在RAM 320中时,与命令对应的通道信息和状态信息也可基于上述预测和监视操作而存储在RAM 320中。例如,假设控制器300通过十二个通道连接到非易失性存储器NVM并且N个命令CMD1至CMDN从主机被获取,则N个命令CMD1至CMDN的命令描述符以及与N个命令CMD1至CMDN对应的通道信息和状态信息存储在RAM 320中。根据前述示例实施例,与每个通道对应的状态信息可具有第一值I(无效)或第二值V(有效)。图4A示出以下示例:与映射到第一命令CMD1的第三通道CH3对应的状态信息具有第一值I(无效),与映射到第二命令CMD2的第一通道CH1对应的状态信息具有第二值V(有效)。

此外,包括关于将暂时存储写入数据或读取数据的缓冲器330的存储空间的信息的DMA描述符将可存储在RAM 320中。例如,缓冲器330可包括n个存储空间(n是等于或大于2的整数),并且DMA描述符可包括每个存储空间的地址信息和指示每个存储空间是否能被有效分配给命令的信息。

图4B示出每个通道的状态信息以表的形式存储在RAM 320中的示例。例如,通过确定十二个通道CH1至CH12中的每个通道的工作量而产生的状态信息可被存储,并且第一值I(无效)或第二值V(有效)可被存储以对应于每个通道。图4B中示出的状态信息可被根据前述示例实施例的预测和监视器块350读取(或监视)。

可使用各种方案产生状态信息。例如,存储器接口380包括用于使映射到通道CH1至CH12的命令排队的命令队列以及用于调度存储在命令队列中的命令的执行的调度器。调度器可基于存储在命令队列中的与通道CH1至CH12对应的命令来确定每个通道的工作量,并可基于确定的结果产生每个通道的状态信息并将每个通道的状态信息存储在RAM 320中。例如,调度器可基于未执行的命令的数量、命令的类型以及指示是否执行了后台操作的信息中的至少一个来确定每个通道的工作量。

虽然在上面的描述中通过调度器使用硬件确定工作量,但是示例实施例不限于此。例如,可使用软件或者使用硬件和软件的组合来执行确定每个通道的工作量和产生状态信息的操作。

图5A和图5B示出根据一个或多个示例实施例的非易失性存储器的写入和读取操作中的缓冲器的寿命。

参照图5A,存储在缓冲器或主机的队列中的多个命令可被存储装置(或控制器)获取。例如,命令可基于存储在主机中的命令的顺序而被存储装置获取。图5A示出处理任何一个写入命令CMD_WR的示例。

在存储装置中的处理器核(例如,CPU)的控制下,可从主机获取写入命令CMD_WR。可将缓冲器(例如,DRAM)分配给获取的写入命令CMD_WR,并可基于DMA操作将来自主机的写入数据存储在缓冲器中。

在完成上述操作后,可在CPU的控制下将写入数据存储在非易失性存储器中。例如,可通过驱动闪存转换层(FTL)将与获取的写入命令CMD_WR对应的逻辑地址转换成物理地址。物理地址可对应于连接到多个通道中的任何一个通道的非易失性存储器。

此后,闪存写入命令Flash WR针对非易失性存储器的写入操作而作为内部命令被提供到非易失性存储器,写入数据可基于DMA操作从缓冲器被提供到非易失性存储器。在将写入数据完全写入非易失性存储器中之后,缓冲器可被解除分配。在这种情况下,缓冲器被分配给写入命令Flash WR时的时间与缓冲器被解除分配时的时间之间的时段对应于被分配给写入命令FlashWR的缓冲器的寿命。

如果预测和监视操作未被使用,则缓冲器在获取到写入命令Flash WR时的时间被分配,因此,缓冲器被分配时的时间与写入数据被存储在缓冲器中时的时间之间的时段A可增大。例如,即使当缓冲器被分配时,因为写入命令Flash WR的处理时间晚,所以时段A增大,缓冲器的可用性被降低。

否则,如果根据示例实施例的预测和监视操作被使用,则缓冲器可基于映射到写入命令Flash WR的通道的状态而在较晚的时间被分配,因此,时段A可减小。照此,缓冲器的可用性可被提高。

图5B示出获取读取命令CMD_RD的示例。缓冲器(例如,SRAM)可被分配给获取的读取命令CMD_RD,并且与获取的读取命令CMD_RD对应的逻辑地址可通过驱动FTL而被转换为物理地址。

此后,闪存读取命令Flash RD针对非易失性存储器的读取操作而作为内部命令被提供到非易失性存储器。从非易失性存储器读取的数据可基于DMA操作通过缓冲器被提供到主机。在读取操作被完成之后,缓冲器可被解除分配。在这种情况下,缓冲器被分配给读取命令Flash RD时的时间与缓冲器被解除分配时的时间之间的时段对应于被分配给读取命令Flash RD的缓冲器的寿命。

如果预测和监视操作未被使用,则缓冲器被分配时的时间与读取数据被存储在缓冲器中的时间之间的时段B可增大。否则,如果根据示例实施例的预测和监视操作被使用,则缓冲器可基于映射到读取命令Flash RD的通道的状态而在较晚的时间被分配,因此,时段B可减小。

虽然,在图5B中,缓冲器在读取命令Flash RD被获取之后并且在FTL被驱动之前被分配,但是示例实施例不限于此。例如,缓冲器可基于DMA操作而在与读取数据被存储在缓冲器中之前的各种时段中的任何一个时段对应的时间被分配。

图6至图8是根据一个或多个示例实施例的存储装置的操作方法的流程图。

参照图6,存储装置可从主机获取一个或多个命令(S11)。获取的命令可以以将可由CPU分析的命令描述符的形式存储在存储器(例如,RAM)中。

通道可针对获取的命令而被预测,并可基于预测的结果被映射到命令。可监视预测的通道的状态(S12)。例如,根据前述示例实施例,可通过访问用于存储多个通道的状态信息的存储器来监视通道的状态。根据示例实施例,指示针对映射到每个通道的命令的缓冲器的分配是否合适的信息可被存储作为状态信息。

基于预测和监视的结果,可存储包括与获取的一个或多个命令对应的通道信息和状态信息的描述符(S13),并可通过CPU来分析命令描述符、通道信息和状态信息。可在CPU的控制下基于状态信息来选择被分配缓冲器的命令(S14)。例如,缓冲器可不基于命令获取的顺序被分配给命令,而是可基于存储的状态信息被任意分配给命令。可处理被分配缓冲器的命令,并在完成数据写入操作或读取操作之后将缓冲器解除分配(S15)。

图7示出产生并存储状态信息的示例。

参照图7,存储装置可包括用于存储映射到多个通道的命令的命令队列以及用于调度处理存储在命令队列中的命令的操作的调度器。命令队列可单独对应于通道,因此可针对每个通道执行命令排队(S21)。

调度器可确定通道的工作量。例如,调度器可确定每个通道的未处理的命令的数量(或命令队列中剩余的命令的数量)(S22)。根据示例实施例,调度器可通过检查存储在命令队列中的与每个通道对应的命令,来确定每个通道的工作量。例如,调度器可将命令的数量与特定阈值进行比较,以确定命令的数量是否大于阈值(S23)。

基于比较的结果,可产生与每个通道对应的状态信息,并且可将产生的状态信息存储在诸如RAM的存储器中。例如,如果映射到通道的命令的数量大于阈值,则可将通道的状态信息设置为第一值(S24)。否则,如果映射到通道的命令的数量不大于阈值,则可将通道的状态信息设置为第二值(S25)。

可针对每个通道执行基于工作量产生状态信息的上述操作,并将基于比较的结果而具有第一值或第二值的状态信息存储在存储器中(S26)。

图8示出产生并存储状态信息的另一示例。

参照图8,可确定连接到多个通道的非易失性存储器的操作状态(S31)。例如,包括在存储装置中的调度器可调度连接到通道的非易失性存储器的各种操作。例如,调度器可调度非易失性存储器的后台操作。后台操作可包括各种类型的操作。例如,后台操作可包括坏块管理、垃圾收集、数据回收和数据替换。

例如,可将一个或多个非易失性存储器连接到第一通道,并可确定第一通道的至少一个非易失性存储器是否执行后台操作(S32)。具体地,可通过确定后台操作当前是否被执行或后台操作是否被调度为将被执行,来执行确定操作。可选地,可通过检查存储在命令队列中的与每个通道对应的命令(或后台操作命令),来执行确定操作。

当确定连接到第一通道的至少一个非易失性存储器正在执行后台操作时,可将与第一通道对应的状态信息设置为第一值(S33)。否则,当确定非易失性存储器没在执行后台操作时,可将与第一通道对应的状态信息设置为第二值(S34)。可针对每个通道执行基于是否执行后台操作来产生状态信息的上述操作,并将具有基于确定的结果而被设置值的状态信息存储在存储器中(S35)。

图7和图8中示出的操作方法示出与状态信息的产生有关的示例实施例,示例实施例可被各种改变。例如,可基于每个通道排队的命令的类型来确定工作量。例如,可以以不同的速度执行非易失性存储器的写入操作、读取操作和擦除操作,因此,可基于每个通道排队的命令的类型来设置状态信息。

可选地,关于后台操作,可基于是否执行后台操作或基于后台操作的类型(例如,垃圾收集或数据回收)来设置状态信息。

现在将给出示例实施例的更加具体的描述。下面的描述假设:非易失性存储器NVM是闪存,因此,通道是闪存通道。然而,示例实施例可被应用到如上所述的各种类型的非易失性存储器。

图9是示出根据示例实施例的缓冲器分配操作的流程的框图。图9示出数据读取操作作为存储器操作的示例。

参照图9,包括在存储装置中的控制器400可包括CPU 410、一个或多个存储器421和422、读取缓冲器430、命令信息产生块440和存储器接口450。存储器421和422可包括用于存储命令描述符和DMA描述符的第一存储器421和用于存储多个闪存通道的状态信息的第二存储器422。根据前述示例实施例,命令描述符可包括与每个命令对应的通道信息和状态信息。虽然图9示出第一存储器421和第二存储器422,但是上述各种类型的信息可存储在单个缓冲器中,或以分布的方式存储在更大数量的存储器中。

命令信息产生块440是用于功能性地定义用于执行根据前述示例实施例的命令获取和预测/监视操作的配置的块,并且根据示例实施例的命令信息产生块440可被实现为硬件。在这种情况下,命令信息产生块440可包括用于获取命令的命令获取电路441、用于预测将被映射到每个命令的闪存通道的通道预测器电路442以及用于监视闪存通道的状态的通道状态监视器电路443。然而,示例实施例不限于此。命令信息产生块440的至少一部分功能可通过软件实现,或者命令信息产生块440可被实现为硬件和软件的组合。

最初,命令(例如,读取命令)可被获取,通道预测器电路442可通过执行通道条带化来将命令均匀地分配给闪存通道以预测与获取的命令对应的闪存通道,并将预测的结果提供到通道状态监视器电路443。通道状态监视器电路443可通过检查存储在第二存储器422中的状态信息来监视与预测的通道对应的状态。此外,命令信息产生块440可将预测和监视的通道信息和状态信息与获取的命令的命令描述符一起提供到第一存储器421。

CPU 410可基于存储在第一存储器421中的命令描述符、通道信息和状态信息中的至少一个来将读取缓冲器分配给命令。例如,CPU 410可参照存储在第一存储器421中的状态信息来分配缓冲器。根据前述示例实施例,存储器接口450的调度器可基于每个通道的工作量将闪存通道的状态信息存储在第二存储器422中。例如,第二闪存通道CH2、第三闪存通道CH3和第五闪存通道CH5至第七闪存通道CH7的状态信息可具有指示缓冲器分配不合适的第一值I。

CPU 410可确定与存储在第一存储器421中的具有第二值V的状态信息对应的命令,并将缓冲器优先分配给与具有第二值V的状态信息对应的命令。例如,缓冲器可被优先分配给与具有第二值V的状态信息对应的命令。例如,缓冲器可被优先分配给映射到第一闪存通道CH1、第四闪存通道CH4、第八闪存通道CH8至第十二闪存通道CH12的命令。

图10示出当使用根据示例实施例的缓冲器分配方案时的缓冲器寿命和当未使用缓冲器分配方案时的情况下的缓冲器寿命的示例。图10示出当顺序获取第一命令CMD1至第四命令CMD4时的情况。因为获取的命令的命令描述符被存储在存储器中,因此,命令描述符列表被更新,所以命令获取被表示为命令更新CMD UPDATE。图10示出第一命令CMD1被映射到第三闪存通道CH3,第二命令CMD2被映射到第一闪存通道CH1,第三命令CMD3被映射到第四闪存通道CH4,第四命令CMD4被映射到第二闪存通道CH2的示例。与图9的前述示例实施例类似,图10示出第二闪存通道CH2和第三闪存通道CH3的状态信息具有第一值I以及第一闪存通道CH1和第四闪存通道CH4的状态信息具有第二值V的示例。

在正常操作中,可基于在获取到命令时的时间的命令获取的顺序来分配缓冲器。照此,缓冲器可被顺序分配给第一命令CMD1至第四命令CMD4。在这种情况下,映射到第三通道CH3的第一命令CMD1在较晚的时间被完全处理,映射到第二通道CH2的第四命令CDM2也在较晚的时间被完全处理。照此,针对第一命令CMD1和第四命令CMD4的缓冲器寿命具有大的值,因此,缓冲器的可用性被降低。

在当根据示例实施例基于监视闪存通道的状态信息的结果分配缓冲器时的情况下,缓冲器可被分配给顺序获取的第一命令CMD1至第四命令CMD4,而不管命令获取的顺序。例如,缓冲器被优先分配给映射到第一闪存通道CH1和第四闪存通道CH4的第二命令CMD2和第三命令CMD3,其中,第一闪存通道CH1和第四闪存通道CH4的状态信息具有第二值V。例如,缓冲器被分配给第二命令CMD2,然后在第二命令CMD2在早的时间被完全处理之后被解除分配。类似地,缓冲器被分配给第三命令CMD3,然后在第三命令CMD3被完全处理之后被解除分配。

相反,缓冲器可较晚被分配给第一命令CMD1和第四命令CMD4。例如,因为缓冲器被较晚分配给将被较晚处理的第一命令CMD1,所以针对第一命令CMD1的缓冲器寿命可被降低。与第一命令CMD1类似,针对第四命令CMD4的缓冲器寿命也可被降低。也就是说,缓冲器的存储空间可被高效分配给命令。

图11是示出根据示例实施例的缓冲器分配操作通过软件实现的示例的框图。

参照图11,控制器500可包括CPU 510和工作存储器520。用于控制控制器500的操作和非易失性存储器的存储器操作的固件可被载入工作存储器520中。FTL 521可作为固件的示例而被载入工作存储器520中,并且CPU 510可驱动FTL 521以执行各种功能。

FTL521可包括用于执行各种功能的模块。例如,FTL 521可包括用于将来自主机的逻辑地址转换为指示非易失性存储器的实际存储位置的物理地址的地址转换模块。FTL 521还可包括用于执行非易失性存储器的各种后台功能的模块(例如,用于执行垃圾收集的模块、用于管理坏块以防止数据被写入到坏块中的模块、用于执行数据回收的模块和用于执行数据替换的模块)。

针对垃圾收集,可产生一个或多个空闲块。例如,非易失性存储器可包括多个块,并且每个块可存储有效数据和未被用户实际使用的无效数据。可通过将存储在一个或多个块中的有效数据移到其他块并擦除未存储有效数据的块来产生空闲块。

针对坏块管理,可管理包括在非易失性存储器中的多个块之中的有缺陷的块。例如,可通过检查每个块的编程/擦除周期并处理作为坏块的基于检查的结果确定的劣化块来执行坏块管理。可防止数据被写入与坏块对应的块中。

可通过确定数据的劣化来执行数据回收和数据替换。例如,非易失性存储器单元的数据存储特性可能由于各种原因(例如,俘获的电子的泄露或读取干扰)而劣化。可针对包括在非易失性存储器中的每个块确定数据回收或数据替换的目标。例如,当特定块(例如,第一块)被确定为数据替换的目标时,可将存储在第一块中的有效数据移到保留块,并且该保留块可用作第一块。当特定块(例如,第一块)被确定为数据回收的目标时,可将存储在第一块中的有效数据移到另一块,然后第一块可被擦除和再次使用。

根据示例实施例的用于执行上述功能的模块(例如,通道预测模块522、通道状态监视器模块523、状态信息更新模块524和缓冲器分配模块525)也可被载入工作存储器520中。虽然,在图11中,上述模块被载入同一工作存储器520中,但是这些模块可以以分布的方式被载入两个或更多个存储器中。

CPU 510可驱动存储在工作存储器520中的各种模块,以执行根据前述示例实施例的缓冲器分配操作。例如,可通过驱动通道预测模块522来预测与获取的命令对应的闪存通道,可通过驱动通道状态监视器模块523来监视多个闪存通道的状态。可通过驱动状态信息更新模块524来确定闪存通道的工作量,并可在存储器中存储或更新具有基于确定的结果的值的状态信息。CPU 510可驱动缓冲器分配模块525基于状态信息分配缓冲器。例如,缓冲器可被优先分配给多个获取的命令之中的与具有第二值(例如,指示缓冲器分配合适的值)的状态信息对应的命令,而不管命令获取顺序。

如上所述,图11中示出的各种模块的至少部分功能也可通过硬件实现。

图12是根据示例实施例的存储装置的操作方法的流程图。虽然图12示出处理单个命令的示例,但是示例实施例不限于此。

参照图12,从主机获取第一命令,并监视映射到获取的第一命令的闪存通道或针对获取的第一命令预测的闪存通道的状态(S41)。通过监视状态来检查与第一命令对应的状态信息(S42),因此,可确定针对第一命令的目前的缓冲器的分配是否合适。

可基于状态信息的值确定缓冲器的分配是否合适。例如,可确定状态信息是否具有第一值(S43)。如果状态信息具有第一值,则这指示针对第一命令的缓冲器的分配不合适,因此,可在从获取到第一命令时起特定时间之后将缓冲器分配给第一命令(S44)。否则,如果状态信息具有第二值,则这指示针对第一命令的缓冲器的分配合适,因此,可在获取到第一命令之后立即将缓冲器分配给第一命令(S45)。在如上所述地将缓冲器分配给第一命令之后,可处理第一命令(S46)。

图13A、图13B、图14A、图14B、图15A、图15B、图15C和图16示出根据一个或多个示例实施例的各种状态信息产生操作和缓冲器分配操作。

图13A和图13B示出在当一个命令队列被提供为对应于两个或更多个通道的情况下的状态信息的示例。虽然,在图13A和图13B中,一个命令队列被提供为对应于两个通道,但是示例实施例不限于此,并且一个命令队列可被提供为对应于各种数量的通道。

参照图13A,调度器可将获取的多个命令排队在多个命令队列CMD Queue 1至CMD Queue A中。例如,可提供命令队列CMD Queue 1至CMD Queue A,并可通过2×A个通道CH1至CH2A将命令提供到非易失性存储器NVM。

调度器可根据前述示例实施例确定通道CH1至CH2A的工作量,并基于确定的工作量产生状态信息。可使用各种方案确定工作量。例如,可基于存储在命令队列CMD Queue 1至CMD Queue A中的每个命令队列中的命令的数量或者基于每个非易失性存储器NVM是否执行或被调度为执行后台操作来确定工作量。

例如,因为命令队列CMD Queue 1至CMD Queue A中的每个命令队列连接到两个通道,所以一条状态信息可指示两个通道的状态。例如,如在图13B中所示,如果存储在第二命令队列CMD Queue 2中的命令的数量大于特定数量(或如果工作量大于阈值),则可将连接到第二命令队列CMD Queue 2的第三通道CH3和第四通道CH4的状态信息设置为第一值I。否则,如果存储在第A命令队列CMD Queue A中的命令的数量不大于特定数量(或如果工作量不大于阈值),则可将连接到第A命令队列CMD Queue A的第(2A-1)通道CH(2A-1)和第2A通道CH2A的状态信息设置为第二值V。也就是说,一条状态信息可指示多个通道的状态。

为基于状态信息将缓冲器分配给命令,可将缓冲器优先分配给映射到具有第二值V的状态信息的通道的命令。例如,可将被分配缓冲器的命令优先排队在第一命令队列CMD Queue 1和第A命令队列CMD Queue A中,然后将被分配缓冲器的命令排队在第二命令队列CMD Queue 2中。

图14A和图14B示出状态信息包括两个或更多个位的情况。可在多个阶段中确定上述工作量。可产生基于确定的工作量而具有不同值的位作为状态信息。虽然,在图14A和图14B中,每条状态信息包括两个位,但是示例实施例不限于此,并且状态信息可包括一个或多个额外的位。

参照图14A,状态信息可被存储,以对应于多个通道CH1至CHM中的每个通道。状态信息可具有两个位,并因此可具有00、01、10和11之中的任意一个值。例如,与00对应的状态信息可指示通道的最大工作量,与11对应的状态信息可指示通道的最小工作量。

可使用各种方案确定工作量的多个阶段。例如,可基于存储在命令队列CMD Queue 1至CMD Queue M中的每个命令队列中的命令的数量或类型或者基于每个非易失性存储器NVM是否执行后台操作以及后台操作的类型,来在多个阶段确定工作量。例如,可将工作量与两个或更多个阈值进行比较,并可基于比较的结果产生具有多个位的状态信息。

例如,状态信息可基于存储在命令队列CMD Queue 1至CMD Queue M中的每个命令队列中的命令的数量而具有00、01、10和11中的一个。可选地,状态信息可基于命令的类型(例如,读取、写入和擦除)而具有00、01、10和11中的一个。除此之外,可基于命令的类型和数量将状态信息设置为任何一个值。

关于后台操作,如果连接到特定通道的非易失性存储器NVM执行或被调度为执行后台操作,则可确定该特定通道具有最大工作量。后台操作可包括如上所述的各种类型的操作,并且状态信息可基于后台操作的类型而具有00、01、10和11中的一个。

除了上述方案之外的各种方案可用于在多个阶段中确定状态信息。

参照图14B,将缓冲器分配给命令的顺序可基于状态信息而变化。例如,可将被分配缓冲器的命令CMD3优先排队在连接到具有最小工作量的第三通道CH3的命令队列CMD Queue 3中。此后,可基于图14A中示出的状态信息优先将缓冲器分配给映射到具有最小工作量的通道的命令,并且命令可存储在与其对应的命令队列中。

图15A、图15B和图15C示出基于例如每个通道的忙/闲状态、命令的类型和后台操作确定工作量的各种其他示例。

参照图15A,调度器可确定多个通道CH1至CHM的忙和闲状态,并且状态信息可基于确定的忙和闲状态而被产生。例如,当命令被完全排队在一个命令队列中时,可将连接到该命令队列的通道确定为忙状态。照此,可将分配缓冲器的命令优先排队在连接到被确定为闲状态的通道的命令队列中。例如,如果第一通道CH1处于忙状态,第二通道CH2处于闲状态,则即使当更早获取到映射到第一通道CH1的命令时,也可将缓冲器优先分配给映射到第二通道CH2的命令。

参照图15B,相比于第一命令队列CMD Queue 1,更大数量的命令可存储在第二命令队列CMD Queue 2中。在这种情况下,可分别基于存储在第一命令队列CMD Queue 1和第二命令队列CMD Queue 2中的命令的类型来确定第一通道CH1和第二通道CH2的工作量。例如,命令的类型可包括写入、读取和擦除,处理擦除命令可能花费相对长的时间而处理读取命令可能花费相对短的时间。

图15B示出写入命令WR和读取命令RD。虽然,相比于第一命令队列CMD Queue 1,第二命令队列CMD Queue 2存储更大数量的命令,但是可将连接到第一命令队列CMD Queue 1的第一通道CH1确定为具有更大工作量。例如,因为处理写入命令WR花费更长时间,所以可通过将权重赋给写入命令WR来确定工作量。照此,即使当更早获取到映射到第一通道CH1的命令时,也可优先将缓冲器分配给映射到第二通道CH2的命令。

图15C示出写入命令WR、读取命令RD和擦除命令ER,并且处理擦除命令ER可能花费最长时间。与前述示例实施例类似,可将不同的权重赋给不同类型的命令,并基于赋权重的结果确定通道CH1至CHM的工作量。

在图15C中,最小数量的命令可存储在第一命令队列CMD Queue 1中,最大数量的命令可存储在第M命令队列CMD Queue M中。然而,如上所述,可将连接到存储擦除命令ER的第一命令队列CMD Queue 1的第一通道CH1确定为具有最大工作量,并可将连接到存储较少数量的写入命令WR和擦除命令ER的第M命令队列CMD Queue M的第M通道CHM确定为具有最小工作量。可基于如上所述确定的工作量将缓冲器分配给命令。

图16示出后台操作命令存储在命令队列中并因此调度后台操作的情况。

参照图16,较小数量的命令可存储在第一命令队列CMD Queue 1中,较大数量的命令可存储在第二命令队列CMD Queue 2中。此外,一个或多个后台操作命令BO可存储在第一命令队列CMD Queue 1中。

在这种情况下,与前述示例实施例类似,可通过将最大权重赋给后台操作命令BO,来相比于连接到第二命令队列CMD Queue 2的第二通道CH2的工作量,将连接到第一命令队列CMD Queue 1的第一通道CH1确定为具有最大的工作量。可选地,相比于未被调度为执行后台操作的通道,可始终将被调度为执行后台操作的通道确定为具有最大工作量。除此之外,当两个或更多个通道被调度为执行后台操作时,可基于后台操作命令BO的数量来确定具有最大工作量的通道。

图17是根据示例实施例的存储装置的操作方法的流程图。虽然图17示出处理顺序获取的第一和第二命令的示例,但是示例实施例不限于此。

参照图17,获取第一命令,因此,将与第一命令对应的命令描述符、通道信息和状态信息存储为可由CPU访问(S51)。此后,获取第二命令,因此,可将与第二命令对应的命令描述符、通道信息和状态信息存储为可由CPU访问(S52)。

CPU可检查与第一和第二命令对应的状态信息(S53),并基于检查的结果控制缓冲器分配操作。例如,当与第一命令对应的状态信息具有第一值,与第二命令对应的状态信息具有第二值时,CPU优先将缓冲器分配给晚获取的第二命令(S54)。在缓冲器被分配给第二命令后,CPU可将缓冲器分配给较早获取的第一命令(S55)。

图18是根据示例实施例的电子系统600的框图。

参照图18,电子系统600可包括处理器610、存储器装置620、存储装置630、调制解调器640、输入/输出(I/O)装置650和电源660。在当前的示例实施例中,存储装置630可以是根据前述示例实施例中的任意一个的存储装置。照此,存储装置630可包括用于存储每个通道的状态信息的存储器631。存储装置630可获取命令,针对获取的命令预测通道,通过检查存储器631监视通道状态,并基于监视的结果分配缓冲器,而不管命令获取的顺序。

在根据示例实施例的控制器、存储装置和存储装置的操作方法中,因为通过监视多个闪存通道的状态而将缓冲器分配给命令,所以缓冲器的不必要占用可被减少,因此缓冲器的可用性可被提高。

此外,由于缓冲器的提高的可用性,包括在存储装置中的高成本存储器(例如,SRAM或DRAM)的大小可被减小。

虽然已经具体示出和描述了示例实施例,但是将理解,在不脱离权利要求的精神和范围的情况下,可在示例实施例中做出形式和细节上的各种改变。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1