基于页级映射的动态二级缓存闪存转换层地址映射方法技术

技术编号:21089438 阅读:40 留言:0更新日期:2019-05-11 09:55
本发明专利技术提出一种基于页级映射的动态二级缓存闪存转换层地址映射方法,解决了目前页级地址映射未能充分利用顺序I/O局部性的问题以及在随机I/O较多时I/O性能下降的问题。本发明专利技术的方法利用顺序I/O的时间局部性和空间局部性,分别设置一级缓存L1Cache,二级缓存L2Cache,在两级缓存上采用不同的缓存管理策略,一级缓存L1Cache用来缓存单个地址映射项,二级缓存L2Cache用来缓存整个映射页;在二级缓存上采用空间局部性检测法,对当前一定数量的I/O请求进行检测,如果检测到当前的I/O请求具有较强的空间局部性,则提取相应的映射页到二级缓存L2Cache中;同时一级缓存L1Cache根据缓存命中率来动态调整一级缓存大小,保证随机I/O模式下的I/O性能。

【技术实现步骤摘要】
基于页级映射的动态二级缓存闪存转换层地址映射方法
本专利技术属于计算机科学
,尤其涉及一种基于页级映射的动态二级缓存闪存转换层地址映射方法。
技术介绍
NANDFlash因为其低功耗、非易失性以及出色的IOPS等特点在很多领域被大量使用,比如嵌入式设备,高性能服务器。其I/O性能远远高于传统的机械硬盘,在一定程度上弥补了计算机系统中CPU和I/O的速度差距,其容量目前每年以成倍的速度增长。与传统机械硬盘的结构截然不同,NANDFlash支持随机寻址,以页为读写的基本单位,以块作为擦除的基本单位,并且只能进行异地更新,不能直接对数据进行重写,所以目前的操作系统支持NANDFlash存储设备有两种普遍的做法,一种是为NANDFlash定制专用的文件系统,另一种是在NANDFlash内部增加一层闪存转换层,负责地址翻译以及其他管理工作,闪存转换层使得NANDFlash可以当做机械硬盘来使用而不用对现有的文件系统做任何修改。NANDFlash内部存储是由块(block)和页(page)组成的,典型的NANDFlash每个page的大小为4KB,一个块包含64个page。NANDFlash读写的基本单位为page,当上层请求数据时,请求的地址为逻辑地址,NANDFlash因为异地更新的特性,当同一逻辑地址的数据被修改后实际的物理存储地址也会相应改变,因此需要一张地址映射表来完成上层逻辑地址到NANDFlash物理地址的转换。地址映射方法可以分为三类:基于页映射,基于块映射,以及混合映射。页级映射主要的优点是转换效率较高,因为映射单位和读写单位一致,所以一次转换就可以得到页面的物理地址,但是由于目前NANDFlash容量越来越大,所以映射项所占的空间大小也越来越大,以512GBNANDFlash为例,page大小为4KB,每一个地址映射项大小为10Byte,则地址映射表的大小会为1280MB,超过1GB,这对于NANDFlash中的SRAM空间占用是非常严重的。针对这个问题目前的页级映射采用的解决方式是使用缓存,将部分映射表缓存在SRAM中,减小了映射表对SRAM的占用,但是这些方法没有很好地利用顺序I/O的局部性,并且在随机I/O较多的情况下,缓存命中率很不理想,从而导致I/O性能下降。
技术实现思路
为了解决上述提出的问题,本专利技术提出一种基于页级映射的动态二级缓存闪存转换层地址映射方法,针对目前页级地址映射未能充分利用顺序I/O局部性的问题以及在随机I/O较多时I/O性能下降的问题,采用两级缓存,并在两级缓存上采用不同的缓存管理策略,充分利用了顺序I/O的时间局部性和空间局部性,同时我们结合了动态缓存调整来应对随机I/O较多的场景,既减少了对SRAM的占用,也提高了随机I/O模式下的缓存命中率及性能。本专利技术的技术方案是:1.基于页级映射的动态二级缓存闪存转换层地址映射方法,其特征在于,利用顺序I/O的时间局部性和空间局部性,分别设置一级缓存L1Cache,二级缓存L2Cache,在两级缓存上采用不同的缓存管理策略,一级缓存L1Cache用来缓存单个地址映射项,二级缓存L2Cache用来缓存整个映射页;在二级缓存上采用空间局部性检测法,对当前一定数量的I/O请求进行检测,如果检测到当前的I/O请求具有较强的空间局部性,则提取相应的映射页到二级缓存L2Cache中;同时一级缓存L1Cache根据缓存命中率来动态调整一级缓存大小,保证随机I/O模式下的I/O性能。2.所述方法包括以下步骤:步骤1:接收上层I/O请求并在一级缓存L1Cache中查找请求对应的地址映射项,如果命中缓存,则根据目前缓存命中率的高低决定是否需要减小一级缓存L1Cache的大小,如果需要减小,则将脏缓存项以及不常用的缓存项打包写回全局映射表GMT中,然后跳到步骤7,如果未命中则进行下一步;步骤2:根据I/O请求的逻辑地址LPN计算逻辑映射页号LMP,通过LMP查询映射表目录GTD,查看二级缓存L2Cache中是否缓存了该请求地址映射项对应的映射页,如果已经缓存,跳到步骤7,否则进行下一步;步骤3:在映射表目录GTD中查找该请求地址映射项在全局映射表GMT中的物理页地址PMP,并根据目前缓存命中率的高低决定是否需要增大一级缓存L1Cache的大小,如果需要增大,则将一级缓存L1Cache增加一个映射页的大小;步骤4:根据空间局部性检测法判断目前的请求是否有较强的空间局部性,如果没有则直接进行下一步,否则将请求的地址映射项所在的映射页从全局映射表GMT中提取出来;此时如果二级缓存L2Cache已满,则需要根据“请求距离”找出要进行替换的映射页,然后将新的映射页放入二级缓存L2Cache中,如果未满则直接将新的映射页放入二级缓存L2Cache;步骤5:如果一级缓存L1Cache未满,则直接将该请求的地址映射项放入一级缓存L1Cache中,然后跳到步骤7,如果已满,则根据SegmentLRU策略找出需要换出的缓存项进行替换;步骤6:如果一级缓存L1Cache的替换项未被修改过则直接进行下一步,如果修改过则查看该映射项对应的映射页在二级缓存L2Cache中是否存在,如果存在则修改二级缓存对应的映射项并将该映射页标记为脏,否则直接写回全局映射表GMT中;步骤7:根据请求的地址映射项对NANDFlash进行I/O操作。3.其中,步骤1中动态减小一级缓存L1Cache的具体步骤如下:步骤1.1:在一级缓存L1Cache的任意段中收集k个脏缓存项以及最不常用的缓存项,其中k为每个映射页可以存储的地址映射项个数;步骤1.2:将收集的k个缓存项写入到全局映射表GMT中;步骤1.3:回收这k个缓存项占用的空间,然后调整任意段中剩余缓存项的位置。4.其中,步骤3中动态增大一级缓存L1Cache的具体步骤如下:步骤3.1:在闪存的SRAM中分配新的缓冲区,大小为L1Cache中原来任意段的大小加上k,其中k为每个映射页可以存储的地址映射项个数;步骤3.2:将原来任意段中缓存的地址映射项拷贝到新分配的空间中;步骤3.3:回收原来的任意段占用的空间。5.其中,步骤4中的空间局部性检测法的具体步骤如下:步骤4.1:设置空间局部性阈值t,代表目前一段时间的请求落在同一映射页的比例;步骤4.2:保存最近k个请求(r1,r2,r3,…,rk)的地址映射项所在的映射页号(r1/k,r2/k,…,rk/k),k为一个映射页可以存储的地址映射项的数量;步骤4.3:在这些映射页号中找出出现频率最高的映射页号,计算此映射页号出现的比例r,与阈值t比较,如果比例r高于阈值t,则认为请求具有较强的空间局部性,否则目前的请求不具有空间局部性;6.其中,步骤4中使用了“请求距离”来寻找二级缓存中的替换页,“请求距离”的含义如下:定义当前请求的逻辑地址为Lp,每个映射页可以存储的地址映射项个数为k,二级缓存L2Cache可以存储的映射页数量为n,目前二级缓存L2Cache中缓存的映射页的页号为(p1,p2,p3,…,pn),则目前二级缓存L2Cache中各个映射页和当前请求的“请求距离”disi表示为:根据空间局部性的特点,页号相差最大的可以看做距离最远的,即未来最不可能访问,假设换出页为本文档来自技高网
...

