数据预判方法、装置和可读存储介质与流程

文档序号:20916475发布日期:2020-05-29 13:35阅读:180来源:国知局
数据预判方法、装置和可读存储介质与流程

本发明涉及计算机存储技术领域,具体涉及一种数据预判方法、装置和可读存储介质。



背景技术:

随着大数据时代的到来,整个计算机系统对存储系统的要求越来越高,和传统磁盘相比,nandflash(闪存)存储设备因其存储延迟低、功耗低、更高的存储密度、抗震型号更好和噪声低等优点而得到广泛应用。但是,由于nandflash存在读写擦的单位不一致、每个块有p/e次数限制的特性,因而不能直接通过简单的接口转换就拿来使用。因此需要在nandflash上增加一个管理软件ftl(flashtranslationlayer闪存转换层)来进行管理,上层应用通过逻辑地址来访问存储设备,ftl把不同的逻辑地址映射到nandflash的不同物理地址,从而实现上层应用对nandflash的数据访问,且数据访问过程不用负担nandflash操作的逻辑,从而提高读写操作效率。

因此,ftl作为固态硬盘的管理系统,其快速反应能力直接影响着上层应用的读写操作效率,其中针对上层应用发出的操作请求的反应速度尤为重要。针对于此,较为常用的方式是通过获取操作请求中包含的待访问数据长度对操作请求的类型进行预判,从而根据该预判结果实行对应性的操作以减少等待时间,比如针对随机操作则缩短流程,针对顺序操作则进行缓存操作等。但由于有些设备下发的是未知数据长度的操作请求,这种基于已知数据长度的操作请求的预判方法则显然存在正确预判的概率低的问题。



技术实现要素:

本发明的主要目的是提出一种数据预判方法,旨在解决现有技术中当遇到操作请求未指定待访问数据长度的情况,基于已指定数据长度判定操作类型的方法难以适用的问题。

为实现上述目的,本发明提出一种数据预判方法,该数据预判方法包括:

当接收到数据访问请求时,确定所述数据访问请求是否指定目标访问数据的长度;

当所述数据访问请求未指定目标访问数据的长度时,查找所述数据访问请求所携带的逻辑地址指向的数据访问日志;

根据所述数据访问日志判定所述数据访问请求的操作类型,所述数据访问日志包含所述逻辑地址被执行的随机操作的次数和顺序操作的次数;

根据判定结果执行对应的操作。

优选地,所述根据所述数据访问日志判定所述数据访问请求的操作类型包括:

计算所述数据访问日志中每种操作类型的次数与总操作次数的比值;

若其中一种操作类型的次数与总操作次数的比值大于预设值,则判定所述数据访问请求为该操作类型。

优选地,所述随机操作的次数包括随机写操作的次数和随机读操作的次数;所述顺序操作的次数包括顺序写操作的次数和顺序读操作的次数所述计算所述数据访问日志中每种操作类型的次数与总操作次数的比值包括:

判断所述数据访问请求为读操作或写操作;

当所述数据访问请求为写操作时,分别计算所述顺序写操作的次数与总写操作次数的比值,以及所述随机写操作的次数与总写操作次数的比值,所述总写操作次数为顺序写操作与随机写操作的次数的总和;

当所述数据访问请求为读操作时,分别计算所述顺序读操作的次数与总读操作次数的比值,以及所述随机读操作的次数与总读操作次数的比值,所述总读操作次数为顺序读操作与随机读操作的次数的总和。

优选地,所述若其中一种操作类型的次数与总操作次数的比值大于预设值,则判定所述数据访问请求为该操作类型包括:

若所述顺序写操作的次数与所述总写操作次数的比值大于预设值,则判定所述数据访问请求为顺序写操作;

若所述随机写操作的次数与所述总写操作次数的比值大于预设值,则判定所述数据访问请求为随机写操作;或,

若所述顺序读操作的次数与所述总读操作次数的比值大于预设值,则判定所述数据访问请求为顺序读操作;

若所述随机读操作的次数与所述总读操作次数的比值大于预设值,则判定所述数据访问请求为随机读操作。

