一种提高访问性能的方法、设备及存储介质与流程

文档序号:19128650发布日期:2019-11-13 02:23阅读:181来源:国知局
一种提高访问性能的方法、设备及存储介质与流程

本申请涉及计算机技术领域,具体涉及一种提高访问性能的方法、设备及存储介质。



背景技术:

存储设备的访问具有随机性,当多个进程同时密集地访问低速存储设备时,如sd卡(securedigitalmemorycard,安全数码卡)或u盘(universalserialbusflashdisk,通用串行总线闪存盘)等;由于低速存储设备性能的限制可能会导致某个进程或多个进程的访问速度无法得到满足,进而引起进程运行异常。

本申请的发明人在长期研发中发现,目前存在一些利用高速存储设备当做低速存储设备的缓存的方式来改善低速存储设备的访问性能,主要包括:①把低速存储设备作为高速存储设备的扩充空间使用,即在高速存储设备可用空间不足时,把数据往低速存储设备存储;该方案仅是把低速存储设备作为高速存储设备的扩容空间使用,无法解决低速存储设备本身的性能问题,在高速存储设备可用空间不足时,整个系统的访问性能仍旧取决于低速存储设备的访问性能;②把所有访问数据都先存储在高速存储设备上,存到一定数量后再搬到低速存储设备上;该方案可以利用高速存储设备来改善低速存储设备访问性能,但无法对访问环境进行区分,即无法平衡低速存储设备输入输出负载的访问时序驼峰,无法把高速存储设备与低速存储设备的地址进行一一映射,即无法使用高速存储设备来改善低速存储设备的随机访问性能;③根据存储设备的访问性能对存储设备进行分层,然后根据数据的访问频率来决定数据的存放位置,可将高频访问数据放在高速存储设备上,低频访问数据存放在低速存储设备上;该方案中数据存放无法有效兼容现有各种文件系统的数据组织形式,应用场景是对环境数据本身进行分层存储,并不是对低速存储设备进行性能改善。



技术实现要素:

本申请主要解决的问题是提供一种提高访问性能的方法、设备及存储介质,能够提高第二存储设备的访问性能及使用寿命。

为解决上述技术问题,本申请采用的技术方案是:提供一种提高访问性能的方法,该方法包括:从第一存储设备的存储区中选取至少部分存储区作为缓存区;建立缓存区的地址与第二存储设备的存储区的地址之间的映射关系,得到地址映射表;向第二存储设备发起访问请求,其中,访问请求包括访问地址;在地址映射表包括访问地址时,获取与访问地址对应的缓存区的地址,并向缓存区的地址发起访问。

为解决上述技术问题,本申请采用的另一技术方案是:提供一种提高访问性能的设备,该设备至少包括第一存储设备、第二存储设备以及处理器,其中,第一存储设备的存储区至少包括程序存储区以及缓存区,缓存区的地址与第二存储设备的存储区的地址之间具有映射关系,程序存储区用于存储计算机程序,计算机程序在被处理器执行时,用于实现上述的提高访问性能的方法。

为解决上述技术问题,本申请采用的另一技术方案是:提供一种计算机存储介质,该计算机存储介质用于存储计算机程序,计算机程序在被处理器执行时,用于实现上述的提高访问性能的方法。

通过上述方案,本申请的有益效果是:将第一存储设备的部分存储区作为第二存储设备的缓存区,在第一存储设备的缓存区的地址和第二存储设备的存储区的地址之间建立映射关系,形成地址映射表,在对第二存储设备进行访问时,能够根据地址映射表将访问请求转移到第一存储设备的缓存区的地址,由于第一存储设备的访问性能高于第二存储设备的访问性能,从而提高第二存储设备的访问性能。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:

图1是本申请提供的提高访问性能的方法一实施例的流程示意图;

图2是本申请提供的提高访问性能的方法另一实施例的流程示意图;

图3是本申请提供的提高访问性能的方法又一实施例的流程示意图;

图4是本申请提供的提高访问性能的方法再一实施例的流程示意图;

图5是本申请提供的内存、高速存储设备以及低速存储设备的交互示意图;

图6是本申请提供的提高访问性能的设备一实施例的结构示意图;

图7是本申请提供的计算机存储介质一实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

参阅图1,图1是本申请提供的提高访问性能的方法一实施例的流程示意图,该方法包括:

步骤11:从第一存储设备的存储区中选取至少部分存储区作为缓存区。

第一存储设备可以为高速存储设备,其为内置设备,具体地,第一存储可设置于嵌入式设备的内部;第二存储设备可以为低速存储设备;可从高速存储设备上取出一段可用存储空间作为低速存储设备的高速缓冲存储空间,即缓存区。

高速存储设备既可以是复用平台已经使用的高速存储设备的部分存储空间,能够在不添加硬件设备的情况下从软件层面添加缓存区改善低速存储设备的访问性能,如利用emmc(embeddedmultimediacard,嵌入式多媒体卡)或nand闪存等平台已经使用的存储设备,以优化低速存储设备的访问性能,比如,优化sd卡(securedigitalmemorycard,安全数码卡)或u盘的性能;也可以是单独添加的一个高速存储设备硬件,即缓存区是新增的外接存储设备,如sd卡,该外接存储设备也可以为高速存储设备。

步骤12:建立缓存区的地址与第二存储设备的存储区的地址之间的映射关系,得到地址映射表。

该地址映射表包括缓存区的地址以及与其对应的第二存储设备的存储区的地址,缓存区的地址的长度可以和与其对应的第二存储设备的存储区的地址的长度不同;该地址映射表可存储在第一存储设备中除缓存区之外的区域,即第一存储设备至少包括两个存储空间,一个存储空间用于存储地址映射表,其他存储空间中的一个作为缓存区;或者该地址映射表也可存储在嵌入式设备的其他内置硬盘中。

步骤13:向第二存储设备发起访问请求。

该访问请求可以为读操作请求和/或写操作请求;该访问请求包括访问地址,该访问地址可以为第二存储设备的存储区的地址。

步骤14:在地址映射表包括访问地址时,获取与访问地址对应的缓存区的地址,并向缓存区的地址发起访问。

如果检测到该访问地址与地址映射表中第二存储设备的存储区的地址相同时,即该访问地址与缓存区的地址有映射关系,此时可向与该访问地址对应的缓存区的地址发起访问。

本实施例的方案可用于优化存储设备的访问性能,可将其应用于数据管理领域;可改善嵌入式设备中低速存储设备的存储性能;平衡低速存储设备的访问驼峰;对于非全双工设备,若同时存在读操作请求和写操作请求,能够同时处理读操作请求和写操作请求,从而优化非全双工设备的访问性能。

区别于现有技术,本实施例提供了一种提高访问性能的方法,将第一存储设备的部分存储区作为第二存储设备的缓存区,在缓存区的地址和第二存储设备的存储区的地址之间建立映射关系,在对第二存储设备进行访问时,能够根据地址映射表将访问请求转移到缓存区的地址,由于第一存储设备的访问性能高于第二存储设备的访问性能,从而提高第二存储设备的访问性能,而且可减少对第二存储设备的访问次数,提高第二存储设备的使用寿命。

参阅图2,图2是本申请提供的提高访问性能的方法另一实施例的流程示意图,该方法包括:

步骤21:对至少两个存储设备的性能进行测试。

存储设备分为高速存储设备和低速存储设备,为了提高访问性能比较低的存储设备的访问性能,可在系统启动时对各个存储设备进行性能测试,以区分高速存储设备和低速存储设备;具体地,可测试存储设备对应的每秒数据吞吐量。

步骤22:将测试性能大于预设性能参数的存储设备记作第一存储设备,其他存储设备记作第二存储设备。

将预设性能参数作为区分高速存储设备和低速存储设备的基准。

步骤23:从第一存储设备的存储区中选取至少部分存储区作为缓存区。

