掌桥专利:专业的专利平台
掌桥专利
首页

数据读写方法、装置、终端及存储介质

文献发布时间:2023-06-19 11:32:36


数据读写方法、装置、终端及存储介质

技术领域

本申请实施例涉及数据读取技术领域,特别涉及一种数据读写方法、装置、终端及存储介质。

背景技术

终端中的绝大部分数据存储在外存中,内存中临时存储着处理器需要高频次使用的数据。

相关数据中,当处理器需要从外存中读写数据时,处理器向外存发送逻辑地址。外存根据逻辑地址读取L2P(Logic to Physical)表,从L2P表中查找到逻辑地址对应的物理地址,从而在物理地址中获取到对应的数据,进行相应的读写操作。其中,L2P表的数量较多,外存随机从多个L2P表中选择一个L2P表进行查找。若处理器需要多次读取同一个数据时,外存随机查找L2P表的机制将降低处理器获取数据的效率。

发明内容

本申请实施例提供了一种数据读写方法、装置、终端及存储介质,可以解决处理器需要多次读取同一个数据时,外存随机查找L2P表导致的效率低的问题。所述技术方案如下:

根据本申请的一方面内容,提供了一种数据读写方法,所述方法包括:

获取读写指令,所述读写指令用于对外存中存储的第一数据执行相应的读写操作,所述第一数据的物理地址位于第一数据区域;

根据所述读写指令的类型更新所述第一数据区域的数据热度;

根据更新后的所述数据热度调整内存中存储的逻辑到物理表L2P;

获取所述第一数据区域的所述逻辑到物理表L2P;

根据所述第一数据的逻辑地址从所述第一数据区域的所述逻辑到物理表L2P中查询所述第一数据的物理地址;

根据所述第一数据的物理地址,对所述外存存储的第一数据执行所述读写指令。

根据本申请的另一方面内容,提供了一种数据读写装置,所述装置包括:

指令获取模块,用于获取读写指令,所述读写指令用于对外存中存储的第一数据执行相应的读写操作,所述第一数据的物理地址位于第一数据区域;

热度更新模块,用于根据所述读写指令的类型更新所述第一数据区域的数据热度;

表调整模块,用于根据更新后的所述数据热度调整内存中存储的逻辑到物理表L2P;

表获取模块,用于获取所述第一数据区域的所述逻辑到物理表L2P;

地址查询模块,用于根据所述第一数据的逻辑地址从所述第一数据区域的所述逻辑到物理表L2P中查询所述第一数据的物理地址;

数据读写模块,用于根据所述第一数据的物理地址,对所述外存存储的第一数据执行所述读写指令。

根据本申请的另一方面内容,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如本申请实施提供的数据读写方法。

根据本申请的另一方面内容,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如本申请实施提供的数据读写方法。

本申请实施例提供的技术方案带来的有益效果可以包括:

本申请将获取读写指令,根据读写指令的类型更新第一数据区域的数据热度,根据更新后的数据热度调整内存中存储的L2P表,接着获取到第一数据区域的L2P表,并从该表中查找到第一数据逻辑地址对应的物理地址,从而根据该物理地址执行针对第一数据的读写指令。由于本申请实施例能够动态调整存放在内存中的L2P表,使得数据热度较热的数据能够直接从内存中读取到物理地址,从而能令数据被快速获取,提高了从外存中读写数据的效率。

附图说明

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

图1是本申请一个示例性实施例提供的终端的结构框图;

图2是基于图1所示实施例提供的一种数据存储内容的示意图;

图3是基于图2所示实施例提供的一种位图bitmap的示意图;

图4是本申请一个示例性实施例提供的一种数据读写方法的流程图;

图5是本申请另一个示例性实施例提供的一种数据读写方法流程图;

图6是基于图5所示实施例提供的一种外存中存储的有序数组的示意图;

图7是本申请一个示例性实施例提供的一种数据读写装置的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

为了本申请实施例所示方案易于理解,下面对本申请实施例中出现的若干名词进行介绍。

L2P表:用于存储数据的逻辑地址和物理地址的之间的对应关系的表。在一种可能的方式中,当已知指定数据的逻辑地址,则能够根据L2P得到该指定数据所在的物理地址。反之,当已知指定数据的物理地址,也能够根据该L2P表得到该指定数据的逻辑地址。

可选地,外存中可以预先维护有q个L2P表。在该场景中,q为正整数,且外存被划分为q个数据区域,每一个数据区域对应一个L2P表。在本申请中,内存中也可以存储有r个数据区域的L2P表。这里的r个数据区域是当前外存中数据热度最高的前r个数据区域。

示例性地,本申请实施例所示的数据读写方法,可以应用在终端中,该终端具备显示屏且具备数据读取功能。终端可以包括手机、平板电脑、膝上型电脑、台式电脑、电脑一体机、服务器、工作站、电视、机顶盒、智能眼镜、智能手表、数码相机、MP4播放终端、MP5播放终端、学习机、点读机、电纸书、电子词典、车载终端、虚拟现实(Virtual Reality,VR)播放终端或增强现实(Augmented Reality,AR)播放终端等。

图1是本申请一个示例性实施例提供的终端的结构框图,如图1所示,该终端包括处理器120、内存140和外存160,所述内存140中存储有至少一条指令,所述指令由所述处理器120加载并执行以实现如本申请各个方法实施例所述的数据读写方法。

处理器120可以包括一个或者多个处理核心。处理器120利用各种接口和线路连接整个终端100内的各个部分,通过运行或执行存储在内存140内的指令、程序、代码集或指令集,以及调用存储在内存140内的数据,执行终端100的各种功能和处理数据。可选的,处理器120可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器120可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器120中,单独通过一块芯片进行实现。

内存140可以包括随机存储器(Random Access Memory,RAM)。内存140可用于存储指令、程序、代码、代码集或指令集。内存140可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储下面各个方法实施例中涉及到的数据等。

外存160可以包括只读存储器(Read-Only Memory,ROM)。可选的,该内存140包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。可选地,外存160可以被设计成为一个独立存储设备,例如,该外存160中可以设置控制芯片和独立的内存。外存160能够独立执行归属于外存部分执行的操作。

在本申请中,处理器120、内存140和外存160之间可以通过总线交互数据。

请参见图2,图2是基于图1所示实施例提供的一种数据存储内容的示意图。在图2中,外存160共包括q个数据区域。在外存160中至少维护有4个部分的数据,包括数据存储区210、有序数组220、位图(bitmap)230和L2P表240。

可选地,数据存储区210包括存储数据的q个数据区域。

可选地,有序数组220中存储有q个元素,每个元素包括数据区域的名称和相应的数据热度。有序数组220中的元素根据数据热度降序排列。

可选地,位图(bitmap)230可以是二进制的字符串。其中,字符串位数至少包括q位。在q位中,每一位的取值是0或1。其中,1表示有效状态,0表示无效状态。请参考图3,图3是基于图2所示实施例提供的一种位图bitmap的示意图。在图3中,位图230通过表格的形式存储。在外存中存储的表格中具有q组对应关系,每组对应关系用于指示该数据区域对应的L2P表是否已经上传至内存中,当状态是Y时,表明该状态是有效状态,该数据区域对应的L2P表已经上传至内存中。当状态是N时,表明该状态是无效状态,该数据区域对应的L2P表没有上传至内存中。

可选地,L2P表240可以被划分为q个部分,每个部分对应一个数据区域。也即,q个部分中的每一个部分对应有指定的数据热度。

请参考图4,图4是本申请一个示例性实施例提供的一种数据读写方法的流程图。该数据读写方法可以应用在上述图1所示的终端中。在图4中,数据读写方法包括:

步骤410,获取读写指令,读写指令用于对外存中存储的第一数据执行相应的读写操作,第一数据的物理地址位于第一数据区域。

在本申请实施例中,终端中的处理器在需要从外存中读取数据时,将生成读取指令。示意性的,该读取指令包括两种类型,分别是读指令和写指令。

处理器在生成该读写指令之后,能够以该指令为基础调整所要处理的数据热度,请参见如下介绍。

步骤420,根据读写指令的类型更新第一数据区域的数据热度。

在本例中,处理器能够根据读写指令的类型更新第一数据区域的数据热度。

