提高重建效率的存储器系统和操作方法与流程

文档序号:11215846阅读:440来源:国知局
提高重建效率的存储器系统和操作方法与流程

相关申请的交叉引用

本申请要求于2016年3月28日提交的申请号为15/082,990的美国专利申请的权益,其全部内容通过引用并入本文。

本公开的示例性实施例涉及一种存储器系统及其操作方法。



背景技术:

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

由于使用存储器装置的数据存储装置不具有活动部件,所以它们提供优良的稳定性、持久性、高信息存取速度以及低功耗。具有这样的优点的数据存储装置的示例包括通用串行总线(usb)存储器装置、具有各种接口的存储卡以及固态驱动器(ssd)。



技术实现要素:

本发明的方面包括存储器系统。该系统可以包括:存储器装置,其包括多个封闭超级块和开放超级块;逻辑块寻址(lba)表,其包括多个区段;以及控制器,其适用于:在断电后,确定lba表的最多最近保存区段、lba表的最多最近保存区段之前保存的先前区段以及lba表的最少最近保存区段,读取开放超级块并且更新lba表中从最多最近保存区段至最少最近保存区段的条目,读取多个超级块中最新的封闭超级块并且更新lba表中从最多最近保存区段之前保存的先前区段至至少最近保存区段的条目,以及读取最旧的超级块并且更新最少最近保存区段中的lba表中的条目。

本发明的进一步的方面包括方法。该方法可以包括:在断电后,确定逻辑块寻址(lba)表的最多最近保存区段、lba表的最多最近保存区段之前保存的先前区段以及lba表的最少最近保存区段;读取开放超级块并且更新lba表中从最多最近保存区段至最少最近保存区段的条目;读取多个封闭超级块中最新的封闭超级块,并且更新lba表中从最多最近保存区段之前保存的先前区段至最少最近保存区段的条目;以及读取最旧的超级块,并且更新最少最近保存区段中的lba表中的条目。

附图说明

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

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

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

图4是示出根据本发明的实施例的存储器控制器的控制单元的简图。

图5是根据本发明的方面的存储器系统的简图。

图6是根据本发明的方面的用于重建lba表的方法的步骤的流程图。

图7是示出根据本发明的方面的lba表和存储器阵列的简图。

图8是根据本发明的方面的使用位图重建lba表的方法的步骤的流程图。

图9是根据本发明的方面的位图的简图。

图10是根据本发明的方面的lba表和位图缓冲区的简图。

具体实施方式

下面将参考附图更加详细地描述各种实施例。然而,本发明可以不同的形式呈现且不应被解释为限于在本文中提出的实施例。而是,这些实施例被提供使得本公开将是彻底且完整的,并且将向本领域技术人员充分地传达本发明的范围。在整个公开中,相似的参考数字在本发明的各种附图和实施例中是指相似部件。

本发明能够以多种方式实现,包括作为工艺、设备、系统、物质的组成物、在计算机可读存储介质上呈现的计算机程序产品和/或处理器,诸如适用于执行存储在联接至处理器的存储器上和/或由联接至处理器的存储器提供的指令的处理器。在本说明书中,本发明可以采取的这些实施例或任意其它形式可以称作技术。一般地,公开的工艺的步骤的顺序可以在本发明的范围内变动。除非另有说明,否则描述为适用于执行任务的诸如处理器或者存储器的组件可以被实施为暂时地适用于在给定时间执行任务的通用组件或被制造成执行该任务的特定组件。如在本文中使用的,术语“处理器”是指适用于处理诸如计算机程序指令的数据的一个以上装置、电路和/或处理核心。

下面连同说明本发明的原理的附图一起提供本发明的一个以上实施例的详细说明。结合这些实施例来描述本发明,但本发明不限于任意实施例。本发明的范围仅由权利要求限定,并且本发明包括多个变型例、修改例和等同例。在下列说明中,陈述了许多具体细节,以提供本发明的透彻理解。以示例的目的提供这些细节,并且可以根据权利要求而在没有这些具体细节中的一部分或全部的情况下实施本发明。为了清楚的目的,不再详细描述与本发明相关的技术领域中已知的技术材料,以使本发明不会被不必要地模糊。

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

参考图1,存储器系统10可以包括存储器控制器100和半导体存储器装置200。

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

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

存储器控制器100和半导体存储器装置200可以集成在单个半导体装置中。例如,存储器控制器100和半导体存储器装置200可以集成在诸如固态驱动器(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可以包括通过总线160联接的存储单元110、控制单元120、错误纠正码(ecc)单元130、主机接口140和存储器接口150。

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

存储单元110可以利用易失性存储器来实现。存储单元110可以利用静态随机存取存储器(sram)或动态随机存取存储器(dram)来实现。如上所说,存储单元110可在存储器装置200中存储被主机装置用于读取和写入操作的数据。为了存储数据,存储单元110可包括程序存储器、数据存储器、写入缓冲器、读取缓冲器、映射缓冲器等。

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

ecc单元130可以检测和纠正读取操作期间从存储器装置200读取的数据中的错误。当错误位的数量大于或等于可纠正错误位的阈值数量时,ecc单元130可以不纠正错误位,并且可以输出表示纠正错误位失败的错误纠正失败信号。

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

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

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

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

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

行解码器240可以连接到电压生成电路230和多个存储块211。行解码器240可以响应于控制电路220生成的行地址radd选择多个存储块211中的至少一个存储块,并且将电压生成电路230供应的操作电压传输至多个存储块211中选定的存储块。

页面缓冲器250通过位线bl(未示出)连接到存储单元阵列210。页面缓冲器250可以响应于控制电路220生成的页面缓冲器控制信号利用正电压预先充电位线bl、在编程和读取操作中向选定的存储块传输数据/从选定的存储块接收数据或者暂时地存储传输的数据。

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

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

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

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

参考图3,存储块211可以包括分别地联接至位线bl0-blm-1的多个单元字符串221。每个列的单元字符串可以包括一个以上漏极选择晶体管dst和一个以上源极选择晶体管sst。多个存储单元或者存储单元晶体管可以串联在选择晶体管dst和sst之间。存储单元mc0-mcn-1中的每个可以由在每个单元中存储多位数据信息的多层单元(mlc)形成。单元字符串221可以分别地电联接至对应的位线bl0-blm-1。

在一些实施例中,存储块211可以包括nand型闪速存储单元。然而,存储块211不限于nand闪速存储器,而是可以包括nor型闪速存储器、其中两种以上类型的存储单元组合的混合闪速存储器和其中控制器内置在存储器芯片中的1-nand闪速存储器。

图4是示出根据本发明的实施例的存储器控制器的控制单元的简图。例如,图4的控制单元可以描述图2中的控制器100的控制单元120。

参考图4,控制器100的控制单元120可以通过接口(例如,图2的存储器接口150)联接至包括多个超级块的存储器装置200。

控制单元120可以包括逻辑块寻址(lba)表410、信息存储单元420、重建单元430和碎片收集(gc)单元440。lba表410可以是从逻辑块地址(lba)到为闪存转换层(ftl)的一部分的物理地址的映射表。重建单元430可以被配置为基于spor期间的信息重建lba表410。gc单元440可以在spor期间执行任何需要的碎片收集操作。应注意,图4仅示出控制单元120包括用于spor相关操作的元件。

不同于硬盘,诸如闪速存储器的存储器装置的“写入前擦除”限制要求系统软件的称为闪存转换层(ftl)的特定层模拟用于反向兼容性的块装置接口。文件系统和应用可以像使用硬盘一样地使用闪速存储器。称作逻辑块寻址(lba)的逻辑到物理(l2p)映射系统是ftl的部分。

由于ftl或者lba的表(以下称为lba表)可以存储在为易失性存储器的动态随机存取存储器(dram)中,当发生突然断电时,lba表将丢失,导致数据丢失。为防止数据丢失,当通电时,固件必须能够重建最新的表。频繁地向存储器装置(例如,nand闪速存储器)写入lba表将导致显著的写入性能退化。为了限制性能退化,如何执行快速的突然断电恢复(spor)是重要且困难的任务。

本文公开的实施例和示例改善存储器系统(例如固态驱动器(ssd))的性能,并且尤其改善了总的spor时间(例如,减少突然断电后存储器系统电力恢复和主机能够开始向存储器系统写入之间的时间量)。

spor过程期间,执行逻辑块地址(lba)表的重建和任何需要的碎片收集(gc)两者。本文公开的实施例包括减少在通电时需要从存储器装置(例如,nand闪速存储器)读取的超级块的数量并促进碎片收集性能的方法、系统、过程和装置。

接下来参考图5,示出系统50的简图。系统50包括dram500和存储器502。装置500包括lba表510、dram位图存储器550和断电电容器570。在本文描述的示例中,装置500可以容纳在易失性存储器(例如,dram)上,使得在突然断电时,lba表510要求重建。dram位图存储器550可以构造为用于存储对应于存储在存储器502上的每个超级块的位图。断电电容器570被构造为存储足够的电力,使得在断电时,有充分的时间向存储器502的存储器位图存储器560转移dram位图存储器的内容(和/或其它的操作)。

在其它组件中,存储器502包括:当封闭时每个超级块可以包括元页面mp的多个超级块、用于主机写入的开放块530、用于碎片收集(gc)的开放块540等。存储器502可以是实现为ssd的nand存储器,或者本领域技术人员从本文的描述中将理解的其它类型的适合的存储器。存储器还包括被配置成存储对应于存储器502的超级块的位图的存储器位图存储器560,并且位图存储器560可以被配置成接收存储在dram位图存储器550中的位图。

在突然断电时,lba表510上的数据将丢失,并且需要重建。以前的重建程序或者spor过程需要耗时的步骤,诸如需要硬件(例如,存储器502)通过从之前的签名扫描读取每个有效块而访问以读取每个超级块并识别封闭块和开放块。可能还需要有效块的冒泡排序,这也是耗时的。

同样地,之前的方法涉及以循环方式周期性地保存lba表的区段和当前“脏”超级块的列表。(脏超级块是包含至少一个lba的超级块,其中,lba表中lba的对应的条目不是最新的,即脏的)。在突然断电后重建期间,保存的lba表重载到dram中,并且包括任意开放超级块的脏超级块的元页面如在正常重建中那样重演。

从重建速度的角度,此方案已经非常有效率。将保存的lba表重载到dram中是不能避免的固定成本,因为该步骤甚至在驱动器的正常通电(例如,请求的驱动器电源休眠之后通电)时也是需要的。因此,缩短重建时间的一个方法是减少扫描脏超级块的元页面和更新lba表中的对应条目所花费的时间量。事实上,后者是主要的瓶颈,因为lba表中的条目的更新是公知的缓慢的dram中的随机访问操作。

为了减少扫描和更新时间,一种简单的方法是具有较少数量的脏超级块。然而,较少的脏超级块意味着在运行时需要更频繁地保存lba表的区段,这会影响驱动性能。此外,可能需要更多的系统块来存储保存的lba表,这意味着较少的空用户数据块可用于预留空间,因此提高了写入放大率并最终导致驱动器的tbd(总写入字节)下降。因此,减少需要扫描的脏超级块的数量需要付出代价,并且最佳数量的选择应当平衡重建时间、驱动性能和驱动耐力。

因此,本文公开的方法、系统、过程和装置寻求改善突然断电后的恢复时间。

图6是重建lba表的步骤的流程图60。图7是lba表700和存储器阵列702的简图。在本文(通过图6至图13)所示的示例中,出于描述的目的使用了128个区段的lba表。同样地,下列参数也用于示例的目的:

每驱动器的超级块数量=4096

每超级块的模片(die)数量=32

每超级块的物理块数量=64(双平面)

每物理块的页面的数量=256

页面大小=16kb

逻辑页面大小=4kb

每页面的逻辑页面的数量=4

这些参数和大小是示例性的而不是排外性的。本领域技术人员从本文的公开中将想到其它适合实施本发明的参数、大小等。

参考图6和图7,在块600中,至少确定最多最近保存区段、最多最近保存区段之前保存的先前区段以及断电起lba表700的最少最近保存区段。

在图7中,lba表700遵循循环方案,虽然这用于说明而不意在将本发明限制于此方案。换言之,当最后区段被保存时,随后使用第一区段。在以128个区段示出的示例中,区段128是“最后”区段,并且区段1是“第一区段”。示出断电704发生在区段3被保存之后,区段4被保存之前。因此,在示例中,区段3将是最多最近保存区段、区段2将是最多最近保存区段之前保存的先前区段,并且区段4将是lba表700的最少最近保存区段。

每个区段可以对应于超级块,诸如存储器阵列702中的超级块。每当超级块封闭时,lba表700的一个区段可以被保存至存储器502。因此,在示例中,在任意给定的时间,存在128个脏超级块。n用于表示最新的封闭超级块。

在步骤602中,读取开放超级块,并且从最多最近保存区段通过最少最近保存区段更新lba表中的对应于开放超级块的条目。因此,参考存储器阵列702,读取开放超级块,并且从区段3(最多最近保存区段)通过区段4(最少最近保存区段)更新lba表中的条目。换言之,更新区段3,然后更新区段2,然后更新区段1,然后更新区段128,以此类推,直到更新区段4。

在步骤604中,读取最新的封闭超级块,并且从最多最近保存区段之前保存的先前区段通过最少最近保存区段更新lba表中对应于最新的封闭超级块的条目。因此,参考图7,将读取封闭超级块n,并且更新从lba表700的区段2(最多最近保存区段即区段3之前保存的先前区段)通过lba表700的区段4(最少最近保存区段)的条目。

在步骤606中,读取最旧的封闭超级块,并且更新lba表中对应于最少最近保存区段中的最旧的封闭超级块的条目。因此,参考图7,读取封闭超级块n-126,并且更新区段4(lba表700的最少最近保存区段)。

图6描述的方法不限于阐明的步骤。例如,可以对每个封闭超级块进行相似的步骤。这些方法可以包括诸如下列的步骤:

对于超级块n,需要更新除了lba表700的区段3中的条目以外的所有对应的条目。

对于超级块n-1,需要更新除了lba表700的区段2和区段3中的条目以外的所有对应的条目。

对于超级块n-2,需要更新除了lba表700的区段1、区段2和区段3中的条目以外的所有对应的条目。

对于超级块n-3,需要更新除了lba表700的区段1、区段2、区段3和区段128中的条目以外的所有对应的条目。

对于超级块n-4,需要更新除了lba表700的区段1、区段2、区段3、区段127和区段128中的条目以外的所有对应的条目。

……

对于超级块n-124,除了lba表700的区段4、区段5和区段6中的条目以外的所有对应的条目不需要更新。

对于超级块n-125,除了lba表700的区段4和区段5中的条目以外的所有对应的条目不需要更新。

对于超级块n-126,除了lba表700的区段4中的条目以外的所有对应的条目不需要更新。

本质上,此方法利用属于lba表700的在脏超级块已经封闭之后保存的区段中的任意对应的条目包含该脏超级块中对应的逻辑页面的物理地址。因此,不需要更新这样的条目。(然而,注意,这不意味着该条目是清洁的,因为lba可能在随后的脏超级块中再次重写)。

对于纯随机写入工作量,每个脏超级块中的lba可以在整个lba范围内均匀分布。因此,对于上述断电情形下的1tb驱动器,需要更新的平均条目数量=64x256x4x(127+126+…+1)/128=4161536。这等于减少了50%的更新。事实上,这样的显著减少适用于任意驱动器容量和任意数量的脏超级块。(如果在开放超级块中存在有效的逻辑页面,则该减少量将稍小于50%)。

另一方面,如果工作量不是纯随机的,每个突然断电保存的更新总量将为随机数量。然而,多次突然断电个例平均保存的更新量仍然为50%,因为突然断电在lba表700的128个区段中的任一个被保存之后发生的可能性是相等的。换言之,保存量显示出平均值50%和非零方差的统计分布。对于纯随机工作量,平均值为50%和零方差。因此,每个突然断电个例的保存量也是50%。依赖工作量的方差能够由模拟确定。

为了实施此方法,需要的唯一额外信息是了解突然断电发生之前lba表700的哪个区段被最后保存至存储器。区段数量然后能够在断电电容器570设置的时间跨度内保存至存储器中的系统区域。

接下来参考图8、图9和图10,示出使用位图重建lba表的方法、系统、过程和装置。图8是使用位图重建lba表的步骤的流程图80。图9是示例位图的简图。图10是lba表1000和位图缓冲区1002的简图,位图缓冲区1002存储为环形缓冲区。

在步骤800中,生成并存储每个脏超级块的位图。位图可以存储在例如dram位图存储器550、存储器位图存储器560等中。在步骤802中,每当lba表被更新时都更新适当的位图。

每个位图900可以指示对应的脏超级块中的逻辑页面是否有效。因此,每当在正常写入或者修正操作期间更新lba表1000时,也更新适当的位图。例如,位图900示出脏超级块的8kb位图。每位的值与对应于该位的逻辑页面是否有效一致。

在步骤804中,当发生突然断电时,位图被保存至非易失性存储器。例如,位图可以在dram位图存储器550上保存并更新,但是,当突然断电时,位图在断电电容器570允许的时间内从dram位图存储器550转移(例如,保存)至存储器位图存储器560。

因此,在步骤806中,位图可以载入dram,并且在步骤808中,扫描每个脏超级块的位图和元页面,同时确定对应于有效的逻辑地址的lba,以更新这些lba。

利用增加的位图,现在可以排除对lba表1000不必要的更新。重建期间,lba表1000和位图可以首先载入dram中。然后,一起扫描每个脏超级块的位图和元页面,并且仅考虑更新对应于有效的逻辑页面的lba。这确保了最多更新lba表1000中的对应于未修正lba的条目一次,而那些对应于修正的lba的条目不再被更新。与之相反,在没有位图的情况下,未修正lba的条目能够被更新多次,而关于修正的lba的信息在突然断电后丢失。本质上,相比于没有位图的情形,提供位图时,在脏超级块中存在的无效的逻辑页面越多则更新减少得越多。

对于给定数量的脏超级块,脏超级块中无效的逻辑页面的数量是预留空间和工作量类型的函数。预留空间量越多,存在于脏超级块中的无效的逻辑页面越多。类似地,随着对应于热数据的lba更频繁地在脏超级块中覆写,工作量中存在的热数据越多,则脏超级块中存在的无效的逻辑页面越多。例如,如果在128个脏超级块中存在5%的无效的逻辑页面,则相比于原始重演机制,更新的整体减少将为52.5%。

位图的添加提供了另一个非常重要的优点:元页面重演的顺序可以改变。由于仅考虑更新对应于有效的逻辑页面的lba,因此不可能利用旧逻辑页面的物理地址覆写lba表的条目,即使元页面以随机顺序重演。事实证明,最好的重演顺序是以逻辑页面写入的完全相反的顺序重演元页面,即,首先扫描开放超级块中的元数据,随后扫描最多最近封闭脏超级块中的元页面,然后扫描第二近封闭脏超级块中的元页面等等。继续上面的示例,如果首先完成开放超级块的更新,将保证lba表1000的区段3是清洁的,因为根据在前面部分描述的趋势该区段不再需要被更新。相似地,一旦最近(最新)封闭脏超级块的更新完成,lba表700、1000的区段2被保证是清洁的,因为该区段不再需要被更新。对剩余的脏超级块重复同样的模式。本质上,在每个脏超级块的更新完成之后,lba表700、1000的额外区段变成清洁的。

由于lba表700、1000随着更新进行而变得部分清洁,现在在更新已经完全地完成之前主机读取和写入命令能被“即时(on-the-fly)”接受。这对缩短开机等待时间的用户体验是重要的。更具体地,在脏超级块的子集更新完成之后,控制器能够开始接受主机读取和写入命令。如果主机读取或写入命令指向lba表700、1000的清洁区段,则命令将立即执行。否则,执行将延迟直到lba表的该区段变为清洁的。因此,要处理的脏超级块的初始数量应当基于主机读取或写入命令指向lba表的脏区段时将遇到的最大延迟来选择。该数量将是小的,因为当元页面以相反顺序重演时,超级块需要的平均更新数量减少。

在一个示例中,每个位图需要8kb的dram,由于每个超级块存在64x256x4=65536个逻辑页面并且每个逻辑页面使用1位。因此,如果有128个位图,则需要1mb的dram。1mb的dram能够被实施为环形缓冲区1002,因为存储器空间在完成1圈保存之后可被重新使用。另外,1mb的数据精确占用1条系统区域超级块,并且需要1.4ms来编码。对于f16mlcnand,编程时间不超过3ms。因此,发生突然断电之后保存至nand所需的总时间最好在超级电容器570提供的扩展电源的20ms内。当发生突然断电时,开放超级块的元页面也能够保存至系统区域。这避免了重建期间每个逻辑页面的元数据的扫描并且进一步缩短了重建时间。

虽然为了清楚理解的目的而详细描述了前面的实施例,但本发明不限于这些提供的细节。存在很多实施本发明的替换方式。公开的实施例是说明性的而不是限制性。

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