首页> 中国专利> 一种闪存交换分区控制方法及移动设备

一种闪存交换分区控制方法及移动设备

摘要

本申请涉及数据存储领域,尤其涉及闪存交换分区控制方法。在应用于包含闪存的移动设备的闪存交换分区控制方法中,在以当前时刻为计时起点的计时时长达到预设周期时,或者,在计时时长没有达到预设周期但增加的主控写入量大于等于预设阈值时,检测闪存的磨损,至少获取所述闪存在上一个预设周期或者上一个阶段的第一参数和当前的第二参数,并至少根据获取的第一参数和第二参数得到预测结果,进而允许或禁止后续对所述闪存中Swap分区的写入;从所述增加的主控写入量为0直至所述增加的主控写入量大于等于预设阈值所用的时长为一个阶段。通过本申请提供的技术方案,可以延长闪存的实际使用寿命;还允许对所述闪存中非Swap分区的区域的即时读写。

著录项

  • 公开/公告号CN113157599A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN202010075706.X

  • 发明设计人 李鹏;马晓伟;缪勰;

    申请日2020-01-22

  • 分类号G06F12/02(20060101);G06F12/123(20160101);

  • 代理机构

  • 代理人

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-06-19 11:57:35

说明书

技术领域

本申请涉及数据存储技术,尤其涉及一种闪存交换分区控制方法、移动设备及计算机可读存储介质。

背景技术

交换分区(Swap分区)技术能够扩展电子设备的内存空间,得到广泛应用。不过,Swap分区技术会导致对设置Swap分区的存储设备的频繁读取,加速存储设备的器件磨损。尤其对于移动设备,会使得设置Swap分区的闪存的实际使用寿命大大缩短。因此,对于Swap分区设置在闪存中的移动设备,延长闪存的实际使用寿命成为我们的需求。

发明内容

为了解决现有技术中存在的上述技术问题,本申请提出了一种闪存交换分区的控制方法、移动设备及计算机可读存储介质。

第一方面,提供一种闪存交换分区控制方法。所述闪存交换分区控制方法应用于包含闪存的移动设备,包括:以当前时刻为计时起点进行计时;在满足第一条件或满足第二条件时,检测闪存的磨损,至少获取所述闪存的第一参数和第二参数;至少根据所述第一参数和所述第二参数得到预测结果;根据所述预测结果,允许或禁止后续对所述闪存中Swap分区的写入;所述第一条件为计时时长达到预设周期;所述第二条件为计时时长没有达到预设周期,但增加的主控写入量大于等于预设阈值;所述增加的主控写入量=当前的主控写入量–起始主控写入量;所述第一参数包括:容量、P/E次数、理想使用寿命、起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:容量、P/E次数、理想使用寿命、当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;所述方法还包括:获取第三参数;所述第三参数包括:容量、P/E次数和理想使用寿命;其中,所述理想使用寿命为所述移动设备的生产厂家根据需要预先自行设置;所述容量和所述P/E次数为所述闪存的生产厂家提供的参数;所述主控用于向所述闪存读写数据。这样,就能够根据上一个预设周期或上一个阶段的第一参数和当前的第二参数进行预测,并根据预测结果确定允许或禁止在下一个预设周期或下一个阶段中对所述闪存中Swap分区的写入,使得闪存的实际使用寿命得以延长,并逼近甚至达到理想使用寿命。同时,所述方法还能响应用户对闪存的即时读写请求。这里,从所述增加的主控写入量为0直至所述增加的主控写入量大于等于预设阈值所用的时长为一个阶段。

根据第一方面,在所述在以当前时刻为计时起点进行计时之前,所述方法还包括:在判断所述方法首次运行时,将起始主控写入量、起始Swap写入量和起始寿命初始化为0,将起始已消耗P/E次数初始化为闪存已消耗P/E次数;所述至少根据所述第一参数和所述第二参数得到预测结果;根据所述预测结果,允许或禁止后续对所述闪存中Swap分区的写入;包括:根据所述第一参数和所述第二参数,或者,根据所述第一参数、所述第二参数和所述第三参数,按照如下公式,预测主控后续单位时长内可接受写入量W1和闪存中非Swap分区后续单位时长内的写入量W2,并判断W1和W2的大小关系;增加的主控写入量=当前的主控写入量–起始主控写入量;WAF=容量*(当前已消耗P/E次数–起始已消耗P/E次数)/增加的主控写入量;主控剩余的可写入量=容量*(P/E次数–当前已消耗P/E次数)/WAF;W1=主控剩余的可写入量/(理想使用寿命/单位时长–当前已使用寿命/单位时长);W2=增加的主控写入量/((当前已使用寿命–起始寿命)/单位时长)–(当前的Swap写入量–起始Swap写入量)/((当前已使用寿命–起始寿命)/单位时长);其中,所述单位时长为所述移动设备的生产厂家根据需要预先自行设置;如果W1大于W2,设置所述闪存中Swap分区后续单位时长内可写入量WS=W1-W2;如果W1小于等于W2,设置所述闪存中Swap分区后续单位时长内可写入量WS=0。这样,给出了具体的预测方式以及基于按照上述预测方式得出的预测结果,确定允许还是禁止后续对所述闪存中Swap分区的写入,从而提供了具体的执行方式。

根据第一方面,或者第一方面的任意一种实现方式,在所述设置所述闪存中Swap分区后续单位时长内可写入量WS=W1-W2之后;或者,在所述设置所述闪存中Swap分区后续单位时长内可写入量WS=0之后;所述方法还包括:将所述起始已消耗P/E次数更新为所述当前已消耗P/E次数;将所述起始主控写入量更新为所述当前的主控写入量;将所述起始Swap写入量更新为所述当前的Swap写入量;将所述起始寿命更新为所述当前已使用寿命;将所述计时时长清零。这样,在上一个预设周期或上一个阶段结束时,就实现起始已消耗P/E次数、起始主控写入量、起始Swap写入量和起始寿命的更新以及计时时长的清零,使得在下一个预设周期或下一个阶段的预测中,能够利用上述公式正确地计算预测。

根据第一方面,或者第一方面的任意一种实现方式,在将计时时长清零之后,所述方法还包括:以当前时刻为计时起点进行计时;在满足第一条件或满足第二条件时,检测闪存的磨损,至少获取所述闪存的第一参数和第二参数;至少根据所述第一参数和所述第二参数得到预测结果;根据所述预测结果,允许或禁止后续对所述闪存中Swap分区的写入。这样,就使得所述方法在当前周期或当前阶段的运行结束后,循环执行该方法的步骤,继续在下一周期或下一阶段进行预测,并得到新的预测结果,进而根据新的预测结果,允许或禁止后续对所述闪存中Swap分区的写入,以及在允许的情况下,计算得到新的所述闪存中Swap分区后续单位时长内可写入量WS;从而使得闪存的实际使用寿命得以延长,并逼近甚至达到理想使用寿命。

