基于软件控制层的固态硬盘控制方法技术

技术编号:39573125 阅读:12 留言:0更新日期:2023-12-03 19:24
本发明专利技术涉及固态硬盘技术领域,公开了一种基于软件控制层的固态硬盘控制方法

【技术实现步骤摘要】
基于软件控制层的固态硬盘控制方法、装置、设备及介质


[0001]本专利技术涉及固态硬盘
,具体涉及一种基于软件控制层的固态硬盘控制方法

装置

设备及介质


技术介绍

[0002]SSD(SolidStateDrive
,固态硬盘
)
的核心软件控制和算法层被称为
FTL(FlashTranslationLayer
,软件控制层
)。FTL
的实现方案决定了
SSD
在可靠性

耐用性

读写性能等方面的优劣
。FTL
的主要功能是完成
host(
使用
SSD
的主机
)
命令中的逻辑地址到闪存物理地址的转换,以及控制包括读


、Trim(SSD
的主机命令,用于声明一段地址的数据变为无效
)

Host
命令的执行与反馈

[0003]现有大多数
SSD
产品的固件中均封装了上述
FTL
软件,以针对性地调度不同类型
Nand(SSD
内部的实际物理存储介质
)
,缓存硬件和其他硬件算法模块协同工作

然而,现有
FTL
软件对
SSD
内部的硬件资源进行统一调度与管理的能力较弱,无法做到对
SSD

host
处理流程的整体管控,无法以单一流程处理读


、Trim

Host
命令

[0004]因此,现有技术存在无法以单一流程控制固态硬盘执行多种主机命令的问题


技术实现思路

[0005]有鉴于此,本专利技术提供了一种基于软件控制层的固态硬盘控制方法

装置

设备及介质,以解决无法以单一流程控制固态硬盘执行多种主机命令的问题

[0006]第一方面,本专利技术提供了一种基于软件控制层的固态硬盘控制方法,该方法包括:
[0007]根据预设逻辑地址将获取到的多种主机命令进行拆分,得到第一数量个主机操作;
[0008]根据主机操作中的逻辑地址边界,构建包含第二数量个子区段的子区段分布结构,其中,子区段是根据逻辑地址边界得到的;
[0009]根据子区段将主机操作进行拆分,得到第三数量个主机子操作,将主机子操作与子区段分布结构结合,得到子操作排列结构,其中,子操作排列结构包含存储单元子操作,存储单元子操作是根据主机子操作得到的;
[0010]根据子操作排列结构,生成主机子操作和存储单元子操作的依赖关系结构;
[0011]基于依赖关系结构,将主机子操作和存储单元子操作加入执行队列,并根据固态硬盘和内存传输模块的空闲资源数量,从执行队列中取出主机子操作和
/
或存储单元子操作并执行

[0012]本实施例提供的基于软件控制层的固态硬盘控制方法,先将获取到的多种主机命令进行拆分,拆分为完成该主机命令所需的主机操作,再对主机操作进行拆分,拆分为小范围的主机子操作,进而生成子操作排列结构和依赖关系结构

基于依赖关系结构,将主机子操作和存储单元子操作加入执行队列,并根据固态硬盘和内存传输模块的空闲资源数量,从执行队列中取出主机子操作和
/
或存储单元子操作并执行,通过上述方法,
FTL
能够对
SSD
内部的空闲资源数量进行统一调度与管理,以达到以单一流程控制固态硬盘执行读



垃圾回收等多种主机命令的效果,解决了现有技术无法以单一流程控制固态硬盘执行多种主机命令的问题

[0013]在一种可选的实施方式中,在根据预设逻辑地址将获取到的多种主机命令进行拆分之前,方法还包括:
[0014]从主机获取多种主机命令,并根据优先级资源设置主机命令的第一优先级,其中,优先级资源包含优先级阈值;
[0015]如果第一优先级达到优先级阈值或没有命令暂存空间,则暂停从主机获取主机命令,其中,命令暂存空间用于暂存主机命令

[0016]在本实施方式中,为每一批主机命令设置第一优先级,使得越早获取的主机命令越被优先执行

如果达到优先级阈值或没有命令暂存空间,则暂停获取主机命令,确保
SSD
执行每个主机命令时都有足够的资源

[0017]在一种可选的实施方式中,在根据预设逻辑地址将获取到的多种主机命令进行拆分,得到第一数量个主机操作之后,方法还包括:
[0018]根据第一优先级,设置主机操作的优先级,并设置主机操作的主机地址偏移量,其中,主机地址偏移量用于确定主机地址;
[0019]在预设逻辑地址未关联缓冲区且主机操作为主机读取操作的情况下,判断主机读取操作的读取范围是否存在损坏位;
[0020]如果读取范围不存在损坏位,则将主机读取操作调整为联动读操作,并将联动读操作加入联动读操作执行队列,其中,联动读操作用于直接把存储单元的数据读取到主机;
[0021]如果读取范围存在损坏位,则将主机读取操作绑定到预设缓冲区

[0022]在本实施方式中,为每个主机操作设置优先级,使得优先级越高的主机操作越被优先执行,并设置主机操作的主机地址偏移量确定主机地址

如果预设逻辑地址未关联缓冲区,通过判断主机读取操作的读取范围是否存在损坏位,确定是调整主机读取操作的范围,还是将主机读取操作绑定到预设缓冲区,确保主机读取操作能够被
SSD
中的硬件正确执行

[0023]在一种可选的实施方式中,根据子区段将主机操作进行拆分,得到第三数量个主机子操作,将主机子操作与子区段分布结构结合,得到子操作排列结构,包括:
[0024]根据子区段将主机操作进行拆分,得到第三数量个主机子操作;
[0025]将主机子操作与子区段分布结构组合,得到中间结构,其中,中间结构包含第二数量个操作列,主机子操作包含主机无效子操作

主机写入子操作以及主机读取子操作;
[0026]判断中间结构的每个操作列中是否存在主机无效子操作,如果存在主机无效子操作,则获取第一增加内容,其中,第一增加内容用于在操作列中加入存储单元无效子操作;
[0027]判断中间结构的每个操作列中是否存在主机写入子操作且不存在主机无效子操作,如果存在主机写入子操作且不存在主机无效子操作,则获取第二增加内容,其中,第二增加内容用于在操作列中加入存储单元写入子操作;
[0028]判断中间结构的每个操作列中执行顺序为第一的主机子本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于软件控制层的固态硬盘控制方法,其特征在于,所述方法包括:根据预设逻辑地址将获取到的多种主机命令进行拆分,得到第一数量个主机操作;根据所述主机操作中的逻辑地址边界,构建包含第二数量个子区段的子区段分布结构,其中,所述子区段是根据所述逻辑地址边界得到的;根据所述子区段将所述主机操作进行拆分,得到第三数量个主机子操作,将所述主机子操作与所述子区段分布结构结合,得到子操作排列结构,其中,所述子操作排列结构包含存储单元子操作,所述存储单元子操作是根据所述主机子操作得到的;根据所述子操作排列结构,生成所述主机子操作和所述存储单元子操作的依赖关系结构;基于所述依赖关系结构,将所述主机子操作和所述存储单元子操作加入执行队列,并根据固态硬盘和内存传输模块的空闲资源数量,从所述执行队列中取出所述主机子操作和
/
或所述存储单元子操作并执行
。2.
根据权利要求1所述的方法,其特征在于,在所述根据预设逻辑地址将获取到的多种主机命令进行拆分之前,所述方法还包括:从主机获取多种所述主机命令,并根据优先级资源设置所述主机命令的第一优先级,其中,所述优先级资源包含优先级阈值;如果所述第一优先级达到所述优先级阈值或没有命令暂存空间,则暂停从所述主机获取所述主机命令,其中,所述命令暂存空间用于暂存所述主机命令
。3.
根据权利要求2所述的方法,其特征在于,在所述根据预设逻辑地址将获取到的多种主机命令进行拆分,得到第一数量个主机操作之后,所述方法还包括:根据所述第一优先级,设置所述主机操作的优先级,并设置所述主机操作的主机地址偏移量,其中,所述主机地址偏移量用于确定主机地址;在所述预设逻辑地址未关联缓冲区且所述主机操作为主机读取操作的情况下,判断所述主机读取操作的读取范围是否存在损坏位;如果所述读取范围不存在所述损坏位,则将所述主机读取操作调整为联动读操作,并将所述联动读操作加入联动读操作执行队列,其中,所述联动读操作用于直接把存储单元的数据读取到所述主机;如果所述读取范围存在所述损坏位,则将所述主机读取操作绑定到预设缓冲区
。4.
根据权利要求1所述的方法,其特征在于,所述根据所述子区段将所述主机操作进行拆分,得到第三数量个主机子操作,将所述主机子操作与所述子区段分布结构结合,得到子操作排列结构,包括:根据所述子区段将所述主机操作进行拆分,得到第三数量个所述主机子操作;将所述主机子操作与所述子区段分布结构组合,得到中间结构,其中,所述中间结构包含第二数量个操作列,所述主机子操作包含主机无效子操作

