一种映射表管理方法、系统及电子设备和存储介质与流程

文档序号:19064292发布日期:2019-11-06 02:08阅读:217来源:国知局
一种映射表管理方法、系统及电子设备和存储介质与流程

本申请涉及计算机技术领域,更具体地说,涉及一种映射表管理方法、系统及一种电子设备和一种计算机可读存储介质。



背景技术:

在当前ssd(中文全称:固态驱动器,英文全称:solidstatedrive)系统中,通过映射表记录主机地址和物理地址的映射关系。在io(中文全称:输入/输出,英文全称:input/output)过程中,若主机请求的数据的映射表正好被缓存在ssd的ram中,即表项命中,ssd可以立刻定位到数据存放在nandflash中的位置,从而取出数据并返回主机。然而,如果表项没有命中,ssd就需要从nandflash读取表项,然后通过表项再去nandflash读取数据。对于随机io,就不得不频繁的对缓存在ram(中文全称:随机存取存储器,英文全称:randomaccessmemory)中的映射表和存放在nandflash中的表项进行换入换出,极大地影响了io的性能。

为了提高表项命中,在ssd中增加一个用于缓存映射表的dram(中文全称:动态随机存取存储器,英文全称:dynamicrandomaccessmemory),由于大容量的dram成本较高,因此为了平衡性能和成本,仅将部分映射表缓存在dram中,提高性能的同时可以控制ssd的成本。对于地址连续的io(即顺序io),可以根据地址的连续性在dram中缓存将来大概率会被访问的映射表,来提高io的性能。然而对于地址不连续的io(即随机io),由于无法预测未来可能被访问到的映射表,所以无法进行表项预读。

因此,如何提高dram中随机io的表项命中率,进而提高io性能是本领域技术人员需要解决的技术问题。



技术实现要素:

本申请的目的在于提供一种映射表管理方法、系统及一种电子设备和一种计算机可读存储介质,提高了dram中随机io的表项命中率,进而提高了io性能。

为实现上述目的,本申请提供了一种映射表管理方法,包括:

判断ssd系统是否处于随机io状态;

若是,则缓存高频映射表至缓存空间;其中,所述高频映射表为访问频度满足第一预设条件的映射表。

其中,所述缓存高频映射表至缓存空间,包括:

根据预设标准在目标树中选取所述高频映射表,并缓存所述高频映射表至缓存空间;其中,所述目标树包括热映射表,所述热映射表为访问频度满足第二预设条件的映射表,所述目标树包括avl树。

其中,所述根据预设标准在目标树中选取所述高频映射表,包括:

选取所述目标树中访问频度前n%的映射表为所述高频映射表。

其中,还包括:

当检测到所述ssd系统进入低负载状态时,更新所述目标树。

其中,所述更新所述目标树,包括:

根据所述ssd系统中每个映射表的历史访问记录计算每个所述映射表的访问频度;

根据所述访问频度满足所述第二预设条件的映射表更新所述目标树。

其中,所述根据每个所述映射表的历史访问记录计算每个所述映射表的访问频度,包括:

根据每个所述映射表的最后一次随机io访问的时间点和所述映射表的被访问总次数计算每个所述映射表的访问频度。

其中,所述根据所述访问频度满足所述预设条件的映射表更新所述目标树,包括:

将所述目标树外的所述访问频度大于预设值的映射表确定为第一映射表,将所述目标树中所述访问频度小于所述预设值的映射表确定为第二映射表;其中,所述第一映射表与第二映射表的数量相同;

将所述目标树中的所述第二映射表替换为所述第一映射表。

其中,还包括:

若当前随机io未命中所述缓存空间,从所述缓存空间中删除访问频度最低的映射表,并将所述当前随机io命中的映射表缓存至所述缓存空间。

为实现上述目的,本申请提供了一种映射表管理系统,包括:

判断模块,用于判断ssd系统是否处于随机io状态;若是,则启动缓存模块的工作流程;

所述缓存模块,用于缓存高频映射表至缓存空间;其中,所述高频映射表为访问频度满足第一预设条件的映射表。

为实现上述目的,本申请提供了一种电子设备,包括:

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

处理器,用于执行所述计算机程序时实现如上述映射表管理方法的步骤。

为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述映射表管理方法的步骤。

通过以上方案可知,本申请提供的一种映射表管理方法,包括:判断ssd系统是否处于随机io状态;若是,则缓存高频映射表至缓存空间;其中,所述高频映射表为访问频度满足第一预设条件的映射表。

