存储器控制器及其操作方法与流程

文档序号:26180335发布日期:2021-08-06 18:27阅读:142来源:国知局
存储器控制器及其操作方法与流程

相关申请的交叉引用

本申请要求于2020年2月5日向韩国知识产权局提交的申请号为10-2020-0013885的韩国专利申请的优先权,其全部公开内容通过引用并入本文。

各个实施例总体涉及一种电子装置,且更特别地,涉及一种存储器控制器及其操作方法。



背景技术:

存储装置可响应于诸如计算机、智能手机或智能平板的主机装置的控制而存储数据。存储装置的示例包括诸如硬盘驱动器(hdd)的用于将数据存储在磁盘中的装置,以及诸如固态驱动器(ssd)或存储卡的用于将数据存储在半导体存储器中、尤其是非易失性存储器中的装置。

存储装置可包括存储数据的存储器装置和控制该存储器装置的存储器控制器。存储器装置可以是易失性存储器或非易失性存储器。非易失性存储器的示例包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪速存储器、相变ram(pram)、磁性ram(mram)、电阻式ram(rram)和铁电ram(fram)。



技术实现要素:

本公开的各个实施例涉及一种基于更新数据的次数和执行垃圾收集的次数来改变和存储流id的存储器控制器以及操作该存储器控制器的方法。

根据实施例,一种控制存储器装置的存储器控制器可包括:闪存转换层,基于从主机接收的第一数据中包括的第一流id来生成该第一数据的映射关系;流id控制器,接收用于基于根据第一流id生成的映射关系来更新存储器装置中存储的第一数据的第二数据,并且确定待分配到第二数据的第二流id;以及请求控制器,输出用于将第一数据存储在存储器装置中的编程命令和用于将包括第二数据和第二流id的第三数据存储在存储器装置中的编程命令,其中请求控制器基于由闪存转换层基于第二流id而生成的映射关系来确定用于将第三数据存储在存储器装置中的编程命令。

根据实施例,一种操作存储器控制器的方法,该存储器控制器控制存储器装置,该方法可包括:从主机接收第一数据,基于第一数据中包括的第一流id来生成第一数据的映射关系,输出用于基于映射关系将第一数据存储在存储器装置中的编程命令,从主机接收用于更新第一数据的第二数据,并且确定待分配到第二数据的第二流id。

根据实施例,一种存储器系统可包括:存储器装置,适于将当前数据连同当前流标识(id)一起存储到对应于该当前流id的存储区域中;以及控制器,适于对提供逻辑地址以利用经更新的数据来更新当前数据的次数进行计数以生成第一数量,对在对应于该逻辑地址的存储区域上执行垃圾收集操作的次数进行计数以生成第二数量,响应于更新当前数据的请求,基于第一数量和第二数量来调整当前流id的值以产生经调整的流id,控制存储器装置以将经更新的数据连同经调整的流id一起存储在对应于经调整的流id的存储区域中,并且使当前数据连同当前流id一起失效。

附图说明

图1是示出存储装置的框图;

图2是示出分配到主机数据的流id的示图;

图3是示出分配有流id的主机数据的示图;

图4是示出存储器控制器从主机接收请求、地址和数据并将所接收的数据存储在存储器装置中的配置的示图;

图5示出基于初始流id而被存储在存储器装置中的数据;

图6是示出在从主机接收到更新数据之后的存储器控制器的操作的示图;

图7示出在从主机接收更新数据之后流id控制器输出新编程数据的操作;

图8是示出保持或改变主机数据的示图;

图9示出基于经改变的流id存储在存储器装置中的数据;

图10示出在现有映射关系失效之后存储在存储器装置中的数据;

图11是示出当流id为1或10时被改变的流id的示图;

图12是示出诸如图1所示的存储器装置的结构的示图;

图13是示出存储块的示图;

图14是示出根据本公开的实施例的存储器控制器的操作的示图;

图15是示出根据本公开的实施例的存储器控制器的操作的示图;

图16是示出根据本公开的实施例的存储器控制器的操作的示图;

图17是示出图1的存储器控制器的另一实施例的示图;

图18是示出根据实施例的应用了存储装置的存储卡系统的框图;

图19是示出根据本公开的实施例的应用了存储装置的固态驱动器(ssd)系统的示例的框图;并且

图20是示出根据实施例的应用了存储装置的用户系统的框图。

具体实施方式

提供具体的结构和功能描述仅用于描述本发明的实施例。然而,本发明可以各种其它方式来配置或实施。因此,本发明不限于所公开的实施例。而且,在整个说明书中,对“实施例”、“另一实施例”等的参考不一定仅针对一个实施例,并且对任何这种措词的不同参考不一定针对相同的实施例。

图1是示出存储装置50的框图。

参照图1,存储装置50可包括存储器装置100和存储器控制器200。

存储装置50可被配置成响应于主机300的控制来存储数据。存储装置50的示例包括蜂窝电话、智能电话、mp3播放器、膝上型计算机、台式计算机、游戏机、tv、平板pc或车载信息娱乐系统。

根据对应于与主机300的通信方法的主机接口,存储装置50可被配置成各种类型的存储装置中的任意一种。例如,存储装置50可被配置成固态驱动器(ssd),mmc、emmc、rs-mmc和微型mmc形式的多媒体卡,sd、迷你sd和微型sd形式的安全数字卡,通用串行总线(usb)存储装置,通用闪存(ufs)装置,个人计算机存储卡国际协会(pcmcia)卡型存储装置,外围组件互连(pci)卡型存储装置,高速pci(pci-e)卡型存储装置,紧凑型闪存(cf)卡,智能媒体卡和/或记忆棒。

存储装置50可被制造成各种类型的封装中的任意一种。例如,存储装置50可被制造成堆叠封装(pop)、系统级封装(sip)、片上系统(soc)、多芯片封装(mcp)、板上芯片(cob)、晶圆级制造封装(wfp)和/或晶圆级堆叠封装(wsp)。

存储器装置100可存储数据。存储器装置100可响应于存储器控制器200的控制来进行操作。存储器装置100可包括存储器单元阵列,该存储器单元阵列包括存储数据的多个存储器单元。存储器单元阵列可包括多个存储块。存储块中的每一个可包括多个存储器单元。多个存储器单元可形成多个页面。根据实施例,页面可以是用于将数据存储在存储器装置100中或读取存储器装置100中存储的数据的单位。存储块可以是用于擦除数据的单位。

根据实施例,存储器装置100的示例包括:双倍数据速率同步动态随机存取存储器(ddrsdram)、低功率双倍数据速率第四代(lpddr4)sdram、图形双倍数据速率(gddr)sdram、低功率ddr(lpddr)sdram、rambus动态随机存取存储器(rdram)、nand闪速存储器、垂直nand闪速存储器、nor闪速存储器装置、电阻式随机存取存储器(rram)、相变存储器(pram)、磁阻随机存取存储器(mram)、铁电随机存取存储器(fram)和自旋转移力矩随机存取存储器(stt-ram)。作为示例,下面在存储器装置100是nand闪速存储器的背景下描述本发明的特征和各方面。

存储器装置100可具有二维阵列结构或三维阵列结构。在下文中,作为实施例来描述三维阵列结构。然而,本公开不限于此。本公开不仅可应用于其中电荷存储层包括导电浮栅(fg)的闪速存储器,而且还可应用于其中电荷存储层包括绝缘层的电荷撷取闪速(ctf)存储器。

根据实施例,存储器装置100可以以在单个存储器单元中存储单个数据位的单层单元(slc)方法来操作,或者通过在单个存储器单元中存储至少两个数据位的方法来操作。例如,存储器装置100可通过在单个存储器单元中存储两个数据位的多层单元(mlc)方法、存储三个数据位的三层单元(tlc)方法或存储四个数据位的四层单元(qlc)方法来操作。

存储器装置100可从存储器控制器200接收命令和地址,并且访问存储器单元阵列中响应于该地址而选择的区域。也就是说,存储器装置100可对响应于地址而选择的区域执行对应于该命令的操作。例如,存储器装置100可响应于所接收的命令执行写入操作(编程操作)、读取操作或擦除操作。例如,当接收编程命令时,存储器装置100可利用数据对由地址选择的区域进行编程。例如,当接收读取命令时,存储器装置100可从由地址选择的区域中读取数据。例如,当接收擦除命令时,存储器装置100可从由地址选择的区域中擦除数据。

存储器控制器200可控制存储装置50的一般操作。

当向存储装置50施加电源电压时,存储器控制器200可运行固件。当存储器装置100为闪速存储器装置时,存储器控制器200可运行诸如闪存转换层(ftl)的固件,用以控制主机300和存储器装置100之间的通信。

根据实施例,存储器控制器200可包括固件(未示出),该固件从主机300接收数据和逻辑块地址lba,并且将逻辑块地址lba转换成物理块地址pba,该物理块地址pba指示存储器装置100中存储数据的存储器单元的地址。另外,存储器控制器200可将配置逻辑块地址lba与物理块地址pba之间的映射关系的逻辑-物理地址映射表存储在缓冲存储器中。

例如,存储器控制器200可控制存储器装置100,以便可响应于来自主机300的请求执行编程操作、读取操作或擦除操作。例如,当从主机300接收编程请求时,存储器控制器200可将编程请求改变为编程命令,并且将编程命令、物理块地址pba和数据提供到存储器装置100。当从主机300一起接收读取请求和逻辑块地址时,存储器控制器200可将读取请求改变为读取命令,选择对应于逻辑块地址的物理块地址,并且将读取命令和物理块地址pba提供到存储器装置100。当从主机300一起接收擦除请求和逻辑块地址时,存储器控制器200可将擦除请求改变为擦除命令,选择对应于逻辑块地址的物理块地址,并且将擦除命令和物理块地址pba提供到存储器装置100。

根据实施例,存储器控制器200可在没有来自主机300的请求的情况下生成编程命令、地址和数据并将其传送到存储器装置100。例如,存储器控制器200可向存储器装置100提供命令、地址和数据以执行后台操作,诸如用于损耗均衡的编程操作和用于垃圾收集的编程操作。

根据实施例,存储器控制器200可包括流id(streamid)控制器210。流id控制器210可从主机300接收用于更新存储器装置100中存储的数据的更新数据。流id控制器210可生成新编程数据,其中将流id分配到所接收的更新数据。

例如,流id控制器210可对连同更新数据一起从主机300接收到逻辑块地址以对该更新数据进行编程的次数进行计数,并且对向与所接收的逻辑块地址相对应的数据执行垃圾收集的次数进行计数。从主机300接收到逻辑块地址的次数可代表对应于所接收的逻辑块地址的数据被更新的次数。执行垃圾收集的次数可代表对应于所接收的逻辑块地址的数据在未更新的情况下被移动到另一存储块的次数。

换言之,当从主机300接收的逻辑块地址的数量增加时,这可能意味着对应于所接收的逻辑块地址的数据被相对频繁地更新。另外,当执行垃圾收集的次数增加时,这可能意味着对应于所接收的逻辑块地址的数据不被经常更新。

存储器控制器200可包括闪存转换层220。闪存转换层220可将从主机300接收的逻辑块地址转换成物理块地址。换言之,闪存转换层220可生成逻辑块地址与物理块地址之间的映射关系。换言之,闪存转换层220可将逻辑块地址映射到物理块地址。

闪存转换层220可参考从主机300接收的主机数据来建立映射关系。例如,可基于主机数据中包括的流id来建立映射关系。换言之,闪存转换层220可建立映射关系,使得可将相应的主机数据存储在对应于该流id的区域中。

根据实施例,当闪存转换层220从流id控制器210接收新编程数据时,该闪存转换层220可基于新编程数据的流id来生成映射关系。换言之,闪存转换层220可基于新编程数据的流id将逻辑块地址映射到物理块地址。

存储器控制器200可包括请求控制器230。请求控制器230可从主机300接收编程请求和编程数据,并且向存储器装置100输出对应于该编程请求的编程命令和编程数据。存储器装置100可响应于编程命令而执行编程操作。

根据实施例,在请求控制器230输出用于存储从主机300接收的更新数据的编程命令之后,该请求控制器230可使关于更新之前的数据的映射关系失效。

根据实施例,存储装置50可进一步包括缓冲存储器(未示出)。存储器控制器200可控制主机300和缓冲存储器(未示出)之间的数据交换。可选地,存储器控制器200可临时存储用于控制存储器装置100的系统数据。例如,存储器控制器200可将从主机300输入的数据临时存储在缓冲存储器中,并且将临时存储在缓冲存储器中的数据传送到存储器装置100。

根据各个实施例,缓冲存储器可用作存储器控制器200的操作存储器或高速缓冲存储器。缓冲存储器可存储由存储器控制器200运行的代码或命令。可选地,缓冲存储器可存储由存储器控制器200处理的数据。

根据实施例,缓冲存储器可包括动态随机存取存储器(dram)或静态随机存取存储器(sram),该动态随机存取存储器(dram)诸如双倍数据速率同步动态随机存取存储器(ddrsdram)、低功率双倍数据速率第四代(lpddr4)sdram、图形双倍数据速率(gddr)sdram、低功率ddr(lpddr)或rambus动态随机存取存储器(rdram)。

根据各个实施例,缓冲存储器可从外部联接到存储装置50。在这种情况下,缓冲存储器可由外部联接到存储装置50的一个或多个非易失性存储装置来实现。

根据实施例,存储器控制器200可控制至少两个存储器装置。存储器控制器200可根据交错方案控制这些存储器装置,以便提高操作性能。

主机300可使用诸如以下的各种通信方法中的至少一种来与存储装置50通信:通用串行总线(usb)、串行at附件(sata)、串列scsi(sas)、高速芯片间(hsic)、小型计算机系统接口(scsi)、外围组件互连(pci)、高速pci(pcie)、高速非易失性存储器(nvme)、通用闪存(ufs)、安全数字(sd)、多媒体卡(mmc)、嵌入式mmc(emmc)、双列直插式存储器模块(dimm)、寄存式dimm(rdimm)和/或降低负载的dimm(lrdimm)通信方法。

主机300可包括文件系统310。文件系统310可将流id包括在由主机300输出的主机数据中。例如,文件系统310可分配流id。

文件系统310可将分配有流id的主机数据传送到存储器控制器200。

图2是示出分配到主机数据的流id的示图。

图2示出由图1的主机300中的文件系统310分配的流id(streamid)。流id可以是从1到10的数字。根据实施例,更接近1的流id可指示相应的数据被频繁更新(hot)。另一方面,更接近10的流id可指示相应的数据不被频繁更新(cold)。

1到10的范围是示例性的。在另一实施例中,可从比从1到10的范围更窄的范围(例如,1到5)或更宽的范围(例如,1到15)中选择流id。

在图2的实施例中,从主机300输出的数据可包括第一数据data1至第六数据data6,其各为一条数据。

根据实施例,文件系统310可向每条数据分配初始流id4或7。例如,当预期将频繁地更新相应的一条数据(hot)时,文件系统310可将流id4分配到该数据。然而,当预期不会频繁地更新相应的一条数据(cold)时,文件系统310可将流id7分配到该数据。可基于数据扩展名或数据文件格式来确定相应数据是否被频繁更新。

例如,当从图1的主机300输出的数据的扩展名是txt、doc、docx或hwp时,文件系统可分配流id4。例如,当数据的扩展名是jpg、jpeg、mp4、pdf或avi时,文件系统可分配流id7。换言之,文件系统可基于数据的扩展名来确定是否频繁发生数据更新,并且可基于该确定来向数据分配流id。

根据实施例,当数据的扩展名是txt、doc、docx或hwp时,相应的数据可包括包含文本的文件并且会频繁改变。因此,预期可能频繁更新相应的数据。因此,文件系统310可将流id4分配到该数据。

另外,当数据的扩展名是jpg、jpeg、mp4、pdf或avi时,相应的数据可以是图像文件或视频文件。一旦生成了这种类型的数据,该数据可能不会改变,并且预期相应的数据可能不会被频繁更新。因此,文件系统310可分配流id7。

在另一示例中,当从图1的主机300输出的数据是文本文件时,文件系统310可将流id4分配到该文本文件的数据。当从图1的主机300输出的数据是图像文件或视频文件时,文件系统310可将流id7分配到该图像文件或视频文件的数据。换言之,文件系统310可基于数据的特性来确定是否频繁发生数据更新,并且可基于该确定来向数据分配流id。

根据实施例,当数据的文件格式是文本文件时,该数据可能会频繁改变。因此,预期可能会频繁更新该数据。因此,文件系统可分配流id4。

另外,当数据的文件格式是图像文件或视频文件时,数据可能不会被改变。因此,预期可能不会频繁更新该数据。因此,文件系统可分配流id7。

图2示出基于数据扩展名而分配到每条数据的流id(streamid)。

根据实施例,第一数据data1可具有hwp的文件扩展名。换言之,第一数据data1可包含文本,因此预期可能频繁更新该第一数据data1。因此,文件系统310可将流id4分配到该第一数据data1。

以同样的方式,第二数据data2可具有doc的文件扩展名,并且第三数据data3可具有txt的文件扩展名。因此,第二数据data2和第三数据data3都可以是文本文件,并且预期将被频繁更新。因此,文件系统310可将流id4分配到第二数据data2和第三数据data3中的每一个。

根据实施例,第四数据data4可指代具有jpg的文件扩展名的文件。换言之,第四数据data4可以是图像数据,因此,预期可能不会频繁更新相应的数据。因此,文件系统可将流id7分配到该第四数据data4。

以同样的方式,第五数据data5可具有pdf的扩展名,并且第六数据data6可具有avi的文件扩展名。因此,第五数据data5和第六数据data6两者可以分别是通过使文本成像的图像文件以及视频文件,并且可预期将不会被频繁更新。因此,文件系统310可将流id7分配到第五数据data5和第六数据data6中的每一个。

因此,主机300可向从主机300输出的数据分配流id,并且可将流id4或7分配到该数据。另外,可由数据扩展名或数据特性来确定流id是4还是7。

图3是示出分配有流id的多条主机数据的示图。

参照图2和图3,图3示出从图1的主机300输出的主机数据(host_data)。主机数据可包括各自具有流id的多条数据。

可假设图3的第一数据data1至第六数据data6分别与图2的第一数据data1至第六数据data6相同。

根据实施例,从主机300输出的主机数据host_data可包括具有流id4的第一数据data1。可基于相应数据中包括的其流id来将每条主机数据存储在图1的存储器装置100中。例如,当一条数据中包括流id4时,可将该数据存储在存储器装置100的、对应于流id4的区域中。

根据实施例,从主机300输出的主机数据可包括具有流id4的第二数据data2和/或具有流id4的第三数据data3。因为data2和/或data3中包括的流id为4,所以该数据可存储在存储器装置100的、对应于流id4的区域中。

另外,从主机300输出的主机数据可包括具有流id7的第四数据data4、具有流id7的第五数据data5和/或具有流id7的第六数据data6。因为这些数据条中的每一条都具有流id7,所以每一条都可存储在存储器装置100的、对应于所接收的流id的区域中。

图4是示出从主机300接收请求、地址和数据并将所接收的数据存储在存储器装置中的存储器控制器200的配置的示图。

参照图4,存储器控制器200可包括流id控制器210、闪存转换层220和请求控制器230。主机300可包括文件系统310。

根据实施例,文件系统310可向特定数据分配流id。可根据数据扩展名或数据的文件格式来确定流id。文件系统310可将分配了流id的每条数据传送到存储器控制器200。例如,可将每条数据输出到存储器控制器200的闪存转换层220和请求控制器230。

主机300可将逻辑块地址lba和编程请求pgm_req连同特定的主机数据条一起输出到存储器控制器200,以便将这样的数据编程在存储器装置100中。可将逻辑块地址lba输出到闪存转换层220,并且可将编程请求pgm_req输出到请求控制器230。

根据实施例,闪存转换层220可从主机300接收逻辑块地址lba和主机数据。

换言之,闪存转换层220可生成逻辑块地址lba与物理块地址pba之间的映射关系。更具体地,闪存转换层220可参考一条主机数据的流id来生成映射关系。换言之,闪速转换层220可参考流id来生成映射关系,使得该条主机数据可存储在与其流id相对应的区域中。

例如,当流id为4时,可配置映射关系,使得相应的主机数据可存储在存储器装置100的多个区域之中存储各自具有流id4的数据的区域(例如,第一至第十区域之中的第四区域)中。另外,当流id为7时,可配置映射关系,使得相应的主机数据可存储在存储器装置100的多个区域之中存储各自具有流id7的数据的区域(例如,第一至第十区域中的第七区域)中。

闪存转换层220可基于流id来生成映射关系,并且基于所生成的映射关系来将物理块地址pba输出到存储器装置100。换言之,闪存转换层220可基于流id来将逻辑块地址映射到物理块地址。

根据实施例,请求控制器230可接收编程请求pgm_req和主机数据host_data。编程请求pgm_req可指示将相应的主机数据条存储在存储器装置100中。

请求控制器230可向存储器装置100输出编程命令pgm_cmd和主机数据,以便将主机数据存储在该存储器装置100中。

根据实施例,在存储器装置100接收编程命令pgm_cmd、物理块地址pba和主机数据之后,该存储器装置100可将主机数据编程到存储器装置100的、对应于物理块地址pba的区域中。

因此,文件系统310可最初将流id“4(hot)”或“7(cold)”分配到数据。因此,每条主机数据中包括的流id可以是4或7。因此,最初,主机数据host_data可仅存储在存储器装置100的多个区域之中对应于流id4或7的区域中。

根据实施例,流id控制器210可接收更新数据update_data。换言之,流id控制器210可接收用于更新存储器装置100中存储的数据的数据。

在流id控制器210接收更新数据之后执行的操作将在下面参照图6和图7进行更详细的描述。

图5示出基于初始流id而被存储在存储器装置100中的数据。

参照图5,图5示出存储在图1的存储器装置100中包括的多个区域之中的设定区域中的数据。如图5所示,图1的存储器装置100可包括第一区域region1至第十区域region10。然而,在其它实施例中,图1的存储器装置100可具有更少或更多的区域。第一区域region1至第十区域region10中的每一个可包括多个存储块。

可假设图5的第一数据data1至第六数据data6分别与图2和图3的第一数据data1至第六数据data6相同。

根据实施例,第一区域region1至第十区域region10可分别对应于具有流id1至10的区域。换言之,第一区域region1可对应于流id1,第二区域region2可对应于流id2,第三区域region3可对应于流id3,第四区域region4可对应于流id4,第五区域region5可对应于流id5,第六区域region6可对应于流id6,第七区域region7可对应于流id7,第八区域region8可对应于流id8,第九区域region9可对应于流id9,并且第十区域region10可对应于流id10。

根据实施例,最初从图1的主机300接收的主机数据可具有流id4或7。换言之,基于数据扩展名或数据的文件格式,最初可将主机数据的流id确定为4或7。因此,从主机300接收的主机数据可存储在图1的存储器装置100的多个区域之中对应于流id4或7的区域中。

根据实施例,对应于第一数据data1至第三数据data3中的每一个的流id可以是4。因此,当图1的存储器装置100接收第一数据data1和流id4时,该存储器装置100可将该数据存储在第四区域region4中。以同样的方式,当存储器装置100接收第二数据data2和流id4,或第三数据data3和流id4时,该存储器装置100可将这些数据条中的每一条存储在第四区域region4中。

根据实施例,对应于第四数据data4至第六数据data6中的每一个的流id可以是7。因此,当图1的存储器装置100接收第四数据data4和流id7时,该存储器装置100可将该数据存储在第七区域region7中。以同样的方式,当存储器装置100接收第五数据data5和流id7,和/或第六数据data6和流id7时,该存储器装置100可将相应的数据存储在第七区域region7中。

因此,因为初始流id被设定为4或7,所以每条主机数据可仅存储在对应于流id4或7的第四区域region4或第七区域region7中,而数据可不存储在任何其它区域中,即region1至region3、region5、region6和region8至region10。

图6是示出在从主机300接收到更新数据之后的存储器控制器200的操作的示图。

参照图6,存储器控制器200可被配置成与图4的存储器控制器相同。为此,图6的存储器控制器200可包括流id控制器210、闪存转换层220和请求控制器230。

图6示出在将主机数据存储在存储器装置100中包括的区域之中的第四区域和第七区域中之后执行的操作。换言之,图6示出第四区域和第七区域的数据被更新。

根据实施例,主机300可向存储器控制器200输出用于更新存储器装置100中存储的数据的更新数据update_data。另外,主机300可将编程请求pgm_req和逻辑块地址lba连同更新数据一起输出到存储器控制器200。

根据实施例,流id控制器210可接收从主机300输出的更新数据和逻辑块地址lba。流id控制器210可向存储器装置100输出流id请求stream_id_req,以将流id分配到更新数据。流id请求stream_id_req可用于获取与所接收的逻辑块地址lba具有映射关系的物理块地址中存储的数据的流id(stream_id)。

流id控制器210可保持、增加或减小响应于流id请求stream_id_req而接收的流id。

例如,当接收到特定逻辑块地址的次数小于第一参考数时,或者当对特定逻辑块地址执行垃圾收集的次数小于第二参考数时,流id控制器210可保持流id,即,不改变该流id。

例如,当特定逻辑块地址已被接收第一参考数或更多次时,流id控制器210可减小流id。另外,当对特定逻辑块地址执行了第二参考数或更多次的垃圾收集时,流id控制器210可增加流id。换言之,当发生这些条件中的一个或者这两个条件均发生时,流id控制器210可不使用固定的流id,而是可改变该流id。

随后,流id控制器210可生成新编程数据npgm_data,可将与初始数据的流id相同或不同的流id分配到该新编程数据npgm_data。可将新编程数据npgm_data输出到闪存转换层220和存储器装置100。

根据实施例,闪存转换层220可从主机300接收逻辑块地址lba,并且从流id控制器210接收新编程数据npgm_data。闪存转换层220可参考新编程数据npgm_data的流id,生成所接收的逻辑块地址lba与新的物理块地址npba之间的映射关系。换言之,闪存转换层220可生成映射关系,使得新编程数据npgm_data可存储在存储器装置100的、与经改变的流id相对应的区域中,即与新的物理块地址npba相对应的区域中。换言之,闪存转换层220可基于经改变的流id来将逻辑块地址映射到物理块地址。

在生成逻辑块地址lba与物理块地址pba之间的映射关系之后,闪存转换层220可将新的物理块地址npba输出到存储器装置100。当流id未改变时,可基于逻辑块地址lba与物理块地址pba之间现有的映射关系来输出与之前相同的物理块地址pba。然而,当流id改变时,可输出新的物理块地址npba。

例如,当流id从4改变到3时,闪存转换层220可将新的物理块地址npba输出到存储器装置100,使得更新数据update_data可存储在对应于流id3的区域中。

根据实施例,请求控制器230可从主机300接收编程请求pgm_req,生成与该编程请求pgm_req相对应的编程命令pgm_cmd,并且将该编程命令pgm_cmd输出到存储器装置100。编程命令pgm_cmd可指示存储器装置100对更新数据update_data进行编程。

当更新数据update_data被编程到新的物理块地址npba中时,请求控制器230可使关于更新之前的相应的主机数据条的映射关系失效。

图7示出由流id控制器210通过从主机300接收更新数据并输出新编程数据而执行的操作。

参照图7,图7的流id控制器210可包括更新计数器211、流id改变器213、垃圾收集计数器215和数据生成器217。

图7示出在将主机数据存储在存储器装置100中包括的多个区域之中的第四区域和第七区域中之后,输出新编程数据npgm_data。