根据第一方面,或者第一方面的任意一种实现方式,所述方法允许对所述闪存中非Swap分区的区域的即时读写。也就是说,该方法仅允许或禁止所述闪存中的Swap分区的写入,不限制所述闪存中非Swap分区的区域的即时读写。这样,还向用户提供对所述闪存即时读写的服务,不影响用户的正常使用。

第二方面,提供一种闪存交换分区控制方法。所述方法应用于包含闪存的移动设备,包括:以当前时刻为计时起点进行计时;在计时时长达到预设周期时,检测闪存的磨损,至少获取所述闪存的第一参数和第二参数;至少根据所述第一参数和所述第二参数得到预测结果;根据所述预测结果,允许或禁止后续对所述闪存中Swap分区的写入;所述第一参数包括:容量、P/E次数、理想使用寿命、起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:容量、P/E次数、理想使用寿命、当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;所述方法还包括:获取第三参数;所述第三参数包括:容量、P/E次数和理想使用寿命;其中,所述理想使用寿命为所述移动设备的生产厂家根据需要预先自行设置;所述容量和所述P/E次数为所述闪存的生产厂家提供的参数。这样,就能够根据上一个预设周期的第一参数和当前的第二参数进行预测,并根据预测结果确定允许或禁止在下一个预设周期中对所述闪存中Swap分区的写入,使得闪存的实际使用寿命得以延长,并逼近甚至达到理想使用寿命。同时,所述方法还能响应用户对闪存的即时读写请求。

根据第二方面,在所述在以当前时刻为计时起点进行计时之前,所述方法还包括:在判断所述方法首次运行时,将起始主控写入量、起始Swap写入量和起始寿命初始化为0,将起始已消耗P/E次数初始化为闪存已消耗P/E次数;所述至少根据所述第一参数和所述第二参数得到预测结果;根据所述预测结果,允许或禁止后续对所述闪存中Swap分区的写入;包括:根据所述第一参数和所述第二参数,或者,根据所述第一参数、所述第二参数和所述第三参数,按照如下公式,预测主控后续单位时长内可接受写入量W1和闪存中非Swap分区后续单位时长内的写入量W2,并判断W1和W2的大小关系;增加的主控写入量=当前的主控写入量–起始主控写入量;WAF=容量*(当前已消耗P/E次数–起始已消耗P/E次数)/增加的主控写入量;主控剩余的可写入量=容量*(P/E次数–当前已消耗P/E次数)/WAF;W1=主控剩余的可写入量/(理想使用寿命/单位时长–当前已使用寿命/单位时长);W2=增加的主控写入量/((当前已使用寿命–起始寿命)/单位时长)–(当前的Swap写入量–起始Swap写入量)/((当前已使用寿命–起始寿命)/单位时长);其中,所述单位时长为所述移动设备的生产厂家根据需要预先自行设置;如果W1大于W2,设置所述闪存中Swap分区后续单位时长内可写入量WS=W1-W2;如果W1小于等于W2,设置所述闪存中Swap分区后续单位时长内可写入量WS=0。这样,给出了具体的预测方式以及基于按照上述预测方式得出的预测结果,确定允许还是禁止后续对所述闪存中Swap分区的写入,从而提供了具体的执行方式。

根据第二方面,或者第二方面的任意一种实现方式,在所述设置所述闪存中Swap分区后续单位时长内可写入量WS=W1-W2之后;或者,在所述设置所述闪存中Swap分区后续单位时长内可写入量WS=0之后;所述方法还包括:将所述起始已消耗P/E次数更新为所述当前已消耗P/E次数;将所述起始主控写入量更新为所述当前的主控写入量;将所述起始Swap写入量更新为所述当前的Swap写入量;将所述起始寿命更新为所述当前已使用寿命;将所述计时时长清零。这样,在上一个预设周期结束时,就实现起始已消耗P/E次数、起始主控写入量、起始Swap写入量和起始寿命的更新以及计时时长的清零,使得在下一个预设周期的预测中,能够利用上述公式正确地计算预测。

根据第二方面,或者第二方面的任意一种实现方式,在将计时时长清零之后,所述方法还包括:以当前时刻为计时起点进行计时;在计时时长达到预设周期时,检测闪存的磨损,至少获取所述闪存的第一参数和当前的第二参数;至少根据所述第一参数和所述第二参数得到预测结果;根据所述预测结果,允许或禁止后续对所述闪存中Swap分区的写入。这样,就使得所述方法在当前周期的运行结束后,循环执行该方法的步骤,继续在下一周期进行预测,并得到新的预测结果,进而根据新的预测结果,允许或禁止后续对所述闪存中Swap分区的写入,以及在允许的情况下,计算得到新的所述闪存中Swap分区后续单位时长内可写入量WS;从而使得闪存的实际使用寿命得以延长,并逼近甚至达到理想使用寿命。

根据第二方面,或者第二方面的任意一种实现方式,所述方法允许对所述闪存中非Swap分区的区域的即时读写。也就是说,该方法仅允许或禁止所述闪存中的Swap分区的写入,不限制所述闪存中非Swap分区的区域的即时读写。这样,还向用户提供对所述闪存即时读写的服务,不影响用户的正常使用。

第三方面,提供一种闪存交换分区控制方法。所述方法应用于包含闪存的移动设备,包括:获取当前的主控写入量和起始主控写入量,按照如下公式计算增加的主控写入量;增加的主控写入量=当前的主控写入量–起始主控写入量;在增加的主控写入量大于等于预设阈值时,检测闪存的磨损,至少获取所述闪存第一参数和第二参数;至少根据所述第一参数和所述第二参数得到预测结果;根据所述预测结果,允许或禁止后续对所述闪存中Swap分区的写入;所述第一参数包括:容量、P/E次数、理想使用寿命、起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:容量、P/E次数、理想使用寿命、当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;所述方法还包括:获取第三参数;所述第三参数包括:容量、P/E次数和理想使用寿命;其中,所述理想使用寿命为所述移动设备的生产厂家根据需要预先自行设置;所述容量和所述P/E次数为所述闪存的生产厂家提供的参数。这样,就能够根据上一个阶段的第一参数和当前的第二参数进行预测,并根据预测结果确定允许或禁止在下一个阶段中对所述闪存中Swap分区的写入,使得闪存的实际使用寿命得以延长,并逼近甚至达到理想使用寿命。同时,所述方法还能响应用户对闪存的即时读写请求。这里,从所述增加的主控写入量为0直至所述增加的主控写入量大于等于预设阈值所用的时长为一个阶段。

