垃圾收集方法以及用于混合地址映射的存储器系统与流程

文档序号:17762389发布日期:2019-05-24 21:48阅读:188来源:国知局
垃圾收集方法以及用于混合地址映射的存储器系统与流程

本申请要求于2017年11月17日提交的申请号为62/588,091和62/588,102的美国临时申请的优先权和权益,其全部内容通过引用并入本文。

本公开的实施例涉及一种用于存储器系统的地址映射的垃圾收集方案。



背景技术:

计算机环境范例已经转变成可以随时随地使用的普适计算系统。因此,诸如移动电话、数码相机以及笔记本计算机的便携式电子装置的使用已经迅速增加。通常,这些便携式电子装置使用具有存储器装置的存储器系统,即数据存储装置。数据存储装置被用作便携式电子装置的主存储器装置或辅助存储器装置。

由于使用存储器装置的存储器系统不具有移动部件,因此它们提供优异的稳定性、耐用性、高信息访问速度以及低功耗。具有这些优点的存储器系统的示例包括通用串行总线(usb)存储器装置、具有各种接口的存储卡以及固态驱动器(ssd)。存储器系统使用具有存储器需求的各种地址映射方案。



技术实现要素:

本发明的方面包括一种执行用于混合地址映射的垃圾收集方案的方法和系统。

在一个方面中,一直操作存储器系统的方法,存储器系统包括存储器装置,该存储器装置包括多个物理页面。该方法包括:将多个物理页面划分成多个数据块和多个日志块,数据块中的每一个包括与逻辑地址相对应的多个页面并且日志块中的每一个包括数个页面;从主机装置接收数据和数据的逻辑地址;将数据写入多个日志块之中的开放日志块的页面中;当开放日志块已满时,在多个数据块之中选择具有最大脏页面数量的数据块并且在多个日志块之中选择具有最大无效页面数量的日志块;并且对所选择数据块和所选择日志块执行垃圾收集。

在另一方面中,一种操作存储器系统的方法,存储器系统包括存储器装置,该存储器装置包括多个物理块。该方法包括:将多个物理块划分成多个数据块和多个日志块,数据块中的每一个和日志块中的每一个包括多个页面;从主机装置接收数据和数据的逻辑地址;将数据写入多个日志块之中的开放日志块中;当开放日志块已满时,在多个日志块之中识别日志块并且在多个数据块之中识别数据块;基于所识别数据块中脏页面的数量与所识别日志块中无效页面的数量在所识别日志块和所识别数据块之中选择一个块;并且对所选择块执行垃圾收集。

在又一方面中,一种存储器系统包括:存储器装置,包括多个物理块;以及控制器。该控制器:将多个物理块划分成多个数据块和多个日志块,数据块中的每一个包括与逻辑地址相对应的多个页面并且日志块中的每一个包括数个页面;从主机装置接收数据和数据的逻辑地址;将数据写入多个日志块之中的开放日志块的页面中;当开放日志块已满时,在多个数据块之中选择具有最大脏页面数量的的数据块并且在多个日志块中选择具有最大无效页面数量的的日志块;并且对所选择数据块和所选择日志块执行垃圾收集。

在又一方面中,一种存储器系统包括:存储器装置,包括多个物理块;以及控制器。该控制器:将多个物理块划分成多个数据块和多个日志块,数据块中每一个和日志块中的每一个包括多个页面;从主机装置接收数据和数据的逻辑地址;将数据写入多个日志块之中的开放日志块中;当开放日志块已满时,在多个日志块之中识别日志块并且在多个数据块之中之别数据块;基于所识别数据块中脏页面的数量和所识别日志块中无效页面的数量在所识别日志块和所识别数据块之中选择一个块;并且对所选择块执行垃圾收集。

从以下描述中,本发明的其它方面将变得显而易见。

附图说明

图1是示出根据本发明的实施例的存储器系统的框图。

图2是示出根据本发明的实施例的存储器系统的框图。

图3是示出根据本发明的实施例的存储器系统的存储器装置的存储块的电路图。

图4是示出根据本发明的实施例的用于地址转换的存储器系统的示图。

图5是示出根据本发明的实施例的存储器装置的示图。

图6是示出根据本发明的实施例的地址映射表的示图。

图7是示出根据本发明的实施例的闪存转换层的示图。

图8是示出根据本发明的实施例的页面级映射表的示图。

图9是示出根据本发明的实施例的存储器系统的操作的流程图。

图10是示意性示出根据本发明的实施例的存储器系统的垃圾收集操作的流程图。

图11是示出根据本发明的实施例的存储器系统的垃圾收集操作的流程图。

图12是示出根据本发明的实施例的存储器系统的垃圾收集操作的流程图。

图13是示出根据本发明的实施例的存储器系统的垃圾收集操作的流程图。

具体实施方式

以下参照附图更详细地描述各种实施例。然而,本发明可以以各种不同的形式来实现并且因此不应被解释为限于本文阐述的实施例。相反,提供这些实施例以使本公开全面和完整并且将本发明的范围充分地传达给本领域技术人员。此外,对“实施例”、“另一实施例”等的参考不一定仅针对一个实施例,并且对任何这些短语的不同参考不一定针对相同的实施例。在整个公开中,相同的附图标记在本发明的附图和实施例中表示相同的部件。

本发明可以以包括以下的多种方式来实施:进程、设备、系统、物质的组成、实现在计算机可读存储介质上的计算机程序产品和/或处理器,诸如适于执行在联接到处理器的存储器上存储的和/或由联接到处理器的存储器提供的指令的处理器。在本说明书中,这些实施或本发明可以采用的任何其它形式可以被称作技术。通常,可以在本发明的范围内改变所公开进程的步骤顺序。除非另有说明,否则描述为适于执行任务的、诸如处理器或存储器的部件可以实施为临时被配置为在给定时间执行任务的通用部件或被制造为执行任务的特定部件。如本文使用的,术语“处理器”等指适于处理诸如计算机程序指令的数据的一个或多个装置、电路和/或处理内核。

以下提供对本发明的实施例的详细描述以及示出本发明的方面的附图。结合这些实施例来描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限定。本发明涵盖权利要求范围内的许多替换方案、修改方案和等价方案。在以下描述中阐述了许多具体细节以提供对本发明的透彻理解。提供这些细节是为了示例的目的;可以在没有一些或全部这些具体细节的情况下根据权利要求来实施本发明。为了清楚起见,未详细描述与本发明相关的技术领域中的已知技术材料,以免不必要地模糊本发明。

图1是示出根据本发明的实施例的存储器系统10的框图。

参照图1,存储器系统10可以包括存储器控制器100和半导体存储器装置200,半导体存储器装置200可以表示超过一个的这种装置。半导体存储器装置200可以是闪速存储器装置,特别是nand型闪速存储器装置。

存储器控制器100可以控制半导体存储器装置200的全部操作。

半导体存储器装置200可以在存储器控制器100的控制下执行一个或多个擦除、编程和读取操作。半导体存储器装置200可以通过输入/输出(i/o)线接收命令cmd、地址addr和数据data。半导体存储器装置200可以通过电源线接收电力pwr并且通过控制线接收控制信号ctrl。控制信号ctrl可以包括命令锁存使能(cle)信号、地址锁存使能(ale)信号、芯片使能(ce)信号、写入使能(we)信号、读取使能(re)信号等。

存储器控制器100和半导体存储器装置200可以集成在诸如固态驱动器(ssd)的单个半导体器装置中。ssd可以包括用于将数据存储在其中的存储装置。当半导体存储器系统10被使用为ssd时,联接到存储器系统10的主机(未示出)的操作速度可以显著提高。

存储器控制器100和半导体存储器装置200可以集成在诸如存储卡的单个半导体装置中。例如,存储器控制器100和半导体存储器装置200可以如此集成以形成个人计算机存储卡国际协会(pcmcia)的pc卡、标准闪存(cf)卡、智能媒体(sm)卡、记忆棒、多媒体卡(mmc)、尺寸减小的多媒体卡(rs-mmc)、微尺寸版的mmc(微型mmc)、安全数字(sd)卡、迷你安全数字(迷你sd)卡、微型安全数字(微型sd)卡、高容量安全数字(sdhc)和/或通用闪存(ufs)。

在另一实施例中,存储器系统10可以被设置为诸如以下的电子装置中的各种部件之一:计算机、超移动pc(umpc)、工作站、上网本计算机、个人数字助理(pda)、便携式计算机、网络平板pc、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(pmp)、便携式游戏装置、导航装置、黑盒、数码相机、数字多媒体广播(dmb)播放器、3维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心的存储装置、能够在无线环境中接收和传送信息的装置、射频识别(rfid)装置、以及家庭网络的各种电子装置之一、计算机网络的各种电子装置之一、远程信息处理网络的电子装置之一或计算系统的各种部件之一。

图2是示出根据本发明的实施例的存储器系统的详细框图。例如,图2的存储器系统可以描述图1中所示的存储器系统10。

参照图2,存储器系统10可以包括存储器控制器100和半导体存储器装置200。存储器系统10可以响应于来自主机装置的请求而进行操作,特别是存储待由主机装置访问的数据。

主机装置可以用各种种类的电子装置中的任一种来实施。在一些实施例中,主机装置可以包括诸如以下的电子装置:台式计算机、工作站、三维(3d)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、和/或数字视频记录器以及数字视频播放器。在一些实施例中,主机装置可以包括诸如以下的便携式电子装置:移动电话、智能电话、电子书、mp3播放器、便携式多媒体播放器(pmp)和/或便携式游戏机。

