IP Library Granted Patent US 8,427,347
Granted Patent B1
US 8,427,347 · App. 13/075,656 · Granted Apr 23, 2013

Dynamic data compression and decompression

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,427,347
App. No.
13/075,656
Granted
Apr 23, 2013
Kind
B1
Abstract

A method of compressing data is provided. In one implementation, the method includes compressing data with a plurality of compression schemes, where the compressing is computer implemented. Also, in one implementation, the plurality of compression schemes include a first compression scheme and a second compression scheme and the compressing includes compressing a first portion of the data with the first compression scheme and compressing a second portion of the data with the second compression scheme, where the second compression scheme is different from the first compression scheme. In one implementation, the method further includes determining a suitable compression scheme from the plurality of compression schemes with which to compress each portion of the data, where the determining is computer implemented. In one implementation, the data is configuration data for configuring an IC.

Claims (101)

1. A method comprising:

identifying each portion of data as a repetitive data pattern portion or a non-repetitive data pattern portion;

for each portion identified as a repetitive data pattern portion, identifying a repetitive compression scheme to apply to the repetitive data pattern portion;

for each portion identified as a non-repetitive data pattern portion, identifying a non-repetitive compression scheme to apply to the non-repetitive data pattern portion; and

compressing each data portion according to a corresponding identified compression scheme;

wherein the identifying each portion of data, the identifying a repetitive compression scheme, the identifying a non-repetitive compression scheme, and the compressing are computer implemented, further wherein the identifying each portion of data comprises:

for each byte of the data, determining whether that byte represents an end of the data; and

for each byte of the data, if that byte does not represent the end of the data, resetting counter values to zeros.

2. The method of claim 1 , wherein

for each byte of the data, if that byte does not represent the end of the data,

resetting booleans to false;

incrementing a checked counter value; and

determining whether a current byte is equal to a next byte.

3. The method of claim 2 , wherein if the current byte is not equal to the next byte, the method further comprising:

determining if repetitive data was found; and

if repetitive data was not found, resetting a repeat counter value to zero.

4. The method of claim 2 , wherein if the current byte is equal to the next byte, the method further comprising:

incrementing a repeat counter value;

determining if the current byte consists of all 1 bit values;

if the current byte consists of all 1 bit values, indicating that a repetitive byte of all 1 bit values has been found; and

if the current byte does not consist of all 1 bit values, determining if the repeat counter value is equal to 2.

5. The method of claim 4 , wherein if repeat counter value is equal to 2, the method further comprising:

determining if the current byte consists of all 0 bit values;

if the current byte consists of all 0 bit values, indicating that a repetitive byte of all 0 bit values has been found; and

if the current byte does not consist of all 0 bit values, indicating that a repetitive variable has been found.

6. The method of claim 5 , wherein the compressing comprises:

determining if repetitive data was found;

if repetitive data was not found, compressing non-repetitive data having a data length equal to checked counter value plus one;

if repetitive data was found:

(i) determining if checked counter value is equal to repeat counter value plus one;

(ii) if the checked counter value is equal to the repeat counter value plus one, compressing repetitive data having a data length equal to repeat counter value plus one; and

(iii) if the checked counter value is not equal to the repeat counter value plus one, compressing non-repetitive data having data length equal to checked counter value minus repeat counter value minus one and compressing repetitive data having a data length equal to repeat counter value plus one; and

updating current data pointer.

7. The method of claim 6 , wherein the compressing non-repetitive data comprises:

determining if the data length of the non-repetitive data is equal to one and if previous scheme is ZERO scheme;

if the data length of the non-repetitive data is equal to one and the previous scheme is the ZERO scheme, compressing data using Z-S-V scheme;

if the data length of the non-repetitive data is not equal to one or the previous scheme is not the ZERO scheme, determining if the data length is equal to two and if the previous scheme is the ZERO scheme;

if the data length is equal to two and the previous scheme is the ZERO scheme, compressing data using Z-D-V scheme;

if the data length is not equal to two or the previous scheme is not the ZERO scheme, determining if majority of nibble data is nibble of 0 bit values;

if the majority of nibble data is nibble of 0 bit values, compressing data using Z-N scheme; and

if the majority of nibble data is not nibble of 0 bit values, then not compressing the data.

8. The method of claim 6 , wherein the compressing repetitive data comprises:

determining if the repetitive data is a repetitive variable data;

if the repetitive data is not a repetitive variable data, determining if the repetitive data consists of 0 bit values;

if the repetitive data does not consist of 0 bit values, compressing the repetitive data using ONE scheme; and

if the repetitive data consists of 0 bit values, compressing the repetitive data using ZERO scheme.

9. The method of claim 8 further comprising:

if the repetitive data is a repetitive variable data, determining if previous scheme is a VAR scheme or M-VAR scheme and if previous data length and current data length match;

if the previous scheme is a VAR scheme or M-VAR scheme and the previous data length and the current data length match, compressing the repetitive data using M-VAR scheme; and

if the previous scheme is a VAR scheme or M-VAR scheme, but the previous data length and the current data length do not match, compressing the repetitive data using a VAR scheme.