根据第三方面,在所述获取当前的主控写入量和起始主控写入量之前,所述方法还包括:在判断所述方法首次运行时,将起始主控写入量、起始Swap写入量和起始寿命初始化为0,将起始已消耗P/E次数初始化为闪存已消耗P/E次数;所述至少根据所述第一参数和所述第二参数得到预测结果;根据所述预测结果,允许或禁止后续对所述闪存中Swap分区的写入;包括:根据所述第一参数和所述第二参数,或者,根据所述第一参数、所述第二参数和所述第三参数;按照如下公式,预测主控后续单位时长内可接受写入量W1和闪存中非Swap分区后续单位时长内的写入量W2;WAF=容量*(当前已消耗P/E次数–起始已消耗P/E次数)/增加的主控写入量;主控剩余的可写入量=容量*(P/E次数–当前已消耗P/E次数)/WAF;W1=主控剩余的可写入量/(理想使用寿命/单位时长–当前已使用寿命/单位时长);W2=增加的主控写入量/((当前已使用寿命–起始寿命)/单位时长)–(当前的Swap写入量–起始Swap写入量)/((当前已使用寿命–起始寿命)/单位时长);如果W1大于W2,设置所述闪存中Swap分区后续单位时长内可写入量WS=W1-W2;如果W1小于等于W2,设置所述闪存中Swap分区后续单位时长内可写入量WS=0;所述单位时长为所述移动设备的生产厂家根据需要预先自行设置。这样,给出了具体的预测方式以及基于按照上述预测方式得出的预测结果,确定允许还是禁止后续对所述闪存中Swap分区的写入,从而提供了具体的执行方式。

根据第三方面,或者第三方面的任意一种实现方式,在所述设置所述闪存中Swap分区后续单位时长内可写入量WS=W1-W2之后;或者,在所述设置所述闪存中Swap分区后续单位时长内可写入量WS=0之后;所述方法还包括:将所述起始已消耗P/E次数更新为所述当前已消耗P/E次数;将所述起始主控写入量更新为所述当前的主控写入量;将所述起始Swap写入量更新为所述当前的Swap写入量;将所述起始寿命更新为所述当前已使用寿命。这样,在上一个阶段结束时,就实现起始已消耗P/E次数、起始主控写入量、起始Swap写入量和起始寿命的更新以及计时时长的清零,使得在下一个阶段的预测中,能够利用上述公式正确地计算预测。

根据第三方面,或者第三方面的任意一种实现方式,在将所述起始寿命更新为所述当前已使用寿命之后,所述方法还包括:获取当前的主控写入量和起始主控写入量,计算增加的主控写入量;在增加的主控写入量大于等于预设阈值时,检测闪存的磨损,至少获取所述闪存第一参数和第二参数;至少根据所述第一参数和所述第二参数得到预测结果;根据所述预测结果,允许或禁止后续对所述闪存中Swap分区的写入。这样,就使得所述方法在当前阶段的运行结束后,循环执行该方法的步骤,继续在下一阶段进行预测,并得到新的预测结果,进而根据新的预测结果,允许或禁止后续对所述闪存中Swap分区的写入,以及在允许的情况下,计算得到新的所述闪存中Swap分区后续单位时长内可写入量WS;从而使得闪存的实际使用寿命得以延长,并逼近甚至达到理想使用寿命。

根据第三方面,或者第三方面的任意一种实现方式,所述方法允许对所述闪存中非Swap分区的区域的即时读写。也就是说,该方法仅允许或禁止所述闪存中的Swap分区的写入,不限制所述闪存中非Swap分区的区域的即时读写。这样,还向用户提供对所述闪存即时读写的服务,不影响用户的正常使用。

第四方面,提供一种移动设备,至少包括:存储器、一个或多个处理器以及一个或多个计算机程序;其中一个或多个计算机程序被存储在所述存储器中;一个或多个处理器在执行一个或多个计算机程序时,使得移动设备实现第一方面至第三方面中任意一个方面以及第一方面至第三方面中任意一种实现方式中的闪存交换分区控制方法。

另外,第四方面中任意一种实现方式和对应的技术效果可参见上述第一方面至第三方面中任意一个方面的实现方式和对应的技术效果以及第一方面至第三方面中任意一种实现方式和对应的技术效果,此处不再赘述。

第五方面,提供一种计算机可读存储介质,包括指令,当指令在第四方面的移动设备上运行时,使得所述移动设备执行第一方面至第三方面中任意一个方面以及第一方面至第三方面中任意一种实现方式中的闪存交换分区控制方法。

另外,第五方面中任意一种实现方式和对应的技术效果可参见上述第一方面至第三方面中任意一个方面的实现方式和对应的技术效果以及第一方面至第三方面中任意一种实现方式和对应的技术效果,此处不再赘述。

附图说明

图1为本申请实施例提供的一种移动设备的结构示意图。

图2为本申请实施例提供的SoC与闪存存储器之间数据读写的硬件结构示意图。

图3为本申请实施例提供的闪存存储器的结构示意图。

图4为本申请实施例提供的SoC与闪存存储器之间数据读写的软件操作示意图。

图5为本申请实施例一提供的一种闪存交换分区控制方法的流程示意图。

图6为本申请实施例二提供的一种闪存交换分区控制方法的流程示意图。

图7为本申请实施例三提供的一种闪存交换分区控制方法的流程示意图。

图8为本申请实施例提供的一种移动设备的硬件结构框图。

图9为本申请实施例提供的一种闪存交换分区控制方法中计时时长达到预设周期和/或增加的主控写入量大于等于预设阈值相应触发的流程执行的时间关系示意图。

具体实施方式

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

Swap分区技术是当电子设备的内存资源不足时,操作系统将内存中一些不常使用的数据(也称冷数据)存放到Swap分区中。举例来说,操作系统可以使用最近最少使用LRU(Least Recently Used)方法,将正在使用的内存页面维护在一个LRU链表中。当内存空闲页面不足时,页框实地址PFRA(Page Frame Real Address)会从LRU链表中回收一些较少被用到的内存页面中的数据放到Swap分区中。如此可减少对内存资源的占用,释放更多的内存资源供当前进程使用。当操作系统需要Swap分区中的数据时,再将上述数据重新加载到内存中。因此,Swap分区在功能上扩展了内存空间。Swap分区可以设置在内存、硬盘或其他存储设备中。设置在内存中的Swap分区又称为ZRAM。在将内存中的冷数据存储在ZRAM中时,通常先对上述冷数据压缩之后再存储在ZRAM中。对于诸如智能手机的移动设备,现有技术中一般是将Swap分区设置在闪存(闪存Memory)中。频繁的数据换入(Swap in)/换出(Swapout)会使得闪存单位时长内的写入写出量变大,容易造成闪存过度磨损,降低闪存的使用寿命。比如理想使用寿命为5年的闪存,在将Swap分区设置在闪存中后,闪存的实际使用寿命可能仅为3年。因此,对于Swap分区设置在闪存中的移动设备,需要延长闪存的实际使用寿命,尽可能使得闪存的实际使用寿命逼近甚至达到理想使用寿命。

本申请实施例提供的方法可以应用于图1所示的移动设备100中。图1示出了移动设备100的结构示意图。

移动设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。

可以理解的是,本发明实施例示意的结构并不构成对移动设备100的具体限定。在本申请另一些实施例中,移动设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。

控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。

处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。

在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。

USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对移动设备100的结构限定。在本申请另一些实施例中,移动设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。

