Patent · US9929747B2 · B2 · US
Technologies for high-performance single-stream LZ77 compression
- (11) Publication number
- US9929747B2
- (21) Application number
- 15/395,702
- (22) Filing date
- 2016-12-30
- (30) Priority date
- 2016-07-22
- (43) Publication date
- 2018-03-27
- (45) Date of grant
- 2018-03-27
- (51) IPC
- H03M 7/30; H03M 7/38; H03M 7/40; H04L 29/06
- (52) CPC
- G06F Electric digital data processing: 3/061, 1/183, 1/20, 11/141, 11/3414, 12/0862, 12/0893, 12/10, 12/109, 12/1408, 13/161, 13/1668, 13/1694, 13/385, 13/4022, 13/4068, 13/409, 13/42, 13/4282, 15/161, 15/8061, 16/1748, 16/9014, 2209/483, 2209/5019, 2209/5022, 2212/1008, 2212/1024, 2212/1041, 2212/1044, 2212/152, 2212/202, 2212/401, 2212/402, 2212/7207, 3/0611, 3/0613, 3/0616, 3/0619, 3/0625, 3/0631, 3/0638, 3/064, 3/0647, 3/065, 3/0653, 3/0655, 3/0658, 3/0659, 3/0664, 3/0665, 3/067, 3/0673, 3/0679, 3/0683, 3/0688, 3/0689, 8/65, 9/30036, 9/3887, 9/4401, 9/4881, 9/5016, 9/5027, 9/5044, 9/505, 9/5072, 9/5077, 9/544
- B25J Manipulators; chambers provided with manipulation devices: 15/0014
- B65G Transport or storage devices, e.g. conveyors for loading or tipping, shop conveyor systems or pneumatic tube conveyors: 1/0492
- G02B Optical elements, systems or apparatus: 6/3882, 6/3893, 6/3897, 6/4292
- G05D Systems for controlling or regulating non-electric variables: 23/1921, 23/2039
- G06Q Information and communication technology [ICT] specially adapted for administrative, commercial, financial, managerial or supervisory purposes; systems or methods specially adapted for administrative, commercial, financial, managerial or supervisory purposes, not otherwise provided for: 10/06, 10/06314, 10/087, 10/20, 50/04
- G07C Time or attendance registers; registering or indicating the working of machines; generating random numbers; voting or lottery apparatus; arrangements, systems or apparatus for checking not provided for elsewhere: 5/008
- G08C Transmission systems for measured values, control or similar signals: 17/02, 2200/00
- G11C Static stores: 11/56, 14/0009, 5/02, 5/06, 7/1072
- H03M Coding; decoding; code conversion in general: 7/30, 7/3084, 7/3086, 7/40, 7/4031, 7/4056, 7/4081, 7/6005, 7/6023
- H04B Transmission: 10/25, 10/25891
- H04J Multiplex communication: 14/00
- H04L Transmission of digital information, e.g. telegraphic communication: 12/2809, 41/024, 41/046, 41/0813, 41/082, 41/12, 41/145, 41/149, 41/40, 41/5019, 43/065, 43/0817, 43/0876, 43/0894, 43/16, 45/02, 45/52, 47/24, 47/38, 47/765, 47/782, 47/805, 47/82, 47/83, 49/00, 49/15, 49/25, 49/35, 49/357, 49/45, 49/555, 61/00, 67/02, 67/10, 67/1004, 67/1008, 67/1012, 67/1014, 67/1029, 67/1034, 67/1097, 67/12, 67/306, 67/34, 67/51, 69/04, 69/18, 69/329, 9/0643, 9/14, 9/3247, 9/3263
- H04Q Selecting: 1/04, 1/09, 11/00, 11/0003, 11/0005, 11/0062, 11/0071, 2011/0037, 2011/0041, 2011/0052, 2011/0073, 2011/0079, 2011/0086, 2213/13523, 2213/13527
- H04W Wireless communication networks: 4/023, 4/80
- H05K Printed circuits; casings or constructional details of electric apparatus; manufacture of assemblages of electrical components: 1/0203, 1/181, 13/0486, 2201/066, 2201/10121, 2201/10159, 2201/10189, 5/0204, 7/1418, 7/1421, 7/1422, 7/1442, 7/1447, 7/1461, 7/1485, 7/1487, 7/1489, 7/1491, 7/1492, 7/1498, 7/2039, 7/20709, 7/20727, 7/20736, 7/20745, 7/20836
- Y02D Climate change mitigation technologies in information and communication technologies [ICT], i.e. information and communication technologies aiming at the reduction of their own energy use: 10/00
- Y02P Climate change mitigation technologies in the production or processing of goods: 90/30
- Y04S Systems integrating technologies related to power network operation, communication or information technologies for improving the electrical power generation, transmission, distribution, management or usage, i.e. smart grids: 10/50, 10/52
- Y10S Technical subjects covered by former uspc cross-reference art collections [xracs] and digests: 901/01, 901/30
- (73) Assignee
- Intel Corp
- (72) Inventors
- Vinodh Gopal; James D. Guilford; Daniel F. Cutter; Kirk S. Yap
- (54) Title
- Technologies for high-performance single-stream LZ77 compression
- (57) Abstract
Technologies for high-performance single-stream data compression include a computing device that updates an index data structure based on an input data stream. The input data stream is divided into multiple chunks. Each chunk has a predetermined length, such as 136 bytes, and overlaps the previous chunk by a predetermine amount, such as eight bytes. The computing device processes multiple chunks in parallel using the index data to generate multiple token streams. The tokens include literal tokens and reference tokens that refer to matching data from earlier in the input data stream. The computing device thus searches for matching data in parallel. The computing device merges the token streams to generate a single output token stream. The computing device may merge a pair of tokens from two different chunks to generate one or more synchronized tokens that are output to the output token stream. Other embodiments are described and claimed.
- Full text
- View on Google Patents
Claims (25)
- A computing device for data compression, the computing device comprising: updater circuitry to update an index data structure based on an input data stream, wherein the index data structure includes index data associated with offsets in the input data stream, and wherein the input data stream is divided into a plurality of chunks, wherein each chunk has a first length; a plurality of search slice circuitry, wherein respective search slice circuitry is to process a disjoint subset of the plurality of chunks of the input data stream to generate a corresponding token stream, wherein respective search slice circuitry uses the index data to process the disjoint subset of the plurality of chunks; and merger circuitry to merge the plurality of token streams to generate an output token stream.
- The computing device of claim 1, wherein each chunk overlaps a previous chunk by a second length.
- The computing device of claim 2, wherein the first length comprises 136 bytes and the second length comprises eight bytes.
- The computing device of claim 1, wherein the plurality of chunks are striped into the plurality of disjoint subsets.
- The computing device of claim 1, wherein to merge the plurality of token streams to generate the output token stream comprises the merger circuitry to: read a previous token and a next token from the plurality of token streams, wherein the previous token and the next token are consecutive with respect to the input data stream; determine whether the previous token and the next token originate from the same token stream; output the previous token to the output token stream in response to a determination that the previous token and the next token originate from the same token stream; copy the next token to the previous token in response to outputting of the previous token; read the next token from the plurality of token streams in response to copying of the next token; and merge the previous token and the next token to generate one or more synchronized tokens in response to a determination that the previous token and the next token do not originate from the same token stream.
- The computing device of claim 5, wherein to merge the previous token and the next token comprises the merger circuitry to: determine whether an end offset of the next token is greater than or equal to an end offset of the previous token; read a next token from the plurality of token streams in response to a determination that the end offset of the next token is not greater than or equal to the end offset of the previous token; and merge the previous token and the next token in response to a determination that the end offset of the next token is greater than or equal to the end offset of the previous token.
- The computing device of claim 6, wherein to merge the previous token and the next token further comprises the merger circuitry to: determine whether the end offset of the next token equals the end offset of the previous token; and drop the next token in response to a determination that the end offset of the next token equals the end offset of the previous token.
- The computing device of claim 6, wherein to merge the previous token and the next token further comprises the merger circuitry to: determine whether a start offset of the next token is less than a start offset of the previous token; drop the previous token in response to a determination that the start offset of the next token is less than the start offset of the previous token; and truncate the next token to start at the start offset of the previous token in response to the determination that the start offset of the next token is less than the start offset of the previous token.
- The computing device of claim 6, wherein to merge the previous token and the next token further comprises the merger circuitry to: determine whether a start offset of the next token equals a start offset of the previous token; and drop the previous token in response to a determination that the start offset of the next token equals the start offset of the previous token.
- The computing device of claim 6, wherein to merge the previous token and the next token further comprises the merger circuitry to: determine whether a start offset of the next token is greater than a start offset of the previous token; determine whether a first difference between the start offset of the next token and the start offset of the previous token is greater than a predetermined threshold offset in response to a determination that the start offset of the next token is greater than the start offset of the previous token; determine whether a second difference between the end offset of the next token and the end offset of the previous token is greater than the predetermined threshold offset in response to the determination that the start offset of the next token is greater than the start offset of the previous token; truncate the next token to a reference token that starts at the end offset of the previous token in response to a determination that the first difference is greater than the predetermined threshold offset and the second difference is greater than the predetermined threshold offset; truncate the next token to one or more literal tokens that start at the end offset of the previous token in response to a determination that the first offset is greater than the predetermined threshold offset and the second difference is not greater than the predetermined threshold offset; and truncate the previous token to one or more literal tokens that end at the start offset of the next token in response to a determination that the first offset is not greater than the predetermined threshold offset and the second difference is greater than the predetermined threshold offset.
- The computing device of claim 10, wherein to merge the previous token and the next token further comprises the merger circuitry to select between truncation of the previous token to one or more literal tokens or truncation of the next token to one or more literal tokens based on a scoring function in response to a determination that the first offset is not greater than the predetermined threshold offset and the second difference is not greater than the predetermined threshold offset.
- A method for data compression, the method comprising: updating, by a computing device, an index data structure based on an input data stream, wherein the index data structure includes index data associated with offsets in the input data stream; processing, by the computing device, a plurality of chunks of the input data stream in parallel to generate a plurality of token streams using the index data, wherein each chunk has a first length and each chunk overlaps a previous chunk by a second length, and wherein each token stream is generated from a corresponding disjoint subset of the plurality of chunks; and merging, by the computing device, the plurality of token streams to generate an output token stream.
- The method of claim 12, wherein each chunk overlaps a previous chunk by a second length.
- The method of claim 12, wherein the plurality of chunks are striped into the plurality of disjoint subsets.
- The method of claim 12, wherein merging the plurality of token streams to generate the output token stream comprises: reading a previous token and a next token from the plurality of token streams, wherein the previous token and the next token are consecutive with respect to the input data stream; determining whether the previous token and the next token originate from the same token stream; outputting the previous token to the output token stream in response to determining that the previous token and the next token originate from the same token stream; copying the next token to the previous token in response to outputting the previous token; reading the next token from the plurality of token streams in response to copying the next token; and merging the previous token and the next token to generate one or more synchronized tokens in response to determining that the previous token and the next token do not originate from the same token stream.
- The method of claim 15, wherein merging the previous token and the next token further comprises: determining whether an end offset of the next token is greater than or equal to an end offset of the previous token; reading a next token from the plurality of token streams in response to determining that the end offset of the next token is not greater than or equal to the end offset of the previous token; and merging the previous token and the next token in response to determining that the end offset of the next token is greater than or equal to the end offset of the previous token.
- The method of claim 16, wherein merging the previous token and the next token further comprises: determining whether the end offset of the next token equals the end offset of the previous token; and dropping the next token in response to determining that the end offset of the next token equals the end offset of the previous token.
- The method of claim 16, wherein merging the previous token and the next token further comprises: determining whether a start offset of the next token is less than a start offset of the previous token; dropping the previous token in response to determining that the start offset of the next token is less than the start offset of the previous token; and truncating the next token to start at the start offset of the previous token in response to determining that the start offset of the next token is less than the start offset of the previous token.
- One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to: update an index data structure based on an input data stream, wherein the index data structure includes index data associated with offsets in the input data stream; process a plurality of chunks of the input data stream in parallel to generate a plurality of token streams using the index data, wherein each chunk has a first length and each chunk overlaps a previous chunk by a second length, and wherein each token stream is generated from a corresponding disjoint subset of the plurality of chunks; and merge the plurality of token streams to generate an output token stream.
- The one or more computer-readable storage media of claim 19, wherein each chunk overlaps a previous chunk by a second length.
- The one or more computer-readable storage media of claim 19, wherein the plurality of chunks are striped into the plurality of disjoint subsets.
- The one or more computer-readable storage media of claim 19, wherein to merge the plurality of token streams to generate the output token stream comprises to: read a previous token and a next token from the plurality of token streams, wherein the previous token and the next token are consecutive with respect to the input data stream; determine whether the previous token and the next token originate from the same token stream; output the previous token to the output token stream in response to determining that the previous token and the next token originate from the same token stream; copy the next token to the previous token in response to outputting the previous token; read the next token from the plurality of token streams in response to copying the next token; and merge the previous token and the next token to generate one or more synchronized tokens in response to determining that the previous token and the next token do not originate from the same token stream.
- The one or more computer-readable storage media of claim 22, wherein to merge the previous token and the next token further comprises to: determine whether an end offset of the next token is greater than or equal to an end offset of the previous token; read a next token from the plurality of token streams in response to determining that the end offset of the next token is not greater than or equal to the end offset of the previous token; and merge the previous token and the next token in response to determining that the end offset of the next token is greater than or equal to the end offset of the previous token.
- The one or more computer-readable storage media of claim 23, wherein to merge the previous token and the next token further comprises to: determine whether the end offset of the next token equals the end offset of the previous token; and drop the next token in response to determining that the end offset of the next token equals the end offset of the previous token.
- The one or more computer-readable storage media of claim 23, wherein to merge the previous token and the next token further comprises to: determine whether a start offset of the next token is less than a start offset of the previous token; drop the previous token in response to determining that the start offset of the next token is less than the start offset of the previous token; and truncate the next token to start at the start offset of the previous token in response to determining that the start offset of the next token is less than the start offset of the previous token.
Description
Data compression is an important computer operation used in many computing applications, including both server and client applications. For example, data compression may be used to reduce network bandwidth requirements and/or storage requirements for cloud computing applications.
Many common lossless compression formats are based on the LZ77 compression algorithm Data compressed using LZ77-based algorithms typically include a stream of symbols (or “tokens”). Each symbol may include literal data that is to be copied to the output or a reference to repeat data that has already been decompressed. The DEFLATE algorithm uses LZ77 compression in combination with Huffman encoding to generate compressed output. Typical compression algorithms such as DEFLATE may support higher compression ratios (e.g., Level 9 or L9 ratios) by performing additional computations.
The concepts described herein are illustrated by way of example and not by way of limitation in the accompanying figures. For simplicity and clarity of illustration, elements illustrated in the figures are not necessarily drawn to scale. Where considered appropriate, reference labels have been repeated among the figures to indicate corresponding or analogous elements.
FIG. 1 is a diagram of a conceptual overview of a data center in which one or more techniques described herein may be implemented according to various embodiments;
FIG. 2 is a diagram of an example embodiment of a logical configuration of a rack of the data center of FIG. 1;
Citations (9)
- US20090060047A1
- US8169352B2
- US20140006536A1
- US20160173126A1
- US8766827B1
- GB2513987A
- US20150161156A1
- US20160112064A1
- US20160173123A1
Record as JSON
{
"publication_number": "US9929747B2",
"country": "US",
"kind": "B2",
"title": "Technologies for high-performance single-stream LZ77 compression",
"abstract": "Technologies for high-performance single-stream data compression include a computing device that updates an index data structure based on an input data stream. The input data stream is divided into multiple chunks. Each chunk has a predetermined length, such as 136 bytes, and overlaps the previous chunk by a predetermine amount, such as eight bytes. The computing device processes multiple chunks in parallel using the index data to generate multiple token streams. The tokens include literal tokens and reference tokens that refer to matching data from earlier in the input data stream. The computing device thus searches for matching data in parallel. The computing device merges the token streams to generate a single output token stream. The computing device may merge a pair of tokens from two different chunks to generate one or more synchronized tokens that are output to the output token stream. Other embodiments are described and claimed.",
"claims": [
"1. A computing device for data compression, the computing device comprising: updater circuitry to update an index data structure based on an input data stream, wherein the index data structure includes index data associated with offsets in the input data stream, and wherein the input data stream is divided into a plurality of chunks, wherein each chunk has a first length; a plurality of search slice circuitry, wherein respective search slice circuitry is to process a disjoint subset of the plurality of chunks of the input data stream to generate a corresponding token stream, wherein respective search slice circuitry uses the index data to process the disjoint subset of the plurality of chunks; and merger circuitry to merge the plurality of token streams to generate an output token stream.",
"2. The computing device of claim 1, wherein each chunk overlaps a previous chunk by a second length.",
"3. The computing device of claim 2, wherein the first length comprises 136 bytes and the second length comprises eight bytes.",
"4. The computing device of claim 1, wherein the plurality of chunks are striped into the plurality of disjoint subsets.",
"5. The computing device of claim 1, wherein to merge the plurality of token streams to generate the output token stream comprises the merger circuitry to: read a previous token and a next token from the plurality of token streams, wherein the previous token and the next token are consecutive with respect to the input data stream; determine whether the previous token and the next token originate from the same token stream; output the previous token to the output token stream in response to a determination that the previous token and the next token originate from the same token stream; copy the next token to the previous token in response to outputting of the previous token; read the next token from the plurality of token streams in response to copying of the next token; and merge the previous token and the next token to generate one or more synchronized tokens in response to a determination that the previous token and the next token do not originate from the same token stream.",
"6. The computing device of claim 5, wherein to merge the previous token and the next token comprises the merger circuitry to: determine whether an end offset of the next token is greater than or equal to an end offset of the previous token; read a next token from the plurality of token streams in response to a determination that the end offset of the next token is not greater than or equal to the end offset of the previous token; and merge the previous token and the next token in response to a determination that the end offset of the next token is greater than or equal to the end offset of the previous token.",
"7. The computing device of claim 6, wherein to merge the previous token and the next token further comprises the merger circuitry to: determine whether the end offset of the next token equals the end offset of the previous token; and drop the next token in response to a determination that the end offset of the next token equals the end offset of the previous token.",
"8. The computing device of claim 6, wherein to merge the previous token and the next token further comprises the merger circuitry to: determine whether a start offset of the next token is less than a start offset of the previous token; drop the previous token in response to a determination that the start offset of the next token is less than the start offset of the previous token; and truncate the next token to start at the start offset of the previous token in response to the determination that the start offset of the next token is less than the start offset of the previous token.",
"9. The computing device of claim 6, wherein to merge the previous token and the next token further comprises the merger circuitry to: determine whether a start offset of the next token equals a start offset of the previous token; and drop the previous token in response to a determination that the start offset of the next token equals the start offset of the previous token.",
"10. The computing device of claim 6, wherein to merge the previous token and the next token further comprises the merger circuitry to: determine whether a start offset of the next token is greater than a start offset of the previous token; determine whether a first difference between the start offset of the next token and the start offset of the previous token is greater than a predetermined threshold offset in response to a determination that the start offset of the next token is greater than the start offset of the previous token; determine whether a second difference between the end offset of the next token and the end offset of the previous token is greater than the predetermined threshold offset in response to the determination that the start offset of the next token is greater than the start offset of the previous token; truncate the next token to a reference token that starts at the end offset of the previous token in response to a determination that the first difference is greater than the predetermined threshold offset and the second difference is greater than the predetermined threshold offset; truncate the next token to one or more literal tokens that start at the end offset of the previous token in response to a determination that the first offset is greater than the predetermined threshold offset and the second difference is not greater than the predetermined threshold offset; and truncate the previous token to one or more literal tokens that end at the start offset of the next token in response to a determination that the first offset is not greater than the predetermined threshold offset and the second difference is greater than the predetermined threshold offset.",
"11. The computing device of claim 10, wherein to merge the previous token and the next token further comprises the merger circuitry to select between truncation of the previous token to one or more literal tokens or truncation of the next token to one or more literal tokens based on a scoring function in response to a determination that the first offset is not greater than the predetermined threshold offset and the second difference is not greater than the predetermined threshold offset.",
"12. A method for data compression, the method comprising: updating, by a computing device, an index data structure based on an input data stream, wherein the index data structure includes index data associated with offsets in the input data stream; processing, by the computing device, a plurality of chunks of the input data stream in parallel to generate a plurality of token streams using the index data, wherein each chunk has a first length and each chunk overlaps a previous chunk by a second length, and wherein each token stream is generated from a corresponding disjoint subset of the plurality of chunks; and merging, by the computing device, the plurality of token streams to generate an output token stream.",
"13. The method of claim 12, wherein each chunk overlaps a previous chunk by a second length.",
"14. The method of claim 12, wherein the plurality of chunks are striped into the plurality of disjoint subsets.",
"15. The method of claim 12, wherein merging the plurality of token streams to generate the output token stream comprises: reading a previous token and a next token from the plurality of token streams, wherein the previous token and the next token are consecutive with respect to the input data stream; determining whether the previous token and the next token originate from the same token stream; outputting the previous token to the output token stream in response to determining that the previous token and the next token originate from the same token stream; copying the next token to the previous token in response to outputting the previous token; reading the next token from the plurality of token streams in response to copying the next token; and merging the previous token and the next token to generate one or more synchronized tokens in response to determining that the previous token and the next token do not originate from the same token stream.",
"16. The method of claim 15, wherein merging the previous token and the next token further comprises: determining whether an end offset of the next token is greater than or equal to an end offset of the previous token; reading a next token from the plurality of token streams in response to determining that the end offset of the next token is not greater than or equal to the end offset of the previous token; and merging the previous token and the next token in response to determining that the end offset of the next token is greater than or equal to the end offset of the previous token.",
"17. The method of claim 16, wherein merging the previous token and the next token further comprises: determining whether the end offset of the next token equals the end offset of the previous token; and dropping the next token in response to determining that the end offset of the next token equals the end offset of the previous token.",
"18. The method of claim 16, wherein merging the previous token and the next token further comprises: determining whether a start offset of the next token is less than a start offset of the previous token; dropping the previous token in response to determining that the start offset of the next token is less than the start offset of the previous token; and truncating the next token to start at the start offset of the previous token in response to determining that the start offset of the next token is less than the start offset of the previous token.",
"19. One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to: update an index data structure based on an input data stream, wherein the index data structure includes index data associated with offsets in the input data stream; process a plurality of chunks of the input data stream in parallel to generate a plurality of token streams using the index data, wherein each chunk has a first length and each chunk overlaps a previous chunk by a second length, and wherein each token stream is generated from a corresponding disjoint subset of the plurality of chunks; and merge the plurality of token streams to generate an output token stream.",
"20. The one or more computer-readable storage media of claim 19, wherein each chunk overlaps a previous chunk by a second length.",
"21. The one or more computer-readable storage media of claim 19, wherein the plurality of chunks are striped into the plurality of disjoint subsets.",
"22. The one or more computer-readable storage media of claim 19, wherein to merge the plurality of token streams to generate the output token stream comprises to: read a previous token and a next token from the plurality of token streams, wherein the previous token and the next token are consecutive with respect to the input data stream; determine whether the previous token and the next token originate from the same token stream; output the previous token to the output token stream in response to determining that the previous token and the next token originate from the same token stream; copy the next token to the previous token in response to outputting the previous token; read the next token from the plurality of token streams in response to copying the next token; and merge the previous token and the next token to generate one or more synchronized tokens in response to determining that the previous token and the next token do not originate from the same token stream.",
"23. The one or more computer-readable storage media of claim 22, wherein to merge the previous token and the next token further comprises to: determine whether an end offset of the next token is greater than or equal to an end offset of the previous token; read a next token from the plurality of token streams in response to determining that the end offset of the next token is not greater than or equal to the end offset of the previous token; and merge the previous token and the next token in response to determining that the end offset of the next token is greater than or equal to the end offset of the previous token.",
"24. The one or more computer-readable storage media of claim 23, wherein to merge the previous token and the next token further comprises to: determine whether the end offset of the next token equals the end offset of the previous token; and drop the next token in response to determining that the end offset of the next token equals the end offset of the previous token.",
"25. The one or more computer-readable storage media of claim 23, wherein to merge the previous token and the next token further comprises to: determine whether a start offset of the next token is less than a start offset of the previous token; drop the previous token in response to determining that the start offset of the next token is less than the start offset of the previous token; and truncate the next token to start at the start offset of the previous token in response to determining that the start offset of the next token is less than the start offset of the previous token."
],
"description_excerpt": "Data compression is an important computer operation used in many computing applications, including both server and client applications. For example, data compression may be used to reduce network bandwidth requirements and/or storage requirements for cloud computing applications.\n\nMany common lossless compression formats are based on the LZ77 compression algorithm Data compressed using LZ77-based algorithms typically include a stream of symbols (or “tokens”). Each symbol may include literal data that is to be copied to the output or a reference to repeat data that has already been decompressed. The DEFLATE algorithm uses LZ77 compression in combination with Huffman encoding to generate compressed output. Typical compression algorithms such as DEFLATE may support higher compression ratios (e.g., Level 9 or L9 ratios) by performing additional computations.\n\nThe concepts described herein are illustrated by way of example and not by way of limitation in the accompanying figures. For simplicity and clarity of illustration, elements illustrated in the figures are not necessarily drawn to scale. Where considered appropriate, reference labels have been repeated among the figures to indicate corresponding or analogous elements.\n\nFIG. 1 is a diagram of a conceptual overview of a data center in which one or more techniques described herein may be implemented according to various embodiments;\n\nFIG. 2 is a diagram of an example embodiment of a logical configuration of a rack of the data center of FIG. 1;",
"cpc": [
"G06F 3/061",
"B25J 15/0014",
"B65G 1/0492",
"G02B 6/3882",
"G02B 6/3893",
"G02B 6/3897",
"G02B 6/4292",
"G05D 23/1921",
"G05D 23/2039",
"G06F 1/183",
"G06F 1/20",
"G06F 11/141",
"G06F 11/3414",
"G06F 12/0862",
"G06F 12/0893",
"G06F 12/10",
"G06F 12/109",
"G06F 12/1408",
"G06F 13/161",
"G06F 13/1668",
"G06F 13/1694",
"G06F 13/385",
"G06F 13/4022",
"G06F 13/4068",
"G06F 13/409",
"G06F 13/42",
"G06F 13/4282",
"G06F 15/161",
"G06F 15/8061",
"G06F 16/1748",
"G06F 16/9014",
"G06F 2209/483",
"G06F 2209/5019",
"G06F 2209/5022",
"G06F 2212/1008",
"G06F 2212/1024",
"G06F 2212/1041",
"G06F 2212/1044",
"G06F 2212/152",
"G06F 2212/202",
"G06F 2212/401",
"G06F 2212/402",
"G06F 2212/7207",
"G06F 3/0611",
"G06F 3/0613",
"G06F 3/0616",
"G06F 3/0619",
"G06F 3/0625",
"G06F 3/0631",
"G06F 3/0638",
"G06F 3/064",
"G06F 3/0647",
"G06F 3/065",
"G06F 3/0653",
"G06F 3/0655",
"G06F 3/0658",
"G06F 3/0659",
"G06F 3/0664",
"G06F 3/0665",
"G06F 3/067",
"G06F 3/0673",
"G06F 3/0679",
"G06F 3/0683",
"G06F 3/0688",
"G06F 3/0689",
"G06F 8/65",
"G06F 9/30036",
"G06F 9/3887",
"G06F 9/4401",
"G06F 9/4881",
"G06F 9/5016",
"G06F 9/5027",
"G06F 9/5044",
"G06F 9/505",
"G06F 9/5072",
"G06F 9/5077",
"G06F 9/544",
"G06Q 10/06",
"G06Q 10/06314",
"G06Q 10/087",
"G06Q 10/20",
"G06Q 50/04",
"G07C 5/008",
"G08C 17/02",
"G08C 2200/00",
"G11C 11/56",
"G11C 14/0009",
"G11C 5/02",
"G11C 5/06",
"G11C 7/1072",
"H03M 7/30",
"H03M 7/3084",
"H03M 7/3086",
"H03M 7/40",
"H03M 7/4031",
"H03M 7/4056",
"H03M 7/4081",
"H03M 7/6005",
"H03M 7/6023",
"H04B 10/25",
"H04B 10/25891",
"H04J 14/00",
"H04L 12/2809",
"H04L 41/024",
"H04L 41/046",
"H04L 41/0813",
"H04L 41/082",
"H04L 41/12",
"H04L 41/145",
"H04L 41/149",
"H04L 41/40",
"H04L 41/5019",
"H04L 43/065",
"H04L 43/0817",
"H04L 43/0876",
"H04L 43/0894",
"H04L 43/16",
"H04L 45/02",
"H04L 45/52",
"H04L 47/24",
"H04L 47/38",
"H04L 47/765",
"H04L 47/782",
"H04L 47/805",
"H04L 47/82",
"H04L 47/83",
"H04L 49/00",
"H04L 49/15",
"H04L 49/25",
"H04L 49/35",
"H04L 49/357",
"H04L 49/45",
"H04L 49/555",
"H04L 61/00",
"H04L 67/02",
"H04L 67/10",
"H04L 67/1004",
"H04L 67/1008",
"H04L 67/1012",
"H04L 67/1014",
"H04L 67/1029",
"H04L 67/1034",
"H04L 67/1097",
"H04L 67/12",
"H04L 67/306",
"H04L 67/34",
"H04L 67/51",
"H04L 69/04",
"H04L 69/18",
"H04L 69/329",
"H04L 9/0643",
"H04L 9/14",
"H04L 9/3247",
"H04L 9/3263",
"H04Q 1/04",
"H04Q 1/09",
"H04Q 11/00",
"H04Q 11/0003",
"H04Q 11/0005",
"H04Q 11/0062",
"H04Q 11/0071",
"H04Q 2011/0037",
"H04Q 2011/0041",
"H04Q 2011/0052",
"H04Q 2011/0073",
"H04Q 2011/0079",
"H04Q 2011/0086",
"H04Q 2213/13523",
"H04Q 2213/13527",
"H04W 4/023",
"H04W 4/80",
"H05K 1/0203",
"H05K 1/181",
"H05K 13/0486",
"H05K 2201/066",
"H05K 2201/10121",
"H05K 2201/10159",
"H05K 2201/10189",
"H05K 5/0204",
"H05K 7/1418",
"H05K 7/1421",
"H05K 7/1422",
"H05K 7/1442",
"H05K 7/1447",
"H05K 7/1461",
"H05K 7/1485",
"H05K 7/1487",
"H05K 7/1489",
"H05K 7/1491",
"H05K 7/1492",
"H05K 7/1498",
"H05K 7/2039",
"H05K 7/20709",
"H05K 7/20727",
"H05K 7/20736",
"H05K 7/20745",
"H05K 7/20836",
"Y02D 10/00",
"Y02P 90/30",
"Y04S 10/50",
"Y04S 10/52",
"Y10S 901/01",
"Y10S 901/30"
],
"ipc": [
"H03M 7/30",
"H03M 7/38",
"H03M 7/40",
"H04L 29/06"
],
"assignees": [
"Intel Corp"
],
"inventors": [
"Vinodh Gopal",
"James D. Guilford",
"Daniel F. Cutter",
"Kirk S. Yap"
],
"filing_date": "2016-12-30",
"publication_date": "2018-03-27",
"grant_date": "2018-03-27",
"priority_date": "2016-07-22",
"application_number": "US-201615395702-A",
"family_id": "60804962",
"cited_by_count": 15,
"citations": [
"US20090060047A1",
"US8169352B2",
"US20140006536A1",
"US20160173126A1",
"US8766827B1",
"GB2513987A",
"US20150161156A1",
"US20160112064A1",
"US20160173123A1"
]
}
Record 3,502 of 8,000 in Patents full text (MLC-0201). Request the full dataset.