曾祥伟,邓玉辉,2+
1.暨南大学信息科学技术学院,广州510632
2.中国科学院计算技术研究所计算机体系结构国家重点实验室,北京100190
基于闪存的固态盘(solid state disk,SSD)因读写速度快、低能耗、耐冲击和重量轻等特点被逐渐应用到大规模存储系统中[1-2]。与磁盘相比,因为没有机械磁头寻道时间,所以具有优越的随机读性能。对于顺序读和写操作,SSD 也保持着比机械硬盘(hard disk drive,HDD)更加出色的性能。但是大多数情况下用户对闪存系统的访问都是随机的,这将导致随着SSD 的写入量不断增加写性能降低,从而造成写性能不稳定的情况[2]。因此,提高SSD写效率非常重要。
与HDD 相比,SSD 除有普通的读写操作外,擦除操作也是频繁操作之一。对闪存进行读写操作的最小单位是闪存页,擦除操作的最小单位是闪存块。闪存具有写入之前必须先擦除的物理特性,因此对固态盘的更新操作通常先将逻辑页写到其他空闲物理页,将之前的物理页标记为失效页,最后修改映射关系,这种更新操作称为异地更新操作[3-4]。闪存系统采用异地更新操作来代替磁盘的本地更新操作,正是因为这种更新特性,SSD 在使用过程中会不断产生无效数据页。为了回收无效页,SSD 内部会触发垃圾回收(garbage collection,GC)操作,先将要回收的闪存块中的有效页数据搬迁到其他空闲块中,然后对该回收块进行擦除操作。SSD 进行垃圾回收操作会占用该芯片的数据总线,如果此时正好有请求需要处理,将导致请求延迟,降低SSD 整体性能[5-6]。因此,降低SSD 在使用过程中的垃圾回收次数也很重要。……