用于使用可变大小快闪转变层的方法及设备的制作方法

文档序号:6623814阅读:381来源:国知局
用于使用可变大小快闪转变层的方法及设备的制作方法
【专利摘要】本发明揭示用于使用可变大小快闪转变层的方法及设备。步骤(A)接收从非易失性存储器读取对应于逻辑块地址的数据的读取请求。步骤(B)读取映射的特定条目以获得:(i)所述非易失性存储器的特定页的物理地址,(ii)所述特定页中到先前存储的经压缩数据的偏移,及(iii)所述经压缩数据的长度。所述特定条目与所述逻辑块地址相关联。步骤(C)将所述偏移及所述长度转换为:(i)所述特定页中的给定读取单元的地址,及(ii)待读取的所述读取单元的数目。步骤(D)从所述特定页读取从所述给定读取单元开始的至多所述数目个所述读取单元。偏移及长度粒度比一个读取单元精细。
【专利说明】用于使用可变大小快闪转变层的方法及设备
[0001]相关申请案交叉参考
[0002]本申请案涉及2013年10月9日申请的第61/888,681号美国临时申请案、2013年8月16日申请的第61/866,672号美国临时申请案及2013年I月22日申请的第61/755,169号美国临时申请案,所述临时申请案特此以全文引用的方式并入本文。
[0003]本申请案涉及2011年3月21日申请的序列号为13/053,175的美国申请案,其涉及2010年3月22日申请的第61/316,373号美国临时申请案,所述申请案中的每一者特此以全文引用的方式并入本文。
[0004]本申请案还涉及具有国际 申请日期:2012年10月4日的国际申请案PCT/US2012/058583,其主张2011年10月5日申请的第61/543,707号美国临时申请案的权益,所述申请案中的每一者特此以全文引用的方式并入本文。

【技术领域】
[0005]本发明大体来说涉及计算主机及输入/输出装置技术,且更特定来说是涉及一种用于实施可变大小快闪转变层的方法及/或设备。

【背景技术】
[0006]常规固态驱动器在非易失性存储器的每一页中存储固定的整数个主机逻辑块。当用户数据大小或非易失性存储器的每一页的可用大小不固定时,会出现存储效率问题。用于固态驱动器中的可变大小快闪转变层的架构为硬件密集的。页标头用于识别用户数据存储在固态驱动器的页内的多个读取单元当中的何处,且提取数据涉及首先读取并剖析页标头。


【发明内容】

[0007]本发明涉及一种用于使用可变大小快闪转变层的方法。步骤(A)接收从非易失性存储器读取对应于逻辑块地址的数据的读取请求。步骤(B)读取映射的特定条目以获得:
(i)所述非易失性存储器的特定页的物理地址,(ii)所述特定页中到先前存储的经压缩数据的偏移,及(iii)所述经压缩数据的长度。所述特定条目与所述逻辑块地址相关联。步骤(C)将所述偏移及所述长度转换为:(i)所述特定页中的给定读取单元的地址,及(ii)待读取的读取单元的数目。步骤(D)从所述特定页读取从所述给定读取单元开始的至多所述数目个所述读取单元。偏移及长度粒度比一个读取单元精细。

【专利附图】

【附图说明】
[0008]从以下详细描述及所附权利要求书以及图式将明了本发明的实施例,其中:
[0009]图1是逻辑块地址到快闪页内的固定大小区域的映射的实施例的选定细节的图解;
[0010]图2是逻辑块地址到任选地横跨快闪页的可变大小区域的映射的实施例的选定细节的图解;
[0011]图3是包括整数个读取单元的快闪页的实施例的图解;
[0012]图4是逻辑块地址到横跨一或多个读取单元的可变大小区域的映射的实施例的选定细节的图解;
[0013]图5是包括标头及数据的读取单元的实施例的选定细节的图解;
[0014]图6是包括标头及数据的快闪页的实施例的选定细节的图解;
[0015]图7是根据本发明的实施例包括标头及数据的快闪页的实施例的选定细节的图解;
[0016]图8是各种类型的标头的实施例的选定细节的图解;
[0017]图9是映射条目的实施例的选定细节的图解;
[0018]图10是各种经压缩映射条目的实施例的选定细节的图解;
[0019]图11是读取非易失性存储器的流程图;且
[0020]图12是固态驱动器控制器的实施例的选定细节的图解。

【具体实施方式】
[0021]本发明的实施例包含提供一种可变大小快闪转变层,其可:(i)支持宽广范围的数据大小,Qi)借助拼贴(tiling)过程创建标头,(iii)借助拆解(un-tiling)过程剖析标头,(iv)将所有标头放置于每一页的开始处,(V)将所有数据放置于每一页中的标头之后,(vi)使用不与读取单元边界对准的偏移及标头,及/或(vii)实施为一或多个集成电路及/或相关联固件。
[0022]本发明可以众多方式实施,举例来说,实施为过程、制造物件、设备、系统、物质组合物及例如计算机可读存储媒体的计算机可读媒体(例如,光学及/或磁性大容量存储装置中的媒体,例如磁盘,具有例如快闪存储装置的非易失性存储装置的集成电路)或其中在光学或电子通信链路上发送程序指令的计算机网络。详细描述提供本发明的实现在上文所识别领域中的成本、获利性、性能、效率及使用效用的改进的一或多个实施例的阐述。详细描述包含导论以促进对详细描述的其余部分的理解。所述导论包含根据本文中描述的概念的系统、方法、制造物件及计算机可读媒体中的一或多者的实例性实施例。如更详细地论述,本发明涵盖在所发布的权利要求书的范围内的所有可能修改及变化。
[0023]快闪翻译层(例如,FTL)将逻辑块地址空间(例如由主机用来对输入/输出装置执行输入/输出操作)中的逻辑块地址(例如,LBA)映射到非易失性存储器(例如,NVM)(例如NAND快闪非易失性存储器)中的物理位置。所述映射对一或多个逻辑块的经对准单元(称为映射单元)进行操作,以使得每一映射单元具有其中存储所述映射单元的数据的对应物理位置(如果所述映射单元从未被写入或已被修整,那么包含NULL物理位置的可能性)。举例来说,在4千字节(例如,KB)映射单元的情况下,将八个邻接(及通常八扇区对准的)串行高级技术附件(例如,SATA) 512字节扇区映射为单个单元。一般来说,例如映射的翻译表具有每映射单元一条目以存储从与所述映射单元相关联的逻辑块地址到非易失性存储器中的物理地址的相应翻译及/或其它控制信息。
[0024]非易失性存储器(例如NAND快闪)提供称为快闪页的可写入(或可编程)单元。快闪页包括若干个用户(非错误校正码)数据字节以及用于元数据及错误校正译码(例如,ECC)的一定量的备用空间,且通常为非易失性存储器的最小可写入单元。典型的快闪页大小为8KB或16KB或32KB的用户数据,而典型的映射单元大小为4KB或8KB。(尽管关于快闪页使用术语“用户”数据,但一些快闪页存储例如映射数据及/或校验点数据的“系统”数据。用户数据打算一般指代快闪页的非ECC部分。)快闪页被组织成若干块,通常每块128、256或512个快闪页。一块为可被擦除的最小大小单元,且快闪页在所述页被擦除之后才能够被(重新)写入。
[0025]参考图1,其展示逻辑块地址到快闪页内的固定大小区域的映射的实施例的选定细节的图解。传统快闪转变层假定快闪页(例如,快闪页100)中的用户数据字节的数目为2的幂(及/或扇区大小的倍数)并将快闪页划分成整数个映射单元(每一者在图1中展示为数据)。举例来说,在每快闪页16KB的用户数据及4KB的映射单元的情况下,每一快闪页含有四个映射单元,且快闪转变层将每一映射单元的地址(例如,LBA[M:U]110)映射到相应快闪页及相应快闪页内的四个映射单元中的一者。也就是说,每一映射条目含有相应字段,例如:
[0026]flash_page_address[n_l:0]、mapping_unit_within_flash_page[k_l:0], 其中flash_page_address指代非易失性存储器中的唯一,决闪页,且mapping_unit_within_f lash_page指代每一,决闪页的2k个映射单元大小部分中的一者(k针对整个非易失性存储器为固定的)。子页地址 104 为 f lash_page_address 与 mapping_unit_within_f lash_page的组合。对于基于扇区的寻址,逻辑块地址(例如,LBAtU-1:0]111)的较低阶位指定子部分,例如映射单元内的若干个扇区(例如,子页113内的扇区)。
[0027]参考图2,其展示逻辑块地址到任选地横跨快闪页的可变大小区域的映射的实施例的选定细节的图解。可变大小快闪翻译层(例如,VFTL)概念上将映射单元的地址(例如,LBA[M:U] 110)映射到一或多个快闪页的可变大小区域(举例来说,这是因为映射单元的数据在存储于快闪中之前被压缩及/或在另一实例中,是因为映射单元由主机作为可变大小的段来写入,例如针对对象存储区)。然而,在每一映射条目中提供完整字节地址204及字节数据长度206使得映射条目在与传统快闪转变层相比时较大。
[0028]在一些固态磁盘(例如,SSD)中使用可变大小快闪翻译层。通常已针对其中随机存取性能约束为总体系统设计中的推动因素的较高端客户端及/或企业应用设计固态磁盘系统。为了针对低端及/或移动环境配置可变大小快闪翻译层,可实施改变以针对作为推动因素的循序性能进行配置。本发明的实施例提供一或多种组织用户数据及VFTL元数据以实现其中循序读取性能为支配性约束的不那么昂贵且较高效的低端及移动非易失性存储器系统的方式。
[0029]参考图3,其展示包括整数个读取单元的快闪页的实施例的图解。在一些实施例中,可变大小快闪翻译层通过映射到Epage(例如,ECC页)地址(也称为“读取单元”地址)而执行从映射单元的地址到物理地址的映射。Epage (或读取单元)为可从非易失性存储器读取且通过用于保护非易失性存储器的内容的错误校正码校正的最小数据量。也就是说,每一读取单元含有一定量的数据及保护所述数据的对应ECC校验字节。在一些实施例中将一快闪页(例如快闪页100)或在其它实施例中将出于写入的目的而视为一单元的快闪页群组划分成整数个读取单元,如图3中所图解说明。
[0030]在各种实施例中,允许每快闪页的读取单元的数目变化。举例来说,非易失性存储器的一些部分使用比其它部分强的错误校正码(使用快闪页中的较多字节来进行错误校正译码),且具有较少的读取单元及/或每读取单元较少的可用数据。在另一实例中,在使用非易失性存储器时每快闪页的读取单元的数目变化,因为编程/擦除循环往往弱化非易失性存储器,从而在较多地使用(磨损)非易失性存储器时导致较强的错误校正码。
[0031]根据各种实施例,所使用的错误校正码为以下各者中的一或多者:里德-索罗门(例如,RS)码;博斯-查德胡里-霍昆格母(例如,BCH)码;涡轮码;低密度奇偶校验(例如,LDPC)码;极性码;非二进制码;廉价/独立磁盘冗余阵列(例如,RAID)码;擦除码;任何其它错误校正码;前述各者的任何组合,包含组成、并置及交错。典型的码字大小介于从512个字节(加ECC字节)到2176个字节(加ECC字节)的范围内。ECC字节的典型数目介于从仅几个字节到数百个字节的范围内。
[0032]参考图4,其展示将逻辑块地址映射到横跨一或多个读取单元的可变大小区域的实施例的选定细节的图解。在一些实施例中,VFTL映射将可变大小(例如,经压缩)映射单元的地址(例如,LBA[M:U] 110)映射到在映射的每一条目中表示为读取单元地址404及跨度(读取单元的数目)406的若干个读取单元。由映射条目中的一者参考的读取单元在一或多个(逻辑上及/或物理上)循序快闪页,举例来说,所述若干个读取单元任选地及/或选择性地跨越快闪页边界。映射的条目单独地通常不足以定位相关联数据(因为所述条目仅参考读取单元且不参考所述数据在读取单元内的位置),且使用所参考读取单元内的进一步信息(例如标头)来精确地定位相关联数据。
[0033]在一些实施例中,以跨越非易失性存储器的多个裸片条带化的方式将数据写入到快闪页中。跨越多个裸片条带化写入数据通过仅将快闪页每条带一次地写入到给定裸片中而有利地实现较大写入带宽。跨越多个裸片的块条带称为冗余块,因为在进一步实施例及/或使用情景中,使用(举例来说)一个冗余裸片在冗余块基础上添加类RAID冗余。在各种实施例中,非易失性存储器的一些块为有缺陷的且在写入时被跳过,以使得条带化偶尔会具有其中裸片中的一者被跳过(而非写入到坏块的快闪页中)的“孔”。在此类实施例中,“循序”快闪页按由写入快闪页的次序确定的逻辑次序为循序的。
[0034]参考图5,其展示包括标头及数据的读取单元的实施例的选定细节的图解。在各种实施例中,图4中所图解说明的映射产生在读取单元内定位可变大小数据的准则。如图5中所图解说明,每一读取单元(例如,读取单元500及510)具有一组标头501,且通常通过硬件写入所述标头,因为可变大小数据被“拼贴”(例如,密集地堆积而无浪费的空间)到一或多个读取单元中。当读取非易失性存储器时,通常通过其它硬件来解译标头以提取可变大小数据。通过标头中具有匹配的逻辑块地址的一者中的相应偏移及长度来定位可变大小数据,且数据任选地及/或选择性地横跨若干读取单元(例如由“数据,开始”及“数据,继续”所图解说明的可变大小数据图解说明)。
[0035]在各种实施例中,所述标头也用作再循环(例如,无用单元收集)的部分-在标头中包含逻辑块地址(或等效地,映射单元地址)既实现找出读取单元内的可变大小数据又提供一种用以确定何时读取所述读取单元中的特定一者、其内的可变大小数据是仍有效还是已被覆写(通过在映射中查找逻辑块地址并确定所述映射是否仍涉及特定读取单元的物理地址还是已经更新为涉及读取单元中的另一者)的方式。
[0036]在一些实施例中,用以基于逻辑块地址而从读取单元提取数据的专用硬件经实施而针对随机读取以高效率操作。专用硬件剖析一或多个读取单元内的标头以找出所述标头中具有给定逻辑块地址的一者且接着使用相应长度及偏移来提取相关联的可变大小数据。然而,基于硬件的解决方案为昂贵的(在硅面积及功率上)。对于其中循序性能比随机性重要的低端及/或移动环境,对可变大小快闪翻译层实施改变以减少硅面积、节省功率并实现高循序处理率。
[0037]在一些实施例中,经循序读取优化的可变大小快闪翻译层(例如,SR0-VFTL)将数据拼贴到快闪页(或在一些实施例中,出于写入的目的而视为一单元的快闪页群组)中,而数据内无用于标头的任何间隙-所有标头均被分组在快闪页的一个部分中。在进一步实施例中,标头并不动态地用于存取数据(如在一些可变大小快闪翻译层中),而是仅用于再循环及回收。代替地,映射的条目包括用于找出快闪页内的可变大小(例如,经压缩)数据的完整信息。将标头及数据分离到快闪页的不同部分中导致仅包括标头的读取单元、包括标头与数据的混合的读取单元(但每快闪页仅一个此种读取单元)及仅包括数据的读取单
J Li ο
[0038]尽管针对循序读取处理量以低成本进行配置,但经循序读取优化的可变大小快闪翻译层能够按其它度量(例如每秒的随机读取输入/输出操作(例如,Ι0Ρ)、每秒的随机写入输入/输出操作及循序写入处理量)相当好地表现。然而,对例如在每一读取单元中借助标头的VFTL式数据拼贴的功能的硬件辅助的移除会对控制处理器造成较大的负担。
[0039]参考图6,其展示SRO-VFTL快闪页的第一实施例的图解。参考图7,其展示根据本发明的实施例的SRO-VFTL快闪页的第二实施例的图解。图6及图7的实施例之间的差异为来自先前快闪页640的延续数据是在标头之前还是之后。本发明预期快闪页内的数据的各种实施例及布置。
[0040]根据各种实施例,快闪页包括以下各者中的一或多者:
[0041]-标头,其包含主标头610、任选地及/或选择性地冗余块标头620(例如,在为冗余块的每一块的第一页中添加的标头)及零个或零个以上额外经堆积标头630。每个快闪页具有接续的标头的数目的至少一计数及到数据(与所述标头相关联)在快闪页中开始之处的指针。在一些实施例中,所述标头可为字节对准的,但各自为仅6个字节(例如,B)。所述标头可包含但不限于数据标头、时期标头及填补。数据标头利用映射单元地址及长度。暗示了偏移,因为所有数据均被邻接地堆积。
[0042]-任选地及/或选择性地,来自先前快闪页的延续数据(映射单元的可变大小数据的一部分)640。
[0043]-用以填充快闪页的一或多个映射单元的经堆积(例如,任选地及/或选择性地经压缩)数据650,所述快闪页的最后任选地及/或选择性地在后续快闪页中继续。
[0044]-在快闪页的结束处的任选填补(包含于650)中。在各种实施例中,数据为字节堆积的(例如,无孔),但如果高度压缩(例如,过多标头),那么可能在快闪页的结束处填补。举例来说,在以下情况时使用填补:(i)添加到快闪页的最后可变大小数据段剩下比标头的大小少的未使用字节(因此,无法添加新标头来开始另一可变大小数据段),及(ii)任选地及/或选择性地,超过每快闪页的标头的指定数目(因此,存储于快闪页中的映射单元的数目由标头的指定数目而非由映射单元的数据大小限制)。
[0045]在一些实施例中,关于经循序读取优化的可变大小快闪翻译层的回收及/或再循环(例如,无用单元收集)有利地经启用以读取及/或错误校正及/或检验快闪页中的每一者的仅标头部分,而非如在未经循序读取优化的可变大小快闪翻译层中读取及/或错误校正及/或检验每个读取单元。如果再循环确定可重写快闪页的数据,那么也可读取所述数据且也可对其进行错误校正。在一些实施例中,读取整个快闪页以进行再循环,但对仅标头部分进行错误校正直到做出应使快闪页中的一些数据再循环的确定为止。
[0046]在各种实施例中,每快闪页的标头的数目经限制以约束每快闪页的可读取的读取单元的数目,从而确保已从非易失性存储器读取所有标头。在图6的实施例中,仅读取足以容纳最大数目个标头的一定数目个读取单元。在图7的实施例中,读取额外数目个读取单元以考虑到来自先前快闪页的结尾的数据的最大大小(例如,延续数据640)。然而,图7的实施例使得能够从相关联映射条目确定用以存取来自先前快闪页的数据结尾的读取单元的数目,因为数据结尾中的字节的数目可基于相关联映射条目的相应偏移及长度以及先前快闪页中的用户(非错误校正码)数据的字节的数目而确定。此外,在数据结尾之前的仅有标头为任选冗余块标头(仅存在于已知快闪页中,例如每一块中的第一页)及主标头(始终存在于每一快闪页中)。在图6的实施例中,为了在不必两次存取非易失性存储器的情况下读取数据的结尾,假定存在最大数目个标头(或读取整个快闪页)。
[0047]在一些实施例中,经循序读取优化的可变大小快闪翻译层使用具有多个映射条目的单级映射。在其它实施例中,经循序读取优化的可变大小快闪翻译层使用多级映射,例如两级映射,其具有指向第二级映射(例如,SLM)页的第一级映射(例如,FLM),其中第二级映射页中的每一者多个叶级映射条目。在进一步实施例中,多级映射具有两个以上层级,例如三个层级。在一些实施例及/或使用情景中,多级映射的使用使得能够将映射的相关(例如,在使用中)部分存储(例如,高速缓存)在局部(例如,芯片上)存储器中,从而减少维持映射的成本。举例来说,如果典型的使用模式具有在任何时间点处作用的I千兆字节(例如,GB)的逻辑块地址空间,那么为了快速存取仅局部地存储映射的足以存取逻辑块地址空间的作用的IGB部分的一部分,而非将其存储于非易失性存储器中。在逻辑块地址空间的作用部分之外的参考从非易失性存储器取得多级映射的一或多个层级的所请求部分,从而任选地及/或选择性地替换映射的其它局部存储的部分。
[0048]叶级映射条目中的每一者与多个映射单元中的一者的地址相关联(相对应)。将逻辑块地址转换为映射单元地址,例如通过移除逻辑块地址的零个或零个以上最低有效位(例如,LSB)及/或出于对准目的而给逻辑块地址添加常数,且在映射中查找映射单元地址以确定所述映射的对应条目。
[0049]参考图8,其展示各种类型的标头的实施例的细节的图解。在图8的实例中,所述标头已经格式化以各自装入六个字节。根据各种实施例,各种类型的标头为以下各者中的一或多者:全部为相同大小;任选地及/或选择性地为不同大小;各自包括指定标头的大小的相应字段;大小在不同快闪页中变化;及前述各者的任何组合。
[0050]根据各种实施例,快闪页中的标头包括以下各者中的一或多者:
[0051]-数据标头810,其指示与可变大小数据部分相关联的信息。在一些实施例中,与数据标头相关联的数据在与所述数据标头出现的快闪页相同的快闪页中开始。在进一步实施例及/或使用情景中,如果快闪页仅具有用于数据标头的剩余空间,那么所有相关联数据在后续快闪页中开始。
[0052]-映射标头,例如第二级映射(例如,SLM)标头820。第二级映射标头包括用以指示(例如针对第二级映射再循环及/或回收)正存储哪一第二级映射页的第一级映射索引(例如,FLMI)。
[0053]日志/校验点标头820。日志/校验点标头指示用于再循环、回收、错误处置、调试或其它特殊条件的数据。
[0054]-时期标头830用作回收的部分以使数据与对应映射/校验点信息相关联。通常,每快闪页存在至少一个时期标头。
[0055]-主标头870每快闪页使用一次以提供关于快闪页中的标头的数目及非标头数据在快闪页内的何处开始的信息。各种技术确定非标头数据的开始,例如在图6及图7的实施例中所图解说明。
[0056]-在某些快闪页(例如为冗余块的每一块中的第一快闪页)中使用冗余块标头880。
[0057]-其它类型的标头840,例如填补标头、支持较大长度的校验点标头等。
[0058]在一些实施例中,一些标头包括用以提供标头的多个子类型的TYPE字段。在各种实施例中,一些标头包括含有与标头相关联的数据的长度的LEN(长度)字段。在其它实施例中,并非LEN字段,一些标头包括含有到与标头相关联的数据的结束的偏移(在快闪页内)的OFFSET(偏移)字段(未展示)。(如果可变大小数据段中的最后一者横跨一快闪页,那么OFFSET为在后续快闪页内的偏移或后续快闪页内的字节的数目。)通常实施LEN字段或OFFSET字段中的仅一者,因为在堆积可变大小数据段而无浪费的空间的情况下,快闪页中的可变大小数据段中的每一者的开始位置及结束位置由快闪页中的第一可变大小数据段的开始位置(例如,紧接在标头之后,如在图7中)及LEN或OFFSET字段的列表暗
/Jn ο
[0059]参考图9,其展示映射条目900的实施例的选定细节的图解。根据各种实施例,映射的条目包括以下各者中的一或多者:
[0060]-物理快闪页地址,
[0061]-快闪页内到可变大小数据项的偏移,
[0062]-可变大小数据项的长度,及
[0063]-其它控制信息。
[0064]在一些实施例中,对长度进行编码(举例来说,通过偏移)以使得为零的值对应于指定最小长度。在进一步实施例中,将压缩到小于指定最小长度的数据填补到至少指定最小长度的大小。
[0065]在各种实施例中,SRO-VFTL映射条目大于VFTL映射条目,因为SRO-VFTL映射条目存储对应数据的全偏移及字节长度。因此,减小映射条目在存储于非易失性存储器中时的大小可为优点。在典型的使用中,通常至少以某一粒度及/或大于I的循序映射单元平均数目循序地读取及写入数据,且利用写入的循序性质的映射条目压缩格式的实施为相对廉价的且产生高映射压缩率。通过使循序写入的数据进入到相同快闪页中直到跨越快闪页边界为止来进一步援助映射条目的压缩。
[0066]参考图10,其展示各种经压缩映射条目的实施例的选定细节的图解。所述各种映射条目包含未压缩1010、具有与先前映射条目相同的快闪页地址1020、具有与先前映射条目相同的快闪页地址且在先前数据结束的偏移处开始1030,及具有与先前映射条目相同的快闪页地址、在先前数据结束的偏移处开始且具有与先前映射条目相同的长度1040。
[0067]在具有多级映射的一些实施例中,维持较低级(例如叶级)映射页的高速缓冲存储器。经高速缓存的映射页呈未压缩格式,从而提供由处理器进行的快速存取。当映射页移动(例如从非易失性存储器或动态随机存取存储器(例如,DRAM))到高速缓冲存储器中时,所述映射页是未压缩的。当从高速缓冲存储器冲洗映射页(例如由于被修改)时,压缩映射页以用于存储(例如存储于非易失性存储器中)。根据其中使用DRAM以通过将映射页中的一些或全部存储于动态随机存取存储器中减少等待时间的各种实施例,以如下形式中的一或多者来存储动态随机存取存储器中的映射页:经压缩形式;未压缩形式;选择性地,经压缩或未压缩形式;及借助用于存取动态随机存取存储器中的映射页的经压缩版本的间接表。
[0068]在一些实施例中,在主机写入命令的主机写入数据到达时任选地及/或选择性地压缩所述主机写入数据,并将其以类先进先出(例如,FIFO)的方式存储于局部(例如芯片上)存储器中。举例来说,在一些实施例中,将主机写入数据连同固件数据结构、快闪统计数据、映射的部分(例如保存映射的一或多个页的高速缓冲存储器)、来自非易失性存储器的读取数据(包含再循环读取数据)、待写入到非易失性存储器的数据的标头、固件代码及其它使用一起存储于统一缓冲器(例如,图12中的UBUF)中。在其它实施例中,针对固态驱动器的各种局部存储准则使用一或多个专用存储器。
[0069]关于从主机到达的数据的每一映射单元,向固态驱动器的控制处理器(例如,图12中的中央处理单元CPU)通知以下各者中的一或多者:相应映射单元地址、相应局部存储器地址及/或可变大小(例如,经压缩)主机数据的每一映射单元的相应长度。控制处理器经启用以确定快闪页的写入次序及快闪页中的每一者中可用的非ECC字节的总数目。根据快闪页中的给定一者中可用的非ECC字节的总数目,控制处理器经启用以确定放置于所述给定快闪页中的标头量及数据量。举例来说,控制处理器累加给定快闪页的标头(并追踪迄今为止所使用的标头的字节的数目)并一次一个地将映射单元的可变大小数据及标头添加到给定快闪页,直到所述给定快闪页为满的。当给定快闪页为满时,添加到给定快闪页的映射单元中的最终一者的数据的最后部分未装入于给定快闪页中且用作快闪页中的后续一者的数据结尾部分,从而减少后续快闪页中可用的非ECC字节的总数目,以用于新的标头及数据。
[0070]在特定时间点处,一或多个快闪页经启用以用主机写入数据填充且一或多个快闪页经启用以用经再循环数据填充。举例来说,可填充至少两个带(例如,类FIFO系列的冗余块),一个带用“热”数据(例如,刚从主机而来)填充且另一带用“冷”数据(例如,经再循环)填充。继续所述实例,在各种实施例中,主机写入数据经启用以被引导到热带或冷带中,且经再循环数据经启用以被弓丨导到热带或冷带中。
[0071]控制处理器经启用以将一系列的相应映射单元地址、局部存储器地址及长度转换成以下各者中的一或多者:待写入到快闪页而作为快闪页的标头部分的一系列标头;待写入到快闪页而作为快闪页的用户数据部分的局部存储器的循序部分的第一开始地址及第一长度,所述快闪页的用户数据部分包括至少一个映射单元的数据的至少一部分;待写入到后续快闪页而作为后续快闪页的用户数据结尾部分的局部存储器的循序部分的第二开始地址及第二长度,所述用户数据结尾部分包括一个映射单元的数据的一部分或为空的;待写入到快闪页的零个或零个以上填补字节的数目,其中举例来说,在用户数据结尾部分为空且快闪页不满的情况下使用填补字节。有利地,控制处理器经启用以通过重新格式化而简单地将所述系列的相应映射单元地址、局部存储器地址及长度转换成所述系列的标头并产生将构成快闪页的部分(所述系列的标头、先前快闪页的结尾部分、用户数据部分及任何填补字节)传送到非易失性存储器的小数目个直接存储器存取(例如,DMA)命令。
[0072]在各种实施例中,任选地及/或选择性地启用主机写入数据的压缩。在第一实例中,主机写入命令的信息选择性地启用压缩。在第二实例中,依据主机写入命令的逻辑块地址来选择性地启用压缩。在第三实例中,如果主机写入数据的压缩未曾减小主机写入数据的大小,那么选择性地停用压缩。如果不启用压缩,那么主机写入数据未压缩地被存储。根据各种实施例,映射的条目通过以下各者中的一或多者指示对应数据是经压缩还是未压缩:映射的每一条目中的相应位 '及/或存储于每一映射条目中的长度的值。举例来说,如果映射单元为4KB,那么映射条目中为4KB的长度指示映射条目的相关联数据是未压缩的,而小于4KB的长度指示相关联数据是经压缩的。
[0073]在一些实施例中,通过以下操作来使数据再循环:通过选择待再循环的冗余块、以写入冗余块的快闪页的次序来读取所述快闪页、仅仅处理含有快闪页的标头的读取单元、查找映射中为数据标头的每一标头的逻辑块地址(或等效地,映射单元地址)以查看数据是否仍有效,及如果数据仍有效,那么构造适当的新标头及DMA命令以将待再循环的数据汇编为快闪页的部分。接着将新快闪页写入到非易失性存储器。
[0074]参考图11,其展示读取非易失性存储器的流程图1100的图解。与未经循序读取优化的可变大小快闪翻译层相比,读取单元内(或快闪页内)的标头并不用于提取读取数据。未经循序读取优化的可变大小快闪翻译层及经循序读取优化的可变大小快闪翻译层两者有利地经启用以存取可变大小数据且仅存取含有所要读取数据的读取单元。
[0075]在一些实施例中,响应于从主机接收到包括逻辑块地址的读取命令(步骤1110),控制处理器及/或各种硬件单元经启用以执行以下各者中的一或多者:
[0076]-将逻辑块地址转换为映射单元地址(步骤1114);
[0077]-在包括多个映射条目的映射中查找所述映射单元地址以确定映射条目中的相关联一者(步骤1118);
[0078]-提取相关联映射条目的相应快闪页地址(步骤1122)并确定相关联快闪页是在快闪页高速缓冲存储器中还是从非易失性存储器读取(步骤1130);
[0079]从相关联映射条目提取相应偏移及长度,且根据所述相应偏移及长度,确定(步骤 1126):
[0080]-a待在相关联快闪页中存取的多个读取单元的数目,
[0081]-b.所存取读取单元的快闪页内的读取单元偏移及总读取单元长度,及
[0082]-C从所存取读取单元的经解码版本提取并处理(例如通过解压缩)与所述映射单元地址相关联的数据的DMA命令;
[0083]-响应于确定相关联快闪页不在快闪页高速缓冲存储器中,从非易失性存储器读取相关联快闪页的所存取读取单元(步骤1134),并对所存取读取单元执行错误校正解码(步骤1138)以产生经校正数据;
[0084]-根据相关联映射条目的相应偏移及长度在经校正数据内提取所述相关联数据,并将所提取数据解压缩(步骤1142);及
[0085]-响应于读取命令而将经解压缩数据提供到主机(步骤1146)。
[0086]通常,对于随机读取,待在相关联快闪页中存取以读取相关联数据的读取单元的数目少于相关联快闪页中的所有读取单元。此外,在相关联数据为可变大小时,针对涉及第一逻辑块地址的第一读取命令待在相关联快闪页中存取的读取单元的数目不同于针对涉及第二逻辑块地址的第二读取命令待在相关联快闪页中存取的读取单元的数目,所述第二逻辑块地址不同于所述第一逻辑块地址。在一些实施例中,从相关联快闪页仅仅读取待在相关联快闪页中存取的所述数目个读取单元。也就是说,为了存取相关联数据仅读取所述读取单元中含有相关联数据的一部分的读取单元。
[0087]在一些实施例及/或使用情景中,读取单元中的特定一者包括与第一逻辑块地址相关联的至少一数据部分及与第二不同逻辑块地址相关联的至少一数据部分。
[0088]参考图12,其展示固态驱动器控制器1200的实施例的选定细节的图解。在一些实施例中,固态驱动器控制器1200经启用以实施经循序读取优化的可变大小快闪翻译层。在各种实施例中,控制器1200可实施为一或多个集成电路。
[0089]如图12中所图解说明,主机接口(例如,HIF)经由例如SerDes (例如,串行化-解串行化)的输入/输出接收器接收例如读取及写入命令的命令、接收写入数据并发送读取数据。经由共享存储器(例如,OpRAM)将命令发送到CPU。CPU解译所述命令并经由共享存储器控制SSD控制器的其它部分。举例来说,CPU经由共享存储器将DMA命令传递到各种数据路径发射及接收单元(例如主机接收数据路径(例如,HDRx)或快闪发射数据路径(例如,FDTx))并从所述数据路径发射及接收单元接收响应。
[0090]经由主机接收数据路径(例如,HDRx)将来自主机接口的写入数据传送到统一缓冲器(例如,UBUF)。在各种实施例中,主机接收数据路径包含用以任选地及/或选择性地压缩及/或加密主机写入数据的逻辑。接着经由快闪发射数据路径(例如,FDTx)及类属快闪接口(例如,GAFI)将任选地及/或选择性地经压缩及/或经加密的主机写入数据从统一缓冲器发送到非易失性存储器。在各种实施例中,快闪发射数据路径包含用以执行加密及/或置乱及/或错误校正编码的逻辑。响应于主机读取命令,经由类属快闪接口(例如,GAFI)从非易失性存储器读取数据并经由快闪接收数据路径(例如,FDRx)将所述数据发送到统一缓冲器。在各种实施例中,快闪接收数据路径并入有错误校正解码及/或解密及/或解置乱。在其它实施例中,单独错误校正解码器(例如,用以实施LDPC码的LDPC-D)经启用以对通过快闪接收数据路径存储于统一缓冲器中的“原始”数据进行操作。接着经由主机发射数据路径(例如,HDTx)将统一缓冲器中的经解码读取数据发送到主机接口。在各种实施例中,主机发射数据路径包含用以任选地及/或选择性地将经解码读取数据解密及/或解压缩的逻辑。在一些实施例中,类RAID及软决策处理单元(例如,RASP)经启用以产生类RAID冗余以另外保护存储于非易失性存储器中的主机写入数据及/或系统数据及/或执行软决策处理操作以供与LDPC-D —起使用。
[0091]根据各种实施例,控制处理器的任何操作由一或多个CPU中的任一者、由一或多个硬件单元及/或由前述各者的任何组合执行。举例来说,对于写入,将一系列相应映射单元地址、局部存储器地址及长度转换成一系列标头由以与所述系列的标头的格式相同及/或类似的格式供应所述系列的相应映射单元地址、局部存储器地址及长度的硬件来援助。
[0092]根据各种实施例,耦合到非易失性存储器的固态驱动器控制器经启用以使用以下各者中的一或多者:传统快闪转变层;可变大小快闪转变层;经循序读取优化的可变大小快闪转变层;在非易失性存储器的不同物理部分中前述各者的任何组合;在SSD控制器的逻辑地址空间的不同逻辑部分中前述各者的任何组合;对非易失性存储器的原始物理存取;及在耦合到SSD控制器的主机的控制下前述各者的任何组合。
[0093]根据各种实施例,主机写入数据任选地在写入到非易失性存储器之前被加密且在从非易失性存储器读取之后被解密。在进一步实施例中,加密在压缩主机写入数据之后发生,且解密在将正读取的数据解压缩以返回到主机之前发生。
[0094]尽管实例性实施例已使用了固态驱动器,但本文中所描述的技术通常适用于其它输入/输出装置及/或数据存储装置,例如硬盘驱动器。
[0095]以下是实例性实施例的集合,包含至少一些明确列举的实例组合(例如,EC),提供根据本文中所描述的概念的多种实施例类型的额外描述;所述实例不意在为相互排斥、穷尽性或限制性的;且本发明不限于这些实例性实施例,而是涵盖在所发布权利要求书及其等效物的范围内的所有可能的修改及变化。
[0096]一种方法EC1,其包括:在输入/输出装置处且经由主机到输入/输出装置接口接收从所述输入/输出装置的非易失性存储器读取对应于读取请求的逻辑块地址的数据的所述读取请求;及响应于接收到所述读取请求,读取映射的多个条目中的特定一者以获得所述非易失性存储器的多个页中的特定一者的物理地址、所述特定页中到先前响应于写入对应于所述逻辑块地址的数据而存储的经压缩数据的偏移及所述经压缩数据以字节计的长度,所述特定映射条目与所述读取请求的所述逻辑块地址相关联;将所述特定页中到所述经压缩数据的所述偏移及所述经压缩数据以字节计的所述长度转换为所述特定页中的多个读取单元中的第一者的地址及待从所述特定页读取的所述读取单元的数目;从所述特定页仅仅读取所述数目个读取单元;对从所述特定页读取的所述读取单元中的每一者执行错误校正解码以获得经校正数据;根据所述特定页中到所述经压缩数据的所述偏移及所述经压缩数据以字节计的所述长度从所述经校正数据提取所述经压缩数据;将所述经压缩数据解压缩以产生返回数据;及将所述返回数据返回到所述主机。
[0097]—种方法EC2,其包括:在输入/输出装置处且经由主机到输入/输出装置接口接收从所述输入/输出装置的非易失性存储器读取对应于读取请求的逻辑块地址的数据的所述读取请求;及响应于接收到所述读取请求,读取映射的多个条目中的特定一者以获得所述非易失性存储器的多个页中的特定一者的物理地址、所述特定页中到先前响应于写入对应于所述逻辑块地址的数据而存储的经压缩数据的偏移及所述经压缩数据以字节计的长度,所述特定映射条目与所述读取请求的所述逻辑块地址相关联;将所述特定页中到所述经压缩数据的所述偏移及所述经压缩数据以字节计的所述长度转换为所述特定页中的多个读取单元中的第一者的地址及待从所述特定页读取的所述读取单元的数目;从所述特定页读取至少所述数目个读取单元且少于所述特定页中的所有所述读取单元;对从所述特定页读取的所述读取单元中的每一者执行错误校正解码以获得经校正数据;根据所述特定页中到所述经压缩数据的所述偏移及所述经压缩数据以字节计的所述长度从所述经校正数据提取所述经压缩数据;将所述经压缩数据解压缩以产生返回数据;及将所述返回数据返回到所述主机。
[0098]根据ECl或EC2所述的方法EC3,其中待读取的所述读取单元的所述数目少于所述特定页中的所有所述读取单元。
[0099]根据ECl或EC2所述的方法EC4,其进一步包括:根据所述特定页中到所述经压缩数据的所述偏移以及所述经压缩数据以字节计的所述长度与所述特定页中的用户数据量的组合确定所述经压缩数据的至少一部分在所述非易失性存储器的所述页中的后续一者的一或多个读取单元中。
[0100]根据EC4所述的方法EC5,其中响应于第二处理节点上的全局冗余数据的更新,第二处理节点的相应局部冗余计算单元经启用以根据全局冗余数据的更新的数据计算第二冗余数据以用于存储于所述第二处理节点的相应磁盘中的至少一些磁盘上。
[0101]根据ECl或EC2所述的方法EC6,其中所述非易失性存储器的所述页中的第一者包括第一数目个所述读取单元,所述非易失性存储器的所述页中的第二者包括第二数目个所述读取单元,且所述第一读取单元数目不同于所述第二读取单元数目。
[0102]根据ECl或EC2所述的方法EC7,其中所述非易失性存储器的所述页中的第一者包括第一量的用户数据,所述非易失性存储器的所述页中的第二者包括第二量的用户数据,且第一用户数据数目不同于所述第二用户数据量。
[0103]根据ECl或EC2所述的方法EC8,其进一步包括:在所述输入/输出装置处且经由所述主机到输入/输出装置接口接收写入对应于所述逻辑块地址的数据的写入请求;响应于接收到所述写入请求,压缩对应于所述逻辑块地址的所述数据以形成小于对应于所述逻辑块地址的所述数据的经压缩写入数据;将所述经压缩写入数据的至少第一部分写入于所述特定页中;及将以下各者存储于所述特定条目中:所述特定页的所述物理地址,所述特定页中到所述经压缩写入数据的所述偏移,及所述经压缩写入数据以字节计的所述长度。
[0104]根据EC8所述的方法EC9,其进一步包括:响应于接收到所述写入数据的请求,将标头写入于所述特定页中,所述标头包括所述请求的所述逻辑块地址的至少一部分及所述经压缩数据以字节计的长度。
[0105]根据ECl或EC2所述的方法EC10,其中所述逻辑块地址为多个逻辑块地址中的第一者,且所述数目个所述读取单元中的所述读取单元中的至少一者包含对应于所述逻辑块地址中的不同一者的至少一些数据。
[0106]根据ECl或EC2所述的方法EC11,其中除所述经压缩数据的一部分以外,所述数目个读取单元中的所述读取单元中的至少一者还包括一或多个标头。
[0107]一种方法EC12,其包括:在输入/输出装置处且经由主机到输入/输出装置接口接收从所述输入/输出装置的非易失性存储器读取对应于读取请求的逻辑块地址的数据的所述读取请求;及响应于接收到所述读取请求,读取映射的多个条目中的特定一者以获得所述非易失性存储器的多个页中的特定一者的物理地址、所述特定页中到先前响应于写入对应于所述逻辑块地址的数据而存储的可变大小数据的偏移及所述可变大小数据以字节计的长度,所述特定映射条目与所述读取请求的所述逻辑块地址相关联;将所述特定页中到所述可变大小数据的所述偏移及所述可变大小数据以字节计的所述长度转换为所述特定页中的多个读取单元中的第一者的地址及待从所述特定页读取的所述读取单元的数目;从所述特定页仅仅读取所述数目个读取单元;对从所述特定页读取的所述读取单元中的每一者执行错误校正解码以获得经校正数据;根据所述特定页中到所述可变大小数据的所述偏移及所述可变大小数据以字节计的所述长度从所述经校正数据提取所述可变大小数据;及将所述经提取数据返回到所述主机。
[0108]根据ECl或EC12所述的方法EC13,其进一步包括:在所述输入/输出装置处且经由所述主机到输入/输出装置接口接收写入对应于所述逻辑块地址的可变大小数据的写入请求;响应于接收到所述写入请求,将所述可变大小数据的至少第一部分写入于所述特定页中;及将以下各者存储于特定条目中:所述特定页的所述物理地址,所述特定页中到所述可变大小数据的所述偏移,及根据所述可变大小数据的大小的所述可变大小数据以字节计的所述长度。
[0109]在一些实施例中,由多节点存储装置或其部分(例如硬盘驱动器或经启用以与处理器(例如CPU)互操作的输入/输出装置的固态磁盘控制器、输入/输出控制器(例如RAID芯片上裸片)及处理器的部分、微处理器、系统单芯片、专用集成电路、硬件加速器或提供前述操作的全部或部分的其它电路)执行的操作的全部或部分的各种组合由与计算机系统进行的处理兼容的规范指定。所述规范是根据各种描述,例如硬件描述语言、电路描述、网表描述、掩蔽描述或布局描述。实例性描述包含但不限于:Verilog、VHDL, SPICE、SPICE变体(例如PSpice)、IBIS、LEF、DEF、⑶S-11、OASIS或其它描述。在各种实施例中,处理包含解译、编译、模拟及合成的任一组合以产生、验证或指定适合包含于一或多个集成电路上的逻辑及/或电路。根据各种实施例,每一集成电路可根据多种技术来设计及/或制造。所述技术包含可编程技术(例如,现场或掩蔽可编程门阵列集成电路)、半定制技术(例如,完全或部分地基于单元的集成电路)及全定制技术(例如,实质上专门化的集成电路)、其任何组合或与集成电路的设计及/或制造兼容的任何其它技术。
[0110]在一些实施例中,由其中存储有指令集的计算机可读媒体描述的操作的全部或部分的各种组合通过一或多个程序指令的执行及/或解译、通过一或多个源及/或脚本语言语句的解译及/或编译或通过经由编译、翻译及/或解译在程序设计及/或脚本设计语言语句中表达的信息而产生的二进制指令的执行来执行。所述语句与任何标准程序设计或脚本设计语言(例如 C、C++、Fortran、Pascal、Ada、Java、VBscript 及 Shell)兼容。所述程序指令、语言语句或二进制指令中的一或多者任选地存储于一或多个计算机可读存储媒体元件上。在各种实施例中,所述程序指令的一些、全部或各种部分被实现为一或多个函数、例程、子例程、嵌入式例程、程序、宏或其部分。
[0111]已仅出于方便制备文本与图式的目的而在描述中做出某些选择,且除非存在对相反内容的指示,否则不应将所述选择本身视为传达关于所描述实施例的结构或操作的额外信息。所述选择的实例包含但不限于:用于图式编号的标示的特定组织或指派及用于识别及引用实施例的特征及元件的元件识别符(例如图说文字或数字标示)的特定组织或指派。
[0112]词语“包含(includes或including) ”具体地打算被理解为描述开放范围的逻辑集的抽象词,且除非明确地后续接着词语“在…内(within) ”否则不意在表达物理含有。
[0113]尽管已出于清晰描述及理解的目的在一些细节上描述了前述实施例,但本发明不限于所提供的细节。存在本发明的许多实施例。所揭示的实施例为示范性的而非限制性的。
[0114]在构造、布置及使用上的许多变化可能与描述一致,且在所发布的专利的权利要求书的范围内。举例来说,根据各种实施例,互连及功能单元位宽度、时钟速度及所使用技术的类型在每一组件块中为可变的。赋予互连及逻辑的名称仅为示范性的,且不应理解为限制所描述的概念。流程图及流程图式过程、行动及功能元件根据各种实施例可变。此夕卜,除非明确地陈述为相反,否则所指定的值范围、所使用的最大及最小值或其它特定规格(例如,输入/输出装置技术类型及寄存器与缓冲器中的条目或级的数目)仅为所描述实施例的规格、预期追踪实施方案技术的改进及改变且不应被理解为限制。
[0115]可采用此项技术中已知的在功能上等效的技术来代替所描述的技术以实施各种组件、子系统、操作、函数、例程、子例程、嵌入式例程、程序、宏或其部分。依据实施例相依的设计约束及较快处理的技术趋势(促进先前在硬件中的功能迁移到软件中)及较高集成密度(促进先前在软件中的功能迁移到硬件中),实施例的许多功能方面可选择性地在硬件(例如,通常为专用电路)或软件(例如,经由某一方式的经编程控制器或处理器)中实现。各种实施例的特定变化包含但不限于:分割差异;不同的形状因子及配置;不同操作系统及其它系统软件的使用;不同接口标准、网络协议或通信链路的使用;不同译码类型的使用;及在根据特定应用的独特工程及商务约束实施本文中所描述的概念时将预期的其它变化。
[0116]已借助远超出所描述实施例的许多方面的最小实施方案所要求的细节及环境上下文来描述了实施例。所属领域的技术人员将认识到,一些实施例省略所揭示的组件或特征而不更改剩余元件当中的基本协作。所揭示的细节中的许多细节并不用于实施所描述的实施例的各种方面。在剩余元件可与现有技术区分的条件下,所省略的组件及特征不限制本文中所描述的概念。
[0117]所有此类设计变化是对所描述实施例所表达的教示的非实质性改变。本文中所描述的实施例对其它计算及连网应用具有广泛的适用性,且不限于所描述实施例的特定应用或行业。因此,本发明应理解为包含囊括于所发布专利的权利要求书的范围内的所有可能修改及变化。
[0118]由图1-12的图式执行的功能可使用以下各者中的一或多者来实施:常规通用处理器、数字计算机、微处理器、微控制器、RISC(精简指令集计算机)处理器、CISC(复杂指令集计算机)处理器、SMD(单指令多数据)处理器、信号处理器、中央处理单元(CPU)、算术逻辑单元(ALU)、视频数字信号处理器(VDSP)及/或根据本说明书的教示编程的类似计算机器,如相关领域的技术人员将明了。熟练的程序设计员基于本发明的教示可容易地制备适当软件、固件、译码、例程、指令、操作码、微码及/或程序模块,如相关领域的技术人员也将明了。通常由机器实施方案的处理器中的一或多者从一媒体或数个媒体执行所述软件。
[0119]本发明还可通过以下各者的制备来实施:ASIC(专用集成电路)、平台ASIC、FPGA (现场可编程门阵列)、PLD (可编程逻辑装置)、CPLD (复杂可编程逻辑装置)、海量的门(sea-of-gate)、RFIC(射频集成电路)、ASSP(专用标准产品)、一或多个单片集成电路、布置为倒装芯片模块及/或多芯片模块的一或多个芯片或裸片,或通过互连常规组件电路的适当网络,如本文中所描述,所属领域的技术人员将容易明了所述常规组件电路的修改。
[0120]因此,本发明还可包含计算机产品,其可为包含可用于编程机器以执行根据本发明的一或多个过程或方法的指令的存储媒体及/或传输媒体。机器对计算机产品中所含有的指令的执行连同周围电路的操作可将输入数据变换成存储媒体上的一或多个文件及/或表示物理对象或资产(例如音频及/或视觉描绘)的一或多个输出信号。所述存储媒体可包含但不限于:任何类型的盘,包含软盘、硬盘驱动器、磁盘、光盘、⑶-ROM、DVD及磁光盘以及电路,例如R0M(只读存储器)、RAM(随机存取存储器)、EPR0M(可擦除可编程ROM)、EEPROM(电可擦除可编程ROM)、UVPR0M(紫外可擦除可编程ROM)、快闪存储器、磁卡、光卡及/或适合于存储电子指令的任何类型的媒体。
[0121]本发明的要素可形成一或多个装置、单元、组件、系统、机器及/或设备的部分或全部。所述装置可包含但不限于:服务器、工作站、存储阵列控制器、存储系统、个人计算机、膝上型计算机、笔记型计算机、掌上型计算机、个人数字助理、便携式电子装置、电池供电装置、机顶盒、编码器、解码器、变码器、压缩器、解压缩器、预处理器、后处理器、发射器、接收器、收发器、密码电路、蜂窝式电话、数码相机、定位及/或导航系统、医疗设备、抬头显示器、无线装置、音频记录、音频存储及/或音频回放装置、视频记录、视频存储及/或视频回放装置、游戏平台、外围设备及/或多芯片模块。相关领域的技术人员将理解,本发明的要素可在其它类型的装置中实施以满足特定应用的准则。
[0122]术语“可”及“通常”在本文中结合“是”及动词使用时意在传达描述为示范性且相信足够广泛以涵盖本发明中所呈现的特定实例以及可基于本发明导出的替代实例两者的意图。如本文中所使用的术语“可”及“通常”不应理解为一定暗示省略对应要素的期望及可能性。
[0123]尽管已特别地参考本发明的实施例展示并描述了本发明,但所属领域的技术人员将理解,可在不背离本发明的范围的情况下做出形式及细节上的各种改变。
【权利要求】
1.一种用于使用可变大小快闪转变层的方法,其包括以下步骤: (A)在设备处从主机接收从所述设备的非易失性存储器读取对应于逻辑块地址的特定数据的读取请求; (B)读取映射中的多个条目中的特定一者以获得:(i)所述非易失性存储器的多个页中的特定一者的物理地址,(?)所述特定页中到先前响应于写入对应于所述逻辑块地址的经压缩数据而存储的所述经压缩数据的偏移,及(iii)所述经压缩数据的长度,其中所述特定条目与所述逻辑块地址相关联; (C)将所述偏移及所述长度转换为:(i)所述特定页中的多个读取单元中的给定一者的地址,及(ii)待从所述特定页读取的所述读取单元的数目 '及 (D)从所述特定页读取从所述给定读取单元开始的至多所述数目个所述读取单元,其中所述偏移及所述长度的粒度比所述读取单元中的一者的大小精细。
2.根据权利要求1所述的方法,其进一步包括以下步骤: 对如从所述特定页读取的所述读取单元中的每一者执行错误校正解码以产生经校正数据;及 根据以下两者从所述经校正数据提取所述经压缩数据:(i)所述特定页中到所述经压缩数据的所述偏移,及(ii)所述经压缩数据的所述长度。
3.根据权利要求2所述的方法,其进一步包括以下步骤: 将所述经压缩数据解压缩以产生返回数据;及 将所述返回数据传送到所述主机。
4.根据权利要求1所述的方法,其中待读取的所述读取单元的所述数目少于所述特定页中的所有所述读取单元。
5.根据权利要求1所述的方法,其进一步包括以下步骤: 基于以下两者而确定所述经压缩数据的至少一部分在所述非易失性存储器的所述页中的后续一者的一或多个后续读取单元中:(i)所述特定页中到所述经压缩数据的所述偏移,及(ii)所述经压缩数据的所述长度与所述特定页中的用户数据量的组合。
6.根据权利要求5所述的方法,其进一步包括以下步骤: 从所述后续页读取至多所述一或多个后续读取单元。
7.根据权利要求1所述的方法,其中:(i)所述非易失性存储器的所述页中的第一者包含第一数目个所述读取单元,(?)所述非易失性存储器的所述页中的第二者包含第二数目个所述读取单元,且(iii)所述第一数目不同于所述第二数目。
8.根据权利要求1所述的方法,其中:(i)所述非易失性存储器的所述页中的第一者包含第一量的用户数据,(?)所述非易失性存储器的所述页中的第二者包含第二量的所述用户数据,且(iii)所述第一量不同于所述第二量。
9.根据权利要求1所述的方法,其进一步包括以下步骤: 接收将所述特定数据写入于所述非易失性存储器中的写入请求; 压缩所述特定数据以产生小于所述特定数据的所述经压缩数据; 将所述经压缩数据的至少一部分写入于所述特定页中;及 将以下各者存储于所述特定条目中:(i)所述特定页的所述物理地址,(ii)所述特定页中到所述经压缩数据的所述偏移,及(iii)所述经压缩数据的所述长度。
10.根据权利要求9所述的方法,其进一步包括以下步骤: 将包含所述写入请求的所述逻辑块地址的至少一部分及所述长度的标头写入于所述特定页中。
11.根据权利要求1所述的方法,其中:(i)所述逻辑块地址为多个逻辑块地址中的一者,且(ii)所述数目个所述读取单元中的所述读取单元中的至少一者包含对应于所述逻辑块地址中的不同一者的至少一些不同数据。
12.根据权利要求1所述的方法,其中所述数目个所述读取单元中的所述读取单元中的至少一者包含:(i) 一或多个标头,及(ii)所述经压缩数据的一部分。
13.—种设备,其包括: 非易失性存储器 '及 电路,其经配置以:(i)从主机接收从所述非易失性存储器读取对应于逻辑块地址的特定数据的读取请求;(ii)读取映射中的多个条目中的特定一者以获得(a)所述非易失性存储器的多个页中的特定一者的物理地址,(b)所述特定页中到先前响应于写入对应于所述逻辑块地址的经压缩数据而存储的所述经压缩数据的偏移,及(c)所述经压缩数据的长度,其中所述特定条目与所述逻辑块地址相关联;(iii)将所述偏移及所述长度转换为(a)所述特定页中的多个读取单元中的给定一者的地址,及(b)待从所述特定页读取的所述读取单元的数目 '及(iv)从所述特定页读取从所述给定读取单元开始的至多所述数目个所述读取单元,其中所述偏移及所述长度的粒度比所述读取单元中的一者的大小精细。
14.根据权利要求13所述的设备,其中所述电路进一步经配置以:(i)对如从所述特定页读取的所述读取单元中的每一者执行错误校正解码以产生经校正数据;及(ii)根据以下两者从所述经校正数据提取所述经压缩数据:(a)所述特定页中到所述经压缩数据的所述偏移,及(b)所述经压缩数据的所述长度。
15.根据权利要求14所述的设备,其中所述电路进一步经配置以:(i)将所述经压缩数据解压缩以产生返回数据;及(ii)将所述返回数据传送到所述主机。
16.根据权利要求13所述的设备,其中待读取的所述读取单元的所述数目少于所述特定页中的所有所述读取单元。
17.根据权利要求13所述的设备,其中所述电路进一步经配置以基于以下两者而确定所述经压缩数据的至少一部分在所述非易失性存储器的所述页中的后续一者的一或多个后续读取单元中:(i)所述特定页中到所述经压缩数据的所述偏移,及(ii)所述经压缩数据的所述长度与所述特定页中的用户数据量的组合。
18.根据权利要求17所述的设备,其中所述电路进一步经配置以从所述后续页读取至多所述一或多个后续读取单元。
19.根据权利要求13所述的设备,其中:(i)所述非易失性存储器的所述页中的第一者包含第一数目个所述读取单元,(?)所述非易失性存储器的所述页中的第二者包含第二数目个所述读取单元,且(iii)所述第一数目不同于所述第二数目。
20.根据权利要求13所述的设备,其中所述设备实施为一或多个集成电路。
【文档编号】G06F12/08GK104375956SQ201410407145
【公开日】2015年2月25日 申请日期:2014年8月18日 优先权日:2013年8月16日
【发明者】厄尔·T·科恩 申请人:Lsi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1