根据实施例,流id控制器210可接收从主机300输出的逻辑块地址lba。可将从主机300接收的逻辑块地址lba提供到更新计数器211和流id改变器213。

根据实施例,更新计数器211可对从主机300接收的逻辑块地址lba进行计数。更新计数器211可仅在从图6的存储器控制器200接收到主机数据以及逻辑块地址lba时对所接收的逻辑块地址lba进行计数。换言之,更新计数器211可仅当接收到对应于编程请求的逻辑块地址lba时,才对接收到逻辑块地址lba的次数进行计数。可输出编程请求来更新存储器装置100中存储的数据。

因此,每当对应于逻辑块地址lba的数据被更新时,更新计数器211可对接收到相应的逻辑块地址lba的次数进行计数。更新计数器211可对接收到相应的逻辑块地址lba的次数进行计数,生成更新计数update_cnt,并且将该更新计数update_cnt提供到流id改变器213。

根据实施例,垃圾收集计数器215可对通过垃圾收集将对应于逻辑块地址lba的物理块地址pba中存储的数据在不更新的情况下移动到另一存储块的次数进行计数。换言之,垃圾收集计数器215可通过对通过垃圾收集将数据在不更新的情况下移动到另一存储块的次数进行计数来生成垃圾收集计数gc_cnt。

根据实施例,流id控制器210可接收从主机300输出的逻辑块地址lba。流id改变器213可向存储器装置100输出流id请求stream_id_req,以便检查对应于逻辑块地址lba的流id。随后,流id改变器213可接收对应于流id请求stream_id_req的流idstream_id。

根据实施例,当从更新计数器211接收的更新计数update_cnt小于第一参考值并且垃圾收集计数gc_cnt小于第二参考值时,流id改变器213可不改变与从图6的主机300接收的逻辑块地址lba相对应的数据的流id。流id改变器213可将从图6的存储器装置100接收的现有流id输出到数据生成器217。

然而,当从更新计数器211接收的更新计数update_cnt是第一参考值或更大,或者从垃圾收集计数器215接收的垃圾收集计数gc_cnt是第二参考值或更大时,流id改变器213可输出通过增加或减小初始流id而获得的新流idnstream_id。

根据实施例,第一参考值和第二参考值可以是10。

例如,当接收到逻辑块地址lba的次数是10或更多时,更新计数update_cnt可以是10或更大。因此,在接收更新计数update_cnt之后,流id改变器213可减小流id。另外,当垃圾收集的次数是10或更多时,垃圾收集计数gc_cnt可以是10或更大。因此,在接收垃圾收集计数gc_cnt之后,流id改变器213可增加流id。

根据实施例,当更新计数update_cnt是10或更大时,流id改变器213可将从存储器装置100接收的流id减小1。例如,如果从存储器装置100接收的流id是4,则流id改变器213可接收更新计数update_cnt,并且将流id减小到3。

根据实施例,当垃圾收集计数gc_cnt为10或更大时,流id改变器213可将从存储器装置100接收的流id增加1。例如,如果从存储器装置100接收的流id是4,则流id改变器213可接收垃圾收集计数gc_cnt,并且将流id增加到5。

在另一实施例中,当流id改变器213从更新计数器211接收到10或更大的更新计数update_cnt并且从垃圾收集计数器215接收到10或更大的垃圾收集计数gc_cnt时,流id改变器213可不改变流id。

根据实施例,流id改变器213可通过增加或减小流id来输出新流idnstream_id,或者可输出现有的流id。可将新流idnstream_id或现有的流id提供到数据生成器217。

数据生成器217可从主机300接收更新数据update_data,生成新编程数据npgm_data,并且可将新编程数据npgm_data输出到存储器装置100,在新编程数据npgm_data中现有的流id或新流idnstream_id被分配到更新数据update_data。

换言之,当流id未改变时,数据生成器217可生成其中将现有的流id分配到更新数据update_data的新编程数据npgm_data。另一方面,当流id改变时,数据生成器217可生成其中将新流idnstream_id分配到更新数据update_data的新编程数据npgm_data。

图8是示出保持或改变流id(streamid)的示图。

如图8所示,可保持或改变被分配到第一数据data1至第六数据data6的流id。最初,被分配到第一数据data1至第三数据data3中的每一个的流id是4,并且被分配到第四数据data4至第六数据data6中的每一个的流id是7。

换言之,最初,因为预期将频繁更新第一数据data1至第三数据data3,所以可将第一数据data1至第三数据data3中的每一个的流id分配为4。另一方面,因为预期将不会频繁更新第四数据data4至第六数据data6,所以可将第四数据data4至第六数据data6中的每一个的流id分配为7。

如在图7的示例中,在图8中,用于确定是否改变流id的第一和第二参考值中的每一个都是10。在另一实施例中,第一和第二参考值中的每一个可不同于10,并且不一定相同。

根据实施例,可基于数据更新和垃圾收集gc来改变第一数据data1至第六数据data6中的每一个的流id。

根据实施例,在设定第一数据data1的初始流id之后,该第一数据data1可能被更新五次,而不通过垃圾收集gc移动到另一存储块。换言之,由更新计数器211计数的更新计数update_cnt可以是5,并且由垃圾收集计数器215计数的垃圾收集计数gc_cnt可以是0。

因为更新计数update_cnt小于第一参考值10,并且垃圾收集计数gc_cnt小于第二参考值10,所以流id改变器213可保持第一数据data1的现有流id。因此,第一数据data1的流id可保持为4。

因此,因为第一数据data1被更新五次,所以可将现有的流id4分配到经更新的第一数据data1_u5,并且包括经更新的第一数据data1_u5和流id4的新编程数据可存储在图1的存储器装置100的区域之中对应于流id4的第四区域中。

根据实施例,在设定第二数据data2和第三数据data3的初始流id之后,第二数据data2和第三数据data3可能被更新十次,而不通过垃圾收集gc移动到另一存储块。换言之,由更新计数器211计数的更新计数update_cnt是10,并且由垃圾收集计数器215计数的垃圾收集计数gc_cnt可以是0。

因此,data2和data3中的每一个的更新计数update_cnt是第一参考值10,而每一个的垃圾收集计数gc_cnt小于第二参考值。因此,流id改变器213可减小第二数据data2和第三数据data3的流id。换言之,为了示出第二数据data2和第三数据data3被频繁更新,流id改变器213可将第二数据data2和第三数据data3中的每一个的流id从4减小到3。

因此,可将经改变的流id3分配到经更新的第二数据data2_u10和第三数据data3_u10中的每一个,并且包括经更新的第二数据data2_u10和流id3的新编程数据和包括经更新的第三数据data3_u10和流id的3的新编程数据可存储在存储器装置100的区域之中对应于流id3的第三区域中。

根据实施例,在设定第四数据data4的初始流id之后,该第四数据data4可能通过垃圾收集gc被移动到另一存储块十次,而不更新该第四数据data4。换言之,由更新计数器211计数的更新计数update_cnt可以是0,并且由垃圾收集计数器215计数的垃圾收集计数gc_cnt可以是10。

垃圾收集计数gc_cnt可以是第二参考值10或更大,而更新计数update_cnt可以小于第一参考值10。因此,因为执行垃圾收集的次数是第二参考值或更多,所以流id改变器213可增加第四数据data4的流id。换言之,为了示出第四数据data4不被频繁更新,流id改变器213可将第四数据data4的流id从7增加到8。

因此,因为第四数据data4通过垃圾收集被移动到另一存储块十次,所以可将经改变的流id8分配到该第四数据data4,并且包括第四数据data4和流id8的新编程数据可存储在存储器装置100的区域之中对应于流id8的第八区域中。

根据实施例,在设定第五数据data5的初始流id之后,该第五数据data5可能通过垃圾收集gc被移动到另一存储块五次,而不更新该第五数据data5。换言之,由更新计数器211计数的更新计数update_cnt可以是0,并且由垃圾收集计数器215计数的垃圾收集计数gc_cnt可以是5。

垃圾收集计数gc_cnt可小于第二参考值10,而更新计数update_cnt可小于第一参考值10。因此,因为垃圾收集计数gc_cnt或更新计数update_cnt未能达到第二参考值或第一参考值,所以流id改变器213可针对第五数据data5保持流id7。

因此,因为第五数据data5通过垃圾收集被移动到另一存储块五次,所以可将现有的流id7分配到该第五数据data5,并且包括第五数据data5和流id7的新编程数据可存储在存储器装置100的多个区域之中对应于流id7的第七区域中。

根据实施例,在设定第六数据data6的初始流id之后,该第六数据data6可能被更新十次,而不通过垃圾收集gc移动到另一存储块。换言之,由更新计数器211计数的更新计数update_cnt可以是10,并且由垃圾收集计数器215计数的垃圾收集计数gc_cnt可以是0。

更新计数update_cnt可以是第一参考值10或更大。然而,垃圾收集计数gc_cnt可小于第二参考值10。因此,因为第六数据data6被更新的次数大于或等于第一参考值,所以流id改变器213可减小第六数据data6的流id。换言之,为示出第六数据data6被频繁更新,流id改变器213可将第六数据data6的流id从7减小到6。

因此,因为第六数据data6被更新十次,所以可将经改变的流id6分配到经更新的第六数据data6_u10,并且包括经更新的第六数据data6_u10和流id6的新编程数据可存储在存储器装置100的多个区域之中对应于流id6的第六区域中。

图9示出基于经改变的初始流id而存储在存储器装置100中的数据。