在一种可能的方式中,当读写指令的类型是读指令时,处理器响应于读写指令是读指令,增加第一数据区域的数据热度。示意性的,第一数据区域增加的数据热度可以通过正整数的数值表示,也可以通过其他数据的形式表示。在本例中,处理器可以更新第一数据区域的数据热度的数值,使得更新后的第一数据区域的数据热度增加。例如,当数据热度是通过正整数表示且数值越大表示数据热度越高时,且第一数据区域更新前的数据热度是240,则更新后的第一数据区域的数据热度可以是大于240的一个数值。例如,更新后的第一数据区域的数据热度可以是241、242或者245等数值,本申请实施例不对一次增加的数值进行限定。

在另一种可能的方式中,当读写指令的类型是写指令时,处理器响应于读写指令是写指令,减少第一数据区域的数据热度。例如,当数据热度是通过正整数表示且数值越大表示数据热度越高时,且第一数据区域更新前的数据热度是240,则更新后的第一数据区域的数据热度可以是小于240的一个数值。例如,更新后的第一数据区域的数据热度可以是239、238或者235等数值,本申请实施例不对一次减少的数值进行限定。

步骤430,根据更新后的数据热度调整内存中存储的逻辑到物理表L2P。

在本申请实施例中,处理器能够根据更新后的数据热度调整内存中存储的L2P表。

在一种可能的场景中,若第一数据区域对应的L2P表已经存储在内存中,则本步骤仅需调整该L2P表的数据热度即可。比如,内存中已经存有5个L2P表,请参见表一,表一示出了一种内存中存储的L2P表对应的数据区域的数据热度。

表一请参见表二,表二是一种表一中的数据更新后的数据。

表二

由表一和表二提供的数据可知,第一数据区域的数据热度增加了1。其余L2P表的数据热度没有发生变化。

在另一种可能的方式中,若内存中不存在第一数据区域的L2P表。处理器可以将第一数据区域的数据热度更新情况发送至外存。在该场景中,若更新后的第一数据区域的L2P获得了存储在内存中的资格,则内存使用第一数据区域的L2P替换内存中数据热度小于第一数据区域的L2P表。

请参见表三和表四,表三是更新前存储在内存中的各个L2P表的情况,表四是更新后的内存中的各个L2P表的情况。

表三

表四

从表三和表四所示的数据可知,由于第一数据区域调整后数据热度大于内存中的第六数据区域的数据热度。因此,内存中不再保存第六数据区域的L2P表,而是保存第一数据区域的L2P表,用以替换第六数据区域的L2P表。

步骤440,获取第一数据区域的逻辑到物理表L2P。

在本例中,处理器获取第一数据区域的L2P表。

示意性的,处理器将根据不同的场景进行不同的第一数据区域的L2P表读取处理方式。

在一种可能的方式中,响应于内存中不存在第一数据区域的逻辑到物理表L2P,从外存中读取第一数据区域的逻辑到物理表L2P。在该方式中,由于内存中并不存在第一数据区域的L2P,因此,处理器需要从外存中读取第一数据区域的L2P。

在另一种可能的方式中,响应于内存中存在第一数据区域的逻辑到物理表L2P,读取内存中的第一数据区域的逻辑到物理表L2P。在本例中,由于内存中存在该L2P,因此,处理器能够直接从内存中读取该L2P。

步骤450,根据第一数据的逻辑地址从第一数据区域的逻辑到物理表L2P中查询第一数据的物理地址。

在本例中,处理器在获取到第一数据区域的L2P后,能够根据已经拥有的逻辑地址,获取对应的物理地址。

例如,逻辑地址是1204,L2P中指示该逻辑地址1024对应的物理地址是17-29-AF-E3-AE-5C。通过本步骤,处理器将得到所要处理的第一数据的物理地址。

步骤460,根据第一数据的物理地址,对外存存储的第一数据执行读写指令。

在本例中,处理器能够根据第一数据的物理地址,直接读取第一数据,示意性的,在该场景中,若读写指令是读指令,该指令也可以被称之为快读命令。

可选地,外存可以在接收到快读命令后直接提供第一数据。

综上所述,本实施例提供的数据读写方法,通过获取读写指令,根据读写指令的类型更新第一数据区域的数据热度,根据更新后的数据热度调整内存中存储的L2P表,接着获取到第一数据区域的L2P表,并从该表中查找到第一数据逻辑地址对应的物理地址,从而根据该物理地址执行针对第一数据的读写指令。由于本申请实施例能够动态调整存放在内存中的L2P表,使得数据热度较热的数据能够直接从内存中读取到物理地址,从而能令数据被快速获取,提高了从外存中读写数据的效率。

