MLchartDataset catalogue

Patent · US10033404B2 · B2 · US

Technologies for efficiently compressing data with run detection

(11) Publication number
US10033404B2
(21) Application number
15/639,289
(22) Filing date
2017-06-30
(30) Priority date
2016-07-22
(43) Publication date
2018-07-24
(45) Date of grant
2018-07-24
(51) IPC
H03M 7/30; H03M 7/38
(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
Daniel F. Cutter; Vinodh Gopal; James D. Guilford
(54) Title
Technologies for efficiently compressing data with run detection
(57) Abstract

Technologies for efficiently compressing data with run detection include a compute device. The compute device is to produce a hash as a function of a symbol at a present position and a predefined number of symbols after the present position in an input stream, determine whether the symbol at the present position is part of a run, obtain, from a hash table, a chain of pointers to previous positions in the input stream associated with the hash, determine, as a function of whether the symbol is part of a run and to identify a matched string, a number of strings referenced by the chain of pointers to compare to a string associated with the present position in the input stream, and output, in response to an identification of a matched string, a reference to the matched string in a set of compressed output data.

Full text
View on Google Patents

Claims (25)

  1. A compute device comprising: one or more processors; and a memory having stored therein a plurality of instructions that, when executed by the one or more processors, cause the compute device to: produce a hash as a function of a symbol at a present position in an input stream and a predefined number of symbols after the present position in the input stream, wherein the symbol is indicative of a start of a string of symbols in the input stream; determine whether the symbol at the present position is part of a run, wherein a run defines a string of one or more repeated symbols in the input stream; obtain, from a hash table, a chain of pointers to previous positions in the input stream associated with the hash; determine, as a function of whether the symbol is part of a run and to identify a matched string, a number of strings referenced by the chain of pointers to compare to the string associated with the present position in the input stream; and output, in response to an identification of a matched string, a reference to the matched string in a set of compressed output data.
  2. The compute device of claim 1, wherein to determine whether the symbol at the present position is part of a run comprises to: compare the symbol at the present position to a predefined number of other contiguous symbols in the input stream; and determine whether the symbol at the present position is part of a string of one or more contiguous repeated symbols.
  3. The compute device of claim 1, wherein the plurality of instructions, when executed, further cause the compute device to set, in response to a determination that the symbol at the present position is part of a run, a run status bit associated with the present position in the input stream to a value indicative that the symbol is part of a run.
  4. The compute device of claim 1, wherein the plurality of instructions, when executed, further cause the compute device to set, in response to a determination that the symbol at the present position is not part of a run, a run status bit associated with the present position in the input stream to a value indicative that that the symbol is not part of a run.
  5. The compute device of claim 1, wherein to determine whether the symbol at the present position is part of a run comprises to: compare the symbol at the present position to a predefined number of other contiguous symbols in the input stream; and determine whether the symbol at the present position is part of a repeated sequence of two or more different symbols.
  6. The compute device of claim 1, wherein to determine, as a function of whether the symbol is part of a run, a number of strings referenced by the chain of pointers to compare to the string associated with the present position comprises to determine, in response to a determination that the symbol is part of a run, to compare one string referenced by the chain of pointers to the string associated with the present position.
  7. The compute device of claim 1, wherein to determine, as a function of whether the symbol is part of a run, a number of strings referenced by the chain of pointers to compare to the string associated with the present position comprises to determine, in response to a determination that the symbol is not part of a run, to compare more than one string referenced by the chain of pointers to the string associated with the present position.
  8. The compute device of claim 1, wherein the plurality of instructions, when executed, further cause the compute device to add, in response to a determination that the symbol at the present position is part of a run, the symbols in the run, a start position of the run, and a length of the run to a run table.
  9. The compute device of claim 8, wherein the plurality of instructions, when executed, further cause the compute device to evict an entry from the run table as a function of the start position and length of the run associated with the symbol at the present position and the start position and length of another run indicated in the run table.
  10. The compute device of claim 1, wherein to output a reference to a matched string comprises to determine whether to output, as a function of the lengths and positions of one or more stored runs and the run at the present position, whether to output a reference to one of the previously stored runs or a reference to a local run.
  11. The compute device of claim 1, wherein to determine the number of strings referenced by the chain of pointers to compare comprises to determine the number of strings to compare further as a function of a percentage of runs detected in the input stream.
  12. The compute device of claim 11, wherein to determine the number of strings to compare comprises to adjust the number of strings in inverse proportion to a change in the percentage of runs detected in the input stream.
  13. One or more non-transitory machine-readable storage media comprising a plurality of instructions stored thereon that, when executed by a compute device cause the compute device to: produce a hash as a function of a symbol at a present position in an input stream and a predefined number of symbols after the present position in the input stream, wherein the symbol is indicative of a start of a string of symbols in the input stream; determine whether the symbol at the present position is part of a run, wherein a run defines a string of one or more repeated symbols in the input stream; obtain, from a hash table, a chain of pointers to previous positions in the input stream associated with the hash; determine, as a function of whether the symbol is part of a run and to identify a matched string, a number of strings referenced by the chain of pointers to compare to the string associated with the present position in the input stream; and output, in response to an identification of a matched string, a reference to the matched string in a set of compressed output data.
  14. The one or more non-transitory machine-readable storage media of claim 13, wherein to determine whether the symbol at the present position is part of a run comprises to: compare the symbol at the present position to a predefined number of other contiguous symbols in the input stream; and determine whether the symbol at the present position is part of a string of one or more contiguous repeated symbols.
  15. The one or more non-transitory machine-readable storage media of claim 13, wherein the plurality of instructions, when executed, further cause the compute device to set, in response to a determination that the symbol at the present position is part of a run, a run status bit associated with the present position in the input stream to a value indicative that the symbol is part of a run.
  16. The one or more non-transitory machine-readable storage media of claim 13, wherein the plurality of instructions, when executed, further cause the compute device to set, in response to a determination that the symbol at the present position is not part of a run, a run status bit associated with the present position in the input stream to a value indicative that that the symbol is not part of a run.
  17. The one or more non-transitory machine-readable storage media of claim 13, wherein to determine whether the symbol at the present position is part of a run comprises to: compare the symbol at the present position to a predefined number of other contiguous symbols in the input stream; and determine whether the symbol at the present position is part of a repeated sequence of two or more different symbols.
  18. The one or more non-transitory machine-readable storage media of claim 13, wherein to determine, as a function of whether the symbol is part of a run, a number of strings referenced by the chain of pointers to compare to the string associated with the present position comprises to determine, in response to a determination that the symbol is part of a run, to compare one string referenced by the chain of pointers to the string associated with the present position.
  19. The one or more non-transitory machine-readable storage media of claim 13, wherein to determine, as a function of whether the symbol is part of a run, a number of strings referenced by the chain of pointers to compare to the string associated with the present position comprises to determine, in response to a determination that the symbol is not part of a run, to compare more than one string referenced by the chain of pointers to the string associated with the present position.
  20. The one or more non-transitory machine-readable storage media of claim 13, wherein the plurality of instructions, when executed, further cause the compute device to add, in response to a determination that the symbol at the present position is part of a run, the symbols in the run, a start position of the run, and a length of the run to a run table.
  21. The one or more non-transitory machine-readable storage media of claim 20, wherein the plurality of instructions, when executed, further cause the compute device to evict an entry from the run table as a function of the start position and length of the run associated with the symbol at the present position and the start position and length of another run indicated in the run table.
  22. The one or more non-transitory machine-readable storage media of claim 13, wherein to output a reference to a matched string comprises to determine whether to output, as a function of the lengths and positions of one or more stored runs and the run at the present position, whether to output a reference to one of the previously stored runs or a reference to a local run.
  23. The one or more non-transitory machine-readable storage media of claim 13, wherein to determine the number of strings referenced by the chain of pointers to compare comprises to determine the number of strings to compare further as a function of a percentage of runs detected in the input stream.
  24. A method for compressing data with run detection, the method comprising: producing, by a compute device, a hash as a function of a symbol at a present position in an input stream and a predefined number of symbols after the present position in the input stream, wherein the symbol is indicative of a start of a string of symbols in the input stream; determining, by the compute device, whether the symbol at the present position is part of a run, wherein a run defines a string of one or more repeated symbols in the input stream; obtaining, by the compute device and from a hash table, a chain of pointers to previous positions in the input stream associated with the hash; determining, by the compute device and as a function of whether the symbol is part of a run and to identify a matched string, a number of strings referenced by the chain of pointers to compare to the string associated with the present position in the input stream; and outputting, by the compute device and in response to an identification of a matched string, a reference to the matched string in a set of compressed output data.
  25. The method of claim 24, wherein determining whether the symbol at the present position is part of a run comprises: comparing the symbol at the present position to a predefined number of other contiguous symbols in the input stream; and determining whether the symbol at the present position is part of a string of one or more contiguous repeated symbols.

Description

Compression schemes, such as Lempel-Ziv based compression schemes (for example, LZ77 and LZ78) are often used in a data centers to compress data, thereby enabling compute devices in the data center to store more customer data in a given amount of data storage capacity and/or transmit more customer data in a given amount of network bandwidth. When compressing data pursuant to a Lempel-Ziv based scheme, the compute device searches for the longest string from a history buffer (e.g., a sliding window of previous data from an input stream) that matches a string starting at the present position in the input stream (e.g., a number of bytes into the input stream). To do so, the compute device typically produces a hash by performing a hashing function on a symbol (e.g., a byte or other unit of data) at the present position and one or more subsequent symbols in the input stream, and uses the resulting hash as an index into a hash table that includes, for each hash, a set of pointers that point to other strings in the history buffer that produced the same hash.

The compute device, in typical compression systems, then compares one or more of the strings associated with the pointers found in the hash table to the string at the present position to find one or more matches, and selects the longest matching string. To increase the level of compression, the compute device may compare a larger number of the possible matching strings to the present string, to increase the possibility of finding a longer matching string.

Citations (4)

  • US5051745A
  • US6738779B1
  • US7982636B2
  • US8791843B2
Record as JSON
{
  "publication_number": "US10033404B2",
  "country": "US",
  "kind": "B2",
  "title": "Technologies for efficiently compressing data with run detection",
  "abstract": "Technologies for efficiently compressing data with run detection include a compute device. The compute device is to produce a hash as a function of a symbol at a present position and a predefined number of symbols after the present position in an input stream, determine whether the symbol at the present position is part of a run, obtain, from a hash table, a chain of pointers to previous positions in the input stream associated with the hash, determine, as a function of whether the symbol is part of a run and to identify a matched string, a number of strings referenced by the chain of pointers to compare to a string associated with the present position in the input stream, and output, in response to an identification of a matched string, a reference to the matched string in a set of compressed output data.",
  "claims": [
    "1. A compute device comprising: one or more processors; and a memory having stored therein a plurality of instructions that, when executed by the one or more processors, cause the compute device to: produce a hash as a function of a symbol at a present position in an input stream and a predefined number of symbols after the present position in the input stream, wherein the symbol is indicative of a start of a string of symbols in the input stream; determine whether the symbol at the present position is part of a run, wherein a run defines a string of one or more repeated symbols in the input stream; obtain, from a hash table, a chain of pointers to previous positions in the input stream associated with the hash; determine, as a function of whether the symbol is part of a run and to identify a matched string, a number of strings referenced by the chain of pointers to compare to the string associated with the present position in the input stream; and output, in response to an identification of a matched string, a reference to the matched string in a set of compressed output data.",
    "2. The compute device of claim 1, wherein to determine whether the symbol at the present position is part of a run comprises to: compare the symbol at the present position to a predefined number of other contiguous symbols in the input stream; and determine whether the symbol at the present position is part of a string of one or more contiguous repeated symbols.",
    "3. The compute device of claim 1, wherein the plurality of instructions, when executed, further cause the compute device to set, in response to a determination that the symbol at the present position is part of a run, a run status bit associated with the present position in the input stream to a value indicative that the symbol is part of a run.",
    "4. The compute device of claim 1, wherein the plurality of instructions, when executed, further cause the compute device to set, in response to a determination that the symbol at the present position is not part of a run, a run status bit associated with the present position in the input stream to a value indicative that that the symbol is not part of a run.",
    "5. The compute device of claim 1, wherein to determine whether the symbol at the present position is part of a run comprises to: compare the symbol at the present position to a predefined number of other contiguous symbols in the input stream; and determine whether the symbol at the present position is part of a repeated sequence of two or more different symbols.",
    "6. The compute device of claim 1, wherein to determine, as a function of whether the symbol is part of a run, a number of strings referenced by the chain of pointers to compare to the string associated with the present position comprises to determine, in response to a determination that the symbol is part of a run, to compare one string referenced by the chain of pointers to the string associated with the present position.",
    "7. The compute device of claim 1, wherein to determine, as a function of whether the symbol is part of a run, a number of strings referenced by the chain of pointers to compare to the string associated with the present position comprises to determine, in response to a determination that the symbol is not part of a run, to compare more than one string referenced by the chain of pointers to the string associated with the present position.",
    "8. The compute device of claim 1, wherein the plurality of instructions, when executed, further cause the compute device to add, in response to a determination that the symbol at the present position is part of a run, the symbols in the run, a start position of the run, and a length of the run to a run table.",
    "9. The compute device of claim 8, wherein the plurality of instructions, when executed, further cause the compute device to evict an entry from the run table as a function of the start position and length of the run associated with the symbol at the present position and the start position and length of another run indicated in the run table.",
    "10. The compute device of claim 1, wherein to output a reference to a matched string comprises to determine whether to output, as a function of the lengths and positions of one or more stored runs and the run at the present position, whether to output a reference to one of the previously stored runs or a reference to a local run.",
    "11. The compute device of claim 1, wherein to determine the number of strings referenced by the chain of pointers to compare comprises to determine the number of strings to compare further as a function of a percentage of runs detected in the input stream.",
    "12. The compute device of claim 11, wherein to determine the number of strings to compare comprises to adjust the number of strings in inverse proportion to a change in the percentage of runs detected in the input stream.",
    "13. One or more non-transitory machine-readable storage media comprising a plurality of instructions stored thereon that, when executed by a compute device cause the compute device to: produce a hash as a function of a symbol at a present position in an input stream and a predefined number of symbols after the present position in the input stream, wherein the symbol is indicative of a start of a string of symbols in the input stream; determine whether the symbol at the present position is part of a run, wherein a run defines a string of one or more repeated symbols in the input stream; obtain, from a hash table, a chain of pointers to previous positions in the input stream associated with the hash; determine, as a function of whether the symbol is part of a run and to identify a matched string, a number of strings referenced by the chain of pointers to compare to the string associated with the present position in the input stream; and output, in response to an identification of a matched string, a reference to the matched string in a set of compressed output data.",
    "14. The one or more non-transitory machine-readable storage media of claim 13, wherein to determine whether the symbol at the present position is part of a run comprises to: compare the symbol at the present position to a predefined number of other contiguous symbols in the input stream; and determine whether the symbol at the present position is part of a string of one or more contiguous repeated symbols.",
    "15. The one or more non-transitory machine-readable storage media of claim 13, wherein the plurality of instructions, when executed, further cause the compute device to set, in response to a determination that the symbol at the present position is part of a run, a run status bit associated with the present position in the input stream to a value indicative that the symbol is part of a run.",
    "16. The one or more non-transitory machine-readable storage media of claim 13, wherein the plurality of instructions, when executed, further cause the compute device to set, in response to a determination that the symbol at the present position is not part of a run, a run status bit associated with the present position in the input stream to a value indicative that that the symbol is not part of a run.",
    "17. The one or more non-transitory machine-readable storage media of claim 13, wherein to determine whether the symbol at the present position is part of a run comprises to: compare the symbol at the present position to a predefined number of other contiguous symbols in the input stream; and determine whether the symbol at the present position is part of a repeated sequence of two or more different symbols.",
    "18. The one or more non-transitory machine-readable storage media of claim 13, wherein to determine, as a function of whether the symbol is part of a run, a number of strings referenced by the chain of pointers to compare to the string associated with the present position comprises to determine, in response to a determination that the symbol is part of a run, to compare one string referenced by the chain of pointers to the string associated with the present position.",
    "19. The one or more non-transitory machine-readable storage media of claim 13, wherein to determine, as a function of whether the symbol is part of a run, a number of strings referenced by the chain of pointers to compare to the string associated with the present position comprises to determine, in response to a determination that the symbol is not part of a run, to compare more than one string referenced by the chain of pointers to the string associated with the present position.",
    "20. The one or more non-transitory machine-readable storage media of claim 13, wherein the plurality of instructions, when executed, further cause the compute device to add, in response to a determination that the symbol at the present position is part of a run, the symbols in the run, a start position of the run, and a length of the run to a run table.",
    "21. The one or more non-transitory machine-readable storage media of claim 20, wherein the plurality of instructions, when executed, further cause the compute device to evict an entry from the run table as a function of the start position and length of the run associated with the symbol at the present position and the start position and length of another run indicated in the run table.",
    "22. The one or more non-transitory machine-readable storage media of claim 13, wherein to output a reference to a matched string comprises to determine whether to output, as a function of the lengths and positions of one or more stored runs and the run at the present position, whether to output a reference to one of the previously stored runs or a reference to a local run.",
    "23. The one or more non-transitory machine-readable storage media of claim 13, wherein to determine the number of strings referenced by the chain of pointers to compare comprises to determine the number of strings to compare further as a function of a percentage of runs detected in the input stream.",
    "24. A method for compressing data with run detection, the method comprising: producing, by a compute device, a hash as a function of a symbol at a present position in an input stream and a predefined number of symbols after the present position in the input stream, wherein the symbol is indicative of a start of a string of symbols in the input stream; determining, by the compute device, whether the symbol at the present position is part of a run, wherein a run defines a string of one or more repeated symbols in the input stream; obtaining, by the compute device and from a hash table, a chain of pointers to previous positions in the input stream associated with the hash; determining, by the compute device and as a function of whether the symbol is part of a run and to identify a matched string, a number of strings referenced by the chain of pointers to compare to the string associated with the present position in the input stream; and outputting, by the compute device and in response to an identification of a matched string, a reference to the matched string in a set of compressed output data.",
    "25. The method of claim 24, wherein determining whether the symbol at the present position is part of a run comprises: comparing the symbol at the present position to a predefined number of other contiguous symbols in the input stream; and determining whether the symbol at the present position is part of a string of one or more contiguous repeated symbols."
  ],
  "description_excerpt": "Compression schemes, such as Lempel-Ziv based compression schemes (for example, LZ77 and LZ78) are often used in a data centers to compress data, thereby enabling compute devices in the data center to store more customer data in a given amount of data storage capacity and/or transmit more customer data in a given amount of network bandwidth. When compressing data pursuant to a Lempel-Ziv based scheme, the compute device searches for the longest string from a history buffer (e.g., a sliding window of previous data from an input stream) that matches a string starting at the present position in the input stream (e.g., a number of bytes into the input stream). To do so, the compute device typically produces a hash by performing a hashing function on a symbol (e.g., a byte or other unit of data) at the present position and one or more subsequent symbols in the input stream, and uses the resulting hash as an index into a hash table that includes, for each hash, a set of pointers that point to other strings in the history buffer that produced the same hash.\n\nThe compute device, in typical compression systems, then compares one or more of the strings associated with the pointers found in the hash table to the string at the present position to find one or more matches, and selects the longest matching string. To increase the level of compression, the compute device may compare a larger number of the possible matching strings to the present string, to increase the possibility of finding a longer matching string.",
  "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"
  ],
  "assignees": [
    "Intel Corp"
  ],
  "inventors": [
    "Daniel F. Cutter",
    "Vinodh Gopal",
    "James D. Guilford"
  ],
  "filing_date": "2017-06-30",
  "publication_date": "2018-07-24",
  "grant_date": "2018-07-24",
  "priority_date": "2016-07-22",
  "application_number": "US-201715639289-A",
  "family_id": "60804962",
  "cited_by_count": 16,
  "citations": [
    "US5051745A",
    "US6738779B1",
    "US7982636B2",
    "US8791843B2"
  ]
}

Record 3,378 of 8,000 in Patents full text (MLC-0201). Request the full dataset.