一种用于逻辑存储管理的多级方案的制作方法

文档序号:17184954发布日期:2019-03-22 21:16阅读:139来源:国知局
一种用于逻辑存储管理的多级方案的制作方法

本公开涉及逻辑存储管理,且更具体地,涉及用于固态驱动器的逻辑存储管理。



背景技术:

存储器设备可包括计算机或者其它电子设备中的内部、半导体、集成电路。存在许多不同类型的存储器,包括随机访问存储器(ram)、只读存储器(rom)、动态随机访问存储器(dram)、静态ram(sram)和同步动态ram(sdram)。存储器可以是非易失性存储器或者易失性存储器。

非易失性存储器和易失性存储器之间的主要区别是,非易失性存储器可以持续地存储数据而不需要提供持续的电源。因此,非易失性存储设备已经发展成一种流行的存储器类型用于大范围的电子应用。一种非易失性存储器类型包括闪存。闪存设备一般采用单晶体管存储器单元,其允许高存储密度、高可靠性和低电力消耗。对于闪存的一般使用包括个人计算机、个人数字助理(pda)、数字照相机和蜂窝电话。程序代码和系统数据例如基本输入/输出系统(bios)可以被存储在闪存设备中,用于个人计算机系统的个人使用。

包括闪存设备的非易失性存储器设备还可以被集成到固态存储设备中,例如固态硬盘(ssd)。



技术实现要素:

一个示例中,存储设备可以包括存储器阵列,其具有布置在多个通道中的多个管芯;和控制器。在一些示例中,该控制器可以构造成从存储器阵列基于与多个管芯相关联的相应的芯片使能线来定义多个管芯集合,其中该多个管芯集合的每一个管芯集合包括来自该多个通道的至少一个管芯;定义来自该多个管芯集合的被选管芯集合的多个区块集合,其中每个区块集合包括来自该被选管芯集合的每一个管芯的区块;接收待存储的数据单元;以及发布使得数据单元被存储在该多个区块集合的被选区块集合的区块中的指令。

在另一个示例中,一种方法包括从包括布置在多个通道中的多个管芯的存储器阵列基于与多个管芯相关联的相应的芯片使能线来定义多个管芯集合,其中多个管芯集合的每个管芯集合包括来自多个通道中的每一个的至少一个管芯,并且从该多个管芯集合的被选管芯集合定义多个区块集合,其中每个区块集合包括来自该被选管芯集合的每个管芯的区块。在这个示例中,该方法还包括通过该存储器阵列的控制器接收待存储的数据单元;以及通过控制器发布使得该数据单元被存储在该多个区块集合的被选区块集合的区块中的指令。

在另一个示例中,一种计算机可读存储介质,其存储指令,当执行该指令时,使得该存储设备的一个或更多个处理器:从包括布置在多个通道中的多个管芯的存储器阵列基于与多个管芯相关联的相应的芯片使能线来定义多个管芯集合,其中多个管芯集合的每个管芯集合包括来自多个通道中的每一个的至少一个管芯;并且从该多个管芯集合的被选管芯集合定义多个区块集合,其中每个区块集合包括来自该被选管芯集合的每个管芯的区块。在这个示例中,该计算机可读存储介质还存储指令,当执行该指令时使得该存储设备的一个或更多个处理器接收待存储的数据单元;以及发布使得该数据单元被存储在该多个区块集合的被选区块集合的区块中的指令。

在另一个示例中,一种系统,包括:用于从包括布置在多个通道中的多个管芯的存储器阵列基于与多个管芯相关联的相应的芯片使能线来定义多个管芯集合的装置,其中多个管芯集合的每个管芯集合包括来自多个通道中的每一个的至少一个管芯;和用于从该多个管芯集合的被选管芯集合定义多个区块集合的装置,其中每个区块集合包括来自该被选管芯集合的每个管芯的区块。在这个示例中,该系统还包括用于接收待存储的数据单元的装置;和用于发布使得该数据单元被存储在该多个区块集合的被选区块集合的区块中的指令的装置。

在下列附图和说明书中阐述了一个或更多个示例的详细内容。其它特征、目标和优点将从说明书和附图以及权利要求书变得明显。

附图说明

图1是示出根据本公开的一个或更多个技术的、其中存储设备可用作用于主机设备的存储设备的示例性存储环境的概念性和示意性框图。

图2是示出根据本公开的一个或更多个技术的、包括多个区块、每个区块包括多个页面的示例性存储器设备的概念性框图。

图3是示出根据本公开的一个或更多个技术的示例性控制器的概念性和示意性框图。

图4是示出根据本公开的一个或更多个技术的、包括布置到多个通道中的多个存储器设备的示例性非易失性存储器阵列的概念性框图。

图5是示出根据本公开的一个或更多个技术的、可通过存储设备的控制器来执行以从管芯集合定义区块集合的示例性技术的概念性框图。

图6是示出根据本公开的一个或更多个技术的、可通过存储设备的控制器来执行以从管芯集合定义区块集合的另一示例性技术的概念性框图。

图7是示出根据本公开的一个或更多个技术的、用于利用区块集合管理存储设备的示例性技术的流程图。

具体实施方式

为了改善采用并行处理的吞吐量,ssd控制器可以通过将位于不同通道上的多个物理闪存区块和芯片使能(ce)线组合在一起来实施后端管理方案以形成逻辑容器。ssd控制器然后可以利用这些逻辑容器作为逻辑管理域的基本操作单元。

在一些示例中,控制器可以通过从每个物理通道的每个目标(例如,ce线)中选择相应的物理闪存区块来构建逻辑容器。通过这样做,控制器可以同时填满所有逻辑容器中的闪存区块,并且系统可以实现i/o吞吐量的全部潜力。例如,对于具有16个物理通道以及8个ce的控制器,逻辑容器尺寸可以是128个物理区块(16通道乘以8ce)。然而,在一些示例中,从每一个存储器设备中选择区块可能是不令人满意的。

总体上,本公开描述了利用两级分区方案来管理存储设备的技术。在一些示例中,存储设备的控制器可以这样定义第一级,即:通过将存储器设备阵列划分成多个管芯集合,每一个可以包括来自每个阵列通道的至少一个存储器设备。控制器可以这样定义第二级,即:通过定义来自多个管芯集合中的每一个的多个区块集合使得多个区块集合中的每一个区块集合包括来自管芯集合中的每个相应的存储器设备的至少一个区块。该控制器然后可以利用该区块集合作为逻辑管理域的基本单元。例如,具有8个ce和16个通道的控制器可以通过将所有存储器设备划分成8个管芯集合,每一个管芯集合包括来自每个通道的相应的存储器设备来实施本公开的技术。在这个示例中,区块集合可以每一个包括16个物理闪存区块,一个区块来自16个通道的每一个。通过这种方式,控制器可以例如在不影响潜在的吞吐量的情况下减少逻辑管理域的基础单元中包括的区块数量。

此外,本公开描述了基于不同的功耗预算、性能目标或两者来动态调度活动的存储设备的数量的技术。例如,控制器可以在运行时间内确定一些存储器设备可同时活动,例如以满足功耗预算或者性能目标。基于确定的数量,控制器可以调度对一个或更多个管芯集合(介于一个和存储设备的管芯集合数量之间的任何数量的管芯集合)进行读取、写入或二者同时。增加同时活动的管芯集合的数量会提高存储设备的i/o性能,同时增加存储设备消耗的功率。相反,减少同时活动的管芯集合的数量会降低存储设备的i/o性能,与此同时减少存储设备消耗的功率。通过这种方式,控制器可以动态调度活动的存储器设备的数量来满足不同的功耗预算、性能目标或者二者。

图1是示出根据本公开的一个或更多个技术的、其中存储设备6可用作用于主机设备4的存储设备的示例性存储环境2的概念性和示意性框图。例如,主机设备4可以利用包括在存储设备6中的非易失性存储器设备来存储和找回数据。在一些示例中,存储环境2可以包括多个存储设备,例如存储设备6,其可以作为存储阵列进行操作。例如,存储环境2可以包括多个存储设备6,其被构造为便宜的/独立的磁盘冗余阵列(raid),其共同用作主机设备4的大容量存储设备。

存储环境2可以包括主机设备4,其可以向和/或从一个或更多个存储设备例如存储设备6存储和/或找回数据。如图1所示,主机设备4可以经由接口14与存储设备6通信。主机设备4可以包括任何各种不同的设备,包括计算机服务器、网络附加存储(nas)单元、台式计算机、笔记本(即膝上型)计算机、平板电脑、机顶盒、电话手持机例如所谓的“智能”电话、所谓的“智能”平板、电视机、照相机、显示设备、数字媒体播放器、视频游戏操控器、视频流设备等。

如图1所示,存储设备6可以包括控制器8、非易失性存储器阵列10(nvma10)、缓存12和接口14。在一些示例中,为了简洁存储设备6可以包括图1中未示出的其它部件。例如,存储设备6可以包括电力输送部件,包括例如电容器、超级电容器或者电池;印刷电路板(pb),存储设备6的部件与其机械连接并且其包括将存储设备6的部件电互连的导电迹线;等。在一些示例中,存储设备6的物理尺寸和连接器构造可以依照一个或更多个标准外形规格。一些示例性标准外形规格包括但不局限于,3.5英寸硬盘驱动器(hdd)、2.5英寸hdd、1.8英寸hdd、外围部件互连(pci)、pci-扩展(pci-x)、pci专线(pcie)(例如,pciex1、x4、x8、x16、pcieminicard、minipci等)。在一些示例中,存储设备6可以直接联接(例如,直接焊接)到主机设备4的母板上。

存储设备6可包括接口14,用于连接主机设备4。接口14可包括一个或两个数据总线用于与主机设备4交换数据,和控制总线用于与主机设备4交换指令。接口14可以根据任何合适的协议来操作。例如,接口14可以根据一个或更多个以下协议来操作:高级技术附件(ata)(例如,串行ata(sata)和并行ata(pata))、光纤通道、小型计算机系统接口(scsi)、串行连接scsi(sas)、外围部件互连(pci)和pci-专线。接口14的电连接(例如,数据总线、控制总线或者二者)是到控制器8的电连接,提供主机设备4和控制器8之间的电连接,允许在主机设备4和控制器8之间交换数据。在一些示例中,接口14的电连接还允许存储设备6接收来自主机设备4的电力。

存储设备6可包括nvma10,其可以包括多个存储器设备16aa-16nn(总称“存储器设备16”),其中每一个可被构造成存储和/或找回数据。例如,存储器设备16的存储器设备可以从控制器8接收数据和信息,控制器8指示该存储设备存储数据。类似的,存储器设备16的存储器设备可以从控制器8接收信息,控制器8指示该存储设备找回数据。在一些示例中,每个存储器设备16被称为管芯。在一些示例中,单个物理芯片可以包括多个管芯(即,多个存储器设备16)。在一些示例中,每个存储器设备16被构造成存储相对大量的数据(例如,128mb、256mb、512mb、1gb、2gb、4gb、8gb、16gb、32gb、64gb、128gb、256gb、512gb、1tb等)。

在一些示例中,存储器设备16可以包括闪存设备。闪存设备可以包括基于nand或者nor的闪存设备,并且可以基于每个闪存单体的晶体管的浮置栅极中包括的电荷来存储数据。在nand闪存设备中,闪存设备可以被划分成多个区块。图2是示出了示例性存储器设备16aa的概念性框图,其包括多个区块17a-17n(总称为“区块17”),每个区块包括多个页面19aa-19nm(总称为“页面19”)。区块17的每一个区块可以包括多个nand单元。nand单元的行可以利用字线串行电连接来定义页面(页面19的一个页面)。多个页面19中的每一个中的相应单元可以电连接到相应的位线。控制器6可以在页面水平将数据写入到nand闪存设备并且从nand闪存设备读取数据,并且在区块水平从nand闪存设备擦除数据。