优选地,所述根据判定结果执行对应的操作包括:

若判定所述数据访问请求为顺序写操作,则执行写入高速缓冲存储器;

若判定所述数据访问请求为顺序读操作,则执行预读和读取高速缓冲存储器;

若判定所述数据访问请求为随机写操作或随机读操作,则执行常规读/写操作并进行短处理。

优选地,数据预判方法还包括:

当所述数据访问请求指定了目标访问数据的长度时,根据所述目标访问数据的长度判定所述数据访问请求的操作类型。

优选地,在所述根据判定结果执行对应的操作之后,数据预判方法还包括:

将所述操作的操作类型记录至所述数据访问日志。

本发明还提出一种数据预判装置,包括:

长度确定模块,用于当接收到数据访问请求时,确定所述数据访问请求是否指定目标访问数据的长度;

日志访问模块,用于若所述数据访问请求未指定目标访问数据的长度,则查找所述数据访问请求所携带的逻辑地址指向的数据访问日志;

第一判定模块,用于根据所述数据访问日志判定所述数据访问请求的操作类型,所述数据访问日志包含所述逻辑地址被执行的随机操作的次数和顺序操作的次数;

执行模块,用于根据判定结果执行对应的操作。

优选地,所述第一判定模块包括:

概率计算单元,用于计算所述数据访问日志中每种操作类型的次数与总操作次数的比值;

第一判定单元,用于当其中一种操作类型的次数与总操作次数的比值大于预设值时,判定所述数据访问请求为该操作类型。

本发明还提出一种数据预判设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现数据预判方法的步骤,数据预判方法至少包括以下步骤:当接收到数据访问请求时,确定所述数据访问请求是否指定目标访问数据的长度;

当所述数据访问请求未指定目标访问数据的长度时,查找所述数据访问请求所携带的逻辑地址指向的数据访问日志;

根据所述数据访问日志判定所述数据访问请求的操作类型,所述数据访问日志包含所述逻辑地址被执行的随机操作的次数和顺序操作的次数;

根据判定结果执行对应的操作。

本发明还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述所述数据预判方法的步骤。

本发明实施例与现有技术相比,其有益效果在于:在数据访问请求未指定目标访问数据的长度的情况下,通过查找该数据访问请求所携带的逻辑地址指向的数据访问日志,并根据该日志所记载的内容来判定数据访问请求的操作类型,解决了数据访问请求未指定数据长度的情况下难以判定操作类型的问题,提高了对主机端发出的数据访问请求的预判准确率,因而提高了ftl对不同类型的数据访问请求的区分处理的能力。

附图说明

图1为本发明的数据预判方法的步骤流程图;

图2为本发明的数据预判方法中步骤“根据数据访问日志判定数据访问请求的操作类型”执行过程较佳实施例的流程示意图;

图3为本发明的数据预判方法中步骤“根据数据访问日志判定数据访问请求的操作类型”与步骤“根据判定结果执行对应的操作”的执行过程较佳实施例的流程示意图;

图4为本发明的数据预判装置在一实施例中的功能模块图。

具体实施方式

下面将详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同标号表示相同的元件或具有相同功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提出一种数据预判方法,在一种实施方式中,如图1所示,该数据预判方法包括:

步骤s100:当接收到数据访问请求时,确定数据访问请求是否指定目标访问数据的长度。

本方法的执行主体是ftl(flashtranslationlayer闪存转换层),数据访问请求的发出者是主机端(上层应用)。当ftl接收到数据访问请求时,首先确定数据访问请求是否指定了目标访问数据的长度,若是,则可直接根据该长度来判定数据访问请求的操作类型,比如若指定的目标访问数据的长度不小于32k,则可判定该数据访问请求的操作类型为顺序操作(即连续操作),若指定的目标访问数据的长度小于32k,则可判定该数据访问请求的操作类型为随机操作。本步骤的目的在于先行从最简单快速的判定方式入手,加快预判速度。

步骤s200:当数据访问请求未指定目标访问数据的长度时,查找数据访问请求所携带的逻辑地址指向的数据访问日志。