存储器装置200可以存储待由主机装置访问的数据。

存储器装置200可以用诸如动态随机存取存储器(dram)和/或静态随机存取存储器(sram)的易失性存储器装置或者诸如只读存储器(rom)、掩模rom(mrom)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、铁电随机存取存储器(fram)、相变ram(pram)、磁阻ram(mram)和/或电阻式ram(rram)的非易失性存储器装置来实现。

控制器100可以控制将数据存储在存储器装置200中。例如,控制器100可以响应于来自主机装置的请求控制存储器装置200。控制器100可以将从存储器装置200读取的数据提供给主机装置,并且可以将从主机装置提供的数据存储到存储器装置200中。

控制器100可以包括存储装置110、控制部件120、错误校正码(ecc)部件130、主机接口(i/f)140和存储器接口(i/f)150,它们通过总线160联接,其中控制部件120可以被实施为诸如中央处理单元(cpu)的处理器。

存储装置110可以用作存储器系统10和控制器100的工作存储器,并且存储用于驱动存储器系统10和控制器100的数据。当控制器100控制存储器装置200的操作时,存储装置110可以存储控制器100和存储器装置200用于诸如读取操作、写入操作、编程操作和擦除操作的操作的数据。

存储装置110可以用诸如静态随机存取存储器(sram)或动态随机存取存储器(dram)的易失性存储器来实施。如上所述,存储装置110可以将由主机装置使用的数据存储在存储器装置200中以用于读取操作和写入操作。为了存储数据,存储装置110可以包括编程存储器、数据存储器、写入缓冲器、读取缓冲器、映射缓冲器等。

控制部件120可以控制存储器系统10的一般操作,并且响应于来自主机装置的写入请求或读取请求来控制对存储器装置200的写入操作或读取操作。控制部件120可以驱动被称为闪存转换层(ftl)的固件,以控制存储器系统10的一般操作。例如,ftl可以执行诸如以下的操作:逻辑到物理(l2p)映射、损耗均衡、垃圾收集和/或坏块处理。l2p映射被称作逻辑块寻址(lba)。

ecc部件130可以在读取操作期间检测并校正从存储器装置200读取的数据中的错误。当错误位的数量大于或等于可校正错误位的阈值数量时,ecc部件130可以不校正错误位,而是可以输出指示校正错误位失败的错误校正失败信号。

在一些实施例中,ecc部件130可以基于诸如以下的编码调制执行错误校正操作:低密度奇偶校验(ldpc)码、博斯-查德胡里-霍昆格姆(bose-chaudhuri-hocquenghem,bch)码、turbo码、turbo乘积码(tpc)、里德-所罗门(reed-solomon,rs)码、卷积码、递归系统码(rsc)、网格编码调制(tcm)或分组编码调制(bcm)。因此,ecc部件130可以包括用于合适的错误校正操作的所有电路、系统或装置。

主机接口140可以通过诸如以下的各种接口协议中的一个或多个与主机装置通信:通用串行总线(usb)、多媒体卡(mmc)、高速外围组件互连(pci-e)、小型计算机系统接口(scsi)、串列scsi(sas)、串行高级技术附件(sata)、并行高级技术附件(pata)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)以及高速非易失性存储器(nvme)。

存储器接口150可以提供控制器100和存储器装置200之间的接口,以使控制器100响应于来自主机装置的请求控制存储器装置200。存储器接口150可以在cpu120的控制下生成用于存储器装置200的控制信号并处理数据。当存储器装置200是诸如nand闪速存储器的闪速存储器时,存储器接口150可以在cpu120的控制下生成用于存储器的控制信号并处理数据。

存储器装置200可以包括存储器单元阵列210、控制电路220、电压产生电路230、行解码器240、页面缓冲器250、列解码器260和输入/输出电路270,其中页面缓冲器250可以是页面缓冲器的阵列形式。存储器单元阵列210可以包括可存储数据的多个存储块211。电压产生电路230、行解码器240、页面缓冲器阵列250、列解码器260和输入/输出电路270可以形成用于存储器单元阵列210的外围电路。外围电路可以执行存储器单元阵列210的编程操作、读取操作或擦除操作。控制电路220可以控制外围电路。

电压产生电路230可以产生各种电平的操作电压。例如,在擦除操作中,电压产生电路230可以产生各种电平的操作电压,诸如擦除电压和通过电压。

行解码器240可以与电压产生电路230和多个存储块211电通信。行解码器240可以响应于由控制电路220生成的行地址radd而在多个存储块211之中选择至少一个存储块,并且将从电压产生电路230供应的操作电压传送到所选择存储块。

页面缓冲器250可以通过位线bl与存储器单元阵列210电通信(如图3中所示)。响应于由控制电路220生成的页面缓冲器控制信号,页面缓冲器250可以用正电压对位线bl预充电,在编程操作和读取操作中将数据传送到所选择存储块和从所选择存储块接收数据,或者临时存储所传送的数据。

列解码器260可以向页面缓冲器250传送数据和从页面缓冲器250接收数据,或者向输入/输出电路270传送数据/从输入/输出电路270接收数据。

输入/输出电路270可以向控制电路220传送从外部装置(例如,存储器控制器100)接收的命令和地址,通过输入/输出电路270,将来自外部装置的数据传递到列解码器260或者将来自列解码器260的数据传送到外部装置。

控制电路220可以响应于命令和地址来控制外围电路。

图3是示出根据本发明的实施例的半导体存储器装置的存储块的电路图。例如,图3的存储块可以是图2中所示的存储器单元阵列200的存储块211的任意一个。

参照图3,示例性存储块211可以包括联接至行解码器240的多个字线wl0至wln-1、漏极选择线dsl和源极选择线ssl。这些线可以并行布置,其中多个字线在dsl和ssl之间。

示例性存储块211可进一步包括分别联接到位线bl0至blm-1的多个单元串221。每列的单元串可以包括一个或多个漏极选择晶体管dst以及一个或多个源极选择晶体管sst。在所示实施例中,每个单元串具有一个dst和一个sst。在单元串中,多个存储器单元或存储器单元晶体管mc0至mcn-1可以串联联接在选择晶体管dst和sst之间。存储器单元中的每一个可以形成为存储多位数据信息的多层单元(mlc)。

每个单元串中的sst的源极可以联接到公共源极线csl,并且每个dst的漏极可以联接到相应的位线。单元串中的sst的栅极可以联接到ssl,并且单元串中的dst的栅极可以联接到dsl。遍及单元串的存储器单元的栅极可以联接到各个字线。也就是说,存储器单元mc0的栅极联接到相应的字线wl0,存储器单元mc1的栅极联接到相应的字线wl1,等等。联接到具体字线的一组存储器单元可以称为物理页面。因此,存储块211中的物理页面的数量可以对应于字线的数量。

页面缓冲器阵列250可以包括联接到位线bl0至blm-1的多个页面缓冲器251。页面缓冲器251可以响应于页面缓冲器控制信号而进行操作。例如,在读取操作或验证操作期间,页面缓冲器251可以临时存储通过位线bl0至blm-1接收的数据或者感测位线的电压或电流。

在一些实施例中,存储块211可以包括nand型闪速存储器单元。然而,存储块211不限于这种单元类型,而是可以包括nor型闪速存储器单元。存储器单元阵列210可以被实施为其中组合两种或更多种类型的存储器单元的混合闪速存储器或者控制器内置在存储器芯片内的1-nand闪速存储器。

图4是示出根据本发明的实施例的用于地址转换的存储器系统的示图。

参照图4,存储器系统可以包括控制器100和存储器装置200。控制器100可以包括地址映射表115和控制部件120。

控制部件120可以驱动被称作闪存转换层(ftl)125的固件,以控制存储器系统10的一般操作。在各个实施例中,ftl125可以执行诸如逻辑到物理(l2p)映射、损耗均衡、垃圾收集和/或坏块处理的操作。具体地,ftl125可以从图1的主机装置接收逻辑地址、参考地址映射表115执行l2p映射操作(即,逻辑块寻址(lba)或逻辑块映射)并且输出与逻辑地址相对应的物理地址。物理地址可以被提供至存储器装置200。

存储器装置200可以用闪速存储器装置,特别是nand型闪速存储器装置来实施。

如上所述,诸如基于闪存的固态驱动器(ssd)的存储器系统可能需要ftl125来提供逻辑块映射。这种需要是因为主机装置使用逻辑块地址(lba)(或逻辑地址)来寻址存储器装置200的不同页面,而ssd使用物理块地址(pba)(或物理地址)来寻址存储器装置200中的不同物理页面。ftl125提供lba和相应pba之间的映射以用于有效地服务命令(例如,读取或写入命令)。

对于大容量ssd,独特(unique)lba的数量较大并且使用针对整体驱动器存储与每一个lba相对应的pba的页面级映射方案需要存储大量的元数据。反过来,该元数据又需要过大的存储空间(例如包括图2的存储装置中的随机存取存储器(ram)),以提供足够的读取和写入性能。块级映射方案将具有连续的lba的一组页面存储在相同物理块中。这明显需要小的存储空间,然而在随机写入工作负载下,这会引起显著的耐用性问题。因此,需要一种提供良好性能并且具有低存储器需求的映射方案。

本发明的实施例提供一种将逻辑块地址映射到例如基于闪存的固态驱动器的存储器装置中的物理块地址的方案。相比于页面级映射方案,该映射方案具有较低的存储器需求。在各种实施例中,存储器装置的物理块可以被划分成两组。一组物理块可以使用块级映射,其具有等于存储器装置的逻辑容量的容量。另一组物理块可以使用页面级映射,其具有等于存储器装置的过度供应部分(overprovisioningportion)的容量。页面级映射可以利用哈希表来实施,这保持存储器需求较低。此外,可以通过将关键码(key)的第二哈希存储在存储器中来减小哈希表的大小。位映射可以存储在存储器中以指示存储器装置的存储任意给定lba的部分。

换句话说,存储器装置(例如,ssd)的所有物理块可以被动态划分成两组,一组是数据块并且另一组是日志块。混合映射方案可以用来将任意lba映射到其相应pba。具体地,存储器装置的数据块可以具有等于存储器装置的逻辑容量的容量并且使用块级映射方案。日志块可以由存储器装置的过度供应部分组成并且使用页面级映射方案。来自主机装置的写入首先被写入日志块中,并且在后台操作中日志块的页面被集合并且被写入数据块。在各个实施例中,用于日志块的页面级映射可以存储在具有开放寻址和罗宾汉(robin-hood)探测的哈希表中。该哈希表使用较小的ram空间,并且在随机工作负载的情况下提供良好的读取和写入性能。

图5是示出根据本发明的实施例的存储器装置,例如图4的存储器装置200的示图。

参照图5,存储器装置200可以包括多个物理块physicalblk1至physicalblkb。物理块中的每一个可以包括多个页面page1至pagep。物理块可以动态地划分成第一组或第一部分210和第二组或第二部分220。第一部分210(或数据块210)可以包括多个数据块datablk1至datablkd。第二部分220(或日志块220)可以包括多个日志块,其中多个日志块包括logblk1和logblk2。物理块的总数量可以为b并且块内的页面数量可以为p。b个物理块可以分成两组:d个数据块210和(b-d)个日志块220。

如图5所示,存储器装置200的逻辑容量为(d×p)个逻辑页面。例如,第一数据块datablk1存储对应于lba1至lbap的页面。第二数据块datablk2存储对应于lba(p+1)至lba(2×p)的页面。最后的数据块datablkd将与lba(d×p)相对应的页面存储在最后物理页面中。块级映射方案可以用来确定数据块210中的、与任意lba相对应的pba。

日志块220可以存储与任意lba相对应的页面。页面级映射方案可以用来将所有页面的lba到pba映射存储在日志块中。对于页面级映射方案,可以使用哈希表。

图6是示出根据本发明的实施例的地址映射表,例如图4所示的地址映射表115的示图。

参照图6,地址映射表115可以包括块级映射表115a和页面级映射表115b。块级映射表115a可以用于图5的数据块210。页面级映射表115b可以用于图5的日志块220。页面级映射表115b可以用哈希表来实施。虽然图6示出了地址映射表115包括两个映射表,但是地址映射表115可以用任意适当数量的映射表,例如单个映射表来实现。

再次参照图4,ftl125可以将地址映射表115存储为将数据和/或日志块索引转换到物理块索引并且将物理块索引转换到数据和/或日志块索引的映射表。与任意lbal相对应的用户数据可以在给定时间被存储在图5的数据块210中或者日志块220中。ftl125可以管理包括多个位的位映射,该位映射被称作脏位映射。在整个位映射中,lth位表示可以在数据块210中还是日志块220中找到用户数据。

图7是示出根据本发明的实施例的闪存转换层,例如图4的ftl125的示图。

参照图7,ftl125可以使用哈希表来保持存储在图5的日志块220中的所有页面的页面级映射。为了实现哈希表,ftl125可以执行哈希函数。通过哈希函数,ftl125可以生成哈希值value1至valuen。换句话说,ftl125可以接收逻辑地址(例如,la1至lam)中的任意一个来作为哈希函数的关键码,并且基于接收的关键码来执行哈希函数以生成哈希值。

在各个实施例中,对于顺序读取的工作负载,哈希函数可以与lbal的最小有效位一样简单,这增大了在哈希表中进行查找期间的高速命中率。可以设计其它哈希函数以使ftl125利用图2的控制部件120(例如处理器)中的任意高速缓冲层。哈希可以在单独的硬件模块中而不是在固件中进行哈希函数的计算,以减少命令处理延迟以及图2和图4的控制器100的功耗。

图8是示出根据本发明的实施例的页面级映射表,例如图6的页面级映射表115b的示图。

参照图8,页面级映射表115b可以是哈希表。哈希表可以用随机存储器存储器(ram)来实现。哈希表的通常使用链表的桶(bucket)来实现。然而,链表中的每一个条目需要存储指针来解决冲突。在存储器需求中,存储这些指针所需要的存储空间增加(例如,增加高达33%)以存储关键码和值。因此,用链表的桶来实现哈希表可以引起存储器需求的显著增加。

