本发明涉及存储器技术,尤其涉及一种提高闪存块管理中闪存块组织效率的方法与装置。
背景技术:
1、由于闪存flash的擦写寿命有限,一旦部分闪存块flash block的擦除次数超过其擦写极限,其上的数据丢失且被标记坏块,引起ssd的物理空间减少,会降低ssd的使用寿命,为避免ssd使用过程中flash block的擦除次数分配不均衡,采用磨损均衡算法使各个flash block负载均衡,擦写次数维持在一个平均范围内,这样可避免上述问题。
2、super block management是磨损均衡算法的实现载体。super block是以多个die、block组成的较大的逻辑block单元,是ftl中块管理操作的基本单位。对于所有superblock,ftl会根据其上所写的数据类型(有效数据个数,数据的冷热程度等)、其本身的物理状态(擦写次数,被读次数、glevel电压等)对它们进行分类与组织。
3、目前的主流做法是用有序链表进行组织,每次super block插入时会根据规定的条件进行排序,取出时则从链表的头部或者尾部取出所希望的最大值或者最小值,具体由实际情况而定。现有技术均立足于链表的数据结构来对闪存块进行管理,本发明希望从组织结构上着手来提高组织效率。
技术实现思路
1、本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种提高闪存块管理中闪存块组织效率的方法与装置。
2、本发明解决其技术问题所采用的技术方案是:一种提高闪存块管理中闪存块组织效率的方法,包括以下步骤:
3、1)将闪存物理存储区划分为多个以super block闪存块为单位的节点,并为节点按序赋予连续的地址信息;
4、2)根据闪存块节点的地址信息,构建闪存块的逻辑组织结构,与闪存物理存储区进行映射;具体如下:
5、2.1)评估当前闪存块的平均磨损程度;
6、2.2)若当前闪存块的平均磨损程度小于设定阈值,采用最小堆结构树建立逻辑组织结构;
7、2.3)若当前闪存块的平均磨损程度大于设定阈值,采用最大堆结构树建立逻辑组织结构;
8、3)对逻辑组织结构进行添加节点操作;
9、将新的节点添加到逻辑组织结构的树结构中的最后一个叶节点处,并进行节点调整以维持原有的逻辑组织结构;
10、4)对逻辑组织结构进行取出节点操作;
11、根据需要确定要取出的节点,并进行节点调整以维持原有的逻辑组织结构;
12、当逻辑组织结构为最小堆结构树,
13、若需要取出磨损程度值最小的节点,则取出根节点,并将最后一个叶节点作为新的根节点,并进行节点调整以维持最小堆结构;
14、若需要取出磨损程度值较大或最大的节点,则根据需要选择叶节点取出,并维持最小堆;
15、当逻辑组织结构为最大堆结构树,
16、若需要取出磨损程度值最大的节点,则取出根节点,并将最后一个叶节点作为新的根节点,并进行节点调整以维持最大堆结构;
17、若需要取出磨损程度值较小或最小的节点,则根据需要选择叶节点取出,并维持最大堆。
18、按上述方案,步骤2)中采用最小堆或最大堆结构树建立逻辑组织结构为:
19、使用完全二叉树结构,以闪存块节点的地址信息为顺序使二叉树上的每个节点与物理结构中的每个节点一一对应;
20、根据小根堆或大根堆的性质,以各节点的磨损程度值对上述树结构节点的位置进行调整,使其符合最小堆或最大堆特征,获得最小堆或最大堆结构树。
21、按上述方案,步骤2)中逻辑组织结构中使用完全二叉树结构,以闪存块节点的地址信息为顺序依据使二叉树上的每个节点与物理结构中的每个节点一一对应;具体为:
22、对任一节点组,节点 i为根节点,节点 j为左叶节点,节点 k为右叶节点;
23、那么,
24、;
25、;
26、其中, i, j, k为节点的地址信息中相应节点的序号;
27、整个完全二叉树的高度 h为,
28、;
29、其中, n表示二叉树的节点总数, ceil表示对括号内的内容向上取整;
30、完全二叉树的最后一层的最左叶节点的序号如下:
31、;
32、其中,的下标表示last left,代表最后一层的最左叶节点。
33、按上述方案,步骤4)中,若需要取出磨损程度值较大的节点,则选择最后一个叶节点取出。
34、按上述方案,步骤4)中,若需要取出磨损程度值最大的节点,则遍历所有叶节点,获得磨损程度值最大的节点取出,若磨损程度值最大的节点不是最后一个叶节点,则将最后一个叶节点交换至磨损程度值最大的节点处,并进行节点调整以维持最小堆结构。
35、本发明还提供一种提高闪存块管理中闪存块组织效率的装置,包括:
36、节点划分模块,用于将闪存物理存储区划分为多个以super block闪存块为单位的节点,并为节点按序赋予连续的地址信息;
37、逻辑映射模块,用于根据闪存块节点的地址信息,构建闪存块的逻辑组织结构,与闪存物理存储区进行映射;具体如下:
38、1)评估当前闪存块的平均磨损程度;
39、2)若当前闪存块的平均磨损程度小于设定阈值,采用最小堆结构树建立逻辑组织结构;
40、3)若当前闪存块的平均磨损程度大于设定阈值,采用最大堆结构树建立逻辑组织结构;
41、节点添加模块,用于对逻辑组织结构进行添加节点操作;
42、将新的节点添加到逻辑组织结构的树结构中的最后一个叶节点处,并进行节点调整以维持原有的逻辑组织结构;
43、节点取出模块,用于对逻辑组织结构进行取出节点操作;
44、根据需要确定要取出的节点,并进行节点调整以维持原有的逻辑组织结构;
45、当逻辑组织结构为最小堆结构树,
46、若需要取出磨损程度值最小的节点,则取出根节点,并将最后一个叶节点作为新的根节点,并进行节点调整以维持最小堆结构;
47、若需要取出磨损程度值较大或最大的节点,则根据需要选择叶节点取出,并维持最小堆;
48、当逻辑组织结构为最大堆结构树,
49、若需要取出磨损程度值最大的节点,则取出根节点,并将最后一个叶节点作为新的根节点,并进行节点调整以维持最大堆结构;
50、若需要取出磨损程度值较小或最小的节点,则根据需要选择叶节点取出,并维持最大堆。
51、按上述方案,逻辑映射模块中采用最小堆或最大堆结构树建立逻辑组织结构为:
52、使用完全二叉树结构,以闪存块节点的地址信息为顺序使二叉树上的每个节点与物理结构中的每个节点一一对应;
53、根据小根堆或大根堆的性质,以各节点的磨损程度值对上述树结构节点的位置进行调整,使其符合最小堆或最大堆特征,获得最小堆或最大堆结构树。
54、按上述方案,逻辑映射模块中使用完全二叉树结构,以闪存块节点的地址信息为顺序依据使二叉树上的每个节点与物理结构中的每个节点一一对应;具体为:
55、对任一节点组,节点 i为根节点,节点 j为左叶节点,节点 k为右叶节点;
56、那么,
57、;
58、;
59、其中, i, j, k为节点的地址信息中相应节点的序号;
60、整个完全二叉树的高度 h为,
61、;
62、其中, n表示二叉树的节点总数, ceil表示对括号内的内容向上取整;
63、完全二叉树的最后一层的最左叶节点的序号如下:
64、;
65、其中,的下标表示last left,代表最后一层的最左叶节点。
66、按上述方案,节点取出模块中,若需要取出磨损程度值较大的节点,则选择最后一个叶节点取出。
67、按上述方案,节点取出模块中,若需要取出磨损程度值最大的节点,则遍历所有叶节点,获得磨损程度值最大的节点取出,若磨损程度值最大的节点不是最后一个叶节点,则将最后一个叶节点交换至磨损程度值最大的节点处,并进行节点调整以维持最小堆结构。
68、本发明产生的有益效果是:
69、本发明提供了一种新的逻辑-物理区块映射结构,相比于现有的链表结构,本发明采用树结构的方式来应对闪存块的组织需求。在这种组织管理方式下,每次添加操作的时间复杂度为o(log(n)),明显降低了时间消耗,在一定程度上提高了ftl效率。