参照图5、图8和图9,图9示出随着每个区域中存储的数据的流id被保持或改变而存储在另一区域中的数据。

如图9所示,其中所示的存储器装置100与图1的存储器装置100相同,并且包括第一区域region1至第十区域region10。第一区域region1至第十区域region10可包括多个存储块。

另外,可假设如图9所示的第一数据data1至第六数据data6、经更新的第一数据data1_u5、经更新的第二数据data2_u10、经更新的第三数据data3_u10和经更新的第六数据data6_u10与图8的相应数据相同。换言之,假设图9的数据中的每一个的更新计数update_cnt和垃圾收集计数gc_cnt可与图8的数据中的每一个的相同。

根据实施例,初始的第一数据data1至第三数据data3可根据分配到每个数据的流id而存储在第四区域region4中,并且初始的第四数据data4至第六数据data6可根据分配到每个数据的流id而存储在第七区域region7中。

随后,可更新第一数据data1至第六数据data6,或者可执行垃圾收集gc。

根据实施例,第一数据data1可能被更新五次,并且变成经更新的第一数据data1_u5。然而,因为第一数据data1被更新的次数小于或等于第一参考值10,所以经更新的第一数据data1_u5的流id可以是与第一数据data1的流id相对应的4。对第一数据data1执行垃圾收集的次数可小于第二参考值10。

因此,包括通过更新第一数据data1而生成的经更新的第一数据data1_u5和流id4的数据可存储在对应于流id4的第四区域region4中。

根据实施例,第二数据data2和第三数据data3各自可被更新十次,并且分别变成经更新的第二数据data2_u10和经更新的第三数据data3_u10。因为第二数据data2和第三数据data3被更新的次数是第一参考值10或更多,所以可将经更新的第二数据data2_u10和经更新的第三数据data3_u10的流id从4改变到3。对经更新的第二数据data2_u10和经更新的第三数据data3_u10执行垃圾收集的次数可小于第二参考值10。

因此,包括通过更新第二数据data2而生成的经更新的第二数据data2_u10和流id3的新编程数据和包括通过更新第三数据data3而生成的经更新的第三数据data3_u10和流id3的新编程数据可存储在第三区域region3中。

根据实施例,第四数据data4可能未被更新,并且可能对该第四数据data4执行了十次垃圾收集,并且它可能存储在第七区域region7中的另一存储块中。因为执行垃圾收集的次数是第二参考值10或更多,并且更新的次数是第一参考值10或更少,所以可将第四数据data4的流id从7改变到8。因此,包括第四数据data4和流id8的新编程数据可存储在对应于新分配到第四数据data4的流id8的第八区域region8中。

根据实施例,第五数据data5可能未被更新,并且可能对该第五数据data5执行了五次垃圾收集,并且它可能存储在第七区域region7中的另一存储块中。因为执行垃圾收集的次数具有第二参考值10或更少,并且更新的次数具有第一参考值10或更少,所以可将第五数据data5的流id保持为7。因此,包括第五数据data5和流id7的新编程数据可存储在对应于流id7的第七区域region7中。

根据实施例,第六数据data6可能被更新十次,并且变成经更新的第六数据data6_u10。因为第六数据data6被更新的次数是第一参考值10或更多,所以可将经更新的第六数据data6_u10的流id从7改变到6。对经更新的第六数据data6_u10执行垃圾收集的次数可能小于第二参考值10。因此,包括通过更新第六数据data6而生成的经更新的第六数据data6_u10和流id6的数据可存储在对应于流id6的第六区域region6中。

图10示出在现有映射关系失效之后在存储器装置100中存储的数据。

如图10所示,数据可在该数据根据如图9所示被保持或改变的流id而移动之后存储在每个区域中。

根据实施例,图6的存储器控制器200可输出用于对包括经更新的数据和/或经改变的流id的新编程数据进行编程的编程命令,并且可使存储器装置100中存储的现有数据失效。

更具体地,存储器控制器200可将新编程数据编程到存储器装置100中,使对应于现有数据的物理块地址和逻辑块地址之间的映射关系失效,并且使现有数据失效。

根据实施例,第一数据data1可能被更新五次并且变成经更新的第一数据data1_u5,并且该经更新的第一数据data1_u5可根据该经更新的第一数据data1_u5的流id而存储在第四区域region4中。因此,图6的存储器控制器200可使对应于第一数据data1的物理块地址和逻辑块地址之间的映射关系失效,并且使第四区域region4中存储的第一数据data1失效。

以相同的方式,随着第二数据data2和第三数据data3被更新,存储器控制器200可使与第四区域region4中存储的第二数据data2和第三数据data3相对应的物理块地址和逻辑块地址之间的映射关系失效,并且可使第四区域region4中存储的该第二数据data2和该第三数据data3失效。

根据实施例,因为对第四数据data4执行了十次垃圾收集gc,所以第四数据data4的流id可以是8,并且第四数据data4可根据第四数据data4的流id而存储在第八区域region8中。因此,图6的存储器控制器200可使对应于第四数据data4的物理块地址和逻辑块地址之间的现有映射关系失效,并且使第七区域region7中存储的第四数据data4失效。

根据实施例,虽然对第五数据data5执行了五次垃圾收集,但是该第五数据data5的流id可不改变。因此,因为第五数据data5存储在第四区域region4的另一存储块中,所以存储器控制器200既不会使对应于第五数据data5的物理块地址和逻辑块地址之间的映射关系失效,也不会使第五数据data5失效。

根据实施例,第六数据data6可能被更新十次并且变成经更新的第六数据data6_u10,并且该经更新的第六数据data6_u10可根据该经更新的第六数据data6_u10的流id而存储在第六区域region6中。因此,存储器控制器200可使对应于第六数据data6的物理块地址和逻辑块地址之间的映射关系失效,并且使第七区域region7中存储的第六数据data6失效。

图11是示出当流id为1或10时被改变的流id的示图。

参照图10和图11,图11示出在图10的数据之中,经更新的第三数据data3_u10被额外更新30次,并且对第四数据data4额外执行30次垃圾收集gc。

在图11中,可假设除了经更新的第三数据data3_u10和第四数据data4之外的剩余数据与图10的相同。

根据实施例,第三区域region3中存储的经更新的第三数据data3_u10可能被更新。当第三区域region3中存储的经更新的第三数据data3_u10被再次更新十次时,包括该经更新的第三数据data3_u20和经改变的流id“2”的新编程数据可存储在第二区域region2中。可使第三区域region3中存储的经更新的第三数据data3_u10失效。

随后,第二区域region2中存储的经更新的第三数据data3_u20可能被更新十次。当经更新的第三数据data3_u20被再次更新十次时,包括该经更新的第三数据data3_u30和经改变的流id1的新编程数据可存储在第一区域region1中。可使第二区域region2中存储的经更新的第三数据data3_u20失效。

随后,第一区域region1中存储的经更新的第三数据data3_u30可能被再次更新十次。然而,因为经更新的第三数据data3_u30的流id是1,并且没有流id要被改变,所以虽然经更新的第三数据data3_u30被更新,但是可向其分配与之前相同的流id1。换言之,当经更新的第三数据data3_u30被更新十次时,包括经更新的第三数据data3_u40和现有流id1的新编程数据可存储在第一区域region1中。可使第一区域region1中存储的经更新的第三数据data3_u30失效。

根据实施例,可对第八区域region8中存储的第四数据data4执行垃圾收集。当在第四数据data4存储在第八区域region8中之后再次对该第四数据data4执行十次垃圾收集时,包括该第四数据data4和经改变的流id9的新编程数据可存储在第九区域region9中。可使第八区域region8中存储的第四数据data4失效。

随后,可对第九区域region9中存储的第四数据data4再次执行十次垃圾收集。当对第四数据data4再次执行十次垃圾收集时,包括该第四数据data4和经改变的流id10的新编程数据可存储在第十区域region10中。可使第九区域region9中存储的第四数据data4失效。

随后,可对第十区域region10中存储的第四数据data4再次执行十次垃圾收集。然而,因为第四数据data4的流id是10,并且没有流id将改变,所以虽然对第四数据data4执行了垃圾收集,但是可向其分配与之前相同的流id10。换言之,当对第十区域region10中的第四数据data4执行十次垃圾收集时,可不对数据和流id进行改变,可保持第十区域region10中存储的现有数据。

图12是示出图1所示的存储器装置100的结构的示图。

参照图12,存储器装置100可包括存储器单元阵列110、外围电路120和控制逻辑130。

存储器单元阵列110可包括可通过行线rl联接到行解码器121的多个存储块blk1至blkz。存储块blk1至blkz可通过位线bl1至bln联接到页面缓冲器组123。多个存储块blk1至blkz中的每一个可包括多个存储器单元。在实施例中,多个存储器单元可以是非易失性存储器单元。联接到相同字线的存储器单元可被定义为一个页面。因此,每个存储块可包括多个页面。

行线rl可包括至少一个源极选择线、多个字线和至少一个漏极选择线。

存储器单元中的每一个可以是存储一个数据位的单层单元(slc)、存储两个数据位的多层单元(mlc)、存储三个数据位的三层单元(tlc)或存储四个数据位的四层单元(qlc)。

