实体储存对照表维护方法以及使用该方法的装置与流程

文档序号:11829477阅读:202来源:国知局
本发明关连于一种快闪存储器装置,特别是一种实体储存对照表产生方法以及使用该方法的装置。
背景技术
::快闪存储器装置通常分为NOR快闪装置与NAND快闪装置。NOR快闪装置为随机存取装置,而可于地址引脚上提供任何的地址,用以存取NOR快闪装置的主装置(host),并及时地由NOR快闪装置的数据引脚上获得储存于该地址上的数据。相反地,NAND快闪装置并非随机存取,而是序列存取。NAND快闪装置无法像NOR快闪装置一样,可以存取任何随机地址,主装置反而需要写入序列的字节(bytes)的值到NAND快闪装置中,用以定义请求命令(command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(在快闪存储器中的一个写入作业的最小数据块)或一个区块(在快闪存储器中的一个抹除作业的最小数据块)。实际上,为了提升写入的速度,一段连续逻辑位置的数据可能被散布放置于数个实体的储存单元中,并且使用实体储存对应表来指出被写入到实体储存单元中的何处。本发明提出一种实体储存对应表产生方法,用以提升重建速度,以及使用该方法的装置。技术实现要素:本发明的实施例提出一种实体储存对照表维护方法,由处理单元执行,至少包含下列步骤。写入超过指定数目的逻辑区块的数据至储存单元后,依据未储存群组队列中的群组编号驱动存取接口,用以将储存于动态随机存取存储器中的实体储存对照表中的相应群组储存至储存单元中的区块。接着,更新动态随机存取存储器中的群组对照表,用以指出实体储存对照表中的群组的最新数据实际存放于储存单元中的哪个位置,以及将群组编号从未储存群组队列移 除。本发明的实施例提出一种实体储存对照表维护装置,至少包含存取接口与处理单元。存取接口耦接于储存单元。处理单元耦接于上述存取接口,于写入超过指定数目的逻辑区块的数据至储存单元后,依据未储存群组队列中的群组编号驱动存取接口,用以将储存于动态随机存取存储器中的实体储存对照表中的相应群组储存至储存单元中的区块。接着,处理单元更新动态随机存取存储器中的群组对照表,用以指出实体储存对照表中的群组的最新数据实际存放于储存单元中的哪个位置,以及将群组编号从未储存群组队列移除。附图说明图1是依据本发明实施例的快闪存储器的系统架构示意图。图2是依据本发明实施例的快闪存储器中的储存单元示意图。图3是依据本发明实施例的实体储存对照示意图。图4是依据本发明实施例的实体储存对照表的切分示意图。图5是依据本发明实施例的更新实体储存对照表的状态图。图6是依据本发明实施例的执行于数据写入状态中的方法流程图。图7是依据本发明实施例的执行于实体储存对照表写入状态中的方法流程图。图8是依据本发明实施例的未储存群组队列示意图。图9是依据本发明实施例的群组对照表示意图。图10是依据本发明实施例的执行于实体储存对照表写入状态中的方法流程图。图11是依据本发明实施例的群组及群组对照表储存示意图。图12是依据本发明实施例的重建实体储存对照表的方法流程图。【附图标记说明】10系统;110处理单元;120动态随机存取存储器;150存取接口;160主装置;170存取接口;180储存单元;210存储器单元阵列;220行解码单元;230列编码单元;240地址单元;250数据缓存器;300实体储存对照表;310实体位置信息;310a区块编号;310b单元编号;400_0~400_n群组;510闲置状态;530数据写入状态;550实体储存对照表写入状态;570群组对照表写入状态;S611~S671方法步骤;S711~S731方法步骤;800未储存群组队列;900群组对照表;900_0~900_n储存格;S1011~S1041方法步骤;1100储存单元中存放实体储存对照表的区块;S1211~S1241方法步骤。具体实施方式以下说明是为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的
发明内容必须参考之后的权利要求范围。必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。于权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。图1是依据本发明实施例的快闪存储器的系统架构示意图。快闪存储器的系统架构10中包含处理单元110,用以写入数据到储存单元180中的指定地址,以及从储存单元180中的指定地址读取数据。详细来说,处理单元110通过存取接口170写入数据到储存单元180中的指定地址,以及从储存单元180中的 指定地址读取数据。系统架构10使用数个电子信号来协调处理单元110与储存单元180间的数据与命令传递,包含数据线(dataline)、时脉信号(clocksignal)与控制信号(controlsignal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片致能(chipenable,CE)、地址提取致能(addresslatchenable,ALE)、命令提取致能(commandlatchenable,CLE)、写入致能(writeenable,WE)等控制信号。存取接口170可采用双倍数据率(doubledatarate,DDR)通讯协定与储存单元180沟通,例如,开放NAND快闪(openNANDflashinterface,ONFI)、双倍数据率开关(DDRtoggle)或其他接口。处理单元110另可使用存取接口150通过指定通讯协定与主装置160进行沟通,例如,通用序列总线(universalserialbus,USB)、先进技术附着(advancedtechnologyattachment,ATA)、序列先进技术附着(serialadvancedtechnologyattachment,SATA)、快速周边元件互联(peripheralcomponentinterconnectexpress,PCI-E)或其他接口。图2是依据本发明实施例的快闪存储器中的储存单元示意图。储存单元180可包含由MxN个存储器单元(memorycells)组成的阵列(array)210,而每一个存储器单元储存至少一个比特(bit)的信息。快闪存储器可以是NAND型快闪存储器,或其他种类的快闪存储器。为了正确存取信息,行解码单元220用以选择存储器单元阵列210中指定的行,而列编码单元230用以选择指定行中一定数量的字节的数据作为输出。地址单元240提供行信息给行解码器220,其中定义了选择存储器单元阵列210中的那些行。相似地,列解码器230则根据地址单元240提供的列信息,选择存储器单元阵列210的指定行中一定数量的列进行读取或写入操作。行可称为为字符线(wordline),列可称为比特线(bitline)。数据缓存器(databuffer)250可储存从存储器单元阵列210读取出的数据,或欲写入存储器单元阵列210中的数据。存储器单元可为单层式单元(single-levelcells,SLCs)、多层式单元(multi-levelcells,MLCs)或三层式单元(triple-levelcells,TLCs)。主装置160可通过存取接口150提供逻辑区块地址(LBA,LogicalBlockAddress)给处理单元110,用以指示写入或读取特定区域的数据。然而,为为最佳化数据写入的效率,存取接口170将一段具有连续逻辑区块地址的数据分散地摆放在储存单元180中的不同实体区域。因此,需要于动态随机存取存储器 中储存一个实体储存对照表(storagemappingtable,又称为H2FHost-to-Flash表),用以指出每个逻辑区块地址的数据实际储存于储存单元180中的哪个位置。图3是依据本发明实施例的实体储存对照示意图。实体储存对照表300依照逻辑储存地址的顺序,储存每一逻辑储存地址的数据实际储存于储存单元180中的哪个实体位置的信息。逻辑储存地址可以逻辑区块地址(LBA,LogicalBlockAddress)表示,每一个逻辑区块地址对应到一个固定大小的实体储存空间,例如256K、512K或1024K字节(Bytes)。例如,实体储存对照表300依序储存由LBA0至LBA65535的实体位置信息。固定数目的连续逻辑区块的实体位置信息310可以4个字节表示,其中的2个字节310a记录区块编号(blocknumber),而另2个字节310b记录单元编号(unitnumber)。例如,此4个字节可指示连续八个实体区块的起始区块编号以及起始单元编号,而这八个实体区块又可统称为一个主页面(hostpage)。举例来说,储存对照表300所需要的空间从64M到1G字节不等。由于NAND快闪装置并非随机存取装置,为了提升写入的效率,主装置160需要提供至少一个逻辑区块的连续性数据,例如512字节的数据,使得储存装置180可以有效率的方式摆放到储存单元180。当主装置160写入数据到不同的逻辑区块时,例如写入逻辑区块地址LBA0、LBA1000、LBA4500、LBA10000,储存于动态随机存取存储器180中的实体储存对照表300中的相应实体位置信息也要随着更新。为了避免动态随机存取存储器180中储存的实体储存对照表300因断电而消失,需要一种方法有效率地将实体储存对照表300中已更新的实体位置信息写入到储存单元180中。如果每次主装置160写入一个逻辑区块的数据(例如512K字节)就相应地更新储存单元180中的实体位置信息(例如2字节),将使得存取接口170因频繁写入而不具效率。所以,于一些实施例中,可将实体储存对照表300切分成n个群组(groups),做为更新至储存单元180的最小单位。图4是依据本发明实施例的实体储存对照表的切分示意图。实体储存对照表300分为群组400_0至400_n,每一个群组包含4096个逻辑区块的实体位置信息(例如2K字节)。图5是依据本发明实施例的更新实体储存对照表的状态图。处理单元110依据不同的触发事件来进入不同的状态,并执行每个状态中所需要的操作。处理单元110初始处于闲置状态(idlestate)510,并且在经由存取接口150接收到 主装置160所发出的写入命令后进入数据写入状态(dataprogrammingstate)530。于数据写入状态中,处理单元110执行如下所示的一连串的操作,用以将数据写入储存单元180并更新动态随机存取存储器180中储存的实体储存对照表300。图6是依据本发明实施例的执行于数据写入状态中的方法流程图。处理单元110通过存取接口150取得一或多个逻辑区块地址(LBA)以及待写入的数据后(步骤S611),驱动存取接口170将数据写入到储存单元180中的有效区块(activeblock)中的单元(unit)(步骤S613)。有效区块以及写入单元分别以区块编号及单元编号表示。接着,更新动态存取存储器180中储存的实体储存对照表300,用以更新取得的逻辑区块地址的实体位置信息(步骤S615),以及更新未储存群组队列(unsavedgroupqueue)(步骤S617)。未储存群组队列可记录于动态存取存储器180中,用以储存实体储存对照表300中的那些群组已经更新但尚未写入储存单元180的信息。假设,实体储存对照表300的群组切分如图4所示。处理单元110将逻辑区块地址LBA0、LBA1000、LBA4500、LBA10000的数据写入至储存单元180,并据以更新动态存取存储器180中实体储存对照表300的逻辑区块地址LBA0、LBA1000、LBA4500、LBA10000的实体位置信息。逻辑区块地址LBA0、LBA1000、LBA4500、LBA10000的实体位置信息分别属于第0个、第0个、第1个及第2个群组。处理单元110会检查未储存群组队列是否包含这些群组编号,如果没有,则将缺少的群组编号加入未储存群组队列。例如,当未储存群组队列只包含第0个、第1个、第8个及第10个群组的编号时,则将第2个群组的编号加入至未储存群组队列。接着,处理单元110判断是否已写入超过指定数目的逻辑区块的数据,例如7680个(步骤S631)。若是,进入实体储存对照表写入状态(Storage-mapping-tableProgrammingState)550(步骤S651);否则,回到闲置状态(IdleState)510(步骤S671)。步骤S631的判断可经由检查一个写入计数器完成。此写入计数器可在每写入一个逻辑区块的数据后加一,并且在每次执行完实体储存对照表写入状态550中的处理时重设为0。值得注意的是,经由步骤S631的判断,可于写入指定数目的逻辑区块的数据后再将更新过的群组写入至储存单元180,用以避免如上所述的因频繁写入更新后的实体位置信息而造成存取接口170的使用不具效率的问题。图7是依据本发明实施例的执行于实体储存对照表写入状态中的方法流程 图。此方法流程反复执行一个回圈,直到未储存群组队列中所指示的实体储存对照表300的所有群组都写入储存单元180为止(步骤S711至S721)。图8是依据本发明实施例的未储存群组队列示意图。未储存群组队列800为一个阵列(array),包含多个储存格(cells),每一储存格存放储存实体储存对照表300中的特定群组已经更新但尚未写入储存单元180的信息。例如,“G1”代表实体储存对照表300中的第0个群组;“G8”代表实体储存对照表300中的第8个群组,依此类推。于每一回合的执行中,处理单元110从未储存群组队列800中取得一个群组编号(步骤S711),以及驱动存取接口170将实体储存对照表300中的相应群组写入储存单元(步骤S713)。于此须注意的是,储存单元180会设置一或多个指定的区块来储存实体储存对照表300的数据,例如,区块10至17,并且存取接口170会将此群组的数据写入至一个可用的单元(spareunit)上,而不会覆写掉以前储存的数据。这些群组可依写入时间的先后依序储存。就算于数据写入状态530中仅更新此群组中的一个逻辑区块的实体位置信息,处理单元110还是会将一整个群组中所有的实体位置信息写入储存单元180。接着,处理单元110更新储存于动态随机存取存储器120中的群组对照表(groupmappingtable,又称为G2FGroup-to-Flash表),用以指出实体储存对照表300中的每个群组的最新数据实际存放于储存单元180中的哪个位置(步骤S715),以及将此群组编号从未储存群组队列中移除(步骤S717)。图9是依据本发明实施例的群组对照表示意图。群组对照表900为一个阵列,依照群组编号的顺序使用多个储存格900_0至900_n来储存每一群组的最新数据实际储存于储存单元180中的哪个实体位置的信息。例如,群组对照900依序储存从群组G0至Gn的实体位置信息。每一个储存格使用2个字节记录一个单元编号。例如,群组对照900中指出群组G0、G1及G2的最新数据实际存放在第100、200及300个单元上。当一个群组所对应到的所有逻辑区块还没有数据存放于储存单元180,相应的储存格会储存空值(nullvalue),空值可设定为“0xFF”。例如,图9中以斜线表示的储存格900_3储存空值,表示群组G3所对应到的所有逻辑区块都还没有数据存放于储存单元180。接着,处理单元110判断是否已写入所有群组的数据(步骤S721),若是,回到闲置状态510;否则,回到步骤S711,用以处理下一个未写入的群组。于步骤S721中,当处理单元110发现未储存 群组队列为一个空队列时,则判断已写入所有群组的数据。然而,未写入的群组越多则占用越多时间将动态随机存取存储器120中的数据储存至储存单元180。若处理单元110通过存取接口150由主装置160接收到读取或写入命令,但却碍于正在写入大量的群组数据至储存单元180而无法处理接收的命令,可能会造成接收到的读取或写入命令逾时无时处理。在另一些实施例中,处理单元110可限制群组数据的写入操作不超过一段既定的时间,用以避免如上所述的问题。图10是依据本发明实施例的执行于实体储存对照表写入状态中的方法流程图。为了让说明书简洁易懂,步骤S1011至S1017、S1031以及S1041的详细内容可分别参考图7中步骤S711至S717、S721以及S731的说明。处理单元110可于进入实体储存对照表写入状态550时,启动一个计时器(timer),而此计时器会在一段时间后逾时(expired),例如35ms(milliseconds)。每回合的群组数据写入后(步骤S1011至S1017),处理单元110更判断是否超过既定的时间(步骤S1021)。若是,不管有没有写完所有的群组数据,强制回到闲置状态(步骤S1041);否则,继续进行步骤S1031的判断。于步骤S1021中,当处理单元110发现计时器已逾时,则判断超过既定的时间。参考回图5,处理单元110处于闲置状态(idlestate)510并且接收到即时待命(standbyimmediate)命令时,进入群组对照表写入状态(group-mapping-tableprogrammingstate)570。于群组对照表写入状态中,处理单元110驱动存取接口170将动态随机存取存储器120中的群组对照表900写入至储存单元180。当储存单元180设置一或多个指定的区块来储存实体储存对照表300的数据时,存取接口170从指定区块中取得一页的可用空间来储存群组对照表900。于此须注意的是,群组对照表900接续在已写入群组的数据之后。图11是依据本发明实施例的群组及群组对照表储存示意图。指定来储存实体储存对照表300的数据的区块1100可包含多个页面。假设一个页面包含八个单元;且每个单元可存放一个群组的数据:当实体储存对照表300的数据依群组写入时间的先后顺序摆放在第0至23个单元时,群组对照表900储存于包含第24至31个单元的页面中。第32个单元之后的区域(斜线所示)为尚未被使用的储存空间。当快闪存储装置给电时,处理单元110依据储存单元180的群组对照表900以及群组数据,于动态随机存取存储器120中重建如图4所示的实体储存对照 表300。图12是依据本发明实施例的重建实体储存对照表的方法流程图。首先,处理单元驱动存取接口170从储存单元180中的指定区块的最后一页读取群组对照表并储存至动态随机存取存储器120(步骤S1211)。接着,反复执行一个回圈(步骤S1213至S1241),用以依据群组对照表的内容读取每一群组的最新数据并储存至动态随机存取存储器120。详细来说,于每一回合中,处理单元110于取得上一个页面的单元编号区间后,如单元编号16至23(步骤S1213),判断是否群组对照表中所储存的单元编号中的至少一者落入取得的单元编号区间(步骤S1221)。若是(步骤S1221中“是”的路径),代表此页面(范围包含步骤S1213所取得的单元编号区间)中储存至少一个群组的最新数据,处理单元110驱动存取接口170读取此页面的数据(步骤S1231),以及将群组对照表900所指示的群组数据储存至动态随机存取存储器的指定位置(步骤S1233)。于此须注意的是,步骤S1221的判断是用以避免不必要的页面读取作业,换句话说,当判断群组对照表中所储存的单元编号都没有落入取得的单元编号区间时,则跳过此页的处理。然而,熟习此技艺人士亦可省略步骤S1221的判断,直接逐页读出数据后再决定是否更新实体储存对照表300中的内容。以图11为例,假设群组对照表900指示群组G4、G6、G22、G23、G24以及G43的数据分别储存于第22、23、19、20、21、16个单元上:处理单元110从储存单元180读出第2页面的数据后,会将其中的第22、23、19、20、21、16个单元的数据储存至动态随机存取存储器120中配置给群组G4、G6、G22、G23、G24以及G43的位置。最后,处理单元110判断是否已处理完所有的页面(步骤S1241),若是则结束整个实体储存对照表的重建作业;否则,回到步骤S1213用以处理前一个页面的数据。于步骤S1241中,当处理单元110发现目前处理的页面为第0页,则判断已处理完所有的页面。虽然图1至图2中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,已达成更佳的技术效果。此外,虽然图6、7、10以及图12的流程图采用指定的顺序来执行,但是在不违法发明精神的情况下,熟习此技艺人士可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,熟习此技艺人士亦可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或平行地执行更 多步骤,本发明亦不因此而局限。虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了熟习此技艺人士显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1