本申请提供的映射表管理方法,在随机io状态时将高频映射表缓存至存储空间,在ssd系统中利用一个较小容量的缓存空间缓存部分映射表,通过辨识高频映射表决定缓存空间中缓存哪些映射表,可以提高随机io的表项命中率,进而提高io性能。本申请还公开了一种映射表管理系统及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1为根据一示例性实施例示出的一种映射表管理方法的流程图;

图2为本申请提供的一种ssd系统的架构图;

图3为根据一示例性实施例示出的另一种映射表管理方法的流程图;

图4为根据一示例性实施例示出的又一种映射表管理方法的流程图;

图5为根据一示例性实施例示出的一种映射表管理系统的结构图;

图6为根据一示例性实施例示出的一种电子设备的结构图。

具体实施方式

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

在现有技术中,由于无法识别随机io过程中的高频映射表,导致随机io的表项命中率低、io性能较低。因此,在本申请中,通过目标树记录随机io过程中被高频访问到的映射表,在随机io过程中,根据目标树进行表项预读,实现了缓存高频访问映射表的功能,减少访问频度较高的表项的换出可能,从而增加随机io的表项命中率,进而提高io性能。

本申请实施例公开了一种映射表管理方法,提高了dram中随机io的表项命中率,进而提高了io性能。

参见图1,根据一示例性实施例示出的一种映射表管理方法的流程图,如图1所示,包括:

s101:判断ssd系统是否处于随机io状态;若是,则进入s102;若是,则进入s103;

本实施例的执行主体为ssd系统中的处理器,在本步骤中,首先检测系统的io状态,包括顺序io状态和随机io状态。顺序io即为地址连续的io,在该状态下进入s103。随机io即为地址不连续的io,在该状态下进入s102。

s102:缓存高频映射表至缓存空间;其中,所述高频映射表为访问频度满足第一预设条件的映射表。

在本步骤中,确定随机io状态下的高频映射表,并将其提前加载至缓存空间中。映射表中的表项记录的是主机地址和nand中数据存放位置(即物理地址)的映射关系。高频映射表为在一个时间段内,被频繁访问到的映射表,即访问频度满足第一预设条件的映射表。此处的第一预设条件可以为访问频度大于第一预设值,也可以为访问频度位于全部映射表的前n1%。此处的缓存空间可以为背景技术中介绍的dram,当然本领域技术人员也可以根据实际情况选择其他的存储器。

优选的,本步骤可以包括:根据预设标准在目标树中选取所述高频映射表,并缓存所述高频映射表至缓存空间;其中,所述目标树包括热映射表,所述热映射表为访问频度满足第二预设条件的映射表。

在具体实施中,如图2所示,主机端的io请求首先经过缓存空间,若该io请求命中缓存空间,即缓存空间中包括该io请求命中的映射表,根据缓存空间中的映射表确定nandflash中的物理地址,以响应io请求。引入决策树模型,能够对一个时间段内,随机io对表项的访问频度进行甄别,即目标树中包括访问频度满足第二预设条件的热映射表。此处的第二预设条件可以为访问频度大于第二预设值,也可以为访问频度位于全部映射表的前n2%,在此不进行具体限定。可以理解的是,第一预设值大于或等于第二预设值,n1小于或等于n2,也就是说,高频映射表相对于热映射表来说,对访问频度的要求更高。

通过目标树记录随机io过程中被高频访问到的映射表,在随机io过程中,根据目标树进行表项预读,实现了缓存高频访问映射表的功能,减少访问频度较高的表项的换出可能,从而增加随机io的表项命中率。此处的目标数可以为avl树(中文全称:二叉查找树),当然也可以选取其他类型的树型结构,在此不作具体限定。对于目标树记录高频映射表的方式,可以按照其树型结构从根节点至叶子节点记录的映射表访问频度由高至低,也可以将访问频度满足预设条件的映射表随机记录在目标树的各节点中,在此不进行具体限定。

在目标树中选取高频映射表时,可以将将目标树中记录的热映射表全部选取为高频映射表,加载至缓存空间中。当缓存空间有限时,可以将目标树中预设比例的映射表缓存至缓存空间中,例如按照目标树的1/2、1/4、1/8进行预读,即仅仅选择目标树的一个子树进行映射表预读。优选的,可以按照目标树中的映射表的访问频度由高至低进行缓存,选取所述目标树中访问频度前n%的映射表为所述高频映射表。

可以理解的是,在在目标树中选取高频映射表的步骤之前默认存在构建目标树的步骤,即根据热映射表构建目标树。构建目标树和更新目标树的过程类似,将在后续实施例进行详细介绍。当检测到ssd系统进入低负载状态时,更新目标树。具体的,可以根据ssd系统的带宽、平均时延等判断系统述方进入低负载状态。

s103:根据地址的连续性缓存映射表。

在顺序io状态,根据io地址的连续性缓存大概率会被访问的映射表至缓存空间中。

本申请实施例提供的映射表管理方法,在随机io状态时将高频映射表缓存至存储空间,在ssd系统中利用一个较小容量的缓存空间缓存部分映射表,通过辨识高频映射表决定缓存空间中缓存哪些映射表,可以提高随机io的表项命中率,进而提高io性能。

本实施例将介绍目标树的更新过程。具体的:

参见图3,根据一示例性实施例示出的另一种映射表管理方法的流程图,如图3所示,包括:

s201:根据所述ssd系统中每个映射表的历史访问记录计算每个所述映射表的访问频度;

此处映射表的历史访问记录描述了该映射表在一段时间内的被访问情况,根据历史访问记录可以计算每个映射表的访问频度。具体的,可以根据每个映射表在预设时间内的被访问次数计算每个映射表的访问频度,即将被访问次数与预设时间的时间长度的比值作为访问频度。

作为一种优选实施方式,可以根据每个映射表的最后一次随机io访问的时间点和映射表的被访问总次数计算每个映射表的访问频度。具体的,由于高频映射表为在一个时间端内被频繁访问到的映射表,因此识别热映射表需要考虑时间和访问次数两个维度。可以为访问时间分配一个时间权重,通过调整该时间权重,可以调整访问时间对访问频度值的影响。

其中,访问频度计算公式可以具体为:

f=t·w+c;

其中,f为所述访问频度,t为所述最后一次随机io访问的时间点,w为访问时间对访问频度影响的权重,c为所述被访问总次数。

当ssd系统的随机io的表项命中率较低时,可以通过增大w提高表项命中率。

s202:根据所述访问频度满足所述第二预设条件的映射表更新所述目标树。

在进行随机io的过程中,映射表的访问频度是动态改变的,对于访问频度达到了加入目标树的条件(即第二预设条件)时,将目标树中访问频度较低的结点删除,同时将新结点加入到目标树中,即目标树的更新。

优选的,本步骤可以包括:将所述目标树外的所述访问频度大于预设值的映射表确定为第一映射表,将所述目标树中所述访问频度小于所述预设值的映射表确定为第二映射表;其中,所述第一映射表与第二映射表的数量相同;将所述目标树中的所述第二映射表替换为所述第一映射表。可以理解的是,此处的第一映射表为目标树外即将换进目标树中的映射表,第二映射表为目标树中即将换出目标树的映射表。此处的预设值可以根据第二预设条件进行设定,若第二预设值为访问频度大于第二预设值,则此处的预设值与上文描述的第二预设值相同,若第二预设值为访问频度位于全部映射表的前n2%,确定在全部映射表中访问频度位于第n2%的映射表的访问频度,将其设置为此处的预设值,以保证换进目标树的第一映射表与换出目标树的第二映射表的数量相同,进而保证目标树中节点数量的固定。

可以理解的是,在上述过程之后,还可以重新调整目标树内的各节点,按照目标树树型结构调整从根节点至叶子节点记录的映射表访问频度由高至低。若目标树为avl树,还可以对该进行avl树再平衡,目的为减小avl树左子树和右子树的深度差,提高查找的速度,提高在该avl树中选取高频映射表的速度。

在本实施例中,根据映射表的历史访问记录计算访问频度,历史访问记录描述了该映射表在一段时间内的被访问情况,根据历史访问记录计算的访问频度可以在一定程度上代表该映射表将来被访问的概率。据此进行目标树的更新,使得目标树实时、准确的包含ssd系统中的热映射表。

本申请实施例公开了一种映射表管理方法,相对于第一个实施例,本实施例对技术方案作了进一步的说明和优化。具体的:

参见图4,根据一示例性实施例示出的另一种映射表管理方法的流程图,如图4所示,包括:

s301:判断ssd系统是否处于随机io状态;若是,则进入s302;若是,则进入s304;

s302:缓存高频映射表至缓存空间;其中,所述高频映射表为访问频度满足第一预设条件的映射表;

s303:若当前随机io未命中所述缓存空间,从所述缓存空间中删除访问频度最低的映射表,并将所述当前随机io命中的映射表缓存至所述缓存空间。

在具体实施中,若当前随机io没有命中缓存空间中的映射表,可以选择访问频度最低的映射表,将其从缓存空间中换出,从而确保了访问频度较高的映射表常驻缓存空间,提高随机io过程中的表项命中率。需要说明的是,为了不占用系统过多的资源,此处的访问频度可以为上一次更新目标树时计算的访问频度。当然,为了访问频度更加准确,也可以重新计算缓存空间中各映射表的当前访问频度,本领域技术人员可以根据实际情况灵活选择。

s304:根据地址的连续性缓存映射表。

在本实施例中,当前随机io未命中缓存空间时,提供了一种更新缓存空间加载的映射表的方法,即删除访问频度最低的映射表,将当前随机io命中的映射表加载至缓存空间中。可以确保访问频度较高的映射表常驻缓存空间,提高随机io过程中的表项命中率。

下面对本申请实施例提供的一种映射表管理系统进行介绍,下文描述的一种映射表管理系统与上文描述的一种映射表管理方法可以相互参照。

参见图5,根据一示例性实施例示出的一种映射表管理系统的结构图,如图5所示,包括:

判断模块501,用于判断ssd系统是否处于随机io状态;若是,则启动缓存模块的工作流程;

所述缓存模块502,用于缓存高频映射表至缓存空间;其中,所述高频映射表为访问频度满足第一预设条件的映射表。

本申请实施例提供的映射表管理系统,在随机io状态时将高频映射表缓存至存储空间,在ssd系统中利用一个较小容量的缓存空间缓存部分映射表,通过辨识高频映射表决定缓存空间中缓存哪些映射表,可以提高随机io的表项命中率,进而提高io性能。

在上述实施例的基础上,作为一种优选实施方式,所述缓存模块502具体为根据预设标准在目标树中选取所述高频映射表,并缓存所述高频映射表至缓存空间的模块;其中,所述目标树包括热映射表,所述热映射表为访问频度满足第二预设条件的映射表,所述目标树包括avl树。

在上述实施例的基础上,作为一种优选实施方式,所述缓存模块502包括:

选取单元,用于选取所述目标树中访问频度前n%的映射表为所述高频映射表;

缓存单元,用于缓存所述高频映射表至缓存空间。

在上述实施例的基础上,作为一种优选实施方式,还包括:

更新模块,用于当检测到所述ssd系统进入低负载状态时,更新所述目标树。

在上述实施例的基础上,作为一种优选实施方式,所述更新模块包括:

计算单元,用于根据所述ssd系统中每个映射表的历史访问记录计算每个所述映射表的访问频度;

更新单元,用于根据所述访问频度满足所述第二预设条件的映射表更新所述目标树。

在上述实施例的基础上,作为一种优选实施方式,所述计算单元具体为根据每个所述映射表的最后一次随机io访问的时间点和所述映射表的被访问总次数计算每个所述映射表的访问频度的单元。

在上述实施例的基础上,作为一种优选实施方式,所述更新单元包括:

确定子单元,用于将所述目标树外的所述访问频度大于预设值的映射表确定为第一映射表,将所述目标树中所述访问频度小于所述预设值的映射表确定为第二映射表;其中,所述第一映射表与第二映射表的数量相同;

替换子单元,用于将所述目标树中的所述第二映射表替换为所述第一映射表。

在上述实施例的基础上,作为一种优选实施方式,还包括:

更新缓存空间模块,用于若当前随机io未命中所述缓存空间,从所述缓存空间中删除访问频度最低的映射表,并将所述当前随机io命中的映射表缓存至所述缓存空间。

关于上述实施例中的系统,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本申请还提供了一种电子设备,参见图6,本申请实施例提供的一种电子设备600的结构图,如图6所示,可以包括处理器11和存储器12。该电子设备600还可以包括多媒体组件13,输入/输出(i/o)接口14,以及通信组件15中的一者或多者。

其中,处理器11用于控制该电子设备600的整体操作,以完成上述的映射表管理方法中的全部或部分步骤。存储器12用于存储各种类型的数据以支持在该电子设备600的操作,这些数据例如可以包括用于在该电子设备600上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(staticrandomaccessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammableread-onlymemory,简称eprom),可编程只读存储器(programmableread-onlymemory,简称prom),只读存储器(read-onlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。多媒体组件13可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器12或通过通信组件15发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口14为处理器11和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件15用于该电子设备600与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(nearfieldcommunication,简称nfc),2g、3g或4g,或它们中的一种或几种的组合,因此相应的该通信组件15可以包括:wi-fi模块,蓝牙模块,nfc模块。

在一示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(applicationspecificintegratedcircuit,简称asic)、数字信号处理器(digitalsignalprocessor,简称dsp)、数字信号处理设备(digitalsignalprocessingdevice,简称dspd)、可编程逻辑器件(programmablelogicdevice,简称pld)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的映射表管理方法。

在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述映射表管理方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器12,上述程序指令可由电子设备600的处理器11执行以完成上述的映射表管理方法。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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