一种映射粒度自适应的闪存转换层管理方法技术

技术编号:14355345 阅读:80 留言:0更新日期:2017-01-08 22:37
本发明专利技术公开了一种映射粒度自适应的闪存转换层管理方法,包括:从文件系统接收数据请求,并判断该数据请求的类型是读请求还是写请求,如果是写请求,则根据该写请求的逻辑页号查询闪存存储空间的页映射表,以判断该写请求对应的逻辑页是否不是第一次写,如果是则根据页映射表中该逻辑页号对应的类型判断该逻辑页的类型是部分页面还是完整页面,如果是部分页面则将该部分页面对应的子页状态表中的子页状态设置为失效,判断写请求的大小是否大于闪存页的大小,如果是则从整页空闲队列的队首取出空闲的物理页,将写请求对应的数据写入该物理页中。本发明专利技术能够减少大容量闪存页访问造成的读写性能下降和存储空间浪费。

【技术实现步骤摘要】

本专利技术属于固态盘存储
,更具体地,涉及一种映射粒度自适应的闪存转换层管理方法
技术介绍
作为目前最广泛使用的外存储设备,机械硬盘的读写性能已经渐渐不能满足上层应用的需求,存储设备的性能已经成为计算机系统整体性能的瓶颈。为了提高计算机存储系统的性能,近年来,以与非型(NAND)闪存作为存储介质的固态硬盘获得了广泛的应用。固态硬盘具有高带宽、低延迟、低功耗、抗震性好、无噪音等特点,已经在消费级市场和企业级存储中部分替代机械硬盘,成为主要的存储设备之一。随着闪存制造工艺的进步,NAND型闪存芯片的存储密度越来越高,存储容量越来越大。作为闪存读写的基本单位,闪存页的容量也呈现逐渐增加的趋势。从早先的512字节,增加到4KB、8KB,现在已经出现了16KB页大小的单层单元(Single-LevelCell,简称SLC)和多层单元(Multi-LevelCell,简称MLC)NAND型闪存芯片,未来还可能增加到32KB甚至更大。为了提供兼容机械硬盘的访问接口,固态硬盘通常采用闪存转换层(FlashTranslationLayer,简称FTL)向上层隐藏闪存的读、写、擦除操作。通过使用闪存转换层,大部分文件系统都可以直接应用在固态硬盘上。而常见文件系统的存储单位文件系统块(FileSystemBlock,简称FSB)的大小基本固定,通常都采用4KB的存储单位。闪存页的容量已经达到文件系统块的数倍。以16KB的闪存页为例,4个4KB的文件系统块才能填满一个闪存页。如果需要更新一个闪存页中4KB的数据,需要先将整个闪存页中16KB的数据读出,与4KB的更新数据合并后,再写入一个新的闪存页中。由表1可知,在2010年之前,主要NAND型闪存芯片的闪存页容量不超过4KB。此时,闪存页容量与文件系统块不匹配的矛盾并不凸显。随着闪存页容量的增加,大容量闪存页对读写性能的影响越来越明显,常用的闪存转换层方法并不能很好的解决这个问题。表1NAND型闪存和闪存页容量增大趋势
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种映射粒度自适应的闪存转换层管理方法(MappingGranularityAdaptiveFlashTranslationLayer,简称MGA-FTL),其目的在于,利用闪存单元可以被重复写入的特性,支持以闪存子页为粒度分配存储空间和对闪存页进行重复写入,提高了大容量闪存页的空间利用率和读写性能。MGA-FTL针对不同的文件系统请求的粒度,采用完整的闪存页或闪存页部分空间进行响应,即采用页级映射和子页级映射相混合映射的管理方法。当文件系统请求大小与一个闪存页大小相同时,分配一个完整的闪存页存储请求的数据;当文件系统请求大小小于一个闪存页大小时,分配闪存页中的一个子页来存储请求的数据,该闪存页中剩余的空间可以保留用于存储其他小于闪存页大小的请求;另外,本专利技术通过提出一种子页合并策略。子页合并策略根据该文件系统请求访问的频率,通过限制文件系统请求可以分布在不同闪存页中的数目,更好的减少请求的访问延迟,使系统达到更好的性能。为实现上述目的,按照本专利技术的一个方面,提供了一种映射粒度自适应的闪存转换层管理方法,包括以下步骤:(1)从文件系统接收数据请求,并判断该数据请求的类型是读请求还是写请求,如果是写请求,则进入步骤(2),如果是读请求,则进入步骤(9);(2)根据该写请求的逻辑页号查询闪存存储空间的页映射表,以判断该写请求对应的逻辑页是否不是第一次写,如果是则转入步骤(3),否则转入步骤(4);(3)根据页映射表中该逻辑页号对应的类型判断该逻辑页的类型是部分页面还是完整页面,如果是部分页面则将该部分页面对应的子页状态表中的子页状态设置为失效,然后转入步骤(4),如果是完整页面则将完整页面对应的页状态表中的页状态设置为失效,然后转入步骤(4);(4)判断写请求的大小是否大于闪存页的大小(其通常是8kB或者16kB),如果是则转入步骤(5),否则转入步骤(6);(5)从整页空闲队列的队首取出空闲的物理页,将写请求对应的数据写入该物理页中,并将完整页面对应的页状态表中的页状态修改为全部有效,然后过程结束;其中整页空闲队列是系统初始化时建立的,用于分配空闲的物理页;(6)判断写请求的分配策略是独占式分配还是共享式分配,如果是独占式分配转入步骤(7),如果是共享式分配转入步骤(8)。(7)根据页映射表中该逻辑页号对应子页映射表指针,找到该逻辑页号的子页映射表,将写请求对应的数据写入同一个物理页中。若页映射表中没有该逻辑页号的表项,则创建表项并在整页空闲队列的队首取出空闲的物理页进行分配。然后过程结束。(8)从请求大小对应的部分页空闲的队首取出空闲的物理子页,将写请求对应的数据写入该物理子页中,并将部分页面对应的子页状态表中的子页状态设置为有效,然后过程结束;其中部分有效队列是根据整页空闲队列的使用情况动态建立的,用于响应部分页面数据大小的写请求;(9)根据该读请求的逻辑页号对应的类型判断该逻辑页的类型是部分页面还是完整页面,如果是部分页面则转入步骤(10),否则转入步骤(12)。(10)根据子页映射表中该读请求的逻辑页号对应的物理子页号,读出物理子页中数据,并将该逻辑页的读次数计数器加1;(11)根据该逻辑页的读次数计数器以及该逻辑页关联的物理页数量,判断是否需要合并分散的子页,如果需要则进行合并,然后过程结束,否则过程结束。(12)根据页映射表中该读请求的逻辑页号对应的物理页号,读出物理页中数据,然后过程结束。优选地,步骤(2)具体为,首先查询闪存存储空间的页映射表,并判断其中是否有写请求的逻辑页号,如果有则表示逻辑页不是第一次写,否则表示是第一次写。优选地,页映射表结构包括两级索引的映射表,第一级为页映射表,表项包括逻辑闪存页号,该逻辑闪存页的映射类型和对应物理闪存页号,其中如果逻辑闪存页号对应映射类型是部分页面,则物理闪存页号表项指向一个第二级映射表,称为子页映射表,子页映射表表项包括逻辑闪存子页号,该逻辑闪存子页号对应物理闪存页号、闪存页中具体的物理闪存子页号、该逻辑页关联的物理页数量。优选地,页状态表结构包括两级闪存页状态表,第一级为页状态表,表项包括物理闪存页号、物理闪存页的类型、以及物理闪存页状态,如果物理闪存页对应类型为部分页面,则状态表项指向一个子页状态表,该子页状态表包括物理子页号、子页对应状态、以及物理页对应的逻辑页的数量。优选地,空闲页队列包括一个整页空闲队列和一个部分页空闲队列,整页空闲队列将所有状态为整页空闲的闪存页组成一条队列,部分页空闲队列分为3条子队列,每条队列下反别挂载空闲空间为4KB、8K和12KB大小的闪存页,这些闪存页之间的转化规则是,如果响应请求之后该闪存页中还有可用的空间,则再将其链入相应空闲容量的队列中。总体而言,通过本专利技术所构思的以上技术方案与现有技术相比,能够取得下列有益效果:1、本专利技术基于闪存页的重复写入特性,结合具体的闪存芯片访问接口和特性参数,提出了一种以闪存子页为粒度对大容量闪存页进行重复写入的方法,减少了主机和固态硬盘之间不必要的数据传输,进而提高了闪存存储空间的利用率。2、本专利技术重新定义了闪存页的状态和状态转换图。增加了一个“部分有本文档来自技高网
...
一种映射粒度自适应的闪存转换层管理方法

