IP Library Granted Patent US 10,601,442
Granted Patent B2
US 10,601,442 · App. 16/419,199 · Granted Mar 24, 2020

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,601,442
App. No.
16/419,199
Granted
Mar 24, 2020
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 (91)

1. A method comprising:

receiving a first integer from an input stream, the first integer being unbounded;

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

sending an exception code, in response to determining that the first integer is not in the already transmitted list;

inserting the first integer into the already transmitted list; and

updating, in response to the first integer being inserted into the already transmitted list, a representation of the integers residing in the already transmitted list.

2. The method of claim 1 , further comprising:

receiving a second integer from the input stream;

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

sending a representation of the second integer, in response to determining that the second integer is in the already transmitted list;

updating a weighted value associated with the representation of the second integer in the already transmitted list, in response to determining that the second integer is in the already transmitted list; and

updating, in response to the first integer being inserted into the already transmitted list, a code of the integers residing in the already transmitted list.

3. The method of claim 1 , wherein the first integer is a uniquely decodable code.

4. The method of claim 1 , further comprising assigning a weighted value to the first integer.

5. The method of claim 1 , further comprising:

receiving a stream of bits, the stream of bits including an encoded token;

determining that the encoded token is an exception;

reading the encoded token;

decoding the encoded token to obtain a second integer;

inserting the second integer into the already transmitted list;

updating a weighted value associated with the second integer; and

updating, in response to the second integer being inserted into the already transmitted list, the code of the integers residing in the already transmitted list.

6. The method of claim 5 , wherein the encoded token includes a Huffman code representation of an exception followed by an Elias delta code of the second integer, the second integer being unencountered.

7. The method of claim 1 , further comprising:

receiving a stream of bits, the stream of bits including an encoded token;

determining that the encoded token is a second integer

reading the encoded token;

decoding the encoded token to obtain the second integer;

updating a weighted value associated with the Huffman code representation of the second integer in the already transmitted list; and

updating, in response to the second integer being inserted into the already transmitted list, the Huffman code of the integers residing in the already transmitted list.

8. The method of claim 7 , wherein the encoded token includes a Huffman code representation of the second integer.

9. The method of claim 1 , further comprising:

receiving a stream of bits, the stream of bits including an encoded token;

determining that the encoded token is in the already transmitted list;

removing the most significant bit from the token;

decoding the encoded token to obtain a second integer;

updating a weighted value associated with the second integer; and

updating, in response to the second integer being inserted into the already transmitted list, the code of the integers residing in the already transmitted list.

10. A method comprising:

receiving a first integer from an input stream;

storing the first integer in a first list;

receiving a second integer from the input stream;

storing the second integer in a second list;

setting a third list equal to the first list concatenated with the second list;

determining that the third list is not in a dictionary;

determining if the third list is singleton;

setting a first value;

outputting the first value and an index of the dictionary entry that matches the first list in the dictionary; and

setting the first list equal to the second list.

11. The method of claim 10 , wherein the third list is a singleton and the first value is set to zero.

12. The method of claim 10 , wherein the third list is not a singleton and the first value is set to one.

13. The method of claim 10 , further comprising:

determining that the input stream is not empty;

receiving a third integer from the input stream;

storing the third integer in the second list;

setting the third list equal to the first list concatenated with the second list; and

determining that the third list is in the dictionary.

14. The method of claim 13 , further comprising:

storing the second list in the first list;

determining that the input stream is not empty;

receiving a fourth integer from the input stream;

storing the fourth integer in the second list;

setting the third list equal to the first list concatenated with the second list;

determining that the third list is not in a dictionary;

determining if the third list is singleton;

setting the flag;

outputting the flag and an index of the dictionary entry that matches the first list in the dictionary; and

setting the first value equal to the second value.

15. The method of claim 10 , further comprising:

determining that the input stream is empty; and

outputting, in response to determining the input stream is empty, an index of the dictionary entry that matches the first list.

16. An encoder and decoder comprising:

a multiport and command arbiter;

a command queue coupled to the multiport and command arbiter;

a write queue coupled to the multiport and command arbiter;

a read queue coupled to the multiport and command arbiter;

a transaction processing component coupled to the command queue and the write queue; and

an output interface coupled to the transaction processing component.

17. The encoder and decoder of claim 16 , further comprising:

a data buffer coupled between the multiport and command arbiter and the read queue; and

a decompressor coupled between the multiport and command arbiter and the read queue.

18. The encoder and decoder of claim 16 , further comprising:

a compression engine coupled between the command queue and the transaction processing component;

an uncompressed data buffer coupled between the compression engine and the transaction processing component;

a compressed data buffer coupled between the uncompressed data buffer and the transaction processing component;

a second command queue coupled between the compressed data buffer and the transaction processing component; and

a second write queue coupled between the compressed data buffer and the transaction processing component.

19. The encoder and decoder of claim 18 , further comprising:

a decompression component coupled between the read queue and the multiport and command arbiter; and

a second uncompressed data buffer coupled between the decompression component and the multiport and command arbiter.

20. The method of claim 1 , wherein the representation of the integers residing in the already transmitted list are one or more Huffman code representations of the integers.

Assignments (3)
CHANGE OF NAME Recorded Aug 7, 2020
From: IDENSIFY, INC.
To: SILICONIP, INC.
Reel/Frame 053434/0530 →
MERGER AND CHANGE OF NAME Recorded Jul 31, 2020
From: IDENSIFY, LLC; IDENSIFY, INC.
To: IDENSIFY, INC.
Reel/Frame 053370/0737 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2019
From: TAMIR, DAN E.; WILSON, PETER JEREMY
To: IDENSIFY LLC
Reel/Frame 050790/0412 →
Continuity (3)
Continuation 16043952 · Jul 24, 2018
Provisional Application 62536167 · Jul 24, 2017
Related Publication 20190280710A1 · Sep 12, 2019