本步骤中,由于数据访问请求未指定目标访问数据的长度,因此不能通过数据长度判断数据访问请求的操作类型。数据访问日志保存于数据访问请求所指定的逻辑地址到物理地址的映射表的表头,即在映射表的头部加了一段区域作为表头,用于储存数据访问日志。该数据访问日志中记录了逻辑地址被执行各类型操作的日志,具体为顺序操作和随机操作的次数等。

步骤s300:根据数据访问日志判定数据访问请求的操作类型,数据访问日志包含逻辑地址被执行的随机操作的次数和顺序操作的次数。

由于逻辑空间做特殊用途,或者按整个文件形式写入等原因,某些逻辑空间常被固定类型地操作,比如:某块逻辑空间保存了电影文件,则其大多数情况下会被执行顺序读操作;某块逻辑空间保存了小文件,则大多数情况下会被执行随机操作。本步骤的目的在于通过数据访问请求所指定的逻辑地址被执行的操作历史,并据此推测本次数据访问请求的操作类型,以提高预判概率。比如说数据访问日志中顺序操作占多数,则可推断本次数据访问请求的操作类型为顺序操作。

步骤s400:根据判定结果执行对应的操作,比如判定为随机操作,则执行短流程处理,提升处理速度;判定为顺序操作则执行预读,减少执行等待时间。针对不同的数据访问请求执行不同的处理流程,了减少不必要的操作步骤,提高操作效率。

本发明根据数据访问请求所携带的逻辑地址指向的数据访问日志所记载的内容,来判定未指定目标访问数据长度的数据访问请求的操作类型,解决了数据访问请求未指定数据长度的情况下难以判定操作类型的问题,提高了对主机端发出的数据访问请求的预判准确率,因而提高了ftl对不同类型的数据访问请求的区分处理的能力。

在一较佳实施例中,如图2所示,步骤300(根据数据访问日志判定数据访问请求的操作类型)包括:

步骤310:计算数据访问日志中每种操作类型的次数与总操作次数的比值。

本步骤中,每种操作类型的次数指的是随机操作的次数或顺序操作的次数,总操作次数指的是随机操作的次数与顺序操作的次数之和。计算每种操作类型的次数与总操作次数的比值,目的在于获得数据访问请求所指定的逻辑地址的各种类型的历史操作概率,通过该概率可预判该逻辑地址本次被访问的操作类型,即前述数据访问请求的操作类型。

步骤320:若其中一种操作类型的次数与总操作次数的比值大于预设值,则判定数据访问请求为该操作类型。

具体为:当数据访问日志中的顺序操作的次数与总操作次数的比值大于预设值,则判定该数据访问请求为顺序操作,当数据访问日志中的随机操作的次数与总操作次数的比值大于预设值,则判定该数据访问请求为随机操作。当以上都不符合时,则不作该数据访问请求作处理。

在一较佳实施例中,如图3所示,随机操作的次数包括随机写操作的次数和随机读操作的次数;顺序操作的次数包括顺序写操作的次数和顺序读操作的次数;步骤310(计算数据访问日志中每种操作类型的次数与总操作次数的比值)包括:

步骤311:判断数据访问请求为读操作或写操作。

步骤312:当数据访问请求为写操作时,分别计算顺序写操作的次数与总写操作次数的比值,以及随机写操作的次数与总写操作次数的比值,总写操作次数为顺序写操作与随机写操作的次数的总和;

步骤313:当数据访问请求为读操作时,分别计算顺序读操作的次数与总读操作次数的比值,以及随机读操作的次数与总读操作次数的比值,总读操作次数为顺序读操作与随机读操作的次数的总和。