外围电路120可被配置成响应于控制逻辑130的控制,对存储器单元阵列110的所选择的区域执行编程操作、读取操作和擦除操作。外围电路120可驱动存储器单元阵列110。例如,外围电路120可响应于控制逻辑130的控制而将各种操作电压施加到行线rl和位线bl1至bln或者对所施加的电压放电。

外围电路120可包括行解码器121、电压生成器122、页面缓冲器组123、列解码器124、输入/输出电路125和感测电路126。

行解码器121可通过行线rl联接到存储器单元阵列110。行线rl可包括至少一个源极选择线、多个字线和至少一个漏极选择线。根据实施例,字线可包括正常字线和虚设字线。根据实施例,行线rl可进一步包括管道选择线。

行解码器121可被配置成对从控制逻辑130接收的行地址radd进行解码。行解码器121可根据经解码的块地址来在存储块blk1至blkz之中选择至少一个存储块。行解码器121可根据经解码的地址,选择所选择的存储块的至少一个字线,以便将由电压生成器122生成的电压施加到至少一个字线。

例如,在编程操作期间,行解码器121可将编程电压施加到所选择的字线并将小于编程电压的编程通过电压施加到未选择的字线。在编程验证操作期间,行解码器121可将验证电压施加到所选择的字线并将大于验证电压的验证通过电压施加到未选择的字线。在读取操作期间,行解码器121可将读取电压施加到所选择的字线并将大于读取电压的读取通过电压施加到未选择的字线。

根据实施例,可以存储块为单位对存储器装置100执行擦除操作。在擦除操作期间,行解码器121可根据经解码的地址来选择存储块中的一个。在擦除操作期间,行解码器121可将接地电压施加到与所选择的存储块联接的字线。

电压生成器122可由控制逻辑130控制。电压生成器122可被配置成通过使用供应到存储器装置100的外部电源电压来生成多个电压。更具体地,电压生成器122可响应于操作信号opsig而生成用于编程操作、读取操作和擦除操作的各种操作电压vop。例如,响应于控制逻辑130的控制,电压生成器122可生成编程电压、验证电压、通过电压、读取电压和擦除电压。

根据实施例,电压生成器122可通过调节外部电源电压来生成内部电源电压。通过电压生成器122生成的内部电源电压可用作存储器装置100的操作电压。

根据实施例,电压生成器122可通过使用外部电源电压或内部电源电压来生成多个电压。

例如,电压生成器122可包括接收内部电源电压的多个泵浦(pumping)电容器,并且响应于控制逻辑130的控制而通过选择性地启用多个泵浦电容器来生成多个电压。

多个所生成的电压可通过行解码器121供应到存储器单元阵列110。

页面缓冲器组123可包括可分别通过第一至第n位线bl1至bln联接到存储器单元阵列110的第一至第n页面缓冲器pb1至pbn。第一至第n页面缓冲器pb1至pbn可响应于控制逻辑130的控制而操作。更具体地,第一至第n页面缓冲器pb1至pbn可响应于页面缓冲器控制信号pbsignals而操作。例如,在读取操作或验证操作期间,第一至第n页面缓冲器pb1至pbn可临时存储通过位线bl1至bln接收到的数据,或者可感测位线bl1至bln中的电压或电流。

更具体地,在编程操作期间,当编程电压在编程操作期间被施加到所选择的字线时,第一至第n页面缓冲器pb1至pbn可通过第一至第n位线bl1至bln将通过输入/输出电路125所接收的数据data传送到所选择的存储器单元。根据所传送的数据data可对所选择页面的存储器单元进行编程。在编程验证操作期间,第一至第n页面缓冲器pb1至pbn可分别通过感测通过第一至第n位线bl1至bln从所选择的存储器单元接收的电压或电流来读取页面数据。

在读取操作期间,第一至第n页面缓冲器pb1至pbn可通过第一至第n位线bl1至bln从所选择的页面的存储器单元读取数据data,并且响应于列解码器124的控制而将所读取的数据data输出到数据输入/输出电路125。

在擦除操作期间,第一至第n页面缓冲器pb1至pbn可使第一至第n位线bl1至bln浮置(float)或向第一至第n位线bl1至bln施加擦除电压。

列解码器124可响应于列地址cadd而在输入/输出电路125和页面缓冲器组123之间传送数据。例如,列解码器124可通过数据线dl与第一至第n页面缓冲器pb1至pbn交换数据,或者可通过列线cl与输入/输出电路125交换数据。

输入/输出电路125可将来自图1的存储器控制器200的命令cmd和地址addr传送到控制逻辑130,或者可与列解码器124交换数据data。

在读取操作或验证操作期间,感测电路126可响应于允许位信号vrybit来生成参考电流,并且将从页面缓冲器组123接收到的感测电压vpb与由参考电流产生的参考电压进行比较,以输出通过信号pass或失败信号fail。

控制逻辑130可通过响应于命令cmd和地址addr输出操作信号opsig、行地址radd、页面缓冲器控制信号pbsignals和允许位信号vrybit来控制外围电路120。例如,控制逻辑130可响应于子块读取命令和地址来控制对所选择的存储块的读取操作。另外,控制逻辑130可响应于子块擦除命令和地址来控制对所选择的存储块中包括的所选择的子块的擦除操作。另外,控制逻辑130可响应于通过信号pass或失败信号fail来确定验证操作是通过还是失败。

存储器单元阵列110中包括的存储器单元可根据每个存储器单元中存储的数据而被编程为多个编程状态中的一个。根据存储器单元中存储的数据,可将存储器单元的目标编程状态确定为多个编程状态中的一个。

图13是示出存储块的示图。

参照图12和图13,图13是示出图12的存储器单元阵列110中包括的多个存储块blk1至blkz之中的一个存储块blka的电路图。

彼此平行布置的第一选择线、字线和第二选择线可联接到存储块blka。例如,字线可平行布置在第一和第二选择线之间。第一选择线可以是源极选择线ssl,并且第二选择线可以是漏极选择线dsl。

具体地,存储块blka可包括联接在位线bl1至bln与源极线sl之间的多个串。位线bl1至bln可分别联接到串,并且源极线sl可共同联接到串。因为串中的每一个可具有相同的配置,所以下面作为示例更详细地描述联接到第一位线bl1的串st。

串st可包括串联联接在源极线sl和第一位线bl1之间的源极选择晶体管sst、多个存储器单元f1至f16以及漏极选择晶体管dst。每个串st可包括至少一个源极选择晶体管sst和至少一个漏极选择晶体管dst,并且每个串可包括比图13所示的16个存储器单元f1至f16更多的存储器单元。

源极选择晶体管sst的源极可联接到源极线sl,并且漏极选择晶体管dst的漏极可联接到第一位线bl1。存储器单元f1至f16可串联联接在源极选择晶体管sst和漏极选择晶体管dst之间。不同串st中包括的源极选择晶体管sst的栅极可联接到源极选择线ssl,漏极选择晶体管dst的栅极可联接到漏极选择线dsl,并且存储器单元f1至f16的栅极可联接到多个字线wl1至wl16。不同串st中包括的存储器单元之中的、联接到相同字线的一组存储器单元可被称为物理页面ppg。因此,存储块blka可包括与字线wl1至wl16的数量同样多的物理页面ppg。

一个存储器单元可存储一位数据。这种存储器单元通常被称为单层单元(slc)。一个物理页面ppg可存储一个逻辑页面(lpg)数据。一个lpg数据可包括与一个物理页面ppg中包括的单元数量一样多的数据位。然而,单个存储器单元可存储两位或更多位数据。这种存储器单元通常被称为多层单元(mlc)。包括mlc的一个物理页面ppg可存储对应于两个或更多个逻辑页面lpg的数据。

随着可在一个存储器单元中存储的数据位的数量增加,术语“多层单元(mlc)”在更具体的意义上用来指代存储两位数据的存储器单元。存储三位或更多位数据的存储器单元被称为三层单元(tlc)。存储四位或更多位数据的存储器单元被称为四层单元(qlc)。一般而言,本发明适用于具有存储两位或更多位数据的存储器单元的存储器装置。

在另一实施例中,存储块可具有三维结构。每个存储块可包括堆叠在衬底上的多个存储器单元。多个存储器单元可布置在+x方向、+y方向和+z方向上。

图14是示出根据本公开的实施例的存储器控制器的操作的示图。

参照图14,在步骤s1401,存储器控制器可从主机接收更新数据和逻辑块地址。待被编程到存储器装置中的更新数据可以是用以改变或替换先前存储的数据的新数据。逻辑块地址可指示存储先前数据的位置。

在步骤s1403,存储器控制器可确定更新数据的流id。更具体地,每当存储器控制器接收更新数据时,该存储器控制器可对连同更新数据一起接收的逻辑块地址进行累积和计数。进一步地,存储器控制器可累积和计数对与所接收的逻辑块地址相对应的数据执行垃圾收集的次数。

随后,当接收到更新数据时,还接收到通过对连同更新数据一起接收的逻辑块地址进行计数而获得的更新计数,以及通过对数据被移动到另一存储块的次数进行计数而获得的垃圾收集计数。

例如,当更新计数是第一参考值或更大时,存储器控制器可将流id减小1。当垃圾收集计数是第二参考值或更大时,存储器控制器可将流id增加1。

在步骤s1405,存储器控制器可确定流id是否已经改变。换言之,存储器控制器可确定流id已经从现有流id增加还是减小。作为确定的结果,当流id已经改变(是)时,处理流程可进行到步骤s1407。另外,当流id未改变(否)时,即,当保持现有流id时,处理流程可进行到步骤s1409。

