CN107924350B - 电子设备及其数据压缩方法 - Google Patents
电子设备及其数据压缩方法 Download PDFInfo
- Publication number
- CN107924350B CN107924350B CN201680047598.7A CN201680047598A CN107924350B CN 107924350 B CN107924350 B CN 107924350B CN 201680047598 A CN201680047598 A CN 201680047598A CN 107924350 B CN107924350 B CN 107924350B
- Authority
- CN
- China
- Prior art keywords
- page
- data
- compressed
- electronic device
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/14—Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Abstract
公开了一种电子设备及其数据压缩方法。根据本发明的电子设备的数据压缩方法,该方法包括以下步骤:压缩页面;确定包括在压缩的页面中的数据是否存储在存储器中;以及当确定的结果显示包括在压缩的页面中的数据与先前存储的数据相同时,将压缩的页面与先前存储在存储器中的数据合并。因此,电子设备可以防止包括相同或相似数据的页面被多次存储在交换区域中,从而提升存储器保证效率。
Description
技术领域
本公开涉及一种电子设备及其数据压缩方法。更具体地,本公开提出了一种用于有效地管理存储器的电子设备及其数据压缩方法。
背景技术
为了有效地管理操作系统(operating system,OS)的存储器,使用用于增加可用存储器的存储器冗余去除技术。
例如,交换是OS定期检查存储器并将属于正在存储器上执行的过程以及预期在一段时间内将不会执行的过程移动到预设的交换区域,从而保证可用存储器的技术。
然而,存在由于将过程从存储器移动到交换区域的换入(swap-in)和将过程从交换区域移动到存储器的换出(swap-out)而生成的开销的问题。此外,由于在使用基于闪存的存储单元的设备中使用交换,所以可能存在闪速存储器的寿命减少的问题。
同时,为了解决前述问题,使用了压缩换出的页面、将页面存储在系统存储器中、在换入的情况下恢复压缩以及使用恢复的页面的方法。
然而,由于压缩数据被存储在系统存储器中,所以即使采用这种方法仍存在增加了系统存储器的使用的问题。
因此,需要考虑能够减少I/O开销并且还将系统存储器的使用维持在特定水平的方法。
技术问题
本公开提供了一种电子设备及其数据压缩方法,该电子设备能够在换出的页面将被压缩和存储的情况下减少包括相同数据的页面的冗余存储,以便有效地管理存储器。
技术方案
根据本公开实施例的电子设备的数据压缩方法可以包括以下步骤:压缩页面;确定包括在压缩的页面中的数据是否已经存储在存储器中;以及如果包括在压缩的页面中的数据与先前存储在存储器中的数据相同,则将压缩的页面合并到先前存储的数据中。
此外,合并步骤可以包括将压缩的页面映射到其中包括先前存储的数据的存储器的页面。
同时,数据压缩方法可以进一步包括以下步骤:如果包括在压缩的页面中的数据还没有存储在存储器中,则分配存储器,并且将压缩的页面存储在所分配的存储器中。
此外,压缩步骤可以包括:将包括在页面中的预设数量的特定比特改变为特定值,并且对包括改变为特定值的特定比特的页面进行压缩。
同时,合并步骤可以包括:映射包括在改变为特定值之前的特定比特中的原始数据的值、或原始数据的值已经被存储的地址,并且将压缩的页面合并到先前存储的数据中。
此外,包括在页面中的预设数量的特定比特可以是根据包括在页面中的数据而包括在页面中的预定位置中的比特或包括在可变位置中的比特。
同时,根据本公开的实施例的电子设备可以包括:存储器,其被配置为存储数据;以及控制器,其被配置为压缩页面、确定包括在压缩的页面中的数据是否已经存储在存储器中、并且如果包括在压缩的页面中的数据与先前存储在存储器中的数据相同则将压缩的页面合并到先前存储的数据中。
此外,控制器被配置为,将压缩的页面映射到其中包括先前存储的数据的存储器的页面。
同时,控制器被配置为,如果包括在压缩的页面中的数据还没有存储在存储器中,则分配存储器区域,并且将压缩的页面存储在所分配的存储器区域中。
此外,控制器被配置为,将页面中包括的预设数量的特定比特改变为特定值,并且对包括改变为特定值的特定比特的页面进行压缩。
同时,控制器被配置为,映射包括在改变为特定值之前的特定比特中的原始数据的值、或原始数据的值已经被存储的地址,并且将压缩的页面合并到先前存储的数据中。
此外,包括在页面中的预设数量的特定比特可以是根据包括在页面中的数据而包括在页面中的预定位置中的比特或包括在可变位置中的比特。
发明的有益效果
根据本公开的实施例,尽管增加了换出页面的数量,但是电子设备可以通过避免多次将包括相同或相似数据的页面存储在交换区域中来增加存储器保证(memory-securing)效率。
附图说明
图1是示出通常将压缩的页面存储在交换区域中的方法的图,
图2是示出根据本公开的实施例的,将压缩的页面存储在交换区域中的方法的图,
图3a是示出通过分别压缩相似页面而生成的压缩数据的图,
图3b是示出根据本公开的实施例的,将压缩的页面存储在交换区域中的方法的图,
图3c和图3d是示出根据本公开的实施例的被改变为相同页面的页面的图,
图4是示出根据本公开的实施例的,能够存储在电子设备中的页面帧编号、页面存储地址和索引号映射表的图,
图5是示出根据本公开的实施例的数据压缩方法的流程图,
图6是具体示出根据本公开实施例的数据压缩方法的流程图,
图7是示出根据本公开的实施例的电子设备的构造的框图,
图8是示出根据本公开的实施例的,用于电子设备确定魔术比特的方法的流程图,以及
图9a和图9b是用于示出根据本公开的实施例的压缩分割的页面的方法的图。
具体实施方式
本实施例可以以各种方式进行修改并且可以具有多个实施例。具体实施例将在附图中被示出并且将在详细描述中被描述。然而应当理解,本发明的范围并不限于具体的实施例,而是具体的实施例包括所有包括在所公开的精神和技术范围内的修改、等同和/或替换。在描述实施例时,如果认为已知技术使主题不必要地模糊,则将省略对已知技术的详细描述。
诸如第一和第二的术语可能被用来描述各种元件,但是这些元件不应该被术语所限制。这些术语仅用于区分一个元件和另一个元件。
本申请中使用的术语仅用于描述特定实施例,并不旨在限制权利的范围。除非在上下文中另外清楚地定义,否则单数的表达包括复数的表达。在本申请中,诸如“包括”或“具有”的术语旨在指定存在说明书中描述的特性、数字、步骤、操作、元件或部件,或者它们的组合,并且不应该应理解为它们预先排除了一个或多个其他特性、数字、步骤、操作、元件、部件或它们的组合的存在或可能的添加。
在实施例中,“模块”或“单元”执行至少一个功能或操作,并且可以通过硬件或软件或者硬件和软件的组合来实施。此外,多个“模块”或多个“单元”可以被集成到至少一个模块中,而不是可能需要被实施为一个特定硬件的“模块”或“单元”,并且可以被实施为至少一个处理器(未示出)。
图1是示出通常将压缩的页面存储在交换区域中的方法的图。
一般而言,为了顺利地执行由系统请求的存储器分配,电子设备的内核是要保证特定水平或更多的可用存储器。因此,内核定期检查系统的可用存储器。当可用存储器降到特定水平或更少时,内核驱动称为交换守护进程的线程,从而能够保证可用存储器。
交换守护进程响应于来自内核的请求而唤醒,并且可以通过将属于正在使用的页面、和很久以前使用的页面存储在诸如硬盘的二级储存器中,并且从存储器中删除该页面,来保证可用存储器。
页面是在虚拟地址空间中具有固定长度的连续部分,并且意味着形成虚拟地址空间的基本单元。一般而言,页面可能具有4kb的长度。
在交换守护进程执行将很久以前使用的页面存储在二级储存器中的操作的同时,可能会产生巨大的I/O开销。解决I/O开销的方案包括通过压缩进行交换。
在通过压缩进行交换时,当交换守护进程执行换出时,它不会将很久以前使用的页面存储在二级存储器中。交换守护进程可以压缩很久以前使用的页面,并将很久以前使用的页面存储在系统存储器的分配的存储器池中。例如,存储器池可以意味着系统存储器的某些区域。
在这种情况下,将压缩的页面存储在系统存储器中仅仅是实施例。在一些实施例中,压缩的页面可以被存储在诸如磁盘的二级存储器或诸如RAM的主储存器中。
在下文中,基于其中压缩的页面被存储在系统存储器中的实施例来描述正在实施的发明的方法。
此外,当交换守护进程将压缩的页面存储在存储器池中时,如果响应于对于页面的读取/写入请求而执行换入,则交换守护进程还可以将用于存储压缩的页面的元数据存储为压缩之前的状态。
因为I/O开销减少并且通过前述方法来压缩和存储页面,所以可用存储器也增加。
然而,如果换出页面的数量增加,则系统存储器的使用也增加,所以通过换出的存储器保证效率可能恶化。
具体地,如图1所示,电子设备可以通过压缩很久以前使用的页面100和要被换出的对象来生成压缩的页面110。此外,电子设备可通过将压缩的页面110存储在交换区域120(例如,系统存储器)中来增加可用存储器。
尽管与压缩的页面110的内容相同内容的数据110-1和110-2先前已经存储在交换区域120中,但是电子设备再次将压缩的页面110存储在交换区域120中。
因此,如果如上所述换出页面的数量增加,则由于相同内容的数据被多次存储在交换区域120中,通过换出的存储器保证效率恶化。
在下文中,参考图2描述在解决问题的同时能够有效地保证可用存储器的方法。
图2是示出根据本公开的实施例的在交换区域中存储压缩的页面的方法的图。
具体地,电子设备可以将从上次使用起经过预设时间或更长时间之后的页面确定为作为待换出对象的页面200。然而,这仅仅是实施例,并且作为待换出对象的页面200可以根据设置或者响应于用户命令来确定。
电子设备可以压缩页面200。此外,电子设备可以确定包括在压缩的页面210中的数据是否已经存储在存储器的交换区域220中。
如果,作为确定的结果,包括在压缩的页面210中的数据与先前存储在交换区域220中的数据230相同,则电子设备可以将压缩的页面210合并到先前存储的数据230中。
对压缩的页面210的合并可以意味着电子设备将压缩的页面210映射到交换区域220的先前存储的数据230。例如,电子设备可以将压缩的页面210的地址映射到先前存储的数据230的地址。
通过前述的数据页面合并器,如果包括在压缩的页面210中的数据与先前存储在交换区域220中的数据230相同,则电子设备不会多次存储相同的数据。
同时,如果,作为确定的结果,包括在压缩的页面210中的数据还没有存储在交换区域220中,则电子设备可以生成存储器池并将压缩的页面210存储在存储器池中。
结果,尽管换出页面的数量增加,但是电子设备允许相同内容的数据不被多次存储在交换区域120中,从而能够提高存储器保证效率。
电子设备可以在已经执行了第一启动并且存储器已经被复位的状态下合并、并且存储包括相同数据的页面,如图2所描述的。
同时,图3a是示出通过压缩相似页面而生成的压缩数据的图。
如图3a所示,以包括在全部比特中的数据相同且仅包括在单个比特中的数据不同的第一页面300和第二页面310为例。
第一页面300的第n比特301包括“1”,但是第二页面310的第n比特311包括“0”。
包括在第一页面300和第二页面310中的数据的内容非常相似,但是包括在第n比特中的数据是不同的。因此,第一页面300和第二页面310的压缩数据是不同的。具体地,第一页面300的压缩数据305和第二页面310的压缩数据315可以是不同的压缩数据。
因此,如果压缩数据要通过图2中描述的方法换出,则第一页面300的压缩数据305和第二页面310的压缩数据315被存储在交换区域340中,尽管它们非常相似。
图3b示出了通过一次存储包括在其中的数据的内容不相同,但在交换区域中的数据的内容相似的页面,来提高存储器效率的方法。
首先,电子设备可以将包括在页面300中的预设数量的特定比特改变为特定值。例如,电子设备可以将在页面的特定比特位置处的比特306、307、308和309设置为魔术比特。此外,电子设备可以将包括在预设魔术比特306、307、308和309中的数据改变为诸如“0”的特定值。特定值是“0”仅仅是实施例,并且可以根据电子设备的初始设置、应用的类型或用户设置被确定为不同值。
在图3b所示的实施例中,魔术比特306、307、308和309中的一些魔术比特306、307和308已经包括“0”。因此,电子设备可以将包括“1”的魔术比特309的数据改变为特定值“0”。
电子设备可以通过压缩其中预设魔术比特306、307、308和309的数据已经被改变为特定值“0”的页面320来生成压缩的数据330。此时,电子设备可以在魔术比特306、307、308和309的改变之前,将原始值生成为元数据335。
电子设备可以确定与先前已经存储在交换区域340中的压缩的数据330相同的数据。如果,作为确定的结果,确定与压缩的数据330相同的数据350已经存储在交换区域340中,则电子设备可以将压缩的数据330合并到相同的数据350中。
此外,电子设备可以在将压缩的数据330合并到先前存储的相同数据350中的同时,一起映射元数据335。
因此,如果随后对压缩的数据330执行换入,则电子设备可以通过恢复相同的数据350,并且用包括在元数据335中的值代替所恢复的数据的魔术比特306、307、308和309,来获得原始页面300。
图3c和图3d是示出可以根据本公开的另一实施例的,可以改变为如图3b所示的改变后的页面320的页面360和370的图。
例如,在图3c的页面360中,数据“1”、“0”、“0”和“0”分别顺序地被存储在预设位置处的魔术比特306、307、308和309中。电子设备可以通过前述方法将页面360的魔术比特306、307、308和309改变为特定值“0”。因此,页面360可以变得与图3b的改变后的页面320相同。
电子设备可通过压缩其中预设魔术比特306、307、308和309的数据已改变为特定值“0”的页面320来生成压缩的数据330。此时,电子设备可以在魔术比特306、307、308和309的改变之前,将原始值生成为元数据“1000”。
电子设备可以在将压缩的数据330合并到交换区域340的先前存储的数据350中的同时,一起映射元数据“1000”。
同时,在图3d的页面370中,数据“1”、“1”、“1”和“1”已经分别顺序地被包括在预设位置处的魔术比特306、307、308和309中。电子设备可以通过前述方法将页面370的魔术306、307、308和309改变为特定值“0”。因此,页面370可以变得与图3b的改变后的页面320相同。
电子设备可通过压缩其中预设魔术比特306、307、308和309的数据已改变为特定值“0”的页面320来生成压缩的数据330。此时,电子设备可以在魔术比特306、307、308和309的改变之前,将原始值生成为元数据“1111”。
电子设备可以在将压缩的数据330合并到交换区域340的先前存储的数据350中的同时,一起映射元数据“1111”。
通过前述方法,电子设备可以映射其中除了包括在魔术比特306、307、308和309中的一些数据之外的剩余数据与交换区域的相同区域相同或相似的页面。因此,电子设备可以提高可用存储器效率。
图3a至图3d所描述的魔术比特可以意味着属于包括在特定页面中、并且在特定页面的数据被多次改变和存储的同时具有频繁改变的数据值的比特。
在下文中,参考图8详细描述用于电子设备确定魔术比特的方法。
电子设备可以执行用于确定针对所有页面的魔术比特的操作。在这种情况下,在操作S800处,电子设备可以确定特定页面是否是选择用于确定魔术比特的页面,以便减少通过执行确定魔术比特的操作而生成的负载。
例如,电子设备可以对多个页面执行诸如存储器设置或存储器拷贝的特定操作。作为运行的结果,电子设备可以选择包括与用于确定魔术比特的页面相同的数据的页面。
在操作S810处,电子设备可以将数据存储在被选择用于确定魔术比特的页面中。用于确定魔术比特的页面的数量可以是多个。
在操作S820处,电子设备可以将存储的数据的值存储在旧页面中,并将新数据存储在所选页面中。
此外,在操作S830处,电子设备可以将旧页面与新数据已经存储在其中的页面进行比较。例如,电子设备可以确定包括在旧页面中的比特的值和其中已经存储了新数据的页面的相同位置处的比特的值是否已经改变。
在操作S840处,电子设备可以针对其数据值已经改变的比特,将计数器增加1。
电子设备可以在阈值时间内重复执行前述操作。此外,如果在操作S850处确定已经经过了阈值时间,则在操作S860处,电子设备可以针对包括在页面中的每个比特计算(每个比特已经改变的次数)/(数据存储数量)。
在操作S870处,电子设备可以按照更高的计算值的顺序将N比特确定为魔术比特。
例如,如果特定的应用(app)被驱动,则电子设备可以使用魔法比特对压缩的页面执行合并。具体地,如果电子设备驱动相机应用,则相机应用请求大约700MB或更高的存储器。在这种情况下,通过存储器设置将存储器重置为“0”后,可以使用700MB的存储器。因此,电子设备可以选择通过执行存储器设置而重置的页面作为用于计算魔术比特的页面。
同时,如果数据被写入特定页面,则电子设备可以包括用于确定特定页面是否是预定用于选择魔术比特的页面的单独模块。因此,图8中公开的确定魔术比特的方法可以由电子设备或电子设备中包括的单独模块执行。
根据本公开的实施例,电子设备通过其执行压缩的单元可以是页面单元,但是不限于此。例如,如图9a所示,电子设备可以将单个页面900分割为两个,并且压缩分割的数据910和920中的每一个。例如,如果单个页面900被分割成两个,则如果确定很有可能将包括相同内容的数据,则电子设备可以将单个页面900分割成两个。此外,电子设备可以通过分别压缩分割的数据910和920来生成压缩的两个数据915和925。在这种情况下,电子设备可以将压缩的两个数据915和925分别与分割的数据910和920的原始大小值匹配并存储它们。
根据另一实施例,电子设备可以对页面进行分割,可以将分割的页面的魔术比特的数据改变为特定值,并且可以压缩该数据。
图9b示出了其中单个页面930的大部分数据被填充为“0”并且数据“1”被包括在页面的一端的示例。如果页面930被分割,则电子设备可以确定可以生成仅包括数据“0”的部分页面。
因此,电子设备可以仅通过分割页面930来生成包括数据“0”的第一部分页面940和第二部分页面950。电子设备可以通过压缩仅包括数据“0”的第一部分页面940来生成第一部分压缩数据945。
此外,电子设备可以将第二部分页面950的包括数据“1”的比特改变为数据“0”。电子设备可以通过压缩已经变得与第一部分页面940相同的改变后的第二部分页面960,来生成第二部分压缩数据970。此外,电子设备可以将第二部分页面950的数据“1”形成为元数据,可以将元数据映射到第二部分压缩数据970,并且可以存储该数据。
由于第一部分页面940和改变后的第二部分页面960仅包括数据“0”,所以电子设备可以将第一部分压缩数据945和第二部分压缩数据970存储在相同的交换区域中。此外,电子设备可以将第二部分压缩数据970映射到元数据并存储数据。
同时,电子设备已经被示出为将单个页面分割成具有相同尺寸的两个部分页面,但是这仅仅是实施例。电子设备可以将单个页面分割成多个部分页面,并且该部分页面可以具有不同的尺寸。
根据本公开的实施例,如图4所示,电子设备可以存储包括压缩的页面的页面帧编号(Page Frame Number,PFN)410、压缩的页面420的地址420和索引号430(即,关于压缩的页面的元数据的信息)的表格400。
具体地,每个页面可以具有唯一的帧编号。因此,如果压缩的页面被换出,则电子设备可以将压缩的页面的地址映射到与交换区域的压缩的页面具有相同数据的压缩页面所在的地址。在这种情况下,电子设备可以生成将换出的页面的帧编号410映射到包括相同数据的压缩页面的地址420的表格。
此外,如果通过前述方法将换出的页面的魔术比特改变为特定值,则电子设备可以将魔术比特的原始值作为索引值430添加到表格。同时,索引值430不限于魔术比特的原始值,但可以是已经存储原始值的区域的地址。
同时,前述预设数量的特定比特可以是根据包括在页面中的数据而包括在页面中的预定位置中的比特或包括在可变位置中的比特。
什么特定的比特对应于包括在每个页面中的比特中的任何一个比特,以及在单个页面中包括多少特定的比特可能先前已经被确定。然而,这仅仅是实施例,并且电子设备可以根据初始设置、用户设置、运行程序或者应用的类型设置其位置可变的魔术比特。
例如,如果交换被执行,则电子设备可以比较页面,即要交换的对象。作为比较的结果,如果发现包括在除了多个页面的一些比特(例如,4比特)之外的剩余比特中的数据是相同的,则电子设备可以将一些排除的比特设置为魔术比特。此外,电子设备可以将包括在魔术比特中的数据改变为特定值,可以压缩包括改变后的特定值的页面,并且可以根据前述方法换出页面。
同时,图5是示出根据本公开的实施例的数据压缩方法的流程图。首先,在操作S500处,电子设备压缩页面。电子设备可以选择要被压缩并存储的页面以便执行交换。例如,电子设备可以将从上次使用起已过了预设时间或更长时间之后的页面确定为作为待换出的对象的页面。然而,这只是实施例,可以根据设置或者响应于用户命令来确定作为待换出的对象的页面。
在操作S510处,电子设备确定包括在压缩的页面中的数据是否已经存储在存储器中。
如果,作为确定的结果,包括与包括在压缩的页面中的数据相同的数据的压缩页面先前已经存储在存储器中,则在操作S520处,电子设备将压缩的页面合并到先前存储的页面中。例如,电子设备可以将压缩的页面的地址指定为先前存储在存储器中的压缩页面的存储地址。
同时,如果,作为确定的结果,包括与包括在压缩的页面中的数据相同的数据的压缩页面先前没有被存储在存储器中,则在操作S530处,可以使存储器分配给电子设备,并且电子设备可以将压缩的页面存储在所分配的存储器中。
在下文中,参考图6描述通过将包括相似数据的页面存储在交换区域的相同区域中来提高存储器效率的方法。
在操作S600处,电子设备可以将包括在页面中的预设数量的特定比特改变为特定值。例如,电子设备可以将页面的特定位置处的比特设置为魔术比特。此外,电子设备可以将包括在预设魔术比特中的数据改变为诸如“0”的特定值。特定值已经被示出为“0”,但是这仅仅是实施例,并且可以根据电子设备的初始设置、应用的类型或用户设置被确定为不同的值。
在操作S610处,电子设备可以压缩包括被改变为特定值的特定比特的页面。例如,电子设备可以通过压缩其中预设魔术比特的数据已经被改变为特定值“0”的页面来生成压缩的数据。在这种情况下,电子设备可在魔术比特的改变之前将原始值生成为元数据。
此外,在操作S620处,电子设备可以确定包括在压缩的页面中的数据是否已经存储在存储器中。例如,电子设备可以确定与压缩的数据相同的数据是否已经先前存储在交换区域中。
如果,作为确定的结果,确定与压缩的数据相同的数据已经存储在交换区域中,则在操作S630处,电子设备可以通过映射包括在改变为特定值之前的特定比特中的原始数据的值、或原始数据的值已经被存储的地址,来将压缩的数据合并到先前存储的数据中。
例如,电子设备可以在将魔术比特的数据改变为特定值的同时,将魔术比特的原始数据的值生成为元数据,并且可以将元数据与压缩的数据一起映射到先前存储的数据中。
可替换地,电子设备可以在将魔术比特的数据改变为特定值的同时,将单独生成的魔术比特的原始数据的值存储在预设区域中,并且可以在将压缩的数据映射到先前存储的数据的同时,一起映射其中已经存储了魔术比特的原始数据的值的预设区域的地址。此外,电子设备可以在将压缩的数据合并到先前存储的相同数据350中的同时,一起映射元数据335。
因此,如果随后对压缩的数据执行换入,则电子设备可以通过恢复相同的数据,并且用包括在元数据中的值代替所恢复的数据的魔术比特,来获得原始页面。
同时,如果,作为确定的结果,确定与压缩的数据相同的数据先前没有存储在交换区域中,则在操作S640处,可以使存储器分配给电子设备,并且电子设备可以通过将包括在改变为特定值之前的特定比特中的原始数据的值、或原始数据的值已经被存储的地址映射到所分配的存储器,来存储压缩的页面。
图7是示出根据本公开的实施例的电子设备的框图。如图7所示,电子设备700可以包括存储器710和控制器720。电子设备700可以被实施为各种设备,诸如移动电话、平板PC、数码相机、摄像机、笔记本PC、桌上型PDA、MP3、智能眼镜、智能手表或智能戒指。
存储器710是用于存储数据的元件。存储器710存储用于驱动电子设备700的各种程序和数据。例如,存储器710可以存储用于驱动电子设备700的操作系统(OS)、用于执行各种功能的应用以及在运行应用的过程中使用的数据。另外,存储器710可以存储各种类型的软件,诸如基本模块、感测模块、通信模块、呈现模块、网页浏览器模块和服务模块。
存储器710可以包括主储存器和包括硬盘的二级储存器,该主存储器包括RAM、ROM和L1、L2高速缓冲存储器。例如,存储器710的二级储存器可以存储换出的页面。
同时,控制器720是用于一般地控制电子设备700的元件。控制器720还可以包括诸如冗余页面确定单元721、页面合并单元722和管理单元733的元件。包括在控制器720中的元件可以被实施为单独的硬件模块。然而,这只是实施例。冗余页面确定单元721、页面合并单元722和管理单元733可以用软件来实施,并且控制器720可以执行将程序存储在非易失性存储器中、将所存储的程序复制到RAM、以及运行复制的程序的功能。
冗余页面确定单元721可以压缩作为待交换对象的页面。此外,冗余页面确定单元721可以确定包括在压缩的页面中的数据是否先前已经存储在交换区域中。
此外,冗余页面确定单元721可以将包括在页面的预设特定比特中的数据改变为特定值(例如,“0”)。此外,冗余页面确定单元721可以压缩其中特定比特以特定值填充的页面。冗余页面确定单元721可以将特定比特的改变为特定值之前的原始数据值生成为元数据。
同时,页面合并单元722可以基于冗余页面确定单元721的确定结果来合并页面。例如,如果冗余页面确定单元721确定与包括在压缩的页面中的数据相同的数据已经被先前存储在存储器710的交换区域中,则页面合并单元722可以将压缩的页面合并到先前存储的页面中。例如,页面合并单元722可以将压缩的页面的存储地址映射到先前存储的页面的地址。
此外,页面合并单元722可以在将压缩的页面合并到先前存储的页面的同时,一起映射元数据。
同时,如果冗余页面确定单元721确定与包括在压缩的页面中的数据相同的数据先前没有存储在存储器710的交换区域中,则页面合并单元722可以分配存储器710的一些区域,并将压缩的页面存储在所分配的区域中。
管理单元733可以管理合并的页面。管理单元733可以映射压缩的页面的帧页面编号和压缩的页面的存储地址并对管理它们。此外,如果压缩的页面的特定比特已经改变为特定值,则管理单元733可以将包括特定比特的原始值的元数据与压缩的页面的帧页面编号和压缩的页面的存储地址一起映射,并管理它们。
因此,如果随后执行换入,则可以使用存储地址和元数据来恢复压缩的页面。
在该技术中,控制器720已经被示出为包括单独的功能块721至723,并且控制器720和详细的功能块721至723已经被示出为执行不同的功能,但是这仅仅是可以实施的实施例。例如,由冗余页面确定单元721执行的功能可以由控制器720本身执行。
尽管换出页面的数量增加,但是电子设备700防止包含相同或类似数据的页面被多次存储在存储器中,从而能够提高存储器保证效率。
同时,前述电子设备的元件可以以软件的形式实施。例如,电子设备的控制器可以进一步包括闪速存储器或其它非易失性存储器。用于执行控制器的各个功能的程序可以被存储在非易失性存储器中。
此外,电子设备的控制器可以以包括CPU和随机存取存储器(random accessmemory,RAM)的形式来实施。控制器的CPU可以将存储在非易失性存储器中的前述程序复制到RAM中,并且可以通过运行所复制的程序来执行诸如上述那些功能的电子设备的功能。
控制器是负责电子设备的控制的元件。控制器可以可交换地用作相同的含义,诸如中央处理单元、微处理器、控制器、处理器或操作系统。此外,电子设备的控制器可以与其它功能单元(诸如,包括在电子设备中的通信模块)一起被实施为单芯片系统(system-on-a-chip)(或片上系统(system on chip)或SOC或SoC)。
同时,根据前述各种实施例的电子设备的数据压缩方法可以用软件编码并存储在非暂时性可读介质中。非暂时性可读介质可以安装在各种设备上并被使用。
非暂时性可读介质并不意味着短时间地存储数据的介质,诸如寄存器、高速缓存或存储器,而是意味着半永久地存储数据并且可被设备读取的介质。具体地,非暂时性可读介质可以是CD、DVD、硬盘、蓝光盘、USB、存储卡或ROM。
此外,尽管以上已经示出和描述了本公开的优选实施例,但是本公开不限于前述具体实施例,并且本公开所属领域的普通技术人员可以以各种方式修改本公开,而不脱离权利要求书中的本公开的主旨。不应该从本说明书的技术精神或前景中个别地理解这些修改的实施例。
Claims (9)
1.一种电子设备的数据压缩方法,所述数据压缩方法包括:
基于在预定时间期间第一页面中的数据值的改变次数,在第一页面的比特中确定魔术比特,其中魔术比特是属于第一页面的比特并在第一页面的数据被多次改变和存储时具有频繁改变的数据值的比特;
将所述第一页面分割为第一部分页面和第二部分页面,其中第一部分页面包括魔术比特,并且第二部分页面不包括魔术比特;
将魔术比特的原始值改变为特定值;
生成指示魔术比特的改变的原始值的元数据;
压缩其中第一页面的比特中的魔术比特的原始值被改变为所述特定值的第一部分页面;
压缩第二部分页面;
在压缩第一部分页面和第二部分页面之后,识别包括所述特定值的第一数据是否与存储在存储器中的压缩的第二页面中包括的第二数据相同;以及
在第一数据与第二数据相同的情况下,通过将压缩的第一部分页面和第二部分页面合并到压缩的第二页面中,来将压缩的第一页面和所述元数据存储在所述存储器中,
其中,所述元数据的索引被映射到所述压缩的第一页面的地址,并且
其中,所述元数据的索引包括对应于所述特定值的原始值或存储原始值的区域的地址。
2.如权利要求1所述的数据压缩方法,其中,将压缩的第一部分页面和第二部分页面合并到压缩的第二页面包括将压缩的第一页面的地址映射到所述存储器中压缩的第二页面的地址。
3.如权利要求1所述的数据压缩方法,其中,通过将包括在第一页面中的原始数据的预设数量的特定比特改变为所述特定值来生成第一数据。
4.如权利要求3所述的数据压缩方法,其中,所述特定比特被包括在所述第一页面中的预定位置中,并且
其中,基于页面中包括的数据来确定所述预定位置。
5.如权利要求1所述的数据压缩方法,其中,所述方法还包括在压缩第一页面之前识别要压缩的第一页面,并且
其中,基于从第一页面的最近一次使用起经过了预设时间或响应于用户命令中的至少一个来发起合并。
6.一种电子设备,包括:
存储器,被配置为存储数据;和
控制器,被配置为:
基于在预定时间期间第一页面中的数据值的改变次数,在第一页面的比特中确定魔术比特,其中魔术比特是属于第一页面的比特并在第一页面的数据被多次改变和存储时具有频繁改变的数据值的比特,
将所述第一页面分割为第一部分页面和第二部分页面,其中第一部分页面包括魔术比特,并且第二部分页面不包括魔术比特,
将魔术比特的原始值改变为特定值,
生成指示魔术比特的改变的原始值的元数据,
压缩其中第一页面的比特中的魔术比特的原始值被改变为所述特定值的第一部分页面,
压缩第二部分页面,
在压缩第一部分页面和第二部分页面之后,识别包括所述特定值的第一数据是否与存储在存储器中的压缩的第二页面中包括的第二数据相同,以及
在第一数据与第二数据相同的情况下,通过将压缩的第一部分页面和第二部分页面合并到压缩的第二页面中,来将压缩的第一页面和所述元数据存储在所述存储器中,
其中,所述元数据的索引被映射到压缩的第一页面的地址,并且
其中,所述元数据的索引包括对应于所述特定值的原始值或存储原始值的区域的地址。
7.如权利要求6所述的电子设备,其中,所述控制器还被配置为将压缩的第一页面的地址映射到所述存储器中的压缩的第二页面的地址。
8.如权利要求6所述的电子设备,其中,所述控制器还被配置为,通过将包括在第一页面中的原始数据的预设数量的特定比特改变为所述特定值来生成所述第一数据。
9.如权利要求8所述的电子设备,其中,所述特定比特被包括在所述第一页面中的预定位置中,并且
其中,基于页面中包括的数据来确定所述预定位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150113935A KR102294669B1 (ko) | 2015-08-12 | 2015-08-12 | 전자 장치 및 이의 데이터 압축 방법 |
KR10-2015-0113935 | 2015-08-12 | ||
PCT/KR2016/008596 WO2017026740A1 (ko) | 2015-08-12 | 2016-08-04 | 전자 장치 및 이의 데이터 압축 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107924350A CN107924350A (zh) | 2018-04-17 |
CN107924350B true CN107924350B (zh) | 2022-01-25 |
Family
ID=57984016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680047598.7A Active CN107924350B (zh) | 2015-08-12 | 2016-08-04 | 电子设备及其数据压缩方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11226738B2 (zh) |
KR (1) | KR102294669B1 (zh) |
CN (1) | CN107924350B (zh) |
WO (1) | WO2017026740A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210039617A (ko) * | 2019-10-02 | 2021-04-12 | 삼성전자주식회사 | 전자장치 및 그 제어방법 |
KR20210049602A (ko) * | 2019-10-25 | 2021-05-06 | 삼성전자주식회사 | 컴퓨팅 장치 및 그 동작 방법 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5406278A (en) * | 1992-02-28 | 1995-04-11 | Intersecting Concepts, Inc. | Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique |
US6226411B1 (en) * | 1997-01-31 | 2001-05-01 | Fujitsu Limited | Method for data compression and restoration |
US6879266B1 (en) * | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
CN1949670A (zh) * | 2005-10-10 | 2007-04-18 | 中兴通讯股份有限公司 | 一种数据压缩及解压缩方法 |
CN103098016A (zh) * | 2010-07-15 | 2013-05-08 | 戴尔菲克斯公司 | 基于文件系统备份的去重 |
CN103744617A (zh) * | 2013-12-20 | 2014-04-23 | 北京奇虎科技有限公司 | 一种键-值存储系统中数据文件的合并压缩方法及装置 |
WO2014104509A1 (ko) * | 2012-12-31 | 2014-07-03 | 고려대학교 산학협력단 | 가상화 시스템에서의 메모리 관리 방법 |
CN104035822A (zh) * | 2014-05-28 | 2014-09-10 | 中国科学院计算技术研究所 | 一种低开销的高效内存去冗余方法及系统 |
CN104199892A (zh) * | 2014-08-26 | 2014-12-10 | 上海爱数软件有限公司 | 一种基于压缩合并异步更新的索引读写方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100354531B1 (ko) | 1998-05-06 | 2005-12-21 | 삼성전자 주식회사 | 실시간 복호화를 위한 무손실 부호화 및 복호화 시스템 |
US8959280B2 (en) | 2008-06-18 | 2015-02-17 | Super Talent Technology, Corp. | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear |
US8694703B2 (en) * | 2010-06-09 | 2014-04-08 | Brocade Communications Systems, Inc. | Hardware-accelerated lossless data compression |
KR20130027253A (ko) | 2011-09-07 | 2013-03-15 | 삼성전자주식회사 | 데이터의 압축 방법 |
KR101331098B1 (ko) | 2011-10-28 | 2013-11-19 | 국방과학연구소 | 메모리압축 스왑도구를 이용하는 가상화 임베디드 시스템 및 방법 |
US20150049105A1 (en) | 2013-08-13 | 2015-02-19 | Mediatek Inc. | Data processing apparatus for transmitting/receiving indication information of pixel data grouping setting via display interface and related data processing method |
US20150067238A1 (en) | 2013-08-29 | 2015-03-05 | Sandisk Technologies Inc. | Computing Device and Method for Predicting Low Memory Conditions |
US9977598B2 (en) * | 2014-10-27 | 2018-05-22 | Mediatek Inc. | Electronic device and a method for managing memory space thereof |
US10296457B2 (en) * | 2017-03-30 | 2019-05-21 | Intel Corporation | Reducing conflicts in direct mapped caches |
-
2015
- 2015-08-12 KR KR1020150113935A patent/KR102294669B1/ko active IP Right Grant
-
2016
- 2016-08-04 US US15/750,733 patent/US11226738B2/en active Active
- 2016-08-04 WO PCT/KR2016/008596 patent/WO2017026740A1/ko active Application Filing
- 2016-08-04 CN CN201680047598.7A patent/CN107924350B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5406278A (en) * | 1992-02-28 | 1995-04-11 | Intersecting Concepts, Inc. | Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique |
US6226411B1 (en) * | 1997-01-31 | 2001-05-01 | Fujitsu Limited | Method for data compression and restoration |
US6879266B1 (en) * | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
CN1949670A (zh) * | 2005-10-10 | 2007-04-18 | 中兴通讯股份有限公司 | 一种数据压缩及解压缩方法 |
CN100517979C (zh) * | 2005-10-10 | 2009-07-22 | 中兴通讯股份有限公司 | 一种数据压缩及解压缩方法 |
CN103098016A (zh) * | 2010-07-15 | 2013-05-08 | 戴尔菲克斯公司 | 基于文件系统备份的去重 |
WO2014104509A1 (ko) * | 2012-12-31 | 2014-07-03 | 고려대학교 산학협력단 | 가상화 시스템에서의 메모리 관리 방법 |
CN103744617A (zh) * | 2013-12-20 | 2014-04-23 | 北京奇虎科技有限公司 | 一种键-值存储系统中数据文件的合并压缩方法及装置 |
CN104035822A (zh) * | 2014-05-28 | 2014-09-10 | 中国科学院计算技术研究所 | 一种低开销的高效内存去冗余方法及系统 |
CN104199892A (zh) * | 2014-08-26 | 2014-12-10 | 上海爱数软件有限公司 | 一种基于压缩合并异步更新的索引读写方法 |
Non-Patent Citations (1)
Title |
---|
基于内容的重复数据删除技术的研究;段梦博等;《电脑知识与技术》;20100831(第22期);第6275-6277页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107924350A (zh) | 2018-04-17 |
WO2017026740A1 (ko) | 2017-02-16 |
KR20170019729A (ko) | 2017-02-22 |
KR102294669B1 (ko) | 2021-08-27 |
US20190004708A1 (en) | 2019-01-03 |
US11226738B2 (en) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10884630B2 (en) | Storage system | |
JP6355650B2 (ja) | 不揮発性記憶デバイスのためのメモリーのリアドレシング | |
EP2665065A2 (en) | Electronic device employing flash memory | |
US8825946B2 (en) | Memory system and data writing method | |
WO2016135954A1 (ja) | ストレージ装置および不揮発メモリデバイス | |
US10203899B2 (en) | Method for writing data into flash memory apparatus, flash memory apparatus, and storage system | |
US20160274819A1 (en) | Memory system including host and a plurality of storage devices and data migration method thereof | |
KR20120081351A (ko) | Ftl을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법 | |
US20240143219A1 (en) | Software-hardware combination method for internal mapping address query of zoned namespace | |
CN106557428B (zh) | 数据存储设备的映射系统选择 | |
CN105988875B (zh) | 一种运行进程的方法及装置 | |
CN107924350B (zh) | 电子设备及其数据压缩方法 | |
US10073851B2 (en) | Fast new file creation cache | |
KR101626218B1 (ko) | 블록 기반의 페이지 매핑 방법 | |
EP3869343B1 (en) | Storage device and operating method thereof | |
CN113805792A (zh) | 存储器系统及其操作方法 | |
CN110119245B (zh) | 用于操作nand闪存物理空间以扩展存储器容量的方法和系统 | |
CN104899158A (zh) | 访存优化方法和装置 | |
CN110990301A (zh) | 多plane存储介质的顺序读方法及相关装置 | |
EP2381354A2 (en) | Data recording device | |
EP3296878B1 (en) | Electronic device and page merging method therefor | |
JP6254986B2 (ja) | 情報処理装置、アクセスコントローラ、および情報処理方法 | |
CN107077420B9 (zh) | 覆盖擦除块映射 | |
CN111158582A (zh) | 存储装置和电子装置 | |
US10923178B1 (en) | Data storage with improved write performance for preferred user data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |