123012013137_叶邦宪_林铭炜_自适应的高性能闪存缓冲区替换算法解析

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福建师范大学

毕业论文

题目:自适应的高性能闪存缓冲区替换算法姓名:叶邦宪

学院:软件学院

专业:软件工程

学号:123012013127

指导教师:林铭炜

自适应的高性能闪存缓冲区替换算法

软件学院软件工程专业

123012013127 叶邦宪指导教师:林铭炜

【摘要】闪存具有存取速度快、抗震性强以及功耗低等优势,已广泛运用于嵌入式系统和消费电子设备,因此闪存可能在未来成为取代机械硬盘的存储介质。但是目前由于闪存的读写不一致特性,针对硬盘开发的缓冲区替换算法无法直接应用于闪存,所以研发最适合闪存的缓冲区替换算法势在必行。本文根据基于概率和替换代价的原理,提出了一种基于预期的闪存缓冲区替换算法--AH-PBR算法。该算法采用了冷热探测机制、基于预期管理的概率替换机制和ARC硬盘缓冲区替换机制,使得本算法具有较好的性能。在通过对AH-PBR算法和国内外目前的闪存缓冲区替换算法进行对比测试,从命中率、物理读操作、物理写操作几个方面进行对比,并且附上了不同情境下的各个算法的性能,确保能全方位的展示AH-PBR算法的优势与劣势。相信本文能为以后更好更深入的研究闪存缓冲区替换算法提供独到的思路。

【关键词】闪存数据库,缓冲区替换算法,传统机械硬盘

目录

1. 引言 (1)

1.1 研究背景与意义 (1)

1.2 本文研究内容 (1)

1.3 本文结构 (2)

2. 相关工作 (3)

2.1 经典的替换区置换算法 (3)

2.2 面向缓存的数据库缓存区置换算法 (4)

3. AH-PBR算法详述 (7)

3.1 算法由来与结构 (7)

3.2 算法思路 (8)

3.3 算法设计 (9)

3.4 AD-LRU算法与AH-PBR算法实例分析 (11)

3.5 本章小结 (12)

4. 实验设计与结果 (13)

4.1 实验目的、实验环境和测试方案 (13)

4.2 命中率 (15)

4.3 物理读操作 (16)

4.4 物理写操作 (17)

5. 结束语 (19)

致谢 (20)

参考文献 (21)

1. 引言

1.1 研究背景与意义

在计算机应用方兴未艾的当下,计算机在各个领域有着独到的应用,解放了人类的思想,使人们有更多时间去思考和创造。对于计算机而言,存储介质[1]就好像人类的大脑,十分重要,因此存储器的性能直接关系到整个计算机的性能。目前市面上的较为普及的存储设备主要分为两种,机械式硬盘和闪存(电可擦除可编程只读存储器的变种)。

表1-1 闪存固态盘与传统磁盘的对比参数

存储介质闪存固态硬盘传统磁盘

内部组成NANDFlash、控制IC 马达、碟片、磁盘、转轴外观尺寸(cm)60-67 65-68

重量(g)48-90 98-115 读写功耗(w)0.13-1.0 2.4-2.5 使用中抗震度(G/ms)>1000/0.5 250-275/2

未使用中抗震度(G/ms)1500-2000/1 800-900/1 使用中噪音(dB)0 2.9

平均延迟(ms)0.2-0.4 8.33 持续传输速度(MB/s)110 32-56

机械式硬盘具有较大的存储容量和相对低廉的价格,使得在选择大容量存储装置时多选择机械式硬盘,但是机械式硬盘因为涉及到机械活动,在随机寻找的时候需要移动磁头寻找目标所以难以快速找到。因此,在不需要频繁移动磁头的顺序读写过程中,机械式硬盘更优秀,但是随机读取需要不停的调整磁头的顺序,随机读取的性能往往不如人意。

闪存具有防震、噪音小、省电、代价不一致[2]、能耗低、快速的读写性能[3]、体积小、断电防丢失[4]等特征,可以弥补硬盘的缺点。NAND型闪存采用双层浮栅MOS组成,因为一个片内的原极是连接在一起的,每次擦除需原极加电压擦除,所以擦除需要整片擦除或分块擦除,因此因为整区删除的原因闪存的擦除的IO开销数量远远大于硬盘,这就是为何闪存读写删除操作的代价不一致的原因。随着物理材料学和电子工艺的发展,闪存的造价越来越低,存储容量和存储速度越来越快,闪存比传统磁盘有着更加广泛的应用前景,从这个趋势来看,基于闪存的存储器将比硬盘存储器发展的更快且占据更大的市场。因为闪存存储具有非易失性,在突然丧失能源提供后也能稳定的存储数据,因此可以与磁盘一样稳定存储数据。

由于传统数据库系统中的各类数据结构和逻辑算法都是针对磁盘开发的,没有根据闪存的擦除代价比读写IO开销更大的特征来设计,所以无法挖掘出闪存的全部潜能,甚至在一些极端情况下甚至表现出比磁盘更差的性能,因此全新的针对闪存的特征开发的算法有着较高的价值。

1.2 本文研究内容

根据闪存数据库[5]的读写代价不对称的特点和NAND型闪存整区擦除的特性,如何研究出在保证整体性能不变的情况下,提高命中率,降低物理读操作和物理写操作的数量是一件具有意义的事。