【技术保护点】
一种映射粒度自适应的闪存转换层管理方法,其特征在于,包括以下步骤:(1)从文件系统接收数据请求,并判断该数据请求的类型是读请求还是写请求,如果是写请求,则进入步骤(2),如果是读请求,则进入步骤(9);(2)根据该写请求的逻辑页号查询闪存存储空间的页映射表,以判断该写请求对应的逻辑页是否不是第一次写,如果是则转入步骤(3),否则转入步骤(4);(3)根据页映射表中该逻辑页号对应的类型判断该逻辑页的类型是部分页面还是完整页面,如果是部分页面则将该部分页面对应的子页状态表中的子页状态设置为失效,然后转入步骤(4),如果是完整页面则将完整页面对应的页状态表中的页状态设置为失效,然后转入步骤(4);(4)判断写请求的大小是否大于闪存页的大小(其通常是8kB或者16kB),如果是则转入步骤(5),否则转入步骤(6);(5)从整页空闲队列的队首取出空闲的物理页,将写请求对应的数据写入该物理页中,并将完整页面对应的页状态表中的页状态修改为全部有效,然后过程结束;其中整页空闲队列是系统初始化时建立的,用于分配空闲的物理页;(6)判断写请求的分配策略是独占式分配还是共享式分配,如果是独占式分配转入步骤(7),如果是共享式分配转入步骤(8)。(7)根据页映射表中该逻辑页号对应子页映射表指针,找到该逻辑页号的子页映射表,将写请求对应的数据写入同一个物理页中。若页映射表中没有该逻辑页号的表项,则创建表项并在整页空闲队列的队首取出空闲的物理页进行分配。然后过程结束。(8)从请求大小对应的部分页空闲的队首取出空闲的物理子页,将写请求对应的数据写入该物理子页中,并将部分页面对应的子页状态表中的子页状态设置为有效,然后过程结束;其中部分有效队列是根据整页空闲队列的使用情况动态建立的,用于响应部分页面数据大小的写请求;(9)根据该读请求的逻辑页号对应的类型判断该逻辑页的类型是部分页面还是完整页面,如果是部分页面则转入步骤(10),否则转入步骤(12)。(10)根据子页映射表中该读请求的逻辑页号对应的物理子页号,读出物理子页中数据,并将该逻辑页的读次数计数器加1;(11)根据该逻辑页的读次数计数器以及该逻辑页关联的物理页数量,判断是否需要合并分散的子页,如果需要则进行合并,然后过程结束,否则过程结束。(12)根据页映射表中该读请求的逻辑页号对应的物理页号,读出物理页中数据,然后过程结束。...