10. The method of claim 1 , wherein the data is configuration data for configuring an integrated circuit (IC).

11. A non-transitory machine-readable medium comprising machine-executable instructions for:

identifying each portion of data as a repetitive data pattern portion or a non-repetitive data pattern portion;

for each portion identified as a repetitive data pattern portion, identifying a repetitive compression scheme to apply to the repetitive data pattern portion;

for each portion identified as a non-repetitive data pattern portion, identifying a non-repetitive compression scheme to apply to the non-repetitive data pattern portion; and

compressing each data portion according to a corresponding identified compression scheme;

wherein the identifying each portion of data comprises:

for each byte of the data, determining whether that byte represents an end of the data; and

for each byte of the data, if that byte does not represent the end of the data, resetting counter values to zeros.

12. The non-transitory machine-readable medium of claim 11 , wherein for each byte of the data, if that byte does not represent the end of the data,

resetting booleans to false;

incrementing a checked counter value; and

determining whether a current byte is equal to a next byte.

13. The non-transitory machine-readable medium of claim 12 , wherein if the current byte is not equal to the next byte, the non-transitory machine-readable medium further comprising machine-executable instructions for:

determining if repetitive data was found; and

if repetitive data was not found, resetting a repeat counter value to zero.

14. The non-transitory machine-readable medium of claim 12 , wherein if the current byte is equal to the next byte, the non-transitory machine-readable medium further comprising machine-executable instructions for:

incrementing a repeat counter value;

determining if the current byte consists of all 1 bit values;

if the current byte consists of all 1 bit values, indicating that a repetitive byte of all 1 bit values has been found; and

if the current byte does not consist of all 1 bit values, determining if the repeat counter value is equal to 2.

15. The non-transitory machine-readable medium of claim 14 , wherein if repeat counter value is equal to 2, the non-transitory machine-readable medium further comprising machine-executable instructions for:

determining if the current byte consists of all 0 bit values;

if the current byte consists of all 0 bit values, indicating that a repetitive byte of all 0 bit values has been found; and

if the current byte does not consist of all 0 bit values, indicating that a repetitive variable has been found.

16. The non-transitory machine-readable medium of claim 15 , wherein the compressing comprises:

determining if repetitive data was found;

if repetitive data was not found, compressing non-repetitive data having a data length equal to checked counter value plus one;

if repetitive data was found:

(i) determining if checked counter value is equal to repeat counter value plus one;

(ii) if the checked counter value is equal to the repeat counter value plus one, compressing repetitive data having a data length equal to repeat counter value plus one; and

(iii) if the checked counter value is not equal to the repeat counter value plus one, compressing non-repetitive data having data length equal to checked counter value minus repeat counter value minus one and compressing repetitive data having a data length equal to repeat counter value plus one; and

updating current data pointer.

17. The non-transitory machine-readable medium of claim 16 , wherein the compressing non-repetitive data comprises:

determining if the data length of the non-repetitive data is equal to one and if previous scheme is ZERO scheme;

if the data length of the non-repetitive data is equal to one and the previous scheme is the ZERO scheme, compressing data using Z-S-V scheme;

if the data length of the non-repetitive data is not equal to one or the previous scheme is not the ZERO scheme, determining if the data length is equal to two and if the previous scheme is the ZERO scheme;

if the data length is equal to two and the previous scheme is the ZERO scheme, compressing data using Z-D-V scheme;

if the data length is not equal to two or the previous scheme is not the ZERO scheme, determining if majority of nibble data is nibble of 0 bit values;

if the majority of nibble data is nibble of 0 bit values, compressing data using Z-N scheme; and

if the majority of nibble data is not nibble of 0 bit values, then not compressing the data.

18. The non-transitory machine-readable medium of claim 16 , wherein the compressing repetitive data comprises:

determining if the repetitive data is a repetitive variable data;

if the repetitive data is not a repetitive variable data, determining if the repetitive data consists of 0 bit values;

if the repetitive data does not consist of 0 bit values, compressing the repetitive data using ONE scheme; and

if the repetitive data consists of 0 bit values, compressing the repetitive data using ZERO scheme.

19. The non-transitory machine-readable medium of claim 18 further comprising instructions for:

if the repetitive data is a repetitive variable data, determining if previous scheme is a VAR scheme or M-VAR scheme and if previous data length and current data length match;

if the previous scheme is a VAR scheme or M-VAR scheme and the previous data length and the current data length match, compressing the repetitive data using M-VAR scheme; and

if the previous scheme is a VAR scheme or M-VAR scheme, but the previous data length and the current data length do not match, compressing the repetitive data using a VAR scheme.

20. The non-transitory machine-readable medium of claim 11 , wherein the data is configuration data for configuring an integrated circuit (IC).

Assignments (2)
SECURITY INTEREST Recorded Sep 12, 2025
From: ALTERA CORPORATION
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 073431/0309 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2011
From: CHAI, CHUNG SHIEN; HEW, YIN CHONG
To: ALTERA CORPORATION
Reel/Frame 026286/0940 →