IP Library Granted Patent US 10,340,945
Granted Patent B2
US 10,340,945 · App. 16/043,952 · Granted Jul 2, 2019

Memory compression method and apparatus

Inventors: Dan E. Tamir (Round Rock, TX); Peter Jeremy Wilson (Leander, TX)
Assignee: iDensify LLC
H03M7/3086H03M7/3088H03M7/40H03M7/4006
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 10,340,945
App. No.
16/043,952
Granted
Jul 2, 2019
Kind
B2
Abstract

Methods and systems for encoding of integers are discussed. For example, various methods and systems may utilize Huffman coding, Tunstall coding, Arithmetic Coding, LZ77 coding, LZ78 coding, LW coding, or Shannon Fano Elias coding to encode the integers.

Claims (93)

1. A method comprising:

receiving at least one first integer from an input stream;

storing the at least one first integer as a temporary integer;

generating a list equal to a temporary ordered list of integers concatenated with the temporary integer;

determine that the list is in a dictionary;

setting the temporary ordered list of integers to the list;

representing the at least one first integer as at least one first token using a uniquely decodable coding technique; and

transmitting the at least one first token.

2. The method of claim 1 , wherein receiving the at least one first integer includes receiving the next (n+1) integers and further comprising:

storing a left most element of the equivalent of the LZ77 look-ahead buffer in a temporary integer;

setting a temporary ordered list of integers to null;

generating a list equal to the temporary ordered list of integers concatenated with the temporary integer;

setting a temporary variable to the cardinality of the temporary ordered list of integers;

determining that the list is a prefix of a subsists of a history buffer list;

reading the next integer form the input stream;

placing the next integer in the temporary integer;

concatenating the temporary ordered list of integers concatenated with the temporary integer;

setting the list to a temporary ordered list of integers; and

setting the temporary variable to the cardinality of the temporary ordered list of integers.

3. The method of claim 1 , wherein receiving the at least one first integer includes receiving the next (n+1) integers and further comprising:

storing a left most element of the equivalent of the LZ77 look-ahead buffer in a temporary integer;

setting a temporary ordered list of integers to null;

generating a list equal to the temporary ordered list of integers concatenated with the temporary integer;

setting a temporary variable to the cardinality of the temporary ordered list of integers;

determining that the list is not a prefix of a subsists of a history buffer list;

sending the temporary variable, a location of a maximal prefix match of the ordered list of integers, and list;

sliding the history buffer list and the LZ77 look-ahead buffer by the temporary variable plus one; and

appending the temporary variable to the history buffer.

4. The method of claim 1 , further comprising:

receiving at least one second integer from an input stream;

storing the at least one second integer as a second temporary integer;

generating a second list equal to a temporary ordered list of integers concatenated with the second temporary integer;

determine that the second list is in not in the dictionary;

determining that the second temporary ordered list of integers is empty;

setting a second temporary variable to zero; and

outputting the second temporary variable and the temporary integer.

5. The method of claim 1 , further comprising:

receiving at least one second integer from an input stream;

storing the at least one second integer as a temporary integer;

generating a second list equal to a temporary ordered list of integers concatenated with the second temporary integer;

determine that the second list is in not in the dictionary;

determining that the second temporary ordered list of integers is not empty;

setting a second temporary variable to an index of the dictionary entry that matches the second temporary ordered list of integers; and

outputting the second temporary variable and the second temporary integer.

6. The method of claim 1 , further comprising:

receiving at least one second integer from an input stream;

storing the at least one second integer as a first temporary integer and in a next available location in a singleton list;

sending a token representing zero and the second temporary integer to a decoder;

setting a temporary ordered list of integers to the second temporary integer;

reading at least one third integer from the input stream;

storing the at least one third integer as a second temporary integer;

determining that the second temporary integer is not in the singleton list;

inserting the second temporary integer into the singleton list;

generating a second list equal to the temporary ordered list of integers concatenated with the second temporary integer;

determine that the second list is in the dictionary;

setting the temporary string to the list;

determining that the input stream is empty; and

outputting one and an index of the dictionary entry that matches the temporary string.

7. A method comprising:

receiving a first integer;

determining that the first integer is in an already transmitted list;

sending a hit code;

updating a counter associated with the first integer; and

updating the already transmitted list.

8. The method of claim 7 , further comprising:

receiving a second integer;

determining that the second integer is not in the already transmitted list;

sending a miss code;

updating a counter associated with the second integer; and

updating the compression model for compression the members of the already transmitted list.

9. The method of claim 8 , further comprising sending a uniquely decoded version of the second integer.

10. The method of claim 9 , wherein the encoded version of the second integer is at least one of an Elias Delta code, a Huffman code, Tunstall code, Arithmetic coding code, or a Shannon Fano Elias code.

11. The method of claim 8 , wherein the miss code is a flag.

12. The method of claim 8 , wherein the miss code is an exception code.

13. The method of claim 7 , further comprising sending an encoded version of the first integer and wherein the encoded version of the first integer is a Huffman code, Tunstall code, Arithmetic coding code, or a Shannon Fano Elias code.

14. The method of claim 7 , wherein the hit code is a flag.

15. The method of claim 7 , wherein the hit code is an exception code.

16. The method of claim 7 , wherein the miss code is imbedded in the encoding technique and the hit code is imbedded in the encoding technique.

17. A computer system comprising:

a processor; and

memory storing program instructions, which when executed by the processor, cause the processor to:

receive a first integer;

determine that the first integer is in an already transmitted list;

send a hit code, the hit code including an encoded version of the first integer; and

update a counter associated with the first integer.

18. The system of claim 17 , wherein the memory stores additional program instructions, which when executed by the processor, cause the processor to:

receiving a second integer;

determining that the second integer is not in the already transmitted list;

sending a miss code, the miss code including an encoded version of the second integer;

updating a counter associated with the second integer; and

updating the already transmitted list.

19. The method of claim 17 , wherein the miss code is at least one of a flag or an exception code.

20. The method of claim 1 , wherein the dictionary is initialized to contain each letter of an alphabet.

Assignments (3)
CHANGE OF NAME Recorded Aug 7, 2020
From: IDENSIFY, INC.
To: SILICONIP, INC.
Reel/Frame 053434/0402 →
MERGER AND CHANGE OF NAME Recorded Jul 31, 2020
From: IDENSIFY, LLC; IDENSIFY, INC.
To: IDENSIFY, INC.
Reel/Frame 053370/0587 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2018
From: TAMIR, DAN E.; WILSON, PETER JEREMY
To: IDENSIFY LLC
Reel/Frame 046726/0395 →
Continuity (2)
Provisional Application 62536167 · Jul 24, 2017
Related Publication 20190028115A1 · Jan 24, 2019
Cited By (1)
US 12,695,466