在一些示例中,分别连接到存储器设备16的每个存储器设备对于控制器8而言是不实用的。照此,存储器设备16和控制器8之间的连接可以是多路复用的。作为示例,存储器设备16可以被组合到通道18a-18n(总称为“通道18”)中。例如,如图1所示,存储器设备16aa-16nn可以组合到第一通道18a中,并且存储器设备16na-16nn可以组合到第n个通道18n中。组合到每个通道18中的存储器设备16可以将一个或更多个连接共享给控制器8。例如,组合到第一通道18a中的存储器设备16可附接到通用i/o总线和通用控制总线。存储设备6可以包括通用i/o总线和通用控制总线,用于通道18的每个相应的通道。在一些示例中,通道18的每个通道可包括一组芯片使能(ce)线,其可以用于在每个通道上多路复用存储设备。例如,每个ce线可以被连接到存储设备18的相应的存储设备。通过这种方式,控制器8和存储设备18之间的单独连接的数量会减少。另外,因为每个通道具有到控制器8的独立的一组连接,连接的减少不会显著影响数据吞吐速率,因为控制器8可以同时发布不同指令给每个通道。

在一些示例中,存储设备6可以包括多个存储器设备16,其被选择来提供大于主机设备4可访问的容量的总容量。这被称为过度供应。例如,如果存储设备6宣称包括240gb用户可访问存储容量,存储设备6可以包括足够的存储器设备16来提供256gb的总存储容量。存储器设备16的16gb对于主机设备4或者主机设备4的用户可能不能够访问。替代的,额外的存储器设备16可以提供额外的区块17来促进写入、垃圾收集、损耗均衡等。此外,额外的存储器设备16可以提供额外的区块17,如果一些区块损耗变得不可用并且退出使用就采用额外的区块17。额外的区块17的存在可允许损耗区块的退役而不引起主机设备4可用的存储容量的变化。在一些示例中,过度供应的量可被定义为p=(t-d)/d,其中p是过度供应比率,t是存储设备2的总存储容量,并且d是存储设备2的主机设备4可访问的存储容量。

存储设备6包括控制器8,其可以管理存储设备6的一个或更多个操作。图3是示出了示例性控制器20的概念性和示意性框图,其可以是图1中控制器6的示例。在一些示例中,控制器20可以包括地址转换模块22、写入模块24、维护模块26、读取模块28、调度模块30和多个通道控制器32a-32n(总称为“通道控制器28”)。在其它示例中,控制器20可以包括额外的模块或者硬件单元,或者可以包括更少的模块或者硬件单元。控制器20可以包括微处理器、数字信号处理器(dsp)、特定用途集成电路(asic)、现场可编程门阵列(fpga)或其它数字逻辑电路。

控制器20可以经由接口14与主机设备4连接并且管理数据到存储器设备16的存储和数据从存储器设备16的找回。例如,控制器20的写入模块24可以管理到存储器设备16的写入。例如,写入模块24可以经由接口14从主机设备4接收信息,指示存储设备6存储与逻辑地址和该数据相关的数据。写入模块24可以管理数据到存储器设备16的写入。

例如,写入模块24可以与地址转换模块22通信,地址转换模块22管理主机设备4采用的、用于管理存储数据位置的逻辑地址与写入模块24采用的、用于指导数据到存储设备的写入的物理区块地址之间的转换。控制器20的地址转换模块22可以利用闪存转换层或者列表,其将存储器设备16中存储的数据的逻辑地址(或者逻辑区块地址)转换为存储器设备16存储的数据的物理区块地址。例如,主机设备4可以在给存储设备6的指示或信息中利用存储器设备16存储的数据的逻辑区块地址,而写入模块24利用数据的物理区块地址来控制向存储器设备16的数据写入。(类似的,读取模块28可以利用物理区块地址来控制来自存储器设备16的数据读取。)物理区块地址与存储器设备16的实际的物理区块(例如,图2的区块17)对应。

通过这种方式,可以允许主机设备4使用某一组数据的静态逻辑区块地址,虽然实际上存储数据的物理区块地址会改变。地址转换模块22可以维护闪存转换层或者列表以将逻辑区块地址映射到物理区块地址,从而允许主机设备4使用静态逻辑区块地址,虽然例如由于损耗均衡、垃圾收集等,数据的物理区块地址会改变。

如上所述,控制器20的写入模块24可以执行一个或更多个操作来管理数据到存储器设备16的写入。例如,通过在存储器设备16内选择一个或更多个区块来存储数据,并且使得包括被选区块的存储器设备16的基因设备实际上存储该数据,写入模块24可以管理数据到存储器设备16的写入。如上所述,写入模块24可使地址转换模块22基于被选区块更新闪存转换层或者列表。例如,写入模块24可从主机设备4接收包括数据单元和逻辑区块地址的信息,在存储器设备16的特定存储器设备内选择区块来存储该数据,使存储器设备16的该特定存储器设备实际上存储该数据(例如,经由通道控制器32的与该特定存储设备对应的通道控制器),并且使地址转换模块22更新闪存转换层或者列表来指示该逻辑区块地址对应于该特定存储器设备中的被选区块。

在一些示例中,待写入的数据可以位于比存储器设备16的存储器设备的单个区块(即,单个物理区块)更大的单元中。照此,写入模块24可以选择多个区块,总称为逻辑容器,每一个存储一部分数据单元。例如,写入模块24可以通过从存储器设备16的单个存储器设备选择多个区块来定义逻辑容器。然而,在一些示例中,写入模块24从单个存储器设备中选择逻辑容器的所有区块是不令人满意的。例如,不可能并行地对单个存储器设备中包括的多个区块进行写入。

因此,与通过从存储器设备16的单个存储器设备选择多个区块来定义逻辑容器相反,写入模块24可以通过从多个存储器设备16选择区块来定义逻辑容器。作为一个示例,其中nvma10包括布置到16个通道中的128个存储器设备16,每个通道具有八个芯片使能(ce)线/目标,一个ce线/目标用于通道中的每个存储器设备16(即,其中通道18a包括存储器设备16aa-ah,......,并且通道18p包括存储器设备16pa-ph),写入模块24可以通过从存储器设备16aa-16ph的每一个选择区块来定义包括128个区块的逻辑容器。然后写入模块24可使多个存储器设备16在被选区块上并行地存储该部分数据单元。以这种方式,通过将该部分数据写入到不同的存储器设备16上,例如,连接到不同通道18,写入模块24可以增加数据被存储到存储器设备16的速率。然而,在一些示例中,对于逻辑容器包括来自每个存储器设备16的区块是不令人满意的。