在各个实施例中,哈希表可以包括元素的阵列和各自的索引。如图7所示,索引可以对应于哈希函数的各个哈希值。元素中的每一个可以存储条目的关键码和值。任意条目的关键码和值可以分别是表示为l的lba和表示为p(l)的图5的日志块220内的相应pba。

给定任意元素(关键码=l,值=p(l)),则存储在该元素处的索引通过该元素的关键码的哈希函数来确定并且被表示为h(l)。由于哈希函数可以将多个lba(或la)映射到相同的索引,所以索引h(l)可能已与一个元素(关键码=l′,值=p(l′))相关联。换句话说,可能存在哈希冲突。为了解决哈希冲突,可以使用具有线性探测的开放寻址哈希表。根据具有线性探测的开放寻址方案,不是使用索引h(l)来访问阵列的元素,而是可以从索引h(l)+1开始顺序地访问阵列,直到找到空槽。可选地,可以使用罗宾汉探测方案,通过交换具有较低探测计数的条目以插入具有较高探测计数的元素,来限制在最坏情况下的探测次数。

需要存储在哈希表中的条目的最大数量可以等于图5的日志块220中的页面数量,即(b-d)×p。因此,哈希表的大小有上限并且在运行时间不需要动态地增长。哈希表可以实现为(b-d)×p×o大小的阵列。o表示开销并且可以根据可用的存储器(例如,ram)以及在哈希表中的查找/插入任意条目所需要的探测器的分布而被选择为在1和2之间。更高的o值可以使探测次数减少,但是增加用于哈希表的存储器需求。

在各个实施例中,可以进一步减少存储器(即,ram)需求。可以通过注意到不需要将关键码(即,lbal)存储在哈希表(即,ram)中来实现进一步减少存储器需求。相反,可以从存储器装置中的页面(例如,nand页面)的元数据读取关键码,其中关键码已经被存储在存储器装置中,以用于帮助重建逻辑地址和物理地址之间的逻辑到物理(l2p)表。由于关键码的大小大致等于值的大小,因此这表示显著减少了哈希表的ram需求。然而,在本方案中,在没有nand读取的情况下,不能解决哈希表中的任何冲突。因此,可以将大小较小的lba的第二哈希存储在哈希表中,以便使读取多个nand页面以恢复单个用户数据的可能性低于任何需求,而哈希表的大小仍非常小。该方案中的哈希表称为部分哈希表。

图9是示出根据本发明的实施例的存储器系统的操作的流程图。例如,图9的操作可以由图4中的存储器系统的控制器100(即,图4中的控制部件120的ftl125)来执行。

参照图9,在步骤910,控制器100可以将包括在存储器装置200中的多个物理块划分成多个数据块和多个日志块。在各个实施例中,可以基于存储器装置200的逻辑容量来确定多个数据块,并且可以基于存储器装置200的过度供应部分来确定多个日志块。进一步地,控制器100可以生成包括与多个逻辑地址相对应的多个位的位映射。每一个位可以指示相应逻辑地址属于数据块还是日志块。

在步骤920,控制器100可以使用如图6所示的包括块级映射表115a和页面级映射表115b的哈希表115,基于块级映射方案或页面级映射方案来将逻辑地址转换成物理地址。

在步骤930中,控制器100可以基于转换后的物理地址执行读取和/或写入操作。换句话说,控制器100可以控制存储器装置200对存储器装置200的、与转换后的物理地址相对应的页面执行读取和/或写入操作。

虽然未在图9中示出,但是控制器100可以执行除了读取和写入操作之外的操作,例如擦除操作和诸如垃圾收集的后台操作。

再次参照图4,基于闪存的固态驱动器(ssd)的存储器系统需要控制器100的闪存转换层(ftl)125来提供由主机使用的逻辑地址与存储器装置200(例如,nand)中包括的所有物理页面的物理地址之间的映射。为了确保用于ftl125的映射表需要小的存储空间,可以使用混合映射,在混合映射中存储器装置200的两个不同部分在地址转换中使用两种不同粒度(granularities)级别。具体地,如图5和图6所示,数据块210使用块级地址转换,而日志块220使用页面级地址转换。然而,这种方案受高写入放大(wa)影响,这严重降低存储器系统的耐用性。写入放大表示nand写入(即,写入存储器装置的数据)与主机写入(即,由主机写入的数据)的比率。大的wa值显著降低存储器系统的使用寿命。因此,需要提供一种垃圾收集方案以减小存储器系统,诸如使用混合映射的基于闪存的固态驱动器(ssd)的wa。本公开的实施例提供了一种对利用混合映射的存储器系统执行垃圾收集的方案。