基于上一个实施例所公开的方案,终端还能够通过不同的更改数据热度的方案,令内存中动态存储的L2P更加合理,从而提高针对外存中的数据的读写效率,请参考如下实施例。

请参见图5,图5是本申请另一个示例性实施例提供的一种数据读写方法流程图。该数据读写方法可以应用在上述所示的终端中。在图5中,该数据读写方法包括:

步骤510,获取读写指令。

在本申请实施例中,步骤510的执行过程和步骤410的执行过程相同,此处不再赘述。

步骤521,获取读指令的读取方式。

其中,读取方式包括顺序读方式和随机读方式中的一种。

在本例中,一种可能情况下,响应于读指令读取的第一数据的数据大小大于第一阈值,处理器将读取方式确定为随机读方式。

另一种可能的情况下,响应于读指令读取的第一数据的数据大小大于第一阈值,处理器将读取方式确定为顺序读方式。

比如,在本申请实施例中,第一阈值可以是32K、16K或64K等数值,本申请实施例不对不作限定。

步骤522,响应于读取方式是随机读方式,将第一数据区域的数据热度增加n,n为正整数。

在本例中,处理器将增加随机读方式读取的第一数据区域的数据热度。需要说明的是,其中,n为正整数,具体的数值可以是1、2或3等数值,本申请实施例对此不作限定。

步骤523,响应于读指令中包含预设标识,将第一数据区域的数据热度增加m,m为正整数。

在本例中,处理器能够预先为关键用户场景设置指定的数据区域,并提高该指定的关键用户场景。例如,该关键用户数据可以是交易数据、密钥数据、系统配置数据或隐私数据等关键用户场景涉及的数据。处理器可以预先为上述数据所在区域设置特殊的标识,在读取上述数据时,为读指令中增加相应的预设标识。

若读指令中包括预设标识,则处理器能够将第一数据区域中的暑热热度增加m。其中,m为正整数,具体的数值可以是1、3或4等数值,本申请实施例对此不作限定。

步骤524,响应于读写指令的延迟大于第二阈值,将第一数据区域的数据热度增加p,p为正整数。

在本例中,处理器能够周期性对各个数据区域的读写指令的延迟进行统计。一种可能的方式中,处理器能够对各个数据区域的读取志林的延迟进行统计。若本例中所示的读写指令的延迟大于第二阈值,则为第一数据区域的数据热度增加p。

在本例中,第二阈值可以是时长阈值,例如5毫秒、6毫秒或10毫秒等数值。本申请实施例不对具体的时长取值进行限定。其中,p为正整数,具体的数值可以是1、2或4等数值,本申请实施例对此不作限定。

步骤530,根据第一数据区域的更新后的数据热度,调整有序数组中的各个元素的次序。

在本申请实施例中,外存中存储有序数组,有序数组中包括q个元素,每个元素表示一个数据区域的数据热度,有序数组中的q个元素按照数据热度降序排列。内存中存储有r个数据区域的逻辑到物理表L2P,r个数据区域是有序数组中的数据热度最高的前r个数据区域。

示意性的,r小于或等于q。比如,在外存中,一共包括30个区域,则内存中可以存有5个数据区域的L2P表。在该场景中,内存中保存这数据热度最高的前5个数据区域的L2P表,并且该保存的L2P表将随着读取情况动态调整,实现了外存中的数据始终高效提供给处理器的能力。

可选地,若处理器仍向外存发送携带逻辑地址的读写指令,则外存可以根据有序数组中提供的顺序依次读取各个L2P,以查找该逻辑地址对应的物理地址。

请参见图6,图6是基于图5所示实施例提供的一种外存中存储的有序数组的示意图。在该有序数组中,外存能够依次读取数据区域3的L2P表、数据区域14的L2P表、数据区域9的L2P表、数据区域20的L2P表、数据区域q的L2P表、…直至数据区域30的L2P表。需要说明的是,上述读取L2P表的顺序是指定的,但处理器在按照上述顺序读取L2P表时,无需全部读取完成,仅需读取到包括逻辑地址对应的物理地址的L2P表即可。

在本申请实施例中,处理器既可以执行步骤541,也可以执行步骤542,本申请实施例对此不作限定。

步骤541,响应于内存中不存在第一数据区域的逻辑到物理表L2P,从外存中读取第一数据区域的逻辑到物理表L2P。

作为一种替代的实现方式,步骤541可由下列步骤1)和步骤2)来替换,以实现从外存中读取第一数据区域的L2P功能。

步骤1),响应于内存中不存在第一数据区域的逻辑到物理表L2P,获取系统读写数据,系统读写数据用于指示当前采样时段中系统读写压力大小。

在一种可能的方式中,系统读写数据可以包括系统平均延迟和/或系统读取总量。也即,包括三种情况。情况一,系统读写数据仅包括系统平均延迟。情况二,系统读写数据仅包括系统读取总量。情况三,系统读写数据包括系统平均延迟和系统读取总量。

需要说明的是,处理器能够周期性确定系统平均延迟和系统读取总量。在实际的获取场景中,处理器能够在指定的单位时间内进行统计。示意性的,单位时间可以是1秒、5秒、10秒或者30秒等时长,本申请实施例对此不作限定。

步骤2),响应于系统读写数据符合预设条件,从外存中读取第一数据区域的逻辑到物理表L2P。

在本例中,处理器能够在情况三时通过执行步骤a1)和步骤a2),来实现步骤1)和步骤2)所要实现的效果。

步骤a1),响应于内存中不存在第一数据区域的逻辑到物理表L2P,获取系统平均延迟和系统读取总量。

在本例中,当内存中不存在第一数据区域的L2P表时,处理器将获取系统平均延迟和系统读取总量。其中,系统读取总量可以是系统从外存中读取的数据的数据量。

步骤a2),响应于系统平均延迟小于或等于第三阈值,且,系统读取总量小于或等于第四阈值,从外存中读取第一数据区域的逻辑到物理表L2P。

在本例中,处理器能够分别对系统平均延迟和系统读取总量这两个数据进行校验。当系统平衍延迟小于或者等于第三延迟时且系统读取总量小于或等于第四阈值时,处理器将从外存中读取第一数据区域的L2P。

换言之,若系统中IO的负担不重时,处理器能够从外存中读取所需要的第一数据区域的L2P。若系统中的IO负担较重时,处理器将不再从外存中读取所需要的第一数据区域的L2P,而是在系统中IO的负担较轻时,再从外存中读取所需要的第一数据区域的L2P。

步骤542,响应于内存中存在第一数据区域的逻辑到物理表L2P,读取内存中的第一数据区域的逻辑到物理表L2P。

步骤550,根据第一数据的逻辑地址从第一数据区域的逻辑到物理表L2P中查询第一数据的物理地址。

在本例中,处理器将根据L2P表,查询到逻辑地址对应的物理地址。

步骤561,向外存发送包含第一数据的物理地址的读写指令。

在本例中,处理器将向外存发送包含第一数据的物理地址的读写指令。在该应用方式中,处理器能够快速从外存中得到自身所需要的第一数据。

步骤562,指示外存检测第一数据区域的标识的状态,标识的状态包括有效状态和无效状态。

示意性的,为了避免处理器发送的物理地址是恶意攻击的读取指令或者其它非法读取的行为。因此,本申请实施例对该读指令所要读取的第一数据区域的L2P表的标识。其中,该标识的状态包括有效状态和无效状态。一种可能的方式中,有效状态和无效状态可以通过数字0和1来分别表示。另一可能的方式,有效状态和无效状态可以通过字母Y和字母N来分别表示。

步骤563,响应于标识的状态是有效状态,对第一数据执行读写指令。

在本例中,若标识的状态是有效状态,说明外存已经将第一数据区域的L2P表发送至内存。此时,外存接收到处理器发送来的第一数据区域中的数据的物理地址合理。因此,外存响应该读写指令,当读写指令是读指令时,外存将第一数据返回给处理器。当读写指令是写指令时,外存将需要写的数据写入到物理地址。

综上所述,本实施例能够将被访问较为频繁的数据区域的L2P存储在内存中,通过处理器侧和外存侧互相之间的配合,降低了外存的资源占用。

本实施例提供的数据读写方法,还能够在外存侧实时检测系统资源状态,对L2P表的读取操作实现管控,避免处理器读取L2P表对系统的IO造成较大负担,影响系统的运行效率。

可选地,移动终端随机读取数据的能力可以获取较大提升,同时提升了外存随机读取关键数据的能力,减少移动终端使用时的卡顿现象,提高流畅度,提升用户体验。同时,该方案可以根据系统资源的使用情况动态调整L2P表的读取,保证在系统资源紧张的情况下,不会对系统整体性能产生负面影响。

在本申请实施例中,可以应用于移动终端。示意性的,本方案可以提升外存随机读取数据的能力,减少移动终端使用时的卡顿现象,提高流畅度,提升用户体验。

例如,在后台存在数据读取操作,同时操作前台应用时,会存在大量随机读的操作,耗时较长的读取操作会造成卡顿。本方案可以统计出耗时较长的读取操作所在的区域,读操作直接在移动终端的内存中完成查表,不需要外存多次读取L2P表,简化流程,提高读取速度,保证了用户在该场景下操作的流畅性。

在本申请实施例中,本申请可以通过热度统计逻辑和系统资源监控逻辑实现整体的数据快速读取的效果。

一、热度统计逻辑

移动终端将外存的空间按固定大小划分为a1个区域并编号,统计各个存储区域的数据热度。其处理逻辑主要包括三方面:

1)对各个存储区域的数据热度进行统计,读取数据热度较高区域的L2P表。

移动终端可以维护一个有序数组,该表由划分出的a1个区域组成,并按数据热度排序,前a2个区域都是移动终端读取了L2P表的区域,数组中第a2个区域的数据热度设为热度阈值。

当移动终端发起IO命令后,外存会处理该IO命令。同时,移动设备会对该IO命令进行解析统计数据热度。

首先找到IO命令操作的对应区域,根据命令类型(读或写)更新该区域的数据热度,接着更新数组的顺序和热度阈值,最后对前a2个区域中新增的L2P表进行读取,舍弃被淘汰的区域并告知外存。当命令类型为读命令时,其数据热度的增量a2,在不同场景下的权重会有区别。

外存维护一个bitmap。移动终端向外存发出读取或舍弃L2P表的命令后,外存会返回需要读取的L2P表给移动终端,并在bitmap上标记该区域的L2P表是否被上传。

L2P表传给移动终端后,移动终端可以直接通过物理地址读取数据(本文称之为快读命令)时。外存在接收到快读命令后,在bitmap中检查该命令操作的区域是否被上传,若该区域被上传,才会使用快读命令中的物理地址去读对应区域。通过这种校验方式可以保证数据读取的准确性和安全性。

2)根据读取类型(顺序读/随机读)筛选出数据热度较高的区域。

当命令类型为读命令时,根据读命令读取的大小,判断该命令属于顺序读还是随机读,若该命令为随机读,增加对应区域的数据热度。

3)筛选出关键用户场景读取的数据区域,提高这些区域的数据热度。

关键用户场景读取时,在读命令中添加额外的标记。计算数据热度时,若检测到该标记,增加对应区域的数据热度。

二、L2P表读取管控逻辑

1)监控系统的IO读取延迟,提高读取延迟较高的区域的数据热度。

本申请会统计系统所有IO读取的延迟,并周期性对各个区域的IO读取延迟进行解析,若某区域的IO读取延迟超过阈值,则增加该区域的数据热度。

2)监控系统的IO总量,IO资源紧张时对L2P表的读取进行管控。

本申请会在读取L2P表时,解析系统当前IO读取的平均延迟及总量,若超过阈值,则暂时不进行读取。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

请参考图7,图7是本申请一个示例性实施例提供的一种数据读写装置的结构框图。该数据读写装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置包括:

指令获取模块710,用于获取读写指令,所述读写指令用于对外存中存储的第一数据执行相应的读写操作,所述第一数据的物理地址位于第一数据区域;

热度更新模块720,用于根据所述读写指令的类型更新所述第一数据区域的数据热度;

表调整模块730,用于根据更新后的所述数据热度调整内存中存储的逻辑到物理表L2P;

表获取模块740,用于获取所述第一数据区域的所述逻辑到物理表L2P;

地址查询模块750,用于根据所述第一数据的逻辑地址从所述第一数据区域的所述逻辑到物理表L2P中查询所述第一数据的物理地址;

数据读写模块760,用于根据所述第一数据的物理地址,对所述外存存储的第一数据执行所述读写指令。

在一个可选的实施例中,所述热度更新模块720,用于响应于所述读写指令是读指令,增加所述第一数据区域的数据热度。或,所述热度更新模块720,用于响应于所述读写指令是写指令,减少所述第一数据区域的数据热度。

在一个可选的实施例中,所述热度更新模块720,用于获取所述读指令的读取方式,所述读取方式包括顺序读方式和随机读方式中的一种;响应于所述读取方式是所述随机读方式,将所述第一数据区域的数据热度增加n,n为正整数。

在一个可选的实施例中,所述热度更新模块720,用于响应于所述读指令读取的所述第一数据的数据大小大于第一阈值,将所述读取方式确定为所述随机读方式;响应于所述读指令读取的所述第一数据的数据大小大于所述第一阈值,将所述读取方式确定为所述顺序读方式。

在一个可选的实施例中,所述热度更新模块720,用于响应于所述读指令中包含预设标识,将所述第一数据区域的数据热度增加m,m为正整数。

在一个可选的实施例中,所述热度更新模块720,用于响应于所述读写指令的延迟大于第二阈值,将所述第一数据区域的数据热度增加p,p为正整数。

在一个可选的实施例中,所述表获取模块740,用于响应于所述内存中不存在所述第一数据区域的所述逻辑到物理表L2P,从所述外存中读取所述第一数据区域的所述逻辑到物理表L2P。或者,所述表获取模块740,用于响应于所述内存中存在所述第一数据区域的所述逻辑到物理表L2P,读取所述内存中的所述第一数据区域的所述逻辑到物理表L2P。

在一个可选的实施例中,所述表获取模块740,用于响应于所述内存中不存在所述第一数据区域的所述逻辑到物理表L2P,获取系统读写数据,所述系统读写数据用于指示当前采样时段中系统读写压力大小;响应于所述系统读写数据符合预设条件,从所述外存中读取所述第一数据区域的所述逻辑到物理表L2P。

在一个可选的实施例中,所述系统读写数据包括系统平均延迟和/或系统读取总量。

在一个可选的实施例中,所述表获取模块740,用于响应于所述内存中不存在所述第一数据区域的所述逻辑到物理表L2P,获取所述系统平均延迟和所述系统读取总量;响应于所述系统平均延迟小于或等于第三阈值,且,所述系统读取总量小于或等于第四阈值,从所述外存中读取所述第一数据区域的所述逻辑到物理表L2P。

在一个可选的实施例中,所述数据读写模块760,用于向所述外存发送包含所述第一数据的物理地址的所述读写指令;指示所述外存检测所述第一数据区域的标识的状态,所述标识的状态包括有效状态和无效状态;响应于所述标识的状态是所述有效状态,对所述第一数据执行所述读写指令。

在一个可选的实施例中,所述装置涉及的所述外存中存储有序数组,所述有序数组中包括q个元素,每个元素表示一个数据区域的所述数据热度,所述有序数组中的q个元素按照所述数据热度降序排列;所述内存中存储有r个所述数据区域的所述逻辑到物理表L2P,所述r个所述数据区域是所述有序数组中的所述数据热度最高的前r个所述数据区域。

在一个可选的实施例中,所述表调整模块730,用于根据所述第一数据区域的更新后的所述数据热度,调整所述有序数组中的各个元素的次序。

综上所述,本实施例能够将被访问较为频繁的数据区域的L2P存储在内存中,通过处理器侧和外存侧互相之间的配合,降低了外存的资源占用。

本实施例提供的数据读写方法,还能够在外存侧实时检测系统资源状态,对L2P表的读取操作实现管控,避免处理器读取L2P表对系统的IO造成较大负担,影响系统的运行效率。

可选地,移动终端随机读取数据的能力可以获取较大提升,同时提升了外存随机读取关键数据的能力,减少移动终端使用时的卡顿现象,提高流畅度,提升用户体验。同时,该方案可以根据系统资源的使用情况动态调整L2P表的读取,保证在系统资源紧张的情况下,不会对系统整体性能产生负面影响。

本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的数据读写方法。

需要说明的是:上述实施例提供的数据读写装置在执行数据读写方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据读写装置与数据读写方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的能够实现的示例性的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 闪存数据读写方法、装置、存储介质和终端设备
  • 分布式存储系统及其数据读写方法、存储终端及存储介质
技术分类

06120112965996