【技术保护点】
1.一种基于页级映射的动态二级缓存闪存转换层地址映射方法,其特征在于,利用顺序I/O的时间局部性和空间局部性,分别设置一级缓存L1Cache,二级缓存L2Cache,在两级缓存上采用不同的缓存管理策略,一级缓存L1Cache用来缓存单个地址映射项,二级缓存L2Cache用来缓存整个映射页;在二级缓存上采用空间局部性检测法,对当前一定数量的I/O请求进行检测,如果检测到当前的I/O请求具有较强的空间局部性,则提取相应的映射页到二级缓存L2Cache中;同时一级缓存L1Cache根据缓存命中率来动态调整一级缓存大小,保证随机I/O模式下的I/O性能。

【技术特征摘要】
1.一种基于页级映射的动态二级缓存闪存转换层地址映射方法,其特征在于,利用顺序I/O的时间局部性和空间局部性,分别设置一级缓存L1Cache,二级缓存L2Cache,在两级缓存上采用不同的缓存管理策略,一级缓存L1Cache用来缓存单个地址映射项,二级缓存L2Cache用来缓存整个映射页;在二级缓存上采用空间局部性检测法,对当前一定数量的I/O请求进行检测,如果检测到当前的I/O请求具有较强的空间局部性,则提取相应的映射页到二级缓存L2Cache中;同时一级缓存L1Cache根据缓存命中率来动态调整一级缓存大小,保证随机I/O模式下的I/O性能。2.根据权利要求1所述的方法,其特征在于,包括以下步骤:步骤1:接收上层I/O请求并在一级缓存L1Cache中查找请求对应的地址映射项,如果命中缓存,则根据目前缓存命中率的高低决定是否需要减小一级缓存L1Cache的大小,如果需要减小,则将脏缓存项以及不常用的缓存项打包写回全局映射表GMT中,减小L1Cache,然后跳到步骤7,如果未命中则进行下一步;步骤2:根据I/O请求的逻辑地址LPN计算逻辑映射页号LMP,通过LMP查询映射表目录GTD,查看二级缓存L2Cache中是否缓存了该请求地址映射项对应的映射页,如果已经缓存,跳到步骤7,否则进行下一步;步骤3:在映射表目录GTD中查找该请求地址映射项在全局映射表GMT中的物理页地址PMP,并根据目前缓存命中率的高低决定是否需要增大一级缓存L1Cache的大小,如果需要增大,则将一级缓存L1Cache增加一个映射页的大小;步骤4:根据空间局部性检测法判断目前的请求是否有较强的空间局部性,如果没有则直接进行下一步,否则将请求的地址映射项所在的映射页从全局映射表GMT中提取出来;此时如果二级缓存L2Cache已满,则需要根据“请求距离”找出要进行替换的映射页,然后将新的映射页放入二级缓存L2Cache中,如果未满则直接将新的映射页放入二级缓存L2Cache;步骤5:如果一级缓存L1Cache未满,则直接将该请求的地址映射项放入一级缓存L1Cache中,然后跳到步骤7,如果已满,则根据SegmentLRU算法找出需要换出的缓存项进行替换;步骤6:如果一级缓存L1Cache的替换项未被修改过则直接进行下一步,如果修改过则查看该...

【专利技术属性】
技术研发人员:阮利丁树勋肖利民苏书宾李昂鸿殷成涛
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1