一种针对低队列深度的预读方法技术

技术编号:30824930 阅读:28 留言:0更新日期:2021-11-18 12:18
本发明专利技术提出一种针对低队列深度的预读方法,包括S1:根据SSD fl ash读取的反应时间和SSD循序读取的期望效能,计算出使低队列深度的循序读取效能不降低时所需的预读命令数量为n;S2:计算host写入读取命令中循序的数量;S3:判断是否应该启动预读流程:S4:启动预读流程,绘制预读表格,预读表格用于记录各预计读取命令对应的状态标记,S6:接收传输的数据;S7:host继续写入读取命令,判断是否继续预读流程。在本申请中,通过预读流程增加低队列深度的循序读取效能,增快处理速度,利用预读表格的内容及管理办法,有效降低预读流程的复杂度。同时,针对预读的时间点,预读的数据量,终止预读的时机以及后续清除缓存数据的做法,做完善的处理,使预读效率大幅提升。完善的处理,使预读效率大幅提升。完善的处理,使预读效率大幅提升。

【技术实现步骤摘要】
一种针对低队列深度的预读方法


[0001]本专利技术涉及SSD读写效能领域,尤其涉及一种针对低队列深度的预读方法。

技术介绍

[0002]为了增加SSD读写的效能,NVMe的协议中规范了每个命令队列都可同时发送65536个命令,这使SSD主控可以提早对NAND flash送出指令,大幅增加随机读取的效能,同时也对循序读取(Sequence Read)有很大的帮助。但现实世界有许多应用的队列深度(Queue Depth)非常低,甚至一次只传送一个命令给SSD,此时若没做特殊处理,将造成循序读取的效能降低许多。

技术实现思路

[0003]本专利技术的目的是为了提供一种针对低队列深度的预读方法,可以大幅提升低队列深度的循序读取效能。
[0004]为了实现上述目的,本专利技术提出一种针对低队列深度的预读方法,具体步骤如下:
[0005]S1:根据SSD flash读取的反应时间和SSD循序读取的期望效能,计算得出使低队列深度的循序读取效能不降低时所需的预读命令数量为n;
[0006]S2:host写入读取命令,并计算A读取命令中循序的读取命令的数量;
[0007]S3:判断是否应该启动预读流程:
[0008]若A读取命令中循序的读取命令的数量大于m,则进入S4;
[0009]若A读取命令中循序的读取命令的数量小于m,则进入S2;
[0010]S4:启动所述预读流程,并在SSD的FTL内绘制预读表格,所述预读表格用于记录各预计读取命令对应的状态标记,所述状态标记包括预读命令、确认命令、终止命令和缓存命令;
[0011]S5:是否接收到从FTL传输的数据:
[0012]若是,则进入S6;
[0013]若否,则进入S7;
[0014]S6:接收从FTL传输的数据,查询所述数据在所述预读表格内对应的状态标记:
[0015]若标记状态为确认命令时,所述数据发送至host;
[0016]若标记状态为终止命令时,所述数据被丢弃删除;
[0017]若标记状态为预读命令时,所述数据暂存在缓存空间中,并将所述预读表格内与所述数据对应的预计读取命令的标记状态改为缓存命令;
[0018]S7:host继续写入读取命令,判断C读取命令与Z读取命令是否属于循序读取的关系:
[0019]若是,则继续进行所述预读流程,并进入S8;
[0020]若否,则终止进行所述预读流程,并进入S2;
[0021]S8:根据所述预读表格内的与所述C读取命令对应的预计读取命令的状态标记,相
应的清除所述预计读取命令或更改所述预计读取命令的状态标记,并进入S5;
[0022]其中:A读取命令为已写入的读取命令;C读取命令为正在写入的读取命令;Z读取命令为已写入的读取命令中最后一位的读取命令;预计读取命令为预计的未写入的读取命令。
[0023]进一步地,在S4中,所述预读表格的绘制步骤如下:
[0024]S41:对FTL发送预计读取命令,依照顺序将各预计读取命令记录在所述预读表格内,所述预计读取命令的数量不大于n,且所述预计读取命令与Z读取命令为循序读取的关系;
[0025]S42:将所述预读表格内记录的所述预计读取命令对应的标记状态从空白改为预读命令。
[0026]进一步地,在S7中,继续进行所述预读流程时的步骤如下:
[0027]S71:查询所述预读表格内与所述C读取命令对应的所述预计读取命令的状态标记:
[0028]若标记状态不为缓存命令,则将所述C读取命令对应的标记状态改为确定命令;
[0029]若标记状态为缓存命令,则将所述C读取命令对应的数据从缓存空间中发送至host,并清除所述预读表格内与所述C读取命令对应的所述预计读取命令;
[0030]S72:进入S4。
[0031]进一步地,在S8中,S9:终止进行所述预读流程时的步骤如下:
[0032]S91:终止对FTL发送预计读取命令;
[0033]S92:统计所述预读表格内所有标记状态为预读命令的预计读取命令,将标记状态由预读命令改为终止命令;
[0034]S93:清除所述预读表格内所有标记状态为缓存命令的预计读取命令在所述缓存空间中所对应的数据。
[0035]与现有技术相比,本专利技术的优势之处在于:
[0036]1.提出一个预读流程,可大幅增加低队列深度的循序读取效能。
[0037]2.提出预读表格的内容及管理办法,降低预读流程的复杂度。
[0038]3.针对预读的时间点,预读的数据量,终止预读的时机以及后续清除缓存数据的做法,做完善的处理,使预读效率大幅提升。
[0039]4.预读流程明确单纯,可由硬件实作,增快处理速度。
附图说明
[0040]图1为本专利技术实施例中预读流程实施的预读表格图。
[0041]图2为本专利技术实施例中资料量信息表。
具体实施方式
[0042]下面将结合示意图对本专利技术的针对低队列深度的预读方法进行更详细的描述,其中表示了本专利技术的优选实施例,应该理解本领域技术人员可以修改在此描述的本专利技术,而仍然实现本专利技术的有利效果。因此,下列描述应当被理解为对于本领域技术人员的广泛知道,而并不作为对本专利技术的限制。
[0043]在下列段落中参照附图以举例方式更具体地描述本专利技术。根据下面说明,本专利技术的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本专利技术实施例的目的。
[0044]本专利技术提出一种针对低队列深度的预读方法,具体步骤如下:
[0045]S1:根据SSD flash读取的反应时间和SSD循序读取的期望效能,计算得出使低队列深度的循序读取效能不降低时所需的预读命令数量为n;
[0046]S2:host写入读取命令,并计算A读取命令中循序的读取命令的数量;
[0047]S3:判断是否应该启动预读流程:
[0048]若A读取命令中循序的读取命令的数量大于m,则进入S4;
[0049]若A读取命令中循序的读取命令的数量小于m,则进入S2;
[0050]S4:启动所述预读流程,并在SSD的FTL内绘制预读表格,所述预读表格用于记录各预计读取命令对应的状态标记,所述状态标记包括预读命令、确认命令、终止命令和缓存命令;
[0051]S41:对FTL发送预计读取命令,依照顺序将各预计读取命令记录在所述预读表格内,所述预计读取命令的数量不大于n,且所述预计读取命令与Z读取命令为循序读取的关系;
[0052]S42:将所述预读表格内记录的所述预计读取命令对应的标记状态从空白改为预读命令;
[0053]S5:是否接收到从FTL传输的数据:
[0054]若是,则进入S6;
[0055]若否,则进入S7;
[0056]S6:接收从FTL传输的数据,查询所述数据在所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对低队列深度的预读方法,其特征在于,具体步骤如下:S1:根据SSD flash读取的反应时间和SSD循序读取的期望效能,计算得出使低队列深度的循序读取效能不降低时所需的预读命令数量为n;S2:host写入读取命令,并计算A读取命令中循序的读取命令的数量;S3:判断是否应该启动预读流程:若A读取命令中循序的读取命令的数量大于m,则进入S4;若A读取命令中循序的读取命令的数量小于m,则进入S2;S4:启动所述预读流程,并在SSD的FTL内绘制预读表格,所述预读表格用于记录各预计读取命令对应的状态标记,所述状态标记包括预读命令、确认命令、终止命令和缓存命令;S5:是否接收到从FTL传输的数据:若是,则进入S6;若否,则进入S7;S6:接收从FTL传输的数据,查询所述数据在所述预读表格内对应的状态标记:若标记状态为确认命令时,所述数据发送至host;若标记状态为终止命令时,所述数据被丢弃删除;若标记状态为预读命令时,所述数据暂存在缓存空间中,并将所述预读表格内与所述数据对应的预计读取命令的标记状态改为缓存命令;S7:host继续写入读取命令,判断C读取命令与Z读取命令是否属于循序读取的关系:若是,则继续进行所述预读流程,并进入S8;若否,则终止进行所述预读流程,并进入S2;S8:根据所述预读表格内的与所述C读取命令对应的预计读取命令的状态标记,相应的清除所述预计读取命令或更改所述预计读取命令的状态标记,并进入S5;其中:A读取命...

【专利技术属性】
技术研发人员:詹利森袁国华
申请(专利权)人:固存芯控半导体科技苏州有限公司
类型:发明
国别省市:

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

1