充电管理模块140用于从充电器接收充电输入。电源管理模块141用于连接电池142,充电管理模块140与处理器110。移动设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。

天线1和天线2用于发射和接收电磁波信号。移动设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。

移动通信模块150可以提供应用在移动设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。

调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。

无线通信模块160可以提供应用在移动设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。

在一些实施例中,移动设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得移动设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。

移动设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。

显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,移动设备100可以包括1个或N个显示屏194,N为大于1的正整数。

移动设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。

ISP用于处理摄像头193反馈的数据。摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。

数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当移动设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。

视频编解码器用于对数字视频压缩或解压缩。移动设备100可以支持一种或多种视频编解码器。这样,移动设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。

NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。

外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展移动设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。

内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储移动设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal闪存storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行移动设备100的各种功能应用以及数据处理。

移动设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。

压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。移动设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,移动设备100根据压力传感器180A检测所述触摸操作强度。移动设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。

陀螺仪传感器180B可以用于确定移动设备100的运动姿态。气压传感器180C用于测量气压。在一些实施例中,移动设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。磁传感器180D包括霍尔传感器。加速度传感器180E可检测移动设备100在各个方向上(一般为三轴)加速度的大小。距离传感器180F,用于测量距离。移动设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,移动设备100可以利用距离传感器180F测距以实现快速对焦。接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。环境光传感器180L用于感知环境光亮度。指纹传感器180H用于采集指纹。移动设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。温度传感器180J用于检测温度。

触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于移动设备100的表面,与显示屏194所处的位置不同。

骨传导传感器180M可以获取振动信号。按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。移动设备100可以接收按键输入,产生与移动设备100的用户设置以及功能控制有关的键信号输入。马达191可以产生振动提示。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。

SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和移动设备100的接触和分离。移动设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。移动设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,移动设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在移动设备100中,不能和移动设备100分离。移动设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。

本申请实施例提供的一种闪存交换分区控制方法,能够监测和控制闪存单位时长内的实际写入量和闪存中Swap分区单位时长内的实际写入量,延长闪存的实际使用寿命,使得移动设备的闪存的实际使用寿命逼近甚至达到理想使用寿命。

图2是本申请实施例提供的SoC与闪存存储器之间数据读写的硬件结构示意图。如图2所示,片上系统SoC(System on Chip)200包括中央处理器CPU(Central ProcessingUnit)210、图形处理器GPU(Graphics Processing Unit)220、闪存主控(闪存HostController)(以下简称主控)230、调制解调器240和RAM控制器250。闪存存储器300与主控230连接。CPU210通过总线、主控230与闪存存储器300进行数据读写。图3为本申请实施例提供的闪存存储器的结构示意图。如图3所示,闪存存储器300包括闪存设备控制器310和闪存存储介质350。闪存设备控制器310进一步包括擦除管理模块320、读写管理模块330和垃圾回收管理模块340,分别用于执行擦除管理、读写管理和垃圾回收管理功能。闪存存储器300在接收主控的数据写命令时,是通过闪存设备控制器310接收主控230的写命令,然后先擦除后写入。闪存存储器300在接收主控230的数据读命令时,是通过闪存设备控制器310接收主控230的读命令,直接读取。图4为本申请实施例提供的SoC与闪存存储器之间数据读写的软件操作示意图。如图4所示,内核空间设置有内存管理模块400和磨损检测模块500,分别用于执行内存管理和磨损检测功能。内存管理模块400包括冷数据识别及交换模块410。内存管理模块还可以包括ZRAM管理模块420。如果内存RAM600中设置有ZRAM610,相应地,内存管理模块400就包括ZRAM管理模块420。如果内存RAM600中没有设置ZRAM610,相应地,内存管理模块400就不包括ZRAM管理模块420。在内存RAM600模块不包含ZRAM610,内存管理模块400也不包含ZRAM管理模块420时,冷数据识别及交换模块410识别内存RAM600中的冷数据,并将识别出的上述冷数据存储至闪存700的Swap分区710中。在内存RAM600包含ZRAM610,内存管理模块400包含ZRAM管理模块420时,冷数据识别及交换模块410可以识别内存RAM600中的冷数据,并将识别出的冷数据按照冷数据的程度,将上述冷数据中更冷的数据存储在闪存700的Swap分区710中,将上述冷数据中相对不那么冷的数据经压缩后存储在ZRAM610中;冷数据识别及交换模块410也可以识别内存RAM600中的冷数据,并将识别出的冷数据经压缩后都存储在ZRAM610中,再按照冷数据的程度将ZRAM610的冷数据中更冷的数据以压缩的形式或者以解压缩的形式存储在闪存700的Swap分区710中。磨损检测模块500用于对闪存700进行磨损检测,获取闪存700的相关参数。

所述相关参数包括但不限于闪存的容量、P/E(Program/Erase,擦写)次数、当前已消耗P/E次数、起始已消耗P/E次数、当前主控写入量、起始主控写入量、理想使用寿命、当前已使用寿命、起始寿命、当前Swap写入量和起始Swap写入量。其中,首次获取的起始主控写入量、起始寿命和起始Swap写入量均为0。首次获取的起始已消耗P/E次数为闪存已消耗P/E次数。闪存的容量和P/E次数即闪存的擦写次数都是由闪存的生产厂家提供的。由于CPU210在通过总线、主控230写入闪存存储器即闪存300时,都是先将数据写入主控230,之后数据再从主控230写入闪存存储器即闪存300中的Swap分区和非Swap分区。因此,可以获取到当前主控写入量和起始主控写入量。并且主控写入量=Swap写入量+非Swap写入量。Swap写入量为闪存中Swap分区的写入量。非Swap写入量为闪存中非Swap分区的写入量。此外,将数据写入闪存的Swap分区或非Swap分区的命令都包含有地址,通过该地址可以区分出是写入Swap分区还是非Swap分区。因此,可以获取到当前的Swap写入量和起始Swap写入量。当前已消耗P/E次数可以通过特定命令查询获取。当前已使用寿命可通过计时获取。理想使用寿命是由移动设备的生产厂家自行设定的,一般设为5年以上;有时也可设为3-5年。

闪存的可写入的最大数据量是通过万亿字节写入TBW(Tera Byte Written)来衡量的。TBW的相关公式为:

TBW=DWPD*理想使用寿命(年)*365*容量(GB)/1000(GB/TB)公式1

TBW=容量(GB)*(每单元P/E次数)/(1000(GB/TB)*WAF)公式2

其中,每日整盘写入次数DWPD(Device Writes Per Day)是指按照理想使用寿命,闪存每日可写入的最大数据量。每单元P/E次数就是闪存所包括的单元(BLOCK)的擦写次数,也等于闪存的擦写次数。闪存只有在擦除之后才能写入。公式2中的写入放大因子WAF(Write Amplification Factor)通常是动态变化的。对于连续工作负载,WAF通常在一位数范围内,动态变化范围较小。对于随机工作负载,WAF可能会达到甚至超过100,动态变化范围较大。由于WAF是动态变化的,因而会导致TBW发生变化,从而导致DWPD发生变化。也就是说,WAF和DWPD随时都可能发生变化。在理想使用寿命恒定的情况下,通过监测控制闪存每日写入量小于等于即时DWPD,来使得闪存的实际使用寿命尽可能逼近甚至达到理想使用寿命,计算复杂,不易实现。并且,控制闪存每日写入量可能会使得在用户需要写入闪存时无法写入,导致用户体验不好。

本申请实施例基于主控写入、Swap写入的上一个预设周期或上一个阶段的数据,分别预测主控后续单位时长内可接受写入量W1、闪存中非Swap分区后续单位时长内的写入量W2,并基于预测后的两者比较结果,设置Swap分区后续单位时长内可写入量,同时在上述预测过程中提高WAF计算的精准度,使得闪存的实际使用寿命尽可能逼近甚至达到理想使用寿命。并且,本申请实施例还在用户需要写入闪存时即可写入闪存,不受限制。其中,从增加的主控写入量为0直至增加的主控写入量大于等于预设阈值所用的时长为一个阶段。

实施例一

图5示出了本申请实施例一提供的一种闪存交换分区控制方法的流程图。如图5所示,移动设备的生产厂家预先设置好周期T和预设阈值N。周期T可以设置为诸如50秒、30分钟、10小时、7日、3个月、1年等任意时长。另外,周期T的单位可以为秒、分钟、小时、日、月、年等。设置预设阈值N的目的是用于判断主控写入量的增加值是否达到预设阈值N。周期T和预设阈值N可以由移动设备的生产厂家在启动该方法之前,根据需要自行设置。该方法开始后,首先判断是否为首次运行。若为首次运行,则将起始主控写入量、起始Swap写入量和起始寿命初始化为0,将起始已消耗P/E次数初始化为闪存已消耗P/E次数;之后,将当前时刻作为计时起点,从该计时起点开始计时。若不为首次运行,则将当前时刻作为计时起点,从该计时起点开始计时。然后,判断计时时长是否达到T。

若计时时长达到T,则检测闪存的磨损,获取闪存的相关参数。闪存的相关参数包括但不限于容量、P/E次数、当前已消耗P/E次数、起始已消耗P/E次数、当前的主控写入量、起始主控写入量、理想使用寿命、当前已使用寿命、起始寿命、当前的Swap写入量和起始Swap写入量。具体来说,上述相关参数包括闪存在上一个预设周期或者上一个阶段的第一参数和当前的第二参数。第一参数包括:容量、P/E次数、理想使用寿命、起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量。或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:容量、P/E次数、理想使用寿命、当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量。或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;所述方法还包括:获取第三参数;所述第三参数包括:容量、P/E次数和理想使用寿命。然后,基于获取的第一参数和第二参数,或者,基于获取的第一参数、第二参数和第三参数,计算增加的主控写入量、写入放大因子WAF和主控剩余的可写入量。其中,相应的计算公式为:增加的主控写入量=当前的主控写入量–起始主控写入量;WAF=容量*(当前已消耗P/E次数–起始已消耗P/E次数)/增加的主控写入量;主控剩余的可写入量=容量*(P/E次数–当前已消耗P/E次数)/WAF。这样,就采用了上一个预设周期或上一个阶段所消耗的P/E次数和所增加的主控写入量来计算WAF,并将计算得到的WAF预测为下一个预设周期或下一个阶段的WAF。以图9a为例,所述阶段对应着0至t1、t1至t2。也就是说,此时出现增加的主控写入量大于等于预设阈值N情形的时刻对应着上一个阶段刚结束。具体地,可以采用上一个预设周期的数据来预测下一个预设周期或下一个阶段的WAF,也可以采用上一个阶段的数据来预测下一个预设周期或下一个阶段的WAF,使得对下一个预设周期或下一个阶段的WAF的预测更为准确。具体采用上一个预设周期或上一个阶段的数据,是根据先实现计时时长达到T还是先出现增加的主控写入量大于等于预设阈值N的情形来确定。并且运用上述更为准确的WAF来计算主控剩余的可写入量,从而使得计算得到的上述主控剩余的可写入量更为准确。之后,预测主控后续单位时长内可接受写入量W1。其中,预测公式为:W1=主控剩余的可写入量/(理想使用寿命/单位时长–当前已使用寿命/单位时长)。这样,由于W1的预测是基于上述更为准确的主控剩余的可写入量,也就使得W1的预测更为准确。然后,预测闪存中非Swap分区后续单位时长内的写入量W2。预测公式为:W2=增加的主控写入量/((当前已使用寿命–起始寿命)/单位时长)–(当前的Swap写入量–起始Swap写入量)/((当前已使用寿命–起始寿命)/单位时长)。之后,判断W1是否大于W2。如果W1大于W2,设置Swap分区后续单位时长内可写入量WS=W1-W2。如果W1小于等于W2,设置Swap分区后续单位时长内可写入量WS=0。这样,就根据预测的闪存中非Swap分区后续单位时长内的写入量W2与主控后续单位时长内可接受写入量W1的大小关系,禁止或者允许对闪存中的Swap分区的写入。即便在允许的情形下,也控制Swap分区后续单位时长内可写入量。此外,由于该方法没有限制对闪存中非Swap分区的写入,所以用户在需要写入闪存时可以即时写入闪存。本申请实施例对闪存中的Swap分区的写入量进行控制,延长了闪存的实际使用寿命。并且,本申请实施例还允许用户即时写入闪存中的非Swap分区,不影响用户的正常使用。最后,对部分参数进行更新;具体为:将起始已消耗P/E次数更新为当前已消耗P/E次数;将起始主控写入量更新为当前的主控写入量;将起始Swap写入量更新为当前的Swap写入量;将起始寿命更新为当前已使用寿命;计时时长清零。之后,循环执行至开始,再次判断是否为首次运行;非首次运行,将当前时刻作为新的计时起点,从所述新的计时起点重新开始计时;判断计时时长是否达到T,即判断从所述新的计时起点开始的所述计时时长是否大于等于从所述新的计时起点开始的T。在计时时长达到T时,按照上述流程继续执行。在计时时长未达到T时,按照下述流程继续执行。

若计时时长未达到T,则获取当前的主控写入量和起始主控写入量;并计算增加的主控写入量。增加的主控写入量=当前的主控写入量–起始主控写入量。然后,判断增加的主控写入量是否大于等于预设阈值N。如果增加的主控写入量小于预设阈值N,则继续判断计时时长是否达到T。如果增加的主控写入量大于等于预设阈值N,则检测闪存的磨损,获取相关参数。相关参数包括但不限于闪存的容量、P/E次数、当前已消耗P/E次数、起始已消耗P/E次数、当前的主控写入量、起始主控写入量、理想使用寿命、当前已使用寿命、起始寿命、当前的Swap写入量和起始Swap写入量。然后,基于获取的上述相关参数,按照上述同样的流程和公式,预测主控后续单位时长内可接受写入量W1和闪存中非Swap分区后续单位时长内的写入量W2,根据W1和W2的大小比较结果,设置Swap分区后续单位时长内可写入量WS。即如果W1大于W2,设置Swap分区后续单位时长内可写入量WS=W1-W2;如果W1小于等于W2,设置Swap分区后续单位时长内可写入量WS=0。最后,对同样的参数进行更新;具体为:将起始已消耗P/E次数更新为当前已消耗P/E次数;将起始主控写入量更新为当前的主控写入量;将起始Swap写入量更新为当前的Swap写入量;将起始寿命更新为当前已使用寿命;计时时长清零。之后,循环执行至开始,再次判断是否为首次运行;非首次运行,将当前时刻作为新的计时起点,从所述新的计时起点重新开始计时;判断计时时长是否达到T,即判断从所述新的计时起点开始的所述计时时长是否大于等于从所述新的计时起点开始的T。根据判断结果,循环执行本方法的相应流程。

此处以图9a为例进一步说明,起始以0时刻为计时起点开始计时,在计时时长为t1时(t1

上述单位时长可以为若干分钟、若干小时、若干日、若干月、若干年等。上述单位时长的具体值和单位都可以根据需要由移动设备的生产厂家预先自行设置。该方法还可以为上述单位时长提供默认值,比如1天。移动设备的生产厂家可以根据需要选择设置其他值。另外,在移动设备出厂之前,移动设备的生产厂家还可以修改上述默认值。若上述的理想使用寿命、当前已使用寿命、起始寿命的单位与上述单位时长的单位不一致,则还需进行单位之间的转换。

另外,本申请实施例一中判断是否首次运行,可以采用以下方式:记录累计已运行的时长,如果检测到累计已运行时长为0,则表明本次是首次运行;反之,则表明本次不是首次运行。或者,预先记录一个表明首次运行的状态值,该状态值在首次运行时为某个特定值,比如0;在运行时检测当前状态值,如果当前状态值为上述特定值0,则表明本次是首次运行;反之,则表明本次不是首次运行。

本申请实施例一根据主控写入、Swap写入的上一个预设周期或上一个阶段的数据,预测主控后续的写入放大因子WAF,提升了WAF的计算准确度;并根据上述预测的写入放大因子WAF来预测主控后续单位时长内可接受写入量W1,进而提升了主控后续单位时长内可接受写入量W1的预测准确度。此外,还根据主控写入、Swap写入的上一个预设周期或上一个阶段的数据,预测闪存中非Swap分区后续单位时长内的写入量W2。基于预测后的W1和W2的比较结果,控制Swap分区后续单位时长内可写入量,允许或禁止后续对闪存中Swap分区的写入,使得闪存的实际使用寿命尽可能逼近甚至达到理想使用寿命。同时,还可即时响应用户写入闪存的需求。

实施例二

图6示出了本申请实施例二提供的一种闪存交换分区控制方法的流程图。在本申请实施例二中,不再考虑是否出现增加的主控写入量大于等于预设阈值N的情形,只考虑计时时长有没有达到T。如图6所示,移动设备的生产厂家预先设置好周期T,不再预先设置阈值N。本申请实施例二中,该方法开始后,首先判断是否为首次运行。若为首次运行,则将起始主控写入量、起始Swap写入量和起始寿命初始化为0,将起始已消耗P/E次数初始化为闪存已消耗P/E次数;之后,将当前时刻作为计时起点,从该计时起点开始计时。若不为首次运行,则将当前时刻作为计时起点,从该计时起点开始计时。然后,判断计时时长是否达到T。

若计时时长达到T,则检测闪存的磨损,获取包括但不限于闪存的容量、P/E次数、当前已消耗P/E次数、起始已消耗P/E次数、当前的主控写入量、起始主控写入量、理想使用寿命、当前已使用寿命、起始寿命、当前的Swap写入量和起始Swap写入量的相关参数。具体来说,上述相关参数包括闪存在上一个预设周期的第一参数和当前的第二参数。第一参数包括:容量、P/E次数、理想使用寿命、起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量。或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:容量、P/E次数、理想使用寿命、当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量。或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;所述方法还包括:获取第三参数;所述第三参数包括:容量、P/E次数和理想使用寿命。然后,基于获取的第一参数和第二参数,或者,基于获取的第一参数、第二参数和第三参数,计算增加的主控写入量、写入放大因子WAF和主控剩余的可写入量。其中,相应的计算公式为:增加的主控写入量=当前的主控写入量–起始主控写入量;WAF=容量*(当前已消耗P/E次数–起始已消耗P/E次数)/增加的主控写入量;主控剩余的可写入量=容量*(P/E次数–当前已消耗P/E次数)/WAF。这样,就采用了上一个预设周期所消耗的P/E次数和所增加的主控写入量来计算WAF,并将计算得到的WAF预测为下一个预设周期的WAF。采用上一个预设周期的数据来预测下一个预设周期的WAF,使得对下一个预设周期的WAF的预测更为准确。并且运用上述更为准确的WAF来计算主控剩余的可写入量,从而使得计算得到的上述主控剩余的可写入量更为准确。之后,预测主控在下一个预设周期的单位时长内可接受写入量W1。其中,预测公式为:W1=主控剩余的可写入量/(理想使用寿命/单位时长–当前已使用寿命/单位时长)。这样,由于W1的预测是基于上述更为准确的主控剩余的可写入量,也就使得W1的预测更为准确。然后,预测闪存中非Swap分区下一个预设周期的单位时长内的写入量W2。预测公式为:W2=增加的主控写入量/((当前已使用寿命–起始寿命)/单位时长)–(当前的Swap写入量–起始Swap写入量)/((当前已使用寿命–起始寿命)/单位时长)。之后,判断W1是否大于W2。如果W1大于W2,设置Swap分区下一个预设周期的单位时长内可写入量WS=W1-W2;如果W1小于等于W2,设置Swap分区下一个预设周期的单位时长内可写入量WS=0。这样,就根据预测的闪存中非Swap分区下一个预设周期的单位时长内的写入量W2与主控下一个预设周期的单位时长内可接受写入量W1的大小关系,禁止或者允许对闪存中的Swap分区的写入。即便在允许的情形下,也控制Swap分区下一个预设周期的单位时长内可写入量。此外,由于没有限制对闪存中非Swap分区的写入,所以用户在需要写入闪存时仍可以写入闪存。本申请实施例对闪存中的Swap分区的写入量进行控制,延长了闪存的实际使用寿命。并且,本申请实施例还允许用户即时写入闪存中的非Swap分区,不影响用户的正常使用。最后,对部分参数进行更新;具体为:将起始已消耗P/E次数更新为当前已消耗P/E次数;将起始主控写入量更新为当前的主控写入量;将起始Swap写入量更新为当前的Swap写入量;将起始寿命更新为当前已使用寿命;计时时长清零。之后,循环执行至开始,再次判断是否为首次运行;非首次运行,将当前时刻作为新的计时起点,从所述新的计时起点重新开始计时;判断计时时长是否达到T,即判断从所述新的计时起点开始的所述计时时长是否大于等于从所述新的计时起点开始的T。根据判断结果,循环执行本方法的相应流程。

若计时时长未达到T,则返回继续判断计时时长是否达到T。根据判断结果,循环执行本方法的相应流程。

此处以图9b为例进一步说明。起始以0时刻为计时起点开始计时。在计时时长为T时,按照本方法的上述流程预测W1和W2。根据W1和W2的比较结果,设置WS。之后,对部分参数进行更新。然后将时刻T设置为新的计时起点,并重新计算新的计时时长。在从新的计时起点至2T时刻时,即从T时刻开始的新的计时时长为T时,按照本方法的上述流程预测W1和W2,根据W1和W2的比较结果,设置WS。之后,对部分参数进行更新。然后将2T时刻设置为新的计时起点,并重新计算新的计时时长。在从新的计时起点2T时刻开始直至3T时,即从2T时刻开始的新的计时时长达到T时,按照上述流程预测W1和W2,根据W1和W2的比较结果,设置WS。之后,对部分参数进行更新。并循环执行。也就是说,在每次经过循环将当前时刻为新的计时起点后,判断从该新的计时起点开始,判断是否发生新的计时时长达到T的事件,若发生了上述事件,则调用相应的流程执行,执行完后按照上述流程进一步循环执行。具体来说,0至T对应着第一周期;以T为计时起点后,将T时刻作为0,那么新的计时体系下的0至T对应着第二周期,即T时刻至2T时刻对应着第二周期;以T为计时起点后,将T时刻作为0,那么新的计时体系下的0至T对应着第三周期,即2T时刻至3T时刻对应着第三周期。上述内容以及图9b所示的内容仅为示意性说明,并不限制本申请实施例的范围。

本申请实施例二中的流程与实施例一中计时时长达到T所对应的流程基本相同,区别仅在于本申请实施例二中是采用了上一个预设周期所消耗的P/E次数和所增加的主控写入量来计算WAF,预测主控在下一个预设周期的单位时长内可接受写入量W1和闪存中非Swap分区下一个预设周期的单位时长内的写入量W2,以及设置Swap分区下一个预设周期的单位时长内可写入量WS;而实施例一中是采用了上一个预设周期或上一个阶段所消耗的P/E次数和所增加的主控写入量来计算WAF,预测主控下一个预设周期或下一个阶段的单位时长内可接受写入量W1和闪存中非Swap分区下一个预设周期或下一个阶段的单位时长内的写入量W2,以及设置Swap分区下一个预设周期或下一个阶段的单位时长内可写入量WS。

本申请实施例二根据主控写入、Swap写入的上一个预设周期的数据,预测下一个预设周期的写入放大因子WAF,提升了WAF的预测准确度;并根据上述预测的写入放大因子WAF来预测主控下一个预设周期的单位时长内可接受写入量W1,进而提升了主控下一个预设周期的单位时长内可接受写入量W1的预测准确度。此外,还根据主控写入、Swap写入的上一个预设周期的数据,预测闪存中非Swap分区下一个预设周期的单位时长内的写入量W2。基于预测后的W1和W2的比较结果,控制Swap分区下一个预设周期的单位时长内可写入量,使得闪存的实际使用寿命尽可能逼近甚至达到理想使用寿命。同时,还可即时响应用户写入闪存的需求。

在无特别说明的情况下,本申请实施例二涉及的相关内容与本申请实施例一中的相关内容相同。此处不再赘述。

实施例三

图7示出了本申请实施例三提供的一种闪存交换分区控制方法的流程图。在本申请实施例三中,不再考虑计时有没有达到T,只考虑是否出现增加的主控写入量大于等于预设阈值N的情形。如图7所示,移动设备的生产厂家预先设置好阈值N,不再预先设置周期T。设置预设阈值N的目的是用于判断主控写入量的增加值是否达到预设阈值N。预设阈值N可以由移动设备的生产厂家在启动该方法之前,根据需要自行设置。该方法开始后,首先判断是否为首次运行。若为首次运行,则将起始主控写入量、起始Swap写入量和起始寿命初始化为0,将起始已消耗P/E次数初始化为闪存已消耗P/E次数;之后,获取当前的主控写入量和起始主控写入量;并计算增加的主控写入量。增加的主控写入量=当前的主控写入量–起始主控写入量。判断增加的主控写入量是否大于等于预设阈值N。若不为首次运行,也获取当前的主控写入量和起始主控写入量;并计算增加的主控写入量。增加的主控写入量=当前的主控写入量–起始主控写入量。判断增加的主控写入量是否大于等于预设阈值N。

如果增加的主控写入量大于等于预设阈值N,则检测闪存的磨损,获取相关参数。相关参数包括但不限于闪存的容量、P/E次数、当前已消耗P/E次数、起始已消耗P/E次数、当前的主控写入量、起始主控写入量、理想使用寿命、当前已使用寿命、起始寿命、当前的Swap写入量和起始Swap写入量。具体来说,上述相关参数包括闪存在上一个阶段的第一参数和当前的第二参数。第一参数包括:容量、P/E次数、理想使用寿命、起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量。或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:容量、P/E次数、理想使用寿命、当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量。或者,所述第一参数包括:起始已消耗P/E次数、起始主控写入量、起始寿命和起始Swap写入量;所述第二参数包括:当前已消耗P/E次数、当前主控写入量、当前已使用寿命和当前Swap写入量;所述方法还包括:获取第三参数;所述第三参数包括:容量、P/E次数和理想使用寿命。然后,基于获取的第一参数和第二参数,或者,基于获取的第一参数、第二参数和第三参数,计算增加的主控写入量、写入放大因子WAF和主控剩余的可写入量。其中,增加的主控写入量=当前的主控写入量–起始主控写入量;WAF=容量*(当前已消耗P/E次数–起始已消耗P/E次数)/增加的主控写入量;主控剩余的可写入量=容量*(P/E次数–当前已消耗P/E次数)/WAF。这样,就采用了上一个阶段所消耗的P/E次数和上一个阶段所增加的主控写入量来计算WAF,并将计算得到的WAF预测为下一个阶段的WAF。采用上一个阶段的数据来预测下一个阶段的WAF,使得对下一个阶段的WAF的预测更为准确。此处的阶段对应着从上一个阶段结束至出现增加的主控写入量大于等于预设阈值N的情形。也就是说,出现增加的主控写入量大于等于预设阈值N情形的时刻对应着上一个阶段刚结束。并且运用上述更为准确的WAF来计算主控剩余的可写入量,从而使得计算得到的上述主控剩余的可写入量更为准确。之后,预测主控下一个阶段单位时长内可接受写入量W1。其中,预测公式为:W1=主控剩余的可写入量/(理想使用寿命/单位时长–当前已使用寿命/单位时长)。这样,由于W1的预测是基于上述更为准确的主控剩余的可写入量,也就使得W1的预测更为准确。然后,预测闪存中非Swap分区下一个阶段单位时长内的写入量W2。预测公式为:W2=增加的主控写入量/((当前已使用寿命–起始寿命)/单位时长)–(当前的Swap写入量–起始Swap写入量)/((当前已使用寿命–起始寿命)/单位时长)。之后,判断W1是否大于W2。如果W1大于W2,设置Swap分区下一个阶段单位时长内可写入量WS=W1-W2;如果W1小于等于W2,设置Swap分区下一个阶段单位时长内可写入量WS=0。这样,就根据预测的闪存中非Swap分区下一个阶段单位时长内的写入量W2与主控下一个阶段单位时长内可接受写入量W1的大小关系,禁止或者允许对闪存中的Swap分区的写入。即便在允许的情形下,也控制Swap分区下一个阶段单位时长内可写入量。此外,由于没有限制对闪存中非Swap分区的写入,所以用户在需要写入闪存时仍可以写入闪存。本申请实施例对闪存中的Swap分区的写入量进行控制,延长了闪存的实际使用寿命。并且,本申请实施例还允许用户即时写入闪存中的非Swap分区,不影响用户的正常使用。最后,对部分参数进行更新;具体为:将起始已消耗P/E次数更新为当前已消耗P/E次数;将起始主控写入量更新为当前的主控写入量;将起始Swap写入量更新为当前的Swap写入量;将起始寿命更新为当前已使用寿命。之后,循环执行至开始,再次判断是否为首次运行;非首次运行,获取当前的主控写入量和起始主控写入量;并计算增加的主控写入量。增加的主控写入量=当前的主控写入量–起始主控写入量。判断增加的主控写入量是否大于等于预设阈值N。根据判断结果,循环执行本方法的相应流程。

如果增加的主控写入量小于预设阈值N,则继续获取当前的主控写入量和起始主控写入量,并计算增加的主控写入量以及判断增加的主控写入量是否大于等于预设阈值N。根据判断结果,循环执行本方法的相应流程。

此处以图9c为例进一步说明。计算增加的主控写入量,并判断增加的主控写入量是否大于等于N。其中,起始主控写入量初始化为0;增加的主控写入量=当前的主控写入量–起始主控写入量。增加的主控写入量首次大于等于预设阈值N的时刻为t1。然后按照本方法的上述流程预测W1和W2,根据W1和W2的比较结果,设置WS。之后,对部分参数进行更新,尤其将起始主控写入量更新为t1时刻当前的主控写入量。然后重新计算增加的主控写入量,并判断增加的主控写入量是否大于等于N。在t2时刻时,增加的主控写入量再次等于预设阈值N。然后按照本方法的上述流程预测W1和W2,根据W1和W2的比较结果,设置WS。之后,对部分参数进行更新,尤其将起始主控写入量更新为t2时刻当前的主控写入量。然后重新计算增加的主控写入量,并判断增加的主控写入量是否大于等于N。在t3时刻时,增加的主控写入量又等于预设阈值N。然后按照本方法的上述流程预测W1和W2,根据W1和W2的比较结果,设置WS。之后,对部分参数进行更新,尤其将起始主控写入量更新为t3时刻当前的主控写入量。然后重新计算增加的主控写入量,并判断增加的主控写入量是否大于等于N。在t4时刻时,增加的主控写入量又等于预设阈值N。然后按照本方法的上述流程预测W1和W2,根据W1和W2的比较结果,设置WS。之后,对部分参数进行更新,尤其将起始主控写入量更新为t4时刻当前的主控写入量。之后,进一步计算增加的主控写入量并判断增加的主控写入量是否大于等于N。根据判断结果,按照本方法的上述流程循环执行。具体来说,0至t1对应着第一阶段;t1至t2对应着第二阶段;t2至t3对应着第三阶段;t3至t4对应着第四阶段。上述内容以及图9c所示的内容仅为示意性说明,并不限制本申请实施例的范围。

本申请实施例三中的流程与实施例一中增加的主控写入量大于等于N所对应的流程基本相同,区别仅在于本申请实施例三中是采用了上一个阶段所消耗的P/E次数和所增加的主控写入量来计算WAF,预测主控在下一个阶段的单位时长内可接受写入量W1和闪存中非Swap分区下一个阶段的单位时长内的写入量W2,以及设置Swap分区下一个阶段的单位时长内可写入量WS;而实施例一中是采用了上一个预设周期或上一个阶段所消耗的P/E次数和所增加的主控写入量来计算WAF,预测主控下一个预设周期或下一个阶段的单位时长内可接受写入量W1和闪存中非Swap分区下一个预设周期或下一个阶段的单位时长内的写入量W2,以及设置Swap分区下一个预设周期或下一个阶段的单位时长内可写入量WS。本申请实施例三中下一个阶段的单位时长与上一个阶段的单位时长相同。比如,上一个阶段的单位时长为1天,则下一个阶段的单位时长也为1天。

本申请实施例三根据主控写入、Swap写入的上一个阶段的数据,预测主控下一个阶段的写入放大因子WAF,提升了WAF的计算准确度;并根据上述预测的写入放大因子WAF来预测主控下一个阶段单位时长内可接受写入量W1,进而提升了主控下一个阶段单位时长内可接受写入量W1的预测准确度。此外,还根据主控写入、Swap写入的上一个阶段的数据,预测闪存中非Swap分区下一个阶段单位时长内的写入量W2。基于预测后的W1和W2的比较结果,控制Swap分区后续单位时长内可写入量,使得闪存的实际使用寿命尽可能逼近甚至达到理想使用寿命。同时,还可即时响应用户写入闪存的需求。

在无特别说明的情况下,本申请实施例二涉及的相关内容与本申请实施例一中的相关内容相同。此处不再赘述。

图8所示为本申请提供的一种移动设备800。示例的,移动设备800包括至少一个处理器801和存储器802。其中,处理器801与存储器802耦合,本申请实施例中的耦合可以是通信连接,可以是电性,或其它的形式。具体的,存储器802用于存储程序指令。处理器801用于调用存储器802中存储的程序指令,使得移动设备800执行本申请实施例一至实施例三中任意一项提供的一种闪存交换分区控制方法中由移动设备800所执行的步骤。应理解,移动设备800可以用于实现本申请实施例一至实施例三中任意一项提供的一种闪存交换分区控制方法,相关特征可以参照上文,此处不再赘述。

本申请提供一种包含指令的计算机程序产品,当所述计算机程序产品在移动设备上运行时,使得所述移动设备执行本申请实施例一至实施例三中任意一项提供的一种闪存交换分区控制方法中由移动设备所执行的步骤。

本申请提供一种计算机可读存储介质,包括指令,当所述指令在移动设备上运行时,使得所述移动设备执行本申请实施例提供的一种闪存交换分区控制方法中由移动设备所执行的步骤。

所属领域的技术人员可以清楚地了解到本申请实施例可以用硬件实现,或硬件与软件的方式实现。当使用硬件与软件实现,可以将上述功能存储在计算机可读介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何在本申请实施例揭露的技术范围内的变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号