US4876541A - Stem for dynamically compressing and decompressing electronic data - Google Patents
Stem for dynamically compressing and decompressing electronic data Download PDFInfo
- Publication number
- US4876541A US4876541A US07/108,929 US10892987A US4876541A US 4876541 A US4876541 A US 4876541A US 10892987 A US10892987 A US 10892987A US 4876541 A US4876541 A US 4876541A
- Authority
- US
- United States
- Prior art keywords
- strings
- dictionary
- characters
- data
- match
- 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.)
- Expired - Lifetime
Links
- 238000013144 data compression Methods 0.000 claims abstract description 83
- 238000012217 deletion Methods 0.000 claims abstract description 28
- 230000037430 deletion Effects 0.000 claims abstract description 28
- 238000007906 compression Methods 0.000 claims description 99
- 230000006835 compression Effects 0.000 claims description 99
- 230000006837 decompression Effects 0.000 claims description 36
- 239000000872 buffer Substances 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 8
- 230000003247 decreasing effect Effects 0.000 claims description 4
- 238000003491 array Methods 0.000 claims 1
- 238000000034 method Methods 0.000 description 48
- VQYOKDLEFVOVEV-UHFFFAOYSA-L bis(2,6-diphenylphenoxy)-methylalumane Chemical compound [Al+2]C.[O-]C1=C(C=2C=CC=CC=2)C=CC=C1C1=CC=CC=C1.[O-]C1=C(C=2C=CC=CC=2)C=CC=C1C1=CC=CC=C1 VQYOKDLEFVOVEV-UHFFFAOYSA-L 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 235000015241 bacon Nutrition 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000010187 selection method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- -1 e.g. Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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
Definitions
- the present invention pertains to systems for encoding and decoding electronic data, and more particularly to systems for providing on-line, loss less compression and decompression of character data.
- the textual data compression techniques of Lempel, Ziv and Seery involve storing frequently-appearing strings of characters in memory.
- a pointer to the stored string of characters is transmitted in place of the full string when a new string of characters appears in the input stream that matches the stored string of characters.
- the pointer for the matched string is transmitted along with the first character of the new string of characters, with the first character being transmitted in uncompressed form.
- T. A. Welch developed data compression techniques that are similar to those of Seery and Ziv.
- the Welch compression techniques are described in the article "A Technique for High-Performance Data Compression", IEEE Computer, vol. 17:6, p. 8-19, 1984, and in U.S. Pat. No. 4,558,302 to Welch.
- the Welch compression techniques suffer from the same drawbacks as the Seery and Ziv techniques. Specifically, in the Welch techniques the first character of the new string of characters is transmitted in uncompressed form along with the matched string, with the result that less than optimal compression is achieved. Also, once the memory of the data system used is full, no new strings of data can be added, with the result that less than optimal compression is achievable when the arrangement of characters in the data input stream frequently changes.
- J. A. Storer and T. G. Szymanski developed an off-line data compression technique that involved transmitting an index identifying a stored string of data in place of an identical string of data received in the data input stream.
- the Storer and Szymanski technique differs from the technique of Lempel and Ziv in that the former technique is off-line and is more concerned with the maintenance of dictionaries of stored strings including pointers identifying the strings, while the latter technique is on-line and is oriented more toward the information theoretic properties of data compression.
- the Storer and Szymanski technique is described in the article "Data Compression via Textual substitution", Journal of the Association for Computing Machinery, vol. 29, No. 4, p. 928-951, 1982.
- V. S. Miller and M. N. Wegman developed another first-character growing strategy data compression technique.
- the Miller/Wegman technique uses a least recently used queue for arranging stored strings of data for storage in memory in accordance with an identity (“ID") strategy. This ID strategy involves concatenating the entire current match with the entire previous or last match.
- ID identity
- the Miller/Wegman technique is described in the article "Variations on a theme by Lempel and Ziv", Combinatorial Algorithms on Words, Springer-Verlag (A. horrico and Z. Galil, editors), Berlin, p. 131-140, 1985.
- J. A. Storer developed a practical technique for compressing data loosely based on the data compression technique theories disclosed by Lempel and Ziv and Storer and Szymanski.
- the Storer technique is disclosed in the article "Textual Substition Techniques for Data Compression", Combinational Algorithms on Words (edited by A. horrico and Z. Galil), Springer-Verlag, Berlin, p. 120-121, 1985.
- an encoder and decoder are provided, each having a fixed, finite amount of memory.
- This memory also referred to as a "dictionary”
- a dictionary is adapted to contain a finite number of entries. Each entry has a unique pointer associated therewith.
- the dictionaries at the encoder and decoder may be initialized at the beginning of time to contain identical information. The encoder then repeats forever the following steps:
- the first step performed by the encoder amounts to a greedy algorithm for parsing the input stream.
- Storer indicates that better worst-case performance may be achieved by incorporating a limited amount of look-ahead in the first step performed by the encoder.
- a primary object of the present invention is to provide lossless textual data compression at relatively high rates of compression in real time for data provided over commercial serial data sources such as modems.
- Another object of the present invention is to provide a system for compressing textual data without losses according to novel algorithms for parsing and matching input data strings with strings in the dictionary of the system, including an algorithm for improving parsing of the input data stream by looking ahead at a limited amount of the data input stream.
- Yet another object of the present invention is to provide a system for compressing textual data without losses according to learning algorithms for generating new strings to be added to the dictionary of the system that are distinct from, and novel relative to, the first character growing strategies of Lempel, Ziv, Seery and Welch and the ID growing strategy of Miller and Wegman.
- Still another object of the present invention is to provide a system for compressing textual data without losses according to novel algorithms for arranging and deleting strings of data from the dictionary of the system, including the option of selectively "freezing" a set of strings in the dictionary.
- Yet another object of the present invention is to provide a system for compressing textual data in which rates of data compression are maximized by dynamically varying the size the system's dictionaries.
- a data compression system comprising a data compression module having an encoder for compressing and transmitting compressed textual data and a decoder for receiving and decompressing the compressed textual data in accordance with novel learning algorithms.
- Both the encoder and decoder comprise a dictionary in which a plurality of frequently-appearing strings of characters are stored. Each string is identified by a unique pointer.
- the encoder receives and matches strings of input data with strings of characters stored in the encoder dictionary.
- the pointer for the stored string with which a match is made is then transmitted. This matching is effected using a conventional greedy algorithm, or alternatively, a novel limited-look ahead algorithm.
- the system is designed so that matches at least one character long can always be made with ones of the stored strings. As a result, a pointer is always transmitted after a match has been made, even if the match is one character long. This contrasts with the compression techniques of Seery, Ziv and Welch where matches cannot always be made, and therefore single characters are often transmitted in uncompressed form.
- the update learning algorithm adds N new strings of characters to the encoder and decoder dictionaries, where N equals the number of characters in the newly matched string of data characters Y received from the input data stream.
- the learning algorithm creates the first new string of characters by adding to the string of characters in the dictionary last or previously matched with a string of input data the first character in the string of characters Y.
- the second new string of characters includes the last-matched string of characters plus the first two characters in the new string of characters Y.
- Successive new strings are similarly created until N new strings of characters have been created, with the last new string of characters consisting of the last-matched string of characters and the entire new string of characters Y.
- a modified version of this update learning algorithm is also disclosed herein, wherein the number of strings that can depend from a single non-root node of the dictionary is limited.
- the invention includes a deletion algorithm for arranging the dictionary strings in a modified least recently used queue, in accordance with a special reverse positioning procedure. Using this procedure, the most frequently used strings are positioned near the front of the queue and the least frequently used strings are positioned near the end of the queue.
- the deletion algorithm deletes from the encoder dictionary the approximately least recently used strings of characters to provide room for newly generated strings of characters.
- the deletion algorithm is designed to never delete the basic character set with which the encoder and decoder dictionaries are initialized and may be designed to never delete other characters or strings of characters.
- both encoder and decoder comprise several dictionaries of varying lengths of memory.
- the dictionaries are operated in parallel with one another and the rates of compression achieved by the dictionaries are monitored.
- the dictionary achieving the best rate of compression is used so long as it out performs the other dictionaries.
- the present invention is a data compression system for compressing and decompressing a stream or sequence of digital data character signals.
- the system comprises an encoder for compressing the input data signals, and a decoder for decompressing the compressed data signals.
- Both encoder and decoder have a read-write memory for storing a "dictionary" or string table of frequently-appearing strings of characters. Each string is identified by a unique pointer or code.
- Compression is effected by parsing the data input stream into strings of data characters and then matching each of the parsed strings with a string in the encoder dictionary.
- the pointer associated with each matched string is transmitted in place of the string.
- Decompression is effected by matching each pointer transmitted by the encoder with a corresponding pointer in the decoder's dictionary.
- the string in the decoder's dictionary associated with the matched pointer is then transmitted, completing the decompression process.
- both the encoder and decoder dictionaries are updated to include new or repositioned strings of data based on the data entering the dictionary. This updating is affected such that the dictionaries of the encoder and decoder contain identical strings.
- the present invention may be advantageously employed in both the transmission and storage of electronic data.
- FIG. 1 is a block diagram of the preferred embodiment of the present invention
- FIG. 2 is an example of the contents of the string table or dictionary maintained in memory 22;
- FIG. 3 shows the modified trie organization of the data contained in the dictionary
- FIG. 4 is a flow diagram of the data compression algorithm used by data compression module 20;
- FIG. 5 is a flow diagram of the limited lookahead heuristic (LLH).
- FIG. 6 shows the LLH buffer
- FIG. 7 is an example of an input stream
- FIG. 8 illustrates the manner in which new strings of data are generated using the pure all-prefixes heuristic (PAPH);
- FIG. 9 illustrated the manner in which strings of data are positioned and deleted using the modified least-recently-used heuristic (MLRUH);
- FIG. 10 is a flow diagram of the data decompression algorithm used by module 20;
- FIG. 11 is an example of the contents of dictionary 250
- FIG. 12 shows an example of dynamic dictionary size selection
- FIG. 13 is a flow diagram illustrating the implementation of the dynamic dictionary size selection procedure.
- the present invention comprises one or more data compression modules 20.
- Each module 20 performs both data compression and data decompression.
- a data compression module 20 For data transmission between two separate stations, a data compression module 20 must be provided at both the transmitting station and the receiving station.
- compression will be described as occurring at an encoder and decompression will be described as occurring at a decoder.
- the encoder and decoder are contained in a single data compression module 20.
- Data compression module 20 comprises dynamic memory 22, read-only memory 24, memory controller 26 and microprocessor 28.
- Dynamic memory 22 is preferably a 64KB CMOS static RAM and is satisfactorily implemented using F1600 AM chips.
- Read-only memory 24 is preferably a 32KB CMOS-masked ROM. Memory 24 may be satisfactorily implemented using an LH23257 chip.
- Memory controller 26 is a DMA controller that may be satisfactorily implemented using an 82C37 chip.
- Microprocessor 28 is preferably a 16-bit micro with a 3.9 mHz clock. The microprocessor may be satisfactorily implemented using an 8088C chip.
- Dynamic memory 22 is connected to memory controller 26 so that two-way data communication may be achieved therebetween.
- Read-only memory 24 is connected to memory controller 26 so that two-way data communication may be achieved therebetween.
- Memory controller 26 is connected to microprocessor 28 so that two-way data communication may be achieved therebetween.
- Dynamic memory 22 is provided for holding input data, dictionary data, and other data used by microprocessor 28 for compressing and decompressing input data.
- Read-only memory 24 is provided for storing the firmware used by microprocessor 28 for compressing and decompressing input data.
- Memory controller 26 is provided for controlling communication between microprocessor 28 and dynamic memory 22 and microprocessor 28 and read only memory 24.
- Data compression module 20 also comprises interrupt controller 30, serial input/output port 32, serial input/output port 34, by-pass switch 36, pin connector 38, pin connector 40, X-switch 42 and X-switch 44.
- Interrupt controller 30 may be satisfactorily implemented using a 82C59 chip.
- Serial input/output ports 32 and 34 may be satisfactorily implemented using 82C51A or 8250 ports.
- Bypass switch 34 is conventional a two-way 6-pole switch.
- Pin connectors 38 and 40 are also conventional male 25 pin data communication connectors.
- Microprocessor 28 is connected to interrupt controller 30 so that two-way data communication may be achieved therebetween.
- an 8-bit wide data bus is used to couple microprocessor 28 with interrupt controller 30.
- a 16-bit wide data bus may be employed.
- Serial input/output port 32 is connected to interrupt controller 30 so that two-way data communication may be achieved therebetween.
- Serial input/output port 34 is connected to interrupt controller 30 so that two-way data communication may be achieved therebetween.
- an 8-bit wide data bus is used to couple interrupt controller 30 with I/O ports 32 and 34.
- a 16-bit wide data bus may be employed for coupling the controller 30 with I/O ports 32 and 34.
- Serial input/output port 32 is connected by bus 46 to pin connector 38 so that two-way data communication may be achieved between port 32 and connector 38.
- the latter is adapted for attachment to a "host" or data device 50, such as a source of serial binary-encoded data, e.g. a microcomputer, or a terminal.
- Serial input/output port 34 is connected by bus 48 to pin connector 40 so that two-way data communication may be achieved between port 34 and connector 40.
- the latter is adapted for attachment to a communication link or data device 52, e.g. a modem or a secondary storage source.
- X-switch 42 is connected to the data input and data output pins of pin connector 38.
- X-switch 44 is connected to the data input and data output pins of pin connector 40.
- Bypass switch 36 is connected to both bus 46 and bus 48.
- Interrupt controller 30 is provided for alternately coupling serial ports 32 and 34 with microprocessor 28.
- Bypass switch 36 is provided to allow a user of data compression module 20 to disable the module so that data will pass uncompressed through the module. It may be desirable to pass data uncompressed through module 20 when such data is to be transmitted to a source other than another data compression module 20 and the user does not choose to disconnect the data device 50 from the data compression module. For instance, when a first data compression module 20 is used to communicate data to both a second data compression module and a second receiver not having a data compression module 20, the user will close bypass switch 36, thereby disabling the compression operation of the first data compression module, whenever it is desired to transmit data in uncompressed form to the second receiver.
- serial input/output port 32 Because the data-in and data-out pins of serial input/output port 32 are often reversed with respect to the corresponding pins on the output cable of data device 50, X-switch 42 is provided to ensure proper connection is achieved. By changing the operating state of X-switch 42, the data-in pin on connector 38 may be connected to the data-out pin of the output cable, or vice versa, as the pin-arrangement scheme of the data device requires. Clearly, a similar connection to serial input/output port 32 may be made with other types of data devices 50.
- the operating state of X-switch 44 may be changed, if required, so that the data-in and data-out pins of data device 52 are correspondingly respectively connected to the data-in and data-out pins of serial input/output port 34.
- Clock 54 is connected to data compression module 20 in known manner to control the timing of the various components of the module, as is well known in the art.
- Clock 54 may be implemented using any suitable semiconductor clock chip.
- Power supply 56 is connected to clock 54 and data compression module 20 in known manner to power the clock and the module.
- Power supply 56 is a conventional d.c. power supply.
- data compression module 20 is controlled by instructions sent via data device 50 prior to or during the transmission of input data from device 50. For instance, encode and decode signals may be provided to module 20 via data device 50 to instruct the module to compress or decompress the input data it receives, as described hereinafter. Similarly, data characters may be added to the module's dictionaries for storage therein, as described hereinafter, using data device 50. Thus, operation of module 20 may be effected from a remote location, so long as data device 50 is connected thereto.
- data device 50 For data compression module 20 to function properly, data device 50 must be capable of receiving and responding to an xon/xoff protocol. This protocol is used to disable the transmission of characters from device 50, as when the device transmits characters at a faster band rated than data compression module 20 can accommodate.
- the module 20 When module 20 cannot accept characters at the rate transmitted by device 50, the module 20 sends an xoff signal (typically ctrl/s, if ASCII characters are being used) that when received causes the data device to terminate the transmission of characters.
- Module 20 transmits an xon signal (typically ctrl/q, if ASCII characters are used) when the module is ready to receive characters, so as to instruct data device 50 to begin transmitting characters.
- Data compression module 20 transmits the xon/xoff protocol in accordance with instructions stored in read-only memory 24. Using these instructions and dynamic memory 22, microprocessor 28 transmits the xon or xoff protocol signals to data device 50, as required.
- Data compression module 20 has four modes of operation: a bypass mode, an encode mode, a decode mode and a simultaneous encode/decode mode.
- Module 20 is placed in the bypass, encode, decode or encode/decode modes by transmitting a bypass, encode, decode or encode/decode signal, respectively, from the data device 50 at the beginning of transmission of the character data.
- a bypass signal Upon receipt of a bypass signal, read-only memory 24 instructs module 20 to pass input data through in uncompressed form.
- read-only memory 24 accesses a data compression algorithm stored therein that is used, as described hereinafter, by module 20 to compress input character data.
- memory 24 accesses a data decompression algorithm stored therein that is used, as described hereinafter, by module 20 to decompress compressed input character data.
- memory 24 simultaneously accesses the data compression and data decompression algorithms stored in the memory so as to simultaneously compress input character data and decompress compressed input character data.
- module 20 may be placed in the bypass mode by closing switch 36, as noted above.
- Bypass switch 36 is provided to allow input data to be passed through in uncompressed form when it is not desired to place module 20 in the bypass module using instructions transmitted from data device 50, e.g. when module 20 does not respond to such instructions due to malfunction of the module.
- data compression and decompression is performed in data compression module 20 using a string table or dictionary 100 that is maintained in dynamic memory 22.
- the dictionary comprises a plurality of strings 102.
- Each string 102 comprises a collection of data character signals that represent one or more numbers or textual characters.
- the present invention is adapted, to perform lossless compression with any data character format code.
- dictionary 100 may comprise an infinite number of strings 102. It has been determined, however, that satisfactory compression is achievable with data compression module 20 when the number of strings 102 provided in dictionary 100 ranges from between 2 12 (4096) to 2 16 (65,536) strings.
- dictionary 100 comprises 2 12 strings 102. Dictionaries having lesser or greater numbers of strings, however, may also be satisfactorily employed.
- An initial character set is stored in dictionary 100 comprising each character of the format code used, as well as other combinations of characters.
- this initial character set has 256 elements, although character sets having a greater or lesser number of elements may also be satisfactorily employed.
- an initial character set having 256 elements might include the 128 characters of a known format code, as well as other frequently-appearing characters or combinations of characters.
- Each element of the initial character set constitutes a string 102.
- the strings that together contain the initial character set are permanently stored or "frozen" in the dictionary. As noted below, other strings of characters may also be frozen in the dictionary.
- Each string is uniquely identified by an address or pointer 104 having a length of X bits, where X equals the log exponent defining the dictionary size. For instance, in a dictionary having 2 12 strings, each pointer 104 is defined by a 12 bit code.
- the data organization structure of dictionary 100 illustrated in FIG. 2 is schematic in nature.
- the data structure of dictionary 100 is based on a modified trie organization.
- the characters of the initial character set are stored as an array 110.
- Each character in array 110 constitutes a root node 112 and is assigned a unique address.
- a chain of descendant nodes 114 may depend from each root node 112.
- Each chain of descendant nodes 114 consists of one or more characters, or more precisely, the address(es) of one or more characters.
- a string 102 is created containing the words A DOG. The last entry in the string is identified as a leaf.
- the number of descendant nodes 114 that may depend from a root node 112 is limited only by the size of dictionary 100.
- the number of descendant nodes 114 that may depend from a single descendant node 114 is limited in number to some percentage of the total number of root nodes 112 or characters in array 110. Preferably, this percentage is equal to about 5 to 10 percent of the total number of root nodes 112 in array 110, although other percentages may also provide satisfactory compression.
- 12 descendant nodes 114 may be allowed to depend from each descendant node in the chain of descendants nodes depending from root node 112.
- dictionary 100 may be represented in dynamic memory 22 in a relatively compact form, and a guaranteed worst-case access time per node is established.
- the lengths of strings 102 i.e. the root node 112 plus the number of descendant nodes 114 in given chains of descendants depending therefrom, is limited only by the size of dynamic memory 22.
- the amount of memory needed for dictionary 100 depends on the number of strings stored (e.g., 2 12 strings), not the length of the individual strings.
- dictionary 100 has been described as containing array 110 which includes an initial character set with one or more strings of descendants depending therefrom, dictionary 100 may be also defined by other data structures. For instance, a hashing data structure may be used in place of a trie data structure.
- input data signals are matched with strings 102 in dictionary 100 maintained in dynamic memory 22.
- the pointer 104 associated with each matched string is then transmitted as data output.
- New strings are continually grown in dictionary 100 and least or nearly least recently used strings are continually deleted from the dictionary in accordance with a modified least recently used procedure described hereinafter.
- Memory controller 26 is provided for controlling the sequence in which (1) data is entered and removed from dynamic memory 22 and (2) information is removed from read-only memory 24.
- Interrupt controller 30 is provided for controlling the sequence in which data is input into and output from microprocessor 28, as is well known in the art.
- Data compression module 20 compresses input character data provided thereto from data device 50 using a data compression algorithm stored in read only memory 24.
- This compression algorithm operates in accordance with the various steps of the flow diagram illustrated in FIG. 4. As described hereinafter, the compression algorithm performs data compression using several sub-routine algorithms.
- the compression algorithm and its sub-routine algorithms will be described using the block flow diagrams illustrated in FIGS. 4, 5, and 13 and using the examples illustrated in FIGS. 6-9, 11 and 12. Line by line coding of the algorithms is considered to be well within the skill of an ordinary practitioner and is not, therefore, provided herein.
- data compression module 20 may also be operated to decompress character data, as described hereinafter, module 20 must be notified to process data using the compression algorithm before any character data is processed therein.
- notification occurs in the form of a code transmitted at the beginning of the stream of character data to be compressed.
- microprocessor 28 When microprocessor 28 receives this code, it calls up the compression algorithm stored in read-only memory 24 and then processes input data using the compression algorithm.
- step 200 dictionary 100 is initialized with all characters of the selected underlying alphabet. For instance, if 8 bit long characters are used, as is preferred, 256 root nodes 112 are defined and are initialized with an underlying alphabet consisting of 256 characters. Similarly, if a format code using 7-bit long characters is employed (e.g., ASCII), 128 root nodes 112 are defined and are initialized with a 128 character alphabet.
- a format code using 7-bit long characters is employed (e.g., ASCII)
- 128 root nodes 112 are defined and are initialized with a 128 character alphabet.
- the initial character set may be entered in read-only memory 24 using data device 50.
- read-only memory 24 is implemented using an LH23257 chip, sufficient extra memory is provided to allow a user to plug in a ROM chip to memory 24 containing a customized initial dictionary.
- the input data stream is parsed using a subroutine algorithm referred to herein as the match heuristic ("MH") so as to obtain a character string that matches a string 102 in dictionary 100. Then, the pointer 104 associated with the matched string is transmitted as output.
- MH match heuristic
- a subroutine algorithm referred to as the update heuristic is employed for generating a set of new strings X comprising at least one string x.
- Set X is based, in part, on the characters contained in the current match string t.
- Set of strings X is used to update dictionary 100, as described below in the description of the update algorithm.
- step 206 Several questions are posed at step 206, the answers to which will determine which path the algorithm follows. If the set of strings X is empty or if dictionary 100 is full and the string positioned for deletion from dictionary 100 cannot be deleted from the dictionary, the compression algorithm returns to step 202.
- Set X will be empty, for instance, when dictionary 100 has been updated to include all the strings x in set X. Dictionary 100 will be full and the string positioned for deletion will not be deletable when, for instance, the last string matched consumes the entire memory capacity of dictionary 100.
- the manner in which strings are positioned for deletion from the dictionary is described below in the description of the subroutine algorithm referred to as the deletion heuristic ("DH").
- DH deletion heuristic
- a string x is removed from the set of strings X.
- step 210 a determination is made as to whether or not string x is in dictionary 100, as illustrated by step 210. If string x is found to be in dictionary 100, the algorithm returns to step 206 and removes another string x from the set of strings X. If string X is not in dictionary 100, the compression algorithm continues to step 212.
- step 212 a determination is made as to whether or not dictionary 100 is full. If the dictionary is not full, string x is added to the dictionary as a new string 102, as illustrated by step 214. If the dictionary is full, the compression algorithm proceeds to step 216.
- DH deletion heuristic
- step 206 After string x has been added to dictionary 100, the compression algorithm returns to step 206 and reads in a new string x from the set of strings X. This iteration comprising steps 206-216, inclusive, continues until all the strings x have been removed from the set of strings X, at which point set X is empty. As described above, when set X is empty, the compression algorithm returns to step 202 where a new string is parsed from the input data stream and matched with a string 102 in dictionary 100.
- the match algorithm parses and matches strings from the data input stream with strings 102 in dictionary using a greedy algorithm.
- a limited lookahead heuristic is employed in one embodiment of the invention.
- the match algorithm is stored in read-out memory 24 and performs parsing and matching of data stored in dynamic memory 22.
- the various functions performed by the match algorithm are executed in microprocessor 28.
- the match algorithm parses and matches a string t from the input data stream using a conventional greedy algorithm, e.g. a greedy algorithm of the type disclosed in U.S. Pat. No. 4,558,302 to Welch.
- a conventional greedy algorithm e.g. a greedy algorithm of the type disclosed in U.S. Pat. No. 4,558,302 to Welch.
- the input data stream is parsed so as to remove the longest string t possible that will match a string 102 in dictionary 100.
- This string t is referred to as the "current match”. For instance, if the input data stream contains the characters "THE CAT", and dictionary 100 contains only the 26 characters of the alphabet, string t will contain only the character "T”.
- the pointer 104 associated with the string 102 to which the current match has been made is transmitted as output.
- the greedy algorithm will not produce optimal parsing of the data input stream, i.e., the input data stream will be parsed into more than the minimal number of strings t required to represent the input data.
- dictionary 100 (1) contains an initial set including the characters a and b, (2) is capable of holding only 2 1 strings comprising more than one character, (3) the dictionary currently contains the strings ab and bbbb, and (4) the input data stream contains the character string abbbbab, less than optimal parsing will be achieved using the greedy algorithm.
- the first current match will be ab
- the second current match b the third current match b
- the fourth current match b the fifth current match ab.
- the greedy algorithm will parse the input character stream into five phrases. Under an optimal parsing only three phrases are required: the first current match is a, the second current match is bbb, and the third current match is ab.
- the greedy algorithm provides satisfactory parsing of the data input stream.
- one embodiment of the MH employs a limited lookahead heuristic.
- LH The limited lookahead heuristic
- a limited lookahead heuristic improves parsing significantly while avoiding the need to look arbitrarily far into the input data stream, as is required for optimal parsing, and thereby losing the advantages of real time data compression.
- the LLH employs a buffer for storing the incoming characters of the data input stream.
- This buffer is maintained in dynamic memory 22. So long as the size of the buffer is constant, the compression achieved in the present invention may properly be defined as dynamic. In practice, near optimal parses have been obtained using relatively small buffers, e.g., buffers containing 8 characters or less.
- FIG. 5 describes the steps followed in the LLH in providing optimal parsing of the data input stream.
- Line by line coding of the LLH is considered to be well within the abilities of one skilled in the art and so is not described herein.
- looksize refers to the number of input characters that will be examined in an attempt to optimize the parsing of the input data stream. Preferably, looksize ranges between 2 and 100 with optimal rates of compression being achieved when looksize is equal to about 8.
- the LLH buffer is large enough to accommodate string 2 which begins within, and extends beyond, looksize.
- a string will be permitted to extend only "maxmatch" positions beyond looksize.
- maxmatch ranges from 1 to the total number of positions in the LLH buffer minus looksize, i.e. 1 to about 1000, with optimum results being achieved when maxmatch is equal to about 25.
- csize refers to the number of bits per input character
- psize refers to the number of bits per pointer.
- comp(i+j) refers to the number of bits in the pointer(s) required to represent in compressed form the buffer for which compression ratios have already been calculated.
- Raw (i+j) refers to the number of bits required to represent in uncompressed form the data identified by the pointers having a length comp(i+j).
- Comp(i+j) and raw(i+j) are redefined with each iteration of the lower loop of the LLH algorithm, as discussed hereinafter.
- step 230 Describing now the operation of the LLH algorithm illustrated in FIG. 5, at the first step, step 230, i is set equal to looksize.
- comp(i) is set equal to the number of bits in the pointer(s) associated with the string(s) of characters starting at position i, and extending to looksize or past looksize if the last string in the buffer starts inside but extends beyond looksize.
- raw(i) is set equal to the number of bits required to represent in uncompressed form the data in the same string(s) starting at i and extending to or past looksize.
- i is outside of looksize (to the right of looksize as illustrated in FIG. 6), or more specifically, when looksize ⁇ i ⁇ looksize+maxmatch, comp(i) and raw(i) have a value of 0.
- step 2308 a determination is made as to whether or not a new string (i,j) should be selected. So long as i is greater than 1, no new string is selected and the LLH algorithm proceeds to step 240. At the latter step, the then current value of i is decremented by 1, and the LLH algorithm returns to step 232. By this decrementing, j, the length of the string (i,j), is increased by 1. If i is greater than 1, the LLH algorithm proceeds to step 242.
- the "top” (numerator) and “bottom” (denominator) for a fraction used in the next step are formed.
- the top value is calculated by adding psize, the length of the pointer for the string starting at position i that is j characters long, for the most recently selected string (i,j), to comp[i+j].
- Comp[i+j] is the length of the compressed form of the remainder of the buffer, which was calculated during an earlier iteration, as described below.
- the summation of psize+comp[i+j] is equal to the compressed size of the portion of the buffer starting at position i and extending to looksize, or beyond looksize if the last string in the input stream extends across looksize into the remainder of the LLH buffer.
- the bottom value is calculated by multiplying j by csize for the most recently selected string (i,j) starting at position (i,j) and then adding raw[i+j] to the resulted product.
- Raw[i+j] is the number of raw characters required to represent the characters of the optimal parse taken at position [i+j].
- the LLH algorithm proceeds to step 244 where top is divided by bottom and the resultant quotient is compared with comp[i] divided by raw[i+j] to determine whether or not top/bottom is less than comp[i]/raw[i+j].
- Top/bottom represents the compression achieved for the most recently selected string (i,j).
- Comp[i]/raw[i+j] represents the best compression ratio achieved prior to position (i,j). If top/bottom is not less than comp[i]/raw[i+j], the LLH algorithm returns to step 238. If top/bottom is less than comp[i]/raw[i+j] then the algorithm proceeds to step 246.
- step 246 comp[i] is set equal to the most recently computed value for top and raw[i] is set equal to the most recently computed value for bottom.
- the LLH algorithm returns to step 238.
- FIGS. 5 and 7. an input stream consisting of the characters abbbbab is provided.
- dictionary 100 is assumed to contain only the initialized character set, which includes the characters a and b, and the strings ab and bbbb. This example assumes the present system uses 8-bit characters and 12-bit pointers.
- next match bbbb may or may not be output at step 234 as the next current match depending upon the results of the compression ratio calculation for the next string of input data characters.
- the next string will differ from the current string only in that the character a will be removed from the beginning of the string and a new character will be added to the end of the string. Identical compression ration calculations will be performed similarly on strings subsequently entered into the LLH buffer.
- parsing and matching algorithms may also be satisfactorily employed in place of the greedy algorithm and the LLH.
- a parsing strategy may be employed that is based on looking for common delimiters that define actual boundaries between strings. For instance, for English language text, characters such as "", “.”, and ",” define boundaries between frequently-occurring strings. Such delimiting characters can be determined dynamically by determining the frequency counts (e.g., in English text, the "" character may occur ten times as frequently as the ",” character) of characters.
- a set of strings X is created using an update algorithm, as discussed briefly above. These strings are created using either a pure all-prefixes heuristic ("PAPH”) or a modified all-prefixes heuristic ("MAPH").
- the update algorithm is stored in read-only memory 24.
- dictionary 100 in which these newly created strings are stored, is maintained in dynamic memory 22.
- Microprocessor 28 executes the various functions performed by the update algorithm using the data in dynamic memory 22.
- a set of strings X is generated by concatenating the last or previous match with each of the non-empty prefixes of current match t.
- the prefixes of string t are formed by adding sequentially to the first character in the string t the subsequently-appearing characters in the string t. For instance, if string t comprises the characters "THE”, the prefixes of the string will be "T” "TH”, and "THE”. Thereafter, those strings in set X that are not in dictionary 100 are added to the dictionary.
- the update algorithm may also comprise a variation of the PAPH, the modified all-prefixes heuristic ("MAPH"), for generating new strings of data.
- MAPH is similar to PAPH, except that MAPH also limits to a selected degree parameter q the number of descendants nodes 114 that may depend from a given descendant node 114. Thus, for any descendant node 114, only q descendant nodes 114 may depend therefrom.
- a new string x is created in set of strings X that would constitute the q+1th descendant node depending from a given descendant node 114, that new string is not added to dictionary 100.
- q is equal to approximately 5 to 10 percent of the total size of array 110.
- array 110 consists of 256 nodes 112
- q will range from between 12 to 26.
- a significant advantage of the PAPH and the MAPH is realized when the input data stream contains a long sequence of repeated characters. For instance, if the input data stream contains a long string of blanks, strings of blanks are added to the dictionary 100 in rapid fashion. Specifically, if the first two current matches are one character long, the third match will be 2 characters long, the fourth match 3 characters long, the fifth match 5 characters, and so on, i.e. forming Fibonacci sequence. Thus, the match size almost doubles with each successive match, with the result that the string of blanks is transmitted in compressed form at high levels of compression over a short period of time.
- MAPH allows dictionary 100 to be represented in a structure that is more compact than a hashing data structure. Additionally, MAPH has a known worst case access time per node 112 that is related to the value of q selected. In addition to the foregoing, MAPH typically improves slightly the compression performance of the compression algorithm.
- the update heuristic may also comprise a maxmatch algorithm for limiting the size of the prefixes which are generated by the concatenation of the last match and the current match.
- a prefix is generated that is more than maxmatch characters long, the update heuristic will truncate the prefix so that the prefix does not exceed maxmatch characters in length.
- Maxmatch may satisfactorily range from 25 to some large percentage of the total number of strings 102 in dictionary 100. Preferably, maxmatch is equal to about 100.
- one or more strings 102 is (are) deleted from dictionary 100 using a deletion algorithm ("DH"), as discussed briefly above. These strings are deleted using a least recently used queue heuristic (“LRUH”) or a modified least recently used queue heuristic (“MLRUH”).
- LRUH least recently used queue heuristic
- MLRUH modified least recently used queue heuristic
- the deletion algorithm is stored in read-only memory 24, and strings being deleted are located in dictionary 100 which is stored in dynamic memory 22.
- Microprocessor 28 executes the various functions performed by the deletion algorithm using the data in dynamic memory 22.
- strings 102 are stored in dictionary 100 in queue. Each time a string is referenced, the string is moved to the front of the queue.
- the dictionary is full and the update heuristic has generated one or more new strings to be added to the dictionary, space is created for the new strings(s) by removing a corresponding number of the least recently used strings at the end of the queue. This use of least recently used heuristics in data compression methods is well known.
- LRUH provides a satisfactory method of creating space in dictionary 100 for new strings
- the LRUH tends to be relatively difficult to implement. This difficulty arises from the need to (1) delete only non-leaf nodes from the trie, if leaf and non-leaf nodes are kept in the queue, or (2) keep track of when the nodes change between leaf and non-leaf status, if only leaf nodes are kept in the queue.
- a leaf node is the last descendant node 114 in a string 102 and a non-leaf node is any descendant other than the last descendant node 114 in a string.
- DOG the modified least recently used heuristic
- MLRUH modified least recently used heuristic
- the strings newly created by the update heuristic are placed at the front of the queue in a special "reverse order" arrangement. More specifically, the strings are arranged so that the ancestors of any given descendant node 114 are positioned closer to the front of the queue than the given node. Thus, all of the prefixes of the last match/current match concatenation are placed in reverse order at the front of the queue, and all of the prefixes of the current match are placed directly behind the prefixes of the last match/current match concatenation, except as noted below.
- the location of the front of the queue is stored for future reference in dynamic memory 22. This location is then used by the MLRUH in positioning new prefixes at or near the front, as described below.
- the prefixes of the last match/current match concatenation are positioned so that the shortest prefix of the concatenation is placed at the front of the queue, the next shortest prefix is placed one position back from the front of the queue, and so on, with the longest prefix, i.e., the entire concatenation, being placed farthest from the front of the queue with respect to the other concatenation prefixes.
- the shortest prefix of the current match is placed toward the front of the queue and successively longer prefixes are placed behind the shortest prefix, with the current match prefix always being placed behind the last match/current match concatenation prefixes, except as noted below.
- the initial character set entered into dictionary 100 as the first step of the compression algorithm is "frozen" in the dictionary.
- the characters of this initial set are never deleted from the dictionary and do not participate in the LRUH or the MLRUH.
- other characters or groups of characters may be similarly frozen in the dictionary. Typically, these other characters or groups of characters are ones that occur very frequently in the input data stream.
- FIG. 9 An example of the manner in which the contents of the queue are generated, positioned and deleted in dictionary 100 using the MLRUH is illustrated in FIG. 9.
- the dictionary is assumed to have a size of 272 bytes, allowing it to comprise an initialized character set of 256 byte values and 16 new entries. New strings may be generated using either the PAPH or MAPH.
- the contents of the queue are generated from an input data stream comprising the phrase "THE CAT AT THE CAR ATE THE RAT".
- the example of FIG. 9 assumes strings enter the queue from the right and exit to the left.
- new strings of data are added to the queue using the MLRUH in the same manner in which strings are added to the LRUH, i.e., the last match is concatenated with the current match and the concatenation is added to the beginning of the queue.
- the current match contains the first string that is not in the initialized set of 256 characters, the string AT.
- the last match/current match concatenation, -- AT, and its prefixes, here only -- A are placed at the beginning of the queue, with the prefix being positioned before the concatenation.
- the current match, AT is positioned near the front of the queue, but behind the concatenation and its prefix.
- the last match/current match concatenation, AT -- is added before the last match, AT.
- the last match/current match concatenation prefix, -- T is added to the beginning of the queue, the concatenation, -- TH, is added next, and the current match, TH, is added after the concatenation.
- the full effect of the MLRUH is observable, as both the last match and current match are strings that are not part of the initial character set.
- the last match/current match concatenation, THE -- and its prefix, THE, are added after the last match, with the prefix being positioned ahead of the concatenation.
- the prefix TH of the concatenation THE -- is not added to the queue because TH is already in the queue.
- the current match, -- E is moved to the front of the queue because -- E is already in the queue.
- the current match is placed at the beginning of the queue because the string CA is already present in the queue and because CA is not an element of the initialized set and does not follow a last match that is an element of the initialized set.
- the last match/current match concatenation, E -- CA, and its prefix, E -- C, are added before the last match E -- .
- the last match/current match concatenation, CAR is added before the last match, CA.
- R is not added to the beginning of the queue because R is an element of the initial character set.
- the string HE is deleted from the end of the queue. Such deletion is necessary because it has been assumed the dictionary will hold on 16 strings.
- the last match/current match concatenation, R -- AT, and its prefixes, R -- A and R -- are added to the beginning of the queue. These strings do not follow the last match, R, as the latter is not an added to the LRU queue because it comprises part of the initialized set.
- the current match, -- AT, and its prefix, -- A are added after the last match current match concatenation.
- the current match, -- AT is not added to the beginning of the queue because the current match follows a last match that is an element in the initial character set. Because the dictionary only holds 16 strings, to make room for the new strings added to the dictionary the strings -- C, T -- , and AT -- are deleted from the end of the queue.
- the foregoing example illustrates the manner in which new strings are ordered in the LRU queue according to the MLRUH.
- the small dictionary size (16 entries) results in useful strings being deleted prematurely.
- a dictionary of practical size e.g. 4096 strings
- useful strings are continually moved to the beginning of the queue. Infrequently used strings travel to the end of the queue as a result of this movement of frequently used strings to the front of the queue and are eliminated.
- Data compression module 20 may also be operated so as to decompress character data compressed by the same or another data compression module 20.
- Data compression module 20 decompresses data provided thereto from data device 50 using a data decompression algorithm stored in read-only memory 24.
- This data decompression algorithm operates in accordance with the various steps of the flow diagram illustrated in FIG. 10. As described hereinafter, the data decompression algorithm is identical to the data compression algorithm illustrated in FIG. 4, except that the matching step of the decompression algorithm varies from the corresponding matching step in the compression algorithm. Line by line coding of the decompression algorithm is considered to be well within the skill of an ordinary practitioner, and so is not provided herein.
- a code is transmitted at the beginning of the data stream of the data to be decompressed advising microprocessor 28 to implement the decompression algorithm stored in read-only memory 24.
- This code may take any form, so long as it is distinct from the code used to notify microprocessor 28 to implement the compression algorithm.
- dictionary 250 is initialized with a character set of frequently-used characters or groups of characters.
- Dictionary 250 is identical to, but separate from, dictionary 100, and is maintained in dynamic memory 22.
- Dictionary 250 comprises a plurality of strings 252, each of which is identified by pointer 254.
- This first step, step 300 is identical to step 200 of the compression algorithm described above.
- dictionary 250 contains the identical character set that was initialized in the dictionary 100 used in conjunction with the compression algorithm that was used to compress the data now being decompressed.
- step 300 if data is compressed in a first data compression module 20 and is decompressed in a second module 20, the dictionary 250 in the second module 20 is initialized at step 300 with the same character set that was initialized in the dictionary 100 of the first module 20 at step 200.
- dictionary 250 is continuously updated so as to contain the same strings that are maintained in the dictionary 100 used in the compression of the data to be decompressed.
- step 300 may be expanded to include a freeze step wherein selected characters are permanently stored in the decompression dictionary.
- step 302 the pointer or code 254 identifying the current match t is received. This pointer 254 is then compared with the pointers in dictionary 250 until the corresponding pointer is found. The current match string t associated with the matched pointer is then output via serial I/O terminal 32 or 34.
- Steps 304-316, inclusive, of the decompression algorithm are virtually identical to steps 204-216, inclusive, of the compression algorithm. As described below, however, steps 304-316 involve the use of dictionary 250 rather than the dictionary 100 used in steps 204-216.
- step 304 the update algorithm discussed above with respect to step 204 is employed for generating a new set of strings X.
- This new set of strings X is identical to the set of strings X previously generated at the corresponding iteration of the compression algorithm at step 204 thereof.
- Set of strings X is used to update dictionary 250 in the manner described above in relation to the description of the update algorithm, so as to ensure that for any selected iteration of the decompression algorithm, dictionary 250 always contains the same collection of strings contained in dictionary 100 at the corresponding iteration of the compression algorithm.
- step 306 several questions are posed at step 306, the answers to which will determine the path the decompression algorithm follows. As discussed above, if the set of strings X is empty, or if dictionary 250 is full and the string positioned for deletion from dictionary 250 cannot be deleted from the dictionary, the decompression algorithm returns to step 302.
- a string x is removed from the set of strings X.
- step 310 a determination is made as to whether or not string x is in dictionary 250, as illustrated by step 310. If string x is found to be in dictionary 250, the decompression algorithm returns to step 306 and removes another string x from the set of strings X. If string x is not in dictionary 250, the decompression algorithm continues to step 312.
- step 312 a determination is made as to whether or not dictionary 250 is full. If dictionary 250 is not full, string x is added to the dictionary as a new string 252, as illustrated at step 314. If dictionary 250 is full, the decompression algorithm proceeds to step 316.
- step 316 the deletion algorithm described above in relation to step 216 of the compression algorithm is employed to delete the least recently used string 252 from dictionary 250 to provide space for string x to be added to the dictionary. Then, the decompression algorithm advances to step 314 where string x is added to the dictionary.
- step 306 After string x has been added to dictionary 250, the decompression algorithm returns to step 306 and reads in a new string x from set of strings X. this iteration comprising steps 306-316, inclusive, continues until all strings x have been removed from the set of strings X, at which point set X is empty. As described above, when set X is empty, the decompression algorithm returns to step 302 where a new string is parsed from the input data stream and matched with a string 252 in dictionary 250.
- improved compression may be achieved in a dictionary having a greater or lesser number of strings, and hence longer or shorter pointers, respectively than in dictionary 100. For instance, if dictionary 100 has 2 12 strings 102 and a second and identical dictionary has 2 11 strings of data, with certain collections of input data, improved compression will be achieved with the second dictionary with its 11 bit pointers.
- data compression module 20 may be adapted to include two additional dictionaries, dictionary 320 and 322, the former being half as large as dictionary 100 and the latter being twice as large as dictionary 100.
- dictionary 320 and 322 the former being half as large as dictionary 100 and the latter being twice as large as dictionary 100.
- dictionary 100 has 2 12 strings, of data, and hence 12 bit pointers
- dictionary 320 will have 2 11 strings of data and 11 bit pointers
- dictionary 322 will have 2 13 strings of data and 13 bit pointers.
- Dictionaries 320 and 322 are operated in triple-harness with dictionary 100.
- the compression ratios achieved by dictionaries 100, 320 and 322 are periodically compared to one another to determine which dictionary is achieving the best compression ratios. If dictionary 320 is found to provide a higher rate of compression than is provided by dictionary 100, the size of dictionary 100 is halved. If, on the other hand, dictionary 322 is found to provide a higher rate of compression than is provided by dictionary 100, the size of dictionary 100 is doubled.
- FIG. 13 an algorithm is provided in flow diagram form illustrating how the foregoing dynamic dictionary size selection procedure is implemented using the hardware illustrated in FIG. 1.
- the dynamic dictionary size selection algorithm is stored in read-only memory 24. Dictionaries 320 and 322 are created in dynamic memory 22, and microprocessor 28 implements the algorithm using this information from read-only memory 24 and dynamic memory 22.
- the size of the downsize dictionary, dictionary 320 is set at half the size of the currsize dictionary, dictionary 100.
- the size of the upsize dictionary, dictionary 322 is set at twice the size of the currsize dictionary.
- i is initialized at 0.
- the variable i is used in controlling the iteration rate of the dictionary size selection algorithm as described below.
- input character data is compressed using the compression algorithm illustrated in FIG. 4 and the currsize dictionary.
- the input character data is compressed using the compression algorithm and the downsize and the upsize dictionaries.
- step 406 i is incremented by 1.
- i is compared to a preselected interval to determine if i is greater than the interval.
- the valve for the interval will depend upon the speed of the clock in microprocessor 28. For instance, if microprocessor 28 has 3.9 mHz clock, satisfactory compression is achieved when the interval ranges from 1 to 10 times the number of strings 102 in the currsize dictionary. If i is not greater than the interval, the algorithm returns to step 404. If i is greater than the interval, the algorithm continues on to step 410.
- step 410 a comparison is made to determine which dictionary has achieved the best rate of compression.
- Compression rates are calculated by dividing the number of bits in the pointer that identifies the dictionary string that matches the current match by the number of bits required to represent the current match in uncompressed form. This calculation is performed continuously for all current matches appearing during interval i so as to provide a rate of compression for the input data stream arriving during interval i. If the currsize dictionary, dictionary 100, has achieved the best rate of compression, the algorithm returns to step 402. If the downsize dictionary, dictionary 320 has achieved the best rate of compression, the algorithm proceeds to step 412. At step 412, the respective sizes of the downsize, currsize and upsize dictionaries are decreased by one half. Thereafter the algorithm returns to step 402.
- step 410 If the upsize dictionary is determined at step 410 to have achieved the best rate of compression, the algorithm proceeds to step 414. At step 414, the respective sizes of the downsize, currsize and upsize dictionaries are doubled. Thereafter the algorithm returns to step 402.
- the present invention has been described as being implemented with discrete hardware and firmware elements, the present invention may also be satisfactorily implemented using a conventional microcomputer and suitable software
- the various algorithms stored in read-only memory 24 are incorporated in the software using known coding techniques.
- the present system may be implemented using a totally hardwired system, as is well known in the art.
- the present invention possesses several advantages over known data compression systems.
- the present invention provides data compression with a system having relatively simple hardware and firmware structure. Additionally, the present system requires minimal memory.
- a character set of very frequently appearing characters may be "frozen" in the read-only memory with the result that the dictionary of the system does not have to continuously relearn frequently-appearing strings of character data.
- no uncompressed characters need be transmitted to ensure a match is made, as a match at least one character long will always be made with the present system.
- the system of the present is adapted to compress a wide variety of textual data at high rates of compression.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
Claims (55)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/108,929 US4876541A (en) | 1987-10-15 | 1987-10-15 | Stem for dynamically compressing and decompressing electronic data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/108,929 US4876541A (en) | 1987-10-15 | 1987-10-15 | Stem for dynamically compressing and decompressing electronic data |
Publications (1)
Publication Number | Publication Date |
---|---|
US4876541A true US4876541A (en) | 1989-10-24 |
Family
ID=22324866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US07/108,929 Expired - Lifetime US4876541A (en) | 1987-10-15 | 1987-10-15 | Stem for dynamically compressing and decompressing electronic data |
Country Status (1)
Country | Link |
---|---|
US (1) | US4876541A (en) |
Cited By (155)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1990009705A1 (en) * | 1989-02-09 | 1990-08-23 | Storage Technology Corporation | Adaptive data compression apparatus for a tape drive system |
US5001478A (en) * | 1989-12-28 | 1991-03-19 | International Business Machines Corporation | Method of encoding compressed data |
US5003307A (en) * | 1989-01-13 | 1991-03-26 | Stac, Inc. | Data compression apparatus with shift register search means |
US5010345A (en) * | 1989-12-28 | 1991-04-23 | International Business Machines Corporation | Data compression method |
US5010344A (en) * | 1989-12-28 | 1991-04-23 | International Business Machines Corporation | Method of decoding compressed data |
US5016009A (en) * | 1989-01-13 | 1991-05-14 | Stac, Inc. | Data compression apparatus and method |
US5058137A (en) * | 1989-07-31 | 1991-10-15 | North American Philips Corporation | Lempel-Ziv decoder |
JPH03262331A (en) * | 1990-03-13 | 1991-11-22 | Fujitsu Ltd | Data compression method and data compression device |
US5087913A (en) * | 1990-08-27 | 1992-02-11 | Unisys Corporation | Short-record data compression and decompression system |
EP0472730A1 (en) * | 1990-02-26 | 1992-03-04 | Fujitsu Limited | Data compression and restoration method and device therefor |
US5126739A (en) * | 1989-01-13 | 1992-06-30 | Stac Electronics | Data compression apparatus and method |
US5136289A (en) * | 1990-08-06 | 1992-08-04 | Fujitsu Limited | Dictionary searching system |
US5146221A (en) * | 1989-01-13 | 1992-09-08 | Stac, Inc. | Data compression apparatus and method |
US5151697A (en) * | 1990-10-15 | 1992-09-29 | Board Of Regents Of The University Of Washington | Data structure management tagging system |
US5175543A (en) * | 1991-09-25 | 1992-12-29 | Hewlett-Packard Company | Dictionary reset performance enhancement for data compression applications |
US5179378A (en) * | 1991-07-30 | 1993-01-12 | University Of South Florida | Method and apparatus for the compression and decompression of data using Lempel-Ziv based techniques |
US5184126A (en) * | 1989-12-28 | 1993-02-02 | International Business Machines Corporation | Method of decompressing compressed data |
US5229768A (en) * | 1992-01-29 | 1993-07-20 | Traveling Software, Inc. | Adaptive data compression system |
US5237460A (en) * | 1990-12-14 | 1993-08-17 | Ceram, Inc. | Storage of compressed data on random access storage devices |
US5243341A (en) * | 1992-06-01 | 1993-09-07 | Hewlett Packard Company | Lempel-Ziv compression scheme with enhanced adapation |
US5253325A (en) * | 1988-12-09 | 1993-10-12 | British Telecommunications Public Limited Company | Data compression with dynamically compiled dictionary |
US5254990A (en) * | 1990-02-26 | 1993-10-19 | Fujitsu Limited | Method and apparatus for compression and decompression of data |
US5258910A (en) * | 1988-07-29 | 1993-11-02 | Sharp Kabushiki Kaisha | Text editor with memory for eliminating duplicate sentences |
US5276898A (en) * | 1990-07-26 | 1994-01-04 | International Business Machines Corporation | System for selectively compressing data frames based upon a current processor work load identifying whether the processor is too busy to perform the compression |
US5293314A (en) * | 1990-09-04 | 1994-03-08 | Brother Kogyo Kabushiki Kaisha | Word processor having a word frequency count unit |
US5323155A (en) * | 1992-12-04 | 1994-06-21 | International Business Machines Corporation | Semi-static data compression/expansion method |
WO1994022072A1 (en) * | 1993-03-24 | 1994-09-29 | Compression Research Group, Inc. | Information processing using context-insensitive parsing |
US5353024A (en) * | 1992-05-01 | 1994-10-04 | Intersecting Concepts, Inc. | Method for data compression having an improved encoding algorithm which utilizes a token stacking technique |
US5355493A (en) * | 1991-11-20 | 1994-10-11 | International Business Machines Corporation | System for encoding units of entity/relationship data to include prefixes with codes for length, action, and unit identifier |
US5371499A (en) * | 1992-02-28 | 1994-12-06 | Intersecting Concepts, Inc. | Data compression using hashing |
US5375204A (en) * | 1992-04-30 | 1994-12-20 | Ricoh Company, Ltd. | System and method for efficient binary encoding of procedures in a document processing language |
US5379036A (en) * | 1992-04-01 | 1995-01-03 | Storer; James A. | Method and apparatus for data compression |
US5396228A (en) * | 1992-01-16 | 1995-03-07 | Mobile Telecommunications Technologies | Methods and apparatus for compressing and decompressing paging data |
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 |
US5410671A (en) * | 1990-05-01 | 1995-04-25 | Cyrix Corporation | Data compression/decompression processor |
EP0678986A1 (en) | 1994-04-22 | 1995-10-25 | Seta Co., Ltd. | Data compression method and system |
US5490260A (en) * | 1990-12-14 | 1996-02-06 | Ceram, Inc. | Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size |
US5499293A (en) * | 1995-01-24 | 1996-03-12 | University Of Maryland | Privacy protected information medium using a data compression method |
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 |
US5530645A (en) * | 1993-06-30 | 1996-06-25 | Apple Computer, Inc. | Composite dictionary compression system |
US5532694A (en) * | 1989-01-13 | 1996-07-02 | Stac Electronics, Inc. | Data compression apparatus and method using matching string searching and Huffman encoding |
EP0723341A1 (en) * | 1995-01-18 | 1996-07-24 | Laboratoires D'electronique Philips S.A.S. | Data compression system |
US5548687A (en) * | 1992-04-30 | 1996-08-20 | Ricoh Company, Ltd. | Method and apparatus for controlling a printer using the N/2r format |
US5563595A (en) * | 1993-12-23 | 1996-10-08 | International Business Machines Corporation | Method and apparatus for compressing data |
US5577249A (en) * | 1992-07-31 | 1996-11-19 | International Business Machines Corporation | Method for finding a reference token sequence in an original token string within a database of token strings using appended non-contiguous substrings |
US5590317A (en) * | 1992-05-27 | 1996-12-31 | Hitachi, Ltd. | Document information compression and retrieval system and document information registration and retrieval method |
US5623262A (en) * | 1994-08-17 | 1997-04-22 | Apple Computer, Inc. | Multi-word variable length encoding and decoding |
US5635931A (en) * | 1994-06-02 | 1997-06-03 | International Business Machines Corporation | System and method for compressing data information |
US5652878A (en) * | 1991-12-13 | 1997-07-29 | International Business Machines Corporation | Method and apparatus for compressing data |
EP0788239A2 (en) * | 1996-01-31 | 1997-08-06 | Hitachi, Ltd. | Method of and apparatus for compressing and decompressing data and data processing apparatus and network system using the same |
US5663721A (en) * | 1995-03-20 | 1997-09-02 | Compaq Computer Corporation | Method and apparatus using code values and length fields for compressing computer data |
US5710719A (en) * | 1995-10-19 | 1998-01-20 | America Online, Inc. | Apparatus and method for 2-dimensional data compression |
WO1998006028A1 (en) * | 1996-08-06 | 1998-02-12 | Reynar Jeffrey C | A lempel-ziv data compression technique utilizing a dicionary pre-filled with fequent letter combinations, words and/or phrases |
US5745058A (en) * | 1996-10-21 | 1998-04-28 | International Business Machines Corporation | Method and system for compressing microcode to be executed within a data processing system |
US5764994A (en) * | 1996-09-16 | 1998-06-09 | International Business Machines Corporation | Method and system for compressing compiled microcode to be executed within a data processing system |
EP0846373A2 (en) * | 1995-08-22 | 1998-06-10 | Hewlett-Packard Company | Method and apparatus for compressing and decompressing image data |
US5778255A (en) * | 1995-10-10 | 1998-07-07 | International Business Machines Corporation | Method and system in a data processing system for decompressing multiple compressed bytes in a single machine cycle |
JP2774350B2 (en) | 1990-03-20 | 1998-07-09 | 富士通株式会社 | Data compression method and data restoration method of compressed data |
US5798718A (en) * | 1997-05-12 | 1998-08-25 | Lexmark International, Inc. | Sliding window data compression method and apparatus |
US5805086A (en) * | 1995-10-10 | 1998-09-08 | International Business Machines Corporation | Method and system for compressing data that facilitates high-speed data decompression |
WO1998039723A2 (en) * | 1994-12-20 | 1998-09-11 | Rodney John Smith | Improvements relating to data compression |
US5836003A (en) * | 1993-08-26 | 1998-11-10 | Visnet Ltd. | Methods and means for image and voice compression |
US5841953A (en) * | 1994-08-01 | 1998-11-24 | Thomson Consumer Electronics, Inc. | Method for compressing and decompressing data files |
US5841376A (en) * | 1995-09-29 | 1998-11-24 | Kyocera Corporation | Data compression and decompression scheme using a search tree in which each entry is stored with an infinite-length character string |
US5845238A (en) * | 1996-06-18 | 1998-12-01 | Apple Computer, Inc. | System and method for using a correspondence table to compress a pronunciation guide |
US5861827A (en) * | 1996-07-24 | 1999-01-19 | Unisys Corporation | Data compression and decompression system with immediate dictionary updating interleaved with string search |
GB2334653A (en) * | 1997-12-20 | 1999-08-25 | Daewoo Electronics Co Ltd | Data compression system with dictionary updating algorithm |
WO2000035098A1 (en) * | 1998-12-07 | 2000-06-15 | Marconi Communications Israel Ltd. | Apparatus and methods for real time lossless compression |
US6082776A (en) * | 1997-05-07 | 2000-07-04 | Feinberg; Lawrence E. | Storing personal medical information |
US6145069A (en) * | 1999-01-29 | 2000-11-07 | Interactive Silicon, Inc. | Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices |
US6208273B1 (en) | 1999-01-29 | 2001-03-27 | Interactive Silicon, Inc. | System and method for performing scalable embedded parallel data compression |
US6262675B1 (en) * | 1999-12-21 | 2001-07-17 | International Business Machines Corporation | Method of compressing data with an alphabet |
US20010038642A1 (en) * | 1999-01-29 | 2001-11-08 | Interactive Silicon, Inc. | System and method for performing scalable embedded parallel data decompression |
US6341346B1 (en) | 1999-02-05 | 2002-01-22 | Cisco Technology, Inc. | Method for comparison between a pattern sequence and a variable length key |
WO2002033829A2 (en) * | 2000-10-16 | 2002-04-25 | Unisys Corporation | Data compression and decompression method and apparatus with embedded filtering of infrequently encountered strings |
US6401188B1 (en) | 1998-02-27 | 2002-06-04 | Cisco Technology, Inc. | Method for selection on a pattern sequence |
US20020071438A1 (en) * | 2000-07-25 | 2002-06-13 | Singh Amit P. | Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data |
US6415061B1 (en) * | 1997-06-13 | 2002-07-02 | Cisco Technology, Inc. | Method of updating dictionaries in a data transmission system using data compression |
US6414610B1 (en) | 1997-02-24 | 2002-07-02 | Rodney J Smith | Data compression |
US20020101367A1 (en) * | 1999-01-29 | 2002-08-01 | Interactive Silicon, Inc. | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
WO2002073811A2 (en) * | 2001-03-07 | 2002-09-19 | Unisys Corporation | Data compression and decompression method and apparatus with embedded filtering of dynamically variable infrequently encountered strings |
US20020138654A1 (en) * | 2001-03-21 | 2002-09-26 | Zhigang Liu | Apparatus, and associated method, for facilitating deletion of dictionary content pursuant to communication of signaling protocol messages |
US20020135802A1 (en) * | 2000-12-11 | 2002-09-26 | United Parcel Service Of America, Inc. | Compression utility for use with smart label printing and pre-loading |
US20030058873A1 (en) * | 1999-01-29 | 2003-03-27 | Interactive Silicon, Incorporated | Network device with improved storage density and access speed using compression techniques |
US20030102989A1 (en) * | 1998-08-13 | 2003-06-05 | Fujitsu Limited | Coding apparatus and decoding apparatus |
US20030117299A1 (en) * | 2000-01-25 | 2003-06-26 | Jones Simon Richard | Data compression having improved compression speed |
US6624762B1 (en) | 2002-04-11 | 2003-09-23 | Unisys Corporation | Hardware-based, LZW data compression co-processor |
US6628211B1 (en) | 2002-03-19 | 2003-09-30 | Unisys Corporation | Prefix table implemented data compression method and apparatus |
US20030197630A1 (en) * | 2002-04-22 | 2003-10-23 | John Border | Method and system for data compession with dictionary pre-load of a set of expected character strings |
US20030204629A1 (en) * | 2002-04-30 | 2003-10-30 | Sambandam Suresh Sabapathy | Method and apparatus for transfering data from a sending system to a receiving system, and program storage devices |
US6704866B1 (en) | 1997-07-11 | 2004-03-09 | Cisco Technology, Inc. | Compression and encryption protocol for controlling data flow in a network |
US6714145B1 (en) | 2002-09-26 | 2004-03-30 | Richard Marques | Method and apparatus for integer-based encoding and decoding of bits |
US6724330B1 (en) | 2002-12-07 | 2004-04-20 | Unisys Corporation | Prefix table implemented data compression method and apparatus utilizing string code reassignment |
US20040125404A1 (en) * | 2002-12-26 | 2004-07-01 | Canon Kabushiki Kaisha | Image compression method and apparatus |
US6819271B2 (en) | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US6822589B1 (en) | 1999-01-29 | 2004-11-23 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US6879266B1 (en) | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
US20050114120A1 (en) * | 2003-11-25 | 2005-05-26 | Jp Mobile Operating, L.P. | Communication system and method for compressing information sent by a communication device to a target portable communication device |
US20050219075A1 (en) * | 2004-03-18 | 2005-10-06 | Storer James A | In-place differential compression |
US20050246362A1 (en) * | 2004-05-03 | 2005-11-03 | Borland Devin P | System and method for dynamci log compression in a file system |
US7130913B2 (en) | 1999-03-11 | 2006-10-31 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US20060271540A1 (en) * | 2005-03-11 | 2006-11-30 | Williams Ross N | Method and apparatus for indexing in a reduced-redundancy storage system |
US7161506B2 (en) | 1998-12-11 | 2007-01-09 | Realtime Data Llc | Systems and methods for data compression such as content dependent data compression |
US7167115B1 (en) | 2005-08-26 | 2007-01-23 | American Megatrends, Inc. | Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries |
US7181608B2 (en) | 2000-02-03 | 2007-02-20 | Realtime Data Llc | Systems and methods for accelerated loading of operating systems and application programs |
US7190284B1 (en) | 1994-11-16 | 2007-03-13 | Dye Thomas A | Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent |
US20070115151A1 (en) * | 2000-07-25 | 2007-05-24 | Juniper Networks, Inc. | System and method for incremental and continuous data compression |
US20070143381A1 (en) * | 2005-12-09 | 2007-06-21 | Kiyokuni Kawachiya | Method to reduce wasted character data areas of java strings |
US20070192548A1 (en) * | 2005-03-11 | 2007-08-16 | Williams Ross N | Method and apparatus for detecting the presence of subblocks in a reduced-redundancy storage system |
US20070263553A1 (en) * | 2001-08-24 | 2007-11-15 | Juniper Networks, Inc. | Efficient discovery and verification of paths through a meshed overlay network |
US7376772B2 (en) | 2000-02-03 | 2008-05-20 | Realtime Data Llc | Data storewidth accelerator |
US7386046B2 (en) | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
US20080147801A1 (en) * | 2006-12-18 | 2008-06-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Method, communications node, and memory for dynamic dictionary updating and optimization for compression and decompression of messages |
US7395345B2 (en) | 1999-03-11 | 2008-07-01 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US7400274B2 (en) | 2000-10-03 | 2008-07-15 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US7483871B2 (en) | 1994-11-29 | 2009-01-27 | Pinpoint Incorporated | Customized electronic newspapers and advertisements |
US7548652B1 (en) * | 2005-04-28 | 2009-06-16 | Sun Microsystems, Inc. | Rapid comparison of similar data strings |
US7555690B1 (en) * | 2004-12-23 | 2009-06-30 | Xilinx, Inc. | Device for and method of coupling test signals to a device under test |
US7580429B1 (en) * | 2002-09-05 | 2009-08-25 | U.S. Robotics | System and methods for improving data compression |
US20090228484A1 (en) * | 2008-03-05 | 2009-09-10 | Ca, Inc. | System and method of searching for duplicate data |
US7630986B1 (en) | 1999-10-27 | 2009-12-08 | Pinpoint, Incorporated | Secure data interchange |
US7783781B1 (en) | 2005-08-05 | 2010-08-24 | F5 Networks, Inc. | Adaptive compression |
US20100277353A1 (en) * | 2009-05-04 | 2010-11-04 | Storwize Ltd. | Method and system for compression of logical data objects for storage |
US7853600B2 (en) | 1994-11-29 | 2010-12-14 | Pinpoint, Incorporated | System and method for providing access to video programs and other data using customer profiles |
US20110004639A1 (en) * | 2005-03-11 | 2011-01-06 | Ross Neil Williams | Method and Apparatus for Storing Data with Reduced Redundancy Using Data Clusters |
US7873065B1 (en) | 2006-02-01 | 2011-01-18 | F5 Networks, Inc. | Selectively enabling network packet concatenation based on metrics |
US7882084B1 (en) | 2005-12-30 | 2011-02-01 | F5 Networks, Inc. | Compression of data transmitted over a network |
US20110043387A1 (en) * | 2009-08-20 | 2011-02-24 | International Business Machines Corporation | Data compression using a nested hierachy of fixed phrase length static and dynamic dictionaries |
US8010668B1 (en) | 2004-10-01 | 2011-08-30 | F5 Networks, Inc. | Selective compression for network connections |
US8190513B2 (en) | 1996-06-05 | 2012-05-29 | Fraud Control Systems.Com Corporation | Method of billing a purchase made over a computer network |
US8229844B2 (en) | 1996-06-05 | 2012-07-24 | Fraud Control Systems.Com Corporation | Method of billing a purchase made over a computer network |
US8275909B1 (en) | 2005-12-07 | 2012-09-25 | F5 Networks, Inc. | Adaptive compression |
US20130007556A1 (en) * | 2011-06-29 | 2013-01-03 | Seagate Technology Llc | Multiuse Data Channel |
US8417833B1 (en) | 2006-11-29 | 2013-04-09 | F5 Networks, Inc. | Metacodec for optimizing network data compression based on comparison of write and read rates |
US8533308B1 (en) | 2005-08-12 | 2013-09-10 | F5 Networks, Inc. | Network traffic management through protocol-configurable transaction processing |
US8559313B1 (en) | 2006-02-01 | 2013-10-15 | F5 Networks, Inc. | Selectively enabling packet concatenation based on a transaction boundary |
US8630942B2 (en) | 1996-06-05 | 2014-01-14 | Fraud Control Systems.Com Corporation | Method of billing a purchase made over a computer network |
US8694703B2 (en) | 2010-06-09 | 2014-04-08 | Brocade Communications Systems, Inc. | Hardware-accelerated lossless data compression |
US8692695B2 (en) | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
US8704687B2 (en) * | 2012-08-01 | 2014-04-22 | International Business Machines Corporation | Code set conversion management optimization |
US8779950B2 (en) | 2012-03-05 | 2014-07-15 | Dcba, Llc | Command encoded data compression |
US20140214779A1 (en) * | 2013-01-31 | 2014-07-31 | Yahoo! Inc. | System and method for applying an efficient data compression scheme to url parameters |
US8902087B1 (en) * | 2013-08-27 | 2014-12-02 | International Business Machines Corporation | Data decompression utilizing pre-expanded dictionaries during decompression |
US9106606B1 (en) | 2007-02-05 | 2015-08-11 | F5 Networks, Inc. | Method, intermediate device and computer program code for maintaining persistency |
US9143546B2 (en) * | 2000-10-03 | 2015-09-22 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US9356824B1 (en) | 2006-09-29 | 2016-05-31 | F5 Networks, Inc. | Transparently cached network resources |
US9401967B2 (en) | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US9438269B1 (en) * | 2015-09-02 | 2016-09-06 | International Business Machines Corporation | Accelerating codeset conversion in a computing environment |
US9543980B2 (en) | 2014-10-10 | 2017-01-10 | Massachusettes Institute Of Technology | Systems and methods for model-free compression and model-based decompression |
US9614772B1 (en) | 2003-10-20 | 2017-04-04 | F5 Networks, Inc. | System and method for directing network traffic in tunneling applications |
US10506388B1 (en) * | 2018-06-27 | 2019-12-10 | Harris Global Communications, Inc. | Efficient short message compression |
US11418569B2 (en) | 2001-01-24 | 2022-08-16 | Intellectual Pixels Limited | Image display system with visual server |
CN115276666A (en) * | 2022-09-28 | 2022-11-01 | 汉达科技发展集团有限公司 | Efficient data transmission method for equipment training simulator |
US11991344B2 (en) | 2017-02-07 | 2024-05-21 | Mindmaze Group Sa | Systems, methods and apparatuses for stereo vision and tracking |
US11989340B2 (en) | 2017-01-19 | 2024-05-21 | Mindmaze Group Sa | Systems, methods, apparatuses and devices for detecting facial expression and for tracking movement and location in at least one of a virtual and augmented reality system |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4464650A (en) * | 1981-08-10 | 1984-08-07 | Sperry Corporation | Apparatus and method for compressing data signals and restoring the compressed data signals |
US4558302A (en) * | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
US4612532A (en) * | 1984-06-19 | 1986-09-16 | Telebyte Corportion | Data compression apparatus and method |
-
1987
- 1987-10-15 US US07/108,929 patent/US4876541A/en not_active Expired - Lifetime
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4464650A (en) * | 1981-08-10 | 1984-08-07 | Sperry Corporation | Apparatus and method for compressing data signals and restoring the compressed data signals |
US4558302A (en) * | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
US4558302B1 (en) * | 1983-06-20 | 1994-01-04 | Unisys Corp | |
US4612532A (en) * | 1984-06-19 | 1986-09-16 | Telebyte Corportion | Data compression apparatus and method |
Non-Patent Citations (16)
Title |
---|
A Lempel et al; "On the Complexity of Finite Sequences"; IEEE Transactions of Information Theory; 22:1, pp. 75-81; 1976. |
A Lempel et al; On the Complexity of Finite Sequences ; IEEE Transactions of Information Theory; 22:1, pp. 75 81; 1976. * |
D. A. Huffman; "A Method for the Construction of Minimum-Redundancy Codes"; Proceedings of the Ire; vol. 40, pp. 1098-1101; 1952. |
D. A. Huffman; A Method for the Construction of Minimum Redundancy Codes ; Proceedings of the Ire; vol. 40, pp. 1098 1101; 1952. * |
J. A. Storer et al; "Data Compression Via Textual Substitution"; Journal of the Association for Computing Machinery; vol. 29:4; 1982. |
J. A. Storer et al; Data Compression Via Textual Substitution ; Journal of the Association for Computing Machinery; vol. 29:4; 1982. * |
J. A. Storer; "Textual Substitution Techniques for Data Compression"; Combinatorial Algorithms on Words; pp. 120-121; 1985. |
J. A. Storer; Textual Substitution Techniques for Data Compression ; Combinatorial Algorithms on Words; pp. 120 121; 1985. * |
J. B. Seery et al; "A Universal Data Compression Algorithm Description and Preliminary Results"; Technical Memorandum; 1977. |
J. B. Seery et al; "Further Results on Universal Data Compression"; Technical Memorandm; 1978. |
J. B. Seery et al; A Universal Data Compression Algorithm Description and Preliminary Results ; Technical Memorandum; 1977. * |
J. B. Seery et al; Further Results on Universal Data Compression ; Technical Memorandm; 1978. * |
T. A. Welch; "A Technique for High-Performance Data Compression"; IEEE Computer, vol. 17:6; 1984. |
T. A. Welch; A Technique for High Performance Data Compression ; IEEE Computer, vol. 17:6; 1984. * |
V. S. Miller et al; "Variations on a Theme by Lempel and Ziv", Combinatorial Algorithms on Words, pp. 131-140; 1985. |
V. S. Miller et al; Variations on a Theme by Lempel and Ziv , Combinatorial Algorithms on Words, pp. 131 140; 1985. * |
Cited By (290)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5258910A (en) * | 1988-07-29 | 1993-11-02 | Sharp Kabushiki Kaisha | Text editor with memory for eliminating duplicate sentences |
US5253325A (en) * | 1988-12-09 | 1993-10-12 | British Telecommunications Public Limited Company | Data compression with dynamically compiled dictionary |
US5126739A (en) * | 1989-01-13 | 1992-06-30 | Stac Electronics | Data compression apparatus and method |
US5003307A (en) * | 1989-01-13 | 1991-03-26 | Stac, Inc. | Data compression apparatus with shift register search means |
US5414425A (en) * | 1989-01-13 | 1995-05-09 | Stac | Data compression apparatus and method |
US5016009A (en) * | 1989-01-13 | 1991-05-14 | Stac, Inc. | Data compression apparatus and method |
US5463390A (en) * | 1989-01-13 | 1995-10-31 | Stac Electronics, Inc. | Data compression apparatus and method |
US5146221A (en) * | 1989-01-13 | 1992-09-08 | Stac, Inc. | Data compression apparatus and method |
US5506580A (en) * | 1989-01-13 | 1996-04-09 | Stac Electronics, Inc. | Data compression apparatus and method |
US5532694A (en) * | 1989-01-13 | 1996-07-02 | Stac Electronics, Inc. | Data compression apparatus and method using matching string searching and Huffman encoding |
JP2915568B2 (en) | 1989-02-09 | 1999-07-05 | ストレイジ テクノロジー コーポレイション | Adaptive data compression system for tape drive systems. |
WO1990009705A1 (en) * | 1989-02-09 | 1990-08-23 | Storage Technology Corporation | Adaptive data compression apparatus for a tape drive system |
US5058137A (en) * | 1989-07-31 | 1991-10-15 | North American Philips Corporation | Lempel-Ziv decoder |
US5184126A (en) * | 1989-12-28 | 1993-02-02 | International Business Machines Corporation | Method of decompressing compressed data |
US5010344A (en) * | 1989-12-28 | 1991-04-23 | International Business Machines Corporation | Method of decoding compressed data |
US5010345A (en) * | 1989-12-28 | 1991-04-23 | International Business Machines Corporation | Data compression method |
US5001478A (en) * | 1989-12-28 | 1991-03-19 | International Business Machines Corporation | Method of encoding compressed data |
EP0878915A2 (en) * | 1990-02-26 | 1998-11-18 | Fujitsu Limited | Method and apparatus for compression and decompression of data |
EP0472730A4 (en) * | 1990-02-26 | 1992-12-16 | Fujitsu Limited | Data compression and restoration method and device therefor |
EP0871294A2 (en) * | 1990-02-26 | 1998-10-14 | Fujitsu Limited | Method and apparatus for compression and decompression of data |
EP0871295A2 (en) * | 1990-02-26 | 1998-10-14 | Fujitsu Limited | Method and apparatus for compression and decompression of data |
US5254990A (en) * | 1990-02-26 | 1993-10-19 | Fujitsu Limited | Method and apparatus for compression and decompression of data |
EP0472730A1 (en) * | 1990-02-26 | 1992-03-04 | Fujitsu Limited | Data compression and restoration method and device therefor |
EP0871295A3 (en) * | 1990-02-26 | 1998-12-23 | Fujitsu Limited | Method and apparatus for compression and decompression of data |
EP0871294A3 (en) * | 1990-02-26 | 1998-12-30 | Fujitsu Limited | Method and apparatus for compression and decompression of data |
EP0878915A3 (en) * | 1990-02-26 | 1998-12-30 | Fujitsu Limited | Method and apparatus for compression and decompression of data |
JP2590287B2 (en) | 1990-03-13 | 1997-03-12 | 富士通株式会社 | Data compression method and data compression apparatus |
JPH03262331A (en) * | 1990-03-13 | 1991-11-22 | Fujitsu Ltd | Data compression method and data compression device |
JP2774350B2 (en) | 1990-03-20 | 1998-07-09 | 富士通株式会社 | Data compression method and data restoration method of compressed data |
US5410671A (en) * | 1990-05-01 | 1995-04-25 | Cyrix Corporation | Data compression/decompression processor |
US5276898A (en) * | 1990-07-26 | 1994-01-04 | International Business Machines Corporation | System for selectively compressing data frames based upon a current processor work load identifying whether the processor is too busy to perform the compression |
US5136289A (en) * | 1990-08-06 | 1992-08-04 | Fujitsu Limited | Dictionary searching system |
US5087913A (en) * | 1990-08-27 | 1992-02-11 | Unisys Corporation | Short-record data compression and decompression system |
US5293314A (en) * | 1990-09-04 | 1994-03-08 | Brother Kogyo Kabushiki Kaisha | Word processor having a word frequency count unit |
US5151697A (en) * | 1990-10-15 | 1992-09-29 | Board Of Regents Of The University Of Washington | Data structure management tagging system |
US5237460A (en) * | 1990-12-14 | 1993-08-17 | Ceram, Inc. | Storage of compressed data on random access storage devices |
US5490260A (en) * | 1990-12-14 | 1996-02-06 | Ceram, Inc. | Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size |
US5179378A (en) * | 1991-07-30 | 1993-01-12 | University Of South Florida | Method and apparatus for the compression and decompression of data using Lempel-Ziv based techniques |
WO1993003548A1 (en) * | 1991-07-30 | 1993-02-18 | University Of South Florida | Method and apparatus for the compression and decompression of data using lempel-ziv based techniques |
US5175543A (en) * | 1991-09-25 | 1992-12-29 | Hewlett-Packard Company | Dictionary reset performance enhancement for data compression applications |
US5640559A (en) * | 1991-11-20 | 1997-06-17 | International Business Machines Corporation | System and method of encoding units of data including entity/relationship data, function calls and file data using a common format (CDF) according to formal CDF grammar rules |
US5355493A (en) * | 1991-11-20 | 1994-10-11 | International Business Machines Corporation | System for encoding units of entity/relationship data to include prefixes with codes for length, action, and unit identifier |
US5652878A (en) * | 1991-12-13 | 1997-07-29 | International Business Machines Corporation | Method and apparatus for compressing data |
US5396228A (en) * | 1992-01-16 | 1995-03-07 | Mobile Telecommunications Technologies | Methods and apparatus for compressing and decompressing paging data |
US5229768A (en) * | 1992-01-29 | 1993-07-20 | Traveling Software, Inc. | Adaptive data compression system |
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 |
US5371499A (en) * | 1992-02-28 | 1994-12-06 | Intersecting Concepts, Inc. | Data compression using hashing |
US5379036A (en) * | 1992-04-01 | 1995-01-03 | Storer; James A. | Method and apparatus for data compression |
US5548687A (en) * | 1992-04-30 | 1996-08-20 | Ricoh Company, Ltd. | Method and apparatus for controlling a printer using the N/2r format |
US5375204A (en) * | 1992-04-30 | 1994-12-20 | Ricoh Company, Ltd. | System and method for efficient binary encoding of procedures in a document processing language |
US5353024A (en) * | 1992-05-01 | 1994-10-04 | Intersecting Concepts, Inc. | Method for data compression having an improved encoding algorithm which utilizes a token stacking technique |
US5590317A (en) * | 1992-05-27 | 1996-12-31 | Hitachi, Ltd. | Document information compression and retrieval system and document information registration and retrieval method |
US5243341A (en) * | 1992-06-01 | 1993-09-07 | Hewlett Packard Company | Lempel-Ziv compression scheme with enhanced adapation |
US5577249A (en) * | 1992-07-31 | 1996-11-19 | International Business Machines Corporation | Method for finding a reference token sequence in an original token string within a database of token strings using appended non-contiguous substrings |
US5323155A (en) * | 1992-12-04 | 1994-06-21 | International Business Machines Corporation | Semi-static data compression/expansion method |
US5414650A (en) * | 1993-03-24 | 1995-05-09 | Compression Research Group, Inc. | Parsing information onto packets using context-insensitive parsing rules based on packet characteristics |
WO1994022072A1 (en) * | 1993-03-24 | 1994-09-29 | Compression Research Group, Inc. | Information processing using context-insensitive parsing |
US5530645A (en) * | 1993-06-30 | 1996-06-25 | Apple Computer, Inc. | Composite dictionary compression system |
US5836003A (en) * | 1993-08-26 | 1998-11-10 | Visnet Ltd. | Methods and means for image and voice compression |
US5563595A (en) * | 1993-12-23 | 1996-10-08 | International Business Machines Corporation | Method and apparatus for compressing data |
EP0678986A1 (en) | 1994-04-22 | 1995-10-25 | Seta Co., Ltd. | Data compression method and system |
US5604495A (en) * | 1994-04-22 | 1997-02-18 | Seta Co., Ltd. | Data compression method and system |
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 |
US5635931A (en) * | 1994-06-02 | 1997-06-03 | International Business Machines Corporation | System and method for compressing data information |
US5841953A (en) * | 1994-08-01 | 1998-11-24 | Thomson Consumer Electronics, Inc. | Method for compressing and decompressing data files |
US5623262A (en) * | 1994-08-17 | 1997-04-22 | Apple Computer, Inc. | Multi-word variable length encoding and decoding |
US7190284B1 (en) | 1994-11-16 | 2007-03-13 | Dye Thomas A | Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent |
US8171032B2 (en) | 1994-11-29 | 2012-05-01 | Pinpoint, Incorporated | Providing customized electronic information |
US7483871B2 (en) | 1994-11-29 | 2009-01-27 | Pinpoint Incorporated | Customized electronic newspapers and advertisements |
US8056100B2 (en) | 1994-11-29 | 2011-11-08 | Pinpoint, Incorporated | System and method for providing access to data using customer profiles |
US7853600B2 (en) | 1994-11-29 | 2010-12-14 | Pinpoint, Incorporated | System and method for providing access to video programs and other data using customer profiles |
WO1998039723A2 (en) * | 1994-12-20 | 1998-09-11 | Rodney John Smith | Improvements relating to data compression |
WO1998039723A3 (en) * | 1994-12-20 | 1998-12-17 | Rodney John Smith | Improvements relating to data compression |
EP0723341A1 (en) * | 1995-01-18 | 1996-07-24 | Laboratoires D'electronique Philips S.A.S. | Data compression system |
US5499293A (en) * | 1995-01-24 | 1996-03-12 | University Of Maryland | Privacy protected information medium using a data compression method |
US5663721A (en) * | 1995-03-20 | 1997-09-02 | Compaq Computer Corporation | Method and apparatus using code values and length fields for compressing computer data |
EP0846373A2 (en) * | 1995-08-22 | 1998-06-10 | Hewlett-Packard Company | Method and apparatus for compressing and decompressing image data |
EP0846373A4 (en) * | 1995-08-22 | 2002-09-04 | Hewlett Packard Co | Method and apparatus for compressing and decompressing image data |
US5841376A (en) * | 1995-09-29 | 1998-11-24 | Kyocera Corporation | Data compression and decompression scheme using a search tree in which each entry is stored with an infinite-length character string |
US5778255A (en) * | 1995-10-10 | 1998-07-07 | International Business Machines Corporation | Method and system in a data processing system for decompressing multiple compressed bytes in a single machine cycle |
US5805086A (en) * | 1995-10-10 | 1998-09-08 | International Business Machines Corporation | Method and system for compressing data that facilitates high-speed data decompression |
US5710719A (en) * | 1995-10-19 | 1998-01-20 | America Online, Inc. | Apparatus and method for 2-dimensional data compression |
EP0788239A3 (en) * | 1996-01-31 | 1999-03-17 | Hitachi, Ltd. | Method of and apparatus for compressing and decompressing data and data processing apparatus and network system using the same |
EP0788239A2 (en) * | 1996-01-31 | 1997-08-06 | Hitachi, Ltd. | Method of and apparatus for compressing and decompressing data and data processing apparatus and network system using the same |
US8190513B2 (en) | 1996-06-05 | 2012-05-29 | Fraud Control Systems.Com Corporation | Method of billing a purchase made over a computer network |
US8229844B2 (en) | 1996-06-05 | 2012-07-24 | Fraud Control Systems.Com Corporation | Method of billing a purchase made over a computer network |
US8630942B2 (en) | 1996-06-05 | 2014-01-14 | Fraud Control Systems.Com Corporation | Method of billing a purchase made over a computer network |
US5845238A (en) * | 1996-06-18 | 1998-12-01 | Apple Computer, Inc. | System and method for using a correspondence table to compress a pronunciation guide |
USRE40458E1 (en) | 1996-06-18 | 2008-08-12 | Apple Inc. | System and method for using a correspondence table to compress a pronunciation guide |
US5861827A (en) * | 1996-07-24 | 1999-01-19 | Unisys Corporation | Data compression and decompression system with immediate dictionary updating interleaved with string search |
US6121901A (en) * | 1996-07-24 | 2000-09-19 | Unisys Corporation | Data compression and decompression system with immediate dictionary updating interleaved with string search |
US5951623A (en) * | 1996-08-06 | 1999-09-14 | Reynar; Jeffrey C. | Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases |
WO1998006028A1 (en) * | 1996-08-06 | 1998-02-12 | Reynar Jeffrey C | A lempel-ziv data compression technique utilizing a dicionary pre-filled with fequent letter combinations, words and/or phrases |
USRE41152E1 (en) | 1996-08-06 | 2010-02-23 | Pinpoint Incorporated | Lempel-Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases |
US5764994A (en) * | 1996-09-16 | 1998-06-09 | International Business Machines Corporation | Method and system for compressing compiled microcode to be executed within a data processing system |
US5745058A (en) * | 1996-10-21 | 1998-04-28 | International Business Machines Corporation | Method and system for compressing microcode to be executed within a data processing system |
US6414610B1 (en) | 1997-02-24 | 2002-07-02 | Rodney J Smith | Data compression |
US6082776A (en) * | 1997-05-07 | 2000-07-04 | Feinberg; Lawrence E. | Storing personal medical information |
US5798718A (en) * | 1997-05-12 | 1998-08-25 | Lexmark International, Inc. | Sliding window data compression method and apparatus |
US6415061B1 (en) * | 1997-06-13 | 2002-07-02 | Cisco Technology, Inc. | Method of updating dictionaries in a data transmission system using data compression |
US6704866B1 (en) | 1997-07-11 | 2004-03-09 | Cisco Technology, Inc. | Compression and encryption protocol for controlling data flow in a network |
US6879266B1 (en) | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
GB2334653A (en) * | 1997-12-20 | 1999-08-25 | Daewoo Electronics Co Ltd | Data compression system with dictionary updating algorithm |
US6240213B1 (en) | 1997-12-20 | 2001-05-29 | Daewoo Electronics Co., Ltd. | Data compression system having a string matching module |
GB2334653B (en) * | 1997-12-20 | 2003-04-16 | Daewoo Electronics Co Ltd | Data compression system having a string matching module |
US6401188B1 (en) | 1998-02-27 | 2002-06-04 | Cisco Technology, Inc. | Method for selection on a pattern sequence |
US20030102989A1 (en) * | 1998-08-13 | 2003-06-05 | Fujitsu Limited | Coding apparatus and decoding apparatus |
WO2000035098A1 (en) * | 1998-12-07 | 2000-06-15 | Marconi Communications Israel Ltd. | Apparatus and methods for real time lossless compression |
US7161506B2 (en) | 1998-12-11 | 2007-01-09 | Realtime Data Llc | Systems and methods for data compression such as content dependent data compression |
US8643513B2 (en) | 1998-12-11 | 2014-02-04 | Realtime Data Llc | Data compression systems and methods |
US8717203B2 (en) | 1998-12-11 | 2014-05-06 | Realtime Data, Llc | Data compression systems and methods |
US8933825B2 (en) | 1998-12-11 | 2015-01-13 | Realtime Data Llc | Data compression systems and methods |
US7714747B2 (en) | 1998-12-11 | 2010-05-11 | Realtime Data Llc | Data compression systems and methods |
US7358867B2 (en) | 1998-12-11 | 2008-04-15 | Realtime Data Llc | Content independent data compression method and system |
US8502707B2 (en) | 1998-12-11 | 2013-08-06 | Realtime Data, Llc | Data compression systems and methods |
US10033405B2 (en) | 1998-12-11 | 2018-07-24 | Realtime Data Llc | Data compression systems and method |
US7352300B2 (en) | 1998-12-11 | 2008-04-01 | Realtime Data Llc | Data compression systems and methods |
US9054728B2 (en) | 1998-12-11 | 2015-06-09 | Realtime Data, Llc | Data compression systems and methods |
US7378992B2 (en) | 1998-12-11 | 2008-05-27 | Realtime Data Llc | Content independent data compression method and system |
US7538694B2 (en) * | 1999-01-29 | 2009-05-26 | Mossman Holdings Llc | Network device with improved storage density and access speed using compression techniques |
US6145069A (en) * | 1999-01-29 | 2000-11-07 | Interactive Silicon, Inc. | Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices |
US6819271B2 (en) | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US6822589B1 (en) | 1999-01-29 | 2004-11-23 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US7129860B2 (en) | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US6885319B2 (en) | 1999-01-29 | 2005-04-26 | Quickshift, Inc. | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
US20030058873A1 (en) * | 1999-01-29 | 2003-03-27 | Interactive Silicon, Incorporated | Network device with improved storage density and access speed using compression techniques |
US20010038642A1 (en) * | 1999-01-29 | 2001-11-08 | Interactive Silicon, Inc. | System and method for performing scalable embedded parallel data decompression |
US20020101367A1 (en) * | 1999-01-29 | 2002-08-01 | Interactive Silicon, Inc. | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
US6208273B1 (en) | 1999-01-29 | 2001-03-27 | Interactive Silicon, Inc. | System and method for performing scalable embedded parallel data compression |
US6341346B1 (en) | 1999-02-05 | 2002-01-22 | Cisco Technology, Inc. | Method for comparison between a pattern sequence and a variable length key |
US8719438B2 (en) | 1999-03-11 | 2014-05-06 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US7395345B2 (en) | 1999-03-11 | 2008-07-01 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US8756332B2 (en) | 1999-03-11 | 2014-06-17 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US7321937B2 (en) | 1999-03-11 | 2008-01-22 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US7130913B2 (en) | 1999-03-11 | 2006-10-31 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US7415530B2 (en) | 1999-03-11 | 2008-08-19 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US8275897B2 (en) | 1999-03-11 | 2012-09-25 | Realtime Data, Llc | System and methods for accelerated data storage and retrieval |
US9116908B2 (en) | 1999-03-11 | 2015-08-25 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US8504710B2 (en) | 1999-03-11 | 2013-08-06 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US10019458B2 (en) | 1999-03-11 | 2018-07-10 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US7630986B1 (en) | 1999-10-27 | 2009-12-08 | Pinpoint, Incorporated | Secure data interchange |
US6262675B1 (en) * | 1999-12-21 | 2001-07-17 | International Business Machines Corporation | Method of compressing data with an alphabet |
US6765509B2 (en) | 2000-01-25 | 2004-07-20 | Btg International Limited | Data compression having improved compression speed |
US20030117299A1 (en) * | 2000-01-25 | 2003-06-26 | Jones Simon Richard | Data compression having improved compression speed |
US8880862B2 (en) | 2000-02-03 | 2014-11-04 | Realtime Data, Llc | Systems and methods for accelerated loading of operating systems and application programs |
US7376772B2 (en) | 2000-02-03 | 2008-05-20 | Realtime Data Llc | Data storewidth accelerator |
US7181608B2 (en) | 2000-02-03 | 2007-02-20 | Realtime Data Llc | Systems and methods for accelerated loading of operating systems and application programs |
US8090936B2 (en) | 2000-02-03 | 2012-01-03 | Realtime Data, Llc | Systems and methods for accelerated loading of operating systems and application programs |
US8112619B2 (en) | 2000-02-03 | 2012-02-07 | Realtime Data Llc | Systems and methods for accelerated loading of operating systems and application programs |
US20080016246A1 (en) * | 2000-07-25 | 2008-01-17 | Juniper Networks, Inc. | System and method for incremental and continuous data compression |
US7430331B2 (en) | 2000-07-25 | 2008-09-30 | Juniper Networks, Inc. | System and method for incremental and continuous data compression |
US7760954B2 (en) | 2000-07-25 | 2010-07-20 | Juniper Networks, Inc. | System and method for incremental and continuous data compression |
US7263238B2 (en) | 2000-07-25 | 2007-08-28 | Juniper Networks, Inc. | System and method for incremental and continuous data compression |
US7336682B2 (en) * | 2000-07-25 | 2008-02-26 | Juniper Networks, Inc. | Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data |
US20070115151A1 (en) * | 2000-07-25 | 2007-05-24 | Juniper Networks, Inc. | System and method for incremental and continuous data compression |
US7577164B2 (en) * | 2000-07-25 | 2009-08-18 | Juniper Networks, Inc. | Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data |
US20060114939A1 (en) * | 2000-07-25 | 2006-06-01 | Juniper Networks, Inc. | Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data |
US20090022413A1 (en) * | 2000-07-25 | 2009-01-22 | Juniper Networks, Inc. | System and method for incremental and continuous data compression |
US20020071438A1 (en) * | 2000-07-25 | 2002-06-13 | Singh Amit P. | Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data |
US8717204B2 (en) | 2000-10-03 | 2014-05-06 | Realtime Data Llc | Methods for encoding and decoding data |
US8692695B2 (en) | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
US9143546B2 (en) * | 2000-10-03 | 2015-09-22 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US7417568B2 (en) | 2000-10-03 | 2008-08-26 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US10419021B2 (en) | 2000-10-03 | 2019-09-17 | Realtime Data, Llc | Systems and methods of data compression |
US7400274B2 (en) | 2000-10-03 | 2008-07-15 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US9141992B2 (en) | 2000-10-03 | 2015-09-22 | Realtime Data Llc | Data feed acceleration |
US10284225B2 (en) | 2000-10-03 | 2019-05-07 | Realtime Data, Llc | Systems and methods for data compression |
US9967368B2 (en) | 2000-10-03 | 2018-05-08 | Realtime Data Llc | Systems and methods for data block decompression |
US9859919B2 (en) | 2000-10-03 | 2018-01-02 | Realtime Data Llc | System and method for data compression |
US8742958B2 (en) | 2000-10-03 | 2014-06-03 | Realtime Data Llc | Methods for encoding and decoding data |
US8723701B2 (en) | 2000-10-03 | 2014-05-13 | Realtime Data Llc | Methods for encoding and decoding data |
US7777651B2 (en) | 2000-10-03 | 2010-08-17 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US9667751B2 (en) | 2000-10-03 | 2017-05-30 | Realtime Data, Llc | Data feed acceleration |
WO2002033829A3 (en) * | 2000-10-16 | 2003-01-09 | Unisys Corp | Data compression and decompression method and apparatus with embedded filtering of infrequently encountered strings |
WO2002033829A2 (en) * | 2000-10-16 | 2002-04-25 | Unisys Corporation | Data compression and decompression method and apparatus with embedded filtering of infrequently encountered strings |
US7421311B2 (en) | 2000-12-11 | 2008-09-02 | United Parcel Service Of America, Inc. | Method and system for performing a package pre-load operation in accordance with a dispatch plan |
US8068930B2 (en) | 2000-12-11 | 2011-11-29 | United Parcel Service Of America, Inc. | Method and system for performing a package pre-load operation in accordance with a dispatch plan |
US7039496B2 (en) | 2000-12-11 | 2006-05-02 | United Parcel Services Of America, Inc. | Compression utility for use with smart label printing and pre-loading |
US20020135802A1 (en) * | 2000-12-11 | 2002-09-26 | United Parcel Service Of America, Inc. | Compression utility for use with smart label printing and pre-loading |
US9214000B2 (en) | 2000-12-11 | 2015-12-15 | United Parcel Service Of America, Inc. | Method and system for performing a package pre-load operation in accordance with a dispatch plan |
US8688266B2 (en) | 2000-12-11 | 2014-04-01 | United Parcel Service Of America, Inc. | Method and system for performing a package pre-load operation in accordance with a dispatch plan |
US20090187272A1 (en) * | 2000-12-11 | 2009-07-23 | United Parcel Service Of America, Inc. | Method & system for performing a package pre-load operation in accordance with a dispatch plan |
US7194331B2 (en) | 2000-12-11 | 2007-03-20 | United Parcel Service Of America, Inc. | Pre-load data capture and handling instruction generator for parcel sorting |
US20060149413A1 (en) * | 2000-12-11 | 2006-07-06 | United Parcel Service Of America, Inc. | Pre-load data capture and handling instruction generator for parcel sorting |
US11418569B2 (en) | 2001-01-24 | 2022-08-16 | Intellectual Pixels Limited | Image display system with visual server |
US9769477B2 (en) | 2001-02-13 | 2017-09-19 | Realtime Adaptive Streaming, LLC | Video data compression systems |
US10212417B2 (en) | 2001-02-13 | 2019-02-19 | Realtime Adaptive Streaming Llc | Asymmetric data decompression systems |
US8867610B2 (en) | 2001-02-13 | 2014-10-21 | Realtime Data Llc | System and methods for video and audio data distribution |
US8553759B2 (en) | 2001-02-13 | 2013-10-08 | Realtime Data, Llc | Bandwidth sensitive data compression and decompression |
US8929442B2 (en) | 2001-02-13 | 2015-01-06 | Realtime Data, Llc | System and methods for video and audio data distribution |
US9762907B2 (en) | 2001-02-13 | 2017-09-12 | Realtime Adaptive Streaming, LLC | System and methods for video and audio data distribution |
US7386046B2 (en) | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
US8073047B2 (en) | 2001-02-13 | 2011-12-06 | Realtime Data, Llc | Bandwidth sensitive data compression and decompression |
US8934535B2 (en) | 2001-02-13 | 2015-01-13 | Realtime Data Llc | Systems and methods for video and audio data storage and distribution |
US8054879B2 (en) | 2001-02-13 | 2011-11-08 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
WO2002073811A3 (en) * | 2001-03-07 | 2003-05-22 | Unisys Corp | Data compression and decompression method and apparatus with embedded filtering of dynamically variable infrequently encountered strings |
WO2002073811A2 (en) * | 2001-03-07 | 2002-09-19 | Unisys Corporation | Data compression and decompression method and apparatus with embedded filtering of dynamically variable infrequently encountered strings |
US20020138654A1 (en) * | 2001-03-21 | 2002-09-26 | Zhigang Liu | Apparatus, and associated method, for facilitating deletion of dictionary content pursuant to communication of signaling protocol messages |
US20070263553A1 (en) * | 2001-08-24 | 2007-11-15 | Juniper Networks, Inc. | Efficient discovery and verification of paths through a meshed overlay network |
US7769019B2 (en) | 2001-08-24 | 2010-08-03 | Juniper Networks, Inc. | Efficient discovery and verification of paths through a meshed overlay network |
US8289982B2 (en) | 2001-08-24 | 2012-10-16 | Juniper Networks, Inc. | Efficient discovery and verification of paths through a meshed overlay network |
US20100238934A1 (en) * | 2001-08-24 | 2010-09-23 | Juniper Networks, Inc. | Efficient discovery and verification of paths through a meshed overlay network |
US6628211B1 (en) | 2002-03-19 | 2003-09-30 | Unisys Corporation | Prefix table implemented data compression method and apparatus |
US6624762B1 (en) | 2002-04-11 | 2003-09-23 | Unisys Corporation | Hardware-based, LZW data compression co-processor |
US6683547B2 (en) * | 2002-04-22 | 2004-01-27 | Hughes Electronics Corporation | Method and system for data compession with dictionary pre-load of a set of expected character strings |
US20030197630A1 (en) * | 2002-04-22 | 2003-10-23 | John Border | Method and system for data compession with dictionary pre-load of a set of expected character strings |
US7464185B2 (en) * | 2002-04-30 | 2008-12-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for transfering data from a sending system to a receiving system, and program storage devices |
US20030204629A1 (en) * | 2002-04-30 | 2003-10-30 | Sambandam Suresh Sabapathy | Method and apparatus for transfering data from a sending system to a receiving system, and program storage devices |
US7580429B1 (en) * | 2002-09-05 | 2009-08-25 | U.S. Robotics | System and methods for improving data compression |
US6714145B1 (en) | 2002-09-26 | 2004-03-30 | Richard Marques | Method and apparatus for integer-based encoding and decoding of bits |
US6724330B1 (en) | 2002-12-07 | 2004-04-20 | Unisys Corporation | Prefix table implemented data compression method and apparatus utilizing string code reassignment |
US20080080780A1 (en) * | 2002-12-26 | 2008-04-03 | Canon Kabushiki Kaisha | Image compression method and apparatus |
US7697772B2 (en) | 2002-12-26 | 2010-04-13 | Canon Kabushiki Kaisha | Apparatus, method and computer program product for performing image compression of image data |
US20040125404A1 (en) * | 2002-12-26 | 2004-07-01 | Canon Kabushiki Kaisha | Image compression method and apparatus |
US7305137B2 (en) * | 2002-12-26 | 2007-12-04 | Canon Kabushiki Kaisha | Image compression method and apparatus |
US9614772B1 (en) | 2003-10-20 | 2017-04-04 | F5 Networks, Inc. | System and method for directing network traffic in tunneling applications |
US20050114120A1 (en) * | 2003-11-25 | 2005-05-26 | Jp Mobile Operating, L.P. | Communication system and method for compressing information sent by a communication device to a target portable communication device |
US7039394B2 (en) * | 2003-11-25 | 2006-05-02 | Good Technology, Inc. | Communication system and method for compressing information sent by a communication device to a target portable communication device |
US20050219075A1 (en) * | 2004-03-18 | 2005-10-06 | Storer James A | In-place differential compression |
US7079051B2 (en) | 2004-03-18 | 2006-07-18 | James Andrew Storer | In-place differential compression |
US20050246362A1 (en) * | 2004-05-03 | 2005-11-03 | Borland Devin P | System and method for dynamci log compression in a file system |
US8024483B1 (en) | 2004-10-01 | 2011-09-20 | F5 Networks, Inc. | Selective compression for network connections |
US8326984B1 (en) | 2004-10-01 | 2012-12-04 | F5 Networks, Inc. | Selective compression for network connections |
US8010668B1 (en) | 2004-10-01 | 2011-08-30 | F5 Networks, Inc. | Selective compression for network connections |
US8516113B1 (en) | 2004-10-01 | 2013-08-20 | F5 Networks, Inc. | Selective compression for network connections |
US7555690B1 (en) * | 2004-12-23 | 2009-06-30 | Xilinx, Inc. | Device for and method of coupling test signals to a device under test |
US8214607B2 (en) | 2005-03-11 | 2012-07-03 | Ross Neil Williams | Method and apparatus for detecting the presence of subblocks in a reduced-redundancy storage system |
US20060271540A1 (en) * | 2005-03-11 | 2006-11-30 | Williams Ross N | Method and apparatus for indexing in a reduced-redundancy storage system |
US20070192548A1 (en) * | 2005-03-11 | 2007-08-16 | Williams Ross N | Method and apparatus for detecting the presence of subblocks in a reduced-redundancy storage system |
US20110004639A1 (en) * | 2005-03-11 | 2011-01-06 | Ross Neil Williams | Method and Apparatus for Storing Data with Reduced Redundancy Using Data Clusters |
US8255434B2 (en) | 2005-03-11 | 2012-08-28 | Ross Neil Williams | Method and apparatus for storing data with reduced redundancy using data clusters |
US8356021B2 (en) | 2005-03-11 | 2013-01-15 | Ross Neil Williams | Method and apparatus for indexing in a reduced-redundancy storage system |
US7548652B1 (en) * | 2005-04-28 | 2009-06-16 | Sun Microsystems, Inc. | Rapid comparison of similar data strings |
US8516156B1 (en) | 2005-08-05 | 2013-08-20 | F5 Networks, Inc. | Adaptive compression |
US7783781B1 (en) | 2005-08-05 | 2010-08-24 | F5 Networks, Inc. | Adaptive compression |
US9225479B1 (en) | 2005-08-12 | 2015-12-29 | F5 Networks, Inc. | Protocol-configurable transaction processing |
US8533308B1 (en) | 2005-08-12 | 2013-09-10 | F5 Networks, Inc. | Network traffic management through protocol-configurable transaction processing |
US7167115B1 (en) | 2005-08-26 | 2007-01-23 | American Megatrends, Inc. | Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries |
US8499100B1 (en) | 2005-12-07 | 2013-07-30 | F5 Networks, Inc. | Adaptive compression |
US8275909B1 (en) | 2005-12-07 | 2012-09-25 | F5 Networks, Inc. | Adaptive compression |
US20070143381A1 (en) * | 2005-12-09 | 2007-06-21 | Kiyokuni Kawachiya | Method to reduce wasted character data areas of java strings |
US8275812B2 (en) * | 2005-12-09 | 2012-09-25 | International Business Machines Corporation | Method to reduce wasted character data areas of java strings |
US20100235412A1 (en) * | 2005-12-09 | 2010-09-16 | Kiyokuni Kawachiya | Method to reduce wasted character data areas of java strings |
US9002806B1 (en) | 2005-12-30 | 2015-04-07 | F5 Networks, Inc. | Compression of data transmitted over a network |
US7882084B1 (en) | 2005-12-30 | 2011-02-01 | F5 Networks, Inc. | Compression of data transmitted over a network |
US8559313B1 (en) | 2006-02-01 | 2013-10-15 | F5 Networks, Inc. | Selectively enabling packet concatenation based on a transaction boundary |
US8565088B1 (en) | 2006-02-01 | 2013-10-22 | F5 Networks, Inc. | Selectively enabling packet concatenation based on a transaction boundary |
US8477798B1 (en) | 2006-02-01 | 2013-07-02 | F5 Networks, Inc. | Selectively enabling network packet concatenation based on metrics |
US7873065B1 (en) | 2006-02-01 | 2011-01-18 | F5 Networks, Inc. | Selectively enabling network packet concatenation based on metrics |
US8611222B1 (en) | 2006-02-01 | 2013-12-17 | F5 Networks, Inc. | Selectively enabling packet concatenation based on a transaction boundary |
US9356824B1 (en) | 2006-09-29 | 2016-05-31 | F5 Networks, Inc. | Transparently cached network resources |
US9210239B1 (en) | 2006-11-29 | 2015-12-08 | F5 Networks, Inc. | Metacodec for optimizing network data compression based on comparison of write and read rates |
US8417833B1 (en) | 2006-11-29 | 2013-04-09 | F5 Networks, Inc. | Metacodec for optimizing network data compression based on comparison of write and read rates |
US7817630B2 (en) | 2006-12-18 | 2010-10-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Method, communications node, and memory for dynamic dictionary updating and optimization for compression and decompression of messages |
US20080147801A1 (en) * | 2006-12-18 | 2008-06-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Method, communications node, and memory for dynamic dictionary updating and optimization for compression and decompression of messages |
WO2008075235A1 (en) * | 2006-12-18 | 2008-06-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Method, communications node, and memory for dynamic dictionary updating and optimization for compression and decompression of messages |
US9106606B1 (en) | 2007-02-05 | 2015-08-11 | F5 Networks, Inc. | Method, intermediate device and computer program code for maintaining persistency |
US9967331B1 (en) | 2007-02-05 | 2018-05-08 | F5 Networks, Inc. | Method, intermediate device and computer program code for maintaining persistency |
US8174412B2 (en) | 2008-03-05 | 2012-05-08 | Ca, Inc. | Combined hash for variable data chunks |
US9766983B2 (en) | 2008-03-05 | 2017-09-19 | Ca, Inc. | Proximity and in-memory map based signature searching for duplicate data |
US20090228533A1 (en) * | 2008-03-05 | 2009-09-10 | Ca, Inc. | File change detection |
US20090228484A1 (en) * | 2008-03-05 | 2009-09-10 | Ca, Inc. | System and method of searching for duplicate data |
US8452736B2 (en) | 2008-03-05 | 2013-05-28 | Ca, Inc. | File change detection |
US8599048B2 (en) | 2009-05-04 | 2013-12-03 | International Business Machines Corporation | Systems and methods for compression of logical data objects for storage |
US8456332B2 (en) | 2009-05-04 | 2013-06-04 | International Business Machines Corporation | Systems and methods for compression of logical data objects for storage |
US20110231485A1 (en) * | 2009-05-04 | 2011-09-22 | Ori Shalev | Systems and methods for compression of logical data objects for storage |
US20110227764A1 (en) * | 2009-05-04 | 2011-09-22 | Ori Shalev | Systems and methods for compression of logical data objects for storage |
US20110227765A1 (en) * | 2009-05-04 | 2011-09-22 | Ori Shalev | Systems and methods for compression of logical data objects for storage |
US8581752B2 (en) | 2009-05-04 | 2013-11-12 | International Business Machines Corporation | Systems and methods for compression of logical data objects for storage |
US20100277353A1 (en) * | 2009-05-04 | 2010-11-04 | Storwize Ltd. | Method and system for compression of logical data objects for storage |
US8179291B2 (en) | 2009-05-04 | 2012-05-15 | International Business Machines Corporation | Method and system for compression of logical data objects for storage |
US7982636B2 (en) * | 2009-08-20 | 2011-07-19 | International Business Machines Corporation | Data compression using a nested hierachy of fixed phrase length static and dynamic dictionaries |
US20110043387A1 (en) * | 2009-08-20 | 2011-02-24 | International Business Machines Corporation | Data compression using a nested hierachy of fixed phrase length static and dynamic dictionaries |
US8694703B2 (en) | 2010-06-09 | 2014-04-08 | Brocade Communications Systems, Inc. | Hardware-accelerated lossless data compression |
US9401967B2 (en) | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US10417233B2 (en) | 2010-06-09 | 2019-09-17 | Avago Technologies International Sales Pte. Limited | Inline wire speed deduplication system |
US20130007556A1 (en) * | 2011-06-29 | 2013-01-03 | Seagate Technology Llc | Multiuse Data Channel |
US9130596B2 (en) * | 2011-06-29 | 2015-09-08 | Seagate Technology Llc | Multiuse data channel |
US8779950B2 (en) | 2012-03-05 | 2014-07-15 | Dcba, Llc | Command encoded data compression |
US8704687B2 (en) * | 2012-08-01 | 2014-04-22 | International Business Machines Corporation | Code set conversion management optimization |
US20140214779A1 (en) * | 2013-01-31 | 2014-07-31 | Yahoo! Inc. | System and method for applying an efficient data compression scheme to url parameters |
US9087070B2 (en) * | 2013-01-31 | 2015-07-21 | Yahoo! Inc. | System and method for applying an efficient data compression scheme to URL parameters |
US8902087B1 (en) * | 2013-08-27 | 2014-12-02 | International Business Machines Corporation | Data decompression utilizing pre-expanded dictionaries during decompression |
US9543980B2 (en) | 2014-10-10 | 2017-01-10 | Massachusettes Institute Of Technology | Systems and methods for model-free compression and model-based decompression |
US9438269B1 (en) * | 2015-09-02 | 2016-09-06 | International Business Machines Corporation | Accelerating codeset conversion in a computing environment |
US11989340B2 (en) | 2017-01-19 | 2024-05-21 | Mindmaze Group Sa | Systems, methods, apparatuses and devices for detecting facial expression and for tracking movement and location in at least one of a virtual and augmented reality system |
US11991344B2 (en) | 2017-02-07 | 2024-05-21 | Mindmaze Group Sa | Systems, methods and apparatuses for stereo vision and tracking |
US10506388B1 (en) * | 2018-06-27 | 2019-12-10 | Harris Global Communications, Inc. | Efficient short message compression |
US10873836B2 (en) | 2018-06-27 | 2020-12-22 | Harris Global Communications, Inc. | Efficient short message compression |
CN115276666A (en) * | 2022-09-28 | 2022-11-01 | 汉达科技发展集团有限公司 | Efficient data transmission method for equipment training simulator |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4876541A (en) | Stem for dynamically compressing and decompressing electronic data | |
US5532694A (en) | Data compression apparatus and method using matching string searching and Huffman encoding | |
US5818873A (en) | Single clock cycle data compressor/decompressor with a string reversal mechanism | |
US5179378A (en) | Method and apparatus for the compression and decompression of data using Lempel-Ziv based techniques | |
JP3273119B2 (en) | Data compression / decompression device | |
US5003307A (en) | Data compression apparatus with shift register search means | |
US5140321A (en) | Data compression/decompression method and apparatus | |
EP0490964B1 (en) | Improved data compression apparatus | |
EP1057269B1 (en) | Block-wise adaptive statistical data compressor | |
Ranganathan et al. | High-speed VLSI designs for Lempel-Ziv-based data compression | |
US4881075A (en) | Method and apparatus for adaptive data compression | |
US5729228A (en) | Parallel compression and decompression using a cooperative dictionary | |
US5506580A (en) | Data compression apparatus and method | |
US5016009A (en) | Data compression apparatus and method | |
US5126739A (en) | Data compression apparatus and method | |
Núñez et al. | Gbit/s lossless data compression hardware | |
US5608396A (en) | Efficient Ziv-Lempel LZI data compression system using variable code fields | |
Bell | Better OPM/L text compression | |
EP0582907A2 (en) | Data compression apparatus and method using matching string searching and Huffman encoding | |
US5010345A (en) | Data compression method | |
US5970177A (en) | Data compression using selective encoding | |
JPS61212920A (en) | Data compression and reception of coded compression data | |
JPH03204232A (en) | Encoding of compressed data | |
US5594435A (en) | Permutation-based data compression | |
WO1995015617A1 (en) | Data compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: DATA COMPRESSION CORPORATION, LEXINGTON, MASS. A M Free format text: ASSIGNMENT OF ASSIGNORS INTEREST.;ASSIGNOR:STORER, JAMES A.;REEL/FRAME:004790/0254 Effective date: 19871015 Owner name: DATA COMPRESSION CORPORATION, LEXINGTON, MASS. A M Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:STORER, JAMES A.;REEL/FRAME:004790/0254 Effective date: 19871015 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
FEPP | Fee payment procedure |
Free format text: PAT HOLDER CLAIMS SMALL ENTITY STATUS - SMALL BUSINESS (ORIGINAL EVENT CODE: SM02); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: STORER, JAMES A., MASSACHUSETTS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DATA COMPRESSION CORPORATION;REEL/FRAME:007869/0179 Effective date: 19891214 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |