论文部分内容阅读
NAND FLASH存储器因为其访问速度快、质量轻、无噪音、体积小、非易失和防震抗摔等特点而被广泛应用于高科技领域以及各种手持电子产品之中。NAND FLASH由于其先擦后写以及擦除次数受限等特性使得应用于传统机械式磁表面存储器的文件系统和应用程序不能直接应用于NAND FLASH存储器中。为了达到两种存储器兼容使用,在NAND FLASH存储器体系中引入了FTL(Flash Translation Layer)层。FTL采用异位更新,为每一次写请求分配一个新的空白位置,从而隐藏了存储器先擦后写等特性。目前已经提出了多种FTL算法,其主要关注点在于如何为写请求分配替换块方面,较常用的主要有BAST( Block-Associative Sector Translation)算法和FAST(Fully-Associative Sector Translation)算法。BAST算法为每一个数据块分配一个或多个替换块,其垃圾回收效率较高,但块的利用率非常低;而FAST算法则使每一个替换块为所有数据块所共享,其块的利用率较高,但垃圾回收的效率却非常低。本文在超级块FTL算法的思想上设计了一种结合热数据识别的FTL算法。首先将若干相邻的逻辑块标记为一个块组,以块组为单位分配替换块。在进行数据更新时,使用热数据识别算法计算每个块组的访问热度,从而将系统内的块组按热权值分为冷、温、热三类。对于冷数据,系统为其分配已擦除次数最多的块作为替换块;对于热数据,系统为其分配已擦除次数最少的块作为替换块。因此,热数据识别算法性能的好与坏直接影响到本文所设计的FTL算法的性能。目前的热数据识别方法大多都只关注于LBA(Logical Block Address)地址的访问频繁度,没有动态地反映出访问频繁度随时间的变化关系,从而造成了较高的错误识别率。本文设计了一种基于队列计数的热数据识别算法,通过使用先进先出规则淘汰过时的数据,并赋予队列中每个位置所存放元素不同的权值来表示不同时刻各数据的热状态;同时结合flash读写等特性,引入了热区域概念,使所需的存储空间得到降低。通过实验表明,本文所提出的基于队列计数的热数据识别算法具有较低的错误识别率,能够动态地反映LBA地址被访问的频繁度随时间的变化关系。本文所设计的结合队列计数热数据识别方法的FTL算法在垃圾回收的效率和磨损均衡等方面均达到了较好的性能。