IP Library Granted Patent US 10,333,549
Granted Patent B1
US 10,333,549 · App. 15/915,712 · Granted Jun 25, 2019

System and components for encoding integers

Inventors: Dan E. Tamir (Round Rock, TX); Dan Bruck (Austin, TX)
Assignee: iDensify LLC
H03M7/3088H03M7/42H03M7/6005H03M7/6011H03M7/6052H03M7/6017
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,333,549
App. No.
15/915,712
Granted
Jun 25, 2019
Kind
B1
Abstract

A system for encoding and decoding data-tokens. In some examples, the system may be configured to encode and decode integers. In other cases, the system may be configured to encode and decode symbols or bytes of data.

Claims (73)

1. A method comprising:

receiving, at an encoding component from a first memory device, an integer in a binary format, the binary format having a fixed length;

determining, by the encoding component, a position of a leading one (LO) within the binary format, the LO being a leftmost bit with a value of one;

generating, by the encoding component, a fixed length header, the fixed length header indicating a value equal to the position of the LO in the integer;

truncating, by the encoding component, zeros to the left of the leading one within the binary format from the binary format to generate a frustum;

concatenating, by the encoding component, the frustum to the fixed length header to generate an encoded representation of the integer; and

sending the encoded representation of the integer to a second memory device.

2. The method as recited in claim 1 , further comprising truncating the leading one from the binary format prior to concatenating the frustum to the fixed length header.

3. The method as recited in claim 1 , wherein a number of bits associated with the fixed length header is predetermined.

4. The method as recited in claim 1 , further comprising prepending at least one bit to the encoded representation, the at least one bit indicating the predetermined number of bits associated with the binary format.

5. The method as recited in claim 1 , wherein the frustum is positioned to the right of the fixed length header within the encoded representation.

6. The method as recited in claim 1 , wherein the frustum is positioned to the left of the fixed length header within the encoded representation.

7. The method as recited in claim 1 , further comprising concatenating at least one flag bit to a compressed representation prior to determining the position of the leading one, the at least one flag bit indicating a positive or a negative integer value.

8. A method comprising:

receiving, at an encoding component, a first integer, a second integer, a third integer, and a fourth integer;

shifting, by a first barrel shifter, the first integer left to remove any leading zeros;

shifting, by a second barrel shifter, the second integer left to remove any leading zeros;

shifting, by a third barrel shifter, the second integer right to align the second integer to the left of the first integer;

shifting, by a fourth barrel shifter, the third integer left to remove any leading zeros;

shifting, by a fifth barrel shifter, the third integer right to align the second integer to the left of the second integer;

shifting, by a sixth barrel shifter, the fourth integer left to remove any leading zeros;

shifting, by a seventh barrel shifter, the fourth integer right to align the second integer to the left of the third integer;

concatenating the first integer, the second integer, the third integer, and the fourth integer to generate frustum; and

concatenating the frustum to the right of a first header associated with the first integer, a second header associated with the second integer, a third header associated with the third integer, and a fourth header associated with the fourth integer to generate an encoded value; and

outputting the encoded value.

9. The method as recited in claim 8 , further comprising:

receiving, at a decoding component, the encoded value;

shifting, by an eighth barrel shifter, the first integer right to reintroduce the removed leading zeros;

shifting, by a ninth barrel shifter, the second integer right to self-align the second integer;

shifting, by a tenth barrel shifter, the second integer right to reintroduce the removed leading zeros;

shifting, by an eleventh barrel shifter, the third integer right to self-align the third integer;

shifting, by a twelfth barrel shifter, the third integer right to reintroduce the removed leading zeros;

shifting, by a thirteenth barrel shifter, the fourth integer right to self-align the third integer;

shifting, by a fourteenth barrel shifter, the fourth integer right to reintroduce the removed leading zeros; and

outputting at least one of the first integer, the second integer, the third integer, and the fourth integer.

10. The system as recited in claim 8 , wherein the first header is obtained from a first empty byte detector, the second header is obtained from a second empty byte detector, the third header is obtained from a third empty byte detector, and the fourth header is obtained from a fourth empty byte detector.

11. The system as recited in claim 8 , wherein at least one of the first integer, the second integer, the third integer, or the fourth integer is empty.

12. The system as recited in claim 8 , wherein the number of leading zeros associated with the first integer is determined by an empty byte detector prior to left shifting by the first barrel shifter.

13. The system as recited in claim 8 , wherein the number of bytes the second integer is shifted to align the second integer to the left of the first integer is based at least in part on an output of an empty byte detector that received the first integer as an input.

14. A method comprising:

reading, by an encoding system from an input stream associated with a first memory device, a first symbol;

determining, by the encoding system, that the first symbol is present in a symbol-table;

determining, by the encoding system, that the first symbol is a prime;

reading, by the encoding system from the input stream associated with first the memory device, a second symbol;

determining that the second symbol is in the symbol table;

determining that the first symbol and the second symbol are a valid pair;

transmitting a pair code to a second memory device; and

updating a pair table associated with the symbol-table.

15. The method as recited in claim 14 , wherein determining that the first symbol is present in the symbol-table includes comparing entries of the symbol-table to the first symbol.

16. The method as recited in claim 14 , further comprising

reading, by the encoding and decoding system, a third symbol from the input stream;

determining that the third symbol is not present in a symbol-table;

generating an exception code;

outing the third symbol;

inserting the third symbol into the symbol-table; and

updating the symbol-table.

17. The method as recited in claim 16 , wherein updating the symbol-table includes:

identifying an entry in the symbol-table associated with a largest stale counter;

removing the entry from a location in the symbol-table;

inserting the third symbol into the location in the symbol-table.

18. The method as recited in claim 16 , wherein updating the symbol-table includes:

identifying an entry in the symbol-table associated with a lowest usage counter;

removing the entry from a location in the symbol-table;

inserting the third symbol into the location in the symbol-table.

19. The method as recited in claim 16 , wherein updating the symbol-table includes incrementing at least one usage counter, decrementing at least one stale counter, and updating at least one valid bit.

20. The method as recited in claim 14 , further comprising

reading, by the encoding and decoding system, a third symbol from an input stream;

determining that the first symbol is present in a symbol-table;

determining that the first symbol is not a prime;

outputting third symbol index data associated with the symbol-table;

incrementing a usage counter associated with the third symbol index;

decrementing a stale counter associated with the third symbol index; and

setting a valid bit associated with the third symbol index.

Assignments (3)
CHANGE OF NAME Recorded Aug 7, 2020
From: IDENSIFY, INC.
To: SILICONIP, INC.
Reel/Frame 053433/0216 →
MERGER AND CHANGE OF NAME Recorded Jul 31, 2020
From: IDENSIFY, LLC; IDENSIFY, INC.
To: IDENSIFY, INC.
Reel/Frame 053368/0885 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2018
From: TAMIR, DAN E.; BRUCK, DAN
To: IDENSIFY LLC
Reel/Frame 045147/0067 →
Continuity (2)
Provisional Application 62468770 · Mar 8, 2017
Provisional Application 62529688 · Jul 7, 2017
Cited By (1)
US 12,695,466