在研究目前国内外的缓冲区置换算法的时候,发现无论AD-LRU还是CCF-LRU还是FOR算法,都是基于当前的数据环境来设定数据页的权重,有点用数据页的频度和热度,有的用热区和冷区分开来防止不同的数据页,这些做法都是通过尽量长的使冷脏页驻留缓冲区来减少写操作代价,是有利于提升命中效率。但是本文也应该注意到一个关键性的问题,那就是脏页过长时间驻留缓冲区其实是减少了热数据页的

空间,这样又反过来降低了命中率,而且会引起连锁的读写操作。因此基于这个问题,本文设计了全新的自适应的高性能闪存缓冲区替换算法--AH-PBR算法(Adaptive High Performance Flash Buffer Replaceme nt Algorithm),这个算法采用冷热探测机制、基于预期管理的概率替换机制和ARC硬盘缓冲区替换机制来更好的平衡冷脏页在缓冲区带来的益处和坏处,保证收益能大于代价,使得能尽量少的进行读写物理操作。

AH-PBR算法的替换思路很大一部分来源于适用于硬盘的ARC算法,因为硬盘不会出现读写代价不对称的状况,适用于硬盘的ARC算法将缓冲区分做了冷区和热区,分别用于放置只使用过一次的数据页和多次使用的数据页,但是并没有对数据页进行标注究竟何是冷还是热,是脏还是干净。因此始终替换最近最不常使用(LRU)端的数据页,这样就无法通过优先驱逐干净页获得更好的I/O性能,所以适用于硬盘的ARC算法在硬盘能获取较高的I/O性能但是在闪存环境下并不能获取较高的I/O性能的原因由来。

AH-PBR算法采用冷数据判断机制,缓冲区里面的数据页分为冷干净页,热干净页,冷脏页,热脏页。因为在闪存缓冲区内由于电压擦除和加压的过程时耗不一样,所以有着读和写不是一个数量级,因此进行读操作还是写操作对于闪存来讲就很关键。又因为本文的替换算法是始终替换最不常使用(LRU)端的数据页。因此在干净页中,替换冷干净页的代价比替换热干净页的代价来的高;在脏页中,替换冷脏页的代价比替换热脏页的的代价来的高。

AH-PBR算法将缓冲区分为冷区T1和热区T2,用于存放只访问过一次的数据页和存放访问过多次的数据页,冷区和热区的大小是动态调整的并且始终满足两者的大小不大于缓冲区大小。与此同时,传统的数据链旁边,AH-PBR算法新建了两条指针链并设置最近最常使用(MRU)端和最不常使用(LRU)端,分别是T1冷区指针链和T2热区指针链,这两条指针链分别用于存储T1中的冷干净页和T2中的冷热干净页的数据页地址和页号。因为这类的指针链只是存储相关的数据页地址和页号,并不占多少的存储空间。

当有新的干净页进入时,链接到该指针链的最近最常使用(MRU)端,如果有数据需要从这个区域移除,那么在链表中找到并移除该指针。在AD-LRU算法中,采用了FC指针,用于指向下个可能需要操作的数据页,但是因为算法的过程中,无法预测下个或者若干个数据页的性质,是冷还是热,是干净还是脏。FC指针指向冷区冷干净页中最靠近最不常使用(LRU)端的冷干净页,那么每一次更新都需要遍历读取冷区中的数据页,直到找到一个新的最靠近最不常使用(LRU)端的冷干净页。如果使用指针链,FC就不需要进行遍历,直接指向T1冷区指针链的最靠近最不常使用(LRU)端,可以直接读取。如果冷区大小为1000个数据页,在大量数据读写操作后,可以明显预见到,冷区中干净页被驱逐,大量的脏页保留下来,如果在此中只有一个冷干净页,那么最好的情况是在查询端,最差情况是需要遍历10000个数据页最后才查到。但是查询T1冷区指针链,只有唯一一个,意味着只要查询一次就好了。另外,通过统计两条指针链的长度,就可以了解到T1中的干净页数量和T2中的干净页数量。因此,指针链来代替传统的FC指针在数据大量运算的情况下,不仅有更好的查询效率,还能得知缓冲区的干净页数量。

AH-PBR算法基于概率替换T2热区指针链中的冷干净页和冷脏页,其次是热干净页。当T2热区指针链为空时再从T2的最不常使用(LRU)端开始从后往前遍历读取热干净页。这样既加快了干净页的读取速度,也避免了AD-ARC算法中的冷区全为冷脏页的情况。

1.3 本文结构

本篇论文分为五个章节。

第一章节介绍了闪存的为何比硬盘更加优异的原因并给出了研究闪存的意义,以及本文的研究方向。

第二章节介绍了目前国内外比较常见的集中缓冲区替换算法,并且给出了详细的图文介绍。

第三章节提出了新型自适应的高性能闪存数据库缓冲区置换算法,并通过图文结合的形式介绍自适应的高性能闪存数据库缓冲区置换算法的思路。

第四章节介绍了实验所用的系统和测试数据详情,并且就物理读操作,物理写操作,命中率三个方面对不同的算法进行测试对比,并解释其中的一些现象的原因。

第五章节主要针对研究过程中的得失进行总结,并探讨了以后的研究方向。

相关文档
最新文档