当流id改变时,即,当流id已经从现有的流id增加或减小时,存储器控制器可生成包括经改变的流id的新编程数据(s1407)。

然而,当流id未改变时,存储器控制器可生成包括现有的流id的新编程数据(s1409)。

根据实施例,当在步骤s1407或s1409生成新编程数据时,存储器控制器可向存储器装置输出新编程数据和用于对新编程数据进行编程的编程命令(s1411)。存储器装置可响应于编程命令而对新编程数据进行编程。

在步骤s1413,存储器控制器可输出失效命令。失效命令可用于使在更新之前存储在存储器装置中的数据失效。换言之,当更新存储器装置中存储的现有数据时,可通过使指示现有数据的位置的映射关系失效来使现有数据失效。

图15是示出根据本公开的实施例的存储器控制器的操作的示图。

参照图14和图15,将步骤s1403细分为步骤s1501至s1511。换言之,图15示出用于确定更新数据的流id的进程。

当存储器控制器从主机接收更新数据和逻辑块地址时,在步骤s1501,存储器控制器可向存储器装置输出用于获取与所接收的逻辑块地址具有映射关系的物理块地址中存储的数据的流id的流id请求,并且可从存储器装置中接收该流id。

随后,在步骤s1503,存储器控制器可确定接收到该逻辑块地址的次数是否是第一参考值或更多。换言之,存储器控制器可确定通过对与更新数据一起接收的逻辑块地址进行计数而获得的更新计数是否是第一参考值或更大。该更新计数可指示对应于所接收的逻辑块地址的数据被更新的次数。

当接收到该逻辑块地址的次数是第一参考值或更多(是)时,存储器控制器可减小流id(s1505)。然而,当接收到该逻辑块地址的次数不是第一参考值或更多(否)时,处理流程可进行到步骤s1507。

在步骤s1507,存储器控制器可确定对应于该逻辑块地址的数据被移动到另一存储块的次数是否是第二参考值或更多。换言之,存储器控制器可确定通过垃圾收集gc将对应于该逻辑块地址的数据移动到另一存储块的次数。

当对应于该逻辑块地址的数据被移动到另一存储块的次数是第二参考值或更多(是)时,存储器控制器可增加流id(s1511)。然而,当对应于该逻辑块地址的数据被移动到另一存储块的次数不是第二参考值或更多(否)时,存储器控制器可保持流id(s1509)。换言之,可保持现有的流id。

图16是示出根据实施例的存储器控制器的操作的示图。

参照图16,在步骤s1601,存储器控制器可确定待改变的流id是否超过预定范围。

更具体地,假设可能的流id的范围处于1到10之间。然后,可能存在以下情况:接收到与具有流id1的数据相对应的逻辑块地址的次数可能是第一参考值或更多。然而,因为不存在小于1的流id,所以减小流id将超过预定范围。

在范围的另一端也是如此。也就是说,具有流id10的数据被移动到另一存储块的次数可能是第二参考值或更多。然而,因为不存在大于10的流id,所以增加流id将超过预定范围。

因此,当改变流id将超过预定范围(是)时,存储器控制器可保持现有的流id(s1603)。换言之,在这种情况下,流id可能不会改变。

图17是示出图1的存储器控制器200的另一实施例的示图。

图17的存储器控制器1000可联接到主机和存储器装置。响应于来自主机的请求,存储器控制器1000可访问存储器装置。例如,存储器控制器1000可控制存储器装置的写入操作、读取操作、擦除操作和后台操作。存储器控制器1000可提供存储器装置与主机之间的接口。存储器控制器1000可驱动固件以控制存储器装置。

参照图17,存储器控制器1000可包括处理器1010、存储器缓冲器1020、错误校正码(ecc)块1030、主机接口1040、缓冲器控制电路1050、存储器接口1060和总线1070。

总线1070可提供存储器控制器1000的组件之间的通道。

处理器1010可控制存储器控制器1000的全部操作,并且可执行逻辑运算。处理器1010可通过主机接口1040与外部主机通信,并且通过存储器接口1060与存储器装置通信。进一步地,处理器1010可通过缓冲器控制电路1050与存储器缓冲器1020通信。处理器1010可通过使用存储器缓冲器1020作为工作存储器、高速缓冲存储器或缓冲存储器来控制存储装置的操作。

处理器1010可执行闪存转换层(ftl)的功能。处理器1010可通过闪存转换层ftl将由主机提供的逻辑块地址lba转换成物理块地址pba。闪存转换层ftl可接收逻辑块地址lba,并且通过使用映射表将该逻辑块地址lba转换成物理块地址pba。根据映射单位,存在用于闪存转换层ftl的各种地址映射方法。典型的地址映射方法包括页面映射方法、块映射方法和混合映射方法。

根据实施例,处理器1010可从图1的主机300接收主机数据。该主机数据可包括初始流id。基于数据扩展名或数据的文件格式,可将初始流id给定为4(hot)或7(cold)。

在将主机数据编程到图1的存储器装置100中之后,处理器1010可从图1的主机300接收更新数据。该更新数据可以是用于改变被编程到图1的存储器装置100中的数据的新数据。

处理器1010可基于更新计数和垃圾收集计数来确定更新数据的流id。更新计数可通过对连同更新数据一起接收到逻辑块地址的次数进行计数而具有值。垃圾收集计数可通过对通过垃圾收集在不改变数据的情况下将该数据移动到另一存储块的次数进行计数而具有值。

根据实施例,处理器1010可从图1的存储器装置100接收现有的流id,并且可保持或改变现有的流id。例如,当更新计数是第一参考值或更大,或者垃圾收集计数是第二参考值或更大时,处理器1010可增加或减小现有的流id。

处理器1010可将从主机接收的数据随机化。例如,处理器1010可使用随机化种子来将从主机接收的数据随机化。可将经随机化的数据作为待存储的数据提供到存储器装置,并且可将经随机化的数据编程在存储器单元阵列中。

处理器1010可运行软件或固件以执行随机化和去随机化操作。

存储器缓冲器1020可用作处理器1010的操作存储器、高速缓冲存储器或缓冲存储器。存储器缓冲器1020可存储由处理器1010运行的代码和命令。存储器缓冲器1020可存储由处理器1010处理的数据。存储器缓冲器1020可包括静态ram(sram)或动态ram(dram)。

ecc块1030可执行错误校正。ecc块1030可基于待通过存储器接口1060写入存储器装置的数据来执行ecc编码。经ecc编码的数据可通过存储器接口1060被传送到存储器装置。ecc块1030可基于通过存储器接口1060从存储器装置接收的数据来执行ecc解码。例如,ecc块1030可作为存储器接口1060的组件而包括在存储器接口1060中。

主机接口1040可在处理器1010的控制下与外部主机通信。主机接口1040可使用诸如以下的各种通信方法中的至少一种来与外部主机通信:通用串行总线(usb)、串行at附件(sata)、串列scsi(sas)、高速芯片间(hsic)、小型计算机系统接口(scsi)、外围组件互连(pci)、高速pci(pcie)、高速非易失性存储器(nvme)、通用闪存(ufs)、安全数字(sd)、多媒体卡(mmc)、嵌入式mmc(emmc)、双列直插式存储器模块(dimm)、寄存式dimm(rdimm)和/或降低负载的dimm(lrdimm)通信方法。

缓冲器控制电路1050可在处理器1010的控制下控制存储器缓冲器1020。

存储器接口1060可在处理器1010的控制下与存储器装置通信。存储器接口1060可通过通道向存储器装置传输命令、地址和数据/从存储器装置接收命令、地址和数据。

例如,存储器控制器1000可不包括存储器缓冲器1020和缓冲器控制电路1050。可单独提供这些组件中的一个或两者。

例如,处理器1010可使用代码来控制存储器控制器1000的操作。处理器1010可从存储器控制器1000中设置的非易失性存储器装置(例如,rom)加载代码。在另一示例中,处理器1010可通过存储器接口1060从存储器装置加载代码。

例如,存储器控制器1000的总线1070可被划分成控制总线和数据总线。数据总线可被配置成在存储器控制器1000中传输数据,并且控制总线可被配置成在存储器控制器1000中传输诸如命令或地址的控制信息。数据总线和控制总线可彼此隔离以便既不互相干扰也不互相影响。数据总线可联接到主机接口1040、缓冲器控制电路1050、ecc块1030和存储器接口1060。控制总线可联接到主机接口1040、处理器1010、缓冲器控制电路1050、存储器缓冲器1020和存储器接口1060。

图18是示出根据实施例的应用了存储装置的存储卡系统2000的框图。

参照图18,存储卡系统2000可包括存储器控制器2100、存储器装置2200和连接器2300。

存储器控制器2100可联接到存储器装置2200。存储器控制器2100可访问存储器装置2200。例如,存储器控制器2100可控制存储器装置2200的读取操作、写入操作、擦除操作和后台操作。存储器控制器2100可被配置成提供存储器装置2200与主机之间的接口连接。存储器控制器2100可被配置成驱动用于控制存储器装置2200的固件。存储器装置2200可以与上面参照图1描述的存储器装置100相同地配置。

在实施例中,存储器控制器2100可包括诸如随机存取存储器(ram)、处理器、主机接口、存储器接口和ecc块的组件。

存储器控制器2100可通过连接器2300与外部装置通信。存储器控制器2100可基于具体通信协议与外部装置(例如,主机)通信。例如,存储器控制器2100可通过诸如以下的各种通信协议中的至少一种与外部装置通信:通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(emmc)、外围组件互连(pci)、高速pci(pci-e)、高级技术附件(ata)、串行ata(sata)、并行ata(pata)、小型计算机系统接口(scsi)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)、火线、通用闪存(ufs)、wifi、蓝牙和/或高速非易失性存储器(nvme)协议。例如,连接器2300可由上述各种通信协议中的至少一种来定义。

在实施例中,存储器装置2200可被实现为诸如以下的各种非易失性存储器装置中的任意一种:电可擦除可编程rom(eeprom)、nand闪速存储器、nor闪速存储器、相变ram(pram)、电阻式ram(reram)、铁电ram(fram)和/或自旋力矩磁性ram(stt-mram)。

根据实施例,存储器控制器2100可从图1的主机300接收主机数据。该主机数据可包括初始流id。基于数据扩展名或数据的文件格式,可将初始流id给定为4(hot)或7(cold)。

在将主机数据编程到存储器装置2200中之后,存储器控制器2100可从图1的主机300接收更新数据。该更新数据可以是用于改变被编程到存储器装置2200中的数据的新数据。

存储器控制器2100可基于更新计数和垃圾收集计数来确定更新数据的流id。更新计数可通过对连同更新数据一起接收到逻辑块地址的次数进行计数而具有值。垃圾收集计数可通过对通过垃圾收集在不改变数据的情况下将该数据移动到另一存储块的次数进行计数而具有值。

根据实施例,存储器控制器2100可从图1的存储器装置100接收现有的流id,并且可保持或改变现有的流id。例如,当更新计数是第一参考值或更大,或者垃圾收集计数是第二参考值或更大时,存储器控制器2100可增加或减小现有的流id。

存储器控制器2100和存储器装置2200可被集成到单个半导体装置中以形成诸如以下的存储卡:个人计算机存储卡国际协会(pcmcia)、紧凑型闪存卡(cf)、智能媒体卡(sm或smc)、记忆棒、多媒体卡(mmc、rs-mmc或微型mmc)、sd卡(sd、迷你sd、微型sd或sdhc)和/或通用闪存(ufs)。

图19是示出根据本公开的实施例的应用了存储装置的固态驱动器(ssd)系统的示例的框图。

参照图19,ssd系统3000可包括主机3100和ssd3200。ssd3200可通过信号连接器3001与主机3100交换信号sig,并且可通过电源连接器3002接收电力pwr。ssd3200可包括ssd控制器3210、多个闪速存储器3221至322n、辅助电源3230和缓冲存储器3240。

在实施例中,ssd控制器3210可执行以上参照图1描述的存储器控制器200的功能。

ssd控制器3210可响应于从主机3100接收的信号sig来控制多个闪速存储器3221至322n。根据实施例,信号sig可基于主机3100和ssd3200的接口来定义。根据实施例,信号sig可基于主机3100和ssd3200的接口。例如,信号sig可以由诸如以下的各种接口中的至少一种来定义:通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(emmc)、外围组件互连(pci)、高速pci(pci-e)、高级技术附件(ata)、串行ata(sata)、并行ata(pata)、小型计算机系统接口(scsi)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)、火线、通用闪存(ufs)、wifi、蓝牙和/或高速非易失性存储器(nvme)接口。

根据实施例,ssd控制器3210可从图1的主机300接收主机数据。该主机数据可包括初始流id。基于数据扩展名或数据的文件格式,可将初始流id给定为4(hot)或7(cold)。

在将主机数据编程到存储器装置3221中之后,ssd控制器3210可从图1的主机300接收更新数据。该更新数据可以是用于改变被编程到存储器装置3221中的数据的新数据。

ssd控制器3210可基于更新计数和垃圾收集计数来确定更新数据的流id。可通过对连同更新数据一起接收到逻辑块地址的次数进行计数来获得更新计数。可通过对通过垃圾收集在不改变数据的情况下将该数据移动到另一存储块的次数进行计数来获得垃圾收集计数。

根据实施例,ssd控制器3210可从多个闪速存储器3221至322n接收现有的流id,并且可保持或改变现有的流id。例如,当更新计数是第一参考值或更大,或者垃圾收集计数是第二参考值或更大时,ssd控制器3210可增加或减小现有的流id。

辅助电源3230可通过电源连接器3002联接到主机3100。辅助电源3230可被供应有来自主机3100的电力pwr并利用该电力pwr充电。当未能从主机3100平稳地供电时,辅助电源3230可供应ssd3200的电力。例如,辅助电源3230可处于ssd3200的内部或外部。例如,辅助电源3230可被设置在主板中并且可向ssd3200供应辅助电力。

缓冲存储器3240可用作ssd3200的缓冲存储器。例如,缓冲存储器3240可临时存储从主机3100接收的数据或从多个闪速存储器3221至322n接收的数据,或者可临时存储闪速存储器3221至322n的元数据(例如,映射表)。缓冲存储器3240可包括诸如dram、sdram、ddrsdram、lpddrsdram和gram的各种易失性存储器或者诸如fram、reram、stt-mram和pram的非易失性存储器中的任意一种。

图20是示出根据实施例的应用了存储装置50的用户系统4000的框图。

参照图20,用户系统4000可包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。

应用处理器4100可运行包括在用户系统4000中的组件、操作系统(os)或用户程序。例如,应用处理器4100可包括用于控制包括在用户系统4000中的组件的控制器、接口、图形引擎等。应用处理器4100可被设置为片上系统(soc)。

根据实施例,应用处理器4100可从图1的主机300接收主机数据。该主机数据可包括初始流id。基于数据扩展名或数据的文件格式,可将初始流id给定为4(hot)或7(cold)。

在将主机数据编程到存储模块4400中之后,应用处理器4100可从图1的主机300接收更新数据。更新数据可以是用于改变被编程到存储模块4400中的数据的新数据。

应用处理器4100可基于更新计数和垃圾收集计数来确定更新数据的流id。更新计数可通过对连同更新数据一起接收到逻辑块地址的次数进行计数而具有值。垃圾收集计数可通过对通过垃圾收集在不改变数据的情况下将该数据移动到另一存储块的次数进行计数而具有值。

根据实施例,应用处理器4100可从存储模块4400接收现有的流id,并且可保持或改变现有的流id。例如,当更新计数是第一参考值或更大,或者垃圾收集计数是第二参考值或更大时,应用处理器4100可增加或减小现有的流id。

存储器模块4200可用作用户系统4000的主存储器、工作存储器、缓冲存储器或高速缓冲存储器。存储器模块4200可包括诸如dram、sdram、ddrsdram、ddr2sdram、ddr3sdram、lpddrsdram、lpddr2sdram和lpddr3sdram的易失性ram,或者诸如pram、reram、mram和fram的非易失性ram。例如,应用处理器4100和存储器模块4200可基于堆叠封装(pop)来封装,然后可被设置为单个半导体封装。

网络模块4300可与外部装置通信。例如,网络模块4300可支持诸如码分多址(cdma)、全球移动通信系统(gsm)、宽带cdma(wcdma)、cdma-2000、时分多址(tdma)、长期演进(lte)、wimax、wlan、uwb、蓝牙或wifi通信的无线通信。例如,网络模块4300可包括在应用处理器4100中。

存储模块4400可存储数据。例如,存储模块4400可存储从应用处理器4100接收的数据。可选地,存储模块4400可将存储在存储模块4400中的数据传输到应用处理器4100。例如,存储模块4400可被实现为诸如以下的非易失性半导体存储器装置:相变ram(pram)、磁性ram(mram)、电阻式ram(rram)、nand闪速存储器、nor闪速存储器或具有三维(3d)结构的nand闪速存储器。例如,存储模块4400可被设置为可移动存储介质(即,可移动驱动器),诸如用户系统4000的存储卡或外部驱动器。

例如,存储模块4400可包括多个非易失性存储器装置,该非易失性存储器装置可以与上面参照图11和图12描述的存储器装置相同的方式操作。存储模块4400可以与上面参照图1描述的存储装置50相同的方式操作。

用户接口4500可包括将数据或指令输入到应用处理器4100或将数据输出到外部装置的接口。根据实施例,用户接口4500可包括诸如以下的用户输入接口:键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和/或压电装置。用户接口4500可进一步包括诸如以下的用户输出接口:液晶显示器(lcd)、有机发光二极管(oled)显示装置、有源矩阵oled(amoled)显示装置、led、扬声器和监视器。

根据本公开的实施例,可根据数据更新的次数和执行垃圾收集的次数来使用数据的可变的流id,而非固定的流id,从而可增加数据的流id的可靠性。

在上述实施例中,可选择性地执行或跳过一个或多个步骤。在一些情况下,不需要以所阐述的顺序来执行这些步骤。此外,所公开的实施例旨在帮助本领域的普通技术人员更清楚地理解本发明,而不是旨在限制本发明的界限。换言之,本公开所属领域的普通技术人员将能够容易地理解,基于本公开的技术范围,可以进行各种修改。对于本领域技术人员显而易见的是,在不脱离本发明的精神或范围的情况下,可对所公开的实施例进行各种修改。因此,只要修改落入所附权利要求及其等同方案的范围内,本发明旨在覆盖所有这些修改。

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