US20150381774A1 - Data Compression and Decompression Methodology and Apparatus - Google Patents
Data Compression and Decompression Methodology and Apparatus Download PDFInfo
- Publication number
- US20150381774A1 US20150381774A1 US14/754,777 US201514754777A US2015381774A1 US 20150381774 A1 US20150381774 A1 US 20150381774A1 US 201514754777 A US201514754777 A US 201514754777A US 2015381774 A1 US2015381774 A1 US 2015381774A1
- Authority
- US
- United States
- Prior art keywords
- data
- storage
- data elements
- location
- uncompressed
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- 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
-
- 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
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- 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
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- 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
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6058—Saving memory space in the encoder or decoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/1874—Buffer management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/06—Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information
Definitions
- the disclosed and claimed concept relates generally to data processing systems and, more particularly, to a data compression and decompression system that is usable as part of a wireless data communication apparatus.
- Most computerized systems employ the communication of data from one location to another in order to perform operations.
- the communication of data typically occurs across a data bus, such as when data is communicated between a processor and a storage. It is also well known to wirelessly communicate data from one location to another separate location using any of a wide variety of data protocols.
- An improved data compression/decompression methodology and system stores in a compression-side dictionary the data that has been transmitted and additionally applies to such data in the compression-side dictionary a status of being “invalid” for purposes of use as a reference in data compression until an acknowledgement signal has been received from the decompression side indicating that such data has been received. Once the compression side has received the acknowledgement signal indicating that the data in the form of a compressed data packet has been received on the decompression side, the status is changed from being “invalid” into being “valid”, i.e., into being usable as reference data for use in compressing further data elements in the data stream.
- Each data packet includes a stream index which is representative of the memory location in the compression-side dictionary where the first data element of the uncompressed data set that is represented by the data packet is stored.
- the stream index is used on the decompression side to determine the location in a decompression-side dictionary storage array where the received data packet (as decompressed) should be stored. With the use of the stream index, data packets can be received in any order and stored at the correct sequential location in the decompression-side dictionary.
- an aspect of the disclosed and claimed concept is to provide an improved system and method for compression/decompression data transfer.
- Another aspect of the disclosed and claimed concept is to provide an improved compression/decompression data transfer method and apparatus that provide improved performance without requiring correspondingly increased data storage.
- the method can be generally stated as including, for each uncompressed data set of a number of uncompressed data sets of the data stream, sequentially storing in a storage a number of data elements of the uncompressed data set, a first data element of the number of data elements being stored at a given location in the storage, storing in the storage an indication that the number of data elements each have a first status assigned thereto, subjecting the number of data elements to a data compression routine to form from the uncompressed data set a corresponding compressed data packet, which can be generally stated as including determining that a string of data elements of the number of data elements is identical to a string of other data elements of the data stream that are stored in the storage and to which a second status has been assigned and, responsive thereto, replacing the string of data elements with a reference to the string of other data elements.
- the method further comprises transmitting toward the second location the corresponding compressed data packet and a corresponding stream index that is representative of the given location and, for each uncompressed data set of at least some of the number of uncompressed data sets, receiving an acknowledgement signal representative of the corresponding compressed data packet being received at the second location and, responsive thereto, changing in the storage the indication of the number of data elements of the uncompressed data set from having the first status assigned thereto into having the second status assigned thereto.
- Another aspect of the disclosed and claimed concept is to provide an improved method of communicating at least a portion of a data stream between a first location and a second location.
- the method can be generally stated as including, for each uncompressed data set of a number of uncompressed data sets of the data stream, sequentially storing in a storage a number of data elements of the uncompressed data set, a first data element of the number of data elements being stored at a given location in the storage, storing in the storage an indication that the number of data elements each have a first status assigned thereto, subjecting the number of data elements to a data compression routine to form from the uncompressed data set a corresponding compressed data packet, which can be generally stated as including determining that another string of data elements of the number of data elements is identical to a further string of data elements of the number of data elements and, responsive thereto, replacing one of the another string and the further string with a reference to the other of the another string and the further string.
- the method further comprises transmitting toward the second location the corresponding compressed data packet and a corresponding stream index that is representative of the given location and, for each uncompressed data set of at least some of the number of uncompressed data sets, receiving an acknowledgement signal representative of the corresponding compressed data packet being received at the second location and, responsive thereto, changing in the storage the indication of the number of data elements of the uncompressed data set from having the first status assigned thereto into having the second status assigned thereto.
- the data communication apparatus can be generally stated as including a hardware apparatus that can be generally stated as including a processor apparatus comprising a processor and a storage, an input apparatus structured to provide input signals to the processor apparatus, and an output apparatus structured to receive output signals from the processor apparatus, the storage having stored therein a number of routines which, when executed on the processor, cause the hardware apparatus to perform operations that can be generally stated as including, for each uncompressed data set of a number of uncompressed data sets of the data stream, sequentially storing in the storage a number of data elements of the uncompressed data set, a first data element of the number of data elements being stored at a given location in the storage, storing in the storage an indication that the number of data elements each have a first status assigned thereto, subjecting the number of data elements to a data compression routine to form from the uncompressed data set a corresponding compressed data
- the method further comprises transmitting toward the second location the corresponding compressed data packet and a corresponding stream index that is representative of the given location and, for each uncompressed data set of at least some of the number of uncompressed data sets, receiving an acknowledgement signal representative of the corresponding compressed data packet being received at the second location and, responsive thereto, changing in the storage the indication of the number of data elements of the uncompressed data set from having the first status assigned thereto into having the second status assigned thereto.
- FIG. 1 is a schematic depiction of an improved data communication apparatus in accordance with the disclosed and claimed concept
- FIG. 2 can be said to comprise FIGS. 2A-H and depicts compression-side and decompression-side storage arrays that contain dictionaries that change throughout FIGS. 2A-H responsive to various occurrences;
- FIG. 3 is an exemplary flowchart depicting certain aspects of an improved invention in accordance with the disclosed and claimed concept.
- FIG. 1 An improved data communication apparatus 4 is depicted generally in FIG. 1 .
- the data communication apparatus 4 can be said to include a hardware apparatus 6 that includes a compression apparatus 8 and a decompression apparatus 10 .
- the data communication apparatus 4 further includes an input data stream 12 that is in electronic communication with the compression apparatus 8 and an output data stream 14 that is in electronic communication with the decompression apparatus 10 .
- compression and decompression shall refer generally to operations that compact and expand portions of a data stream for use in reducing the bandwidth of data that is communicated between two different locations.
- the compression apparatus 8 can be generally described as including an input apparatus 16 , an output apparatus 18 , and a processor apparatus 20 .
- the compression apparatus 8 further includes a transceiver which, in the depicted exemplary embodiment, is a wireless transceiver 24 that can be said to include a reception component that is a part of the input apparatus 16 and to further include a transmission component that is a part of the output apparatus 18 .
- the processor apparatus 20 can be said to include a processor 26 and a memory 30 in operative communication with one another.
- the processor 26 can be any of a wide variety of data processors
- the memory 30 can be any of a wide variety of types of data storage that include RANI, ROM, EPROM, EEPROM, FLASH, and the like without limitation.
- the memory 30 has stored therein a number of routines 32 that expressly include a compression routine 32 having an algorithm that performs data compression operations and other operations.
- the expression “a number of” shall refer broadly to any non-zero quantity, including a quantity of one.
- the routines 32 can be executed on the processor 26 to cause the compression apparatus 8 to perform various operations.
- a portion of the memory 30 is designated as a storage array 36 within which a compression-side dictionary 68 is stored.
- the decompression apparatus 10 likewise includes an input apparatus 38 , an output apparatus 42 , a processor apparatus 44 , and a transceiver which, in the depicted exemplary embodiment, is a wireless transceiver 48 , with the wireless transceiver 48 having reception and transmission components that can be considered to be a part of the input and output apparatuses 38 and 42 , respectively.
- the processor apparatus 44 includes a processor 50 and a memory 54 having a number of routines 56 stored therein, expressly including a decompression routine 56 .
- a portion of the memory 54 is designated as a storage array 60 which is intended to have stored therein a decompression-side dictionary 96 that is, at least in part, a mirror of the compression-side dictionary 68 .
- the wireless transceivers 24 and 48 provide a data link between the compression apparatus 8 and the decompression apparatus 10 .
- the data link is wireless in nature. It is expressly noted, however, that the data link could instead be a wired data link while still embodying the teachings presented herein and while still being within the scope of the present concept.
- An example data stream 62 is depicted in FIG. 1 as being communicated via the input data stream 12 to the compression apparatus 8 .
- the data stream 62 is in the exemplary form of text formed from Latin letters, but it is understood that the data stream 62 could take any form without departing from the present concept.
- the data stream 62 is processed by the routines 32 to form a number of uncompressed data sets 66 that are stored in the storage array 36 as the compression-side dictionary 68 .
- uncompressed data sets 66 are twenty-four characters in length, this is only for the purposes of explanation, and there is no requirement for all uncompressed data sets 66 to be of any particular length or of equal lengths, and uncompressed data sets 66 can be of any length that is supported by the underlying data transmission method.
- the first uncompressed data set 66 formed from the data stream 62 includes twenty-four data elements 72 that are stored in an equal number of storage locations which, for reasons of simplicity of disclosure, are numbered 1 - 24 .
- Each data element 72 in the compression-side dictionary 68 further has a status indicator 74 associated therewith that provides an indication of whether the data element 72 is considered to be “invalid” or “valid” for purposes of use in the compression of future uncompressed data sets 66 .
- An invalid status is indicated by a mathematical minus sign (“ ⁇ ”) and indicates that the corresponding data element 72 is unusable to compress another uncompressed data set 66 .
- a “valid” status is represented by a plus sign (“+”) and indicates that the corresponding data element 72 can be used in compressing future uncompressed data sets 66 .
- the compression routine 32 is operable to compress the uncompressed data set 66 , such as is depicted generally in FIG. 2A , into a compressed data packet 78 ( FIG. 1 ) that eventually can be transmitted from the wireless transceiver 24 on the compression side to the wireless transceiver 48 on the decompression side to communicate the compressed data packet 78 from the compression apparatus 8 at a first location to the decompression apparatus 10 at a second, different, location.
- the exemplary compression routine 32 operates by determining whether any given string of data elements 72 that exists sequentially within the uncompressed data set 66 is identical to a previous string of data elements 72 that occurred sequentially prior to, i.e., previously, in the compression-side dictionary 68 . This can occur in any of a variety of fashions and can include, for instance, character comparisons, the use of hash tables or search trees, etc., without limitation.
- compression involves the identification of a target string 80 which, as is depicted in FIG. 2A , is the set of four data elements 72 that are stored in memory locations 18 - 21 . These four data elements 72 (a ⁇ SPACE > followed by the letters “YOU”) is identical to a reference string 84 that is comprised of the four data elements 72 stored at storage locations 8 - 11 .
- the exemplary compression routine 32 will replace the four data elements 72 that make up the target string 80 with a reference to the reference string 84 .
- the reference itself will typically include the initial data location which, in this case, is the storage location 8 , followed by a length which, in this case, is the quantity four, i.e., the reference to the reference string indicates that the target string 80 has been replaced with the four data elements 72 that begin at the storage location 8 .
- the decompression routine 56 will encounter the reference to the reference string 84 and will copy the reference string 84 and insert it at the current location in place of the reference.
- the uncompressed data set 66 that is depicted in FIG. 2A has a stream index 86 which, in the depicted exemplary embodiment, is representative of the storage location where the first data element 72 in the uncompressed data set 66 is stored which, in the instant example, is the storage location numbered “1”.
- the stream index 86 is added as a header on the compressed data packet 78 .
- the stream index 86 indicates to the decompression routine 56 the location in the storage array 60 where the first data element 72 that is decompressed from the compressed data packet 78 should be placed. Subsequent data elements 72 that are decompressed from the compressed data packet 78 are sequentially stored in successive storage location in the storage array 60 . While the stream index 86 that is communicated in the instant example is the digit “1”, it need not necessarily be numerical in nature and merely is representative of a storage location. In this regard, it could be of virtually any foam without limitation, as long as the particular form allows references in subsequently transmitted compressed data packets 78 to refer to data elements in prior uncompressed data sets 66 as stored in the storage array 60 .
- the storage array 60 includes a plurality of numbered storage locations into which data elements 92 can be stored to form a mirror 94 at the decompression side of the uncompressed data set 68 that is stored in the storage array 36 at the compression side.
- the various mirrors 94 of the various uncompressed data sets 66 together faun in the storage array 60 the decompression-side dictionary 96 which ultimately will be the same as the compression-side dictionary 68 if it is assumed that all compressed data packets 78 that are transmitted by the wireless transceiver 24 on the compression side are received by the wireless transceiver 48 on the decompression side, as will be set forth in greater detail below.
- an acknowledgement signal 98 is transmitted by the wireless transceiver 48 from the decompression side to the wireless transceiver 24 on the compression side to acknowledge receipt of the compressed data packet 78 .
- the various acknowledgement signals 98 are designated herein as ⁇ ACK1>, ⁇ ACK2>, ⁇ ACK3>, etc.
- the acknowledgement signal 98 of any given compressed data packet 78 includes the corresponding stream index 86 , i.e., the stream index of the uncompressed data set 66 that was represented by the compressed data packet 78 that was acknowledged by the wireless transceiver 48 .
- the stream index is a sixteen bit value which might be, for example, 1 through 65,536, although it may be more or less than sixteen bits without departing from the present concept.
- Each exemplary stream index 86 mentioned herein is a relatively modest value, such as 1, 25, 49, 97, and the like for reasons of simplicity of disclosure.
- the acknowledgement signal 98 in the depicted exemplary embodiment further includes a signal or value that is representative of the quantity of data elements 92 that were decompressed from the received compressed data packet 78 .
- the quantity of data elements reflected in the acknowledgement signal 98 should be equal to the quantity of data elements in the corresponding uncompressed data set 66 .
- the acknowledgement signal 98 may identify the compressed data packet 78 to which it corresponds in some other fashion, and the memory 30 may have stored therein data associated with each uncompressed data set 66 that includes the corresponding stored string index 86 and its corresponding quantity of data elements. This may be used if it is desired not to transmit this particular information as a part of the acknowledgement signal 98 .
- the data elements 72 in the storage array 60 that had been represented by the acknowledged compressed data packet 78 are altered by the routines 32 change their status indicator 74 from “invalid” to “valid”. This is depicted in FIGS. 2A-2B with the minus symbol (“ ⁇ ”) of certain data elements 72 being changed to a plus symbol (“+”). As suggested elsewhere herein, a data element 72 that is of a “valid” status is usable as a part of a reference string 84 during the compression of other uncompressed data sets 66 .
- the various data elements 72 within the particular uncompressed data set 66 are usable to compress other portions of the same uncompressed data set 66 .
- the first uncompressed data set 66 is depicted herein as being stored at the storage locations 1 - 24 .
- the aforementioned target string 80 that is depicted in FIG. 2A as being the data elements 72 stored at storage locations 18 - 21 and the reference string 84 in FIG. 2 that includes the data elements 72 stored at storage locations 8 - 11 are identical in the uncompressed data set 66 .
- FIG. 2A depicts as the first uncompressed data set 66 the first twenty-four letters of the data stream 62 stored in storage locations 1 - 24 .
- the first data element 72 of the uncompressed data set 66 is stored at storage location 1 , and the corresponding stream index 86 thus is likewise representative of the value “1”.
- the storage array 60 is represented as being completely empty and is representative of the first compressed data packet 78 not yet having been received on the decompression side.
- the data elements 72 of the first uncompressed data set 66 which are stored in storage locations 1 - 24 each have an “invalid” status indicator 74 associated therewith. This indicates that an acknowledgement signal 98 that would correspond with the uncompressed data set 66 has not yet been received by the wireless transceiver 24 .
- the various conditions of the storage array 36 that are depicted herein are not intended to reflect whether the corresponding compressed data packets 78 have actually been transmitted by the wireless transceiver 24 , but rather are intended to demonstrate the fact that the various data elements 72 have been loaded into the storage array 36 . This is regardless of whether such data elements 72 have been compressed into compressed data packets 78 and likewise regardless of whether any such compressed data packets 78 have been transmitted by the wireless transceiver 24 .
- FIG. 2B first demonstrates the receipt of the acknowledgement signal 98 “ ⁇ ACK1>”, which corresponds with the uncompressed data set 66 stored at storage locations 1 - 24 , being received by the wireless transceiver 24 from the wireless transceiver 48 .
- the data elements 72 stored at storage locations 1 - 24 have had their status indicator 74 changed from “invalid” to “valid”.
- FIG. 2B depicts that storage array 60 has received the same twenty-four data elements 92 that are stored in storage locations 1 - 24 .
- FIG. 2B also depicts that another uncompressed data set 66 of data elements 72 has been loaded into storage locations 25 - 48 in the storage array 36 .
- FIG. 2B does not reflect whether or not the second uncompressed data set 66 at storage locations 25 - 48 has been compressed or whether or not it has been transmitted as a compressed data packet 78 by the wireless transceiver 24 , but rather is intended to depict the fact that the data elements 72 of the second uncompressed data set 66 are stored in storage locations 25 - 48 and have each been given a status indicator 74 that is “invalid” because no acknowledgement signal 98 that corresponds with the second uncompressed data set 66 has been received by the wireless transceiver 24 .
- FIG. 2C depicts another a third uncompressed data set 66 and a fourth uncompressed data set 66 being stored at storage locations 49 - 72 and 73 - 96 , respectively, in the storage array 36 , and all such data elements have received a status indicator 74 of “invalid” as is indicated by the “minus symbol” associated with each of the data elements 72 in storage locations 49 - 96 .
- the four uncompressed data sets 66 sequentially span storage locations 1 - 96 , but an acknowledgement signal 98 has been received only for the first compressed data packet 78 , as was indicated at the top of FIG. 2B .
- an acknowledgement signal 98 “ ⁇ ACK2>” has been received in respect of the second uncompressed set 66 , i.e., the one whose data elements 72 span storage locations 25 - 48 of the storage array 36 , and such data elements 72 thus have had their status indicator 74 changed from “invalid” to “valid”, i.e., from “ ⁇ ” to “+”.
- the corresponding mirrors 94 of the first and second uncompressed sets 66 include data elements 92 stored in storage locations 1 - 48 in the storage array 60 .
- the second uncompressed data set 66 would have had as its stream index 86 the numeral “25”.
- FIG. 2D further indicates that a fifth uncompressed data set 66 has been stored in the storage array 36 at the storage locations 97 - 120 and that such new data elements 72 have received a status indicator 74 of “invalid”.
- FIG. 2E At the top of FIG. 2E , it can be seen that an acknowledgement signal 98 “ ⁇ ACK5>” for the fifth uncompressed data set 66 has been received by the wireless transceiver 48 . As such, the routines 32 have changed the status indicator 74 from “invalid” to “valid” for the corresponding data elements 72 , which are stored at storage locations 97 - 120 . FIG. 2E further indicates that a sixth uncompressed data set 66 has been added to the storage array 36 in storage locations 121 - 139 , and that such new data elements have a status indicator 74 that is “invalid”.
- FIG. 2E additionally indicates that the data elements 92 that correspond with the fifth uncompressed data set 66 have been stored at storage locations 97 - 120 in the storage array 60 .
- the stream index 86 of the fifth uncompressed data set 66 which is the location in the storage array 36 where the first data element 72 of the fifth uncompressed data set 66 is stored, corresponds with a value of “97”.
- the decompression routine 56 in the process of decompressing the fifth compressed data packet 78 would have encountered its stream index 86 having a value of “97” and thus would have skipped over storage locations 49 - 96 in order to store the first data element 92 of the decompressed fifth mirror 94 at storage location 97 in the storage array 60 .
- Subsequent data elements 92 were sequentially stored in successive storage locations. As such, the data element 92 stored at storage location 47 in the storage array 60 is spaced from the data element 92 at the storage location 97 therein.
- an acknowledgement signal 98 “ ⁇ ACK4>” has been received in respect of the compressed data packet 78 that corresponds with the fourth uncompressed data packet 66 , i.e., the one whose data elements 72 are stored in storage locations 73 - 96 .
- the data elements 72 stored at storage locations 73 - 96 have had their status indicator 74 changed from “invalid” to “valid”.
- storage locations 73 - 96 in the storage array are no longer blank and rather have data elements 92 stored therein that correspond with the received and decompressed fourth compressed data packet 78 , and which resulted from receipt of the compressed data packet 78 that corresponds with the fourth uncompressed data set 66 .
- the stream index 86 that corresponded with the fourth uncompressed data set 66 was representative of the value “73” since the first data element 72 thereof is stored at storage location 73 in the storage array 36 , and the decompression routine 56 thus stored at the storage location 73 in the storage array 60 the first data element 92 that was decompressed from the fourth compressed data packet 78 .
- Successive data elements 92 were successively stored in storage locations 74 - 96 whereby the fourth and fifth mirrors 94 are adjacent one another at storage locations 96 and 97 in the storage array 60 .
- FIG. 2G demonstrates that an acknowledgement signal 98 “ ⁇ ACK3>” has been received in respect of the compressed data packet 78 that corresponded with the third uncompressed data sets 66 whose data elements 72 are stored in the storage locations 49 - 72 . As such, these data elements 72 have had their status indictor 74 changed from “invalid” to “valid”. FIG. 2G further indicates that the storage locations 49 - 72 in the storage array 60 now have data elements 92 stored therein that correspond with the third uncompressed data set 66 and that form a third mirror 94 thereof.
- the stream index 86 of the third uncompressed data set 66 would be representative of the value “49” based upon the first data element 72 of the third uncompressed data set 66 being stored at storage location 49 in the storage array 36 , which would have indicated to the decompression routine 56 the storage location the first data element 92 of the third mirror 94 should be stored at the storage location 49 in the storage array 60 .
- FIG. 2H depicts the receipt by the wireless transceiver 24 of an acknowledgement signal 98 “ ⁇ ACK6>” in respect of the sixth uncompressed data set 66 whose data elements 72 are stored at storage locations 121 - 139 in the storage array 36 .
- the corresponding status indicators 74 of such data elements 72 have been changed from “invalid” to “valid”.
- Corresponding data elements 92 have been added to storage array 60 at storage locations 121 - 139 based upon the stream index 86 of the sixth uncompressed data set 66 being representative of the value “121” for reasons that will be apparent.
- the data elements 72 stored at storage locations 35 - 37 in the storage array 36 could be considered to be another target string 80 that is identical to the data elements 72 stored at storage locations 2 - 4 in the storage array 36 . Since the data elements 72 stored at storage locations 2 - 4 in the storage array 36 each have a status indicator 74 that is “valid”, such string of data elements 72 could be a reference string 84 for the aforementioned target string 80 . It is reiterated that FIG.
- reference string 84 stored at storage locations 52 - 53 “AN” could have been employed to compress the identical target string 80 “AN” stored at storage locations 67 - 68 in the storage array 36 since they were both in the same uncompressed data set 66
- such reference string 84 at storage locations 52 - 53 could not have been employed to compress the potential target string “AN” at storage locations 82 - 83 in the storage array 36 of the fourth uncompressed data set 66 since the two are separate uncompressed data sets 66 .
- the data elements 72 in the first and second uncompressed data sets 66 that are stored at storage locations 1 - 48 in the storage array 36 had a status indicator 74 that was “valid”, and the string of data elements 72 stored at storage locations 24 - 26 “SPE” would have served as a reference string 84 when the target string 80 “SPE” made up of the character string stored at storage locations 114 - 116 in the fifth uncompressed data set 66 were being compressed.
- the indicated reference string 84 at storage locations 24 - 26 spans two uncompressed data sets 66 , i.e., the first and second.
- the stream index 86 enables sequential storage of data elements 72 and 92 , the various data elements 72 lose any identity as being from a particular uncompressed data set 66 once their status indicator 74 has been changed from “invalid” to “valid”.
- Other target strings 80 and reference strings 84 may be found in the data stream 62 without departing from the present concept.
- routines 32 and 56 do not simply erase or save elsewhere the contents of the storage arrays 36 and 60 . Rather, the storage arrays 36 and 60 are successively overwritten with new data elements 72 and 92 beginning at the storage locations 1 and progressing sequentially onward from there.
- the reference itself that refers to the reference string 84 can be in any of a wide variety of forms.
- the reference might include an offset value and a length, with the offset value being representative of both a relative location in the storage array 36 that is situated a number of data elements 72 prior to the target string 80 as well as a relative location in the storage array 60 that is situated an equal number of data elements 92 prior to a current location in the storage array 60 where the reference is encountered.
- the offset can span multiple uncompressed data sets 66 and multiple corresponding mirrors 94 (or portions of the storage array 60 that are empty) and can even restart itself at the end of the storage arrays 36 and 60 if the offset would extend beyond the initial storage location 1 in the storage arrays 36 and 60 , at which point the offset would restart at the end of the storage arrays 36 and 60 and continue onward therefrom.
- the length in the reference would be representative of the quantity of data elements (beginning at the obtained offset) that are to be retrieved and saved at the current location in the storage array 60 where the reference has been encountered.
- Other methodologies of providing a reference can be employed without departing from the present concept.
- FIG. 3 An improved method in accordance with the disclosed and claimed concept is depicted generally in FIG. 3 and begins with the storing of the data elements 72 in the storage array 36 as an uncompressed data set 66 , as at 122 .
- An invalid status is assigned to the data elements 72 , as at 128 .
- the data elements 72 of the uncompressed data set 66 are subjected to a data compression routine 32 to form a compressed data packet 78 , as at 134 .
- the compressed data packet 78 including a corresponding stream index 86 , is transmitted toward the wireless transceiver 48 , as at 140 .
- An acknowledgement signal 98 is received, as at 146 , at the wireless transceiver 24 , which results in the changing of the data elements 72 of the acknowledged uncompressed data set 66 from the “invalid” status to the “valid” status, as at 152 .
- the disclosed and claimed concept thus provides an improved method and apparatus for providing compression/decompression data transfer. It does so in a fashion that does not require significant additional memory or transmission overhead and thus is highly advantageous.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
- The instant application claims priority from U.S. Provisional Patent Application No. 62/018,732 filed Jun. 30, 2014, the disclosures of which are incorporated herein by reference.
- 1. Field
- The disclosed and claimed concept relates generally to data processing systems and, more particularly, to a data compression and decompression system that is usable as part of a wireless data communication apparatus.
- 2. Related Art
- Most computerized systems employ the communication of data from one location to another in order to perform operations. Within a computer, the communication of data typically occurs across a data bus, such as when data is communicated between a processor and a storage. It is also well known to wirelessly communicate data from one location to another separate location using any of a wide variety of data protocols.
- In nearly all applications, the bandwidth of data communication is limited by one or more constraints. Wireless data communication systems are notoriously subject to such bandwidth limitations. A number of methodologies have been developed to alleviate the effects of such bandwidth limitations that are applicable both in wireless and in wired applications. One solution has involved data compression and subsequent decompression wherein data is compressed using any of a variety of data compression algorithms. Compressed data is then wirelessly transmitted as one or more data packets to another location where the data packets are then decompressed to obtain the original data content. While such data compression/decompression methodologies and systems have been generally effective for their intended purposes, they have not been without limitation.
- Several commonly used data compression/decompression methodologies involve comparing a stream of data with previously-communicated streams of data in order to find target strings of data elements that are identical to previously-sent reference strings of data elements. If such an identity is found, the target string of data that otherwise would be transmitted is instead simply replaced with a reference to the reference data string. In order to make such a system work, however, it is typically necessary to maintain a history of past data transmissions or a “dictionary” on both the compression side and the decompression side in order to store previously-communicated data. This enables the decompression algorithm to find the previously-communicated reference string on the decompression side and to replace the communicated reference to that reference string with the previously-communicated reference string itself. Limitations have been encountered, however, with the use of such a dictionary because data storage capabilities typically are limited, and the “dictionary” on each of the compression and decompression sides must likewise be even further limited. Moreover, the sending of a compressed data packet does not always mean that the data packet is received on the decompression side. Such data packets have been known to be lost or delivered out of sequence, and increasing the size of the “dictionary” on the compression and/or decompression sides is not always practical or even possible.
- Some attempts have been made to overcome the shortcomings known in the relevant art. Such attempts have included completely erasing the dictionaries on the compression and decompression sides in the event of a lost or delayed data packet. Other solutions have involved the use of a history vector that is at the beginning of each packet, but the transmission overhead required to communicate such a vector increases linearly with the size of the history buffer that is used, which makes this method somewhat inefficient in certain circumstances. It thus would be desirable to provide a solution that overcomes certain shortcomings in the relevant art.
- An improved data compression/decompression methodology and system stores in a compression-side dictionary the data that has been transmitted and additionally applies to such data in the compression-side dictionary a status of being “invalid” for purposes of use as a reference in data compression until an acknowledgement signal has been received from the decompression side indicating that such data has been received. Once the compression side has received the acknowledgement signal indicating that the data in the form of a compressed data packet has been received on the decompression side, the status is changed from being “invalid” into being “valid”, i.e., into being usable as reference data for use in compressing further data elements in the data stream. Each data packet includes a stream index which is representative of the memory location in the compression-side dictionary where the first data element of the uncompressed data set that is represented by the data packet is stored. The stream index is used on the decompression side to determine the location in a decompression-side dictionary storage array where the received data packet (as decompressed) should be stored. With the use of the stream index, data packets can be received in any order and stored at the correct sequential location in the decompression-side dictionary.
- Accordingly, an aspect of the disclosed and claimed concept is to provide an improved system and method for compression/decompression data transfer.
- Another aspect of the disclosed and claimed concept is to provide an improved compression/decompression data transfer method and apparatus that provide improved performance without requiring correspondingly increased data storage.
- Accordingly, as aspect of the disclosed and claimed concept is to provide an improved method of communicating at least a portion of a data stream between a first location and a second location. The method can be generally stated as including, for each uncompressed data set of a number of uncompressed data sets of the data stream, sequentially storing in a storage a number of data elements of the uncompressed data set, a first data element of the number of data elements being stored at a given location in the storage, storing in the storage an indication that the number of data elements each have a first status assigned thereto, subjecting the number of data elements to a data compression routine to form from the uncompressed data set a corresponding compressed data packet, which can be generally stated as including determining that a string of data elements of the number of data elements is identical to a string of other data elements of the data stream that are stored in the storage and to which a second status has been assigned and, responsive thereto, replacing the string of data elements with a reference to the string of other data elements. The method further comprises transmitting toward the second location the corresponding compressed data packet and a corresponding stream index that is representative of the given location and, for each uncompressed data set of at least some of the number of uncompressed data sets, receiving an acknowledgement signal representative of the corresponding compressed data packet being received at the second location and, responsive thereto, changing in the storage the indication of the number of data elements of the uncompressed data set from having the first status assigned thereto into having the second status assigned thereto.
- Another aspect of the disclosed and claimed concept is to provide an improved method of communicating at least a portion of a data stream between a first location and a second location. The method can be generally stated as including, for each uncompressed data set of a number of uncompressed data sets of the data stream, sequentially storing in a storage a number of data elements of the uncompressed data set, a first data element of the number of data elements being stored at a given location in the storage, storing in the storage an indication that the number of data elements each have a first status assigned thereto, subjecting the number of data elements to a data compression routine to form from the uncompressed data set a corresponding compressed data packet, which can be generally stated as including determining that another string of data elements of the number of data elements is identical to a further string of data elements of the number of data elements and, responsive thereto, replacing one of the another string and the further string with a reference to the other of the another string and the further string. The method further comprises transmitting toward the second location the corresponding compressed data packet and a corresponding stream index that is representative of the given location and, for each uncompressed data set of at least some of the number of uncompressed data sets, receiving an acknowledgement signal representative of the corresponding compressed data packet being received at the second location and, responsive thereto, changing in the storage the indication of the number of data elements of the uncompressed data set from having the first status assigned thereto into having the second status assigned thereto.
- Another aspect of the disclosed and claimed concept is to provide an improved data communication apparatus that is structured to communicate at least a portion of a data stream between a first location and a second location. The data communication apparatus can be generally stated as including a hardware apparatus that can be generally stated as including a processor apparatus comprising a processor and a storage, an input apparatus structured to provide input signals to the processor apparatus, and an output apparatus structured to receive output signals from the processor apparatus, the storage having stored therein a number of routines which, when executed on the processor, cause the hardware apparatus to perform operations that can be generally stated as including, for each uncompressed data set of a number of uncompressed data sets of the data stream, sequentially storing in the storage a number of data elements of the uncompressed data set, a first data element of the number of data elements being stored at a given location in the storage, storing in the storage an indication that the number of data elements each have a first status assigned thereto, subjecting the number of data elements to a data compression routine to form from the uncompressed data set a corresponding compressed data packet, which can be generally stated as including determining that a string of data elements of the number of data elements is identical to a string of other data elements of the data stream that are stored in the storage and to which a second status has been assigned and, responsive thereto, replacing the string of data elements with a reference to the string of other data elements. The method further comprises transmitting toward the second location the corresponding compressed data packet and a corresponding stream index that is representative of the given location and, for each uncompressed data set of at least some of the number of uncompressed data sets, receiving an acknowledgement signal representative of the corresponding compressed data packet being received at the second location and, responsive thereto, changing in the storage the indication of the number of data elements of the uncompressed data set from having the first status assigned thereto into having the second status assigned thereto.
- A further understanding of the disclosed and claimed concept can be gained from the following Description when read in conjunction with the accompanying drawings in which:
-
FIG. 1 is a schematic depiction of an improved data communication apparatus in accordance with the disclosed and claimed concept; -
FIG. 2 can be said to compriseFIGS. 2A-H and depicts compression-side and decompression-side storage arrays that contain dictionaries that change throughoutFIGS. 2A-H responsive to various occurrences; and -
FIG. 3 is an exemplary flowchart depicting certain aspects of an improved invention in accordance with the disclosed and claimed concept. - Similar numerals refer to similar parts throughout the specification.
- An improved
data communication apparatus 4 is depicted generally inFIG. 1 . Thedata communication apparatus 4 can be said to include ahardware apparatus 6 that includes acompression apparatus 8 and adecompression apparatus 10. Thedata communication apparatus 4 further includes aninput data stream 12 that is in electronic communication with thecompression apparatus 8 and anoutput data stream 14 that is in electronic communication with thedecompression apparatus 10. As used herein, the expression “compression” and “decompression” shall refer generally to operations that compact and expand portions of a data stream for use in reducing the bandwidth of data that is communicated between two different locations. - The
compression apparatus 8 can be generally described as including aninput apparatus 16, anoutput apparatus 18, and aprocessor apparatus 20. Thecompression apparatus 8 further includes a transceiver which, in the depicted exemplary embodiment, is awireless transceiver 24 that can be said to include a reception component that is a part of theinput apparatus 16 and to further include a transmission component that is a part of theoutput apparatus 18. - The
processor apparatus 20 can be said to include aprocessor 26 and amemory 30 in operative communication with one another. Theprocessor 26 can be any of a wide variety of data processors, and thememory 30 can be any of a wide variety of types of data storage that include RANI, ROM, EPROM, EEPROM, FLASH, and the like without limitation. Thememory 30 has stored therein a number ofroutines 32 that expressly include acompression routine 32 having an algorithm that performs data compression operations and other operations. As employed herein, the expression “a number of” shall refer broadly to any non-zero quantity, including a quantity of one. Theroutines 32 can be executed on theprocessor 26 to cause thecompression apparatus 8 to perform various operations. A portion of thememory 30 is designated as astorage array 36 within which a compression-side dictionary 68 is stored. - The
decompression apparatus 10 likewise includes aninput apparatus 38, anoutput apparatus 42, aprocessor apparatus 44, and a transceiver which, in the depicted exemplary embodiment, is awireless transceiver 48, with thewireless transceiver 48 having reception and transmission components that can be considered to be a part of the input andoutput apparatuses processor apparatus 44 includes aprocessor 50 and amemory 54 having a number ofroutines 56 stored therein, expressly including adecompression routine 56. A portion of thememory 54 is designated as astorage array 60 which is intended to have stored therein a decompression-side dictionary 96 that is, at least in part, a mirror of the compression-side dictionary 68. - The
wireless transceivers compression apparatus 8 and thedecompression apparatus 10. In the depicted exemplary embodiment the data link is wireless in nature. It is expressly noted, however, that the data link could instead be a wired data link while still embodying the teachings presented herein and while still being within the scope of the present concept. - An
example data stream 62 is depicted inFIG. 1 as being communicated via theinput data stream 12 to thecompression apparatus 8. Thedata stream 62 is in the exemplary form of text formed from Latin letters, but it is understood that thedata stream 62 could take any form without departing from the present concept. As will be set forth in greater detail below, thedata stream 62 is processed by theroutines 32 to form a number ofuncompressed data sets 66 that are stored in thestorage array 36 as the compression-side dictionary 68. While in the exemplary depicted embodiment almost all uncompressed data sets 66 are twenty-four characters in length, this is only for the purposes of explanation, and there is no requirement for all uncompressed data sets 66 to be of any particular length or of equal lengths, anduncompressed data sets 66 can be of any length that is supported by the underlying data transmission method. - As can be seen in
FIG. 2A , the first uncompressed data set 66 formed from thedata stream 62 includes twenty-fourdata elements 72 that are stored in an equal number of storage locations which, for reasons of simplicity of disclosure, are numbered 1-24. Eachdata element 72 in the compression-side dictionary 68 further has astatus indicator 74 associated therewith that provides an indication of whether thedata element 72 is considered to be “invalid” or “valid” for purposes of use in the compression of future uncompressed data sets 66. An invalid status is indicated by a mathematical minus sign (“−”) and indicates that the correspondingdata element 72 is unusable to compress anotheruncompressed data set 66. In contrast, a “valid” status is represented by a plus sign (“+”) and indicates that the correspondingdata element 72 can be used in compressing future uncompressed data sets 66. - While the
exemplary data sets 72 are depicted herein as being Latin letters, it is understood that such Latin letters are exemplary only. It is thus understood that thedata elements 72 in other embodiments could be other language characters, other types of symbols, data bytes, data bits, and the like without limitation while still remaining within the scope of the present concept. - The
compression routine 32 is operable to compress theuncompressed data set 66, such as is depicted generally inFIG. 2A , into a compressed data packet 78 (FIG. 1 ) that eventually can be transmitted from thewireless transceiver 24 on the compression side to thewireless transceiver 48 on the decompression side to communicate thecompressed data packet 78 from thecompression apparatus 8 at a first location to thedecompression apparatus 10 at a second, different, location. Theexemplary compression routine 32 operates by determining whether any given string ofdata elements 72 that exists sequentially within theuncompressed data set 66 is identical to a previous string ofdata elements 72 that occurred sequentially prior to, i.e., previously, in the compression-side dictionary 68. This can occur in any of a variety of fashions and can include, for instance, character comparisons, the use of hash tables or search trees, etc., without limitation. - However the searching is performed, compression involves the identification of a
target string 80 which, as is depicted inFIG. 2A , is the set of fourdata elements 72 that are stored in memory locations 18-21. These four data elements 72 (a <SPACE > followed by the letters “YOU”) is identical to areference string 84 that is comprised of the fourdata elements 72 stored at storage locations 8-11. Theexemplary compression routine 32 will replace the fourdata elements 72 that make up thetarget string 80 with a reference to thereference string 84. The reference itself will typically include the initial data location which, in this case, is thestorage location 8, followed by a length which, in this case, is the quantity four, i.e., the reference to the reference string indicates that thetarget string 80 has been replaced with the fourdata elements 72 that begin at thestorage location 8. As will be set forth in greater detail below, when thecompressed data packet 78 is decompressed by thedecompression apparatus 10, thedecompression routine 56 will encounter the reference to thereference string 84 and will copy thereference string 84 and insert it at the current location in place of the reference. - The
uncompressed data set 66 that is depicted inFIG. 2A has astream index 86 which, in the depicted exemplary embodiment, is representative of the storage location where thefirst data element 72 in theuncompressed data set 66 is stored which, in the instant example, is the storage location numbered “1”. When theuncompressed data set 66 is compressed into thecompressed data packet 78, thestream index 86 is added as a header on thecompressed data packet 78. As such, when thecompressed data packet 78 is received by thewireless transceiver 48 of thedecompression apparatus 10 and is subjected to decompression by thedecompression routine 56, thestream index 86 indicates to thedecompression routine 56 the location in thestorage array 60 where thefirst data element 72 that is decompressed from thecompressed data packet 78 should be placed.Subsequent data elements 72 that are decompressed from thecompressed data packet 78 are sequentially stored in successive storage location in thestorage array 60. While thestream index 86 that is communicated in the instant example is the digit “1”, it need not necessarily be numerical in nature and merely is representative of a storage location. In this regard, it could be of virtually any foam without limitation, as long as the particular form allows references in subsequently transmittedcompressed data packets 78 to refer to data elements in prioruncompressed data sets 66 as stored in thestorage array 60. - As can be understood from
FIG. 2B-2H , thestorage array 60 includes a plurality of numbered storage locations into whichdata elements 92 can be stored to form amirror 94 at the decompression side of theuncompressed data set 68 that is stored in thestorage array 36 at the compression side. The various mirrors 94 of the various uncompressed data sets 66 together faun in thestorage array 60 the decompression-side dictionary 96 which ultimately will be the same as the compression-side dictionary 68 if it is assumed that all compresseddata packets 78 that are transmitted by thewireless transceiver 24 on the compression side are received by thewireless transceiver 48 on the decompression side, as will be set forth in greater detail below. - When any given
compressed data packet 78 is received on the decompression side by thewireless transceiver 48 and is decompressed by thedecompression routine 56, anacknowledgement signal 98 is transmitted by thewireless transceiver 48 from the decompression side to thewireless transceiver 24 on the compression side to acknowledge receipt of thecompressed data packet 78. The various acknowledgement signals 98 are designated herein as <ACK1>, <ACK2>, <ACK3>, etc. to represent the first, second, and thirdcompressed data packets 78 that are described herein as being transmitted by thewireless transceiver 24, as will be set forth in greater detail below, it being understood that thenumerals acknowledgement signal 98 of any givencompressed data packet 78 includes thecorresponding stream index 86, i.e., the stream index of theuncompressed data set 66 that was represented by thecompressed data packet 78 that was acknowledged by thewireless transceiver 48. In the depicted exemplary embodiment, the stream index is a sixteen bit value which might be, for example, 1 through 65,536, although it may be more or less than sixteen bits without departing from the present concept. Eachexemplary stream index 86 mentioned herein is a relatively modest value, such as 1, 25, 49, 97, and the like for reasons of simplicity of disclosure. - The
acknowledgement signal 98 in the depicted exemplary embodiment further includes a signal or value that is representative of the quantity ofdata elements 92 that were decompressed from the receivedcompressed data packet 78. The quantity of data elements reflected in theacknowledgement signal 98 should be equal to the quantity of data elements in the correspondinguncompressed data set 66. Alternatively, theacknowledgement signal 98 may identify thecompressed data packet 78 to which it corresponds in some other fashion, and thememory 30 may have stored therein data associated with eachuncompressed data set 66 that includes the corresponding storedstring index 86 and its corresponding quantity of data elements. This may be used if it is desired not to transmit this particular information as a part of theacknowledgement signal 98. - Upon receipt of the
acknowledgement signal 98 at the compression side by thewireless transceiver 24, thedata elements 72 in thestorage array 60 that had been represented by the acknowledgedcompressed data packet 78 are altered by theroutines 32 change theirstatus indicator 74 from “invalid” to “valid”. This is depicted inFIGS. 2A-2B with the minus symbol (“−”) ofcertain data elements 72 being changed to a plus symbol (“+”). As suggested elsewhere herein, adata element 72 that is of a “valid” status is usable as a part of areference string 84 during the compression of other uncompressed data sets 66. - It is noted that when any given uncompressed data set 66 is undergoing compression with the
compression routine 32, thevarious data elements 72 within the particular uncompressed data set 66 are usable to compress other portions of the sameuncompressed data set 66. For instance, the firstuncompressed data set 66 is depicted herein as being stored at the storage locations 1-24. Theaforementioned target string 80 that is depicted inFIG. 2A as being thedata elements 72 stored at storage locations 18-21 and thereference string 84 inFIG. 2 that includes thedata elements 72 stored at storage locations 8-11 are identical in theuncompressed data set 66. It thus can be seen that despite the “invalid”status indicators 74 that are indicated for each of thedata elements 72 in that uncompressed data set 66, this does not prevent thevarious data elements 72 from being used to compress other portions of the same uncompressed data set 66, which provides enhanced compression. - Some examples of compression and decompression are set forth below.
FIG. 2A depicts as the first uncompressed data set 66 the first twenty-four letters of thedata stream 62 stored in storage locations 1-24. As mentioned above, thefirst data element 72 of theuncompressed data set 66 is stored atstorage location 1, and thecorresponding stream index 86 thus is likewise representative of the value “1”. Thestorage array 60 is represented as being completely empty and is representative of the firstcompressed data packet 78 not yet having been received on the decompression side. - The
data elements 72 of the first uncompressed data set 66 which are stored in storage locations 1-24 each have an “invalid”status indicator 74 associated therewith. This indicates that anacknowledgement signal 98 that would correspond with theuncompressed data set 66 has not yet been received by thewireless transceiver 24. In this regard, it is noted that the various conditions of thestorage array 36 that are depicted herein are not intended to reflect whether the correspondingcompressed data packets 78 have actually been transmitted by thewireless transceiver 24, but rather are intended to demonstrate the fact that thevarious data elements 72 have been loaded into thestorage array 36. This is regardless of whethersuch data elements 72 have been compressed into compresseddata packets 78 and likewise regardless of whether any suchcompressed data packets 78 have been transmitted by thewireless transceiver 24. -
FIG. 2B first demonstrates the receipt of theacknowledgement signal 98 “<ACK1>”, which corresponds with theuncompressed data set 66 stored at storage locations 1-24, being received by thewireless transceiver 24 from thewireless transceiver 48. As a result, thedata elements 72 stored at storage locations 1-24 have had theirstatus indicator 74 changed from “invalid” to “valid”. Moreover,FIG. 2B depicts thatstorage array 60 has received the same twenty-fourdata elements 92 that are stored in storage locations 1-24. It thus can be understood that since thedata elements 72 that are stored in storage locations 1-24 in thestorage array 36 are mirrored at storage locations 1-24 in thestorage array 60, any reference from this time onward in acompressed data packet 78 to areference string 84 in any one or more of storage locations 1-24 could be found in a mirror fashion in the corresponding storage locations 1-24 in thestorage array 60. As such, thedata elements 72 at storage locations 1-24 in thestorage array 36 would be appropriate for use in compression of other future uncompressed data sets 66, hence the change in thestatus indicator 74 of thedata elements 72 stored at storage locations 1-24 in thestorage array 36 from “invalid” to “valid”. -
FIG. 2B also depicts that anotheruncompressed data set 66 ofdata elements 72 has been loaded into storage locations 25-48 in thestorage array 36. Again,FIG. 2B does not reflect whether or not the second uncompressed data set 66 at storage locations 25-48 has been compressed or whether or not it has been transmitted as acompressed data packet 78 by thewireless transceiver 24, but rather is intended to depict the fact that thedata elements 72 of the second uncompressed data set 66 are stored in storage locations 25-48 and have each been given astatus indicator 74 that is “invalid” because noacknowledgement signal 98 that corresponds with the seconduncompressed data set 66 has been received by thewireless transceiver 24. -
FIG. 2C depicts another a third uncompressed data set 66 and a fourth uncompressed data set 66 being stored at storage locations 49-72 and 73-96, respectively, in thestorage array 36, and all such data elements have received astatus indicator 74 of “invalid” as is indicated by the “minus symbol” associated with each of thedata elements 72 in storage locations 49-96. In the example depicted inFIG. 2C , the four uncompressed data sets 66 sequentially span storage locations 1-96, but anacknowledgement signal 98 has been received only for the firstcompressed data packet 78, as was indicated at the top ofFIG. 2B . - At the top of
FIG. 2D , it can be seen that anacknowledgement signal 98 “<ACK2>” has been received in respect of the seconduncompressed set 66, i.e., the one whosedata elements 72 span storage locations 25-48 of thestorage array 36, andsuch data elements 72 thus have had theirstatus indicator 74 changed from “invalid” to “valid”, i.e., from “−” to “+”. Likewise, the corresponding mirrors 94 of the first and seconduncompressed sets 66 includedata elements 92 stored in storage locations 1-48 in thestorage array 60. In this regard, the second uncompressed data set 66 would have had as itsstream index 86 the numeral “25”. As such, when thecompressed data packet 78 that corresponded with such seconduncompressed data set 66 was received by thewireless transceiver 48, thestream index 86 with the value “25” had indicated to thedecompression routine 56 the particular storage location in thestorage array 60 where thefirst data element 92 of themirror 94 of the second uncompressed data set 66 would be stored and after which thesuccessive data elements 92 would be sequentially stored.FIG. 2D further indicates that a fifth uncompressed data set 66 has been stored in thestorage array 36 at the storage locations 97-120 and that suchnew data elements 72 have received astatus indicator 74 of “invalid”. - At the top of
FIG. 2E , it can be seen that anacknowledgement signal 98 “<ACK5>” for the fifth uncompressed data set 66 has been received by thewireless transceiver 48. As such, theroutines 32 have changed thestatus indicator 74 from “invalid” to “valid” for the correspondingdata elements 72, which are stored at storage locations 97-120.FIG. 2E further indicates that a sixth uncompressed data set 66 has been added to thestorage array 36 in storage locations 121-139, and that such new data elements have astatus indicator 74 that is “invalid”. -
FIG. 2E additionally indicates that thedata elements 92 that correspond with the fifth uncompressed data set 66 have been stored at storage locations 97-120 in thestorage array 60. As can be understood fromFIGS. 2D and 2E , thestream index 86 of the fifth uncompressed data set 66, which is the location in thestorage array 36 where thefirst data element 72 of the fifth uncompressed data set 66 is stored, corresponds with a value of “97”. As such, thedecompression routine 56 in the process of decompressing the fifthcompressed data packet 78 would have encountered itsstream index 86 having a value of “97” and thus would have skipped over storage locations 49-96 in order to store thefirst data element 92 of the decompressedfifth mirror 94 atstorage location 97 in thestorage array 60.Subsequent data elements 92 were sequentially stored in successive storage locations. As such, thedata element 92 stored atstorage location 47 in thestorage array 60 is spaced from thedata element 92 at thestorage location 97 therein. Nevertheless, any instruction by thedecompression routine 56 to traverse from within thefifth mirror 94 at storage locations 97-120 to a location the first or second mirrors (i.e., somewhere amongstorage locations 1 and 48) could be validly executed in order to findreference strings 84 as needed. It also can be seen that the correspondingdata elements 72 stored in storage locations 1-48 and 97-120 of thestorage array 36 all possess astatus indictor 74 that is “valid” inFIG. 2E . - As can be seen in
FIG. 2F , anacknowledgement signal 98 “<ACK4>” has been received in respect of thecompressed data packet 78 that corresponds with the fourthuncompressed data packet 66, i.e., the one whosedata elements 72 are stored in storage locations 73-96. As such, thedata elements 72 stored at storage locations 73-96 have had theirstatus indicator 74 changed from “invalid” to “valid”. Likewise, storage locations 73-96 in the storage array are no longer blank and rather havedata elements 92 stored therein that correspond with the received and decompressed fourth compresseddata packet 78, and which resulted from receipt of thecompressed data packet 78 that corresponds with the fourthuncompressed data set 66. In this regard, it can be understood that thestream index 86 that corresponded with the fourthuncompressed data set 66 was representative of the value “73” since thefirst data element 72 thereof is stored atstorage location 73 in thestorage array 36, and thedecompression routine 56 thus stored at thestorage location 73 in thestorage array 60 thefirst data element 92 that was decompressed from the fourthcompressed data packet 78.Successive data elements 92 were successively stored in storage locations 74-96 whereby the fourth andfifth mirrors 94 are adjacent one another atstorage locations storage array 60. -
FIG. 2G demonstrates that anacknowledgement signal 98 “<ACK3>” has been received in respect of thecompressed data packet 78 that corresponded with the thirduncompressed data sets 66 whosedata elements 72 are stored in the storage locations 49-72. As such, thesedata elements 72 have had theirstatus indictor 74 changed from “invalid” to “valid”.FIG. 2G further indicates that the storage locations 49-72 in thestorage array 60 now havedata elements 92 stored therein that correspond with the third uncompressed data set 66 and that form athird mirror 94 thereof. As can be understood, thestream index 86 of the third uncompressed data set 66 would be representative of the value “49” based upon thefirst data element 72 of the third uncompressed data set 66 being stored atstorage location 49 in thestorage array 36, which would have indicated to thedecompression routine 56 the storage location thefirst data element 92 of thethird mirror 94 should be stored at thestorage location 49 in thestorage array 60. -
FIG. 2H depicts the receipt by thewireless transceiver 24 of anacknowledgement signal 98 “<ACK6>” in respect of the sixth uncompressed data set 66 whosedata elements 72 are stored at storage locations 121-139 in thestorage array 36. Thecorresponding status indicators 74 ofsuch data elements 72 have been changed from “invalid” to “valid”. Correspondingdata elements 92 have been added tostorage array 60 at storage locations 121-139 based upon thestream index 86 of the sixth uncompressed data set 66 being representative of the value “121” for reasons that will be apparent. - With reference to
FIGS. 2A-2H , and particularly with respect toFIG. 2B , thedata elements 72 stored at storage locations 35-37 in thestorage array 36 could be considered to be anothertarget string 80 that is identical to thedata elements 72 stored at storage locations 2-4 in thestorage array 36. Since thedata elements 72 stored at storage locations 2-4 in thestorage array 36 each have astatus indicator 74 that is “valid”, such string ofdata elements 72 could be areference string 84 for theaforementioned target string 80. It is reiterated thatFIG. 2B and the other figures presented herein depict storage in thestorage arrays storage array 36 may be compressed by thecompression routine 32 or transmitted as acompressed data packet 78 by thewireless transceiver 24. - As can be understood from
FIG. 2E , however, that theacknowledgement signal 98 “<ACK5>” was received prior to receiving any acknowledgement of the receipt of the third and fourthuncompressed data sets 66 that are stored in storage locations 49-96 instorage array 36, and it is assumed that the first, second, third, fourth, fifth, and sixthuncompressed data sets 66 were compressed by thecompression routine 32 in sequential order. It is apparent fromFIG. 2E , therefore, that thedata elements 72 of the third uncompressed data set stored in storage locations 49-72 could not have been used (as inFIG. 2D ) as a reference string when thedata elements 72 of the fourth uncompressed data set 66 stored at storage locations 73-96 were compressed. As such, while thereference string 84 stored at storage locations 52-53 “AN” could have been employed to compress theidentical target string 80 “AN” stored at storage locations 67-68 in thestorage array 36 since they were both in the same uncompressed data set 66,such reference string 84 at storage locations 52-53 could not have been employed to compress the potential target string “AN” at storage locations 82-83 in thestorage array 36 of the fourth uncompressed data set 66 since the two are separate uncompressed data sets 66. - It is additionally noted from
FIG. 2D that thedata elements 72 in the first and seconduncompressed data sets 66 that are stored at storage locations 1-48 in thestorage array 36 had astatus indicator 74 that was “valid”, and the string ofdata elements 72 stored at storage locations 24-26 “SPE” would have served as areference string 84 when thetarget string 80 “SPE” made up of the character string stored at storage locations 114-116 in the fifth uncompressed data set 66 were being compressed. In this regard, it is expressly noted that the indicatedreference string 84 at storage locations 24-26 spans two uncompressed data sets 66, i.e., the first and second. Since thestream index 86 enables sequential storage ofdata elements various data elements 72 lose any identity as being from a particular uncompressed data set 66 once theirstatus indicator 74 has been changed from “invalid” to “valid”. Other target strings 80 andreference strings 84 may be found in thedata stream 62 without departing from the present concept. - When the
storage arrays routines storage arrays storage arrays new data elements storage locations 1 and progressing sequentially onward from there. - The reference itself that refers to the
reference string 84 can be in any of a wide variety of forms. In one form, the reference might include an offset value and a length, with the offset value being representative of both a relative location in thestorage array 36 that is situated a number ofdata elements 72 prior to thetarget string 80 as well as a relative location in thestorage array 60 that is situated an equal number ofdata elements 92 prior to a current location in thestorage array 60 where the reference is encountered. The offset can span multiple uncompressed data sets 66 and multiple corresponding mirrors 94 (or portions of thestorage array 60 that are empty) and can even restart itself at the end of thestorage arrays initial storage location 1 in thestorage arrays storage arrays - The length in the reference would be representative of the quantity of data elements (beginning at the obtained offset) that are to be retrieved and saved at the current location in the
storage array 60 where the reference has been encountered. Other methodologies of providing a reference can be employed without departing from the present concept. - An improved method in accordance with the disclosed and claimed concept is depicted generally in
FIG. 3 and begins with the storing of thedata elements 72 in thestorage array 36 as anuncompressed data set 66, as at 122. An invalid status is assigned to thedata elements 72, as at 128. Thedata elements 72 of theuncompressed data set 66 are subjected to adata compression routine 32 to form acompressed data packet 78, as at 134. Thecompressed data packet 78, including acorresponding stream index 86, is transmitted toward thewireless transceiver 48, as at 140. Anacknowledgement signal 98 is received, as at 146, at thewireless transceiver 24, which results in the changing of thedata elements 72 of the acknowledged uncompressed data set 66 from the “invalid” status to the “valid” status, as at 152. - The disclosed and claimed concept thus provides an improved method and apparatus for providing compression/decompression data transfer. It does so in a fashion that does not require significant additional memory or transmission overhead and thus is highly advantageous.
- While specific embodiments of the disclosed concept have been described in detail, it will be appreciated by those skilled in the art that various modifications and alternatives to those details could be developed in light of the overall teachings of the disclosure. Accordingly, the particular arrangements disclosed are meant to be illustrative only and not limiting as to the scope of the disclosed concept which is to be given the full breadth of the claims appended and any and all equivalents thereof.
Claims (14)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/754,777 US9888094B2 (en) | 2014-06-30 | 2015-06-30 | Data compression and decompression methodology and apparatus |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462018732P | 2014-06-30 | 2014-06-30 | |
US14/754,777 US9888094B2 (en) | 2014-06-30 | 2015-06-30 | Data compression and decompression methodology and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
US20150381774A1 true US20150381774A1 (en) | 2015-12-31 |
US9888094B2 US9888094B2 (en) | 2018-02-06 |
Family
ID=54931889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/754,777 Active 2036-02-05 US9888094B2 (en) | 2014-06-30 | 2015-06-30 | Data compression and decompression methodology and apparatus |
Country Status (1)
Country | Link |
---|---|
US (1) | US9888094B2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160234655A1 (en) * | 2015-02-09 | 2016-08-11 | Gilat Satellite Networks Ltd. | Compression with Multicast Dictionary |
CN105978668A (en) * | 2016-05-06 | 2016-09-28 | 电信科学技术研究院 | Dictionary information synchronization method, device and equipment |
CN106571079A (en) * | 2016-10-14 | 2017-04-19 | 中广核(北京)仿真技术有限公司 | Batch data communication method for nuclear power plant, interface, and three-dimensional virtual reality system |
CN107302585A (en) * | 2017-07-11 | 2017-10-27 | 电信科学技术研究院 | A kind of preset dictionary synchronous method and equipment |
WO2021000763A1 (en) * | 2019-07-03 | 2021-01-07 | 大唐移动通信设备有限公司 | Data transmission method and apparatus |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5502439A (en) * | 1994-05-16 | 1996-03-26 | The United States Of America As Represented By The United States Department Of Energy | Method for compression of binary data |
US5805086A (en) * | 1995-10-10 | 1998-09-08 | International Business Machines Corporation | Method and system for compressing data that facilitates high-speed data decompression |
US20120221576A1 (en) * | 2011-02-28 | 2012-08-30 | Splunk Inc. | Compressed journaling in event tracking files for metadata recovery and replication |
US20140223030A1 (en) * | 2011-07-12 | 2014-08-07 | Hughes Network Systems, Llc | Data compression for priority based data traffic, on an aggregate traffic level, in a multi stream communications system |
-
2015
- 2015-06-30 US US14/754,777 patent/US9888094B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5502439A (en) * | 1994-05-16 | 1996-03-26 | The United States Of America As Represented By The United States Department Of Energy | Method for compression of binary data |
US5805086A (en) * | 1995-10-10 | 1998-09-08 | International Business Machines Corporation | Method and system for compressing data that facilitates high-speed data decompression |
US20120221576A1 (en) * | 2011-02-28 | 2012-08-30 | Splunk Inc. | Compressed journaling in event tracking files for metadata recovery and replication |
US20140223030A1 (en) * | 2011-07-12 | 2014-08-07 | Hughes Network Systems, Llc | Data compression for priority based data traffic, on an aggregate traffic level, in a multi stream communications system |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160234655A1 (en) * | 2015-02-09 | 2016-08-11 | Gilat Satellite Networks Ltd. | Compression with Multicast Dictionary |
US10051436B2 (en) * | 2015-02-09 | 2018-08-14 | Gilat Satellite Networks Ltd. | Compression with multicast dictionary |
CN105978668A (en) * | 2016-05-06 | 2016-09-28 | 电信科学技术研究院 | Dictionary information synchronization method, device and equipment |
WO2017190541A1 (en) * | 2016-05-06 | 2017-11-09 | 电信科学技术研究院 | Dictionary information synchronization method, apparatus and device |
CN106571079A (en) * | 2016-10-14 | 2017-04-19 | 中广核(北京)仿真技术有限公司 | Batch data communication method for nuclear power plant, interface, and three-dimensional virtual reality system |
CN107302585A (en) * | 2017-07-11 | 2017-10-27 | 电信科学技术研究院 | A kind of preset dictionary synchronous method and equipment |
WO2021000763A1 (en) * | 2019-07-03 | 2021-01-07 | 大唐移动通信设备有限公司 | Data transmission method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
US9888094B2 (en) | 2018-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9888094B2 (en) | Data compression and decompression methodology and apparatus | |
US9768802B2 (en) | Look-ahead hash chain matching for data compression | |
US7770091B2 (en) | Data compression for use in communication systems | |
CN111262876B (en) | Data processing method, device and equipment based on block chain and storage medium | |
US8674858B2 (en) | Method for compression and real-time decompression of executable code | |
US10224957B1 (en) | Hash-based data matching enhanced with backward matching for data compression | |
JP2007124561A (en) | Data compression method and compressed data transmission method | |
US10015285B2 (en) | System and method for multi-stream compression and decompression | |
KR20160123302A (en) | Devices and methods of source-encoding and decoding of data | |
US10855815B2 (en) | Security-oriented compression | |
CN110808738B (en) | Data compression method, device, equipment and computer readable storage medium | |
US8924446B2 (en) | Compression of small strings | |
CN107241417A (en) | A kind of method, system, transmitting terminal and the receiving terminal of file transmission | |
CN110888918A (en) | Similar data detection method and device, computer equipment and storage medium | |
US10506388B1 (en) | Efficient short message compression | |
US11569841B2 (en) | Data compression techniques using partitions and extraneous bit elimination | |
CN112148694B (en) | Data compression method and data decompression method for electronic equipment and electronic equipment | |
JP4456574B2 (en) | Compressed data transmission method | |
US20170048303A1 (en) | On the fly statistical delta differencing engine | |
US10491241B1 (en) | Data compression scheme utilizing a repetitive value within the data stream | |
US20190020743A1 (en) | Data transmitting apparatus, data receiving apparatus and method thereof | |
US8593310B1 (en) | Data-driven variable length encoding of fixed-length data | |
CN112100170B (en) | Method and device for decoding interactive data of database | |
CN112597082B (en) | Bus data transmission method and electronic equipment | |
CN112199343A (en) | Data compression/decompression acceleration method for small data block scene |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: COOPER TECHNOLOGIES COMPANY, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:COURTICE, HARRY JOHN;REEL/FRAME:035935/0600 Effective date: 20150630 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: NATBREWAY PTY LTD AS TRUSTEE FOR NATBREWAY UNIT TR Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EATON INTELLIGENT POWER LIMITED;REEL/FRAME:047809/0947 Effective date: 20180710 |
|
AS | Assignment |
Owner name: EATON INTELLIGENT POWER LIMITED, IRELAND Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:COOPER TECHNOLOGIES COMPANY;REEL/FRAME:048207/0819 Effective date: 20171231 |
|
AS | Assignment |
Owner name: EATON INTELLIGENT POWER LIMITED, IRELAND Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE COVER SHEET TO REMOVE APPLICATION NO. 15567271 PREVIOUSLY RECORDED ON REEL 048207 FRAME 0819. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNOR:COOPER TECHNOLOGIES COMPANY;REEL/FRAME:048655/0114 Effective date: 20171231 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: SMAL); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
FEPP | Fee payment procedure |
Free format text: SURCHARGE FOR LATE PAYMENT, SMALL ENTITY (ORIGINAL EVENT CODE: M2554); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY Year of fee payment: 4 |