数据储存装置以及非挥发式存储器控制方法与流程

文档序号:25236367发布日期:2021-06-01 13:09阅读:99来源:国知局
本发明有关于数据储存装置的修整(trimming)技术。
背景技术
::非挥发式存储器有多种形式─例如,快闪存储器(flashmemory)、磁阻式随机存取存储器(magnetoresistiveram)、铁电随机存取存储器(ferroelectricram)、电阻式随机存取存储器(resistiveram)、自旋转移力矩随机存取存储器(spintransfertorque-ram,stt-ram)…等,用于长时间数据保存,可做为储存媒体实现一数据储存装置。非挥发式存储器通常有其特殊的储存特性。本
技术领域
:需要相应非挥发式存储器的储存特性发展相应的控制技术。例如,符合非挥发式存储器储存特性的修整(trimming)技术。技术实现要素:本发明提出一种修整指令执行技术。根据本发明一种实施方式实现的一数据储存装置包括一非挥发式存储器、以及耦接该非挥发式存储器的一控制器以及一暂存存储器。该控制器建构来根据一主机发出的一修整指令,编写该暂存存储器上一快取区反映修整状况,使上述修整状况得以自该快取区冲至该非挥发式存储器。该修整指令要求一大量修整,该大量修整对齐一第一长度的分界、且为该第一长度的n倍,n为正整数。该控制器令该快取区载有n个位元标示该大量修整。一种实施方式中,该控制器还在该暂存存储器上管理一修整位元总表,该修整位元总表包括多个修整位元子表。上述n个位元对应到该等修整位元子表其中m个修整位元子表,m为正整数。该快取区载有上述m个修整位元子表,藉以载有上述n个位元。一种实施方式中,该控制器还在该暂存存储器上管理一修整资讯旗标表,对应该快取区的上述多个储存格,标示该快取区中载有上述m个修整位元子表的储存格。该控制器还令该修整资讯旗标表,随着该快取区冲至该非挥发式存储器。一种实施方式中,该控制器还在该暂存存储器上管理一储存资讯表,对应该快取区的多个储存格,在对应的储存格储存使用者数据时记录一逻辑地址,且在对应的储存格载有上述修整位元子表时记录对应的子表编号。该控制器还令该储存资讯表,随着该快取区冲至该非挥发式存储器。一种实施方式中,一个修整位元子表的尺寸为该快取区一个储存格的一半容量。一个储存格的前半段载有一个修整位元子表时,该储存资讯表中对应该个储存格的资讯是以前半段记录该个修整位元子表的子表编号。一个储存格的后半段载有一个修整位元子表时,该储存资讯表中对应该个储存格的资讯是以后半段记录该个修整位元子表的子表编号。一种实施方式中,该修整指令还要求一中等长度修整。该中等长度修整不超过该第一长度,且对齐一第二长度的分界。该控制器还对应该中等长度修整,将虚置映射数据填入一主机-装置映射表。该控制器在该快取区记录该中等长度修整的起始逻辑地址以及长度。一种实施方式中,该控制器还以该修整资讯旗标表标示该快取区中载有该中等长度修整的起始逻辑地址以及长度的储存格。一种实施方式中,该控制器还令该储存资讯表,在对应的储存格载有该中等长度修整的起始逻辑地址以及长度时,记录一中等长度修整代号。一种实施方式中,该中等长度修整的起始逻辑地址以及长度结合虚置数据占据一个储存格的一半容量。一个储存格以前半段快取该中等长度修整的起始逻辑地址以及长度时,该储存资讯表中对应该个储存格的资讯是以前半段记录该中等长度修整代号。一个储存格以后半段快取该中等长度修整的起始逻辑地址以及长度时,该储存资讯表中对应该个储存格的资讯是以后半段记录该中等长度修整代号。一种实施方式中,该修整指令还要求一少量修整。该少量修整短于该第二长度。该少量修整包含于该第二长度的一逻辑地址区间中。该控制器对应该少量修整,将虚置数据与该逻辑地址区间不修整的数据结合,快取于该快取区的一局部修整储存格。该控制器更新该主机-装置映射表,使该逻辑地址区间指向该局部修整储存格。一种实施方式中,相应该主机发下的一读取指令,该控制器查询该修整位元总表。该读取指令要求读取的逻辑地址区间在该修整位元总表内标示为已修整时,该控制器以已修整回应该读取指令。该读取指令要求读取的逻辑地址区间在该修整位元总表内未标示为已修整时,该控制器还查询该主机-装置映射表回应该读取指令。一种实施方式中,该主机-装置映射表包括多个映射子表。各映射子表管理该第一长度的逻辑地址区间的映射数据。各储存格长度为该第二长度。以上控制该非挥发式存储器的控制器也可以由其他架构实现。本发明还可以前述概念实现非挥发式存储器的控制方法。下文特举实施例,并配合所附图示,详细说明本
发明内容。附图说明图1图解快闪存储器中区块blk的结构;图2图解根据本发明一种实施方式所实现的一数据储存装置200;图3图解修整的分类;图4图解首位少量修整(302),其中修整逻辑区块地址lba5~lba7;图5图解首位中等长度修整(304),其中修整逻辑区块地址lba8~lba4095;图6a以及图6b图解大量修整(306),其中修整逻辑区块地址lba4096~lba100663295;图7图解末位中等长度修整(308);图8图解末位少量修整(310),其中修整逻辑区块地址lba100664320~lba100664323;图9整理lba5~lba100664323修整指令执行后,动态随机存取存储器206上存在内容;图10a、10b以及10c图解该修整位元总表tbm一位元的"1"至"0"翻转;图11图解lba10240(5mb)起始的12kb写入如何被回应;图12a、12b、12c根据本发明一种实施方式图解表格重建机制;图13根据本发明一种实施方式图解修整指令(trimcommand)处理方法;图14为流程图,根据本发明一种实施方式图解如何根据该修整位元总表tbm背景更新该主机-快闪存储器映射表h2f;图15为流程图,根据本发明一种实施方式图解如何回应主机208发出的写入指令;以及图16为流程图,根据本发明一种实施方式图解如何一复电程序。符号说明200~数据储存装置;202~快闪存储器;204~控制器;206~动态随机存取存储器(dram);208~主机;210~主动区块a_blk的闲置区域;302…310~修整逻辑地址范围分类区间;402、404、502、602、604、702、802、804、1002、1004、1102、1104、1106~快取区data_cache的储存区间;1202~一串修整资讯旗标;1204~一串储存资讯;a_blk~主动区块;blk~区块;data_cache~快取区;ghp0、ghp1、ghp511、ghp0x100、ghp0x17f、ghp0xc00000、ghp0xc0007f、ghp0xc00080~全域主机页编号的映射资讯;h2f~主机-快闪存储器映射表;h2f_g0、h2f_g48、h2f_g#~映射子表;info_blk~系统资讯区块;s1302…s1314、s1402…s1410、s1502…s1510、s1602…s1618~步骤;spare_area~闲置区域;tbm~修整位元总表;tbm_g0、tbm_g1、tbm_g2、tbm_g3、tbm_g127~修整位元子表;tifm~修整资讯旗标表;trim_code~修整代码;trim_tag~修整标签。具体实施方式以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本
发明内容。实际发明范围应依照权利要求书范围来界定。非挥发式存储器可以是快闪存储器(flashmemory)、磁阻式随机存取存储器(magnetoresistiveram)、铁电随机存取存储器(ferroelectricram)、电阻式存储器(resistiveram,rram)、自旋转移力矩随机存取存储器(spintransfertorque-ram,stt-ram)…等,提供长时间数据保存的储存媒体。以下特别以快闪存储器为例进行讨论。现今数据储存装置常以快闪存储器为储存媒体,实现记忆卡(memorycard)、通用序列汇流排闪存装置(usbflashdevice)、固态硬碟(ssd)…等产品。有一种应用是采多晶片封装、将快闪存储器与其控制器包装在一起─称为嵌入式快闪存储器模组(如emmc)。以快闪存储器为储存媒体的数据储存装置可应用于多种电子装置中。所述电子装置包括智慧型手机、穿戴装置、平板电脑、虚拟实境设备…等。电子装置的运算模块可视为主机(host),操作所使用的数据储存装置,以存取其中快闪存储器。以快闪存储器为储存媒体的数据储存装置也可用于建构数据中心。例如,伺服器可操作固态硬碟(ssd)阵列形成数据中心。伺服器即可视为主机,操作所连结的固态硬碟,以存取其中快闪存储器。快闪存储器有其特殊的储存特性,以下会叙述。主机(host)端是以逻辑地址(例如,逻辑区块地址lba或全域主机页编号ghp…等)来区别数据。至于数据实际储存在快闪存储器何处,则是以映射方式管理。快闪存储器的物理空间是划分为多个区块(blocks)配置使用。图1图解快闪存储器中区块blk的结构。区块blk包括多个页面(pages),例如,页面0…页面255。各页面包括多个区段(sectors),例如32个区段。每一区段可储存512b长度的使用者数据;一页面可供应16kb储存空间。一种实施方式是根据页面编号─由低编号至高编号─循序使用一区块(blk)的储存空间。或者,某些实施方式使用的是数据吞吐量大幅提升的多通道技术,是将不同通道存取的区块视为一个超级区块(superblock),将不同通道之间的页面视为超级页面(superpage)。多通道技术可根据超级页面编号─由低编号至高编号─循序使用一超级区块的储存空间。以下讨论所指区块也可以是超级区块。一种实施方式中,一区段(512b)可对应一个逻辑区块地址lba。以4kb数据管理模式为例,八个连续区段组成的4kb空间为一数据管理单元,对应八个连续逻辑区块地址lbas的数据储存,即对应一个全域主机页编号ghp。一页面的四段数据管理单元(共16kb)可对应四个全域主机页编号ghps。如图1所示,区块blk包括一闲置区域(sparearea)spare_area,由各页末端闲置空间组成,其中可标注对应页面的四段数据管理单元所对应的四个全域主机页编号ghps。一种实施方式是在闲置区域spare_area为各段4kb数据管理单元规划4b的全域主机页编号ghp栏位(ghpentry)。除了载于该闲置区域spare_area,整个区块blk空间所映射的全域主机页编号ghps也可编排为区块结尾资讯(end-of-blockinformation,简称eob),载于该区块blk最末的页面255。闲置区域spare_area、或区块结尾资讯(eob)的全域主机页编号ghps记录就是用于追踪物理空间以及逻辑地址之间复杂的映射关系。特别是,快闪存储器有一项重要特性,就是同样逻辑地址的数据更新并非覆写至旧数据的储存空间。新版本的数据须写入空白的空间。旧空间的内容无效。一区块可能仅零星留存有效数据。由于快闪存储器的储存空间需抹除(erase)后方能再次使用,备用区块逐渐消耗。备用区块数量不足时(如,低于阀值),垃圾回收(garbagecollection)需求产生。一区块留存的零星有效数据经垃圾回收集中到其他空间。徒留无效数据的区块则抹除释出,拉升备用区块数量,确保快闪存储器的正常使用。垃圾回收也可能使得同区块内容的逻辑顺序还跳跃。由前述内容可知,快闪存储器的空间配置相当复杂。一种实施方式是除了维护前述物理至逻辑映射的资讯外(例如,为各4kb数据管理单元所储存的4b全域主机页编号ghp),还反向建立一主机-装置映射表;如,一主机-快闪存储器映射表(host-to-flashmappingtable,h2f映射表),显示主机操作用的全域主机页编号ghp是映射到快闪存储器哪些实体地址。然而,随着制程进步,快闪存储器尺寸越来越大。4tb的快闪存储器,其主机-快闪存储器映射表h2f会达4gb。8tb的快闪存储器,其主机-快闪存储器映射表h2f会达8gb。过分庞大的主机-快闪存储器映射表h2f不容易动态管理。一种解决方案是将主机-快闪存储器映射表h2f切分为较小尺寸的映射子表,例如,对应不同逻辑地址群组g#(#为编号)的映射子表h2f_g#。被呼叫到的映射子表h2f_g#才载出参考或更新。相较于完整的主机-快闪存储器映射表h2f,映射子表h2f_g#的动态更新只耗费少量系统资源。本发明特别讨论快闪存储器的修整(trim)操作。修整操作是用于无效所指定的逻辑地址区间。由于修整的逻辑地址区间常常尺寸可观,涉及数量庞大的映射子表h2f_g#更新(载出填入虚置映射数据),非常耗时。本发明提出一种新的修整方案,使得该主机-快闪存储器映射表h2f可部分在修整完成后,再以背景方式更新。以下讨论之。图2图解根据本发明一种实施方式所实现的一数据储存装置200,包括一快闪存储器202、一控制器204以及一动态随机存取存储器(dram)206。主机208透过控制器204操作快闪存储器202。数据储存装置200内部也可经控制器204发动快闪存储器202的最佳化操作;例如,整理快闪存储器202空间,使其发挥最大储存效能。控制器204进行运算时是以动态随机存取存储器206暂存数据。动态随机存取存储器206也可以其他暂存存储器取代,如静态随机存取存储器sram,或其他控制器204得以高速存取的储存空间。动态随机存取存储器206有多种规划,包括提供快取区data_cache,将数据收集成数据管理单元4kb大小后,再一一冲至(flush)快闪存储器202的主动区块a_blk中。主动区块a_blk是选自闲置区块,待完成写入则视为数据区块。完整的主机-快闪存储器映射表h2f一般保存在快闪存储器202的系统资讯区块info_blk。数据自快取区data_cache冲至主动区块a_blk时,相关的映射子表h2f_g#自快闪存储器202载出修正,再回存快闪存储器202更新总表h2f。传统修整也包括映射子表h2f_g#的载出修正以及回存。但大量修整涉及到多个映射子表h2f_g#更新,非常耗时。本发明提出替代方案。根据主机208发出的一修整指令(trimcommand),控制器204编写该快取区data_cache快取一修整标签trim_tag,反映修整状况,使修整状况也会冲至主动区块a_blk作非挥发式储存。修整标签trim_tag注明主机-快闪存储器映射表h2f还有哪些部分没有随着修整指令更新。控制器204可以在填写指令完成伫列(completionqueue)回报主机208修整指令完成后,再找机会,根据修整标签trim_tag,将映射子表h2f_g#一一载出更新,符合修整需求。如此一来,控制器204不会被修整指令困住。数据储存装置200效能显著提升。为了帮助解读该修整标签trim_tag,控制器204还在该动态随机存取存储器206上维护修整资讯旗标表tifm、修整代号trim_code、以及修整位元总表tbm。修整资讯旗标表tifm以及修整代号trim_code的内容也会冲至主动区块a_blk的闲置区域210作非挥发式储存,后续若有复电重建需求,就可以根据闲置区域210解读出快闪存储器202相对页面是储存修整标签trim_tag。修整位元总表tbm是以简单位元方式标注主机-快闪存储器映射表h2f中未同步处,使控制器204正确回复主机208读、写指令。本发明将修整分为三种类型:大量修整;中等长度修整;以及少量修整。大量修整对齐一第一长度的分界、且为该第一长度的n倍,n为正整数。中等长度修整不超过该第一长度,且对齐一第二长度的分界。少量修整短于该第二长度。一种实施方式中,映射子表h2f_g#管理的逻辑地址长度即该第一长度,例如2mb。一种实施方式中,数据管理单元尺寸(即快取区data_cache各储存格尺寸)即该第二长度,例如4kb。三种尺寸的修整技术不同。少量修整是直接填虚置数据(dummydata)代表该段逻辑地址区间已修整。中等长度修整是快取起始逻辑地址以及长度。大量修整是快取该修整位元总表tbm的相关部分。以下以逻辑区块地址lba5~lba100664323的修整为例,讨论本发明控制器204的操作细节。图3图解修整的分类。主机208对逻辑区块地址lba5~lba100664323发出修整指令。控制器204分类该修整指令指定的修整范围lba5~lba100664323,将之分为区间302、304、306、308以及310。区间306为大量修整,位于逻辑区块地址lba4096~lba100663295,对齐2mb分界,尽可能的在整体修整范围中,切出2mb倍数的最大修整。区间306之前包括:小于4kb的区间302,位于逻辑区块地址lba5~lba7,对应首位少量修整;以及对齐4kb分界、但不足2mb的区间304,位于逻辑区块地址lba8~lba4095,对应首位中等长度修整。区间306之后包括:对齐4kb分界但不足2mb的区间308,位于逻辑区块地址lba100663296~lba100664319,对应末位中等长度修整;以及小于4kb的区间310,位于逻辑区块地址lba100664320~lba100664323,对应末位少量修整。图4图解首位少量修整(302),其中修整逻辑区块地址lba5~lba7,包括:步骤1,填写4kb内容进快取区data_cache;以及,步骤2,更新主机-快闪存储器映射表h2f。步骤1,控制器204将逻辑区块地址lba0~lba4(不修整区间)的原本数据填入快取区data_cache的区间402,并对应要修整的逻辑区块地址lba5~lba7填写虚置数据(dummydata例如,零)至快取区data_cache的区间404。区间402中关于逻辑区块地址lba0~lba4的2.5kb不修整数据、以及区间404中1.5kb的虚置数据组合成4kb数据,符合4kb数据管理单元,由快取区data_cache一个储存格快取。步骤2,控制器204在动态随机存储器206上更新逻辑区块地址lba0~lba7(即ghp0)对应的映射子表h2f_g0,以更新该主机-快闪存储器映射表h2f。控制器204将全域主机页编号ghp0的映射数据指向该快取区data_cache上述区间402以及404组成的该4kb储存格。如此一来,全域主机页编号ghp0的映射绑定此4kb内容。虚置数据代表逻辑区块地址lba5~lba7的修整状态。对应该快取区data_cache的多个储存格,控制器204会在动态随机存取存储器206上还维护一储存资讯表(未绘制在此图),在对应储存格快取的是使用者数据时,记录一逻辑地址;此例即记录全域主机编号ghp0,将与快取区data_cache储存格内容一起冲至主动区块a_blk作为储存资讯,例如,用作日后主机-快闪存储器映射表h2f重建。后面讨论的应用中,快取区data_cache储存格储存的可以不是使用者资讯,而是修整资讯,则该储存资讯表可对应储存其他内容,例如:修整代号。图5图解首位中等长度修整(304),其中修整逻辑区块地址lba8~lba4095,包括:步骤1,更新主机-快闪存储器映射表h2f;步骤2,编写修整资讯旗标表tifm、以及修整代号trim_code;以及,步骤3,将修整资讯填入快取区data_cache。步骤1,控制器204在动态随机存储器206上更新逻辑区块地址lba8~lba4095(即ghp1~ghp511)对应的映射子表h2f_g0,以更新该主机-快闪存储器映射表h2f。控制器204填入虚置映射数据(如,零)作为全域主机页编号ghp1~ghp511的映射数据。不同于少量修整是填充虚置数据,中等长度数据修整是填充虚置映射数据。步骤2,控制器204编写修整资讯旗标表tifm、以及修整代号trim_code。修整资讯旗标表tifm各位元对应该快取区data_cache一个4kb储存格。修整代号trim_code则是填入前述储存资讯表中。接续在区间404后的4kb储存格所对应的修整资讯旗标表tifm位元设立为"1",表示该储存格4kb内容要解读为修整资讯,不可当使用者数据解读。控制器204是在上述储存资讯表对应填写4b的修整代号trim_code,包括:2b的数据"0xaaaa";以及2b的虚置代号(例如全零)。此实施方式中,修整代号trim_code是以2b编写。快取区data_cache是以切半的储存格,用2kb空间储存修整资讯。2kb"0xaaaa"代表2kb区间502所填写的修整资讯是中等长度修整的起始逻辑地址以及长度。步骤3,控制器204将修整资讯填入快取区data_cache,在2kb区间502中填入起始逻辑地址ghp1以及修整长度511,注明修整范围为ghp1~ghp511,即首位中等长度修整(304)要求修整的逻辑区块地址lba8~lba4095。如图所示,2kb区间502其他未使用到的地方是填入虚置数据。大量修整(306)则用到修整位元总表(trimbitmap,tbm),其中每1位元对应逻辑空间上2mb长度;"1"代表修整。4tb容量的装置需建构256kb(=4tb/2mb)的修整位元总表tbm。如此庞大的修整位元总表tbm还可以2kb为单位分组,分为128个修整位元子表tbm_g#(#为子表编号)。完整256kb修整位元总表tbm可载于动态随机存取存储器206上动态管理。但写入快取区data_cache作为修整资讯冲至主动区块a_blk的可以只是修整位元子表tbm_g#。图6a以及图6b图解大量修整(306),其中修整逻辑区块地址lba4096~lba100663295,包括:步骤1,更新修整位元总表tbm;步骤2,编写修整资讯旗标表tifm、以及修整代号trim_code;以及,步骤3,将修整资讯填入快取区data_cache。步骤1,控制器204对动态随机存储器206上暂存的256kb修整位元总表tbm进行更新。逻辑区块地址lba4096~lba100663295即lba2mb~49152mb,对应修整位元总表tbm中的位元1~24596,属修整位元总表tbm前3kb的内容。如图所示,控制器204将修整位元总表tbm中的位元1~24596翻成"1",其中涉及两个修整位元子表:tbm_g0(第一段2kb内容);以及tbm_g1(第二段2kb内容)。步骤2,控制器204编写修整资讯旗标表tifm、以及修整代号trim_code。控制器204是规划修整位元子表tbm_g0(第一段2kb内容)、以及tbm_g1(第二段2kb内容)分别由快取区data_cache的2kb区间602、以及2kb区间604快取。区间602所属该4kb空间(包括区间502以及602)早已由修整资讯旗标表tifm中对应位元标示("1")。控制器204在此步骤是对接续4kb快取空间(包括区间604)进行标示,使修整资讯旗标表tifm中对应位元也为"1"。控制器204编写修整代号trim_code。对应区间502的0xaaaa之后是对应区间602填写一子表编号0x0000(为修整位元子表tbm_g0的编号),再对应区间604填写一子表编号0x0001(为修整位元子表tbm_g1之编号)。步骤3,控制器204将修整资讯填入快取区data_cache,在2kb区间602填入修整位元子表tbm_g0,并在2kb区间604填入修整位元子表tbm_g1。图6b图解填入快取区data_cache区间602、604的修整位元子表tbm_g0、tbm_g1。2kb的修整位元子表tbm_g0中,只有第一个位元(对应首位少量、以及中等长度修整已经处理的ghp0~ghp511)为零,其余位元都是1。2kb的修整位元子表tbm_g1中,头1kb位元为1,其余位元都是0。逻辑区块地址范围lba2mb~49152mb即(lba4096~lba100663295)被修整。大量修整(306)后,控制器204进行末位中等长度修整(308)。随后,控制器204进行末位少量修整(310)。图7图解末位中等长度修整(308)。修整逻辑区块地址lba100663296~lba100664319,对应全域主机页编号ghp0xc00000~ghp0xc0007f,技术同首位中等长度修整(304)。步骤1,控制器204在动态随机存储器206上更新逻辑区块地址lba100663296~lba100664319(即ghp0xc00000~ghp0xc0007f)对应的映射子表h2f_g48,以更新该主机-快闪存储器映射表h2f。控制器204填入虚置映射数据作为全域主机页编号ghp0xc00000~ghp0xc0007f的映射数据。步骤2,控制器204编写修整资讯旗标表tifm、以及修整代号trim_code。快取区data_cache上,2kb的区间702对应末位中等长度修整(308)。区间702所属该4kb空间(包括区间604以及702)早已由修整资讯旗标表tifm中对应位元标示("1"),故此步骤没有变动之。至于修整代号trim_code,在相应区间604的修整位元子表tbm_g1编号0x0001之后,控制器204相应区间702填上"0xaaaa",代表2kb区间702所快取的是中等长度修整的修整资讯。步骤3,控制器204将修整资讯填入快取区data_cache,在2kb区间702中填入起始逻辑地址ghp0xc0000以及修整长度0x80,注明修整范围为ghpc0000~ghp0xc0007f,即末位中等长度修整(308)要求修整的逻辑区块地址lba100663296~lba100664319。图8图解末位少量修整(310),其中修整逻辑区块地址lba100664320~lba100664323,对应全域主机页编号ghp0xc00080。技术同首位少量修整(302)。步骤1,控制器204对应修整逻辑区块地址范围lba100664320~lba100664323填写虚置数据至快取区data_cache的区间802,并将逻辑地址lba100664324~lba100664327(不修整区间)的原本数据填入快取区data_cache的区间804。区间802的2kb虚置数据、以及区间804中关于逻辑地址lba100664324~lba100664327的2kb数据组合成4kb数据,符合4kb数据管理单元,由快取区data_cache一个储存格快取。步骤2,控制器204在动态随机存储器206上更新逻辑区块地址lba100664320~lba100664327(即ghp0xc00080)对应的映射子表h2f_g48,以更新该主机-快闪存储器映射表h2f。如此一来,全域主机页编号ghp0xc00080的映射绑定此4kb内容。虚置数据代表逻辑区块地址lba100664320~lba100664323的修整状态。图9整理lba5~lba100664323修整指令执行后,动态随机存取存储器206上存在内容。快取区data_cache上,修整标签trim_tag占4个储存格。区间402以及404相应首位少量修整(302),为原始数据(lba0~lba4)以及虚置数据结合的4kb内容。区间502占2kb,相应首位中等长度修整(304),所载为起始逻辑地址ghp1以及长度511。区间602以及604各占2kb,相应大量修等(306),所载为修整位元子表tbm_g0以及tbm_g1。区间702占2kb,相应末位中等长度修整(308),所载为起始逻辑地址ghp0xc00000以及修整长度0x80。区间802以及804相应末位少量修整(310),为虚置数据以及lba100664324~lba100664327原始数据结合的4kb内容。相应该修整标签trim_tag,修整资讯旗标表tifm载有四个位元"0"、"1"、"1"、"0"。中间的两个"1"使得储存资讯表上对应的8b全域主机页编号ghp#储存区域转而储存修整代号trim_code,为[0xaaaa;0x0000;0x0001;0xaaaa]。至于主机-快闪存储器映射表h2f,动态随机存取存储器206上只载有最末少量修整(310)时处理到的映射子表h2f_g48。但结合已封存到系统资讯区块info_blk的主机-快闪存储器映射表h2f,可知前述修整过程中,映射资讯仅有部分更新,包括:ghp0指向区间402以及404所在4kb空间;ghp1~ghp511、ghp0xc0000~0xc0007f填虚置映射数据;且ghp0xc00080指向区间802以及804所在4kb空间。未来得及更新的映射资讯载明在修整位元总表tbm。如图所示,修整位元总表tbm则在前3kb处,标示出lba2m~49152mb的已修整状况,弥补主机-快闪存储器映射表h2f未同步更新的部分。一种实施方式中,主机208发出读取要求时,控制器204可根据主机208要求读取的逻辑区块地址区间查询该修整位元总表tbm。"1"代表对应的2mb已修整。若为"0",控制器204需再查询该主机-快闪存储器映射表h2f。虚置映射数据代表该段空间已修整。若指向虚置数据(如404、802),其解读同修整空间。图示占据4个4kb快取储存格的修整标签trim_tag,需与其相应的修整资讯旗标[0,1,1,0]、以及8b的修整代号trim_code([0xaaaa,0x0000,0x0001,0xaaaa])冲(flush)至快闪存储器202主动区块a_blk做非挥发式储存,以应付非预期断电后,于复电程序重建修整状况的需求。修整标签trim_tag可写入一页的数据区。修整代号trim_code([0xaaaa,0x0000,0x0001,0xaaaa])可以该页的闲置区域210中,原本规划来储存映射的全域主机页编号ghp#的地方。修整资讯旗标[0,1,1,0]可在闲置区域210中另外储存,也可另外编码结合在修整代号trim_code中。以下讨论控制器204冗闲时,如何完成主机-快闪存储器映射表h2f的更新。主机-快闪存储器映射表h2f更新会一并维护快闪存储器202各区块的一有效页数(validpagecount)表。即使以修整位元总表tbm暂时应付修整指令,修整对有效页数表的影响也能在控制器204冗闲时反应在有效页数表上。一种实施方式中,控制器204将该修整位元总表tbm的"1"值逐位元翻成"0"。每位元翻转对应2mb,是以前述中等长度修整技术(图5或7),将此2mb的修整反应在对应的映射子表h2f_g#、以及快取区data_cache上,并以前述大量修整区间的修整技术(图6a、6b),将有逐位元翻转的修整位元子表tbm_g#一一快取于快取区data_cache。图10a、10b以及10c图解该修整位元总表tbm一位元的"1"至"0"翻转。图10a显示翻转的目标位元,即目标修整位元子表tbm_g0头一个"1"位元,将之翻成"0",即目标修整ghp512~ghp1023。图10b采用前述中等长度修整技术(图5或7),将目标位元相应的2mb目标修整(ghp512~ghp1023)更新至该主机-快闪存储器映射表h2f,并包括快取区data_cache、修整资讯旗标表tifm、以及修整代号trim_code的编写。步骤1,控制器204在动态随机存储器206上更新该2mb目标修整(ghp512~ghp1023)对应的映射子表h2f_g1,以更新该主机-快闪存储器映射表h2f。控制器204填入虚置映射数据(如,零)作为全域主机页编号ghp512~ghp1023的映射数据。步骤2,控制器204编写修整资讯旗标表tifm、以及修整代号trim_code。修整资讯旗标表tifm的一位元设定"1",标示此次目标位元翻转会使用到的快闪区data_cache储存格。控制器204是规划快取区data_cache的2kb区间1002(半个储存格)储存此目标修整(ghp512~ghp1023)的起始逻辑地址ghp512以及长度512。对应的4b修整代号trim_code即以"0xaaaa"指示区间1002内容的解读方式。剩余2b修整代号trim_code则暂填虚置数据。步骤3,对应"0xaaaa"修整代号,控制器204将目标修整(ghp512~ghp1023)起始逻辑地址ghp512以及长度512填入快取区data_cache的2kb半个储存格1002。图10c采用前述大量区间修整技术(图6a、6b),将目标位元已翻转的目标修整位元子表tbm_g0载入快取区data_cache。步骤1,控制器204对动态随机存储器206上暂存的256kb的修整位元总表tbm进行更新。即第二位元翻"0"。步骤2,控制器204编写修整资讯旗标表tifm、以及修整代号trim_code。控制器204是规划区间1004快取该目标修整位元子表tbm_g0。区间1004所属该4kb空间(包括区间1002以及1004)早已由修整资讯旗标表tifm中对应位元标示("1"),此处不再调整。但该修整代号trim_code中,控制器204在对应区间1002的0xaaaa之后的2b填写该目标修整位元子表tbm_g0的目标子表编号0x0000。步骤3,控制器204在2kb区间1004中填入最新版本的该目标修整位元子表tbm_g0。整理之,控制器204是在填写一指令完成伫列(completionqueue)回报主机208一第一指令完成后,但尚未自一指令伫列(commandqueue)获得主机208发出的一第二指令时,利用此闲冗区间,逐位元将修整位元总表tbm状况更新到主机-快闪存储器映射表h2f。每位元翻转指涉及一个映射子表h2f_g#更新,不会过度耗时。以下还讨论主机208的写入指令。倘若要求写入的逻辑地址是由该修整位元总表tbm标示成已修整,控制器204需要以前述修整位元总表tbm翻转技术更新该主机-快闪存储器映射表h2f(图10a~10c),再进行写入动作。图11图解lba10240(5mb)起始的12kb写入如何被回应。快取区data_cache以2kb区间1102以及2kb区间1104反映该修整位元总表tbm相应位元的翻转。此例中,该修整位元总表tbm的第三个位元(对应5mb,属修整位元子表tbm_g0)为翻转的目标位元,对应2mb目标修整ghp1024~1535,其映射资讯属映射子表h2f_g3。控制器204将映射子表h2f_g3为全域主机页ghp1024~1535全数填上虚置映射数据,并在快取区data_cache半个储存格的2kb空间1102储存目标修整ghp1024~1535的起始逻辑地址ghp1024、以及长度512。随后,控制器204翻转该修整位元总表tbm,并将翻转后的该修整位元子表tbm_g0填入储存格1104。同前述技术,虽未绘制在图中,但对应区间1102、1104的填写,控制器204还将修整资讯旗标表tifm对应位元设立为"1",且修整代号trim_code为[0xaaaa,0x0000]。映射子表h2f_g3反映出ghp1024~1535修整状况后,控制器204就可以安心进行其上12kb的使用者数据写入。如图所示,控制器204将12kb写入数据快取于区间1106所标示的三个储存格。此时,本全为虚置映射数据的映射子表h2f_g3,其中全域主机页编号ghp1279~1281会改成指向区间1106。全域主机页编号ghp1024~1278、以及ghp1282~1535的修整状态仍可由其虚置映射资讯观察而得。一种实施方式中,非预期断电事件发生时,为了善用装置电力,控制器204可能只会挽救动态随机存取存储器206部分内容,例如,只将快取区data_cache内容、快取区data_cache各储存格对应资讯(包括标示逻辑地址、或修整代号的各储存格储存资讯、以及修整资讯旗标表tifm)冲至快闪存储器202。修整位元总表tbm会遗失。主机-快闪存储器映射表h2f部分内容可能也来不及更新。因此,非预期断电的复电(suddenpower-offrecovery,spor)需要一个重建机制,重建修整位元总表tbm、以及主机-快闪存储器映射表h2f。图12a、12b、12c根据本发明一种实施方式图解表格重建机制。参阅图12a,复电时,控制器204扫描快闪存储器202(例如,根据系统资讯区块info_blk所载的区块使用顺序),于各区块的区块结尾资讯eob中收集到一串修整资讯旗标1202。各位元对应所属区块相对位置的4kb数据、以及该4kb数据的4b储存资讯(为全域主机页编号ghp#、或是修整代号trim_code)。位元值"0",则对应的该4kb数据被解读为使用者数据,对应的4b储存资讯乃映射的全域主机页编号ghp#。位元值"1",则对应的该4kb数据被解读为修整资讯,对应的4b储存资讯乃修整代号trim_code。该串修整资讯旗标1202对应五段各为4kb的数据,且对应的五段各为4b的储存资讯1204。储存资讯1204也可以是自区块结尾资讯eob取得。如图所示,该串修整资讯旗标1202中,第一个"1"值对应储存资讯1204内的4b储存资讯[0xaaaa,0x0003],表示其在区块中对应的4kb数据乃两种类型的修整资讯。"0xaaaa"表示前端2kb数据乃一中等长度修整的起始逻辑地址、以及长度。非"0xaaaa"的"0x0003"则应当解读为一子表编号,表示后端2kb数据乃一大量修整的修整位元子表tbm_g3。该串修整资讯旗标1202另有第二个"1"值,对应储存资讯1204内的4b储存资讯[0xaaaa,虚置数据],表示其在区块中对应的4kb数据只有前端2kb数据有意义。"0xaaaa"表示前端2kb数据乃一中等长度修整的起始逻辑地址、以及长度。以下特别讨论该串修整资讯旗标1202中第一个"1"值所涉及的表格重建。参阅图12b,根据"0xaaaa",区块中对应的2kb数据乃一中等长度修整的起始逻辑地址ghp0x100、以及长度0x80。控制器204在动态随机存取存储器206上,将相应的映射子表h2f_g0载出,令全域主机页编号ghp0x100~ghp0x17f的映射数据都填虚置映射数据。因此,主机-快闪存储器映射表h2f更新,确实反映出全域主机页编号ghp0x100~ghp0x17f的修整状态。参阅图12c,根据"0x0003",区块中对应的2kb数据乃一大量修整的修整位元子表tbm_g3。控制器204会将此2kb修整位元子表tbm_g3更新到动态随机存取存储器206上完整维护的修整位元总表tbm中,重建修整位元总表tbm。图13根据本发明一种实施方式图解修整指令(trimcommand)处理方法。步骤s1302接收一修整指令。步骤s1304分类该修整范围(图3)。步骤s1306进行首位少量修整(图4),若不存在首位少量修整可跳过此步骤。步骤s1308进行首位中等长度修整(图5),若不存在首位中等长度修整可跳过此步骤。步骤s1310进行大量修整(图6a、6b),若不存在大量修整可跳过此步骤。步骤s1312进行末位中等长度修整(图7),若不存在末位中等长度修整可跳过此步骤。步骤s1314进行末位少量修整(图8),若不存在末位少量修整可跳过此步骤。各分类修整完毕后,该修整指令即完成。如,控制器204可回填指令完成伫列(completionqueue)告知主机208修整完成,控制器204可再接收主机208其他指令。如前述,流程中大量修整(s1310)并不会耗费资源在主机-快闪存储器映射表h2f更新上。控制器204以图13修整程序快速回应修整指令,进而执行主机208接续其他要求。图13修整程序后,动态随机存取存储器206所维护的内容可如图9所示。关于主机208再发出的读取指令,控制器204会参考该修整位元总表tbm进行,避免漏掉尚未更新到主机-快闪存储器映射表h2f的修整状况。非预期断电时,控制器204会将修整标签trim_tag、tifm中相应的修整资讯旗标、以及修整代号trim_code冲(flush)至快闪存储器202,以应付复电需求。图14为流程图,根据本发明一种实施方式图解如何根据该修整位元总表tbm背景更新该主机-快闪存储器映射表h2f。步骤s1402,对应一修整位元子表tbm_g#中一位元的"1"'"0"翻转,控制器204以中等长度修整更新该主机-快闪存储器映射表h2f(包括相应映射子表h2f_g#填写虚置映射数据、且将其起始逻辑地址以及长度快取于快取区data_cache)。步骤s1404,控制器204以大量修整将新版的该修整位元子表tbm_g#快取于该快取区data_cache。步骤s1406判断控制器204是否闲冗;例如,主机208塞入指令伫列(commandqueue)中的指令是否都执行完毕。空闲的控制器204可还在步骤s1408确定该修整位元总表tbm尚未完全被"1"'"0"翻转时,再次进行步骤s1402以及s1404。若控制器204有待应付的主机208指令,则进行步骤s1410回应主机208新发出的指令。图15为流程图,根据本发明一种实施方式图解如何回应主机208发出的写入指令。步骤s1502,控制器204接收一写入指令。步骤s1504,控制器204查询该修整位元总表tbm,确定该写入指令要求写入数据的逻辑地址是否被该修整位元总表tbm标注。若是标注在一修整位元子表tbm_g#的一位元bit#,控制器204进行步骤s1506,对该修整位元子表tbm_g#的该位元bit#作"1"'"0"翻转,其中以中等长度修整更新该主机-快闪存储器映射表h2f(包括相应映射子表h2f_g#填写虚置映射数据、且将其起始逻辑地址以及长度快取于快取区data_cache),再以大量修整将新版的该修整位元子表tbm_g#快取于该快取区data_cache。步骤s1508,控制器204将写入数据快取于该快取区data_cache。步骤s1510,控制器204更新主机-快闪存储器映射表h2f,将写入数据的映射资讯填为该快取区data_cache。以上步骤妥善应付大量修整后发生的少量写入。图16为流程图,根据本发明一种实施方式图解如何一复电程序。步骤s1602复电。步骤s1604,控制器204扫描快闪存储器202(例如,根据程序化顺序),获得一串修整资讯旗标。步骤s1606,控制器204判读该串修整资讯旗标其中一位元。若为"1",控制器204以步骤s1608还判读修整代号。若为"0xaaaa",控制器204以步骤s1610解读出一中等长度修整的起始逻辑地址以及修整长度,据以重建该主机-快闪存储器映射表h2f中对应部分(填虚置映射数据)。步骤s1608若判断出修整代号为一修整位元子表tbm_g#的子表编号,控制器204以步骤s1612解读出修整位元子表tbm_g#,据以重建该修整位元总表tbm。步骤s1614判别是否该修整资讯旗标对应的两个修整代号都完成判读。若否,控制器204再次进行步骤s1608。若是,控制器204以步骤s1616判断是否该串修整资讯旗标处理完毕。若否,控制器重回步骤s1606。若是,流程结束。步骤s1606若判读一修整资讯旗标为"0",则进行步骤s1618,控制器204解读出4kb使用者数据对应的全域主机页编号ghp#,据以更新该主机-快闪存储器映射表h2f。以上控制器204对快闪存储器202的操作设计也可以由其他结构实现。凡是根据前述概念执行修整者,都属于本发明欲保护范围。本发明还可以前述概念实现非挥发式存储器的控制方法。虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟悉本
技术领域
:者,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当由权利要求书界定为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1