1.一种基于压缩存储和地址映射表项的FTL读数据页的方法,其特征在于,包括:对于主机下发需要写入的数据页,固态硬盘的FTL将其缓存在内置的RAM中;当RAM中缓N N冲2‑1个页面或者主机强制下发写入操作时,RAM中的S个页面(1<=S<=2 ‑1)送入压缩部件,通过预设压缩算法尝试将这S个页面一起压缩到一个物理页面大小范围内;其中,N为预设系统参数;
每个地址映射表项记录逻辑页号与物理页号的对应关系,并为每个映射表项增加N比特的存储开销,记录该逻辑页经过聚合压缩之后的状态信息;当一个逻辑页无法压缩或者无法与下一个逻辑页一起压缩到一个物理页大小范围内时,则将该逻辑页的状态信息设置N为0;否则,表示多个逻辑页能够一起压缩存储在特定物理页上,则将N比特表示的1到2‑1种状态信息按照顺序分配给对应逻辑页面;其中,N比特表示的状态指示该逻辑页在压缩时的编号;
FTL读取所述数据页;
FTL读取所述数据页,具体包括:
步骤21,FTL根据主机下发读请求的逻辑页号,查找地址映射表相应的表项,并获得其N对应的物理页号及N比特状态信息i,其中0<=i<=2‑1;
步骤22,通过所述物理页号,FTL找到闪存页面并读取该页面数据;
步骤23,判断获取的状态i是否为0;如果为0,跳转到步骤24;否则,跳转到步骤25;
步骤24,状态i为0,表示读取的物理页面数据为原始数据,将该数据返回给主机;
步骤25,状态i不为0,表示读取的物理页面数据为压缩过后的数据;运用解压缩算法对该物理页面数据进行解压缩;
步骤26,解压出一个4KB数据;
步骤27,判断步骤26中的4KB是否为第i个4KB数据,如果是跳转到步骤28;否则,跳转到步骤26,继续解压操作,并解压出下一个4KB数据;
步骤28,停止解压缩算法,并将第i个4KB返回给主机,完成一次页面读取。
2.一种基于压缩存储和地址映射表项的FTL写数据页的方法,其特征在于,包括:对于N主机下发需要写入的数据页,固态硬盘的FTL将其缓存在内置的RAM中;当RAM中缓冲2‑1个N页面或者主机强制下发写入操作时,RAM中的S个页面(1<=S<=2 ‑1)送入压缩部件,通过预设压缩算法尝试将这S个页面一起压缩到一个物理页面大小范围内;其中,N为预设系统参数;
每个地址映射表项记录逻辑页号与物理页号的对应关系,并为每个映射表项增加N比特的存储开销,记录该逻辑页经过聚合压缩之后的状态信息;当一个逻辑页无法压缩或者无法与下一个逻辑页一起压缩到一个物理页大小范围内时,则将该逻辑页的状态信息设置N为0;否则,表示多个逻辑页能够一起压缩存储在特定物理页上,则将N比特表示的1到2‑1种状态信息按照顺序分配给对应逻辑页面;其中,N比特表示的状态指示该逻辑页在压缩时的编号;
FTL写入所述数据页;
FTL写入所述数据页,具体包括:
步骤41,FTL的RAM中将缓存的S个逻辑页面送入写流程中;
步骤42,将i初始化为1,表示第一个逻辑页面,尝试压缩第一个逻辑页面数据的前1/4,判断该页面是否可压缩;如果不能压缩,则跳转到步骤43;如果能压缩,则跳转到步骤44;
步骤43,如果不能压缩,表示第一个逻辑页面要么不能压缩,要么不能和第二个逻辑页面一起压缩到一个物理页面;此时,将第一个逻辑页的原始数据写入分配好的物理页中,为该逻辑页更新映射表项,并置N比特状态信息为0;最后将随后的S‑1个逻辑页放回RAM中;跳转到步骤49;
步骤44,令i=i+1,判断i是否大于S,如果大于,则跳转到步骤45;否则,跳转到步骤46;
步骤45,测试i‑1是否等于1,如果等于1,则表示第一个逻辑页和第二个逻辑页不能一起压缩到一个物理页中,或者意味着S等于1,跳转到步骤43;否则,有多个逻辑页可以压缩到一个物理页,跳转到步骤48;
步骤46,尝试将第i个逻辑页与前i‑1个逻辑页一起压缩到一个物理页;
步骤47,判断第i个逻辑页与前i‑1个逻辑页一起压缩的结果是否小于等于一个物理页,如果是,跳转到步骤44;否则,跳转到步骤45;
步骤48,表示最多前i‑1个逻辑页一起压缩的结果可以放入一个物理页,则将该结果写入分配好的物理页中,将相同的物理页号写入前i‑1个逻辑页对应的映射表项,并根据顺序更新各自的N比特状态信息,最后将随后S‑i+1个页面放回RAM中;
步骤49,完成一次写页面。