根据本公开的一个或更多个技术,与定义包括来自每个存储器设备16的区块的逻辑容器相反,写入模块24可以定义包括来自存储器设备16的子集合的每个存储器设备的区块的区块集合,存储器设备16的子集合包括至少一个来自每个通道18的存储器设备。在一些示例中,存储器设备16的子集合可以被称为管芯集合。例如,写入模块24可以基于与存储器设备16的相应的一个相关联的相应的ce线来划分存储器设备16,从而定义存储器设备16的多个子集合,每一个子集合包括至少一个来自每个通道18的存储器设备(例如,管芯)。对于存储器设备16的多个子集合的每一个相应的子集合,写入模块24可以定义相应的多个区块集合,每个区块集合包括来自存储器设备16的多个子集合的相应的子集合的每个管芯的区块。以这种方式中,例如通过利用包括较少区块的区块集合,写入模块24可以减少擦除区块集合中的区块所需的时间量,这也可以减少区块集合返回到空闲资源池的等待时间。同样以这种方式,用于回收区块集合的垃圾收集操作所需的时间量可被减少。

在一些示例中,除了使得部分数据单元由存储器设备16存储之外,写入模块24还可使得存储器设备16存储用于恢复数据单元的信息,防止一个或更多个区块失效或者变得损坏。例如,写入模块24可使存储器设备16存储校验信息到每个区块集合内的区块中。该校验信息可以用于恢复区块集合的其它区块存储的数据。在一些示例中,校验信息可以是其它区块存储的数据的xor。

为了将逻辑值为0(带电)的比特写成之前逻辑值为1(未带电)的比特,大电流被使用。这种电流可以足够大,使得其可能引起相邻闪存单元电荷的意外变化。为了防止意外变化,在将任何数据写入到区块内的单元之前,闪存单元的整个区块可以被擦除为逻辑值1(未带电)。因为这样,闪存单元可以在区块水平被擦除并在页面水平被写入。

因此,即使为了写入消耗小于一个页面的一定量的数据,控制器20也可以使整个区块被擦除。这会导致写入放大(writeamplification),写入放大指的是从主机设备4接收的待写入到存储器设备16的数据量与实际上写入到存储器设备16的数据量之间的比率。与没有写入放大所发生的相比,写入放大导致加速闪存单元的损耗。由于相对高的电压用于擦除闪存单元,所以当擦除闪存单元时,可能发生闪存单元的损耗。超过多个擦除循环,相对高的电压会导致改变闪存单元。最后,闪存单元可能耗尽,这样数据不再被写入到单元中。

控制器20可以实施用于减少写入放大和闪存单元的损耗的技术包括将从主机设备4接收的数据写入到未使用的区块(例如,图2的区块17)或者部分使用过的区块。例如,如果主机设备4发送如下数据到存储设备6,该数据仅包括与存储设备6已经存储的数据的小的变化。控制器接着可将旧数据标记为过期(stale)或者不再有效。随着时间,与擦除保持旧数据的区块并且将更新的数据写入到同一区块相比,这可以减少一些对区块的擦除操作。

响应于接收来自主机设备4的写入指令,写入模块24可以确定在存储器设备16的哪个物理位置(区块17)写入数据。例如,写入模块24可以从地址转换模块22或者维护模块26请求一个或更多个空的(例如,没有存储数据)、部分空的(例如,仅区块的一些页面存储数据)物理区块地址,或者存储至少一些无效(或者过期)数据。一旦接收一个或更多个外围区块地址,写入模块24可以定义和/或选择一个或更多个如上所述的区块集合,并且向通道控制器32a-32n(总称为“通道控制器32”)通信信息,这使得通道控制器32将数据写入到区块集合的区块。

读取模块28类似地可以控制从存储器设备16读取数据。例如,读取模块28可以从主机设备4接收请求具有关联的逻辑区块地址的信息。地址转换模块22可以利用闪存转换层或者列表将逻辑区块地址转换成物理区块地址。读取模块28然后可以控制一个或更多个通道控制器32以从物理区块地址找回数据。类似于写入模块24,读取模块28可以选择一个或更多个区块集合并且与通道控制器32通信信息,其使得通道控制器32从区块集合的区块读取数据。

通道控制器32的每个通道控制器可以连接到通道18的相应的通道。在一些示例中,控制器20可以包括的通道控制器32的数量与存储设备2的通道18的数量相同。例如,在写入模块24、读取模块28和/或维护模块26的控制下,通道控制器32可以对连接到相应的通道的存储器设备16执行寻址、编程、擦除和读取的密切控制。

维护模块26可以构造成执行与维护性能和延长存储设备6(例如,存储器设备16)的使用寿命相关的操作。例如,维护模块26可以实施损耗均衡或者垃圾收集中的至少一个。

如上所述,擦除闪存单元可能采用相对高的电压,在多个擦除操作之后,其可能引起闪存单元的变化。在一定数量的擦除操作之后,闪存单元会降级为数据不再被写入到闪存单元的范围,并且包括那些单元的区块(例如,图2的区块17)可能退役(不再被控制器20用于存储数据)。在区块损耗和退役之前,为了增加可被写入到存储器设备16的数据的量,维护模块26可以实施损耗均衡。

在损耗均衡中,维护模块26可以为每个区块或者一组区块追踪对区块或者一组区块的擦除或者写入的数量。维护模块26可使得从主机设备4进来的数据被写入到区块或者一组区块,其经历了相对较少的写入或者擦除,以试图维持每一个区块或者一组区块近似相等的写入或者擦除的数量。这可使得存储器设备16的每个区块以近似相同的速率耗尽,并可以增加存储设备6的使用寿命。

