[go: up one dir, main page]

CN107656875B - 作为系统盘的固态硬盘缩短上电时间的方法及系统 - Google Patents

作为系统盘的固态硬盘缩短上电时间的方法及系统 Download PDF

Info

Publication number
CN107656875B
CN107656875B CN201710833652.7A CN201710833652A CN107656875B CN 107656875 B CN107656875 B CN 107656875B CN 201710833652 A CN201710833652 A CN 201710833652A CN 107656875 B CN107656875 B CN 107656875B
Authority
CN
China
Prior art keywords
lba
reading
data management
power
related data
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
Application number
CN201710833652.7A
Other languages
English (en)
Other versions
CN107656875A (zh
Inventor
弗兰克陈
张磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhiyu Technology Co ltd
Original Assignee
Exascend Technology Wuhan Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Exascend Technology Wuhan Co ltd filed Critical Exascend Technology Wuhan Co ltd
Priority to CN201710833652.7A priority Critical patent/CN107656875B/zh
Publication of CN107656875A publication Critical patent/CN107656875A/zh
Application granted granted Critical
Publication of CN107656875B publication Critical patent/CN107656875B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种作为系统盘的固态硬盘缩短上电时间的方法及系统,涉及固态硬盘领域。该方法包括以下步骤:启动相关数据管理表中记录有每次上电过程被读到的LBA表项,每次SSD固件侦测到上电时,将启动相关数据管理表加载到SSD内存中,将启动相关数据管理表中的LBA表项依次更新到L2P表,直至L2P重建成功;上电过程中,如果主机读取请求命中L2P表中的LBA表项,直接响应主机读取请求;如果没有,则等待L2P重建成功后响应。本发明能缩短并固定SSD的上电响应时间。

Description

作为系统盘的固态硬盘缩短上电时间的方法及系统
技术领域
本发明涉及固态硬盘领域,具体是涉及一种作为系统盘的固态硬盘缩短上电时间的方法及系统。
背景技术
无论在个人电脑或者企业级的数据中心,SSD(Solid State Drive,固态硬盘)因为其优越的io throughput(高输入输出吞吐性能)/command latency(低时延)等特性,正变得越来越普及。固态硬盘的firmware(固件)需要维护一个从LBA(Logical BlockAddress,逻辑数据地址,host给每段数据分配的地址)到存储PPA(Physical PageAddress,物理数据地址,这里特指固态硬盘中的地址)的L2P映射表(Logical to Physical映射表,固态硬盘中逻辑到物理地址的映射表),用做读写操作的地址转换。
随着固态硬盘的单盘容量正变的越来越大,L2P需要表示的容量也随之增大,例如逻辑容量为2TB的固态硬盘,如果采取4K单位的page base mapping(页映射方式),每个PPA占4个byte(字节),那么整段L2P表会有2GB的大小。无论采取何种映射方式:page mapping(页映射)/block mapping(块映射)/Hybrid mapping(混合映射),如何在固态硬盘上电的时候用很快的时间来恢复L2P映射表,正变得越来越困难。
目前对于固态硬盘的应用,大致分成两类,一种作为系统盘,也就是通常说的装有操作系统的启动盘;另外一种是数据盘,里面并没有操作系统,只有主机存放的应用数据。
对于系统盘来说,无论应用在个人电脑或者企业存储阵列,其上电时除去响应的ADMIN命令不谈,主要是首先发读命令来加载引导分区信息(MBR或者GPT等方式)和操作系统(windows/linux等等),以主流的windows操作系统下个人PC环境而言,针对SATA固态硬盘的主要的启动过程如下:
1.BIOS启动进入POST(整机上电恢复)过程,同时给固态硬盘供电。
2.在SATA物理层、链路层初始化完毕后,BIOS会通过发Identify/Get feature等ATA命令来初始化固态硬盘。
3.BIOS读取引导分区等信息,确认操作系统位置等信息。
4.BIOS读取操作系统,加载后控制权移交给操作系统。
5.操作系统初始化,读取相应操作系统内部文件。
6.操作系统自身初始化完毕后,读取系统驱动等信息并加载后,进入操作系统用户界面。
上面所列步骤中,主机(这里指system BIOS和操作系统)在上电过程中所需要读取的数据,都是固定的LBA,并且这部分数据,对固态硬盘而言,都属于“极冷”数据,也就是说,被写入更新的次数非常少,例如操作系统本身,而且可能只是在上电的时候被读到。
针对这种情况,SSD固件首先要“学习”上电需要哪些LBA,SSD固件需要维护一张bootup reference LBA table(启动相关数据管理表),用来记录这些LBA,并可以根据具体情况添加和替换相应的LBA。同时,SSD固件还要将启动相关数据管理表在必要的时候按照一定算法写入闪存,确保上电时可以非常快地找到此表。
还有最重要的一点,就是必须要保证数据完整性。无论正常掉电恢复过程,还是非正常掉电恢复过程,此表都必须指向最新并且正确的LBA位置。因为这些数据是系统关键数据,如果丢失或者数据出错,很有可能导致系统无法启动。
目前传统的上电恢复L2P映射表的做法是:SSD firmware(固件)按照需求将L2P映射作为系统内部meta data(元数据,这里特指SSD固件内部记录的关键信息),定期或不定期的写入flash(闪存)中,无论是正常掉电(对于SATA固态硬盘来说,系统掉电之前会发Standby immediately/Idle immediately等PM(电源管理)命令;对于NVME固态硬盘来说,系统会将CC.SHN shutdown notification使能来通知固态硬盘关机)还是非正常掉电(也就是主机没有给相应的关机信号)的上电恢复过程,SSD固件只是按照数据写入的顺序,依次将这些L2P映射页读出来,用来恢复重建L2P映射表,有了L2P映射表,SSD才能正常响应主机发来的任何的读写命令。
如上所述,只有整个L2P映射表全部recovery(上电重建)完成,固态硬盘才会响应主机发来的读写命令。当L2P的恢复过程变得很缓慢,固态硬盘能响应系统命令的时间就随之变长。尤其对于非正常掉电,可能SSD固件没有及时将所需的恢复L2P映射信息写进闪存,这种情况下,SSD固件需要扫描大量的主机写入的数据,通过读出与每段主机数据相对应的元数据,来恢复L2P映射,除去数据完整性问题,这样的方法带来的问题主要有两个:
(1)上电时间变得较长。举个例子,在2TB容量的固态硬盘中,固态硬盘FTL(FlashTranslation Layer,固态硬盘固件的一部分,负责维护L2P映射表)固件采取页映射的环境,假设非正常掉电,需要扫描50G的容量,底层读带宽如果是2GB/s,那么整个扫描过程则需要至少25s。
(2)上电恢复时间变得不确定。尤其是非正常掉电的情况下,掉电的时间点是无法预料的,所以固态硬盘FTL固件需要扫描的数据量也是不固定的,随之带来的恢复时间也是不固定的。
有些厂商,为了解决此问题,将写映射到闪存的动作频率变快,来缩短上电时间,这种刷新方式,通常情况下,会将最热的数据(也就是主机新写入并且可能经常操作的数据)对应的映射频繁写入闪存,这样带来的问题有以下几点:
a.写放大(WA)影响,更多的元数据被写入闪存,影响固态硬盘的寿命。
b.性能影响。将映射写入闪存肯定会占用底层闪存的带宽,那么将映射写入闪存的这段时间,固态硬盘的写入性能就会受影响。
c.最热的映射数据虽然被经常性写入,但上电恢复过程中,主机首先操作的其实并不是这些数据,而是诸如引导分区、操作系统等这些所谓的冷数据。所以这些热数据写入算法可以加速整段L2P映射恢复过程,但这些映射花了很多时间恢复,可主机首先访问的并不是这些数据。
现有的方案,无论增大映射写入闪存的频率,还是其他诸如增加类似L2P日志的方式,都需要整段L2P都恢复完毕,才能正常的响应主机发来的读写命令,这种方法采用的是盲读L2P表,SSD固件将L2P当成一个整体,不关心哪些数据首先需要被读到,算法比较单纯,但是如上所述,随之带来的问题也是比较明显的。SSD固件如何通过自我学习,认知并首先快速恢复那些在上电过程中真正会被首先读到的LBA,自适应地匹配主机的每次上电过程,从而优化FTL算法,来缩短并固定SSD的上电响应时间,是亟待解决的技术问题。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种作为系统盘的固态硬盘缩短上电时间的方法及系统,能够缩短并固定SSD的上电响应时间。
本发明提供一种作为系统盘的固态硬盘缩短上电时间的方法,包括以下步骤:
启动相关数据管理表中记录有每次上电过程被读到的LBA表项,每次SSD固件侦测到上电时,将启动相关数据管理表加载到SSD内存中,将启动相关数据管理表中的LBA表项依次更新到L2P表,直至L2P重建成功;
上电过程中,如果主机读取请求命中L2P表中的LBA表项,直接响应主机读取请求;如果没有,则等待L2P重建成功后响应。
在上述技术方案的基础上,该方法还包括以下步骤:
上电过程中,如果主机读取请求被命中的次数达到预设次数,SSD固件累加启动相关数据管理表中的读取次数。
在上述技术方案的基础上,该方法还包括以下步骤:
上电过程中,如果某个LBA表项不在启动相关数据管理表中,则将读取次数最低的LBA表项依次替换掉。
在上述技术方案的基础上,所述将读取次数最低的LBA表项依次替换掉的具体过程为:上电过程中,如果每个LBA表项的读取次数最大值为预设值,并且为有符号数,则每次都命中;如果读取次数小于预设值,那么读取次数累加;如果读取次数等于预设值,则维持预设值不变;如果LBA表项没有命中,则读取次数减一。
在上述技术方案的基础上,该方法还包括以下步骤:
根据启动相关数据管理表的读取顺序来排序建立一条队列:
读取顺序越小,表明越早被读到,启动相关数据管理表初始化后,里面的各个LBA表项被加载到L2P表,L2P表其他的表项则被初始化成代表非法值的固定格式;SSD固件收到主机读取请求后,查找L2P表,如果LBA表项不是非法值,则表示该LBA表项是启动相关数据管理表命中的,那么根据当前的读取顺序,作为索引,去查找排序好的顺序,找到该LBA表项;
读取次数为负数,表明LBA表项能被替换掉,初始化时,找到哪些LBA表项的读取次数为负数,并予以记录,当有主机读取请求没有命中启动相关数据管理表时,则将这些LBA表项按照读取次数的顺序替换掉;通过读取次数,将为负数的LBA表项按照从小到大的顺序排成一条队列,每次替换都从尾部开始替换,并更新其中的读取顺序以及读取次数、PPA域;
最后,当所有的上电动作完成,L2P也已经完全恢复,则将启动相关数据管理表重新按照读取顺序排序,并存入闪存,以备下次使用。
本发明还提供一种作为系统盘的固态硬盘缩短上电时间的系统,该系统包括L2P表重建单元、响应单元,其中:
L2P表重建单元用于:启动相关数据管理表中记录有每次上电过程被读到的LBA表项,每次SSD固件侦测到上电时,将启动相关数据管理表加载到SSD内存中,将启动相关数据管理表中的LBA表项依次更新到L2P表,直至L2P表重建成功;
响应单元用于:上电过程中,如果主机读取请求命中L2P表中的LBA表项,直接响应主机读取请求;如果没有,则等待L2P重建成功后响应。
在上述技术方案的基础上,该系统还包括读取次数累加单元,用于:上电过程中,如果主机读取请求被命中的次数达到预设次数,SSD固件累加启动相关数据管理表中的读取次数。
在上述技术方案的基础上,该系统还包括LBA表项替换单元,用于:上电过程中,如果某个LBA表项不在启动相关数据管理表中,则将读取次数最低的LBA表项依次替换掉。
在上述技术方案的基础上,所述将读取次数最低的LBA表项依次替换掉的具体过程为:上电过程中,如果每个LBA表项的读取次数最大值为预设值,并且为有符号数,则每次都命中;如果读取次数小于预设值,那么读取次数累加;如果读取次数等于预设值,则维持不变;如果LBA表项没有命中,则读取次数减一。
在上述技术方案的基础上,该系统还包括队列建立单元,用于:根据启动相关数据管理表的读取顺序来排序建立一条队列:
读取顺序越小,表明越早被读到,启动相关数据管理表初始化后,里面的各个LBA表项被加载到L2P表,L2P表其他的表项则被初始化成代表非法值的固定格式;SSD固件收到主机读取请求后,查找L2P表,如果LBA表项不是非法值,则表示该LBA表项是启动相关数据管理表命中的,那么根据当前的读取顺序,作为索引,去查找排序好的顺序,找到该LBA表项;
读取次数为负数,表明LBA表项能被替换掉,初始化时,找到哪些LBA表项的读取次数为负数,并予以记录,当有主机读取请求没有命中启动相关数据管理表时,则将这些LBA表项按照读取次数的顺序替换掉;通过读取次数,将为负数的LBA表项按照从小到大的顺序排成一条队列,每次替换都从尾部开始替换,并更新其中的读取顺序以及读取次数、PPA域;
最后,当所有的上电动作完成,L2P也已经完全恢复,则将启动相关数据管理表重新按照读取顺序排序,并存入闪存,以备下次使用。
与现有技术相比,本发明的优点如下:
本发明的启动相关数据管理表中记录有每次上电过程被读到的LBA表项,每次SSD固件侦测到上电时,本发明将启动相关数据管理表加载到SSD内存中,将启动相关数据管理表中的LBA表项依次更新到L2P表,直至L2P重建成功;上电过程中,如果主机读取请求命中L2P表中的LBA表项,直接响应主机读取请求;如果没有,则等待L2P重建成功后响应。本发明能够明显改善作为系统盘的大容量固态硬盘的开机体验,缩短并固定SSD的上电响应时间。无论对于正常掉电之后的上电恢复,还是非正常掉电之后的上电恢复,上电时间都大为缩短,并且保持稳定。
附图说明
图1是本发明实施例中启动相关数据管理表的表项格式示意图。
图2是是本发明实施例中正常掉电情况下,启动相关数据管理表在闪存阵列上的分布情况示意图。
图3是是本发明实施例中非正常掉电情况下,启动相关数据管理表在闪存阵列上的分布情况示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
本发明实施例提供一种作为系统盘的固态硬盘缩短上电时间的方法,包括以下步骤:
启动相关数据管理表中记录有每次上电过程被读到的LBA表项,每次SSD固件侦测到上电时,将启动相关数据管理表加载到SSD内存中,将启动相关数据管理表中的LBA表项依次更新到L2P表,直至L2P重建成功;
上电过程中,如果主机读取请求命中L2P表中的LBA表项,直接响应主机读取请求;如果没有,则等待L2P重建成功后响应。
上电过程中,如果主机读取请求被命中的次数达到预设次数,SSD固件累加启动相关数据管理表中的读取次数。
上电过程中,如果某个LBA表项不在启动相关数据管理表中,则将读取次数最低的LBA表项依次替换掉,具体过程为:上电过程中,如果每个LBA表项的读取次数最大值为预设值,并且为有符号数,则每次都命中;如果读取次数小于预设值,那么读取次数累加;如果读取次数等于预设值,则维持预设值不变;如果LBA表项没有命中,则读取次数减一。
根据启动相关数据管理表的读取顺序来排序建立一条队列:
读取顺序越小,表明越早被读到,启动相关数据管理表初始化后,里面的各个LBA表项被加载到L2P表,L2P表其他的表项则被初始化成代表非法值的固定格式;SSD固件收到主机读取请求后,查找L2P表,如果LBA表项不是非法值,则表示该LBA表项是启动相关数据管理表命中的,那么根据当前的读取顺序,作为索引,去查找排序好的顺序,找到该LBA表项;
读取次数为负数,表明LBA表项能被替换掉,初始化时,找到哪些LBA表项的读取次数为负数,并予以记录,当有主机读取请求没有命中启动相关数据管理表时,则将这些LBA表项按照读取次数的顺序替换掉;通过读取次数,将为负数的LBA表项按照从小到大的顺序排成一条队列,每次替换都从尾部开始替换,并更新其中的读取顺序以及读取次数、PPA域;
最后,当所有的上电动作完成,L2P也已经完全恢复,则将启动相关数据管理表重新按照读取顺序排序,并存入闪存,以备下次使用。
本发明实施例还提供一种作为系统盘的固态硬盘缩短上电时间的系统,该系统包括L2P表重建单元、响应单元、读取次数累加单元、LBA表项替换单元、队列建立单元,其中:
L2P表重建单元用于:启动相关数据管理表中记录有每次上电过程被读到的LBA表项,每次SSD固件侦测到上电时,将启动相关数据管理表加载到SSD内存中,将启动相关数据管理表中的LBA表项依次更新到L2P表,直至L2P表重建成功。
响应单元用于:上电过程中,如果主机读取请求命中L2P表中的LBA表项,直接响应主机读取请求;如果没有,则等待L2P重建成功后响应。
读取次数累加单元,用于:上电过程中,如果主机读取请求被命中的次数达到预设次数,SSD固件累加启动相关数据管理表中的读取次数。
LBA表项替换单元,用于:上电过程中,如果某个LBA表项不在启动相关数据管理表中,则将读取次数最低的LBA表项依次替换掉,具体过程为:上电过程中,如果每个LBA表项的读取次数最大值为预设值,并且为有符号数,则每次都命中;如果读取次数小于预设值,那么读取次数累加;如果读取次数等于预设值,则维持不变;如果LBA表项没有命中,则读取次数减一。
队列建立单元,用于:根据启动相关数据管理表的读取顺序来排序建立一条队列:
读取顺序越小,表明越早被读到,启动相关数据管理表初始化后,里面的各个LBA表项被加载到L2P表,L2P表其他的表项则被初始化成代表非法值的固定格式;SSD固件收到主机读取请求后,查找L2P表,如果LBA表项不是非法值,则表示该LBA表项是启动相关数据管理表命中的,那么根据当前的读取顺序,作为索引,去查找排序好的顺序,找到该LBA表项;
读取次数为负数,表明LBA表项能被替换掉,初始化时,找到哪些LBA表项的读取次数为负数,并予以记录,当有主机读取请求没有命中启动相关数据管理表时,则将这些LBA表项按照读取次数的顺序替换掉;通过读取次数,将为负数的LBA表项按照从小到大的顺序排成一条队列,每次替换都从尾部开始替换,并更新其中的读取顺序以及读取次数、PPA域;
最后,当所有的上电动作完成,L2P也已经完全恢复,则将启动相关数据管理表重新按照读取顺序排序,并存入闪存,以备下次使用。
下面详细阐述本发明实施例的原理。
Bootup reference LBA table(启动相关数据管理表)是由SSD固件维护,用来记录每次上电过程被读到的LBA等相关信息,以及这些LBA何时被更新、被读取多少次,以此为依据,来决定是否更新/替换其中的LBA,具体定义如图1所示,其中各项内容如下:
Byte 0-3:LBA,表示一个上电被访问到的LBA地址,位宽需依据当前SSD固件支持的最大LBA位宽来定,此文中用4个字节来表示;
Byte 4-7:PPA,表示此LBA所映射到的PPA位置。此映射关系必须与当前的L2P表保持一致。同理,位宽以当前SSD固件定义的位宽为准,此文中同样用4个字节来表示;
Byte 8-15:Read Order(读取顺序),代表此LBA在上电过程中被读到的顺序;
Byte16:Read Count(读取次数),在上电过程中此LBA被读取的次数,次数越大,表示在上电过程中越被需要;
Byte17:Next pointer,用来当作链表结构中的下一个启动相关数据管理表。
综合考虑SSD内存使用以及SSD容量等情况,合理的分配每个表项的空间,并且定制合理的大小。有多少表项数,就有多少LBA可以用来被记录和替换,以100个为例来表示,那么整个表需要100*18=1800个byte,如果每个PPA表示4K大小的数据空间,那么,100*4K就可以表示:4M大小的数据可以被记录,并且在上电过程中被非常快的恢复。
上电过程:
每次SSD固件侦测到上电开始,在整个L2P映射表恢复之前,需要找到启动相关数据管理表,找到并加载到SSD内存中后,依次将此表中每个LBA表项更新到L2P表,此时一个缩略版的L2P表就重建成功了。上电过程中,如果主机读取请求命中这些LBA表项,就可以直接响应主机读取请求;如果没有,则需等待该L2P重建成功后响应。
上电过程中,如果主机读取请求被命中的次数达到预设值,例如50次,SSD固件还需要累加启动相关数据管理表中的读取次数,随着上电次数的增大,某些LBA的读取次数就会变的越来越大,那么自然地,这些LBA越被系统上电过程需要。
如果某个LBA没有在启动相关数据管理表中,则需要将读取次数最低的表项依次替换掉。这里要注意的是,大多数情况下,作为系统盘,该表中的LBA都不会被替换。读取次数低的LBA可以被放心替换。但是考虑到操作系统变更或者固态硬盘应用环境剧烈变更,有可能非常多的表项都没有被命中,这时,如果这些表项的读取次数已经累加到比较大的值,就会导致误判,具体情况如下:
1.假设启动相关数据管理表有5个表项,分别记录了LBA 0–4,其读取次数如下表所示:
LBA 0 1 2 3 4
读取次数 255 255 255 10 10
例1:假设某次上电LBA0-4都没有命中,如果将LBA0-4全部替换掉成新的LBA,那么很可能之后的上电过程依然需要读到LBA0-4,例如某用户将自己用作系统盘的SSD拔下来,插到其他机器上作为数据盘,copy一些数据后又将盘放回重新用作系统盘,那么之后还会命中LBA0-4,如此反复,不但不会增加命中几率,而且会导致启动相关数据管理表写入闪存过于频繁,影响固态硬盘的写放大。
例2:依然假设某次上电LBA0-4都没有命令,如果只是替换读取次数小的LBA3和LBA4,那么如果以后都是此情况,也就是LBA0-4再不会命中,那么最多需要255次上电过程,才能将所有表项替换掉,明显起不到加速效果。
当然还有很多其他的情况会导致SSD固件误判,此方案采取的办法是:上电过程中,如果每个表项的读取次数最大值为10(或其他合理值),并且为有符号数,则每次都命中;如果读取次数小于10,那么读取次数累加;等于10,则维持10不变;如果该LBA没有命中,则读取次数减一,可以减为负值。一个新的LBA表项如果被加入,则从0开始计数累加,替换掉为负值的表项,这样通过读取次数的增减,基本上5次可完成LBA的替换,同时又可防止用户5次内其他操作导致的启动相关数据管理表中该被记录的表项被很快替换掉,具体过程如下:
1.初始LBA表项如下:
Figure BDA0001409278990000131
Figure BDA0001409278990000141
2.LBA2、LBA3、LBA4没有命中,则读取次数减一:
LBA 0 1 2 3 4
读取次数 5 5 4 4 4
3.LBA2、LBA3、LBA4持续不命中4次,则读取次数减少为负值:
LBA 0 1 2 3 4
读取次数 5 5 -1 -1 -1
4.LBA5、LBA6、LBA7持续命中,则LBA2、LBA3、LBA4都被替换。
LBA 0 1 5 6 7
读取次数 5 5 1 1 1
为了在上电时快速查找启动相关数据管理表,根据启动相关数据管理表的读取顺序来排序建立一条队列。
1.读取顺序越小,就表明越早被读到,所以当启动相关数据管理表初始化后,里面的各个LBA表项被加载到L2P表,L2P表其他的表项则被初始化成代表非法值的固定格式,例如全0或者全1。首先,SSD固件收到主机读取请求后,查找L2P表,如果该表项不是一个非法值,则表示该表项是启动相关数据管理表命中的,那么根据当前的读取顺序,作为索引,去查找排序好的顺序,找到该LBA表项。
2.读取次数为负数,表明该表项可以被替换掉,所以在初始化时,要找到哪些表项的读取次数为负数,并予以记录,当有主机读取请求没有命中启动相关数据管理表时,则要将这些表项按照读取次数的顺序替换掉。可以通过读取次数,将这些为负数的表项按照从小到大的顺序排成一条队列,每次替换都要从尾部开始替换,并更新其中的读取顺序以及读取次数、PPA等域。
最后,当所有的上电动作完成,L2P也已经完全恢复,则需要将启动相关数据管理表重新按照读取顺序排序,并存入闪存以备下次使用。
3.上电后内容更新及维护
上电动作完成后,这些在启动相关数据管理表中的LBA表项可以随时被更新,既有可能被主机写请求重写到新的位置,也有可能被SSD内部的garbage collection(垃圾回收机制)、wearleveling(磨损平衡算法)等内部模块按照需求搬运到新的位置,所以SSD固件必须及时将新的映射更新到启动相关数据管理表中。如果每一笔主机写请求都在启动相关数据管理表中做查找,在表项比较多的情况下,可能代码开销比较大,那么可以定期在后台或者需要将此表刷新写入闪存之前,遍历每一个记录的LBA,查找L2P,来更新其中记录的PPA位置。如果单次更新的时间还是过长,可以考虑分段来处理。
4.刷新写入闪存机制
启动相关数据管理表需要写入闪存中,SSD固件需要在上电的过程中快速的找到此位置,并加载。这里可以有多种选择,如果是带有nor flash(一种非易失性闪存)作为上电启动辅助的固态硬盘,可以将内容存在nor flash固定位置,每次上电直接读nor flash加载就可以了。对于没有nor flash的固态硬盘,则需要将启动相关数据管理表存入闪存中。
die是若干个块的集合,一个闪存芯片里会有若干个die,可以将在每个die0(块集合0)的block(块)的page0(页0)写入,SSD固件首先要找到哪个die0的块是掉电之前最近被写入的块,那么在页0上,就存着一份启动相关数据管理表,但该表不一定是最新的,可能在写入启动相关数据管理表之后,又有记录的LBA的更新,对于正常掉电,可以在掉电之前最后一个写入的PPA位置,再写一份启动相关数据管理表,这样找到最后的last page的位置,就直接读到了启动相关数据管理表,如图2所示,只要将最后那份最新的表拷贝读出来,就有完整的启动相关数据管理表了。
对于非正常掉电的上电恢复,也就是说,上电找到的最后被写入的位置上可能没有启动相关数据管理表,此种情况下,需要先将在最新被写入的die 0块上页0存的一份表读出,打补丁到L2P表中,然后通过扫描最后写入块的元数据的方式,来更新L2P表,这样就有一份完整包含所有启动相关数据管理表中LBA的映射表,就可以进行后续的动作了。图3中背景为点阵的长方形框内的数据就是在非正常掉电情况下,需要扫描来恢复启动相关数据管理表的区域。
本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。

Claims (6)

1.一种作为系统盘的固态硬盘缩短上电时间的方法,其特征在于,包括以下步骤:
启动相关数据管理表中记录有每次上电过程被读到的LBA表项,每次SSD固件侦测到上电时,将启动相关数据管理表加载到SSD内存中,将启动相关数据管理表中的LBA表项依次更新到L2P表,直至L2P重建成功;
上电过程中,如果主机读取请求命中L2P表中的LBA表项,直接响应主机读取请求;如果没有,则等待L2P重建成功后响应;
该方法还包括以下步骤:上电过程中,如果某个LBA表项不在启动相关数据管理表中,则将读取次数最低的LBA表项依次替换掉;
所述将读取次数最低的LBA表项依次替换掉的具体过程为:上电过程中,如果每个LBA表项的读取次数最大值为预设值,并且为有符号数,则每次都命中;如果读取次数小于预设值,那么读取次数累加;如果读取次数等于预设值,则维持预设值不变;如果LBA表项没有命中,则读取次数减一。
2.如权利要求1所述的作为系统盘的固态硬盘缩短上电时间的方法,其特征在于:该方法还包括以下步骤:
上电过程中,如果主机读取请求被命中的次数达到预设次数,SSD固件累加启动相关数据管理表中的读取次数。
3.如权利要求1所述的作为系统盘的固态硬盘缩短上电时间的方法,其特征在于:该方法还包括以下步骤:
根据启动相关数据管理表的读取顺序来排序建立一条队列:
读取顺序越小,表明越早被读到,启动相关数据管理表初始化后,里面的各个LBA表项被加载到L2P表,L2P表其他的表项则被初始化成代表非法值的固定格式;SSD固件收到主机读取请求后,查找L2P表,如果LBA表项不是非法值,则表示该LBA表项是启动相关数据管理表命中的,那么根据当前的读取顺序,作为索引,去查找排序好的顺序,找到该LBA表项;
读取次数为负数,表明LBA表项能被替换掉,初始化时,找到哪些LBA表项的读取次数为负数,并予以记录,当有主机读取请求没有命中启动相关数据管理表时,则将这些LBA表项按照读取次数的顺序替换掉;通过读取次数,将为负数的LBA表项按照从小到大的顺序排成一条队列,每次替换都从尾部开始替换,并更新其中的读取顺序以及读取次数、PPA域;
最后,当所有的上电动作完成,L2P也已经完全恢复,则将启动相关数据管理表重新按照读取顺序排序,并存入闪存,以备下次使用。
4.一种作为系统盘的固态硬盘缩短上电时间的系统,其特征在于,该系统包括L2P表重建单元、响应单元,其中:
L2P表重建单元用于:启动相关数据管理表中记录有每次上电过程被读到的LBA表项,每次SSD固件侦测到上电时,将启动相关数据管理表加载到SSD内存中,将启动相关数据管理表中的LBA表项依次更新到L2P表,直至L2P表重建成功;
响应单元用于:上电过程中,如果主机读取请求命中L2P表中的LBA表项,直接响应主机读取请求;如果没有,则等待L2P重建成功后响应;
该系统还包括LBA表项替换单元,用于:上电过程中,如果某个LBA表项不在启动相关数据管理表中,则将读取次数最低的LBA表项依次替换掉;
所述将读取次数最低的LBA表项依次替换掉的具体过程为:上电过程中,如果每个LBA表项的读取次数最大值为预设值,并且为有符号数,则每次都命中;如果读取次数小于预设值,那么读取次数累加;如果读取次数等于预设值,则维持不变;如果LBA表项没有命中,则读取次数减一。
5.如权利要求4所述的作为系统盘的固态硬盘缩短上电时间的系统,其特征在于:该系统还包括读取次数累加单元,用于:上电过程中,如果主机读取请求被命中的次数达到预设次数,SSD固件累加启动相关数据管理表中的读取次数。
6.如权利要求4所述的作为系统盘的固态硬盘缩短上电时间的系统,其特征在于:该系统还包括队列建立单元,用于:根据启动相关数据管理表的读取顺序来排序建立一条队列:
读取顺序越小,表明越早被读到,启动相关数据管理表初始化后,里面的各个LBA表项被加载到L2P表,L2P表其他的表项则被初始化成代表非法值的固定格式;SSD固件收到主机读取请求后,查找L2P表,如果LBA表项不是非法值,则表示该LBA表项是启动相关数据管理表命中的,那么根据当前的读取顺序,作为索引,去查找排序好的顺序,找到该LBA表项;
读取次数为负数,表明LBA表项能被替换掉,初始化时,找到哪些LBA表项的读取次数为负数,并予以记录,当有主机读取请求没有命中启动相关数据管理表时,则将这些LBA表项按照读取次数的顺序替换掉;通过读取次数,将为负数的LBA表项按照从小到大的顺序排成一条队列,每次替换都从尾部开始替换,并更新其中的读取顺序以及读取次数、PPA域;
最后,当所有的上电动作完成,L2P也已经完全恢复,则将启动相关数据管理表重新按照读取顺序排序,并存入闪存,以备下次使用。
CN201710833652.7A 2017-09-15 2017-09-15 作为系统盘的固态硬盘缩短上电时间的方法及系统 Active CN107656875B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710833652.7A CN107656875B (zh) 2017-09-15 2017-09-15 作为系统盘的固态硬盘缩短上电时间的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710833652.7A CN107656875B (zh) 2017-09-15 2017-09-15 作为系统盘的固态硬盘缩短上电时间的方法及系统

Publications (2)

Publication Number Publication Date
CN107656875A CN107656875A (zh) 2018-02-02
CN107656875B true CN107656875B (zh) 2020-05-15

Family

ID=61129515

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710833652.7A Active CN107656875B (zh) 2017-09-15 2017-09-15 作为系统盘的固态硬盘缩短上电时间的方法及系统

Country Status (1)

Country Link
CN (1) CN107656875B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108710507B (zh) * 2018-02-11 2021-01-12 深圳忆联信息系统有限公司 一种ssd主机休眠优化的方法
CN108804026B (zh) * 2018-03-27 2022-02-18 深圳忆联信息系统有限公司 一种固态硬盘全盘扫描方法及固态硬盘
CN108804032B (zh) * 2018-05-16 2021-05-18 山东华芯半导体有限公司 一种自适应磨损均衡垃圾回收加速装置和方法
CN108762674A (zh) * 2018-05-24 2018-11-06 深圳忆联信息系统有限公司 提升ssd响应延迟的方法及装置
CN108983935B (zh) * 2018-07-05 2020-06-09 深圳忆联信息系统有限公司 一种固态硬盘上电时间的控制方法及其系统
CN109213443B (zh) * 2018-08-16 2021-09-14 北京盛和大地数据科技有限公司 光盘预先调入的方法和装置
CN110647295B (zh) * 2019-09-12 2022-07-22 苏州浪潮智能科技有限公司 缩短ssd上电恢复时间的方法、系统、设备及存储介质
CN111104345B (zh) * 2019-12-12 2022-11-08 苏州浪潮智能科技有限公司 一种ssd上电恢复方法、系统及主机
WO2021232427A1 (en) * 2020-05-22 2021-11-25 Yangtze Memory Technologies Co., Ltd. Flush method for mapping table of ssd
CN112052193B (zh) * 2020-09-28 2023-04-07 成都佰维存储科技有限公司 一种垃圾回收方法、装置、可读存储介质及电子设备
CN113535086B (zh) * 2021-07-12 2023-07-25 中飞赛维智能科技股份有限公司 一种固态硬盘中重建的加速方法
CN114265549B (zh) * 2021-11-21 2024-06-21 山东云海国创云计算装备产业创新中心有限公司 一种NVMe命令的处理方法、装置及可读存储介质
CN119537114B (zh) * 2024-10-25 2026-01-06 四川华鲲振宇智能科技有限责任公司 一种测试nvme硬盘上电时间的测试系统及方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101930404B (zh) * 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
TWI432962B (zh) * 2011-10-06 2014-04-01 Mstar Semiconductor Inc 電子系統及其記憶體管理方法
CN104040483B (zh) * 2011-12-27 2017-07-07 英特尔公司 用于非易失性存储器的优化的冷引导
US9348758B2 (en) * 2012-09-24 2016-05-24 Sk Hynix Memory Solutions Inc. Virtual addressing with multiple lookup tables and RAID stripes
CN103970683A (zh) * 2014-05-07 2014-08-06 山东华芯半导体有限公司 一种加速u盘启动的方法
TWI546666B (zh) * 2014-11-03 2016-08-21 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
CN106383792B (zh) * 2016-09-20 2019-07-12 北京工业大学 一种基于缺失感知的异构多核缓存替换方法

Also Published As

Publication number Publication date
CN107656875A (zh) 2018-02-02

Similar Documents

Publication Publication Date Title
CN107656875B (zh) 作为系统盘的固态硬盘缩短上电时间的方法及系统
US9164887B2 (en) Power-failure recovery device and method for flash memory
US8595451B2 (en) Managing a storage cache utilizing externally assigned cache priority tags
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
US9378135B2 (en) Method and system for data storage
US11747979B2 (en) Electronic device, computer system, and control method
US8694984B2 (en) Memory apparatus and method of updating firmware of the memory apparatus
US9489297B2 (en) Pregroomer for storage array
TWI556104B (zh) 用以執行無原子元資料之電力故障安全快取的技術
US9009396B2 (en) Physically addressed solid state disk employing magnetic random access memory (MRAM)
JP7475989B2 (ja) メモリシステムおよび制御方法
US8589619B2 (en) Data writing method, memory controller, and memory storage apparatus
US20140258628A1 (en) System, method and computer-readable medium for managing a cache store to achieve improved cache ramp-up across system reboots
US20130080687A1 (en) Solid state disk employing flash and magnetic random access memory (mram)
US11126561B2 (en) Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
KR102691776B1 (ko) 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치
KR101678911B1 (ko) 데이터 저장 장치 및 그것을 포함하는 컴퓨팅 시스템
CN109144899B (zh) 用于管理表恢复的方法
US9389998B2 (en) Memory formatting method, memory controller, and memory storage apparatus
US8819387B2 (en) Memory storage device, memory controller, and method for identifying valid data
US20140372710A1 (en) System and method for recovering from an unexpected shutdown in a write-back caching environment
US10339020B2 (en) Object storage system, controller and storage medium
US20190286343A1 (en) Mapping table management method for solid state storage device
US20250156318A1 (en) Non-volatile memory controller and control method, and computer program products
CN119597681A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 430070 Hubei city of Wuhan province Wuhan East Lake New Technology Development Zone Road No. two high Guan Nan Industrial Park No. 2 building 2-3 floor West

Applicant after: EXASCEND TECHNOLOGY (WUHAN) CO.,LTD.

Address before: 430223 Hubei city of Wuhan province East Lake New Technology Development Zone Road No. two high Guan Nan Industrial Park No. 2 building 2-3 floor West

Applicant before: MEMORIGHT (WUHAN) Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method and system for shortening power on time of solid state hard disk as system disk

Effective date of registration: 20210629

Granted publication date: 20200515

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: EXASCEND TECHNOLOGY (WUHAN) Co.,Ltd.

Registration number: Y2021420000059

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20221031

Granted publication date: 20200515

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: EXASCEND TECHNOLOGY (WUHAN) CO.,LTD.

Registration number: Y2021420000059

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 430000 west of 2-3 / F, No.2 factory building, Guannan Industrial Park, No.1 Gaoxin 2nd Road, Wuhan Donghu New Technology Development Zone, Wuhan City, Hubei Province

Patentee after: Zhiyu Technology Co.,Ltd.

Address before: 430070 Wuhan, Hubei Wuhan East Lake New Technology Development Zone, high-tech two Road No. 1 South Guan Industrial Park 2 factory 2-3 floor West.

Patentee before: EXASCEND TECHNOLOGY (WUHAN) CO.,LTD.