IP Library Granted Patent US 10,996,929
Granted Patent B2
US 10,996,929 · App. 16/352,933 · Granted May 4, 2021

High quality down-sampling for deterministic bit-stream computing

Inventors: Mohammadhassan Najafi (Lafayette, LA); David J. Lilja (Maplewood, MN)
Assignee: Regents of the University of Minnesota
G06F7/70G06F7/584
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,996,929
App. No.
16/352,933
Granted
May 4, 2021
Kind
B2
Abstract

This disclosure describes techniques for processing data bits using pseudo-random deterministic bit-streams. In some examples, a device includes a pseudo-random bit-stream generator configured to generate bit combinations encoding first and second numerical values based on a proportion of the data bits in the sequence that are high relative to the total data bits in the sequence. The device also includes a stochastic computational unit configured to perform a computational operation on the bit combinations and produce an output bit-stream having a set of data bits indicating a result of the computational operation, wherein the data bits of the output bit-stream represent the result based on a probability that any data bit in the set of data bits of the output bit-stream is high.

Claims (91)

1. A device comprising:

an integrated circuit comprising a computational circuit configured to process at least a first set of data bits encoding a first numerical value and a second set of data bits encoding a second numerical value,

wherein the computational circuit comprises:

a deterministic pseudo-random bit-stream generator configured to generate bit combinations representing a first bit sequence and a second bit sequence that deterministically encode the first and second numerical values, respectively, based on a proportion of the data bits in the sequence that are high relative to the total data bits in the sequence, wherein a subset of the bit combinations pairs a data bit of the first bit sequence with multiple different data bits of the second bit sequence, and wherein the bit combinations are generated such that high data bits of the first and second bit sequence are pseudo-randomly distributed throughout the first and second bit sequences, and

a stochastic computational circuit configured to:

perform a computational operation on the bit combinations; and

produce an output bit-stream having a set of data bits indicating a result of the computational operation, wherein the data bits of the output bit-stream represent the result based on a probability that any data bit in the set of data bits of the output bit-stream is high.

2. The device of claim 1 , wherein, prior to performing the computational operation on the bit combinations, the stochastic computational circuit is configured to down sample the first bit sequence and the second bit sequence represented by the bit combinations generated by the deterministic pseudo-random bit-stream generator.

3. The device of claim 1 ,

wherein the high data bits are pseudo-randomly distributed throughout the first bit sequence based on a first function comparing two or more data bits of the first bit sequence to generate a next bit of the first bit sequence, and

wherein the high data bits are pseudo-randomly distributed throughout the second bit sequence based on a second function comparing two or more data bits of the second bit sequence to generate a next bit of the second bit sequence, the second function being different from the first function.

4. The device of claim 1 ,

wherein the high data bits are pseudo-randomly distributed throughout the first bit sequence based on a first function and based on a first seed, and

wherein the high data bits are pseudo-randomly distributed throughout the second bit sequence based on a second function based on a second seed, wherein:

the second seed is different from the first seed; or

the second function is different from the first function.

5. The device of claim 1 , wherein the deterministic pseudo-random bit-stream generator comprises:

a first pseudo-random number generator configured to generate a first pseudo-random number;

a second pseudo-random number generator configured to generate a second pseudo-random number;

a first comparator configured to generate the first bit sequence based on the first pseudo-random number and a first constant number; and

a second comparator configured to generate the second bit sequence based on the second pseudo-random number and a second constant number.

6. The device of claim 5 ,

wherein each of the first pseudo-random number, the second pseudo-random number, the first constant number, and the second constant number comprises an N-bit binary number, and

wherein each of the first comparator and the second comparator comprises an N-bit comparator configured to generate the respective bit sequence based on whether the respective pseudo-random number is greater than the respective constant number.

7. The device of claim 5 ,

wherein the first pseudo-random number generator comprises a first linear-feedback shift register (LFSR) configured to generate the first pseudo-random number based on a first function, and

wherein the second pseudo-random number generator comprises a second LFSR configured to generate the second pseudo-random number based on a second function that is different from the first function.

8. The device of claim 5 ,

wherein the first pseudo-random number generator comprises a first linear-feedback shift register (LFSR) is configured to receive a clock signal and generate new pseudo-random numbers based on the clock signal, and

wherein the second pseudo-random number generator comprises a second LFSR configured to receive the clock signal and generate new pseudo-random numbers based on the clock signal.

9. The device of claim 8 , wherein the second LFSR is configured to receive a reset signal and restart the pseudo-random numbers based on the reset signal.

10. The device of claim 5 ,

wherein the first pseudo-random number generator comprises a first linear-feedback shift register (LFSR) comprising an N-bit LFSR,

wherein the first LFSR is configured to receive a first clock signal and generate new pseudo-random numbers based on the first clock signal, and

wherein the second pseudo-random number generator comprises a second LFSR configured to:

receive a second clock signal including no more than one active edge per N active edges of the first clock signal; and

generate new pseudo-random numbers based on the active edge of the second clock signal.

11. The device of claim 5 ,

wherein the first pseudo-random number generator comprises a first linear-feedback shift register (LFSR) configured to receive a clock signal and generate new pseudo-random numbers based on the clock signal, and

wherein the second pseudo-random number generator comprises a second LFSR configured to:

receive the clock signal;

receive an inhibit signal; and

generate new pseudo-random numbers based on the clock signal and the inhibit signal.

12. The device of claim 1 ,

wherein the first set of data bits encodes the first numerical value in N data bits, and

wherein a length of the first bit sequence is greater than or equal to N data bits.

13. The device of claim 12 , wherein a length of the output bit-stream is less than 2{circumflex over ( )}(2N) data bits.

14. A method for performing a digital computational operation, the method comprising:

receiving, at a deterministic pseudo-random bit-stream generator, a first set of data bits encoding a first numerical value and a second set of data bits encoding a second numerical value;

generating, at the deterministic pseudo-random bit-stream generator, bit combinations representing a first bit sequence and a second bit sequence that deterministically encode the first and second numerical values, respectively, based on a proportion of the data bits in the sequence that are high relative to the total data bits in the sequence, wherein a subset of the bit combinations pairs a data bit of the first bit sequence with multiple different data bits of the second bit sequence, and wherein the bit combinations are generated such that high data bits of the first and second bit sequence are pseudo-randomly distributed throughout the first and second bit sequences; and

producing, by a stochastic computational circuit, an output bit-stream by performing a computational operation on the bit combinations, wherein the data bits of the output bit-stream represent a result of the computational operation based on a probability that any data bit in the output bit-stream is high.

15. The method of claim 14 , further comprising down sampling, by the stochastic computational circuit and prior to performing the computational operation on the bit combinations, the first bit sequence and the second bit sequence represented by the bit combinations generated by the deterministic pseudo-random bit-stream generator.

16. The method of claim 14 , wherein generating the bit combinations comprises:

generating the first bit sequence such that the high data bits are pseudo-randomly distributed throughout the first bit sequence based on a first function and based on a first seed; and

generating the second bit sequence such that the high data bits are pseudo-randomly distributed throughout the second bit sequence based on a second function and based on a second seed, wherein:

the second seed is different from the first seed; or

the second function is different from the first function.

17. The method of claim 14 , further comprising:

generating a first pseudo-random number and a second pseudo-random number;

generating the first bit sequence based on the first pseudo-random number and a first constant number; and

generating the second bit sequence based on the second pseudo-random number and a second constant number.

18. A device configured to process a first set of data bits encoding a first numerical value and a second set of data bits encoding a second numerical value, the device comprising:

a first pseudo-random number generator configured to:

receive a clock signal; and

generate a first series of pseudo-random numbers based on the clock signal;

a second pseudo-random number generator configured to:

receive the clock signal;

receive a reset signal;

generate a second series of pseudo-random numbers based on the clock signal; and

restart the second series of pseudo-random numbers based on the reset signal;

a first comparator configured to generate a first bit sequence based on the first series of pseudo-random numbers and a first constant number;

a second comparator configured to generate a second bit sequence based on the second series of pseudo-random numbers and a second constant number; and

a stochastic computational circuit configured to:

perform a computational operation on the first bit sequence and the second bit sequence; and

produce an output bit-stream having a set of data bits indicating a result of the computational operation, wherein the data bits of the output bit-stream represent the result based on a probability that any data bit in the set of data bits of the output bit-stream is high.

19. A device configured to process a first set of data bits encoding a first numerical value and a second set of data bits encoding a second numerical value, the device comprising:

a first pseudo-random number generator configured to:

receive a clock signal; and

generate a first series of pseudo-random numbers based on the clock signal;

a second pseudo-random number generator configured to:

receive the clock signal;

receive an inhibit signal; and

generate a second series of pseudo-random numbers based on the clock signal and the inhibit signal;

a first comparator configured to generate a first bit sequence based on the first series of pseudo-random numbers and a first constant number;

a second comparator configured to generate a second bit sequence based on the second series of pseudo-random numbers and a second constant number; and

a stochastic computational unit configured to:

perform a computational operation on the first bit sequence and the second bit sequence; and

produce an output bit-stream having a set of data bits indicating a result of the computational operation, wherein the data bits of the output bit-stream represent the result based on a probability that any data bit in the set of data bits of the output bit-stream is high.

20. The device of claim 19 , further comprising a logic gate configured to:

receive each number of the first series of pseudo-random numbers; and

generate the inhibit signal based on the first series of pseudo-random numbers.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 7, 2020
From: NAJAFI, MOHAMMADHASSAN
To: REGENTS OF THE UNIVERSITY OF MINNESOTA
Reel/Frame 053429/0196 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2019
From: LILJA, DAVID J.
To: REGENTS OF THE UNIVERSITY OF MINNESOTA
Reel/Frame 049889/0748 →
CONFIRMATORY LICENSE Recorded May 31, 2019
From: UNIVERSITY OF MINNESOTA
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 049337/0442 →
Continuity (2)
Provisional Application 62643369 · Mar 15, 2018
Related Publication 20190289345A1 · Sep 19, 2019
Cited By (1)
US 12,596,921