尽管通过减少对不同区块的擦除和写入的数量,这可以减少写入放大和闪存单元的损耗,但这也可能导致区块包括一些有效(新加)数据和一些无效(过期)数据。为了克服这一点,维护模块26可以实施垃圾收集。在垃圾收集操作中,维护模块26可以分析存储器设备16的区块的内容来确定包括高比例无效(过期)数据的区块。维护模块26然后可以将有效数据从区块重新写入到不同区块,并且接着擦除该区块。这会减少由存储器设备16存储的无效(过期)数据的量并且增加空闲区块的数量,但是也会增加写入放大和存储器设备16的损耗。在一些示例中,维护模块26可以在多个管芯集合的每一个内执行垃圾收集,以在区块集合内生成空的区块。通过这种方式,维护模块26可增加成功地在每个管芯集合内定义空的区块或者区块集合的可能性。

控制器20的调度模块30可以执行一个或更多个操作来调度由存储器设备16执行的活动。例如,调度模块30可以调度从控制器20的其它部件接收的请求来命令一个或更多个存储器设备16在运行期间执行一个或更多个活动。在一些示例中,调度模块30可以以被接收的次序(例如,先进先出或fifo)调度待执行的请求。在一些示例中,调度模块30可以基于一个或更多个因素来调度请求,这些因素包括但不局限于请求类型(例如,读取请求、写入请求、擦除请求、垃圾收集请求等)、自请求被接收开始经过的时间量、执行请求将消耗的功率量、带宽考虑等。作为一个示例,调度模块30可以基于存储器设备16的同时活动(例如,同时读取、写入和/或擦除数据)的存储器设备的数量调度待执行的活动。例如,调度模块30可以基于功率消耗预算、性能目标、或者二者来确定存储器设备16的可同时活动的存储器设备的数量。功率消耗预算可指示由存储器设备16使用的可用的功率量。例如,存储设备6具有25w功率目标时,功率消耗预算可以分配一部分功率目标(例如,16w)由存储器设备16使用。然而,在一些示例中,如果所有存储器设备16同时活动,将消耗的功率量可能大于所供应功率的分配部分。照此,调度模块30可在不消耗比分配部分的功率更多的的情况下,确定当前可活动的存储器设备16的数量。。

例如,在存储器设备16被分配x单位功率消耗预算并且当活动时存储器设备16的每个存储器设备使用一个单位功率时,调度模块30可以确定存储器设备16的x个存储器设备可同时活动。在一些示例中,例如在从存储器设备16定义多个管芯集合时,调度模块30可以确定可同时活动的多个管芯集合的管芯集合数量。例如,在存储器设备16被分配x单位功率消耗预算、当活动时存储器设备16的每个存储器设备使用一个单位功率并且每个管芯集合包括存储器设备16的x/2个存储器设备时,调度模块30可以确定多个管芯集合中的两个管芯集合可同时活动。

为了遵守功率消耗预算,调度模块30可以避免调度活动被存储器设备16的相应子集合来执行,子集合分别包括在多个管芯集合中,其将使得待同时活动的管芯集合数量大于可同时活动的确定的管芯集合数量。例如,当调度模块30确定多个管芯集合的一个管芯集合可同时活动时,调度模块30会调度活动使得第一指令被发布,引起在第一时间周期内多个管芯集合的第一管芯集合是活动的,使得第一时间周期期间存储器设备16消耗的功率量满足功率消耗预算,并且发布第二指令,引起在不同的第二时间周期期间多个管芯集合的第二管芯集合是活动的,使得不同的第二时间周期期间存储器设备16消耗的功率量也满足功率消耗预算。第一管芯集合可以是与第二管芯集合相同的管芯集合或者第一管芯集合可以是与第二管芯集合不同的管芯集合。

调度模块30还可以基于一个或更多个性能目标确定可以同时活动的管芯集合数量。例如,调度模块30可以调度活动,使得存储设备6实现一个或更多个写入速率目标(例如,1.5gb/s)、读取速率目标(例如,3gb/s)、一个或更多个输入/输出每秒操作(iops)目标(例如,顺序读/写、随机读/写和全部)等。

在一些示例中,调度模块30调度的活动可花费不同的时间和/或功率量来完成。作为一个示例,写入活动可能花费比读取活动更长(例如,2倍、5倍、10倍等)的时间来执行。作为另一个示例,当执行写入活动时存储器设备16的存储器设备消耗的功率量可能大于当执行读取活动时存储器设备16的存储器设备消耗的功率量(例如,2倍、5倍、10倍等)。在一些示例中,当调度活动时和/或当确定可同时活动的管芯集合的数量时,调度模块30可利用这些区别。例如,在执行读取活动与执行写入活动相比消耗功率较少时,调度模块30可以确定可同时执行读取活动的管芯集合多于可同时执行写入活动的管芯集合。以一个或更多个这些方式,调度模块30可以调度活动来实现一个或更多个性能目标。

在一些示例中,从主机设备4接收的信息可能在对读取数据的请求和对写入数据的请求之间不是均匀平衡的。例如,对读取数据的请求与对写入数据的请求的比率可以是1∶0(即,100%对读取数据的请求)、3∶1(即,75%对读取数据的请求和25%对写入数据的请求)、1∶1(即,50%对读取数据的请求和50%对写入数据的请求)、1∶3(即,25%对读取数据的请求和75%对写入数据的请求)、0∶1(即,0%对读取数据的请求和100%对写入数据的请求)和之间的任何一个。在一些示例中,当调度活动和/或当确定可以同时活动的管芯集合的数量时,调度模块30可以利用这种比例。例如,被用于执行读取活动的时间量小于被用于执行写入活动的时间量时,调度模块30可以调度多个读取活动在与单个写入活动的相同时间周期内发生。这样,存储设备6可实现比写入速率更高的读取速率。以一个或更多个这种方式,调度模块30可以调度活动来实现一个或更多个性能目标。

如上所述,维护模块26可以在存储器设备16上执行一个或更多个维护活动例如垃圾收集,从而例如增加空闲区块/区块集合的数量。这样,在一些示例中,基于从主机设备4接收的信息(例如,读取和/或写入数据请求),通过在特定时间周期期间分配可以同时用于垃圾收集的管芯集合的数量并且分配可以对于主机设备4同时可用的管芯集合的数量,调度模块30可以在请求上优先化垃圾收集请求。

