IP Library Granted Patent US 10,277,248
Granted Patent B2
US 10,277,248 · App. 14/793,077 · Granted Apr 30, 2019

Compression engine with consistent throughput

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,277,248
App. No.
14/793,077
Granted
Apr 30, 2019
Kind
B2
Abstract

Systems and method provide for consistent throughput of one or more compression engines. Data received from an input stream is stored in a buffer. Data is read from the buffer and distributed to the compression engines. Latency of the compression engines is monitored. If latency exceeds a threshold, data is read from the buffer and written to an output stream simultaneously with reading of data and inputting it to the compression engines. Data from the input stream may be evaluated for likely compressibility and non-compressible data may be written to the output stream bypassing both the buffer and the compression engines.

Claims (62)

1. A method for compressing data, the method comprising:

receiving, by an electronic device, an input data stream;

determining, by the electronic device, compressibility of data from the input data stream;

writing, by the electronic device, data from the input data stream determined to be uncompressible data to the output data stream bypassing a buffer and one or more compression engines, wherein a bypass controller selects the uncompressible data to be an input of a multiplexer to couple the uncompressible data with compressed data to be written to the output data stream;

storing, by the electronic device, data from the input data stream determined to be compressible in the buffer;

distributing, by the electronic device, first data in the buffer to the one or more compression engines;

compressing, by the one or more compression engines, the first data to generate compressed first data and writing the compressed first data to an output data stream;

monitoring, by the electronic device, latency of the one or more compression engines;

periodically evaluating, by the electronic device, latency of the one or more compression engines within a time window with respect to a threshold by summing, in parallel with the compressing of the first data, latency data for the one or more compression engines in the time window to determine a summed latency;

determining, by the electronic device, at a first point in time that the summed latency within the time window exceeds the threshold;

in response to determining that at the first point in time that the summed latency within the time window exceeds the threshold, distributing, by the electronic device, second data in the buffer to both of the one or more compression engines and the output stream such that a first portion of the second data is distributed to the one or more compression engines and a second portion of the second data is written to the output stream and bypasses the one or more compression engines, wherein the percentage of data words selected for bypassing is proportional to an amount by which the summed latency exceeds the threshold; and

compressing, by the one or more compression engines, the first portion of the second data to generate second compressed data and writing the compressed second data to the output data stream.

2. The method of claim 1 , further comprising:

determining, by the electronic device, at a second point in time subsequent to the first point in time that the summed latency of the one or more compression engines is below the threshold;

in response to determining that at the second point in time that the summed latency within the time window does not exceed the threshold, distributing, by the electronic device, third data in the buffer exclusively to the one or more compression engines; and

compressing, by the one or more compression engines, the third data to generate third compressed data and writing the third compressed data to the output data stream.

3. The method of claim 1 , wherein storing, by the electronic device, the data from the input data stream in the buffer comprises:

determining that a first portion of the data stream meets a threshold compressibility; and

in response to determining that the first portion of the input data stream meets a threshold storing a first portion of the input data stream in the buffer.

4. The method of claim 3 , further comprising:

determining that a second portion of the input data stream does not meet the threshold compressibility;

in response to determining that the second portion of the input data stream does not meet the threshold compressibility, writing the second portion of the input data stream to the output data stream without storing the second portion of the input data stream in the buffer and without inputting the second portion of the input data stream to the one or more compression engines.

5. The method of claim 1 , wherein determining, by the electronic device, at the first point in time that the summed latency within the time window exceeds the threshold comprises determining that an aggregate of processing cycles per data block compressed by the one or more compression engines exceeds the threshold.

6. The method of claim 1 , wherein the one or more compression engines are a plurality of compression engines.

7. The method of claim 1 , wherein the output stream is an input of a storage device.

8. The method of claim 1 , wherein the output stream is an input of a solid state drive device.

9. The method of claim 1 , wherein the output stream is a network transmission channel.

10. The method of claim 1 , further comprising:

receiving the output stream;

detecting that the first and second compressed data are compressed;

in response to determining that the compressed first and second data are compressed, decompressing the first and second data;

determining that the second portion of the second data is not compressed; and

in response to determining that the second portion of the second data is not compressed, refraining from decompressing the second portion of the second data.

11. The method of claim 1 , wherein the control module is further programmed to decompress received data by:

detecting compressed data in the received data;

decompressing the compressed data;

detecting non-compressed data in the received data; and

refrain from decompressing the non-compressed data.

12. A system for compressing data, the system comprising:

a buffer;

one or more compression engines;

a control module programmed to

receive an input data stream;

determine compressibility of data from the input data stream;

write data from the input data stream determined to be uncompressible data to the output data stream bypassing the buffer and the one or more compression engines, wherein a bypass controller selects the uncompressible data to be an input of a multiplexer to couple the uncompressible data with compressed data to be written to the output data stream;

store data from the input data stream determined to be compressible in the buffer;

distribute first data in the buffer to the one or more compression engines such that the one or more compression engines compress the first data to generate compressed first data and write the compressed first data to an output data stream;

monitor latency of the one or more compression engines;

periodically evaluate latency of the one or more compression engines within a time window with respect to a threshold by summing, in parallel with the compressing of the first data, latency data for the one or more compression engines in the time window to determine a summed latency; and

when the summed latency of the one or more compression engines within the time window exceeds the threshold, distribute a first portion of second data in the buffer to both of the one or more compression engines and a second portion of the second data directly to the output data stream bypassing the one or more compression engines, wherein the percentage of data words selected for bypassing is proportional to an amount by which the summed latency exceeds the threshold.

13. The system of claim 12 , wherein the control module is further programmed to:

when the summed latency of the one or more compression engines within the time window ceases to exceed the threshold, distribute the data in the buffer exclusively to the one or more compression engines.

14. The system of claim 12 , wherein the control module is further programmed to:

evaluate compressibility of the input data stream with respect to a compressibility threshold;

write a compressible portion of the input data stream that meets the compressibility threshold to the buffer;

write a non-compressible portion of the input data stream that does not meet the compressibility threshold to output stream and bypassing the buffer and one or more compression engines.

15. The system of claim 14 , wherein the control module is further configured to evaluate summed latency of the one or more compression engines within a time window with respect to the threshold by evaluating an aggregate of processing cycles per data block compressed by the one or more compression engines exceeds the threshold.

16. The system of claim 12 , wherein the one or more compression engines are a plurality of compression engines.

17. The system of claim 16 , wherein the plurality of compression engines are hardware modules.

18. The system of claim 12 , wherein the output stream is an input of a storage device.

19. The system of claim 12 , wherein the output stream is an input of a solid state drive device.

20. The system of claim 12 , wherein the output stream is a network transmission channel.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050937/0001 →
RELEASE OF SECURITY INTEREST Recorded Aug 23, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047243/0001 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jun 8, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 043079/0001 →
PATENT SECURITY AGREEMENT Recorded Jun 2, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 038954/0001 →
SECURITY INTEREST Recorded May 12, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038669/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2015
From: LEE, MENG KUN
To: TIDAL SYSTEMS, INC.
Reel/Frame 036166/0517 →
Cited By (1)
US 12,688,619