CN106815152B - 一种优化页级闪存转换层的方法 - Google Patents
一种优化页级闪存转换层的方法 Download PDFInfo
- Publication number
- CN106815152B CN106815152B CN201611226952.0A CN201611226952A CN106815152B CN 106815152 B CN106815152 B CN 106815152B CN 201611226952 A CN201611226952 A CN 201611226952A CN 106815152 B CN106815152 B CN 106815152B
- Authority
- CN
- China
- Prior art keywords
- page
- flash
- mapping
- log
- map
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种优化页级闪存转换层的方法,属于数据存储领域。本发明利用SLC闪存支持部分写的特性,采用原地日志写的机制减少闪存映射页访问的开销。该方法将闪存映射页预留一小部分区域作为日志区。当闪存映射页被更新时,将缓存中属于该映射页的所有脏映射条目构建为一个日志单元,并使用部分写入机制追加写到映射页的日志区。当日志区写满或写入次数超过一定阈值时,将闪存映射页中的映射条目和日志区的条目进行合并操作,并写入到新的闪存映射页,此时新的映射页中的日志区为空,可以接收新的映射页更新操作并再次使用原地日志写机制。本发明通过减少闪存映射页访问带来的开销,达到提高闪存固态盘的性能和寿命的目的。
Description
技术领域
本发明属于数据存储领域,更具体地,涉及一种优化页级闪存转换层的方法。
背景技术
NAND闪存(Flash Memory)具有体积小、低功耗、高性能等优点,因此作为一种存储介质被广泛应用于嵌入式系统、笔记本电脑、数据中心等。闪存按照存储密可以分为SLC(Single-Level Cell),MLC(Multi-Level Cell)和TLC(Triple-Level Cell)等,其中SLC的性能和可靠性最高,因此被广泛应用于企业级和工业级固态盘。然而,闪存介质本身也存在着一些独特的限制,例如不支持覆盖写、读写操作按页为单位执行,而擦除操作按块执行(每个块包含多个页)、以及擦出次数有限等等。为了克服这些限制,闪存转换层(FlashTranslation Layer,FTL)被用来管理闪存介质,使应用程序可以方便的对闪存介质进行传统的基于块的读写操作。
由于闪存页不能直接覆盖写,而是需要先进行擦除。闪存的擦除操作时延较大,因此闪存转换层通常会将被更新的数据写到新的闪存页,而将旧的闪存页标记为无效页。这就需要闪存转换层能够将存储中的逻辑地址映射到闪存中的物理地址,这个过程被称为地址转换。随着无效页的增加,闪存中的空闲块就会不断变少,因此闪存转换层需要进行垃圾回收,就是将块中的有效页拷贝到新的空闲块,然后对旧的闪存块执行擦除操作。地址转换和垃圾回收对闪存的性能和寿命都起着关键的作用。
闪存转换层中的地址映射按照粒度的不同,可以分为页级映射、块级映射、以及混合映射。对于页级映射的闪存转换层,每个逻辑页可以灵活的映射到闪存中的任何物理页,不仅能够提高闪存物理块的利用率,而且减小了垃圾回收的开销,因此得到广泛的应用。然而采用页级映射会使得地址映射表过于庞大,出于性能成本效益以及能耗的考虑,现代的页级闪存转换层算法通常利用小容量的动态随机存取存储器(Dynamic Random AccessMemory,DRAM)或静态随机存取存储器(Static Random Access Memory,SRAM)作为映射缓存,用来存放最近访问的映射条目从而加速地址转换过程。而整体的地址映射表则被持久化地存放在闪存中的物理页之中,这些页被称为闪存映射页。然而,缓存替换以及垃圾回收等操作会带来大量的闪存映射页读取和更新操作,这些访问不仅影响了固态盘的性能,而且会造成额外的擦除操作进而降低固态盘的寿命。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种优化页级闪存转换层的方法,其目的在于利用SLC闪存支持部分写的特性,采用原地日志写的机制减少闪存映射页访问的开销,从而提高固态盘的性能和寿命。
为实现上述目的,按照本发明的一个方面,提供了一种优化页级闪存转换层的方法,该方法包括以下步骤:
(1)当一个I/O请求到达时,在映射表缓存中查找该请求对应的闪存数据页的物理地址,如果没有在缓存中找到则进入步骤(2),否则跳转到步骤(13);
(2)判断缓存空间是否已满,若是则进入步骤(3),否则跳转到步骤(9);
(3)根据缓存置换算法选择将要被逐出缓存的目标缓存单元,并判断该缓存单元是否含有脏映射条目,若有则进入步骤(4),否则进入步骤(8);
(4)从全局映射目录中查找脏映射条目所在的映射页地址及映射页内日志区的信息;
(5)判断是否日志区空间不足或日志区写入次数超过写入阈值,若是则进入步骤(6),否则跳转到步骤(7);所述日志区空间不小于闪存映射页的12.5%,不大于闪存映射页的25%,优选值为闪存映射页的25%;所述写入阈值根据闪存颗粒的供应厂商设定;
(6)先将日志中的映射条目的映射关系更新到映射区中,之后将脏映射条目的映射关系更新到映射区中,最后所有映射条目写入到新分配的闪存映射页,然后将该页的日志写入次数清零,并更新缓存中全局转换目录中的映射页地址;之后执行步骤(8);
(7)将映射页在缓存中的所有脏映射条目构建一个日志单元写入映射页的日志区,然后将日志写入次数加1;
(8)释放缓存单元从而回收缓存空间;
(9)从全局转换目录中查找该请求映射条目所在的闪存映射页物理地址,并将该页读入临时缓存;
(10)判断该闪存映射页是否含有该映射条目的更新日志,若有则进入步骤(11),否则跳转到步骤(12);
(11)将日志区中的最新版本映射条目加载到映射表缓存;执行步骤(13);
(12)将对应的映射条目加载到映射表缓存;
(13)如果上层请求为读请求则进入步骤(14),否则跳转到步骤(15);
(14)根据缓存中的映射信息读取闪存数据页返回给上层,请求结束;
(15)分配新的闪存数据页进行写入操作,并更新映射表缓存中的映射条目,请求结束。
进一步地,所述脏映射条目具体指在缓存内被修改过映射关系的映射条目,但是这个修改的映射关系并没有被更新到闪存映射页。
进一步地,所述闪存映射页被划分出一部分区域作为日志区,用于写入脏映射条目,剩下的区域定为映射区,用于保存映射条目。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:
(1)本发明将缓存脏映射条目批量写回闪存映射页,从而减少了闪存映射页的写入次数;
(2)本发明利用SLC闪存支持部分写入的特性,使用原地日志写技术代替传统FTL算法中的非原地写机制,从而减少了闪存映射页垃圾回收的开销;
(3)综合以上原因,本发明能够提升固态盘的性能和寿命。
附图说明
图1是本发明方法的流程图;
图2是本发明方法中闪存映射页结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明方法的流程包括以下步骤:
(1)当一个I/O请求到达时,在映射表缓存中查找该请求对应的闪存数据页的物理地址,如果没有在缓存中找到则进入步骤(2),否则跳转到步骤(13);
(2)判断缓存空间是否已满,若是则进入步骤(3),否则跳转到步骤(9);
(3)根据缓存置换算法选择将要被逐出缓存的目标缓存单元,并判断该缓存单元是否含有脏映射条目,若有则进入步骤(4),否则进入步骤(8);
(4)从全局映射目录中查找脏映射条目所在的映射页地址及映射页内日志区的信息;
(5)判断是否日志区空间不足或日志区写入次数超过写入阈值,若是则进入步骤(6),否则跳转到步骤(7);所述日志区空间不小于闪存映射页的12.5%,不大于闪存映射页的25%,优选值为闪存映射页的25%;所述写入阈值根据闪存颗粒的供应厂商设定;
(6)先将日志中的映射条目的映射关系更新到映射区中,之后将脏映射条目的映射关系更新到映射区中,最后所有映射区中映射条目写入到新分配的闪存映射页,然后将该页的日志写入次数清零,并更新缓存中全局转换目录中的映射页地址;之后执行步骤(8);
(7)将映射页在缓存中的所有脏映射条目构建一个日志单元写入映射页的日志区,然后将日志写入次数加1;
(8)释放缓存单元从而回收缓存空间;
(9)从全局转换目录中查找该请求映射条目所在的闪存映射页物理地址,并将该页读入临时缓存;
(10)判断该闪存映射页是否含有该映射条目的更新日志,若有则进入步骤(11),否则跳转到步骤(12);
(11)将日志区中的最新版本映射条目加载到映射表缓存;执行步骤(13);
(12)将对应的映射条目加载到映射表缓存;
(13)如果上层请求为读请求则进入步骤(14),否则跳转到步骤(15);
(14)根据缓存中的映射信息读取闪存数据页返回给上层,请求结束;
(15)分配新的闪存数据页进行写入操作,并更新映射表缓存中的映射条目,请求结束。
如图2所示,本发明中所述闪存映射页被划分出一部分区域作为日志区,用于写入脏映射条目,剩下的区域定为映射区,用于保存映射条目。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (1)
1.一种优化页级闪存转换层的方法,其特征在于,该方法包括以下步骤:
(1)当一个I/O请求到达时,在映射表缓存中查找该请求对应的闪存数据页的物理地址,如果没有在缓存中找到则进入步骤(2),否则跳转到步骤(13);
(2)判断缓存空间是否已满,若是则进入步骤(3),否则跳转到步骤(9);
(3)根据缓存置换算法选择将要被逐出缓存的目标缓存单元,并判断该缓存单元是否含有脏映射条目,若有则进入步骤(4),否则进入步骤(8);
(4)从全局映射目录中查找脏映射条目所在的映射页地址及映射页内日志区的信息;
(5)判断是否日志区空间不足或日志区写入次数超过写入阈值,若是则进入步骤(6),否则跳转到步骤(7);
(6)先将日志中的映射条目的映射关系更新到映射区中,之后将脏映射条目的映射关系更新到映射区中,最后所有映射区中映射条目写入到新分配的闪存映射页,然后将该页的日志写入次数清零,并更新缓存中全局转换目录中的映射页地址;之后执行步骤(8);
(7)将映射页在缓存中的所有脏映射条目构建一个日志单元写入映射页的日志区,然后将日志写入次数加1;
(8)释放缓存单元从而回收缓存空间;
(9)从全局转换目录中查找该请求映射条目所在的闪存映射页物理地址,并将该页读入临时缓存;
(10)判断该闪存映射页是否含有该映射条目的更新日志,若有则进入步骤(11),否则跳转到步骤(12);
(11)将日志区中的最新版本映射条目加载到映射表缓存;执行步骤(13);
(12)将对应的映射条目加载到映射表缓存;
(13)如果上层请求为读请求则进入步骤(14),否则跳转到步骤(15);
(14)根据缓存中的映射信息读取闪存数据页返回给上层,请求结束;
(15)分配新的闪存数据页进行写入操作,并更新映射表缓存中的映射条目,请求结束;
所述脏映射条目具体指在缓存内被修改过映射关系的映射条目,但是这个修改的映射关系并没有被更新到闪存映射页;
所述闪存映射页被划分出一部分区域作为日志区,用于写入脏映射条目,剩下的区域定为映射区,用于保存映射条目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611226952.0A CN106815152B (zh) | 2016-12-27 | 2016-12-27 | 一种优化页级闪存转换层的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611226952.0A CN106815152B (zh) | 2016-12-27 | 2016-12-27 | 一种优化页级闪存转换层的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106815152A CN106815152A (zh) | 2017-06-09 |
CN106815152B true CN106815152B (zh) | 2019-05-31 |
Family
ID=59110262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611226952.0A Active CN106815152B (zh) | 2016-12-27 | 2016-12-27 | 一种优化页级闪存转换层的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106815152B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577619A (zh) * | 2017-07-20 | 2018-01-12 | 深圳大学 | 一种数据写入、读取方法和装置 |
CN109800178B (zh) * | 2017-11-17 | 2023-05-16 | 爱思开海力士有限公司 | 垃圾收集方法以及用于混合地址映射的存储器系统 |
CN109446117B (zh) * | 2018-09-06 | 2023-02-28 | 杭州电子科技大学 | 一种固态硬盘页级闪存转换层设计方法 |
CN110968520B (zh) * | 2018-09-30 | 2024-04-12 | 北京忆恒创源科技股份有限公司 | 基于统一缓存架构的多流存储设备 |
CN109918316B (zh) * | 2019-02-26 | 2021-07-13 | 深圳忆联信息系统有限公司 | 一种减少ftl地址映射空间的方法及其系统 |
CN111984604B (zh) * | 2020-08-13 | 2024-03-19 | 华中科技大学 | 一种减少日志结构文件系统碎片的方法及闪存存储系统 |
CN112035294B (zh) * | 2020-08-25 | 2023-12-29 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 安全日志文件系统及其实现方法和介质 |
CN113126921B (zh) * | 2021-04-06 | 2022-03-01 | 南昌航空大学 | 一种提高固态盘内3d闪存芯片写性能的优化方法 |
CN113435109B (zh) * | 2021-06-04 | 2024-01-30 | 衢州学院 | 一种混合ssd的性能与寿命的优化方法 |
CN116303120A (zh) * | 2022-12-14 | 2023-06-23 | 超聚变数字技术有限公司 | 确定闪存转换层ftl算法的方法及设备 |
CN116010298B (zh) * | 2023-03-24 | 2023-09-22 | 温州市特种设备检测科学研究院(温州市特种设备应急处置中心) | Nand型闪存地址映射的方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100115090A (ko) * | 2009-04-17 | 2010-10-27 | 서울대학교산학협력단 | 버퍼를 고려한 가비지 컬렉션 기법 |
CN102521144A (zh) * | 2011-12-22 | 2012-06-27 | 清华大学 | 一种闪存转换层系统 |
CN102981963A (zh) * | 2012-10-30 | 2013-03-20 | 华中科技大学 | 一种固态盘的闪存转换层的实现方法 |
CN104102591A (zh) * | 2013-04-08 | 2014-10-15 | 香港理工大学 | 计算机子系统及在其中实现闪存转换层的方法 |
CN104268094A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140006299A (ko) * | 2012-07-03 | 2014-01-16 | 삼성전자주식회사 | 낸드 플래시 메모리 기반의 저장부에 데이터 기록을 제어하는 방법 및 장치 |
-
2016
- 2016-12-27 CN CN201611226952.0A patent/CN106815152B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100115090A (ko) * | 2009-04-17 | 2010-10-27 | 서울대학교산학협력단 | 버퍼를 고려한 가비지 컬렉션 기법 |
CN102521144A (zh) * | 2011-12-22 | 2012-06-27 | 清华大学 | 一种闪存转换层系统 |
CN102981963A (zh) * | 2012-10-30 | 2013-03-20 | 华中科技大学 | 一种固态盘的闪存转换层的实现方法 |
CN104102591A (zh) * | 2013-04-08 | 2014-10-15 | 香港理工大学 | 计算机子系统及在其中实现闪存转换层的方法 |
CN104268094A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106815152A (zh) | 2017-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106815152B (zh) | 一种优化页级闪存转换层的方法 | |
CN104268094B (zh) | 一种优化的闪存地址映射方法 | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
CN106293521B (zh) | 一种映射粒度自适应的闪存转换层管理方法 | |
CN103092766B (zh) | 一种用于nand flash的均衡损耗实现方法 | |
CN102981963B (zh) | 一种固态盘的闪存转换层的实现方法 | |
CN101477492B (zh) | 一种用于固态硬盘的循环重写闪存均衡方法 | |
US20200117368A1 (en) | Method for achieving data copying in ftl of solid state drive, system and solid state drive | |
TWI399644B (zh) | 非揮發記憶體區塊管理方法 | |
US20140129758A1 (en) | Wear leveling in flash memory devices with trim commands | |
CN103631536B (zh) | 一种利用ssd的无效数据优化raid5/6写性能的方法 | |
CN102819494B (zh) | 一种闪存顺序写入时的优化方法 | |
US9086991B2 (en) | Solid state drive cache recovery in a clustered storage system | |
CN103544110A (zh) | 一种基于固态盘的块级连续数据保护方法 | |
CN101425041A (zh) | 在nand flash存储器上建立fat文件系统的优化方法 | |
CN101169751A (zh) | 具有闪存设备的系统及其数据恢复方法 | |
KR20100115090A (ko) | 버퍼를 고려한 가비지 컬렉션 기법 | |
CN109783398A (zh) | 一种基于相关感知页面级ftl固态硬盘性能优化方法 | |
CN105930282A (zh) | 一种用于nand flash的数据缓存方法 | |
CN110018790B (zh) | 一种保证持久性内存中数据崩溃一致性的方法及系统 | |
US20120030405A1 (en) | Information processing device and information processing method | |
KR101403922B1 (ko) | 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법 | |
CN106354658B (zh) | 一种降低混合映射算法中映射表内存资源占用的方法 | |
CN105607862A (zh) | 一种dram与mram结合具有备份电源的固态硬盘 | |
CN110968266B (zh) | 一种基于热度的存储管理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |