快速建立链表缩短固态硬盘上电时间的方法及系统技术方案

技术编号:39586548 阅读:10 留言:0更新日期:2023-12-03 19:38
本申请公开了快速建立链表缩短固态硬盘上电时间的方法及系统,方法包括如下步骤:当

【技术实现步骤摘要】
快速建立链表缩短固态硬盘上电时间的方法及系统


[0001]本申请涉及固态硬盘
,具体是涉及快速建立链表缩短固态硬盘上电时间的方法及系统


技术介绍

[0002]SSD
是由若干个
NAND Flash
闪存阵列组成的存储设备


SSD
发生异常掉电时,固件会立刻进行上电恢复流程恢复
SSD
信息以及映射表,紧接着设置
SSD
状态,使
SSD
能够快速响应主机的读写操作

上电恢复流程的目的为了恢复掉电前
SSD
的状态以及映射表,因此主流的上电恢复流程都包括:
1.
建立有效超级块时间戳链表
。2.
依照链表信息恢复映射表

[0003]上电恢复流程的第一步通常是需要逐个读取的方式将各个有效超级块按照时间戳的大小排成一张单向链表

单向链表的建立一般有两个步骤1:扫描2:排序
[0004]1.
传统扫描方式:
[0005]以
Hynix V6 Flash
为例:有
722
个超级块,需要依次读取每个超级块的
Page0
来确定当前超级块是否为有效超级块
(
包含用户数据
)
如果是有效超级块,在此阶段取得超级块写入数据时的时间戳

如图1所示:
[0006]2.<br/>传统排序方式:
[0007]每扫描一个超级块,都可以获取超级块的时间戳

我们需要把每一个有效超级块对应的信息全部记录下来,这里我们用时间戳排序的单向链表来存储这些信息,通常使用插入排序法进行排序,即每个超级块都会在第一个时间戳比自己大的超级块前作为新的节点插入到链表中,如图2所示

[0008]由于存在异常掉电的情况,为了使得
SSD
设备能够快速响应
Host
的读写操作,上电后是需要逐个读取的方式将各个有效超级块按照时间戳的大小排成一张链表,需要排序的超级块越多建立完整链表的对比次数也越多消耗的时间也就越长,总的上电时间也会随之增加

空盘顺序写模型为例,空盘顺序写模型是在
SSD
应用中常见的模型

在这个模型中传统链表建立方法每次插入新的节点需要与链表内每一个旧节点进行比较,因此传统链表建立方法的表现十分糟糕

[0009]X
:链表超级块节点数
[0010]Y
:最后加入的超级块节点需要的对比次数
[0011]T
:总对比次数
[0012]传统链表建立方法最后加入的超级块节点需要的对比次数:
Y

(X

1)(
在空盘顺序写模型中
),
如图3所示

传统排序链表建立完整链表总对比次数如图4所示

[0013]总对比次数:
T
为累计
Y
的面积
(
如图4所示的阴影面积
)。
可知
T

X*(X

1)/2,
如图5所示

[0014]随着超级块数量的增加,由排序需要的比较次数会迅速增大导致上电时间变长,在最常用的场景如顺序写上电,超级块排序的总比较次数最多,导致上电时间过长这是不合理的,上电时间过长,从而会对后续操作造成影响,无法立即响应用户指令,导致用户体
验不佳

[0015]由此可知,传统链表建立方法在一些常用状况下表现不佳

而且需要排序的超级块达到一定数量时每增加一个有效超级块,建立完整链表的总对比次数会迅速增加,建立有效超级块链表的对比次数过多,消耗的时间也就越长,导致
SSD
上电无法立即响应用户指令,十分影响用户体验

因此需要本申请提供的快速建议链表缩短固态硬盘上电时间的方法中让其不仅能缩减建立链表的总对比次数,还能减少单个超级块插入链表的对比次数,还要能更好的适应特殊情况

[0016]其中,本申请中的英文缩略语的释义如下:
[0017]NAND
:一种非易失性存储介质,也称作
NAND
闪存芯片
(NAND Flash)
[0018]SSD
:固态硬盘,
Solid State Drive
,由若干个
NAND Flash
阵列组成的数据存储设备
[0019]Page
:存储页,
NAND Flash
执行读

