论文部分内容阅读
计算机系统经过几十年的发展,在各方面都取得了长足的进步。硬盘的容量虽然有很大的提升,但是其访问速度与计算机的其他部件(如内存、处理器)的速度相比,速度不匹配问题进一步加深,这使得存储子系统成为计算机系统的性能瓶颈。基于NAND闪存的固态硬盘的出现,使这个问题得到一定程度的缓解。然而由于闪存的固有缺陷,基于NAND闪存的固态硬盘也有诸多不尽人意之处,如读写速度差异大、不支持原地更新、擦除次数有限等,这严重影响了它的性能、寿命及可靠性等。本文以基于NAND闪存的固态硬盘设计为研究对象,在分析NAND闪存的基本特性及固态硬盘的构架的基础上,主要研究了固态硬盘设计中的闪存转换层(FTL)算法和缓冲区管理算法。在闪存转换层设计的研究中,通过分析DFTL算法的缺陷,本文提出了SDFTL(Sequential/Second Cache DFTL)算法,增强了对连续请求的处理能力,减少了由于映射项频繁剔除引起的翻译页更新。该算法新设置连续缓存和二级缓存,连续缓存利用请求的空间局部性,对请求的映射信息进行预取,以提高缓存的命中率,减少对翻译页的读取次数;二级缓存对映射项的剔除策略进行改进,将从一级缓存剔除的、发生更新的映射项暂存在二级缓存中,延迟了映射项的更新时间,并采用批量更新策略回写到闪存,以减少翻译页的写回次数和擦除次数。通过以上两点改进,SDFTL算法能明显改善对连续请求的处理能力,减少系统的平均响应时间。仿真实验表明,SDFTL算法相比DFTL,映射表命中率平均提高41.57%,擦除次数平均减少23.08%,响应时间平均减少17.74%。在缓冲区管理算法设计的研究中,通过分析BPLRU算法的缺陷,本文提出了一种基于虚拟块的写缓冲区管理算法——VBLRU(Virtual Block-based LRU)算法,减少了缓存项剔除时的额外读写操作,提高了缓冲区的空间利用率。该算法使用虚拟块做为缓冲区管理的基本单元,增加了构成连续请求的可能性,减少了对闪存的额外读写操作;对大块的连续请求不加载到缓冲区中,直接交由FTL处理,提高了缓冲区的利用率。通过以上改进,VBLRU算法能明显减少对闪存的读取次数,有效提高缓冲区的利用率,提高系统的整体性能。仿真实验表明,当缓冲区容量为1MB时,VBLRU算法相比BPLRU,写缓冲区命中率平均提高7.25%,擦除次数平均减少31.64%,响应时间平均减少22.50%。