CN108710507B - 一种ssd主机休眠优化的方法 - Google Patents
一种ssd主机休眠优化的方法 Download PDFInfo
- Publication number
- CN108710507B CN108710507B CN201810141206.4A CN201810141206A CN108710507B CN 108710507 B CN108710507 B CN 108710507B CN 201810141206 A CN201810141206 A CN 201810141206A CN 108710507 B CN108710507 B CN 108710507B
- Authority
- CN
- China
- Prior art keywords
- data
- host
- range
- block address
- logical block
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种SSD主机休眠优化的方法,其特征在于增加模式识别引擎,主机触发进入休眠时,先检查是否已经完成模式识别,如果已经完成则直接根据主机命令访问的数据的逻辑块地址是否落入休眠逻辑块地址范围,如果落入则将该命令访问的数据写入主机休眠数据区,所述主机休眠数据区设置在SLC区域;如果没有落入休眠逻辑块地址范围,则直接将数据写入用户数据区;如果未完成模式识别,则记录每个命令访问的数据的逻辑块地址范围,同时将数据写入用户数据区;当主机上电触发恢复时,先检查是否已经完成模式识别,如果已经完成则直接从主机休眠数据区加载休眠数据。可有效降低主机特定场景数据写入的写放大可有效地提升产品竞争力。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种SSD主机休眠优化的方法。
背景技术
SSD(固态硬盘)已经被广泛应用于各种场合,目前在PC市场,已经逐步替代传统的HDD,从可靠性和性能方面为用户提供较好的体验。
作为SSD的主要存储介质,NAND一直在更新换代。随着工艺的演进,颗粒的可靠性面临较大的挑战,配合一定的纠错策略,颗粒可以提供一定的擦写次数。
在NAND固定擦写次数的前提下,由于写放大的存在,SSD能够提供给Host写入的数据量会下降。如何降低写放大,是提高SSD寿命的关键因素。在PC用户模型下,除了用户显式写入的数据,如Excel、Word…文件会产生NAND的写入,系统隐性地也会产生较大的写入数据,如文件系统、缓存文件等等。而在这当中,随着操作系统的升级换代,其引入的快速恢复技术–休眠,是引发系统隐性写放大的重要因素之一。
随着新的OS对于开机恢复时间以及功耗的诉求越来越高,其在特定场景下会将当前工作场景下的数据备份到SSD上,同时将系统掉电;开机后,从对应的存储空间加载信息,从而实现快速开机。
由于此过程比较频繁,且伴随着大量的数据写入,对于SSD来说,由于写放大的存在,会导致SSD消耗过多的擦写次数,进而极大地影响了SSD寿命。
图1是SSD内部数据存储示例;为了加快访问速度,一般对于TLC类型的SSD都会分出一部分的空间转换为SLC类型或者直接增加部分SLC类型的存储空间,将需要频繁访问的系统管理数据存储在SLC区域上,如映射表、坏块表等等,其具备访问速度快,可靠性高的特定。但其物理空间较小,一般为盘容量的1%左右;将主机Host写入的用户数据存储在TLC区域中,存放主机写入的数据,容量大,访问速度和可靠性相对较低。
图2是常规主机休眠流程图。主流OS的特定场景存储、恢复的流程,以下以Window休眠为例进行说明:
当主机触发进入休眠流程时,会将CPU Register(寄存器)以及DRAM中的进程数据、缓冲区等进行压缩Compression,并按照OS所定义的封包格式进行打包Format,然后写入到SSD特定的文件上,如hiberfil.sys;完成写入后,主机发送刷新缓存指令FlushCache,确保数据写入到SSD NAND上;最后发送安全关机的命令。
当主机触发休眠恢复流程时,上电后首先读取之前保存的文件hiberfil.sys的头文件,解析上次保存的信息;加载对应的文件内容也就是休眠数据到主机端进行解压Decompression和提取Extract,并放置到匹配的位置(CPU Register或者DRAM);当完成所有的场景数据恢复后,由于CPU的运行上下文都和掉电前保持一致,所以CPU可以继续运行,极大地加速了开机恢复过程。
在休眠恢复流程的最后,主机会通过特殊的命令标识休眠文件无效:将hiberfil.sys的头字段清0,或者将头字段状态修改为”WKUP”等状态,或者将hiberfil.sys的文件主体TRIM(修剪)掉等等……具体策略和OS以及文件系统的版本关联。
在此过程中,在频繁进出休眠Hibernation的场景下,需要频繁保存恢复CPURegister/DRAM的数据。而随着主机性能的提升,DRAM空间越来越大,从4GB到8GB乃至更高,从而使得每次SSD的数据写入量很大。
进一步的,传统的SSD中将主机写入的数据都混合保存在图1所示的TLC区域,此区域在SSD运行态下总是存在一定的写放大,典型的也就意味着主机每写入1GB的数据,就会带来2GB的NAND写入,从而极大地降低了SSD寿命。
发明内容
针对以上缺陷,本发明目的在于如何降低休眠进入和恢复引入的隐性写放大问题。
为了实现上述目的,本发明提供了一种SSD主机休眠优化的方法,其特征在于增加模式识别引擎,所述模式识别实现获取休眠需要保存的有效休眠逻辑块地址范围记为Check_Range,主机触发进入休眠时,先检查是否已经完成模式识别,如果已经完成则直接根据主机命令访问的数据的逻辑块地址是否落入休眠逻辑块地址范围,如果落入则将该命令访问的数据写入主机休眠数据区,所述主机休眠数据区设置在SLC区域;如果没有落入休眠逻辑块地址范围,则直接将数据写入用户数据区;如果未完成模式识别,则记录每个命令访问的数据的逻辑块地址范围,同时将数据写入用户数据区;当主机上电触发恢复时,先检查是否已经完成模式识别,如果已经完成则直接从主机休眠数据区加载休眠数据。
所述的SSD主机休眠优化的方法,其特征在于所述模式识别具体为,分别统计记录多次安全关机需要保存现场数据的范围和休眠恢复时需要恢复的现场数据的范围来合并获得有效休眠逻辑块地址范围并记为Power_Range,具体为:
当接收到安全关机命令也就是触发进入休眠时,将所记录的最近N秒内的命令访问的数据的逻辑块地址的范围LBA Range进行拟合,获取其访问的上限LBA和下限LBA,获取本次的关机逻辑块地址范围Power Off LBA Range,并写入SSD的系统管理数据区域;
当接收到上电触发休眠恢复时,记录恢复阶段每个命令的访问的数据的逻辑块地址的范围LBA Range,并进行拟合,获取其访问的上限LBA和下限LBA,获取本次的上电逻辑块地址范围Power On LBA Range;
将一个轮次的Power Off LBA Range与Power On LBA Range进行取交集,记录为一次Power_Cycle_X_Range,X为检测轮次数;
当检测的轮次数大于预先设置轮次阀值CHECK_CNT_TH,且各轮次的Power_Cycle_X_Range的重合度达到预先设置的值时,则标识为已经完成模式识别,并将合并的地址范围存储为有效休眠逻辑块地址范围记为Check_Range;否则表识为未完成模式识别。
所述的SSD主机休眠优化的方法,其特征在于当上电触发休眠恢复加载完休眠数据后,直接将SLC区域中整个主机休眠数据区进行回收。
本发明提供的技术方案可有效降低主机特定场景数据(如休眠)写入的写放大,进而提升了SSD的寿命;并且由于写入高速SLC区域,可进一步降低主机进出特定场景(如休眠)的延迟,可有效地提升产品竞争力。
附图说明
图1是SSD内部数据存储示例;
图2是常规主机休眠流程图;
图3是改进后的数据写入策略示意图;
图4是模式识别流程图;
图5是完成模式识别后进入休眠的流程图;
图6是休眠恢复流传图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图3是改进后的数据写入策略示意图;针对主机特定数据模式识别以及不同写入的策略:
1、进入过程:
当主机触发休眠数据写入时,SSD内部检查是否已经完成模式识别(默认为没有完成)。
如已经完成模式识别,则按照本发明的优化策略,识别所写入的数据是否为特定的主机系统数据(如休眠),如是则写入到指定NAND区域,否则写入用户数据NAND区域。
如尚未完成模式识别,则记录每个命令的访问逻辑块地址LBA Range,同时将数据写入到用户数据区域。
重复如上流程直到主机完成所有休眠数据写入。
当接收到安全关机命令,将所记录的最近N秒(N可配置,典型如10秒)内的命令的LBA Range进行拟合,获取其访问的上下限LBA,组合为Power Off LBA Range,写入到SSD的系统管理数据区域。
2、恢复过程:
主机上电触发休眠恢复,SSD内部检查是否已经完成模式识别(默认为没有完成)。
如已经完成模式识别,则按照本发明的优化策略,识别所读取的数据是否为特定的主机系统数据,如是从指定区域读取,否则从用户数据区域读取。
如尚未完成模式识别,则记录每个命令的访问LBA Range,同时将数据加载并返回主机。
重复如上流程直到所有数据加载完成。
主机结束休眠恢复,并标识休眠文件无效。将本次Power On后的LBA Range进行拟合,获取其访问的上下限LBA,组合为Power On/Off LBA Range。
进入主机workload识别flow。
图4是模式识别流程图;
获取本次SSD所记录的记录:Power On/Off LBA Range;
获取两个LBA Range的交集,记为Power_Cycle_X_Range,X为检测次数,依次为1/2/3…;
检查记录的有效Power Cycle Range有效个数是否大于阈值(CHECK_CNT_TH,可自定义,典型为3);
检查有效Power Cycle Range的重合度,是否均重合且Range对应的大小小于阈值(CHECK_SIZE_TH,自定义,典型为16GB);
如果检查成功,则标识”完成模式识别”并记录该LBA Range为后续的Check_Range;
如果检查失败,则删除最早的一份Power_Cycle_X_Range,并在后续的Power Off/On周期内继续探测。
图5是完成模式识别后进入休眠的流程图;主机写入用户数据,SSD端判断非休眠数据,故写入传统的TLC区域;主机写入休眠数据,SSD端根据Check_Range,写入到独立的SLC区域。
由于使用了SLC区域,其写入性能远远高于TLC区域,所以能够在较快时间内完成主机场景保存,从而加速了休眠进入过程。
图6是休眠恢复流传图:
主机上电后,加载休眠数据;
如果判断为休眠数据,SSD从SLC区域加载对应数据;
如果判断为普通用户数据,则从TLC区域加载;
完成休眠恢复后,主机会通过特殊的命令标识休眠文件无效:将hiberfil.sys的头字段清0,将头字段状态修改为”WKUP”等状态,将hiberfil.sys的文件主体TRIM掉等等。具体策略和OS以及文件系统的版本关联。
当完成休眠文件加载后,SSD内部将SLC区域整个释放掉。当下次休眠进入时,可以直接写入,而不需要进行额外的垃圾回收。
以8GB SLC空间为例,同等TLC只能转换为1/3容量的SLC,TLC擦写次数为3000,SLC擦写次数为30000。在传统SSD中,考虑到写放大存在,能够承受(8GB*3*3000/2),大约36TB的写入量;而在本方案下,则能提供(8GB*30000),大约240TB的写入量。
综合如上策略,因为从高速SLC区域加载,所以开机恢复时间可大大加快;又由于才用独立SLC区域存储休眠文件,极大地提升了SSD寿命。
以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。
Claims (2)
1.一种SSD主机休眠优化的方法,其特征在于增加模式识别引擎,所述模式识别实现获取休眠需要保存的有效休眠逻辑块地址范围记为Check_Range,主机触发进入休眠时,先检查是否已经完成模式识别,如果已经完成则直接根据主机命令访问的数据的逻辑块地址是否落入休眠逻辑块地址范围,如果落入则将该命令访问的数据写入主机休眠数据区,所述主机休眠数据区设置在SLC区域;如果没有落入休眠逻辑块地址范围,则直接将数据写入用户数据区;如果未完成模式识别,则记录每个命令访问的数据的逻辑块地址范围,同时将数据写入用户数据区;当主机上电触发恢复时,先检查是否已经完成模式识别,如果已经完成则直接从主机休眠数据区加载休眠数据;所述模式识别具体为,分别统计记录多次安全关机需要保存现场数据的范围和休眠恢复时需要恢复的现场数据的范围来合并获得有效休眠逻辑块地址范围并记为Power_Range,具体为:
当接收到安全关机命令也就是触发进入休眠时,将所记录的最近N秒内的命令访问的数据的逻辑块地址的范围LBA Range进行拟合,获取其访问的上限LBA和下限LBA,获取本次的关机逻辑块地址范围Power Off LBA Range,并写入SSD的系统管理数据区域;
当接收到上电触发休眠恢复时,记录恢复阶段每个命令的访问的数据的逻辑块地址的范围LBA Range,并进行拟合,获取其访问的上限LBA和下限LBA,获取本次的上电逻辑块地址范围Power On LBA Range;
将一个轮次的Power Off LBA Range与Power On LBA Range进行取交集,记录为一次Power_Cycle_X_Range,X为检测轮次数;
当检测的轮次数大于预先设置轮次阀值CHECK_CNT_TH,且各轮次的Power_Cycle_X_Range的重合度达到预先设置的值时,则标识为已经完成模式识别,并将合并的地址范围存储为有效休眠逻辑块地址范围记为Check_Range;否则表识为未完成模式识别。
2.根据权利要求1所述的SSD主机休眠优化的方法,其特征在于当上电触发休眠恢复加载完休眠数据后,直接将SLC区域中整个主机休眠数据区进行回收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810141206.4A CN108710507B (zh) | 2018-02-11 | 2018-02-11 | 一种ssd主机休眠优化的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810141206.4A CN108710507B (zh) | 2018-02-11 | 2018-02-11 | 一种ssd主机休眠优化的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108710507A CN108710507A (zh) | 2018-10-26 |
CN108710507B true CN108710507B (zh) | 2021-01-12 |
Family
ID=63866152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810141206.4A Active CN108710507B (zh) | 2018-02-11 | 2018-02-11 | 一种ssd主机休眠优化的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108710507B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885343B (zh) * | 2019-02-25 | 2022-03-29 | 深圳忆联信息系统有限公司 | 一种控制器低功耗启动方法、装置、计算机设备及存储介质 |
CN110457899B (zh) * | 2019-08-12 | 2021-06-01 | 北京无线电测量研究所 | 一种操作系统保护系统及方法 |
CN110727464B (zh) * | 2019-09-11 | 2022-01-07 | 无锡江南计算技术研究所 | 一种针对访存空间独立的多核处理器的信息处理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765625A (zh) * | 2014-01-08 | 2015-07-08 | 群联电子股份有限公司 | 休眠模式启动方法、存储器控制电路单元及存储装置 |
CN105051684A (zh) * | 2013-03-14 | 2015-11-11 | 桑迪士克科技股份有限公司 | 用于预测和改进启动序列的系统和方法 |
CN105224474A (zh) * | 2014-06-03 | 2016-01-06 | 深圳市腾讯计算机系统有限公司 | 固态硬盘闪存转换层的实现系统和闪存转换层的实现装置 |
CN107450858A (zh) * | 2017-08-11 | 2017-12-08 | 湖南国科微电子股份有限公司 | 一种固态硬盘分级存储方法及系统 |
CN107656875A (zh) * | 2017-09-15 | 2018-02-02 | 忆正科技(武汉)有限公司 | 作为系统盘的固态硬盘缩短上电时间的方法及系统 |
WO2018025485A1 (ja) * | 2016-08-05 | 2018-02-08 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びにプログラム |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150331624A1 (en) * | 2014-05-19 | 2015-11-19 | Kabushiki Kaisha Toshiba | Host-controlled flash translation layer snapshot |
-
2018
- 2018-02-11 CN CN201810141206.4A patent/CN108710507B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105051684A (zh) * | 2013-03-14 | 2015-11-11 | 桑迪士克科技股份有限公司 | 用于预测和改进启动序列的系统和方法 |
CN104765625A (zh) * | 2014-01-08 | 2015-07-08 | 群联电子股份有限公司 | 休眠模式启动方法、存储器控制电路单元及存储装置 |
CN105224474A (zh) * | 2014-06-03 | 2016-01-06 | 深圳市腾讯计算机系统有限公司 | 固态硬盘闪存转换层的实现系统和闪存转换层的实现装置 |
WO2018025485A1 (ja) * | 2016-08-05 | 2018-02-08 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びにプログラム |
CN107450858A (zh) * | 2017-08-11 | 2017-12-08 | 湖南国科微电子股份有限公司 | 一种固态硬盘分级存储方法及系统 |
CN107656875A (zh) * | 2017-09-15 | 2018-02-02 | 忆正科技(武汉)有限公司 | 作为系统盘的固态硬盘缩短上电时间的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108710507A (zh) | 2018-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9720616B2 (en) | Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED) | |
TWI385523B (zh) | 用於快閃記憶體的資料備份方法及其控制器與儲存系統 | |
US9489258B2 (en) | Green NAND SSD application and driver | |
US9841911B2 (en) | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance | |
US8316201B2 (en) | Methods for executing a command to write data from a source location to a destination location in a memory device | |
US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
TWI423024B (zh) | 用於快閃記憶體的資料儲存方法及其控制器與儲存系統 | |
TWI515735B (zh) | 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置 | |
US20190369892A1 (en) | Method and Apparatus for Facilitating a Trim Process Using Auxiliary Tables | |
TWI385518B (zh) | 用於快閃記憶體的資料儲存方法及儲存系統 | |
US20100161932A1 (en) | Methods for writing data from a source location to a destination location in a memory device | |
CN108710507B (zh) | 一种ssd主机休眠优化的方法 | |
WO2017161795A1 (zh) | 处理流水文件的方法及系统 | |
WO2019120133A1 (zh) | 一种基于固态硬盘的日志文件的读写方法及固态硬盘 | |
US8954692B2 (en) | File protecting method and system, and memory controller and memory storage apparatus thereof | |
TWI421870B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 | |
CN103544110A (zh) | 一种基于固态盘的块级连续数据保护方法 | |
CN102890655B (zh) | 存储器储存装置、其存储器控制器与有效数据识别方法 | |
CN105224474A (zh) | 固态硬盘闪存转换层的实现系统和闪存转换层的实现装置 | |
CN108874574B (zh) | 一种垃圾回收处理方法及相关装置 | |
CN111984441A (zh) | 瞬间断电回复处理方法及装置以及计算机可读取存储介质 | |
TWI517165B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
US8539156B2 (en) | Storage subsystem and its logical unit processing method | |
US8751760B2 (en) | Systems and methods for power state transitioning in an information handling system | |
KR20210097493A (ko) | 메모리 시스템의 데이터 분류 방법 및 이를 수행하는 컨트롤러 |
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 |