【技术特征摘要】
1.一种映射粒度自适应的闪存转换层管理方法,其特征在于,包括以下步骤:(1)从文件系统接收数据请求,并判断该数据请求的类型是读请求还是写请求,如果是写请求,则进入步骤(2),如果是读请求,则进入步骤(9);(2)根据该写请求的逻辑页号查询闪存存储空间的页映射表,以判断该写请求对应的逻辑页是否不是第一次写,如果是则转入步骤(3),否则转入步骤(4);(3)根据页映射表中该逻辑页号对应的类型判断该逻辑页的类型是部分页面还是完整页面,如果是部分页面则将该部分页面对应的子页状态表中的子页状态设置为失效,然后转入步骤(4),如果是完整页面则将完整页面对应的页状态表中的页状态设置为失效,然后转入步骤(4);(4)判断写请求的大小是否大于闪存页的大小(其通常是8kB或者16kB),如果是则转入步骤(5),否则转入步骤(6);(5)从整页空闲队列的队首取出空闲的物理页,将写请求对应的数据写入该物理页中,并将完整页面对应的页状态表中的页状态修改为全部有效,然后过程结束;其中整页空闲队列是系统初始化时建立的,用于分配空闲的物理页;(6)判断写请求的分配策略是独占式分配还是共享式分配,如果是独占式分配转入步骤(7),如果是共享式分配转入步骤(8)。(7)根据页映射表中该逻辑页号对应子页映射表指针,找到该逻辑页号的子页映射表,将写请求对应的数据写入同一个物理页中。若页映射表中没有该逻辑页号的表项,则创建表项并在整页空闲队列的队首取出空闲的物理页进行分配。然后过程结束。(8)从请求大小对应的部分页空闲的队首取出空闲的物理子页,将写请求对应的数据写入该物理子页中,并将部分页面对应的子页状态表中的子页状态设置为有效,然后过程结束;其中部分有效队列是根据整页空闲队列的使用情况动态建立的,用于响应部分页面数据大小的写请求;(9)根据该读请求的逻辑页号对应的类型判断该逻辑页的类型是部分页面还是完整页面,如果是部分页面则转入步骤(...

【专利技术属性】
技术研发人员:刘景宁童薇冯丹冯雅植余晨晔
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北;42

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

1