步骤24:建立缓存区的地址与第二存储设备的存储区的地址之间的映射关系,得到地址映射表。

以上步骤既可以在每次识别低速存储设备时都执行,以方便配置的修改;也可以只在首次识别低速存储设备时执行,以提高低速存储设备的识别性能。

步骤25:向第二存储设备发送读操作请求。

该读操作请求用于读取访问地址所对应的的数据。

步骤26:判断访问地址是否与地址映射表中的地址匹配。

将访问地址与地址映射表进行匹配,以判断地址映射表中是否存储有访问地址。

步骤27:若访问地址与地址映射表中的地址匹配,则读取与访问地址匹配的缓存区中的数据。

若地址映射表中存储有该访问地址,则表明该访问地址与缓存区的地址之间建立了映射关系,此时可以直接读取相应的缓存区中的数据。

步骤28:若访问地址与地址映射表中的地址不匹配,则读取第二存储设备的存储区中访问地址对应的数据。

若地址映射表中未存储有该访问地址,则表明该访问地址与缓存区的地址之间不具有映射关系,此时可以读取低速存储设备中访问地址对应的数据。

本实施例中对低速存储设备进行读操作时,先查找缓存区与低速存储设备之间是否具有映射关系,若在地址映射表中查找到与访问地址对应的缓存区的地址,则访问高速存储设备,否则访问低速存储设备,由此提高低速存储设备的访问性能。

参阅图3,图3是本申请提供的提高访问性能的方法又一实施例的流程示意图,该方法包括:

步骤31:从第一存储设备的存储区中选取至少部分存储区作为缓存区。

步骤32:建立缓存区的地址与第二存储设备的存储区的地址之间的映射关系,得到地址映射表。

其中,步骤31-32与上述实施例中步骤11-12相同,在此不再赘述。

步骤33:向第二存储设备发送写操作请求。

该写操作请求包括待写入数据。

步骤34:判断访问地址是否与地址映射表中的地址匹配。

步骤35:若访问地址与地址映射表中的地址匹配,则将待写入数据写入与访问地址对应的缓存区的地址中。

对低速存储设备进行写操作时,先查找缓存区与低速存储设备之间是否具有映射关系,若地址映射表中具有与访问地址对应的缓存区的地址,则把待写入数据写到缓存区中的相应地址中。

步骤36:若访问地址与地址映射表中的地址不匹配,则判断当前缓存区中是否具有未映射地址。

在将待写入数据写入缓存区之前,判断当前存储区是否有未映射地址,即判断缓存区是否有未分配的可用空间来存储供待写入数据。

步骤37:若当前缓存区中不具有未映射地址,则对缓存区进行扩充,从第一存储设备的可用存储区中选取部分存储区加入当前缓存区中,以更新缓存区。

若当前缓存区中不具有未映射地址,即当前缓存区中每个地址均与低存储设备中存储区的地址对应,没有剩余可用空间,若所有缓存区均缓存了未同步至第二存储设备的缓存数据,则对当前缓冲区进行扩充,以便于存储待写入数据。

对缓存区进行扩充的前提是第一存储设备还具有可用存储空间,若第一存储设备中不具有可用存储空间,则此时出现待写入数据等待的情况,等到缓存区中一部分数据复制到第二存储设备,便可以重复使用已同步缓存数据到第二存储设备的缓存空间;若具有部分已经将缓存数据同步至第二存储设备的缓存空间,则可以重复使用已同步缓存数据到第二存储设备的缓存空间,建立该缓存空间与第二存储设备之间的新的映射关系,实现缓存区的循环重复利用。

步骤38:若当前缓存区中具有未映射地址,建立访问地址与缓存区的未映射地址之间、缓存区的未映射地址与第二存储设备的存储区的地址之间的映射关系,更新地址映射表,并将待写入数据写入缓存区中。

该未映射地址为缓存区中未与第二存储设备的存储区的地址映射的地址;若储映射表中不具有与访问地址对应的缓存区的地址,则在缓存区中分配可用地址,并在地址映射表中建立可用地址与访问地址之间、缓存区的未映射地址与第二存储设备的存储区的地址之间的映射关系,并更新地址映射表。