主机写入子操作以及主机读取子操作;判断所述中间结构的每个所述操作列中是否存在所述主机无效子操作,如果存在所述主机无效子操作,则获取第一增加内容,其中,所述第一增加内容用于在所述操作列中加入存储单元无效子操作;判断所述中间结构的每个所述操作列中是否存在所述主机写入子操作且不存在所述
主机无效子操作,如果存在所述主机写入子操作且不存在所述主机无效子操作,则获取第二增加内容,其中,所述第二增加内容用于在所述操作列中加入存储单元写入子操作;判断所述中间结构的每个所述操作列中执行顺序为第一的主机子操作是否为所述主机读取子操作,如果是所述主机读取子操作,则获取第三增加内容,其中,所述第三增加内容用于在所述操作列中加入存储单元读取子操作,所述存储单元无效子操作

所述存储单元写入子操作以及所述存储单元读取子操作包含于所述存储单元子操作;根据所述中间结构

所述第一增加内容

所述第二增加内容以及所述第三增加内容,得到所述子操作排列结构,其中,所述子操作排列结构包含于缓冲区,所述缓冲区与所述预设逻辑地址关联
。5.
根据权利要求4所述的方法,其特征在于,在所述得到子操作排列结构之后,所述方法还包括:判断所述缓冲区中的所述子操作排列结构是否包含所述存储单元写入子操作;如果所述子操作排列结构包含所述存储单元写入子操作,则所述缓冲区的分类为第一类缓冲区;如果所述子操作排列结构不包含所述存储单元写入子操作,则所述缓冲区的分类为第二类缓冲区
。6.
根据权利要求5所述的方法,其特征在于,所述根据所述子操作排列结构,生成所述主机子操作和所述存储单元子操作的依赖关系结构,包括:根据所述空闲资源数量,从所述第一类缓冲区和所述第二类缓冲区中获取第四数量个所述缓冲区;将所述缓冲区的所述子操作排列结构中除所述主机无效子操作和所述存储单元无效子操作之外的所有子操作加入依赖关系图;如果所述依赖关系图中存在所述存储单元读取子操作,且所述存储单元读取子操作的读取范围存在损坏位,则进行第一调整流程,包括修改所述读取范围,并在所述依赖关系图中插入修复子操作,其中,所述修复子操作与所述存储单元读取子操作相邻;获取所述缓冲区关联的预设逻辑地址对应的物理地址,如果获取不到所述物理地址,则将预设值作为所述物理地址;如果所述物理地址是所述预设值,则进行第二调整流程,包括将所有所述存储单元读取子操作对应的所述主机命令做命令失败处理,其中,所述主机命令是根据所述存储单元读取子操作关联的命令标识确定的;如果所述物理地址不是所述预设值,则进行第三调整流程,包括将所述物理地址赋值给所述存储单元读取子操作;如果所述依赖关系图中存在所述存储单元写入子操作,则进行第四调整流程,包括获取一个新的物理地址,并将所述新的物理地址赋值给所述存储单元写入子操作,并将所述存储单元读取子操作进行垃圾回收标记,其中,所述垃圾回收标记用于表示所述存储单元读取子操作对应的所述物理地址待释放;如果无法获取所述新的物理地址,则进行第五调整流程,包括将所述存储单元写入子操作关联的所述命令标识对应的所述主机命令做命令失败处理;获取所述依赖关系图中最顶层的子操作,并基于所述最顶层的子操作在所述依赖关系
图中构建新的存储单元读取子操作,并将所述新的存储单元读取子操作与所述缓冲区关联;根据所述依赖关系图

所述第一调整流程

所述第二调整流程

所述第三调整流程

所述...

【专利技术属性】
技术研发人员:滕飞
申请(专利权)人:山东云海国创云计算装备产业创新中心有限公司
类型:发明
国别省市:

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

1