基于确定的数量,调度模块30可以调度活动,使得在特定时间周期期间,管芯集合的第一集合基于从主机设备4接收的信息执行活动并且管芯集合的第二集合执行垃圾收集活动。在一些示例中,管芯集合的第一集合可以包括管芯集合的数量小于或者等于对于主机同时可用的管芯集合的数量。在一些示例中,管芯集合的第二集合可以包括管芯集合的数量小于或者等于可以同时活动的管芯集合的确定数量与特定时间周期期间基于从主机设备4接收的信息调度来执行活动的管芯集合数量(即,基于在特定时间周期期间从主机接收的信息由控制器发布指令到达的管芯集合的数量)之间的差值。以这种方式,调度模块8可以在满足功率消耗预算的同时将执行垃圾收集的需要与主机设备4可用的带宽量进行平衡。

此外,调度模块30可以调度不同的管芯集合来同时执行不同活动(即,读取、写入和擦除)。例如,与调度所有管芯集合同时执行写入活动相反,调度模块30可以同时调度第一管芯集合来执行读取活动、第二管芯集合来执行写入活动、第三管芯集合来执行擦除活动并且第四管芯集合空闲。以这种方式,例如,通过将存储器设备16划分成多个管芯集合,本公开的技术可以使调度模块30有效地调度不同类型的操作/活动。

图4是示出根据本公开的一个或更多个技术的、图1中示例性非易失性存储器阵列10的更多细节的概念性和示意性框图。如上所述,存储器设备16可以被组合到通道18中并且每个通道上的存储器设备16的存储器设备可以共享一个或更多个到控制器8的连接。例如,被组合到通道18的相应通道的存储器设备16可以附接到i/o总线34a-34n(总称为“i/o总线34”)相应的通用i/o总线和控制总线36a-36n(总称为“控制总线36”)相应的通用控制总线。如图4所示,通道18a的存储器设备16aa-16an每一个可以被附接到i/o总线34a和控制总线36a。

在一些示例中,i/o总线34每个相应的i/o总线可以包括多个双向i/o线(例如,8条线、16条线等),其用于在附接到相应的i/o总线的控制器8和存储器设备16之间交换地址信息、数据和指令信息。在一些示例中,控制总线36的每个相应的控制总线可以包括用于在附接到控制总线的控制器8和存储器设备16之间交换控制信号和状态信息的多条线。例如,控制总线36的示例性控制总线可以包括地址位置闩赋能(ale)线、指令锁存使能(cle)线、读取使能(re)线、写入使能(we)线和写入保护(wp)线,这些线可被控制器8使用于发布指令给存储器设备16的存储器设备;以及就绪/忙碌(r/b)线,其可被存储器设备16的存储器设备使用于发送状态信息给控制器8。

如上所述,每个通道18可包括一组芯片使能(ce)线,其可被用于在每个通道上多路复用存储设备。例如,如图4所示,ce线38aa-38na可以用于多路复用通道18a的存储器设备16aa-16an。例如,为了发送信息给存储器设备16aa,控制器8可以经由ce038aa发送信号,使得存储器设备16aa“听”i/o总线34a上的信号和控制总线36a上的信号中的一个或两个。控制器8接着通过在i/o总线34a和总线36a中的一个或两个上输出信号来发布指令给存储器设备16aa。以这种方式,控制器8可以在通道18的多个通道内多路复用存储器设备16的存储器设备。

根据本公开的一个或更多个技术,控制器8可以定义区块集合,其包括来自存储器设备16的子集合(或者管芯集合)的每个存储器设备的区块,该子集合包括来自每个通道18的至少一个存储器设备。如上所述并且如图4所示,控制器8可以划分存储器设备16来定义管芯集合40a-40n(总称为,“管芯集合40”),其每一个包括来自通道18中每一个的至少一个存储器设备(例如,管芯)。在一些示例中,控制器8可以基于与存储器设备16相关联的ce线将存储器设备16划分成管芯集合40。例如,控制器8可以将物理地位于特定ce线(即,位于每个通道18上的ce0)上的所有管芯划分成管芯集合40的特定(或被选)管芯集合。作为一个示例,控制器8可以将物理地位于每个通道ce0上的存储器设备16的存储器设备(即,存储器设备16aa,16ba,......,和16na)划分成管芯集合40a。在一些示例中,控制器8可以基于其它布置将存储器设备16划分成管芯集合40。例如,控制器8可以将物理地位于每个通道的不同ce上的存储器设备16的存储器设备(即,存储器设备16aa,16bc,......,和16nb)划分成管芯集合。将关于图5中示出的概念性框图讨论管芯集合40的示例性管芯集合40a的更多细节。

如图5所示,管芯集合40a的每个存储器设备16aa-16na包括16个区块。尽管16个区块被示出用于图5示例中的每个存储器设备16aa-16na,但是在其它示例中,每个存储器设备16aa-16na可以包括多个区块。从管芯集合40a中的多个存储器设备16aa-16na开始,控制器8可定义多个区块集合42a-42n(总称为“区块集合42”)。区块集合42的每一个区块集合可以包括来自管芯集合40a的每个管芯的区块(例如,单个区块)。

在一些示例中,控制器8可以从存储器设备16aa,16ba,......,和16na内的特定位置选择区块来定义区块集合42的一个区块集合。例如,如图5所示,包括在区块集合42a中的每个区块是来自每个存储器设备16aa,16ba,......,和16na的相应位置5。在一些示例中,控制器8可以从存储器设备16aa,16ba,......,和16na内的不同位置选择区块来定义区块集合42的区块集合。例如,如图5所示,区块集合42b可以包括来自存储器设备16aa的区块4、来自存储器设备16ba的区块7、来自存储器设备16ca的区块12,......,和来自存储器设备16na的区块7。在一些示例中,例如在不再期望使用在存储器设备的特定位置处的区块时(例如,在区块失效,与相同存储器设备的其它区块相比具有相对大的写入/擦除周期计数等时),控制器8可以继续从管芯集合40a内的其它存储器设备在特定位置(或者不同位置)选择区块来定义区块集合。

在一些示例中,控制器8可以利用nvma10内的存储器设备16的虚拟化布置来定义区块集合。例如,与从每个物理通道18选择存储器设备16的单个存储器设备相反,控制器8可以从每个物理通道18选择存储器设备16的多个存储器设备来定义管芯集合40的管芯集合。特别地,控制器8可以选择与每个物理通道18内的不同ce线附接的存储器设备16的存储器设备来定义管芯集合40的管芯集合。例如,图6是根据本公开的一项或多项技术的、示出了可以由存储设备的控制器执行的另一个示例性技术的概念性框图。如图6的示例所示,控制器8可以通过选择存储器设备16aa,16ba,16ca,......,和16na以及存储器设备16ab,16bb,16cb,......,和16nb来定义管芯集合40a’,。另外,如上参照图4所述,存储器设备16aa,16ba,16ca,.。....,和16na可连接到芯片使能线的第一集合,例如ce038aa-38an,并且存储器设备16ab,16bb,16cb,......,和16nb可以连接到芯片使能线的第二集合,例如ce138ba-38bn。

在管芯集合40的每个管芯集合内,控制器8可以分别将附接到每个通道18的存储器设备16的存储器设备映射到多个虚拟通道。图6的示例中,控制器8可以将存储器设备16aa,16ba,16ca,......,和16na映射到虚拟通道的第一集合并且将存储器设备16ab,16bb,......,和16nb映射到虚拟通道的第二集合,例如分别基于连接到ce使能线的存储设备6aa,16ba,16ca,......,和16na以及存储设备6ab,16bb,......,和16nb。以这种方式,控制器8可以定义比存储器设备16实际上附接的物理通道的数量更大的虚拟通道的数量。在一些示例中,这可允许控制器8或20访问存储器设备16的增加的并行性。

控制器8然后可以利用上述技术定义区块集合42。例如,对于管芯集合40的特定管芯集合,控制器8可以定义多个区块集合42,其每一个可包括来自特定(或者被选)管芯集合的每个管芯的区块。在特定的管芯集合包括附接到每个物理通道18内的不同ce线的存储器设备16的存储器设备时,控制器8可以通过从附接到每个物理通道18内的不同ce线的存储器设备16的每个存储器设备选择区块来定义区块集合42的区块集合。如图6的示例所示,控制器8可以通过从存储器设备16aa,16ba,16ca,......,和16na的每一个以及从存储器设备16ab,16bb,......,和16nb的每一个选择区块来定义区块集合42a’。

图7是示出了根据本公开的一项或多项技术的、用于定义存储设备内的管芯集合和区块集合的示例性技术的流程图。为了描述的简便,将同时参照图1的存储设备6和控制器8以及图3的控制器20描述图7的技术,但是具有不同于存储设备6、控制器8或者控制器20的构造的计算设备也可以执行图7的技术。

根据本公开的一项或者多项技术,控制器8可以从包括布置到多个通道(例如,通道18)中的多个管芯(例如,存储器设备16)的存储器阵列(例如,nvma10)定义多个管芯集合,每一个管芯集合包括来自多个通道的至少一个管芯(702)。例如,控制器20的写入模块可以根据图4所述的技术定义多个管芯集合40。在一些示例中,写入模块24可以通过接收程序指令定义多个管芯集合,其指示将存储器设备16划分成管芯集合40。

控制器8可以从多个管芯集合的被选管芯集合定义多个区块集合,每一个包括来自被选管芯集合的每个管芯的区块(704)。作为一个示例,根据参照图5的上述技术,写入模块24可以定义来自管芯集合40a的多个区块集合42,其每一个包括来自管芯集合40a的每个管芯的区块。在一些示例中,控制器8可以基于区块的状态信息重新定义多个区块集合中的一个或更多个。例如,在特定存储器设备的特定区块失效时,控制器8可以从特定存储器设备选择另一个区块来重新定义包括该特定区块的区块集合。

控制器8可以接收待存储的数据单元(706)。例如,控制器8可以接收来自主机设备例如图1的主机设备4的信息,包括逻辑区块地址和待存储的数据单元。

控制器8可以发布指令,其使得部分数据单元被存储到多个区块集合的被选区块集合的区块中(708)。例如,控制器8的写入模块24可以将数据单元划分成多个相应的部分并且发布指令使得包括特定区块集合的相应区块的存储器设备16的存储器设备存储数据单元的相应部分。

以这种方式,例如,通过同时将数据的相应部分写入到不同通道上的存储器设备的相应区块,控制器8可以利用并行性提高吞吐量。同样以这种方式,控制器8可以例如在不影响潜在吞吐量的情况下减少在逻辑管理域的基本单元中包括的区块的数量。

下面的示例可以示出本公开的一个或更多个技术。

示例1.一种方法包括:基于与多个管芯相关联的相应的芯片使能线,从包括布置到多个通道中的多个管芯的存储器阵列定义多个管芯集合,其中多个管芯集合的每个管芯集合包括来自多个通道的每一个的至少一个管芯;从该多个管芯集合的被选管芯集合,定义多个区块集合,其中每个区块集合包括来自该被选管芯集合的每个管芯集合的区块;通过存储器阵列的控制器,接收待存储的数据单元;以及通过控制器,发布指令使得数据单元被存储到该多个区块集合的被选区块集合的区块中。

示例2.示例1的方法,进一步包括:通过控制器,确定可同时活动的管芯集合的数量;通过控制器,发布指令给该多个管芯集合的一组,其具有小于或者等于可同时活动的管芯集合数量的若干管芯集合;以及通过控制器,避免发布将会使得待同时活动的管芯集合的数量大于可同时活动的管芯集合的数量的指令。

示例3.示例1-2的任何组合的方法,进一步包括:通过控制器,发布使多个管芯集合的第一子集合在第一时间周期期间是活动的第一指令,使得在第一时间周期期间由存储器阵列消耗的功率量小于或者等于功率消耗预算;以及通过控制器,发布使多个管芯集合的第二子集合在第二时间周期期间是活动的第二指令,使得在第二时间周期期间由存储器阵列消耗的功率也小于或者等于功率消耗预算。

示例4.示例1-3任何组合的方法,其中第二子集合包括多个管芯集合的不包括在第一子集合中的至少一个管芯集合,使得至少一个管芯集合的管芯在第二时间周期期间是活动的而在第一时间周期期间不是活动的。

示例5.示例1-4的任何组合的方法,其中发布第一指令包括:将来自指令集的第一指令发动到第一子集合的第一管芯集合的管芯,其中该指令集合包括读取指令、写入指令和擦除指令;以及将来自指令集的不同的第二指令发布到第一子集合的第二管芯集合的管芯。

示例6.示例1-5的任何组合的方法,其中确定待同时活动的管芯集合的数量包括:在运行期间并且基于功率消耗预算或者性能目标的至少一个,确定可同时活动的管芯集合的数量。

示例7.示例1-6的任何组合的方法,进一步包括:在多个管芯集合内执行垃圾搜集以形成空的区块集合。

示例8.示例1-7的任何组合的方法,其中确定可同时活动的管芯集合的数量包括确定在特定时间周期期间可同时活动的管芯集合的第一数量,该方法进一步包括:通过控制器,确定在特定时间周期期间对于主机可同时可用的管芯集合的第二数量,其中管芯集合的第二数量小于或者等于管芯集合的第一数量;通过控制器并且基于从主机接收的信息,发布指令给多个管芯的管芯集合的第一集合,其包括的管芯集合的数量小于或者等于管芯集合的第二数量;确定管芯集合的第一数量与基于从主机接收的信息由控制器发布的指令所到达的管芯集合的数量之间的差值;以及在多个管芯集合的管芯集合的第二集合上执行垃圾收集,其包括的管芯集合数量小于或者等于所确定的差值。

示例9.示例1-8的任何组合的方法,进一步包括:通过从多个通道的每一个至少选择多个管芯的单个管芯来定义特定管芯集合。

示例10.示例1-9的任何组合的方法,其中该多个通道包括n个物理通道,该方法进一步包括:通过从多个通道的每一个至少选择与不同芯片使能线相关联的多个管芯的至少两个来定义被选管芯;以及将被选管芯映射到m个虚拟通道,其中m是n至少两倍的整数。

示例11.一种存储设备包括:存储器阵列,其包括布置到多个通道中的多个管芯;和控制器,其被构造成:基于与多个管芯相关联的相应的芯片使能线从存储阵列定义多个管芯集合,其中该多个管芯集合的每个管芯集合包括来自多个通道的每一个的至少一个管芯;从多个管芯集合的被选管芯集合,定义多个区块集合,其中每个区块集合包括来自被选管芯的每个管芯的区块;接收待存储的数据单元;以及发布使得数据单元被存储在该多个区块集合的被选区块集合的区块中的指令。

示例12.示例11的存储设备,其中控制器进一步构造成执行示例1-10的任何组合的方法。

示例13.一种计算机可读存储介质,其存储指令,当执行该指令时,使得存储设备的一个或更多个处理器:从包括布置到多个通道中的多个管芯的存储器阵列,基于与多个管芯关联的相应的芯片使能线来定义多个管芯集合,其中该多个管芯集合的每个管芯集合包括来自该多个通道的每一个的至少一个管芯;从该多个管芯集合的被选管芯集合定义多个区块集合,其中每个区块集合包括来自被选管芯集合的每一个的区块;接收待存储的数据单元;以及发布使得该数据单元被存储到该多个区块集合的被选区块集合的区块中的指令。

示例14.示例13的计算机可读存储介质,进一步存储指令,当执行该指令时,使得存储设备的一个或更多个处理器执行示例1-10的任何组合的方法。

示例15.一种系统,包括:用于从包括布置到多个通道中的多个管芯的存储器阵列,基于与多个管芯相关联的相应的芯片使能线来定义多个管芯集合的装置,其中该多个管芯集合的每个管芯集合包括来自该多个通道的每一个的至少一个管芯;用于从该多个管芯集合的被选管芯集合定义多个区块集合的装置,其中每个区块集合包括来自被选管芯集合的每一个的区块;用于接收待存储的数据单元的装置;以及用于发布使得该数据单元被存储到该多个区块集合的被选区块集合的区块中的指令的装置。

示例16.示例15的系统,进一步包括装用于执行例1-10的任何组合的方法的装置。

本公开中描述的技术可至少部分在以下中实施:硬件、软件、固件或者其任何组合。例如,所描述的技术的各个方面可在一个或更多个处理器内实施,包括一个或更多个微处理器、数字信号处理器(dsp)、特定用途集成电路(asic)、现场可编程门阵列(fpga)或者任何等价集成的或离散的逻辑电路,以及这种部件的任何组合。术语“处理器”或者“处理电路”通常指的是任何前述逻辑电路、单独的或者与其它逻辑电路的组合或者任何其它等价电路。包括硬件的控制单元也可执行本公开的一个或更多个技术。

这种硬件、软件以及固件可在相同的设备内或者分开的设备内实施,以支持本公开描述的各种技术。另外,任何所描述的单元、模块或者部件可作为离散的但共同操作的逻辑设备被一起或者分开实施。不同特征例如模块或者单元的描述,意在突出不同的功能方面而不是必然地暗示那些模块或单元必须通过分离的硬件、固件或者软件部件来实现。另外,与一个或更多个模块或者单元有关的功能可以通过分离的硬件、固件或者软件部件来执行,或者集成在通用的或者分离的硬件、固件或者软件部件中。

本公开描述的技术还被具体化在或者编码在制造产品中,包括由指令编码的计算机可读存储介质。具体化或者编码在包括已编码的计算机可读存储介质的制造产品中的指令,可以使得一个或更多个可编程处理器,或者其它处理器,来实施这里描述的一个或更多个技术,例如当包括在或者编码在计算机可读存储介质中的指令由一个或更多个处理器执行时。计算机可读存储介质可以包括随机访问存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存、硬盘、光盘rom(cd-rom)、软盘、磁带、磁介质、光介质或者其它计算机可读介质。在一些示例中,制造产品包括一个或更多个计算机可读存储介质。

在一些示例中,计算机可读介质可以包括非易失性介质。术语“非易失性”指的是存储介质不是具体表现为一种载波或者传播的信号。在某些示例中,非易失性存储介质可以存储能够随着时间改变的数据(例如,在ram或者缓存中)。

各种示例已经被描述了。这些以及其它示例在下列权利要求的范围内。

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