步骤39:将缓存区的地址所对应的状态标识位更改为不可用。

该缓存区为具有缓存数据,且缓存数据未同步至第二存储设备的空间;该地址映射表还包括状态标识位,状态标识位用于指示缓存区的地址是否可用;具体地,该地址映射表可包括多个映射项,每个映射项包括高速存储设备的起始地址和长度、低速存储设备的起始地址和长度以及状态标识位;在待写入数据写入缓存区,但还未从缓存区同步到第二存储设备前,在地址映射表中标记该空间不可使用,以防止重复使用,导致数据的覆盖。缓存数据同步至第二存储设备的空间后,仍然将缓存器空间的状态标记为不可使用,直到有新的数据需要写入到缓存空间时,才将该缓存器空间的状态标记为可用。这样,如果在此期间接收到读操作请求,且读操作对应的待读出数据的地址与当前地址映射表匹配成功,则可以直接从缓存区中读出该地址对应的数据,而不是从第二存储设备上读出,由于缓存区位于高速存储设备,第二存储设备为低速存储设备,因此,提高了读数据的速度。

向低存储设备发起写操作时,若访问地址与地址映射表成功匹配,则把数据写到高速存储设备中缓存区的相应地址中,并把该地址的映射项置为不可用;若访问地址未与地址映射表成功匹配,则在高速存储设备的可用空间内扩充缓存区,对缓存区新扩充的空间创建新的映射项,或者重复利用同步缓存数据到第二存储设备的缓存空间,将其对应地址的映射项的状态置位为可用,写入访问地址数据后,再次把该地址的映射项置为不可用;降低了对低速存储设备的写操作频率,从而提高低速存储设备的使用寿命。

参阅图4和图5,图4是本申请提供的提高访问性能的方法再一实施例的流程示意图,图5是本申请提供的内存、高速存储设备以及低速存储设备的交互示意图,该方法包括:

步骤41:检测第一存储设备的已用存储区,从第一存储设备的可用存储区中选择部分存储区作为缓存区,并对缓存区进行初始化。

可利用监控程序对高速存储设备进行测试,测量其已用存储空间,分配并初始化一段空间作为缓存区;其中,监控程序既可以是kernel(实时操作系统)中的一个线程,也可以是用户空间的一个服务。

该缓存区的配置可通过多种方式实现,如使用固定分区作为缓存区、分配指定大小的可用存储空间作为缓存区或分配指定比例的可用存储空间作为缓存区等方式,比如缓存区为高速存储设备的可用存储空间的一半等。

步骤42:建立缓存区的地址与第二存储设备的存储区的地址之间的映射关系,得到地址映射表。

步骤43:向第二存储设备发起访问请求。

其中,步骤42-43与上述实施例中步骤12-13相同,在此不再赘述。

步骤44:将地址映射表复制到内存中,判断是否具有与访问地址匹配的缓存区的地址。

把高速存储设备上的地址映射表复制到内存中供查询,以提高映射本身访问速度;还可通知其他模块该低速存储设备已可用。

步骤45:若具有与访问地址对应的缓存区的地址,则向缓存区的地址发起访问。

当访问低速存储设备上的数据时,先检查内存中的地址映射表;如果该访问地址与地址映射表中存储的地址匹配,则向与该访问地址对应的存储区的地址发起访问。

在进行读操作时,如果数据已缓存在缓存区,则把数据从缓存区对应的地址读出,否则从低速存储设备中读取数据。在进行写操作时,如果该数据待写入的地址已缓存在缓存区,则把数据刷到缓存区对应的地址中,如果数据待写入的地址未缓存在缓存区,其包含地址未缓存以及地址未完全缓存两种情况,则先更新地址映射表,建立缓存区与低速存储设备之间的地址映射关系,然后再把数据刷到缓存区的相应地址中。

步骤46:监控第二存储设备的输入输出负载。

在系统运行期间,可利用监控程序监控系统中低速存储设备的输入输出负载,以判断低速存储设备的负载是否比较大,以便同步缓存区的数据至低速存储设备上。

步骤47:判断当前第二存储设备的输入输出负载是否小于预设输入输出负载。

该预设输入输出负载可动态调整或静态调整,如初始测量到的低速存储设备的访问性能为写速度:10m/s,读速度:20m/s;当低速存储设备的数据吞吐量低于写速度5m/s、读速度10m/s时,进行数据的搬移;从而优化同步数据的性能以及降低同步数据操作对其他并发访问低速存储设备操作性能的影响。

步骤48:若当前第二存储设备的输入输出负载小于预设输入输出负载,则将缓存区中的数据复制到对应的第二存储设备的存储区中,并在向第二存储设备写入新的待写入数据时,将状态标识位更新为可用。

当监控到低速存储设备的输入输出负载比较低时,按照地址映射表中的映射项把高速存储设备上缓存的数据同步到对应的低速存储设备的地址上,并在需要写入新的数据时,回收高速存储设备上的存储空间,标记该缓存区的地址可用,在优化访问性能的同时,可以回收高速存储设备的缓存空间与映射项;如果没有新的待写入数据,则可以在接收到读命令时,对缓存区执行读操作,有助于提高读速度。

此外,还可以在系统运行过程中可由监控程序动态测试高速存储设备的可用存储空间,进而调整高速存储设备的缓存区的大小;还可在缓存区的可用空间低于一定空间阈值时,该空间阈值可动态调整或静态调整,将缓存区中的数据同步至低速存储设备上,从而保证缓存区能够满足未来的写操作需求。

进一步地,可利用监控程序监测缓存区的可用存储区,并判断当前缓存区的可用存储区是否小于预设存储区;若当前缓存区的可用存储区小于预设存储区,则将缓存区中的数据复制到对应的第二存储设备的存储区中,并将状态标识位更新为可用。

同步高速存储设备的缓存区中的数据之后,把与数据对应的地址映射表中的状态标识位标记为可用,该段缓存空间以及地址映射表中的映射项均可以用于下次分配使用,同时可以保证该段缓存空间在下次被分配使用之前可以起到数据缓冲的作用,进而改善低速存储设备的访问性能。

本实施例中采用高速存储设备中部分未使用的存储空间作为低速存储设备的缓存;利用监控程序监控低速存储设备的访问性能,在负载较轻时进行数据同步;高速存储设备作为缓存,访问缓存区的速度必然比刷到低速存储设备上要快,即访问操作可以更快返回,可以提高低速存储设备的访问性能;且在低速存储设备负载较低时搬运数据,可以避免短时间内密集地访问低速存储设备,使低速存储设备的访问在时间上得到均衡处理,平衡低速存储设备的访问驼峰;由于高速存储设备上的数据不会因为断电等操作而丢失,保证了写操作即使没有真实的刷到低速存储上也不会导致数据丢失,下次识别低速存储设备后可以正常获取数据。另外,多级高速存储设备也可通过本申请中的方案来为低速存储设备提供多级高速缓冲区,从而改善低速存储设备的访问性能。

参阅图6,图6是本申请提供的提高访问性能的设备一实施例的结构示意图,提高访问性能的设备60至少包括第一存储设备61、第二存储设备62以及处理器63,其中,第一存储设备61的存储区611至少包括缓存区6111以及程序存储区6112,缓存区6111的地址与第二存储设备62的存储区621的地址之间具有映射关系,程序存储区6112用于存储计算机程序,计算机程序在被处理器63执行时,用于实现上述实施例中的提高访问性能的方法。

参阅图7,图7是本申请提供的计算机存储介质一实施例的结构示意图,计算机存储介质70用于存储计算机程序71,计算机程序71在被处理器执行时,用于实现上述实施例中的提高访问性能的方法。

存储介质70可以是服务端、u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

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

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

以上仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

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