1.一种固态硬盘页级闪存转换层设计方法,其特征在于:
将NAND闪存划分为两个部分:数据块区域和翻译块区域,数据块区域用于储存常规用户数据,翻译块区域只储存映射信息,且整个闪存采用基于页的映射;RAM被分为W-CMT、R-CMT、GTD三个部分:W-CMT用于储存高访问频次的写数据映射信息;R-CMT用于储存高访问频次的读数据映射信息、GTD用于记录映射块中的地址映射项。
2.根据权利要求1所述的一种固态硬盘页级闪存转换层设计方法,其特征在于包括如下步骤:步骤1、当访问请求到达,首先判断请求是否在W-CMT命中,若请求在W-CMT命中,执行步骤2;否则执行步骤4;
步骤2、将映射信息迁移至W-CMT的MRU(最近使用)位置;
步骤3、判断访问请求类型:若访问请求类型是写请求,则执行步骤15;否则执行步骤
18;
步骤4、判断请求是否在R-CMT命中:若请求在R-CMT命中,执行步骤5;否则执行步骤8;
步骤5、判断访问请求类型:若访问请求类型是写请求,则执行步骤6;否则执行步骤7;
步骤6、判断W-CMT的是否有空闲,如无空闲,则执行W-CMT剔除操作;然后将映射信息从R-CMT迁移至W-CMT的MRU位置,然后执行步骤15;
步骤7、将映射信息迁移至R-CMT的MRU位置,然后执行步骤18;
步骤8、判断访问请求类型:若是访问请求类型是写请求,则执行步骤9;否则执行步骤
11;
步骤9、判断W-CMT的空闲大小是否大于访问请求大小,若小于,则执行W-CMT剔除操作,直到W-CMT能够容纳请求大小个映射信息,然后执行步骤10;否则直接执行步骤10;
步骤10、通过GTD,将请求大小个映射信息一同加载到W-CMT的MRU位置,然后执行步骤
15;
步骤11、判断R-CMT的空闲大小是否大于访问请求大小和预取大小,若小于,则执行R-CMT剔除操作,然后执行步骤12;否则直接执行步骤13;
步骤12、判断访问请求大小是否大于预取大小:若大于,则执行步骤13;否则,执行步骤
14;
步骤13、通过GTD,将访问请求大小个映射信息一同加载到R-CMT的MRU位置,然后执行步骤18;
步骤14、通过GTD,将预取大小个映射信息一同加载到R-CMT的MRU位置,然后执行步骤
18;
步骤15、为用户数据分配新的空闲物理数据页,然后执行步骤16;
步骤16、依据原数据页与新分配数据页,响应写访问请求,然后执行步骤17;
步骤17、更新W-CMT中的映射信息,即将更新标志位置为脏,物理页号置为步骤15分配的物理页号,结束操作;
步骤18、依据映射信息,响应读访问请求;结束操作。
3.根据权利要求2所述的一种固态硬盘页级闪存转换层设计方法,其特征在于步骤6和步骤9中所述的W-CMT采用干净映射项优先剔除的最近最少使用(CFLRU)队列管理方式,在队列尾部设置大小为ω的优先剔除区域,剔除时优先剔除该区域的干净映射项(Update_flag=0),即直接删除Update_flag=0的映射项;如该区域不存在干净映射项,则将LRU位置的脏映射项(Update_flag=1)及与它属于同一个翻译页的其它映射项一同回写到闪存翻译块区域,然后删除LRU位置的映射项,并将回写的其他映射项的置为干净(Update_flag=0)。
4.根据权利要求2或3所述的一种固态硬盘页级闪存转换层设计方法,其特征在于所述的W-CMT的剔除操作过程如下:S91,在W-CMT的优先置换区从后往前查找是否有干净页映射项(Update_flag=0):若有则执行S97;否则执行S92;
S92,选择W-CMT中LRU位置的映射项作为受害项;
S93,判断翻译块区域闪存空间是否满,若满,执行垃圾回收操作;
S94,分配新的空闲翻译页;
S95,将受害项、同翻译页下的其它映射项、以及原翻译页中的其它有效映射项一同写入到新分配的空闲翻译页中,并更新GTD,同时置原翻译页无效;
S96,将W-CMT中的LRU位置的映射项剔除,并将同翻译页中的映射项置为干净(Update_flag=0),然后执行S98;
S97,将查找到的干净页映射项删除后执行S98;
S98,结束本次W-CMT的剔除操作。
5.根据权利要求4所述的一种固态硬盘页级闪存转换层设计方法,其特征在于所述的W-CMT映射缓存区记录的映射项包括:逻辑页号LPN、物理页号PPN、更新标志Update_flag。
6.根据权利要求5所述的一种固态硬盘页级闪存转换层设计方法,其特征在于所述的R-CMT映射缓存区记录的映射项包括:逻辑页号(Logic Page Number,LPN)、物理页号(Physical Page Number,PPN)。
7.根据权利要求6所述的一种固态硬盘页级闪存转换层设计方法,其特征在于步骤11中所述的R-CMT采用普通的LRU队列管理方式;剔除时,由于R-CMT仅储存干净的读映射信息,所以在R-CMT满时,仅需删除R-CMT中LRU位置的映射项。