闪存区块选取方法及数据储存装置的制作方法

文档序号:6771528阅读:166来源:国知局
专利名称:闪存区块选取方法及数据储存装置的制作方法
技术领域
本 发明是有关于闪存,特别是有关于闪存区块选取。
背景技术
闪存包括多个区块(block),每一区块包含用以储存数据的多个页(page)。当控制器欲将数据储存至闪存,必须自闪存的多个区块选择其中之一区块,以供储存数据。为了管理闪存中区块的数据储存,控制器有时亦必须自闪存的多个区块选择其中之一,以删除被选择区块所储存的数据。被选择的区块称之为「牺牲区块」(victim block)。因此,控制器经常必须自闪存的多个区块选择ー牺牲区块,以供数据删除或数据储存。一般来说,当控制器选择牺牲区块吋,并非盲目的进行选择,而是依据闪存中各区块的分数(score)高低而进行选择。控制器可能会事先对闪存中的所有区块进行评分,再依据分数高低选择牺牲区块。例如,若分数愈高的区块愈适合成为牺牲区块,则控制器选择对应于分数的最大值的区块作为牺牲区块;而若分数愈低的区块愈适合成为牺牲区块,则控制器选择对应于分数的最小值的区块作为牺牲区块。因此,当控制器选择牺牲区块时,必须事先由闪存的所有区块的分数中找出分数的极值(extreme value)。寻找极值并不是件容易的事。首先,控制器必须维护一分数数据串,此分数数据串记载闪存中所有的区块的分数。接着,控制器必须在相当短的时间内依据分数数据找到分数极大值。举例来说,依据闪存的规格,当主机发送ー写入命令至控制器,自控制器接到写入命令开始起算,控制器至多仅能花费200ms将数据写入。因此,控制器搜寻分数极值的时间无法超过200ms。控制器找到分数极大值所需花费的时间与分数数据串的数据结构有夫。举例来说,图IA为以串行方式储存闪存区块的分数数据的示意图。X个区块的分数S1 Sx依序储存为数据储存単元101 10X,而控制器必须逐一搜寻数据储存単元101 10X,才能找到分数S1 Sx中的极值。因此,对以串行方式储存的分数数据搜寻极值所需的时间最长。图IB为以ニ元树方式储存闪存区块的分数数据的示意图。ニ元树的ー节点分生为左方子树(left subtree)与右方子树(right subtree),其中左方子树的节点资料值均小于根节点的数据值,而右方子树的节点数据值均大于根节点的数据值。因此,ニ元树中储存的数据极值便是ニ元树的右下方节点。例如,图IB中的ニ元树120所储存的分数数据S1 S12中的极大值是节点128储存的分数S6。虽然以ニ元树的数据结构储存数据易于寻找极值,但当新数据欲存入ニ元树时需耗费大量时间。例如当欲将分数S12存入ニ元树120时,需逐次与节点121、123、125、127、130进行分数大小的比较,耗费许多时间。当ニ元树中储存的数据愈多时,维护ニ元树的数据必须耗费过多的时间,不利于控制器的数据存取。因此,需要ー种数据结构,可以让控制器于短时间内记录闪存区块的分数,又可让控制器于短时间内搜寻出闪存区块分数的极值
发明内容
有鉴于此,本发明的目的在于提供一种闪存区块选取方法,以解决习知技术存在的问题。首先,将ー闪存的多个区块分为多个区块群,其中每一区块群包括一第一数目的区块。接着,将这些区块群分为多个区块大群,其中每一区块大群包括一第二数目的区块群。接着,于ー评分记录表中记录该闪存的这些区块对应的分数(score)。接着,于ー极值记录表中记录姆一这些区块群所包含的区块对应的分数的一第一极值(extreme value)、姆ー这些区块大群所包含的区块对应的分数的一第二极值、以及该闪存的所有这些区块对应的分数的ー总极值。当这些区块中的一目标区块对应的分数有修改时,将该修改后分数与该极值记录表中对应于该目标区块的该第一极值、该第二极值、以及该总极值比较,以决定是否将该第一极值、该第二极值、以及该总极值置换为该修改后分数。最后,依据该极值记录表中记录的该总极值自该闪存的这些区块决定ー牺牲区块(victim block)以供运用。本发明提供ー种数据储存装置。于ー实施例中,该数据储存装置包括ー闪存、一随机存取内存、以及ー控制器。首先,该闪存包含多个区块大群,其中每一区块大群包括一第一数目的区块群,每一区块群包括一第二数目的区块。该随机存取内存储存一评分记录表及ー极值记录表,其中该评分记录表中记录该闪存的这些区块对应的分数(score), 而该极值记录表中记录姆一这些区块群所包含的区块对应的分数的一第一极值(extremevalue)、每ー这些区块大群所包含的区块对应的分数的一第二极值、以及该闪存的所有这些区块对应的分数的ー总极值。该控制器依据该极值记录表中记录的该总极值自该闪存的这些区块决定ー牺牲区块(victim block)以供运用,以及当这些区块中的一目标区块对应的分数有修改时,将该修改后分数与该极值记录表中对应于该目标区块的该第一极值与该第二极值以及该总极值比较,以决定是否将该第一极值、该第二极值、以及该总极值置换为该修改后分数。为了让本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举数较佳实施例,并配合所附图示,作详细说明如下


图IA为以串行方式储存闪存区块的分数数据的示意图;图IB为以ニ元树方式储存闪存区块的分数数据的示意图;图2为依据本发明的数据储存装置的区块图;图3为依据本发明的闪存区块分群的示意图;图4为依据本发明的评分记录表的示意图;图5为依据本发明的极值记录表的示意图;图6为依据本发明的极值记录表的维护方法的流程图;图7为依据本发明的极值记录表自闪存选取区块的方法的流程图。
具体实施例方式图2为依据本发明的数据储存装置200的区块图。于ー实施例中,数据储存装置200包括一控制器202、ー闪存204、以及ー随机存取内存206。闪存204包括多个区块221 22Y,这些区块221 22Y分别用以储存数据。闪存204的所有区块221 22Y被区分为多个区块大群,每一区块大群又被区分为多个区块群,每一区块群包括一固定数目的区块。随机存取内存206中储存ー评分记录表212及ー极值记录表214。评分记录表212中记录闪存204中所有区块221 22Z的分数(score)。极值记录表214中记录每一区块群中的区块分数的极值、每一区块大群中的区块分数的极值、以及闪存204中的所有区块的分数的极值。极值记录表214中所记录的分数的极值(extreme value)可为分数的极大值或极小值。控制器202维持随机存取内存206中储存的评分记录表212及极值记录表214。当数据储存装置200断电前,由于随机存取内存206无法在无电源供应下保持数据,控制器202将随机存取内存206中储存的评分记录表212及极值记录表214转储存至闪存204的一特定区块中。当数据储存装置200重新上电后,控制器202自闪存204的特定区块中读取评分记录表212及极值记录表214的数据,再将评分记录表212及极值记录表214储存至随机存取内存206中。 当控制器202需要自闪存204的多个区块221 22Y中决定ー牺牲区块(victimblock)时,控制器202自极值记录表214读取闪存204中的所有区块的分数中的极值,再自闪存204选择对应此极值的区块作为牺牲区块。假设控制器202欲自闪存204选取ー牺牲区块以自该牺牲区块删除数据。于ー实施例中,区块的分数为区块的删除次数(erasecount)或有效页数目(valid page count)。删除次数表示一区块曾经被删除资料的次数,而有效页数目表示一区块所包含的储存有效数据的页的数目。因此,删除次数愈低的区块或有效页数目愈低的区块愈适合作为牺牲区块的候选者。因此,控制器202自极值记录表214读取删除次数或有效页数目的极小值,再自评分记录表212决定对应于该极小值的区块作为牺牲区块,最后命令闪存204将牺牲区块的数据删除。图3为依据本发明的闪存区块分群的示意图。闪存包括多个区块,这些区块首先被分为N个区块大群A N。接着,每一区块大群A N又被分为K个区块群,其中每一区块群包含Z个区块。举例来说,区块大群A被分为区块群A1 Ak,而区块群A1包含区块A11 Aiz,而区块群Ak包含区块Aki Akz。区块大群N被分为区块群N1 Nk,而区块群N1包含区块N11 Niz,而区块群Nk包含区块Nki Nkz。因此,闪存中共有(ZXKXN)个区块。于ー实施例中,Z的值为8 ( = 23),K的值为8 ( = 23),且N的值为256 ( = 28),因此闪存中共有214个区块。图4为依据本发明的评分记录表400的示意图。评分记录表400记录闪存中所有区块的分数值。假设闪存中包含区块大群A N,每一区块大群包含K个区块群,每一区块群包含Z个区块,则评分记录表400记录(ZXKXN)个区块的分数值。例如,区块大群A包含区块群A1 Ak,其中区块群A1包含区块A11 A1Z,区块群Ak包含区块Aki AKZ,则评分记录表400记录区块A11 Aiz的分数Sau Saiz以及区块Aki Akz的分数Saki Sakzo区块大群N包含区块群N1 NK,其中区块群N1包含区块N11 N1Z,区块群Nk包含区块Nki Nkz,则评分记录表400记录区块N11 Niz的分数Snii Sniz以及区块Nki Nkz的分数Smi
0NKZ0图5为依据本发明的极值记录表500的示意图。假设闪存中包含区块大群A、
B.....N,每一区块大群包含K个区块群,每一区块群包含Z个区块,则极值记录表500分别
记录(KXN)个区块群的分数极值、N个区块大群的分数极值Xa Xn、以及闪存中所有区块的分数极值Xl0talo举例来说,区块大群A包含区块群ApA2.....Ak,因此极值记录表500分别记录区块群A1. A2.....Ak的分数极值XA1、XA2.....Xak,再由分数极值XA1、XA2.....Xak中
比较可得出区块大群A的极值XA。区块大群N包含区块群N1. N2.....Nk,因此极值记录表
500分别记录区块群N1. N2.....Nk的分数极值Xni、Xn2.....Xnk,再由分数极值Xni、Xn2.....
Xffi中比较可得出区块大群N的极值Xn。当所有区块大群A、B.....N的极值XA、Xb.....Xn
均得到后,再可由极值XA、Xb.....Xn相互比较以得到所有区块的分数极值XT(rtal。图6为依据本发明的极值记录表的维护方法600的流程图。当区块因数据存取而使区块对应的分数产生变动时,控制器202依据方法600修正随机存取内存206中储存的极值记录表214的极值数据。首先,控制器202对闪存204的至少一目标区块进行影响分数的数据存取(步骤602)。举例来说,假设目标区块为图4中属于区块大群N的区块群N1 的区块Niq,而区块Niq的分数由Sniq变更为SN1Q’。接着,控制器202修改随机存取内存206中的评分记录表212所储存该目标区块的分数(步骤604)。接着,控制器202自极值记录表214中读取该目标区块对应的一目标区块群的分数极值(步骤606)。接着,控制器202决定是否该目标区块的修改后分数超过该目标区块群的分数极值(步骤608)。若目标区块的修改后分数超过该目标区块群的分数极值,则控制器202将极值记录表214中该目标区块群的分数极值修改为该目标区块的修改后分数(步骤610)。例如,于图5中,目标区块Niq所属的区块群N1的分数极值为XN1,因此控制器202比较分数极值Xni与目标区块Niq的修改后分数SN1Q。若目标区块Niq的修改后分数Sniq超过目标区块Niq所属的区块群N1的分数极值XN1,则控制器202将目标区块Niq所属的区块群N1的分数极值Xni修改为目标区块Niq的修改后分数SN1Q。接着,若目标区块的修改后分数超过该目标区块群的分数极值,则控制器202继续自极值记录表214中读取该目标区块对应的目标区块大群的分数极值(步骤612)。接着,控制器202决定是否该目标区块的修改后分数超过该目标区块大群的分数极值(步骤614)。若目标区块的修改后分数超过该目标区块大群的分数极值,则控制器202将极值记录表214中该目标区块大群的分数极值修改为该目标区块的修改后分数(步骤616)。例如,于图5中,目标区块Niq所属的区块大群N的分数极值为XN,因此控制器202比较分数极值Xn与目标区块Niq的修改后分数SN1Q。若目标区块Niq的修改后分数Sniq超过目标区块N1所属的区块大群N的分数极值XN,则控制器202将目标区块Niq所属的区块大群N的分数极值\修改为目标区块Niq的修改后分数SN1Q。接着,若目标区块的修改后分数超过该目标区块大群的分数极值,则控制器202继续自极值记录表214中读取一分数总极值(步骤618)。接着,控制器202比较是否该目标区块的修改后分数超过该分数总极值(步骤620)。若该目标区块的修改后分数超过该分数总极值,则控制器212将极值记录表214中该分数总极值修改为该目标区块的修改后分数(步骤622)。例如,于图5中,闪存204所属的所有区块的分数总极值为Xttrtal,因此控制器202比较分数总极值XT()tal与目标区块Niq的修改后分数SN1Q。若目标区块Niq的修改后分数Sniq超过闪存204包含的所有区块的分数总极值为Xtotal,则控制器202将闪存204所属的所有区块的分数总极值为Xtotal修改为目标区块Niq的修改后分数SN1Q。因此,控制器202仅需对目标区块Niq的修改后分数Sniq分别与目标区块群的分数极值XN1、目标区块大群的分数极值Xn、与分数总极值Xn进行比较,便可决定是否需修正极值记录表214中储存的极值数据XN1、XN、XT(rtal。与图IA及图IB的习知技术相比,依据本发明所需的维护数据的时间明显较低,因此本发明相较习知技术具有明显的优点。图7为依据本发明的极值记录表214自闪存204选取区块的方法700的流程图。首先,控制器202自极值记录表214读取一分数总极值XT(rtal (步骤702)。接着,控制器202自闪存204的多个区块221 22Y中选取该分数总极值XT()tal所对应的一目标区块(步骤704)。接着,控制器202决定该目标区块为ー牺牲区块(步骤706)。接着,控制器202命令该闪存204对该牺牲区块进行数据删除(步骤708)。因此,控制器202仅需读取扱值记录表214中的总极值Xttrtal便可自闪存204的多个区块221 22Y中选择ー牺牲区块。与图IA及图IB的习知技术相比,依据本发明所需的搜寻极值的时间明显较低,因此本发明相较 习知技术具有明显的优点。虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟习此项技术者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视后附的申请专利范围所界定者为准。
权利要求
1.一种闪存区块选取方法,包括下列步骤 将ー闪存分为多个区块大群,其中每一区块大群包括一第一数目的区块; 将每ー这些区块大群分为多个区块群,其中每一区块群包括一第二数目的区块群; 于ー评分记录表中记录该闪存的这些区块对应的分数; 于ー极值记录表中记录每一这些区块群所包含的区块对应的分数的一第一极值、每ー这些区块大群所包含的区块对应的分数的一第二极值、以及该闪存的所有这些区块对应的分数的一总极值; 当这些区块中的一目标区块对应的分数有修改时,将该修改后分数与该极值记录表中的对应于该目标区块的该第一极值及该第二极值以及该总极值比较,以决定是否将该第一极值、该第二极值、以及该总极值置换为该修改后分数;以及 依据该极值记录表中记录的该总极值自该闪存的这些区块决定ー牺牲区块以供运用。
2.如权利要求I所述的闪存区块选取方法,其特征在于,这些第一极值分别为这些区块群所包含的区块所对应的分数的极小值,这些第二极值分别为这些区块大群所包含的区块所对应的分数的极小值,而该总极值为该闪存的所有这些区块所对应的分数的极小值。
3.如权利要求I所述的闪存区块选取方法,其特征在于,这些第一极值分别为这些区块群所包含的区块所对应的分数的极大值,这些第二极值分别为这些区块大群所包含的区块所对应的分数的极大值,而该总极值为该闪存的所有这些区块所对应的分数的极大值。
4.如权利要求I所述的闪存区块选取方法,其特征在于,该修改后分数与对应于该目标区块的该第一极值及该第二极值以及该总极值的比较步骤包括 自该极值记录表中读取包含该目标区块的一目标区块群所对应的一目标第一极值; 比较该目标区块的该修改后分数与该目标第一极值; 当该修改后分数超过该目标第一极值,将该目标第一极值置换为该修改后分数,并自该极值记录表中读取包含该目标区块的一目标区块大群所对应的一目标第二极值; 比较该目标区块的该修改后分数与该目标第二极值; 当该修改后分数超过该目标第二极值,将该目标第二极值置换为该修改后分数,并自该极值记录表中读取该总极值; 比较该目标区块的该修改后分数与该总极值;以及 当该修改后分数超过该总极值,将该总极值置换为该修改后分数。
5.如权利要求I所述的闪存区块选取方法,其特征在于,该牺牲区块的该决定步骤包括 自该极值记录表读取该总极值; 自该闪存的这些区块中选取该总极值所对应的一区块作为该牺牲区块;以及 命令该闪存对该牺牲区块的进行数据处理。
6.如权利要求I所述的闪存区块选取方法,其特征在干,当包含该闪存的一数据储存装置被供电时,该评分记录表及该极值记录表储存于该数据储存装置的一随机存取内存中,而当包含该数据储存装置未被供电时,该评分记录表及该极值记录表储存于该闪存的一区块中。
7.如权利要求第I项所述的闪存区块选取方法,其特征在于,这些区块对应的这些分数为删除次数或有效数据页数。
8.ー种数据储存装置,包括 ー闪存,包含多个区块大群,其中每一区块大群包括一第一数目的区块群,每一区块群包括一第二数目的区块; 一随机存取内存,储存ー评分记录表及ー极值记录表,其中该评分记录表中记录该闪存的这些区块对应的分数,而该极值记录表中记录每一这些区块群所包含的区块对应的分数的一第一极值、每ー这些区块大群所包含的区块对应的分数的一第二极值、以及该闪存的所有这些区块对应的分数的ー总极值;以及 ー控制器,依据该极值记录表中记录的该总极值自该闪存的这些区块决定ー牺牲区块以供运用,以及当这些区块中的一目标区块对应的分数有修改时,将该修改后分数与该极值记录表中对应于该目标区块的该第一极值与该第二极值以及该总极值比较,以决定是否将该第一极值、该第二极值、以及该总极值置换为该修改后分数。
9.如权利要求8所述的数据储存装置,其特征在干,这些第一极值分别为这些区块群所包含的区块所对应的分数的极小值,这些第二极值分别为这些区块大群所包含的区块所对应的分数的极小值,而该总极值为该闪存的所有这些区块所对应的分数的极小值。
10.如权利要求8所述的数据储存装置,其特征在于,这些第一极值分别为这些区块群所包含的区块所对应的分数的极大值,这些第二极值分别为这些区块大群所包含的区块所对应的分数的极大值,而该总极值为该闪存的所有这些区块所对应的分数的极大值。
11.如权利要求8所述的数据储存装置,其特征在干,当该控制器比较该修改后分数与这些第一极值、这些第二极值、以及该总极值时,该控制器自该极值记录表中读取包含该目标区块的一目标区块群所对应的一目标第一极值,比较该目标区块的该修改后分数与该目标第一极值,当该修改后分数超过该目标第一极值时将该目标第一极值置换为该修改后分数并自该极值记录表中读取包含该目标区块的一目标区块大群所对应的一目标第二极值,比较该目标区块的该修改后分数与该目标第二极值,当该修改后分数超过该目标第二极值时将该目标第二极值置换为该修改后分数并自该极值记录表中读取该总极值,比较该目标区块的该修改后分数与该总极值,以及当该修改后分数超过该总极值时将该总极值置换为该修改后分数。
12.如权利要求8所述的数据储存装置,其特征在于,该控制器自该极值记录表读取该总极值,自该闪存的这些区块中选取该总极值所对应的一区块作为该牺牲区块,以及命令该闪存对该牺牲区块的进行数据处理。
13.如权利要求8所述的数据储存装置,其特征在干,当该数据储存装置的供电被终止前,该控制器将该评分记录表及该极值记录表自该随机存取内存中转储存至该闪存的一区块中。
14.如权利要求8所述的数据储存装置,其特征在于,这些区块对应的这些分数为删除次数或有效数据页数。
全文摘要
本发明提供一种闪存区块选取方法及数据储存装置。首先,将一闪存分为多个区块大群,并将每一这些区块大群分为多个区块群,其中每一区块群包括一第二数目的区块群。接着,于一评分记录表中记录该闪存的这些区块对应的分数。接着,于一极值记录表中记录每一这些区块群所包含的区块对应的分数的一第一极值、每一这些区块大群所包含的区块对应的分数的一第二极值、以及该闪存的所有这些区块对应的分数的一总极值。最后,依据该极值记录表中记录的该总极值自该闪存的这些区块决定一牺牲区块以供运用。
文档编号G11C16/02GK102760489SQ20111011293
公开日2012年10月31日 申请日期2011年4月25日 优先权日2011年4月25日
发明者乔梦麟 申请人:慧荣科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1