存储器控制器及其操作方法
[0001]
相关申请的交叉引用
[0002]
本专利申请要求于2019年7月30日向韩国知识产权局提交的申请号为10-2019-0092465的韩国专利申请的优先权,其全部公开内容通过引用并入本文。
技术领域
[0003]
本公开涉及一种电子装置,并且更特别地,涉及一种存储器控制器及其操作方法。
背景技术:[0004]
存储装置是一种在诸如计算机或智能电话的主机装置的控制下存储数据的装置。存储装置可包括存储数据的存储器装置和控制存储器装置的存储器控制器。存储器装置可以是易失性存储器装置或非易失性存储器装置。
[0005]
易失性存储器装置是一种仅当供电时存储数据,并且当供电被切断或中断时无法进行检索数据的装置。易失性存储器装置的非限制性示例包括静态随机存取存储器(sram)、动态随机存取存储器(dram)等。
[0006]
非易失性存储器装置是在供电被切断或中断后也可进行检索数据的装置。非易失性存储器装置的非限制性示例包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪速存储器等。
技术实现要素:[0007]
本公开的实施例提供了一种具有提高的写入资源管理性能的存储器控制器及其操作方法。
[0008]
根据本公开的实施例,一种存储器控制器,控制包括多个流存储区域的至少一个存储器装置。该存储器控制器包括缓冲器、写入历史管理器、写入控制器和垃圾收集控制器。该缓冲器存储写入数据。该写入历史管理器存储多个流存储区域中的每个流存储区域的写入计数值,并且基于该写入计数值来生成指示多个流存储区域中的每个流存储区域的写入操作频率的写入历史信息。该写入控制器控制至少一个存储器装置以存储从缓冲器提供的写入数据。该垃圾收集控制器控制至少一个存储器装置以对基于写入历史信息而从多个流存储区域中选择的目标流存储区域执行垃圾收集操作。
[0009]
根据本公开的实施例,一种操作存储器控制器的方法,该存储器控制器控制包括多个流存储区域的至少一个存储器装置,该方法包括:存储设定时段中的多个流存储区域中的每个流存储区域的多个写入计数值;基于多个写入计数值,生成指示多个流存储区域中的每个流存储区域的写入操作频率的写入历史信息;以及控制至少一个存储器装置以对基于写入历史信息而从多个流存储区域中选择的目标流存储区域执行垃圾收集操作。
[0010]
根据本技术,提供了一种具有提高的写入资源管理性能的存储器控制器及其操作方法。
附图说明
[0011]
图1是示出根据本公开的实施例的存储装置的示图。
[0012]
图2是示出图1的存储器装置的结构的示图。
[0013]
图3是示出图2的存储器单元阵列的示图。
[0014]
图4是示出根据本公开的实施例的存储器控制器控制多个存储器装置的方法的示图。
[0015]
图5是示出根据本公开的实施例的超级块的示图。
[0016]
图6是示出根据本公开的实施例的存储器控制器的配置和操作的示图。
[0017]
图7是示出根据本公开的实施例的存储器装置的流存储区域的示图。
[0018]
图8是示出根据本公开的实施例的图6的写入控制器和写入历史管理器的配置和操作的示图。
[0019]
图9是示出根据本公开的实施例的图8的写入计数信息存储装置的示图。
[0020]
图10是示出根据本公开的实施例的流缓冲区域的大小控制的示图。
[0021]
图11是示出根据图10的实施例的控制存储器控制器的流缓冲区域的大小的操作的流程图。
[0022]
图12是示出根据本公开的实施例的垃圾收集操作的示图。
[0023]
图13是示出根据本公开的实施例的选择待执行垃圾收集操作的流存储区域的操作的示图。
[0024]
图14是示出根据本公开的实施例的校正无效页面计数值的示图。
[0025]
图15是示出图14的校正无效页面计数值的示图。
[0026]
图16是示出根据图14的实施例的存储器控制器的操作的流程图。
[0027]
图17是示出图1的存储器控制器的另一实施例的示图。
[0028]
图18是示出根据本公开的实施例的使用存储装置的存储卡系统的框图。
[0029]
图19是示出根据本公开的实施例的使用存储装置的固态驱动器(ssd)系统的框图。
[0030]
图20是示出根据本公开的实施例的使用存储装置的用户系统的框图。
具体实施方式
[0031]
在下文中,将参照附图详细描述本公开的实施例。
[0032]
图1是示出根据本公开的实施例的存储装置的示图。
[0033]
参照图1,存储装置50可包括存储器装置100和控制存储器装置100的操作的存储器控制器200。存储装置50可以是在诸如以下的主机300的控制下存储数据的装置:例如移动电话、智能电话、mp3播放器、膝上型计算机、台式计算机、游戏机、电视(tv)、平板pc或车载信息娱乐系统。
[0034]
根据作为与主机300的通信方法和方案的主机接口,存储装置50可被制造成各种类型的存储装置中的一种。例如,存储装置50可被配置成或被实施为诸如以下的各种类型的存储装置中的任意一种:例如固态驱动器(ssd)、多媒体卡(mmc)、嵌入式mmc(emmc)、缩小尺寸的mmc(rs-mmc)、微型mmc、安全数字(sd)卡、迷你-sd卡、微型-sd卡、通用串行总线(usb)存储装置、通用闪存(ufs)装置、个人计算机存储卡国际协会(pcmcia)卡型存储装置、
外围组件互连(pci)卡型存储装置、高速pci(pci-e)卡型存储装置、紧凑式闪存(cf)卡、智能媒体卡(smc)和记忆棒。
[0035]
存储装置50可被制造成诸如以下的各种类型的封装中的任意一种:堆叠封装(pop)、系统级封装(sip)、片上系统(soc)、多芯片封装(mcp)、板上芯片(cob)、晶圆级制造封装(wfp)以及晶圆级堆叠封装(wsp)。
[0036]
存储器装置100可存储数据。存储器装置100响应于存储器控制器200的控制或在存储器控制器200的控制下进行操作。在示例中,存储器装置100可包括存储器单元阵列,该存储器单元阵列包括存储数据的多个存储器单元。
[0037]
多个存储器单元中的每个存储器单元可被配置成存储一个数据位的单层单元(slc)、存储两个数据位的多层单元(mlc)、存储三个数据位的三层单元(tlc)或存储四个数据位的四层单元(qlc)。
[0038]
在另一示例中,存储器单元阵列可包括多个存储块。多个存储块中的每个存储块可包括多个存储器单元。一个存储块可包括多个页面。在实施例中,页面可以是将数据存储在存储器装置100中或读取存储器装置100中存储的数据的单位。
[0039]
存储块可以是擦除数据的单位。在实施例中,存储器装置100可以是:双倍数据速率同步动态随机存取存储器(ddr sdram)、低功率双倍数据速率4(lpddr4)sdram、图形双倍数据速率(gddr)sdram、低功率ddr(lpddr)、rambus动态随机存取存储器(rdram)、nand闪速存储器、垂直nand闪速存储器、nor闪速存储器、电阻式随机存取存储器(rram)、相变随机存取存储器(pram)、磁阻随机存取存储器(mram)、铁电随机存取存储器(fram)、自旋转移力矩随机存取存储器(stt-ram)等。在本说明书中,为便于描述,假设存储器装置100是nand闪速存储器。
[0040]
存储器装置100被配置成从存储器控制器200接收命令和地址,并且访问存储器单元阵列中的由该地址选择的区域。也就是说,存储器装置100可对由该地址选择的区域执行由该命令指示的操作。例如,存储器装置100可执行写入操作(编程操作)、读取操作和擦除操作。在编程操作期间,存储器装置100可将数据编程到由该地址选择的区域。在读取操作期间,存储器装置100可从由该地址选择的区域读取数据。在擦除操作期间,存储器装置100可擦除由该地址选择的区域中存储的数据。
[0041]
在实施例中,在存储器控制器200的控制下,存储器装置100可分配多个流存储区域。每个流存储区域可包括多个存储块。在存储器控制器200的控制下,存储器装置100可将由主机300提供的写入数据与流标识符一起存储在与该流标识符对应的流存储区域中。
[0042]
存储器控制器200控制存储装置50的全部操作。
[0043]
当向存储装置50供应电力时,存储器控制器200可运行固件fw。当存储器装置100为闪速存储器装置时,存储器控制器200可操作诸如闪存转换层(ftl)的固件,以控制主机300和存储器装置100之间的通信。
[0044]
在实施例中,存储器控制器200可从主机300接收数据和逻辑块地址(lba),并且将逻辑块地址(lba)转换或转变为物理块地址(pba),该物理块地址(pba)指示存储器装置100中的、待存储数据的存储器单元的地址。
[0045]
存储器控制器200可响应于来自主机300的请求而控制存储器装置100执行编程操作、读取操作或擦除操作。在编程操作期间,存储器控制器200可向存储器装置100提供编程
命令、物理块地址和数据。在读取操作期间,存储器控制器200可向存储器装置100提供读取命令和物理块地址。在擦除操作期间,存储器控制器200可向存储器装置100提供擦除命令和物理块地址。
[0046]
在实施例中,在缺少来自主机300的请求的情况下,存储器控制器200可生成命令、地址和数据并且将命令、地址和数据发送到存储器装置100。例如,存储器控制器200可向存储器装置100提供命令、地址和数据以执行后台操作,诸如用于损耗均衡的编程操作或用于垃圾收集的编程操作。
[0047]
在实施例中,存储器控制器200可控制至少两个存储器装置100。存储器控制器200可根据交错(interleave)方法或方案来控制存储器装置100,以便提高操作性能。交错方法可以是使至少两个存储器装置100的操作时段重叠或交替的操作方法或方案。
[0048]
在实施例中,存储器控制器200可包括写入控制器210、写入历史管理器220、缓冲器230和垃圾收集控制器240。
[0049]
写入控制器210可控制缓冲器230和存储器装置100以将缓冲器230中存储的写入数据存储在存储器装置100中。
[0050]
当写入控制器210从主机300接收针对流的设置请求时,写入控制器210可控制缓冲器230以分配与被请求的流对应的流缓冲区域。写入控制器210可控制存储器装置100以分配与被请求的流对应的流存储区域。写入控制器210可从主机300接收特定流的流标识符和写入数据。写入控制器210可控制存储器装置100以将该写入数据存储在存储器装置100中的、与特定流对应的流存储区域中。此时,与特定流对应的流缓冲区域可用作将写入数据存储在流存储区域中的写入操作的缓冲存储器。
[0051]
当写入控制器210从主机300接收针对特定流的释放请求时,写入控制器210可控制缓冲器230以释放与该特定流对应的流缓冲区域。
[0052]
写入控制器210可基于从写入历史管理器220提供的写入历史信息来控制缓冲器230所分配的流缓冲区域的大小。
[0053]
具体地,写入控制器210可基于写入历史信息中包括的多个流存储区域中的每个流存储区域的写入操作频率,来计算每个流缓冲区域的写入资源。写入控制器210可根据所计算的写入资源来减小具有较多写入资源的流缓冲区域的大小,并且增加具有较少写入资源的流缓冲区域的大小。
[0054]
写入历史管理器220可基于从主机300提供的流标识符,对存储器装置100的多个流存储区域中的每个流存储区域执行的写入操作的数量进行计数。写入历史管理器220可存储多个流存储区域中的每个流存储区域的写入计数值。写入历史管理器220可基于该写入计数值来生成指示多个流存储区域中的每个流存储区域的写入操作频率的写入历史信息。
[0055]
缓冲器230可存储从主机300提供的写入数据。可将缓冲器230中存储的写入数据存储在存储器装置100中。
[0056]
在写入控制器210的控制下,缓冲器230可分配多个流缓冲区域。流缓冲区域可包括可变区域和固定区域。可初始地将流缓冲区域设置为具有默认大小。流缓冲区域的可变区域的大小可由写入控制器210控制。
[0057]
与特定流对应的流缓冲区域可存储从主机300提供的、与特定流标识符对应的写
入数据。可将流缓冲区域中存储的写入数据存储在存储器装置100中的、与该流缓冲区域对应的流存储区域中。流缓冲区域可用作将写入数据存储在流存储区域中的写入操作的缓冲存储器。
[0058]
垃圾收集控制器240可在存储器装置100中包括的多个流存储区域之中选择目标流存储区域来执行垃圾收集操作。
[0059]
垃圾收集控制器240可计算对应于流存储区域的无效页面计数值。无效页面计数值可以是一个存储块中包括的无效页面的数量。在实施例中,对应于流存储区域的无效页面计数值可以是该流存储区域中包括的多个存储块的无效页面计数的平均值。在另一实施例中,对应于流存储区域的无效页面计数值可以是该流存储区域中包括的多个存储块的无效页面计数中的最高值。
[0060]
垃圾收集控制器240可基于从写入历史管理器220提供的写入历史信息,来计算每个流存储区域的校正无效页面计数值。垃圾收集控制器240可基于多个流存储区域中的每个流存储区域的校正无效页面计数值,来在多个流存储区域之中选择目标流存储区域。
[0061]
垃圾收集控制器240可控制存储器装置100以对目标流存储区域执行垃圾收集操作。垃圾收集控制器240可控制存储器装置100,以将目标流存储区域中包括的至少两个牺牲块中存储的有效数据复制到目标流存储区域中包括的空闲块。
[0062]
主机300可使用诸如以下的各种通信方法或装置中的至少一种来与存储装置50通信:例如通用串行总线(usb)、串行at附件(sata)、串列scsi(sas)、高速芯片间(hsic)、小型计算机系统接口(scsi)、火线、外围组件互连(pci)、高速pci(pcie)、高速非易失性存储器(nvme)、通用闪存(ufs)、安全数字(sd)卡、多媒体卡(mmc)、嵌入式mmc(emmc)、双列直插式存储器模块(dimm)、寄存式dimm(rdimm)以及低负载dimm(lrdimm)。
[0063]
图2是示出图1的存储器装置的结构的示图。
[0064]
参照图2,存储器装置100可包括存储器单元阵列110、外围电路120和控制逻辑130。
[0065]
存储器单元阵列110包括多个存储块blk1至blkz。多个存储块blk1至blkz通过行线rl连接到地址解码器121。多个存储块blk1至blkz通过位线bl1至blm连接到读取和写入电路123。多个存储块blk1至blkz中的每个存储块包括多个存储器单元。在实施例中,多个存储器单元为非易失性存储器单元。多个存储器单元之中的、连接到相同字线的存储器单元被定义为一个物理页面。也就是说,存储器单元阵列110被配置有多个物理页面。根据本公开的实施例,存储器单元阵列110中包括的多个存储块blk1至blkz中的每个存储块可包括多个虚设单元。至少一个虚设单元可串联连接在漏极选择晶体管与存储器单元之间以及在源极选择晶体管与存储器单元之间。
[0066]
存储器装置100的存储器单元中的每个存储器单元可被配置成存储一个数据位的单层单元(slc)、存储两个数据位的多层单元(mlc)、存储三个数据位的三层单元(tlc)或存储四个数据位的四层单元(qlc)。
[0067]
外围电路120可包括地址解码器121、电压生成器122、读取和写入电路123、数据输入/输出电路124以及感测电路125。
[0068]
外围电路120驱动存储器单元阵列110。例如,外围电路120可驱动存储器单元阵列110,以执行编程操作、读取操作和擦除操作。
[0069]
地址解码器121通过行线rl连接到存储器单元阵列110。行线rl可包括漏极选择线、字线、源极选择线和公共源极线。根据本公开的实施例,字线可包括普通字线和虚设字线。根据本公开的进一步实施例,行线rl可进一步包括管道选择线。
[0070]
在实施例中,行线rl可以是局部线组中包括的局部线。局部线组可对应于一个存储块。局部线组可包括漏极选择线、局部字线和源极选择线。
[0071]
地址解码器121被配置成响应于控制逻辑130的控制进行操作。地址解码器121从控制逻辑130接收行地址radd。地址解码器121被配置成对行地址radd进行解码。
[0072]
地址解码器121被配置成对行地址radd中的块地址进行解码。地址解码器121根据所解码的块地址来从存储块blk1至blkz之中选择至少一个存储块。地址解码器121可根据所解码的行地址radd,通过将从电压生成器122供应的电压施加到至少一个字线wl来选择所选择的存储块的至少一个字线。
[0073]
在编程操作期间,地址解码器121可将编程电压施加到所选择的字线并将电平小于编程电压的电平的通过电压施加到未选择的字线。在编程验证操作期间,地址解码器121可将验证电压施加到所选择的字线并将电平大于验证电压的电平的验证通过电压施加到未选择的字线。
[0074]
在读取操作期间,地址解码器121可将读取电压施加到所选择的字线并将电平大于读取电压的电平的读取通过电压施加到未选择的字线。
[0075]
根据本公开的实施例,以存储块为单位来执行对存储器装置100的擦除操作。在擦除操作期间输入到存储器装置100的地址addr包括块地址。地址解码器121可对该块地址进行解码,并根据所解码的块地址来选择一个存储块。在擦除操作期间,地址解码器121可将接地电压施加到与所选择的存储块连接的字线。
[0076]
根据本公开的实施例,地址解码器121可被配置成对所传送或传输的地址addr中的列地址进行解码。所解码的列地址可被传送到读取和写入电路123。作为示例,地址解码器121可包括诸如行解码器、列解码器和地址缓冲器的组件。
[0077]
电压生成器122被配置成通过使用供应到存储器装置100的外部电源电压来生成多个操作电压vop。电压生成器122响应于控制逻辑130的控制而进行操作。
[0078]
作为示例,电压生成器122可通过调节外部电源电压来生成内部电源电压。将由电压生成器122生成的内部电源电压用作存储器装置100的操作电压。
[0079]
作为实施例,电压生成器122可使用外部电源电压或内部电源电压来生成多个操作电压vop。电压生成器122可被配置成生成存储器装置100所需的各种电压。例如,电压生成器122可生成多个擦除电压、多个编程电压、多个通过电压、多个选择读取电压以及多个未选择读取电压。
[0080]
为了生成具有不同电压电平的多个工作电压vop,电压生成器122可包括接收内部电压的多个泵浦电容器,并且选择性地启用多个泵浦电容器以生成多个操作电压vop。
[0081]
所生成的多个操作电压vop可通过地址解码器121而供应到存储器单元阵列110。
[0082]
读取和写入电路123包括第一页面缓冲器pb1至第m页面缓冲器pbm。第一至第m页面缓冲器pb1至pbm分别通过第一至第m位线bl1至blm连接到存储器单元阵列110。第一至第m页面缓冲器pb1至pbm响应于控制逻辑130的控制而操作。
[0083]
第一至第m页面缓冲器pb1至pbm与数据输入/输出电路124通信数据data。在编程
时,第一至第m页面缓冲器pb1至pbm通过数据输入/输出电路124和数据线dl接收待被存储的数据data。
[0084]
在编程操作期间,当编程脉冲被施加到所选择的字线时,第一至第m页面缓冲器pb1至pbm可通过位线bl1至blm将待存储的数据data,即通过数据输入/输出电路124接收的数据data传送到所选择存储器单元。根据所传送的数据data对所选择页面的存储器单元进行编程。连接到施加有编程许可电压(例如,接地电压)的位线的存储器单元可具有增加的阈值电压。连接到施加有编程禁止电压(例如,电源电压)的位线的存储器单元的阈值电压可保持在相同或基本相同的电压。在编程验证操作期间,第一至第m页面缓冲器pb1至pbm可通过位线bl1至blm读取所选择的存储器单元中存储的数据data。
[0085]
在读取操作期间,读取和写入电路123可通过位线bl从所选择的页面中的存储器单元中读取数据data,并且将所读取的数据data存储在第一至第m页面缓冲器pb1至pbm中。
[0086]
在擦除操作期间,读取和写入电路123可使位线bl浮置。在实施例中,读取和写入电路123可包括列选择电路。
[0087]
数据输入/输出电路124通过数据线dl连接到第一至第m页面缓冲器pb1至pbm。数据输入/输出电路124响应于控制逻辑130的控制来操作。
[0088]
数据输入/输出电路124可包括接收输入数据data的多个输入/输出缓冲器(未示出)。在编程操作期间,数据输入/输出电路124从外部控制器(未示出)接收待存储的数据data。在读取操作期间,数据输入/输出电路124将从读取和写入电路123中包括的第一页面缓冲器pb1至第m页面缓冲器pbm传送的数据data输出到外部控制器。
[0089]
在读取操作或验证操作期间,感测电路125可响应于由控制逻辑130生成的许可位vrybit信号而生成参考电流,并且可将从读取和写入电路123接收的感测电压vpb与由参考电流生成的参考电压进行比较,并将通过信号或失败信号输出到控制逻辑130。
[0090]
控制逻辑130可连接到地址解码器121、电压生成器122、读取和写入电路123、数据输入/输出电路124以及感测电路125。控制逻辑130可被配置成控制存储器装置100的所有操作。控制逻辑130可响应于从外部装置传送的命令cmd而进行操作。
[0091]
控制逻辑130可响应于命令cmd和地址addr而生成各种信号以控制外围电路120。例如,控制逻辑130可响应于命令cmd和地址addr而生成操作信号opsig、行地址radd、读取和写入电路控制信号pbsignals、许可位vrybit。控制逻辑130可向电压生成器122输出操作信号opsig,向地址解码器121输出行地址radd,向读取和写入电路123输出读取和写入控制信号,并且向感测电路125输出许可位vrybit。另外,控制逻辑130可响应于通过感测电路125输出的通过或失败信号pass/fail来确定验证操作是通过还是失败。
[0092]
图3是示出图2的存储器单元阵列的示图。
[0093]
参照图3,第一至第z存储块blk1至blkz共同连接到第一至第m位线bl1至blm。在图3中,为便于描述,示出多个存储块blk1至blkz中的第一存储块blk1中包括的元件,并且省略了其余存储块blk2至blkz中的每个存储块中包括的元件。应当理解的是,其余存储块blk2至blkz中的每个存储块可类似于第一存储块blk1来配置。
[0094]
第一存储块blk1可包括多个单元串cs1_1至cs1_m(m为正整数)。第一至第m单元串cs1_1至cs1_m分别连接到第一至第m位线bl1至blm。第一至第m单元串cs1_1至cs1_m中的每个单元串包括漏极选择晶体管dst、串联连接的多个存储器单元mc1至mcn(n为正整数)以及
源极选择晶体管sst。
[0095]
第一至第m单元串cs1_1至cs1_m中的每个单元串中包括的漏极选择晶体管dst的栅极端子连接到漏极选择线dsl1。第一至第m单元串cs1_1至cs1_m中的每个单元串中包括的第一至第n存储器单元mc1至mcn的栅极端子分别连接到第一至第n字线wl1至wln。第一至第m单元串cs1_1至cs1_m中的每个单元串中包括的源极选择晶体管sst的栅极端子连接到源极选择线ssl1。
[0096]
为便于描述,将参考多个单元串cs1_1至cs1_m中的第一单元串cs1_1来描述单元串的结构。然而,应当理解的是,其余单元串cs1_2至cs1_m中的每个单元串类似于第一单元串cs1_1来配置。
[0097]
第一单元串cs1_1中包括的漏极选择晶体管dst的漏极端子连接到第一位线bl1。第一单元串cs1_1中包括的漏极选择晶体管dst的源极端子连接到第一单元串cs1_1中包括的第一存储器单元mc1的漏极端子。第一至第n存储器单元mc1至mcn彼此串联连接。第一单元串cs1_1中包括的源极选择晶体管sst的漏极端子连接到第一单元串cs1_1中包括的第n存储器单元mcn的源极端子。第一单元串cs1_1中包括的源极选择晶体管sst的源极端子连接到公共源极线csl。作为实施例,公共源极线csl可共同连接到第一至第z存储块blk1至blkz。
[0098]
图2的行线rl中包括漏极选择线dsl1、第一至第n字线wl1至wln以及源极选择线ssl1。由地址解码器121控制漏极选择线dsl1、第一至第n字线wl1至wln以及源极选择线ssl1。由控制逻辑130控制公共源极线csl。由读取和写入电路123控制第一至第m位线bl1至blm。
[0099]
图4是示出根据本公开的实施例的存储器控制器控制多个存储器装置的方法的示图。
[0100]
参照图4,存储器控制器200可分别通过第一通道ch1和第二通道ch2连接到多个存储器装置die_11至die_14和die_21至die_24。图4中的通道的数量和连接到每个通道的存储器装置的数量是示例性的,并且本公开所预期的实施例不限于此。
[0101]
存储器装置die_11至die_14可共同连接到第一通道ch1。存储器装置die_11至die_14可通过第一通道ch1与存储器控制器200通信。
[0102]
因为存储器装置die_11至die_14共同连接到第一通道ch1,所以一次仅一个存储器装置可以与存储器控制器200通信。然而,存储器装置die_11至die_14中的每个存储器装置的内部操作可同时执行。
[0103]
存储器装置die_21至die_24可共同连接到第二通道ch2。存储器装置die_21至die_24可通过第二通道ch2与存储器控制器200通信。
[0104]
因为存储器装置die_21至die_24共同连接到第二通道ch2,所以一次仅一个存储器装置可与存储器控制器200通信。存储器装置die_21至die_24中的每个存储器装置的内部操作可同时执行。
[0105]
使用多个存储器装置的存储装置可通过使用数据交错,即使用交错方法的数据通信来提高性能。数据交错可以在两个或多个通路共享一个通道的结构中,通过移动或移位通路来执行数据读取操作或数据写入操作。对于数据交错,可以通道和通路为单位来管理存储器装置。为了最大化连接到每个通道的存储器装置的并行性,存储器控制器200可以以
通道和通路为单位来分散或分布连续的逻辑存储器区域,并且分配连续的逻辑存储器区域。
[0106]
例如,存储器控制器200可通过第一通道ch1,将命令、包括地址的控制信号以及数据传送到存储器装置die_11。在存储器装置die_11将所传送的数据编程到所包括的存储器单元中的同时,存储器控制器200可将命令、包括地址的控制信号以及数据传送到存储器装置die_12。
[0107]
在图4中,多个存储器装置可由四个通路way1至way4配置。第一通路way1可包括存储器装置die_11和die_21。第二通路way2可包括存储器装置die_12和die_22。第三通路way3可包括存储器装置die_13和die_23。第四通路way4可包括存储器装置die_14和die_24。
[0108]
通道ch1和ch2中的每个通道可以是由连接到相应通道的存储器装置共享和使用的信号总线。
[0109]
在图4中,已描述了两通道/四通路结构中的数据交错。然而,随着通道数量和通路数量的增加,交错可能更高效。
[0110]
图5是示出根据本公开的实施例的超级块的示图。
[0111]
参照图5,存储器装置die_11至die_14可共同连接到第一通道ch1。
[0112]
在图5中,每个存储器装置可包括多个平面。然而,为便于描述,假设在本说明书中一个存储器装置包括一个平面。一个平面可包括多个存储块blk1至blkn(n为1或更大的自然数),并且一个存储块可包括多个页面page 1至page k(k为1或更大的自然数)。
[0113]
存储器控制器可以超级块为单位来控制共同连接到一个通道的多个存储器装置中包括的存储块。换言之,超级块可包括连接到公共通道的不同存储器装置中包括的至少两个存储块。
[0114]
例如,存储器装置die_11至die_14中的每个存储器装置中包括的第一存储块blk1可配置或构成第一超级块sb 1。存储器装置die_11至die_14中的每个存储器装置中包括的第二存储块blk2可配置或构成第二超级块sb 2。以相同的方式,存储器装置die_11至die_14中的每个存储器装置中包括的第n存储块blkn可配置或构成第n超级块sb n。因此,连接到第一通道ch1的存储器装置die_11至die_14可包括第一至第n超级块sb 1至sb n
[0115]
超级块可由多个条带构成或包括多个条带。条带可与术语“超级页面”交换使用。
[0116]
一个条带或超级页面可包括多个页面。例如,作为第一超级块sb 1的一部分的多个第一存储块blk1的每个中的第一页面page 1可配置或构成第一条带stripe 1或第一超级页面super page 1。
[0117]
因此,一个超级块可包括第一条带stripe 1至第k条带stripe k。可选地,一个超级块可包括第一超级页面super page 1至第k超级页面super page k。
[0118]
当将数据存储在存储器装置die_11至die_14中或从存储器装置die_11至die_14读取所存储的数据时,存储器控制器可以条带为单位或以超级页面为单位来存储或读取数据。
[0119]
图6是示出根据本公开的实施例的存储器控制器的配置和操作的示图。
[0120]
参照图6,存储器装置100可包括流存储区域和非流存储区域。流存储区域可以是存储与由主机300提供的请求和流标识符对应的写入数据的区域。非流存储区域可以是存
储由主机300提供的、缺少流标识符的写入数据的区域。根据存在流标识符还是缺少流标识符,由主机300提供的写入数据可被选择性地存储在流存储区域或非流存储区域中。
[0121]
存储器控制器200可包括写入控制器210、写入历史管理器220、缓冲器230和垃圾收集控制器240。
[0122]
写入控制器210可控制缓冲器230和存储器装置100,以将缓冲器230中存储的写入数据存储在存储器装置100中。
[0123]
具体地,写入控制器210可向缓冲器230提供缓冲控制信息,使得作为响应,缓冲器230可将写入数据提供到存储器装置100。写入控制器210还可向存储器装置100提供编程命令以存储写入数据。
[0124]
当写入控制器210从主机300接收针对流的设置请求时,写入控制器210可向缓冲器230提供用于分配与被请求的流对应的流缓冲区域的流设置信息。写入控制器210可向存储器装置100提供用于分配与被请求的流对应的流存储区域的流设置命令。
[0125]
写入控制器210可从主机300接收与指示特定流的流标识符对应的写入数据。写入控制器210可将所接收的写入数据存储在缓冲器230中的对应于特定流的流缓冲区域中。写入控制器210可向存储器装置100提供编程命令,以将写入数据存储在存储器装置100中的对应于特定流的流存储区域中。
[0126]
当写入控制器210从主机300接收到针对特定流的释放请求时,写入控制器210可向缓冲器230提供用于释放对应于该特定流的流缓冲区域的流设置信息。
[0127]
写入控制器210可基于从写入历史管理器220提供的写入历史信息来控制缓冲器230所分配的流缓冲区域的大小。写入控制器210可向缓冲器230提供用于控制流缓冲区域的大小的流设置信息。
[0128]
写入控制器210可基于写入历史信息中包括的、多个流存储区域中的每个流存储区域的写入操作频率,来计算每个流缓冲区域的写入资源。写入历史信息中包括的流存储区域的总写入计数值可以是流存储区域的写入操作频率的指示符或与流存储区域的写入操作频率相关联。
[0129]
当写入操作频率较高时,对应于流存储区域的流缓冲区域的写入资源相对较低。当写入操作频率较低时,对应于流存储区域的流缓冲区域的写入资源相对较高。
[0130]
在实施例中,当写入资源相对较高时,写入控制器210可减小流缓冲区域的大小,并且当写入资源相对较低时,可增加流缓冲区域的大小。在另一实施例中,写入控制器210可将具有较高写入资源的流缓冲区域的一部分分配给具有较低写入资源的流缓冲区域。
[0131]
写入历史管理器220可对存储器装置100中的、与从主机300提供的流标识符对应的多个流存储区域中的每个流存储区域执行的写入操作的数量进行计数。
[0132]
具体地,写入历史管理器220可存储设定时段期间的写入计数信息,即多个流存储区域中的每个流存储区域的写入计数值。写入历史管理器220可存储在每个设定时段中计算的写入计数信息。设定时段可以是预设长度的时间或者是在多个流存储区域中执行了预设数量的写入操作的时间段。
[0133]
在实施例中,写入历史管理器220可存储写入计数信息直到达到预设数量。当所存储的写入计数信息的数量达到预设数量时,写入历史管理器220可利用新生成的写入计数信息来重写最早存储的写入计数信息。
[0134]
对于多个流存储区域中的每个流存储区域,写入历史管理器220可基于多个所存储的写入计数信息来生成指示写入操作频率的写入历史信息。具体地,写入历史管理器220可针对每个流存储区域,将多个写入计数信息中的、多个流存储区域中的每个流存储区域的写入计数值与现有写入计数值相加。写入历史管理器220可基于相加总和的结果,生成包括每个流存储区域的总写入计数值的写入历史信息。
[0135]
缓冲器230可根据从写入控制器210提供的流设置信息来分配具有默认大小的新的流缓冲区域。流缓冲区域可包括可变区域和固定区域。缓冲器230可响应于所接收的流设置信息来释放先前分配的流缓冲区域。
[0136]
缓冲器230可响应于所接收的流设置信息来控制所分配的流缓冲区域的大小。缓冲器230可控制流缓冲区域中的可变区域的大小。
[0137]
使用从写入历史管理器220提供的写入历史信息,垃圾收集控制器240可从存储器装置100中包括的多个流存储区域中选择目标流存储区域,以执行垃圾收集操作。
[0138]
垃圾收集控制器240可计算对应于流存储区域的无效页面计数值。在实施例中,对应于流存储区域的无效页面计数值可以是该流存储区域中包括的多个存储块的无效页面计数值的平均值。在另一实施例中,对应于流存储区域的无效页面计数值可以是该流存储区域中包括的多个存储块的无效页面计数值的最大计数值。
[0139]
使用每个流存储区域的无效页面计数值和写入历史信息中包括的总写入计数值,垃圾收集控制器240可计算每个流存储区域的校正无效页面计数值。垃圾收集控制器240可从多个流存储区域之中,选择具有最高的校正无效页面计数值的流存储区域作为目标流存储区域。
[0140]
垃圾收集控制器240可控制存储器装置100以对目标流存储区域执行垃圾收集操作。
[0141]
例如,垃圾收集控制器240可向存储器装置100提供命令,以读取目标流存储区域中包括的至少两个牺牲块中存储的有效数据。垃圾收集控制器240可向存储器装置100提供编程命令,以将所读取的有效数据存储在目标流存储区域中的空闲块中。垃圾收集控制器240可向存储器装置100提供擦除命令,以擦除该至少两个牺牲块。
[0142]
图7是示出根据本公开的实施例的存储器装置中的流存储区域的示图。
[0143]
参照图7,至少一个存储器装置100可包括多个流存储区域和非流存储区域。
[0144]
存储器装置100可响应于由存储器控制器提供的流设置命令来分配流存储区域。流设置命令可以是响应于由主机提供的流设置请求,由存储器控制器向存储器装置100提供以分配与被请求的流对应的流存储区域的命令。
[0145]
流存储区域可以是用于存储由主机提供的、与流标识符对应的写入数据的区域。非流存储区域可以是用于存储由主机提供的、缺少流标识符的写入数据的区域。
[0146]
在实施例中,可以以参照图5描述的超级块为单位来分配流存储区域。根据流存储区域中是否存在足够的空间来存储写入数据,可向流存储区域新分配超级块,或者可释放所分配的超级块。例如,当被分配给流存储区域的超级块之中的、能够存储写入数据的空闲超级块的数量不足时,可向流存储区域分配新的超级块。相反,当空闲超级块的数量足够时,可释放已分配给流存储区域的空闲超级块。
[0147]
在图7中,至少一个存储器装置100可包括第一至第n超级块sb 1至sb n。
[0148]
可将第一超级块sb 1分配给第一流存储区域。换言之,第一流存储区域可包括第一超级块sb 1。可将第二和第三超级块sb 2和sb 3分配给第二流存储区域。第二流存储区域可包括第二和第三超级块sb 2和sb 3。第四至第n超级块sb 4至sb n可不具有所分配的特定流存储区域。因此,非流存储区域可包括第四至第n超级块sb 4至sb n
[0149]
图8是示出根据本公开的实施例的图6的写入控制器210和写入历史管理器220的配置和操作的示图。
[0150]
参照图8,写入控制器210可包括流管理器211。写入历史管理器220可包括写入计数器221和写入计数信息存储装置222。缓冲器230可包括第一流缓冲区域231-1、第二流缓冲区域231-2和非流缓冲区域232。
[0151]
当流管理器211从主机300接收针对特定流的流设置请求时,流管理器211可向缓冲器230提供用于分配与被请求的流相对应的流缓冲区域的流设置信息。流管理器211可向存储器装置100提供用于分配与被请求的流相对应的流存储区域的流设置命令。
[0152]
当流管理器211从主机300接收针对特定流的释放请求(未示出)时,流管理器211可向缓冲器230提供用于释放与该特定流对应的流缓冲区域的流设置信息。
[0153]
流管理器211可基于从写入计数信息存储装置222提供的写入历史信息来控制缓冲器230所分配的流缓冲区域的大小。流管理器211可向缓冲器230提供用于控制流缓冲区域的大小的流设置信息。
[0154]
流管理器211可基于写入历史信息中包括的、多个流存储区域中的每个流存储区域的写入操作频率来计算流缓冲区域的写入资源。
[0155]
写入资源指示与流存储区域对应的流缓冲区域中的可用区域的大小。写入资源可以是根据对流存储区域测量的写入操作频率来确定与流存储区域对应的流缓冲区域在大小上是足够还是不足够的相对值。写入资源与写入操作频率成反比。
[0156]
例如,与写入操作频率相对较低的流存储区域相比,写入操作频率相对较高的流存储区域的流缓冲区域的大小可能不足够。因此,可确定与对应于写入操作频率相对较低的流存储区域的流缓冲区域相比,对应于写入操作频率相对较高的流存储区域的流缓冲区域具有相对更小或更少的写入资源。
[0157]
在实施例中,可基于写入历史信息中包括的流存储区域的总写入计数值来计算写入操作频率。因此,可确定与对应于总写入计数值较低的流存储区域的流缓冲区域相比,对应于总写入计数值较高的流存储区域的流缓冲区域具有相对更小或更少的写入资源。
[0158]
在实施例中,流管理器211可控制缓冲器230来减小写入资源较大或较多的第一流缓冲区域231-1的大小,并且增加写入资源较小或较少的第二流缓冲区域231-2的大小。在另一实施例中,流管理器211可控制缓冲器230以将写入资源较大的第一流缓冲区域231-1的一部分分配给写入资源较小的第二流缓冲区域231-2。
[0159]
写入计数器221可结合从主机300接收的写入请求中包括的流标识符,来对存储器装置100的多个流存储区域中的每个流存储区域执行的写入操作的数量进行计数。
[0160]
具体地,写入计数器221可将设定时段期间的多个流存储区域中的每个流存储区域的写入计数值作为写入计数信息存储在写入计数信息存储装置222中。写入计数器221可在每个设定时段,将写入计数信息存储在写入计数信息存储装置222中。设定时段可以是预设长度的时间段或者在多个流存储区域中执行了预设数量的写入操作的时间段。
[0161]
在实施例中,写入计数信息存储装置222可存储写入计数信息直到达到预设数量。当写入计数信息存储装置222中存储的写入计数信息的数量达到预设数量时,写入计数器221可利用新生成的写入计数信息来重写最早存储的写入计数信息。
[0162]
使用所存储的多个写入计数信息,写入计数信息存储装置222可生成指示多个流存储区域中的每个流存储区域的写入操作频率的写入历史信息。具体地,所存储的多个写入计数信息包括多个流存储区域中的每个流存储区域的写入计数值。写入计数信息存储装置222可将多个流存储区域中的每个流存储区域的写入计数值相加,以计算总写入计数值。使用总的相加结果,写入计数信息存储装置222可生成包括多个流存储区域中的每个流存储区域的总写入计数值的写入历史信息。
[0163]
缓冲器230可根据从流管理器211提供的流设置信息来分配新的流缓冲区域。缓冲器230可根据流设置信息来释放先前分配的流缓冲区域。缓冲器230可根据流设置信息来控制所分配的流缓冲区域的大小。缓冲器230可将除了所分配的流缓冲区域之外的缓冲存储器区域分配给非流缓冲区域232。
[0164]
图9是示出根据本公开的实施例的图8的写入计数信息存储装置的示图。
[0165]
参照图9,写入计数信息存储装置可存储多个写入计数信息。
[0166]
写入计数信息可包括在设定时段期间的对多个流存储区域中的每个流存储区域执行的写入操作的数量。设定时段可以是预设长度的时间或者对多个流存储区域执行了预设数量的写入操作的时间段。写入计数信息存储装置222可存储每个设定时段和各个设定时段中的写入计数信息。
[0167]
在实施例中,写入计数信息存储装置可存储多达预设数量的写入计数信息。当写入计数信息存储装置222中存储的写入计数信息的数量达到预设数量时,可利用新生成的写入计数信息来重写最早存储的写入计数信息。
[0168]
例如,写入计数信息存储装置可存储四个写入计数信息。当对第一至第三流存储区域stream 1至stream 3执行了100个写入操作时,每个写入计数信息可包括对第一至第三流存储区域stream 1至stream 3中的每个流存储区域执行的写入操作的数量。
[0169]
在实施例中,索引为1、2和4的写入计数信息可以是对应于已完成的存储操作的写入计数信息。在示例中,索引为2的写入计数信息可以是最近完成的存储操作的写入计数信息,而索引为4的写入计数信息可以是最早完成的存储操作的写入计数信息。
[0170]
索引为3的写入计数信息可以是未完成的存储操作的写入计数信息。换言之,索引为3的写入计数信息可以是当前正在生成的写入计数信息。
[0171]
当对索引为3的第一至第三流存储区域stream 1至stream 3执行的写入操作的数量达到100时,可完成索引为3的写入计数信息的存储。此后,下一个生成的写入计数信息可重写索引为4的写入计数信息。以这种方式,写入计数信息存储装置中存储的写入计数信息可以随着索引循环、以先进先出或环绕的方法来管理。
[0172]
写入计数信息存储装置222可使用所存储的多个写入计数信息,来生成指示多个流存储区域中的每个流存储区域的写入操作频率的写入历史信息。具体地,所存储的多个写入计数信息包括多个流存储区域中的每个流存储区域的写入计数值。写入计数信息存储装置222可将多个流存储区域中的每个流存储区域的写入计数值相加,以计算总写入计数值。使用所存储的多个写入计数信息,写入计数信息存储装置222可生成包括每个流存储区
域的总写入计数值的写入历史信息。
[0173]
在实施例中,写入历史信息可包括多个流存储区域中的每个流存储区域的总写入计数值。可针对每个流存储区域,通过对写入计数信息存储装置中存储的、多个流存储区域中的每个流存储区域的写入计数值进行求和来获得总写入计数值。
[0174]
在图9中,可基于完成存储的、索引为1、2和4的写入计数信息来生成写入历史信息。写入历史信息中包括的第一至第三流存储区域stream 1至stream 3中的每个流存储区域的总写入计数值可通过对每个流存储区域的索引为1、2和4的写入计数值进行求和来获得。
[0175]
例如,参照图9,第一流存储区域stream 1的总写入计数值可以是100。第二流存储区域stream 2的总写入计数值可以是零。第三流存储区域stream 3的总写入计数值可以是200。
[0176]
在各个实施例中,可基于已完成存储的写入计数信息以及当前正在生成的写入计数信息来生成写入历史信息。在示例中,第一流存储区域stream 1的总写入计数值可以是150。第二流存储区域stream 2的总写入计数值可以是零。第三流存储区域stream 3的总写入计数值可以是230。
[0177]
写入历史信息中包括的每个流存储区域的总写入计数值可指示每个流存储区域的写入操作频率或者与每个流存储区域的写入操作频率相关联。总写入计数值越高,对流存储区域执行的写入操作的频率越高。总写入计数值越低,对流存储区域执行的写入操作的频率越低。
[0178]
流存储区域的写入操作的频率越低,对应于流存储区域的流缓冲区域的写入资源越多。流存储区域的写入操作的频率越高,对应于流存储区域的流缓冲区域的写入资源越少。
[0179]
参照图9,例如,因为第二流存储区域stream 2的总写入计数值为最低的0,所以写入操作频率也可能最低。因此,对应于第二流存储区域stream 2的流缓冲区域的写入资源可能最多或最大。相反,第三流存储区域stream 3的总写入计数值为最高的200,因此写入操作频率可能最高。因此,对应于第三流存储区域stream 3的流缓冲区域的写入资源可能最少或最小。因为第一流存储区域stream 1的总写入计数值为中间的100,所以写入操作频率落在其它两个写入操作频率之间。因此,对应于第一流存储区域stream 1的流缓冲区域的写入资源可能在大小或数量上相对中等。
[0180]
图10是示出根据本发明的实施例的流缓冲区域的大小控制的示图。
[0181]
参照图10,第一至第三流缓冲区域中的每个流缓冲区域可具有默认大小,并且每个流缓冲区域可包括可变区域和固定区域。
[0182]
通过参考参照图9描述的写入历史信息,可控制或修改第一至第三流缓冲区域的大小。
[0183]
参照图9和图10,可将第一流缓冲区域的总写入计数值设置为100,其中100为第一流存储区域的总写入计数值。可将第二流缓冲区域的总写入计数值设置为0,其中0为第二流存储区域的总写入计数值。可将第三流缓冲区域的总写入计数值设置为200,其中200为第三流存储区域的总写入计数值。
[0184]
在实施例中,可将具有较大写入资源的第二流缓冲区域的可变区域分配给每个具
有较少写入资源的第一和第三流缓冲区域。可基于第一和第三流缓冲区域的总写入计数值,来将第二流缓冲区域的可变区域分配给第一和第三流缓冲区域。
[0185]
在示例中,写入历史信息中包括的总写入计数总和可以是300,因此第一流缓冲区域的总写入计数值所占的比率可以是1/3(100/300)。第三流缓冲区域的总写入计数值所占的比率可以是2/3(200/300)。
[0186]
因此,可将作为第二流缓冲区域的可变区域的1/3的s1区域分配给第一流缓冲区域,并且可将作为第二流缓冲区域的可变区域的2/3的s2区域分配给第三流缓冲区域。
[0187]
在另一实施例中,可将具有相对较多或较大写入资源的第二流缓冲区域的整个区域分配给每个具有相对较少或较小写入资源的第一流缓冲区域和第三流缓冲区域。在另一实施例中,可(根据写入历史信息)来将新的缓冲存储器区域分配给写入资源较少的第一和第三流缓冲区域,而不考虑第二流缓冲区域的写入资源的大小。
[0188]
图11是示出根据图10的实施例的控制存储器控制器的流缓冲区域的大小的操作的流程图。
[0189]
参照图11,在步骤s1101中,存储器控制器可存储存储器装置中的多个流存储区域中的每个流存储区域的写入计数值。写入计数值可以是对流存储区域执行的写入操作的数量。
[0190]
在步骤s1103中,存储器控制器可基于或使用所存储的写入计数值来计算总写入计数值,以生成指示或对应于多个流存储区域中的每个流存储区域的写入操作频率的写入历史信息。
[0191]
在步骤s1105中,存储器控制器可基于或使用(写入历史信息中包括的)指示写入操作频率或与写入操作频率相关联的总写入计数值,来计算对应于每个流存储区域的流缓冲区域的写入资源。
[0192]
在步骤s1107中,存储器控制器可基于所计算的写入资源来控制流缓冲区域的大小。具体地,存储器控制器可增加写入资源较少的流缓冲区域的大小,并且减少写入资源较多的流缓冲区域的大小。
[0193]
图12是示出根据本公开的实施例的垃圾收集操作的示图。
[0194]
参照图12,垃圾收集操作可以是在资源不足的情况下,将至少两个牺牲块中存储的有效数据复制到空闲块,并且擦除该至少两个牺牲块以释放块或使块空闲的操作。
[0195]
例如,存储块blk 1和blk 2可以是牺牲块。存储块blk 3可以是空闲块。
[0196]
牺牲块blk 1的页面page 2和page 4中存储的数据可以是有效数据。牺牲块blk 2的页面page 2和page 3中存储的数据可以是有效数据。可将牺牲块blk 1和blk 2中存储的有效数据复制到空闲块blk 3。可将存储有效数据的空闲块blk 3设置为数据块。此后,牺牲块blk 1和blk 2可被擦除,然后被设置为空闲块。
[0197]
图13是示出根据本公开的实施例的选择待执行垃圾收集操作的流存储区域的操作的示图。
[0198]
参照图13,第一流存储区域可包括第一至第四存储块blk1至blk4。第二流存储区域可包括第五至第八存储块blk5至blk8。图13中的每个流存储区域中包括的存储块的数量是说明性的,并且在本公开所预期的实施例中,存储块的数量不限于此。
[0199]
存储器装置的每个流存储区域可包括多个存储块。无效页面计数(ipc)可以是存
储块中包括的页面之中的存储无效数据的页面的数量。
[0200]
当在具有大量的无效页面计数值较高的存储块的流存储区域中执行垃圾收集操作时,垃圾收集操作可能更高效。可基于或使用无效页面计数值来确定待执行垃圾收集操作的目标流存储区域。
[0201]
在实施例中,流存储区域的无效页面计数值可以是流存储区域中包括的所有存储块的无效页面计数值的平均值。
[0202]
例如,对应于第一流存储区域的平均无效页面计数值可以是70。对应于第二流存储区域的平均无效页面计数值可以是80。在该示例中,可选择第二流存储区域作为待执行垃圾收集操作的目标流存储区域。
[0203]
在另一实施例中,对应于流存储区域的无效页面计数值可以是流存储区域中包括的所有存储块的无效页面计数值之中的最高值。
[0204]
例如,对应于第一流存储区域的无效页面计数值可以是100。对应于第二流存储区域的无效页面计数值可以是95。在这种情况下,可选择第一流存储区域作为待执行垃圾收集操作的目标流存储区域。
[0205]
在垃圾收集操作期间,可按照增加无效页面计数值或增加平均无效页面计数值的顺序,来将目标流存储区域中包括的存储块之中的至少两个牺牲块中存储的有效数据传送到空闲块。此后,该至少两个牺牲块可被擦除,然后被设置为空闲块。
[0206]
图14是示出根据本公开的实施例的校正无效页面计数值的示图。
[0207]
参照图14,可基于写入历史信息中包括的现有无效页面计数值ipc和总写入计数值totwc来计算校正无效页面计数值。
[0208]
具体地,校正无效页面计数值可以是通过将无效页面计数值ipc与通过将校正系数(a)乘以总写入计数值totwc而获得的值相加而获得的值。根据总写入计数值和无效页面计数值之间的相关性,可在从-1至1(包括-1和1)的范围内不同地设置校正系数(a)。换言之,可根据流存储区域的写入操作频率和无效页面计数值之间的相关性来不同地设置校正系数(a)。在图14中,假设校正系数(a)为0.5。
[0209]
在图14中,假设对应于流存储区域的无效页面计数值是该流存储区域中包括的存储块的无效页面计数值之中的最高值。
[0210]
参照图13,对应于第一流存储区域stream 1的最高无效页面计数值可以是100,对应于第二流存储区域stream 2的最高无效页面计数值可以是95。在图14中,写入历史信息中包括的第一流存储区域stream 1的总写入计数值totwc可以是40,并且第二流存储区域stream 2的总写入计数值totwc可以是60。
[0211]
参照图14,对应于第一流存储区域stream 1的校正无效页面计数值可被计算为120。对应于第二流存储区域stream 2的校正无效页面计数值可被计算为125。
[0212]
在校正之前,第一流存储区域的无效页面计数值100可大于第二流存储区域的无效页面计数值95。因此,在校正之前,可选择第一流存储区域作为待执行垃圾收集操作的目标流存储区域。
[0213]
在校正之后,第二流存储区域的校正无效页面计数值125可大于第一流存储区域的校正无效页面计数值120。因此,在校正之后,可选择第二流存储区域作为待执行垃圾收集操作的目标流存储区域。
[0214]
图15是示出图14的校正无效页面计数值的示图。
[0215]
参照图15,横轴可指示时间,纵轴可指示对应于流存储区域的无效页面计数值。
[0216]
随着对存储块的写入操作的数量增加,存储块的无效页面计数也可能增加。因此,可预测的是,如果流存储区域的写入操作频率较高,则该流存储区域中包括的存储块的无效页面计数也会增加。可预测的是,如果流存储区域具有较高的写入操作频率,则对应于该流存储区域的无效页面计数值也会增加。
[0217]
因此,可基于流存储区域的写入操作频率来估计对应于该流存储区域的无效页面计数值。可基于流存储区域的总写入计数值来预测对应于该流存储区域的无效页面计数值。
[0218]
在图15中,时间点t1可以是选择待执行垃圾收集操作的目标流存储区域的当前时间点。时间点t2可以是预测完成垃圾收集操作时的时间点。
[0219]
时间点t2处的无效页面计数值可以是基于指示时间点t1之前的流存储区域的写入操作频率的总写入计数值而预测的流存储区域的无效页面计数值。换言之,在时间点t2处的无效页面计数值可以是参照图14描述的校正无效页面计数值。时间点t2处的无效页面计数值可以是在不考虑由于执行垃圾收集操作而引起的无效页面计数值的减少效果的情况下的预测值。
[0220]
在时间点t1,选择第一流存储区域作为目标流存储区域可能更高效。然而,在完成垃圾收集操作的时间点t2,选择第二流存储区域作为目标流存储区域可能更高效。
[0221]
换言之,在时间点t1处,选择在时间点t2处被预期为具有更高的无效页面计数值的第二流存储区域作为目标流存储区域可能使垃圾收集操作更高效。
[0222]
根据本公开的实施例,可通过使用指示流存储区域的写入操作频率的总写入计数值,来选择被预测为使垃圾收集操作更高效的流存储区域作为目标流存储区域。
[0223]
图16是示出根据图14的实施例的存储器控制器的操作的流程图。
[0224]
参照图16,在步骤s1601中,存储器控制器可计算对应于流存储区域的无效页面计数值。在示例中,对应于流存储区域的无效页面计数值可以是该流存储区域中包括的存储块的无效页面计数值的平均值。在另一示例中,对应于流存储区域的无效页面计数值可以是该流存储区域中包括的存储块的无效页面计数值之中的最高值。
[0225]
在步骤s1603中,存储器控制器可通过使用流存储区域的无效页面计数值和写入历史信息中包括的总写入计数值来计算校正无效页面计数值。
[0226]
在步骤s1605中,存储器控制器可基于最高的校正无效页面计数值,来在存储器装置的多个流存储区域之中选择流存储区域。
[0227]
在步骤s1607中,存储器控制器可控制存储器装置以对所选择的流存储区域执行垃圾收集操作。
[0228]
图17是示出图1的存储器控制器的另一实施例的示图。
[0229]
参照图17,存储器控制器1000连接到主机host和存储器装置。存储器控制器1000被配置成响应于来自主机host的请求来访问存储器装置。例如,存储器控制器1000被配置成控制存储器装置的写入操作、读取操作、擦除操作和后台操作。存储器控制器1000被配置成提供存储器装置与主机host之间的接口。存储器控制器1000被配置成驱动控制存储器装置的固件。
[0230]
存储器控制器1000可包括处理器1010、存储器缓冲器1020、错误校正器(ecc)1030、主机接口1040、缓冲器控制器1050、存储器接口1060和总线1070。
[0231]
总线1070可被配置成提供存储器控制器1000的组件之间的通道。
[0232]
处理器1010可控制存储器控制器1000的全部操作,并且可执行逻辑操作。处理器1010可通过主机接口1040与外部主机通信,并且通过存储器接口1060与存储器装置通信。另外,处理器1010可通过缓冲器控制器1050与存储器缓冲器1020通信。处理器1010可使用存储器缓冲器1020作为操作存储器、缓存存储器或缓冲存储器来控制存储装置的操作。
[0233]
处理器1010可执行闪存转换层(ftl)的功能。处理器1010可通过闪存转换层(ftl)将由主机提供的逻辑块地址(lba)转换成物理块地址(pba)。闪存转换层(ftl)可接收逻辑块地址(lba),并且可使用映射表来将该逻辑块地址(lba)转换成物理块地址(pba)。根据映射单元,存在闪存转换层的各种地址映射方法。代表性的地址映射方法包括页面映射方法、块映射方法和混合映射方法。
[0234]
处理器1010被配置成使从主机host接收的数据随机化。例如,处理器1010可使用随机化种子来使从主机host接收的数据随机化。随机化的数据作为待存储的数据提供到存储器装置,并且被编程到存储器单元阵列中。
[0235]
处理器1010被配置成使在读取操作期间从存储器装置接收的数据去随机化。例如,处理器1010可使用去随机化种子将从存储器装置接收的数据去随机化。去随机化的数据可被输出到主机host。
[0236]
作为实施例,处理器1010可通过驱动软件或固件来执行随机化和去随机化。
[0237]
存储器缓冲器1020可用作处理器1010的操作存储器、高速缓存存储器或缓冲存储器。存储器缓冲器1020可存储由处理器1010运行的代码和命令。存储器缓冲器1020可存储由处理器1010处理的数据。存储器缓冲器1020可包括静态ram(sram)或动态ram(dram)。
[0238]
错误校正器1030可执行错误校正。错误校正器1030可基于待通过存储器接口1060写入到存储器装置的数据来执行错误校正码编码(ecc编码)。经错误校正编码的数据可通过存储器接口1060而传送到存储器装置。错误校正器1030可对通过存储器接口1060从存储器装置接收的数据执行错误校正解码(ecc解码)。作为示例,错误校正器1030可作为存储器接口1060的组件而被包括在存储器接口1060中。
[0239]
主机接口1040被配置成在处理器1010的控制下与外部主机通信。作为非限制性示例,主机接口1040可被配置成使用诸如以下的各种通信方法中的至少一种来执行通信:通用串行总线(usb)、串行at附件(sata)、串列scsi(sas)、高速芯片互联(hsic)、小型计算机系统接口(scsi)、外围组件互连(高速pci)、高速非易失性存储器(nvme)、通用闪存(ufs)、安全数字(sd)卡、多媒体卡(mmc)、嵌入式mmc(emmc)、双列直插式存储器模块(dimm)、寄存式dimm(rdimm)以及负载减小的dimm(lrdimm)。
[0240]
缓冲器控制器1050被配置成在处理器1010的控制下控制存储器缓冲器1020。
[0241]
存储器接口1060被配置成在处理器1010的控制下与存储器装置通信。存储器接口1060可通过通道与存储器装置通信命令、地址和数据。
[0242]
作为示例,存储器控制器1000不包括存储器缓冲器1020和缓冲器控制器1050。
[0243]
作为示例,处理器1010可使用代码来控制存储器控制器1000的操作。处理器1010可从设置在存储器控制器1000内部的非易失性存储器装置(例如,只读存储器)加载代码。
作为另一示例,处理器1010可通过存储器接口1060从存储器装置加载代码。
[0244]
作为示例,存储器控制器1000的总线1070可被划分成控制总线和数据总线。数据总线可被配置成在存储器控制器1000内传送数据,控制总线可被配置成在存储器控制器1000内传送诸如命令和地址的控制信息。数据总线和控制总线可彼此分离,并且可既不互相干扰也不互相影响。数据总线可连接到主机接口1040、缓冲器控制器1050、错误校正器1030和存储器接口1060。控制总线可连接到主机接口1040、处理器1010、缓冲器控制器1050、存储器缓冲器1202和存储器接口1060。
[0245]
图18是示出根据本公开的实施例的使用存储装置的存储卡系统的框图。
[0246]
参照图18,存储卡系统2000包括存储器控制器2100、存储器装置2200和连接器2300。
[0247]
存储器控制器2100连接到存储器装置2200。存储器控制器2100被配置成访问存储器装置2200。例如,存储器控制器2100可被配置成控制存储器装置2200的读取操作、写入操作、擦除操作和后台操作。存储器控制器2100被配置成提供存储器装置2200与主机host之间的接口。存储器控制器2100被配置成驱动控制存储器装置2200的固件。存储器控制器2100可与参照图1描述的存储器控制器200等同地进行实施。
[0248]
作为示例,存储器控制器2100可包括诸如随机存取存储器(ram)、处理器、主机接口、存储器接口和错误校正器的组件。
[0249]
存储器控制器2100可通过连接器2300与外部装置通信。存储器控制器2100可根据特定通信标准与外部装置(例如,主机)通信。作为示例,存储器控制器2100被配置成通过诸如以下的各种通信标准中的至少一种与外部装置通信:例如通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(emmc)、外围组件互连(pci)、高速pci(pci-e)、高级技术附件(ata)、串行ata、并行ata、小型计算机系统接口(scsi)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)、火线、通用闪存(ufs)、wi-fi、蓝牙以及nvme。作为示例,连接器2300可由上述各种通信标准中的至少一种来限定。
[0250]
作为示例,存储器装置2200可被配置成诸如以下的各种非易失性存储器元件:例如电可擦除可编程rom(eeprom)、nand闪速存储器、nor闪速存储器、相变ram(pram)、电阻式ram(reram)、铁电ram(fram)以及自旋转移力矩磁性ram(stt-mram)。
[0251]
存储器控制器2100和存储器装置2200可被集成到一个半导体装置中以配置存储卡。例如,存储器控制器2100和存储器装置2200可被集成到一个半导体装置中以配置诸如以下的存储卡:pc卡(个人计算机存储卡国际协会(pcmcia))、紧凑式闪存卡(cf)、智能媒体卡(sm或smc)、记忆棒、多媒体卡(mmc、rs-mmc、微型mmc或emmc)、sd卡(sd、迷你sd、微型sd或sdhc)以及通用闪存(ufs)。
[0252]
图19是示出根据本公开的实施例的使用存储装置的固态驱动器(ssd)系统的框图。
[0253]
参照图19,ssd系统3000包括主机3100和ssd 3200。ssd 3200通过信号连接器3001与主机3100交换信号sig,并且通过电源连接器3002接收电力pwr。ssd 3200包括ssd控制器3210、多个闪速存储器3221至322n、辅助电力装置3230和缓冲存储器3240。
[0254]
根据本公开的实施例,ssd控制器3210可执行参照图1描述的存储器控制器200的功能。
[0255]
ssd控制器3210可响应于从主机3100接收的信号sig来控制多个闪速存储器3221至322n。作为示例,信号sig可以是基于主机3100和ssd 3200之间的接口的信号。例如,信号sig可以是由诸如以下的接口中的至少一种来限定的信号:通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(emmc)、外围组件互连(pci)、高速pci(pci-e)、高级技术附件(ata)、串行ata、并行ata、小型计算机系统接口(scsi)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)、火线、通用闪存(ufs)、wi-fi、蓝牙或nvme。
[0256]
辅助电力装置3230通过电源连接器3002连接到主机3100。辅助电力装置3230可从主机3100接收电力pwr,并且可进行充电。当从主机3100供应的电力不平稳时,辅助电力装置3230可提供ssd 3200的电力。作为示例,辅助电力装置3230可位于ssd 3200中,或者可位于ssd 3200外部。例如,辅助电力装置3230可位于主板上,并且可向ssd 3200提供辅助电力。
[0257]
缓冲存储器3240作为ssd 3200的缓冲存储器操作。例如,缓冲存储器3240可临时存储从主机3100接收的数据或从多个闪速存储器3221至322n接收的数据,或者可临时存储闪速存储器3221至322n的元数据(例如,映射表)。例如,缓冲存储器3240可包括诸如dram、sdram、ddr sdram、lpddr sdram和gram的易失性存储器或诸如fram、reram、stt-mram和pram的非易失性存储器。
[0258]
图20是示出根据本公开的实施例的使用存储装置的用户系统的框图。
[0259]
参照图20,用户系统4000包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
[0260]
应用处理器4100可驱动用户系统4000中包括的组件、操作系统(os)、用户程序等。作为示例,应用处理器4100可包括控制用户系统4000中包括的组件的控制器、接口、图形引擎等。应用处理器4100可被设置为片上系统(soc)。
[0261]
存储器模块4200可作为用户系统4000的主存储器、操作存储器、缓冲存储器或高速缓存存储器。存储器模块4200可包括诸如dram、sdram、ddr sdram、ddr2 sdram、ddr3 sdram、lpddr sdram、lpddr2 sdram和lpddr3 sdram的易失性随机存取存储器或者诸如pram、reram、mram和fram的非易失性随机存取存储器。作为示例,应用处理器4100和存储器模块4200可基于堆叠封装(pop)来封装,并且作为一个半导体封装来提供。
[0262]
网络模块4300可与外部装置通信。作为示例,网络模块4300可支持诸如码分多址(cdma)、全球移动通信系统(gsm)、宽带cdma(wcdma)、cdma-2000、时分多址(tdma)、长期演进、wimax、wlan、uwb、蓝牙和wi-fi的无线通信。作为示例,网络模块4300可包括在应用处理器4100中。
[0263]
存储模块4400可存储数据。例如,存储模块4400可存储从应用处理器4100接收的数据。可选地,存储模块4400可将存储在存储模块4400中的数据传送到应用处理器4100。作为示例,存储模块4400可被实施为诸如以下的非易失性半导体存储器元件:相变ram(pram)、磁性ram(mram)、电阻式ram(rram)、nand闪存、nor闪存以及三维nand闪存。作为示例,存储模块4400可被设置为可移动存储装置(可移动驱动器),诸如用户系统4000的存储卡和外部驱动器。
[0264]
作为示例,存储模块4400可以与上面参照图1描述的存储装置50相同或基本上相同的方式操作。存储模块4400可包括多个非易失性存储器装置,并且多个非易失性存储器
装置可与参照图1描述的存储器装置100相同或基本上相同地操作。
[0265]
用户接口4500可包括向应用处理器4100输入数据或指令或者将数据输出到外部装置的接口。作为示例,用户接口4500可包括诸如以下的用户输入接口:键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和压电元件。用户接口4500可包括诸如以下的用户输出接口:液晶显示器(lcd)、有机发光二极管(oled)显示装置、有源矩阵oled(amoled)显示装置、led、扬声器和监视器。