论文部分内容阅读
近年来,随着半导体技术的飞速发展,基于闪存的固态硬盘在工业界和学术界受到广泛地关注与研究。与传统的机械硬盘相比,固态硬盘具有访问速度快、能耗低、噪音小、抗震性好等优势,已被广泛应用在军事、医疗、电子产品等各个领域。由于闪存的物理特性,固态硬盘面临着写前擦除、读写不对称、擦除次数有限等诸多约束。为了降低这些约束对固态硬盘性能的影响,人们在固态硬盘中引入缓存技术,使得部分用户I/O请求在缓存中完成,减少对固态硬盘的读写操作,从而提升固态硬盘的I/O性能。目前,缓存管理算法已成为固态硬盘研究的热点问题。传统的固态硬盘缓存管理算法,旨在提高缓存命中率或者减小缓存替换代价,往往忽略了底层闪存芯片的状态对缓存算法性能的影响。本文主要优化缓存管理算法中的替换策略,结合底层闪存芯片的负载特点,设计了一种基于负载感知的缓存替换算法,主要研究内容如下:(1)基于负载感知的固态硬盘缓存策略优化为了降低固态硬盘底层闪存芯片负载不均衡对I/O访问延迟的影响,本文提出一种基于负载感知的缓存替换算法(Load-aware Cache Replacement,LCR),LCR算法是基于缓存替换代价设计的,主要约束条件是底层闪存芯片的负载情况。基本思想是优先缓存负载严重的芯片上的数据块,替换负载轻的芯片上的数据块。LCR算法将缓存区分为工作区(Working Region)和回写区(Destaging Region),其中访问频度比较高的数据块缓存在工作区中,回写区缓存的数据块是替换操作的候选对象。最后,我们在固态硬盘模拟器上实现了LCR算法,同时运行一系列真实的trace数据进行性能验证。实验结果表明,与两个比较经典的缓存替换算法LRU以及GCaR-CFLRU相比,LCR算法可降低系统平均响应时间分别为39.2%和12.3%。(2)基于负载感知的固态硬盘阵列系统缓存策略优化基于固态硬盘的RAID5阵列系统面对频繁更新的小写请求,造成校验块频繁更新,引起系统额外的I/O读、写操作,不仅增大系统访问延迟,还会降低系统的寿命。为了解决这个问题,本文提出一种基于负载感知的条带级别缓存管理算法(Stripe-level Cache Management Algorithm based on Load Awareness),简称为SLCache,该算法的缓存粒度以条带为单位,将属于同一条带的数据存放在相同的条带节点中,同时缓存用户I/O读写请求。针对缓存替换策略的设计,SLCache主要考虑两点,其一,条带里包含脏数据页的个数;其二,条带里脏页数据块和相应校验块对应存储盘的负载情况,基于替换代价最小的原则选择替换对象。同时在数据回写操作中,根据脏数据页的个数,选择不同的检验块更新策略。最后我们在trace驱动的固态硬盘模拟器Disksim+SSD Extension上实现了SLCache算法,与LRU-RAID5相比,我们的做法可减少15.9%的擦除次数,同时降低系统平均响应时间20.3%以及减少检验块更新的读开销16.1%。