写操作的基本单元
[0020]Block
:存储块,由多个
Page
组成的
NAND Flash
执行擦除操作的基本单元,
[0021]Plane
:由多个
Block
组成的
NAND Flash
存储块矩阵
[0022]FTL

Flash Translation Layer

NAND Flash
管理算法
[0023]超级块
block
:由若干个存储块组成的单元
[0024]SLC

Single Level Cell
,最小存储单元
(cell)
只能存放1个
bit

NAND Flash
[0025]MLC

Multiple Level Cell
,最小存储单元
(cell)
可以存放2个
bit

NAND Flash
[0026]TLC

Triple Level Cell
,最小存储单元
(cell)
可以能存放3个
bit

NAND Flash
[0027]MidPoint:
用于链表排序的中间节点,始终位于链表的中间位置


技术实现思路

[0028]本申请的目的是为了克服上述
技术介绍
的不足,提供快速建立链表缩短固态硬盘上电时间的方法及系统

[0029]第一方面,提供快速建立链表缩短固态硬盘上电时间的方法,包括以下步骤:
[0030]当
SSD
重新上电时,获取
SSD
异常掉电工况;;
[0031]当
SSD
异常掉电时,倒序扫描排序链表并获取链表所有超级块的时间戳;
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
快速建立链表缩短固态硬盘上电时间的方法,其特征在于,包括如下步骤:当
SSD
重新上电时,获取
SSD
异常掉电工况;;当
SSD
异常掉电时,倒序扫描排序链表并获取链表所有超级块的时间戳;当链表为空时,将有效超级块作为第一节点插入链表并更新链表的中间节点;当链表不为空时,比对待插入的有效超级块的时间戳和链表的中间节点时间戳,获取第一比对工况;根据获取的第一比对工况,控制执行不同的待插入有效超级块插入链表的插入策略并获取链表中间节点的偏移工况;根据获取的链表中间节点的偏移工况,控制执行链表中间节点的更新操作
。2.
如权利要求1所述的快速建立链表缩短固态硬盘上电时间的方法,其特征在于,根据根据获取的第一比对工况,控制执行不同的待插入有效超级块插入链表的插入策略并获取链表中间节点的偏移工况步骤,具体包括以下步骤:当待插入的有效超级块的时间戳大于链表中间节点时,将待插入的有效超级块从链表中间节点处开始插入排序,并记录链表中间节点偏移为右;当待插入的有效超级块的时间戳小于链表中间节点时,将待插入的有效超级块从链表头开始插入排序,并记录链表中间节点偏移向左
。3.
如权利要求1所述的快速建立链表缩短固态硬盘上电时间的方法,其特征在于,所述根据获取的链表中间节点的偏移工况,控制执行链表中间节点的更新操作步骤,具体包括以下步骤:获取链表节点数量;根据获取的链表节点数量以及链表中间节点的偏移工况,控制执行不同的链表中间节点的更新策略
。4.
如权利要求3所述的快速建立链表缩短固态硬盘上电时间的方法,其特征在于,所述根据获取的链表节点数量以及链表中间节点的偏移工况,控制执行不同的链表中间节点的更新策略步骤,具体包括以下步骤:当链表节点数量为1时,将链表中间节点指向该节点并将该节点的左右权重值设为0;当链表节点数量不为1时,根据获取的链表中间节点偏移工况,控制执行不同的链表中间节点的更新策略
。5.
如权利要求4所述的快速建立链表缩短固态硬盘上电时间的方法,其特征在于,所述当链表节点数量不为1时,根据获取的链表中间节点偏移工况,控制执行不同的链表中间节点的更新策略步骤,具体包括以下步骤:当链表中间节点偏移向左或右时,将链表中间节点的右权重减1或增1,比对链表中间节点的左权重和右权重,获取第二比对工况;根据获取的第二比对工况,控制执行不同的链表中间节点的更新策略
。6.
如权利要求5所述的快速建立链表缩短固态硬盘上电时间的方法,其特征在于,所述根据获取的第二比对工况,控制执行不同的链表中间节点的更新策略步骤,具体包括以下步骤:当链表中间节点偏移向左,左权重增一后,链表中间节点的左权重大于右权重时,将链表中间节点左移一个节点,...

【专利技术属性】
技术研发人员:左仁程弗兰克
申请(专利权)人:至誉科技武汉有限公司
类型:发明
国别省市:

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

1