使用存储使用率环的选择性闪存压缩/解压缩的制作方法

文档序号:16990021发布日期:2019-03-02 00:53阅读:143来源:国知局
使用存储使用率环的选择性闪存压缩/解压缩的制作方法

非易失性存储器(诸如闪速存储)被并入各种类型的计算设备中,包括便携式计算设备(例如,蜂窝电话、智能电话、平板计算机、便携式数字助理(pda)、便携式游戏控制台、可穿戴设备以及其它电池供电的设备)。为了满足用户需求,在便携式计算设备中的nand闪速存储的容量不断增加。然而,较大的nand闪速存储显著增加了便携式计算设备的成本。对成本压力的常见解决方案是实现文件系统压缩,其使用户数据尽可能的紧凑。虽然压缩解决方案可以临时扩展nand闪速存储的有限容量,但对数据进行压缩/解压缩的过程会对便携式计算设备的性能产生负面影响并增加功耗,这会不期望地降低电池寿命。

因此,需要用于在不会不利地影响设备性能和用户体验的情况下选择性地启用对闪速存储数据的压缩/解压缩以增加存储容量的改进的系统和方法。



技术实现要素:

公开了用于选择性地对闪速存储数据进行压缩/解压缩的系统、方法和计算机程序。系统的实施例包括:压缩/解压缩组件、闪存设备、与所述闪存设备通信的闪存控制器,以及与所述压缩/解压缩组件和所述闪存控制器相通信的存储驱动器。所述存储驱动器被配置为根据包括较高使用率阈值(usagethreshold)和较低使用率阈值的存储使用率环(collar),经由所述压缩/解压缩组件来选择性地控制对存储在所述闪存设备中的数据的压缩和解压缩。

另一实施例是一种用于选择性地对闪速存储数据进行压缩/解压缩的方法。所述方法包括定义与闪存设备相关联的存储使用率环。所述存储使用率环包括较高使用率阈值和较低使用率阈值。如果存储使用率超过存储使用率环的较高使用率阈值,则通过以下方式来增加所述闪存设备上的空闲空间的量:从所述闪存设备读取未经压缩的数据的第一部分,对所述未经压缩的数据的第一部分进行压缩以生成经压缩的数据的第一部分,以及将所述经压缩的数据的第一部分重写到所述闪存设备。如果存储使用率降低到所述存储使用率环的所述较低使用率阈值以下,则通过以下方式来减少所述闪存设备上的所述空闲空间的量:从所述闪存设备读取经压缩的数据的第二部分,对所述经压缩的数据的第二部分进行解压缩以生成未经压缩的数据的第二部分,以及将所述未经压缩的数据的第二部分重写到所述闪存设备。

附图说明

在附图中,除非另外指出,否则类似的附图标记在各个视图中指代类似的部分。对于具有诸如“102a”或“102b”的字母字符标记的附图标记,字母字符标记可以区分存在于同一附图中的两个类似部分或元素。当希望附图标记涵盖在所有附图中具有相同附图标记的所有部分时,可以省略针对附图标记的字母符号标记。

图1是用于使用存储使用率环来提供选择性闪存压缩/解压缩的系统的实施例的方块图。

图2是示出用于控制对闪存设备中的数据的压缩/解压缩的存储使用率环的示例性实施例的方块图。

图3a示出了图1中的系统的初始控制模式,在初始控制模式中,在当前存储使用率低于存储使用率环时,在不进行压缩的情况下将数据写到闪存设备。

图3b示出了图1中的系统的第二控制模式,在第二控制模式中,在当前存储使用率超过存储使用率环的较低阈值时发起后台清理过程。

图3c示出了图1中的系统的第三控制模式,在第三控制模式中,在当前存储使用率超过存储使用率环的较高阈值时,在进行压缩的情况下将数据写到闪存设备。

图3d示出了图1中的系统的第四控制模式,在第四控制模式中,在当前存储使用率降低到存储使用率环的较低阈值以下时,将先前经压缩的数据作为未经压缩的数据重写到闪存设备。

图4是示出用于使用存储使用率环来提供选择性闪存压缩/解压缩的方法的实施例的流程图。

图5是示出闪存设备中的经压缩和未经压缩的数据的示例性方块的数据图。

图6是用于并入图1的系统的便携式计算设备的实施例的方块图。

具体实施方式

本文中所使用的“示例性的”一词意指“用作示例、实例或说明”。在本文中被描述为“示例性的”的任何方面不一定被解释为比其它方面优选的或者有优势。

在本说明书中,术语“应用”还可以包括具有可执行内容的文件,诸如:对象代码、脚本、字节代码、标记语言文件和补丁。此外,本文涉及的“应用”还可以包括本质上不可执行的文件,诸如可能需要打开的文档或需要访问的其它数据文件。

术语“内容”还可以包括具有可执行内容的文件,诸如:对象代码、脚本、字节代码、标记语言文件和补丁。此外,涉及本文的“内容”还可以包括本质上不可执行的文件,诸如可能需要打开的文档或需要访问的其它数据文件。

如在本说明书中所使用的,术语“组件”、“数据库”、“模块”、“系统”等意指涉及计算机相关的实体,或者是硬件、固件、硬件和软件的组合、软件、或者是在执行中的软件。例如,组件可以是但不限于是运行在处理器上的过程、处理器、对象、可执行程序、执行中的线程、程序、和/或计算机。举例说明,在计算设备上运行的应用和计算设备两者都可以是组件。一个或多个组件可以存在于过程和/或执行中的线程之内,以及组件可以位于一台计算机上和/或分布在两台或更多台计算机之间。此外,这些组件可以从其上存储有各种数据结构的各种计算机可读介质执行。组件可以通过本地和/或远程过程,诸如根据具有一个或多个数据分组的信号(例如,来自一个组件的数据,该组件与在本地系统、分布式系统中的另一组件、和/或跨诸如互联网的网络通过信号与另一系统交互)来进行通信。

在本说明书中,术语“通信设备”、“无线设备”、“无线电话”、“无线通信设备”和“无线手持设备”可互换使用。随着第三代(“3g”)无线技术和第四代(“4g”)的出现,更大的带宽可用性已使更多的便携式计算设备具有更加多种多样的无线能力。因此,便携式计算设备可以包括蜂窝电话、寻呼机、pda、智能电话、导航设备,或具有无线连接或链路的手持计算机。

图1示出了用于使用存储使用率环来选择性地压缩/解压缩闪速存储数据的系统100。系统100包括电耦合到闪存设备(例如,nand闪存104)和易失性随机存取存储器(vram)(诸如动态随机存取存储器(dram)106)的片上系统(soc)102。soc102可以经由控制总线126和数据总线128来电耦合到nand闪存104。soc102可以经由总线130来电耦合到dram106。系统100可以在任何计算设备中来实现,任何计算设备包括个人计算机、工作站、服务器、便携式计算设备(pcd)(诸如蜂窝电话、智能电话、便携式数字助理(pda)、便携式游戏控制台、导航设备、平板电脑、可穿戴设备(诸如运动手表、健身追踪设备等)、或者其它电池供电的支持网络的设备)。

soc102包括各种片上组件,其包括经由soc总线120来互连的用于执行操作系统(o/s)122的中央处理单元(cpu)110、dram控制器112、静态随机存取存储器(sram)116、只读存储器(rom)114、数据压缩组件118以及闪存控制器108。soc102可以包括从dram106和nand闪存104请求存储器资源的一个或多个存储器客户端。存储器客户端可以包括一个或多个处理单元(例如,中央处理单元(cpu)110、图形处理单元(gpu)、数字信号处理器(dsp)等)、视频编码器或请求向nand闪存104和dram106的读/写访问的其它客户端。

在图1中所示出的实施例中,虽然nand闪存104是与soc102分开的,但是在其它实施例中,nand闪存104可以物理地附着或堆叠在soc管芯(die)上并且存在于与soc管芯相同的物理封装中。如在本领域中已知地,nand闪存104可以包括控制器和用于存储物理页的主阵列。存在于soc102上的cpu110经由闪存控制器108以逻辑页为单位来读和/或写数据到nand闪存104。连同由位于闪存设备104内或在soc102中的纠错码(ecc)模块生成的/校验的纠错比特,数据被存储以及从主阵列的物理页被取回。

如在图1中所进一步示出地,在cpu110上运行的软件包括用于选择性地启用对存储在nand闪存104中的数据的压缩/解压缩的各种组件。应理解,选择性闪存压缩/解压缩提供了以下能力:增加nand闪存104的存储容量而不会对设备性能和用户体验造成负面影响。cpu110可操作地耦合到数据压缩组件118。以这种方式,cpu110上的软件控制写入nand闪存的数据是要由数据压缩组件118压缩还是保持不被压缩。在实施例中,数据压缩组件118包括用于执行数据压缩和解压缩的分开的硬件单元。在另一实施例中,cpu110可以执行数据压缩和解压缩。

在图1的实施例中,cpu110经由存储使用率监测器132、选择性压缩/解压缩组件134、存储使用率环136和文件系统/存储驱动器124来提供选择性闪存压缩/解压缩。存储使用率环136定义与nand闪存104的容量相关联的较低使用率阈值和较高使用率阈值。图2示出了存储使用率环136的示例性实施例。nand闪存104的存储使用率可以表示为沿y轴从零到满容量(100%)的百分比。较低使用率阈值206和较高使用率阈值204定义环202。可以对针对较低和较高使用率阈值206和204的百分比值进行预先定义、计算或编程。应理解,阈值206和204被确定以提供用于扩展nand闪存104的存储容量的最佳窗口(通过写入经压缩的数据),同时使由于对数据压缩的过度使用而导致的功耗和等待时间最小化。如下文更详细描述地,在cpu110上运行的文件系统/存储驱动器124选择性地控制压缩和解压缩,以便通常将存储容量维持在环202内。

使用率监测器132包括用于在系统100的操作期间监测nand闪存104的存储容量的逻辑单元。使用率监测器132可以是运行在os122上的低优先级任务,或者是具有监测功能的hw块。使用率监测器132将当前存储使用率百分比与较低使用率阈值206和较高使用率阈值204进行比较。基于周期性的比较,使用率监测器132跟踪nand闪存104的当前存储容量何时在范围208内(即,在较低使用率阈值206以下),在范围210(即,在较低使用率阈值206与较高使用率阈值204之间的环202)内,或者在范围212内(即,在较高使用率阈值204之上)。基于此,选择性压缩/解压缩组件134可以根据由使用率监测器132所确定的当前存储使用率来选择各种控制模式。

图3a-图3d示出了四种示例性控制模式。图3a示出了系统100的初始控制模式,初始控制模式在当前存储使用率最初低于较低使用率阈值206时是激活的。在初始控制模式中,文件系统/存储驱动器124可以最初在不进行压缩的情况下将数据写到nand闪存104,以避免与执行压缩算法相关联的等待时间和功耗。当未经压缩的数据被写到nand闪存104时,存储使用率可能超过较低使用率阈值206(图3b)。当最初超过较低使用率阈值206时,文件系统/存储驱动器124可以发起要由选择性压缩/解压缩134执行的后台(即,低优先级)清理过程。在一个实施例中,清理过程分段地遍历在nand文件系统目录中的节点以确定将成为用于压缩的候选的文件。向文件系统机制引入标志以指示文件是否是已以压缩格式来存储的。清理过程可以基于例如文件类型、文件“修改日期/时间”、文件大小等来确定用于压缩的候选文件。例如,某些文件类型可以被指定为“可压缩的”而其它文件类型可以被指定为“不可压缩的”。“修改日期/时间”可以指示当前未使用的或最近未被访问的文件,其可以是用于压缩的候选。此外,具有大尺寸的文件可以利用压缩来提供较多益处。在另一个实施例中,清理过程分段地遍历存储器中的块。报头可以用于以压缩格式写到块的数据。下文更详细地描述了示例性报头格式(图5)。

如在图3c中所示出地,随着文件在没有压缩的情况下继续被写到nand闪存104,当前存储使用率可能超过较高使用率阈值204。在当前存储使用率超过较高使用率阈值204时,文件系统/闪存驱动器124可以确定应增加nand闪存104上的空闲空间的量,以便将存储使用率维持在环202中。为了增加空闲空间的量,文件系统/闪存驱动器124可以调用选择性压缩/解压缩组件134以通过后台清理过程来选择被识别为压缩候选的一个或多个文件。候选文件中的未经压缩的数据被从nand闪存104读取,由数据压缩组件118来压缩,并被重写到nand闪存104以生成空闲空间。

如在图3d中所示出地,如果当前存储使用率降低到较低使用率阈值206以下(例如,由于文件被删除),则文件系统/闪存驱动器124可以确定可以减少在nand闪存104上的空闲空间的量。为了减少空闲空间的量,文件系统/闪存驱动器124可以调用选择性压缩/解压缩组件134以选择要被解压缩的一个或多个经压缩的文件。经压缩的数据被从nand闪存104读取,由数据压缩组件118来解压缩,以及被重写到nand闪存。应理解,对用于解压缩的文件的选择可以考虑“修改日期/时间”和文件大小以利于较频繁使用的文件不被压缩。

图4是示出用于使用存储使用率环136来提供选择性闪存压缩/解压缩的方法400的实施例的流程图。在方块402处,确定与文件系统/存储驱动器相关联的存储使用率环136。用于较低使用率阈值206和较高使用率阈值204的值可以被预先确定,以及被存储在存储器中(在闪存控制器108或者其它中)。应理解,在系统100的操作期间,还可以基于变化的条件、用例等来计算这些值。较低使用率阈值206和/或较高使用率阈值204可以被单独地或共同地调整以管理在可用的存储容量、压缩和解压缩等待时间以及用户体验之间的固有权衡。

使用率监测器132周期性地检查nand闪存104中的存储使用率并将其与较低使用率阈值206和较高使用率阈值204进行比较。如果当前存储使用率超过较高使用率阈值204(判决方块404),则闪存控制器108增加在nand闪存104上的空闲空间的量(方块406)。文件系统/存储驱动器124可以控制闪存控制器108以读取存储在nand闪存104中的未经压缩的数据的第一部分。未经压缩的数据的第一部分可以由数据压缩组件118来压缩以生成经压缩的数据的第一部分。将经压缩的数据的第一部分重写到nand闪存104。计时器(方块408)可以用于周期性地检查存储使用率,以及将流程返回到判决方块404。

参照判决方块404,如果当前存储使用率未超过较高使用率阈值204,则文件系统/存储驱动器124可以确定当前存储使用率是否已降至较低使用率阈值206以下(判决方块410)。如果当前存储使用率低于较低使用率阈值206,则闪存控制器108可以减少nand闪存104上的空闲空间的量(方块412)。闪存控制器108可以从nand闪存104读取经压缩的数据的第二部分。经压缩的数据的第二部分可以被解压,以生成未经压缩的数据的第二部分。可以将未经压缩的数据的第二部分重写到nand闪存104。计时器(方块408)可以用于周期性地检查存储使用率并将流程返回到判决方块404。

图5是示出nand闪存104中的经压缩的和未经压缩的数据的示例性方块的数据图500。方块504包括未经压缩的数据506。方块502示出了用于对数据进行压缩的示例性实现方案。在压缩之后,方块502包括经压缩的数据508,留下空闲空间512。经压缩的数据508可以包括压缩元数据(例如,压缩标志校验和510)。当选择用于压缩或解压缩的数据的块时,选择性压缩/解压缩组件134可以针对报头中的预先确定的压缩标志进行检查。如果在报头位置中不存在标志,则数据不是以压缩格式来存储的(方块506),以及此块可以被指示为用于压缩的潜在目标。如果在报头位置中存在该标志,则选择性压缩/解压缩组件134可以进一步计算该块中的数据的校验和。如果所计算的校验和与在报头中的校验和相匹配,则选择性压缩/解压缩组件134可以确定数据是以压缩格式来存储的,并确定此块是用于解压缩的潜在目标。

如上文所提及地,系统100可以被并入任何期望的计算系统中。图6示出了被并入到示例性便携式计算设备(pcd)600的系统100。将容易理解,系统100的某些组件可以包括在soc322上(例如,数据压缩组件118和闪存控制器108),而其它组件(例如,dram106、nand闪存104)可以是耦合到soc322的外部组件。soc322可以包括多核cpu602。多核cpu602可以包括第零核610、第一核612和第n核614。这些核中的一个核可以包括例如图形处理单元(gpu),而其它核中的一个或多个核包括cpu。

显示控制器328和触摸屏控制器330可以耦合到cpu602。进而,在片上系统322外部的触摸屏显示器606可以耦合到显示控制器328和触摸屏控制器330。

图6还示出了视频编码器334(例如,逐行倒相(pal)编码器、顺序色彩存储(secam)编码器、或国家电视系统委员会(ntsc)编码器)耦合到多核cpu602。另外,视频放大器336耦合到视频编码器334和触摸屏显示器606。此外,视频端口338也耦合到视频放大器336。如在图6中所示出地,通用串行总线(usb)控制器340耦合到多核cpu602。此外,usb端口342耦合到usb控制器340。

此外,如在图6中所示出地,数字摄像头348可以耦合到多核cpu602。在示例性方面中,数字摄像头348是电荷耦合元件(ccd)摄像头或互补金属氧化物半导体(cmos)摄像头。

如在图6中所进一步示出地,立体声音频编码器-解码器(codec)350可以耦合到多核cpu602。此外,音频放大器352可以耦合到立体声音频codec350。在示例性方面中,第一立体声扬声器354和第二立体声扬声器356耦合到音频放大器352。图6示出了麦克风放大器358也可以耦合到立体声音频codec350。另外,麦克风360可以耦合到麦克风放大器358。在特定方面中,频率调制(fm)无线电调谐器362可以耦合到立体声音频codec350。此外,fm天线364耦合到fm无线电调谐器362。此外,立体声头戴式受话器366可以耦合到立体声音频codec350。

图6进一步示出射频(rf)收发机368可以耦合到多核cpu602。rf开关370可以耦合到rf收发机368和rf天线372。小型键盘204可以耦合到多核cpu602。此外,具有麦克风的单声道耳机376可以耦合到多核cpu602。此外,振动器设备378可以耦合到多核cpu602。

图6还示出了电源380可以耦合到片上系统322。在特定方面中,电源380是向需要电力的pcd600的各个组件供电的直流(dc)电源。另外,在特定方面中,电源是可再充电的dc电池或dc电源,其是从连接到交流(ac)电源的ac到dc变压器得到的。

图6进一步指示pcd600还可以包括可以用于接入数据网络(例如,局域网、个域网或任何其它网络)的网卡388。网卡388可以是蓝牙网卡、wifi网卡、个域网(pan)卡、个域网超低功率技术(peanut)网卡、电视/电缆/卫星调谐器、或在本领域中已知的任何其它网卡。另外,网卡388可以并入芯片中,即,网卡388可以是在芯片中的完整解决方案,以及可以不是分开的网卡388。

如在图6中所描绘地,触摸屏显示器606、视频端口338、usb端口342、摄像头348、第一立体声扬声器354、第二立体声扬声器356、麦克风360、fm天线364、立体声头戴式受话器366、rf开关370、rf天线372、小型键盘374、单声道耳机376、振动器378和电源380可以处于片上系统322外部。

应理解,本文中所描述的方法步骤中的一个或多个方法步骤可以在存储器中作为计算机程序指令(诸如上述模块)来存储。这些指令可以由任何适当的处理器结合或配合对应的模块来执行,以便执行本文中所描述的方法。

为了使本发明如所描述地进行工作,在本说明书中所描述的过程或过程流中的某些步骤自然地先于其它步骤。然而,如果这样的次序或顺序并不改变本发明的功能,则本发明并不局限于所描述的步骤的次序。也就是说,要认识到,在不脱离本发明的范围和精神的情况下,一些步骤可以在其它步骤之前、之后或与其它步骤平行(基本上同时)执行。在一些情况下,可以在不脱离本发明的情况下省略或不执行某些步骤。此外,诸如“此后”、“然后”、“接下来”等的词语并不旨在限制步骤的次序。这些词语仅用于引导读者通读对示例性方法的描述。

另外,例如,在编程领域的一名普通技术人员能够基于在本说明书中的流程图和相关联的描述,来编写计算机代码或识别适当的硬件和/或电路,以便轻而易举地实现所公开的发明。

因此,特定的程序代码指令或详细硬件设备的集合的公开内容不被认为是对于对如何实现和使用本发明的充分理解所必要的。在上文的描述中并且结合可以示出各个过程流的附图,较详细地解释了所要求保护的计算机实现的过程的发明功能。

在一个或多个示例性方面中,所描述的功能可以在硬件、软件、固件或其任何组合中来实现。如果在软件中实现,则功能可以作为在计算机可读介质上的一个或多个指令或代码被存储或传输。计算机可读介质包括计算机存储介质和通信介质两者,所述通信介质包括促进将计算机程序从一个地方传送到另一地方的任何介质。存储介质可以是可以由计算机存取的任何可用的介质。通过举例而非限制性的方式,这样的计算机可读介质可以包括ram、rom、eeprom、nand闪存、nor闪存、m-ram、p-ram、r-ram、cd-rom或者其它光盘存储、磁盘存储或者其它磁存储设备、或者可以用于以指令或者数据结构的形式携带或者存储期望的程序代码并且可以由计算机来存取的任何其它介质。

另外,任何连接都被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤光缆、双绞线、数字用户线(“dsl”)或者诸如红外线、无线电和微波的无线技术,从网站、服务器或者其它远程源发送软件,那么同轴电缆、光纤光缆、双绞线、dsl或者诸如红外线、无线电和微波的无线技术包含在介质的定义中。

如本文中所使用地,磁盘和碟包括压缩碟(“cd”)、激光碟、光碟、数字多功能碟(“dvd”)、软盘和蓝光碟,其中磁盘通常磁性地复制数据,而碟则利用激光来光学地复制数据。上文的组合也应该包括在计算机可读介质的范围之内。

在不脱离本发明的精神和范围的情况下,替代的实施例对本发明所涉及领域的普通技术人员而言将变得显而易见。因此,虽然已示出并详细描述了所选择的各方面,但将理解,如由所附权利要求书所定义地,可以在不脱离本发明的精神和范围的情况下进行各种替换和改变。

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