Patent · US9973207B2 · B2 · US
Technologies for heuristic huffman code generation
- (11) Publication number
- US9973207B2
- (21) Application number
- 15/639,602
- (22) Filing date
- 2017-06-30
- (30) Priority date
- 2016-07-22
- (43) Publication date
- 2018-05-15
- (45) Date of grant
- 2018-05-15
- (51) IPC
- H03M 7/30; H03M 7/40
- (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
- (54) Title
- Technologies for heuristic huffman code generation
- (57) Abstract
Technologies for heuristic Huffman code generation include a computing device that generates a weighted list of symbols for a data block. The computing device determines a threshold weight and identifies one or more lightweight symbols in the list that have a weight less than or equal to the threshold weight. The threshold weight may be the average weight of all symbols with non-zero weight in the list. The computing device generates a balanced sub-tree of nodes for the lightweight symbols, with each lightweight symbol associated with a leaf node. The computing device adds the remaining symbols and the root of the balanced sub-tree to a heap and generates a Huffman code tree by processing the heap. The threshold weight may be adjusted to tune performance and compression ratio. Other embodiments are described and claimed.
- Full text
- View on Google Patents
Claims (24)
- A computing device comprising: a heuristic processor to (i) determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight, (ii) identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight, and (iii) generate a balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the balanced sub-tree; and a tree processor to generate a Huffman code tree for any remaining symbols of the list of symbols other than the lightweight symbols and a root node of the balanced sub-tree.
- The computing device of claim 1, wherein the predetermined relationship comprises less than or equal to.
- The computing device of claim 1, further comprising a Huffman encoder to: compute a Huffman code length for each symbol of the list of symbols based on a depth of a corresponding node in the Huffman code tree; and encode a data block with the Huffman code lengths, wherein the data block comprises a block of symbols.
- The computing device of claim 1, further comprising a hardware compression engine to generate the list of symbols, wherein to identify the one or more lightweight symbols comprises to identify the one or more lightweight symbols in response to generation of the list of symbols.
- The computing device of claim 1, wherein to determine the threshold weight for the list of symbols comprises to determine an average weight for each symbol of the list of symbols.
- The computing device of claim 5, wherein to determine the threshold weight for the list of symbols further comprises to scale the average weight by a predetermined scale factor.
- The computing device of claim 1, wherein to identify the one or more lightweight symbols of the list of symbols comprises to identify all symbols of the list of symbols as the lightweight symbols.
- The computing device of claim 1, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to: add the remaining symbols and the root node to a heap data structure; and while the heap data structure includes more than one node, to: pop a first node and a second node from the heap data structure, wherein the first node and the second node each have a weight, and wherein the weights of the first node and the second node are the smallest weights in the heap data structure; create a third node, wherein the third node is a parent node of the first node and the second node, and wherein a weight of the third node is a sum of the weight of first node and the weight of the second node; and insert the third node in the heap data structure.
- The computing device of claim 8, wherein to generate the Huffman code tree further comprises to add the first node and the second node to a sorted list of nodes in response to a pop of the first node and the second node.
- The computing device of claim 1, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to: add the remaining symbols and the root node of the balanced sub-tree to a heap data structure; and while the heap data structure includes more than one node, to: pop a first node from the heap data structure, wherein the first node has a weight, and wherein the weight of the first node is the smallest weight in the heap data structure; create a second node, wherein the second node is a parent node of the first node and a third node, wherein the third node is at a top of the heap data structure, and wherein a weight of the second node is a sum of the weight of first node and the weight of the third node; and replace the third node in the heap data structure with the second node.
- One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to: determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight; identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight; generate a balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the balanced sub-tree; and generate a Huffman code tree for any remaining symbols of the list of symbols other than the lightweight symbols and a root node of the balanced sub-tree.
- The one or more computer-readable storage media of claim 11, wherein the predetermined relationship comprises less than or equal to.
- The one or more computer-readable storage media of claim 11, wherein to determine the threshold weight for the list of symbols comprises to determine an average weight for each symbol of the list of symbols.
- The one or more computer-readable storage media of claim 13, wherein to determine the threshold weight for the list of symbols further comprises to scale the average weight by a predetermined scale factor.
- The one or more computer-readable storage media of claim 11, wherein to identify the one or more lightweight symbols of the list of symbols comprises to identify all symbols of the list of symbols as the lightweight symbols.
- The one or more computer-readable storage media of claim 11, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to: add the remaining symbols and the root node to a heap data structure; and while the heap data structure includes more than one node: pop a first node and a second node from the heap data structure, wherein the first node and the second node each have a weight, and wherein the weights of the first node and the second node are the smallest weights in the heap data structure; create a third node, wherein the third node is a parent node of the first node and the second node, and wherein a weight of the third node is a sum of the weight of first node and the weight of the second node; and insert the third node in the heap data structure.
- The one or more computer-readable storage media of claim 16, wherein to generate the Huffman code tree further comprises to add the first node and the second node to a sorted list of nodes in response to popping the first node and the second node.
- The one or more computer-readable storage media of claim 11, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to: add the remaining symbols and the root node of the balanced sub-tree to a heap data structure; and while the heap data structure includes more than one node: pop a first node from the heap data structure, wherein the first node has a weight, and wherein the weight of the first node is the smallest weight in the heap data structure; create a second node, wherein the second node is a parent node of the first node and a third node, wherein the third node is at a top of the heap data structure, and wherein a weight of the second node is a sum of the weight of first node and the weight of the third node; and replace the third node in the heap data structure with the second node.
- A computing device comprising a heuristic processor to: determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight; identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight; generate a first balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the first balanced sub-tree; generate a second balanced sub-tree of nodes for one or more remaining symbols of the list of symbols other than the lightweight symbols, wherein each of the remaining symbols is associated with a leaf node of the second balanced sub-tree; and join the first balanced sub-tree and the second balanced sub-tree with a root node to generate a Huffman code tree.
- The computing device of claim 19, wherein the predetermined relationship comprises less than or equal to.
- The computing device of claim 19, further comprising a Huffman encoder to: compute a Huffman code length for each symbol of the list of symbols based on a depth of a corresponding node in the Huffman code tree; and encode a data block with the Huffman code lengths, wherein the data block comprises a block of symbols.
- The computing device of claim 19, further comprising a hardware compression engine to generate the list of symbols, wherein to identify the one or more lightweight symbols comprises to identify the one or more lightweight symbols in response to generation of the list of symbols.
- One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to: determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight; identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight; generate a first balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the first balanced sub-tree; generate a second balanced sub-tree of nodes for one or more remaining symbols of the list of symbols other than the lightweight symbols, wherein each of the remaining symbols is associated with a leaf node of the second balanced sub-tree; and join the first balanced sub-tree and the second balanced sub-tree with a root node to generate a Huffman code tree.
- The one or more computer-readable storage media of claim 23, wherein the predetermined relationship comprises less than or equal to.
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. The DEFLATE algorithm supports dynamic Huffman codes as well as static Huffman codes. Typical encoders may analyze a message block and generate an optimum Huffman code in a first pass through the message block, and then perform substitution of the symbols into variable length prefix codes in a second pass through the message block.
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;
Citations (2)
- US7064489B2
- US6919826B1
Record as JSON
{
"publication_number": "US9973207B2",
"country": "US",
"kind": "B2",
"title": "Technologies for heuristic huffman code generation",
"abstract": "Technologies for heuristic Huffman code generation include a computing device that generates a weighted list of symbols for a data block. The computing device determines a threshold weight and identifies one or more lightweight symbols in the list that have a weight less than or equal to the threshold weight. The threshold weight may be the average weight of all symbols with non-zero weight in the list. The computing device generates a balanced sub-tree of nodes for the lightweight symbols, with each lightweight symbol associated with a leaf node. The computing device adds the remaining symbols and the root of the balanced sub-tree to a heap and generates a Huffman code tree by processing the heap. The threshold weight may be adjusted to tune performance and compression ratio. Other embodiments are described and claimed.",
"claims": [
"1. A computing device comprising: a heuristic processor to (i) determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight, (ii) identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight, and (iii) generate a balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the balanced sub-tree; and a tree processor to generate a Huffman code tree for any remaining symbols of the list of symbols other than the lightweight symbols and a root node of the balanced sub-tree.",
"2. The computing device of claim 1, wherein the predetermined relationship comprises less than or equal to.",
"3. The computing device of claim 1, further comprising a Huffman encoder to: compute a Huffman code length for each symbol of the list of symbols based on a depth of a corresponding node in the Huffman code tree; and encode a data block with the Huffman code lengths, wherein the data block comprises a block of symbols.",
"4. The computing device of claim 1, further comprising a hardware compression engine to generate the list of symbols, wherein to identify the one or more lightweight symbols comprises to identify the one or more lightweight symbols in response to generation of the list of symbols.",
"5. The computing device of claim 1, wherein to determine the threshold weight for the list of symbols comprises to determine an average weight for each symbol of the list of symbols.",
"6. The computing device of claim 5, wherein to determine the threshold weight for the list of symbols further comprises to scale the average weight by a predetermined scale factor.",
"7. The computing device of claim 1, wherein to identify the one or more lightweight symbols of the list of symbols comprises to identify all symbols of the list of symbols as the lightweight symbols.",
"8. The computing device of claim 1, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to: add the remaining symbols and the root node to a heap data structure; and while the heap data structure includes more than one node, to: pop a first node and a second node from the heap data structure, wherein the first node and the second node each have a weight, and wherein the weights of the first node and the second node are the smallest weights in the heap data structure; create a third node, wherein the third node is a parent node of the first node and the second node, and wherein a weight of the third node is a sum of the weight of first node and the weight of the second node; and insert the third node in the heap data structure.",
"9. The computing device of claim 8, wherein to generate the Huffman code tree further comprises to add the first node and the second node to a sorted list of nodes in response to a pop of the first node and the second node.",
"10. The computing device of claim 1, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to: add the remaining symbols and the root node of the balanced sub-tree to a heap data structure; and while the heap data structure includes more than one node, to: pop a first node from the heap data structure, wherein the first node has a weight, and wherein the weight of the first node is the smallest weight in the heap data structure; create a second node, wherein the second node is a parent node of the first node and a third node, wherein the third node is at a top of the heap data structure, and wherein a weight of the second node is a sum of the weight of first node and the weight of the third node; and replace the third node in the heap data structure with the second node.",
"11. One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to: determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight; identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight; generate a balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the balanced sub-tree; and generate a Huffman code tree for any remaining symbols of the list of symbols other than the lightweight symbols and a root node of the balanced sub-tree.",
"12. The one or more computer-readable storage media of claim 11, wherein the predetermined relationship comprises less than or equal to.",
"13. The one or more computer-readable storage media of claim 11, wherein to determine the threshold weight for the list of symbols comprises to determine an average weight for each symbol of the list of symbols.",
"14. The one or more computer-readable storage media of claim 13, wherein to determine the threshold weight for the list of symbols further comprises to scale the average weight by a predetermined scale factor.",
"15. The one or more computer-readable storage media of claim 11, wherein to identify the one or more lightweight symbols of the list of symbols comprises to identify all symbols of the list of symbols as the lightweight symbols.",
"16. The one or more computer-readable storage media of claim 11, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to: add the remaining symbols and the root node to a heap data structure; and while the heap data structure includes more than one node: pop a first node and a second node from the heap data structure, wherein the first node and the second node each have a weight, and wherein the weights of the first node and the second node are the smallest weights in the heap data structure; create a third node, wherein the third node is a parent node of the first node and the second node, and wherein a weight of the third node is a sum of the weight of first node and the weight of the second node; and insert the third node in the heap data structure.",
"17. The one or more computer-readable storage media of claim 16, wherein to generate the Huffman code tree further comprises to add the first node and the second node to a sorted list of nodes in response to popping the first node and the second node.",
"18. The one or more computer-readable storage media of claim 11, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to: add the remaining symbols and the root node of the balanced sub-tree to a heap data structure; and while the heap data structure includes more than one node: pop a first node from the heap data structure, wherein the first node has a weight, and wherein the weight of the first node is the smallest weight in the heap data structure; create a second node, wherein the second node is a parent node of the first node and a third node, wherein the third node is at a top of the heap data structure, and wherein a weight of the second node is a sum of the weight of first node and the weight of the third node; and replace the third node in the heap data structure with the second node.",
"19. A computing device comprising a heuristic processor to: determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight; identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight; generate a first balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the first balanced sub-tree; generate a second balanced sub-tree of nodes for one or more remaining symbols of the list of symbols other than the lightweight symbols, wherein each of the remaining symbols is associated with a leaf node of the second balanced sub-tree; and join the first balanced sub-tree and the second balanced sub-tree with a root node to generate a Huffman code tree.",
"20. The computing device of claim 19, wherein the predetermined relationship comprises less than or equal to.",
"21. The computing device of claim 19, further comprising a Huffman encoder to: compute a Huffman code length for each symbol of the list of symbols based on a depth of a corresponding node in the Huffman code tree; and encode a data block with the Huffman code lengths, wherein the data block comprises a block of symbols.",
"22. The computing device of claim 19, further comprising a hardware compression engine to generate the list of symbols, wherein to identify the one or more lightweight symbols comprises to identify the one or more lightweight symbols in response to generation of the list of symbols.",
"23. One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to: determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight; identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight; generate a first balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the first balanced sub-tree; generate a second balanced sub-tree of nodes for one or more remaining symbols of the list of symbols other than the lightweight symbols, wherein each of the remaining symbols is associated with a leaf node of the second balanced sub-tree; and join the first balanced sub-tree and the second balanced sub-tree with a root node to generate a Huffman code tree.",
"24. The one or more computer-readable storage media of claim 23, wherein the predetermined relationship comprises less than or equal to."
],
"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. The DEFLATE algorithm supports dynamic Huffman codes as well as static Huffman codes. Typical encoders may analyze a message block and generate an optimum Huffman code in a first pass through the message block, and then perform substitution of the symbols into variable length prefix codes in a second pass through the message block.\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;",
"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/40"
],
"assignees": [
"Intel Corp"
],
"inventors": [
"Vinodh Gopal",
"James D. Guilford"
],
"filing_date": "2017-06-30",
"publication_date": "2018-05-15",
"grant_date": "2018-05-15",
"priority_date": "2016-07-22",
"application_number": "US-201715639602-A",
"family_id": "60804962",
"cited_by_count": 15,
"citations": [
"US7064489B2",
"US6919826B1"
]
}
Record 3,457 of 8,000 in Patents full text (MLC-0201). Request the full dataset.