单次访问请求,可能为顺序读操作、顺序写操作、随机读操作或随机写操作,对应的,一段逻辑空间可能被执行的操作类型也包括顺序读操作、顺序写操作、随机读操作和随机写操作,也就是说,记载该逻辑空间被访问的历史的数据访问日志,其中可能记载的内容包括顺序读操作、顺序写操作、随机读操作和随机写操作。对于该情况,本实施例先行判断数据访问请求为读操作还是写操作,如果为读操作,则只需要计算顺序读操作的概率和随机读操作的概率,即计算逻辑地址被执行顺序读操作的次数与总读操作次数的比值,与前一实施例同理的,根据该比值可预判本次数据访问请求具体为顺序读操作还是随机读操作。同理的,如果为写操作,则只需要计算顺序写操作的概率和随机写操作的概率,即计算逻辑地址被执行顺序写操作的次数与总写操作次数的比值,根据该比值可预判本次数据访问请求具体为顺序写操作还是随机写操作。若是以上皆不符合的则不作处理。

在一较佳实施例中,如图3所示,步骤320(若其中一种操作类型的次数与总操作次数的比值大于预设值,则判定数据访问请求为该操作类型)包括:

步骤321:若顺序写操作的次数与总写操作次数的比值大于预设值,则判定数据访问请求为顺序写操作;

步骤322:若随机写操作的次数与总写操作次数的比值大于预设值,则判定数据访问请求为随机写操作;或,

步骤323:若顺序读操作的次数与总读操作次数的比值大于预设值,则判定数据访问请求为顺序读操作;

步骤324:若随机读操作的次数与总读操作次数的比值大于预设值,则判定数据访问请求为随机读操作。

本实施例目的在于针对读、写两种数据访问请求分别进行类型判定,作为判定标准的预设值优选80%。

在一较佳实施例中,如图3所示,步骤s400(根据判定结果执行对应的操作)包括:

步骤s410:若判定数据访问请求为顺序写操作,则执行写入高速缓冲存储器,即将目标访问数据预先写入缓存,以提高后续写入物理地址中的写入速度。

步骤s420:若判定数据访问请求为顺序读操作,则执行预读和读取高速缓冲存储器。

由于内存和磁盘的性能差异,为了提高系统访问效率,需要把部分数据的副本缓存到内存中,当进行数据访问时,首先尝试访问缓存,如果缓存不命中,再从后端磁盘访问。本实施例中,在判定本次数据访问请求为顺序读操作时,则执行预读和读取缓存的操作,其中预读的思想是把后续可能被访问的数据,提前放到缓存中,使后续的数据访问可以直接读取缓存而不需访问后端磁盘,从而提高访问效率。

步骤s430:若判定数据访问请求为随机写操作或随机读操作,则执行常规读/写操作并进行短处理,即直接从磁盘中读/写数据,不进行预读、写入或读取缓存、短处理等额外的特殊操作,并减少一些不必要的操作,如查找表项时只查找第一个,看后面是否还有连续等,以减少流程运行时间。

在一较佳实施例中,如图1所示,数据预判方法还包括:

步骤500:当数据访问请求指定了目标访问数据的长度时,根据目标访问数据的长度预判数据访问请求的操作类型。

当数据访问请求指定了目标访问数据的长度的情况下,可直接根据该数据长度来判定数据访问请求的操作类型,比如若指定的目标访问数据的长度不小于32k,则可判定该数据访问请求的操作类型为顺序操作(即连续操作),若指定的目标访问数据的长度小于32k,则可判定该数据访问请求的操作类型为随机操作。

当对某一段逻辑地址进行第一次访问时,可在完成对数据访问请求的操作类型判定后,直接将本次判定结果记录至数据访问请求携带的逻辑地址指向的数据访问日志中,以作为后续该逻辑地址进行数据访问时的操作预判参考;或者在根据数据访问请求完成数据访问之后,将实际操作过程进行记录。在非第一次访问的情况下则优选后者。

在一较佳实施例中,如图1所示,在步骤400之后,数据预判方法还包括:

步骤600:将操作的操作类型记录至数据访问日志。

本实施例中,数据访问日志记录的是完成数据访问后的真实操作过程,更利于后续作为操作预判的参考。

基于前述实施例中所提出的闪存的随机或顺序操作的预判方法,本发明还提出一种数据预判装置,在一实施方式中,如图4所示,该数据预判装置包括:

长度确定模块10,用于当接收到数据访问请求时,确定数据访问请求是否指定目标访问数据的长度;

日志访问模块20,用于当数据访问请求未指定目标访问数据的长度时,查找数据访问请求所携带的逻辑地址指向的数据访问日志;

第一判定模块30,用于根据数据访问日志判定数据访问请求的操作类型,数据访问日志包含逻辑地址被执行的随机操作的次数和顺序操作的次数;

执行模块40,用于根据判定结果执行对应的操作。

在一较佳实施例中,如图4所示,第一判定模块30包括:

概率计算单元31,用于计算数据访问日志中每种操作类型的次数与总操作次数的比值;

第一判定单元32,用于当其中一种操作类型的次数与总操作次数的比值大于预设值时,判定数据访问请求为该操作类型。

在一较佳实施例中,随机操作的次数包括随机写操作的次数和随机读操作的次数;顺序操作的次数包括顺序写操作的次数和顺序读操作的次数;概率计算单元包括:

读写判断单元,用于判断数据访问请求为读操作或写操作;

第一概率计算单元,用于当数据访问请求为写操作时,分别计算顺序写操作的次数与总写操作次数的比值,以及随机写操作的次数与总写操作次数的比值,总写操作次数为顺序写操作与随机写操作的次数的总和;

第二概率计算单元,用于当数据访问请求为读操作时,分别计算顺序读操作的次数与总读操作次数的比值,以及随机读操作的次数与总读操作次数的比值,总读操作次数为顺序读操作与随机读操作的次数的总和。

在一较佳实施例中,第一判定模块包括:

顺序写操作判定单元,用于当顺序写操作的次数与总写操作次数的比值大于预设值时,判定数据访问请求为顺序写操作;

随机写操作判定单元,用于当随机写操作的次数与总写操作次数的比值大于预设值时,判定数据访问请求为随机写操作;或,

顺序读操作判定单元,用于当顺序读操作的次数与总读操作次数的比值大于预设值时,判定数据访问请求为顺序读操作;

随机读操作判定单元,用于当随机读操作的次数与总读操作次数的比值大于预设值时,判定数据访问请求为随机读操作。

在一较佳实施例中,执行模块包括:

第一执行单元,用于当判定数据访问请求为顺序写操作时,执行写入高速缓冲存储器;

第二执行单元,用于当判定数据访问请求为顺序读操作时,执行预读和读取高速缓冲存储器;

第三执行单元,用于当判定数据访问请求为随机写操作或随机读操作时,执行常规读/写操作并进行短处理。

在一较佳实施例中,如图4所示,数据预判装置还包括:

第二判定模块50,用于当数据访问请求指定了目标访问数据的长度时,根据目标访问数据的长度判定数据访问请求的操作类型。

在一较佳实施例中,如图4所示,数据预判装置还包括:

记录模块60,用于将操作的操作类型记录至数据访问日志。

本发明还提出一种数据预判设备,该数据预判设备包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现前述实施例中数据预判方法的步骤。该数据预判方法的步骤至少包括:

当接收到数据访问请求时,确定数据访问请求是否指定目标访问数据的长度;

当数据访问请求未指定目标访问数据的长度时,查找数据访问请求所携带的逻辑地址指向的数据访问日志;

根据数据访问日志判定所述数据访问请求的操作类型,数据访问日志包含逻辑地址被执行的随机操作的次数和顺序操作的次数;

根据判定结果执行对应的操作。

本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述数据预判方法的步骤,该数据预判方法的步骤至少包括:

当接收到数据访问请求时,确定数据访问请求是否指定目标访问数据的长度;

当数据访问请求未指定目标访问数据的长度时,查找数据访问请求所携带的逻辑地址指向的数据访问日志;

根据数据访问日志判定数据访问请求的操作类型,数据访问日志包含逻辑地址被执行的随机操作的次数和顺序操作的次数;

根据判定结果执行对应的操作。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上的仅为本发明的部分或优选实施例,无论是文字还是附图都不能因此限制本发明保护的范围,凡是在与本发明一个整体的构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明保护的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1