当如图5所示在ftl125中使用混合映射时,数据块210可以按照页面的lba(或逻辑地址)的顺序存储页面。日志块220中的页面相对于页面的lba而不具有任何特定顺序。块级映射提供用于存储在数据块210中的页面的地址转换,并且页面级映射提供用于存储在日志块220中的页面的地址转换。为了这些地址转换,映射表115a和115b可以存储在存储装置110中。进一步地,诸如位映射的数据结构也可以存储在存储装置110中,以确定与任意给定的lba相对应的页面当前被存储在数据块210中还是日志块220中。当页面被存储在日志块220中的一个中时,其lba可以被称作脏(dirty)。换句话说,与脏页面相对应的逻辑地址的数据被存储在日志块220中。

图10是示意性示出根据本发明的实施例的存储器系统的垃圾收集操作1000的流程图。例如,图10的操作可以由图4的存储器系统的控制器100(即,图4中的控制部件120的ftl125)来执行。

参照图10,在步骤1010中,控制器100可以从主机装置接收数据和数据的逻辑地址。在步骤1020中,控制器100可以将数据写入在图5的日志块220的开放日志块的页面中。日志块220可以一直保持开放并且可以在日志块220中执行来自主机装置的写入。当开放日志块被完全编程时,可以开始垃圾收集进程。换句话说,当开放日志块已满时,在步骤1020中,控制器100可以执行垃圾收集。在各个实施例中,可以根据图11和图12的流程来执行垃圾收集。

图11是示出根据本发明的实施例的存储器系统的垃圾收集操作1100的流程图。例如,图11的操作1100可以由图4的存储器系统的控制器100(即,图4中的控制部件120的ftl125)来执行。

参照图11,在步骤1110中,控制器100可以从主机装置接收数据和数据的逻辑地址。在步骤1120中,控制器100可以将数据写入在图5的多个日志块220之中的开放日志块的页面中。在步骤1130中,当开放日志块已满时,控制器100可以在多个数据块之中选择具有最大脏页面数量的数据块,并且在多个日志块之中选择具有最大无效页面数量的日志块。无效页面可以包括数据被从相应日志块复制到与被复制数据的逻辑地址相对应的数据块的页面。有效页面可以包括数据未被从相应日志块复制到数据块210的页面。与脏页面相对应的逻辑地址的数据可以存储在多个日志块220之中的未满的任意开放日志块中。

在步骤1140中,控制器100可以对所选择数据块和所选择日志块执行垃圾收集。

控制器100可以对数据块执行如下的垃圾收集操作。

控制器100可以在图5的数据块210之中选择具有最大脏页面数量的数据块作为牺牲块。当数据块为υ时,数据块υ可以存储(υ×p+1)和(υ+1)之间的lba。对于在该范围内的lbal,可以将来自相应物理地址的数据复制到空块中。具体地,第一,与数据块v的lba相对应的数据可以存储在数据块v或特定日志块中。可以利用关键码l通过查找在图8的哈希表115b来找到该特定日志块。可以从数据块v复制在位映射中被标记为“假”的lba。可以从该特定日志块的物理地址p(l)复制在位映射中标记为“真”的lba。第二,可以在位映射中将特定日志块的lba标记为“假”,并且可以删除哈希表115b中的相应元素。第三,与物理地址p(l)相对应的日志块的无效页面计数值可以增加1。第四,在复制了所有lba之后,可以针对数据块v,更新数据到物理块索引映射。最后,作为牺牲块的数据块v可以被擦除并且可以被添加到空块池中。

控制器100可以对日志块执行如下的垃圾收集操作。

第一,控制器100可以在图5的日志块220之中选择具有最大无效页面数量的日志块作为牺牲块。第二,当牺牲块为v时,可以将日志块v中的有效页面复制到空块。第三,可以通过它们的新物理地址来更新图8的哈希表115b中的相应元素。最后,牺牲块v可以被擦除并且被添加到空块池中。因此,在每次垃圾收集进程中可以刷新(refresh)单个数据块和单个日志块。

图12是示出根据本发明的实施例的存储器系统的垃圾收集操作1200的流程图。例如,图12的操作1200可以由图4的存储器系统的控制器100(即,图4中的控制部件120的ftl125)来执行。

参照图12,在步骤1210中,控制器100可以从主机装置接收数据和数据的逻辑地址。在步骤1220中,控制器100可以将数据写入图5的多个日志块之中的开放日志块中。在步骤1230,当开放日志块已满时,控制器100可以在多个日志块之中识别日志块,并且在多个数据块之中识别数据块。

在步骤1240中,控制器100可以基于所识别数据块中的脏页面数量和所识别日志块中的无效页面数量,在所识别日志块和所识别数据块之中选择一个块作为牺牲块。

在各个实施例中,控制器100可以确定所识别数据块中的脏页面数量与所识别日志块中的无效页面数量的比率r,并且将比率r与阈值f进行比较。当比率r大于阈值f时,控制器100可以选择所识别数据块作为牺牲块。换句话说,如果比率r大于阈值f,则可以执行一个数据块刷新操作并且可以再次计算比率r。重复这些步骤直到比率r小于阈值f。

当比率r小于或等于阈值f时,控制器100可以选择所识别日志块作为牺牲块。可以使用离线模拟来确定阈值f的最优值。

在步骤1250中,控制器100可以对作为牺牲块的所选择块执行垃圾收集。可以通过垃圾收集操作来刷新牺牲块。该操作对于数据块和日志块是不同的。

为了刷新数据块v,第一,可以选择具有最大脏页面数量的数据块v作为牺牲块并且可以选择空块作为目标块。与数据块v相对应的页面可以具有包括l、l+1、l+2、……、l+p-1的lba,其中p为块中页面的数量。第二,根据相应lba是否为脏,可以将与这些lba相对应的页面顺序地从特定日志块或牺牲块v复制到目标块中。可以从数据块v复制位映射中被标记为“假”的lba。可以从特定日志块的物理地址p(l)复制在位映射中被标记为“真”的lba。第三,在相应日志块中,将从日志块复制的页面标记为无效页面。第四,一旦所有页面被复制,指向牺牲块的逻辑指针可被更新为指向目标块。最后,牺牲块可以被擦除并且被添加到空块池。

为了刷新日志块,第一,可以选择具有最大无效页面数量的日志块作为牺牲块并且可以选择空块作为目标块。第二,可以将有效页面从牺牲块复制到目标块。而且,可以相应地修改日志块的地址转换数据结构。最后,牺牲块可以被擦除并且可以被添加到空块池。目标块中的剩余空间可以用于主机装置的未来写入请求。

图13是示出根据本发明的实施例的存储器系统的垃圾收集操作1300的流程图。例如,图13的操作1300可以由图4中的存储器系统的控制器100(即,图4中的控制部件的ftl125)来执行。

参照图13,在步骤1310中,控制器100可以从主机装置接收数据和数据的逻辑地址。在步骤1320中,控制器100可以将数据写入在图5的多个日志块220之中的开放日志块的页面中。

在步骤1330中,控制器100可以确定开放日志块是否已满。当确定开放日志块未满(在步骤1330为否)时,控制器100可以结束操作1300。

当确定开放日志块已满(在步骤1330为是)时,在步骤1340中,控制器100可以在多个日志块之中识别日志块,并且在多个数据块之中识别数据块。而且,控制器100可以确定所识别数据块中的脏页面数量与所识别日志块中的无效页面数量的比率r。在步骤1350中,控制器100可以将比率r与阈值f进行比较。可以使用离线模拟来确定阈值f的最优值。

当确定比率r大于阈值f(在步骤1350为是)时,在步骤1360中,控制器100可以选择所识别数据块作为牺牲块。而且,控制器100可以对作为牺牲块的所选择数据块执行垃圾收集。然后,控制器100可以进行到步骤1340。换句话说,如果比率r大于阈值f,则可以执行一次数据块刷新操作并且再次计算比率r。重复这些步骤直到比率r小于阈值f。

当确定比率r小于或等于阈值f(在步骤1350为否)时,在步骤1370中,控制器100可以选择所识别逻辑块作为牺牲块。而且,对作为牺牲块的所选择日志块执行垃圾收集。然后,控制器100可以结束操作1300。

如上所述,根据图12和图13的垃圾收集方案,可以刷新多个数据块(即,零个或多个数据块)并且然后可以刷新单个日志块。被刷新的数据块的数量可以是自适应的并且可以取决于任意数据块中的脏页面的最大数量、任意日志块中的无效页面的最大数量以及阈值f。

下面的表1示出了用于作为根据实施例的存储器系统的固态驱动器的各种过度供应的垃圾收集(gc)方案的写入放大(wa)。gc方案1对应于图11的实施例,并且gc方案2对应于图12的实施例。假设是对16gib驱动器的随机4kib写入请求,其中16gib驱动器具有页面大小4kib和p=4096个页面/块。在离线模拟中使用网格搜索以数字方式来确定阈值f的最优值。最后一列表示gc方案2相对于gc方案1的改进。

表1

如前所述,本发明的实施例提供了一种用于混合地址映射的垃圾收集方案。虽然实施例示出了执行用于数据块的垃圾收集操作,并且然后执行用于日志块的垃圾收集操作,但是本发明包括确定应该何时以及以何种顺序执行垃圾收集的其它实施例。而且,本发明扩展到数据块使用除块级以外的级别的地址转换的实施例。

虽然为了清楚和理解的目的已经稍为详细地描述了前述实施例,但是本发明不限于提供的细节。如本领域技术人员根据前述公开将理解的是,存在实施本发明的许多替代方案。因此所公开的实施例是说明性的,而非限制性的。本发明旨在包含落入权利要求范围内的所有修改方案和替代方案。

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