Barrel compactor system, method and device
A packet processing system having a barrel compactor that extracts a desired data subset from an input dataset (e.g. an incoming packet). The barrel compactor is able to selectively shift one or more of the input data units of the input dataset based on individual shift values for those data units. Additionally, in some embodiments one or more of the data units are able to be logically combined to produce a desired logical output unit.
Latest Cavium, LLC Patents:
- Methods and apparatus for frequency offset estimation
- Methods and apparatus for control channel detection in an uplink shared channel
- METHODS AND APPARATUS FOR A VECTOR MEMORY SUBSYSTEM FOR USE WITH A PROGRAMMABLE MIXED-RADIX DFT/IDFT PROCESSOR
- METHODS AND APPARATUS FOR JOB SCHEDULING IN A PROGRAMMABLE MIXED-RADIX DFT/IDFT PROCESSOR
- METHODS AND APPARATUS FOR DYNAMIC ACKNOWLEDGEMENT LIST SELECTION IN DETECTION OF UPLINK CONTROL CHANNEL FORMATS
This Application is a continuation of U.S. application Ser. No. 14/675,728, filed on Mar. 31, 2015, and entitled “A BARREL COMPACTOR SYSTEM, METHOD AND DEVICE,” which is also hereby incorporated by reference.
FIELD OF INVENTIONThe present invention relates to data extraction. More particularly, the present invention relates to a barrel compactor for extracting a desired subset from an input dataset.
BACKGROUND OF THE INVENTIONData processing devices, such as data packet-processing devices like a switch microchip, generally operate by inputting data, parsing the input data, processing of the data, extracting desired portions of the data and ultimately outputting of desired portions of the data. In particular, the data extraction process is traditionally performed utilizing large multiplexers that each receive all of the input data and output the desired portions of the data. However, these large multiplexors that are capable of receiving and multiplexing between such large quantities of input data are very expensive. As a result, the data processing devices utilizing such large multiplexors as extraction elements are correspondingly expensive.
BRIEF SUMMARY OF THE INVENTIONA packet processing system having a barrel compactor that extracts a desired data subset from an input dataset (e.g. an incoming packet). The barrel compactor is able to selectively shift one or more of the input data units of the input dataset based on individual shift values for those data units. Additionally, in some embodiments one or more of the data units are able to be logically combined to produce a desired logical output unit.
A first aspect is directed to a barrel compactor system for extracting a subset of data from a plurality of data units that together form an input dataset. The system comprises a data unit shift generator that generates an independent shift value for each of the data units within the subset of the input dataset, wherein the independent shift value indicates a number of positions within the input dataset to shift the associated data unit and a barrel compactor comprising a plurality of logic cells arranged in an array, wherein the barrel compactor receives the input dataset, and shifts one or more of the data units of the subset based on the independent shift values such that the subset is in a different position within the input dataset. In some embodiments, when in the different position within the input dataset, all of the data units of the subset are adjacent to each other. In some embodiments, when in the different position within the input dataset, a rightmost data unit of the subset is in a rightmost position of the input dataset or a leftmost data unit of the subset is in a leftmost position of the input dataset. In some embodiments, the array comprises a plurality of rows and a column for each of the plurality of data units of the input dataset, wherein the logic cells of each of the columns are coupled together in series by a plurality of data pass lines. In some embodiments, for one or more of the rows of one or more of the columns, each of the logic cells of the one or more rows of the one or more columns is coupled with the logic cell of the next row of a different one of the columns via a data shift line. In some embodiments, the different one of the columns is a predetermined number of columns away from the column including the logic cell of the one or more rows of the one or more columns. In some embodiments, the predetermined number of columns away is the same for all of the logic cells in the same one of the rows.
In some embodiments, the barrel compactor receives the input dataset by inputting a different one of the data units with each of the columns such that the input dataset is received by the array in parallel, and further wherein each of the independent shift values is transmitted through the array along with the associated one of the data units. In some embodiments, upon receiving one of the data units and the associated independent shift value from either one of the shift lines or one of the pass lines during a cycle, each of the logic cells transmit the data unit and the associated independent shift value down one of the pass lines to the next logic cell of the column if the independent shift value does not indicate a shift is necessary by the row that the logic cell is a part of and transmit the data unit and the associated independent shift value to the logic cell of the next row of the different one of the columns via the data shift line if the independent shift value indicates that a shift is necessary by the row that the logic cell is a part of. In some embodiments, the system further comprises a data subset identifier that generates a qualifier value for each of the data units of the input dataset. In some embodiments, the qualifier value indicates if the data unit is a part of the subset, wherein each of the qualifier values is transmitted through the array along with the associated one of the data units. In some embodiments, upon receiving both one of the data units and the associated independent shift value from one of the shift lines and one of the data units and the associated independent shift value from one of the pass lines during the same cycle, each of the logic cells discard the one of the data units and the associated independent shift value from the one of the pass lines and select the one of the data units and the associated independent shift value from the one of the shift lines for transmission based on the associated independent shift value.
In some embodiments, upon receiving both one of the data units, the associated independent shift value and the associated qualifier value from one of the shift lines and one of the data units, the associated independent shift value and the associated qualifier value from one of the pass lines during the same cycle, each of the logic cells discard the one of the data units, the associated independent shift value and the associated qualifier value from the one of the pass lines if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is not a part of the subset, discard the one of the data units, the associated independent shift value and the associated qualifier value from the one of the shift lines if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is not a part of the subset, if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is a part of the subset, select the one of the data units, the associated independent shift value and the associated qualifier value from the one of the pass lines for transmission based on the associated independent shift value from the one of the pass lines and if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is a part of the subset, select the one of the data units, the associated independent shift value and the associated qualifier value from the one of the shift lines for transmission based on the associated independent shift value from the one of the shift lines.
In some embodiments, the data shift unit generator inserts a zero in a location between one or more of the data units of the subset as organized in the different position by reducing the independent shift values of all of the data units to either the right or the left of the location by one. In some embodiments, each of the logic cells comprise a multiplexor. In some embodiments, the data unit shift generator generates the independent shift value for each of the data units of the subset based on the qualifier values of the plurality of data units. In some embodiments, the data unit shift generator generates the independent shift value for each of the data units of the subset based on the qualifier values of the plurality of data units by using the qualifier values to identify the data units that are a part of the subset, calculating a first number of the data units that are between one side of the input dataset and a closest one of the data units of the subset to the one side and for each gap between one of the data units of the subset and a next of the data units of the subset, calculating a gap size that is equal to a number of the data units within the gap. In some embodiments, the data unit shift generator determines the independent shift value of each of the data units of the subset by summing the first number and the gap size of each of the gaps between the data unit and the one side of the input dataset. In some embodiments, each of the data units is selected from the group consisting of a bit, a byte or a word. In some embodiments, for each of the rows of the array, each of the independent shift values indicate whether a shift is necessary for the row.
A second aspect is directed to a barrel compactor for extracting a subset of data from a plurality of data units that together form an input dataset, the barrel compactor comprising a plurality of logic cells arranged in an array, wherein the barrel compactor receives the input dataset, and shifts one or more of the data units of the subset such that the subset is in a different position within the input dataset, wherein each of the data units of the subset have a corresponding independent shift value that indicates a number of positions within the input dataset to shift the associated data unit, and further wherein the barrel compactor shifts the one or more of the data units of the subset based on the independent shift values. In some embodiments, when in the different position within the input dataset, all of the data units of the subset are adjacent to each other. In some embodiments, when in the different position within the input dataset, a rightmost data unit of the subset is in a rightmost position of the input dataset or a leftmost data unit of the subset is in a leftmost position of the input dataset. In some embodiments, the array comprises a plurality of rows and a column for each of the plurality of data units of the input dataset, wherein the logic cells of each of the columns are coupled together in series by a plurality of data pass lines. In some embodiments, for one or more of the rows of one or more of the columns, each of the logic cells of the one or more rows of the one or more columns is coupled with the logic cell of the next row of a different one of the columns via a data shift line.
In some embodiments, the different one of the columns is a predetermined number of columns away from the column including the logic cell of the one or more rows of the one or more columns. In some embodiments, the predetermined number of columns away is the same for all of the logic cells in the same one of the rows. In some embodiments, the barrel compactor receives the input dataset by inputting a different one of the data units with each of the columns such that the input dataset is received by the array in parallel, and further wherein each of the independent shift values is transmitted through the array by the logic cells along with the associated one of the data units. In some embodiments, upon receiving one of the data units and the associated independent shift value from either one of the shift lines or one of the pass lines during a cycle, each of the logic cells transmit the data unit and the associated independent shift value down one of the pass lines to the next logic cell of the column if the independent shift value does not indicate a shift is necessary by the row that the logic cell is a part of and transmit the data unit and the associated independent shift value to the logic cell of the next row of the different one of the columns via the data shift line if the independent shift value indicates that a shift is necessary by the row that the logic cell is a part of. In some embodiments, each of the data units of the input dataset have a qualifier value that indicates if the data unit is a part of the subset. In some embodiments, each of the qualifier values is transmitted by the logic cells through the array along with the associated one of the data units. In some embodiments, upon receiving both one of the data units and the associated independent shift value from one of the shift lines and one of the data units and the associated independent shift value from one of the pass lines during the same cycle, each of the logic cells discard the one of the data units and the associated independent shift value from the one of the pass lines and select the one of the data units and the associated independent shift value from the one of the shift lines for transmission based on the associated independent shift value.
In some embodiments, upon receiving both one of the data units, the associated independent shift value and the associated qualifier value from one of the shift lines and one of the data units, the associated independent shift value and the associated qualifier value from one of the pass lines during the same cycle, each of the logic cells discard the one of the data units, the associated independent shift value and the associated qualifier value from the one of the pass lines if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is not a part of the subset, discard the one of the data units, the associated independent shift value and the associated qualifier value from the one of the shift lines if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is not a part of the subset, if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is a part of the subset, select the one of the data units, the associated independent shift value and the associated qualifier value from the one of the pass lines for transmission based on the associated independent shift value from the one of the pass lines and if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is a part of the subset, select the one of the data units, the associated independent shift value and the associated qualifier value from the one of the shift lines for transmission based on the associated independent shift value from the one of the shift lines.
In some embodiments, the barrel compactor inserts a zero in a location between one or more of the data units of the subset as organized in the different position by reducing the independent shift values of all of the data units to either the right or the left of the location by one. In some embodiments, each of the logic cells comprise a multiplexor. In some embodiments, the barrel compactor generates the independent shift value for each of the data units of the subset based on the qualifier values of the plurality of data units. In some embodiments, the barrel compactor generates the independent shift value for each of the data units of the subset based on the qualifier values of the plurality of data units by using the qualifier values to identify the data units that are a part of the subset, calculating a first number of the data units that are between one side of the input dataset and a closest one of the data units of the subset to the one side and for each gap between one of the data units of the subset and a next of the data units of the subset, calculating a gap size that is equal to a number of the data units within the gap. In some embodiments, the barrel compactor determines the independent shift value of each of the data units of the subset by summing the first number and the gap size of each of the gaps between the data unit and the one side of the input dataset. In some embodiments, each of the data units is selected from the group consisting of a bit, a byte or a word. In some embodiments, for each of the rows of the array, each of the independent shift values indicate whether a shift is necessary for the row.
A third aspect is directed to a method of extracting a subset of data from a plurality of data units that together form an input dataset. The method comprises receiving the input dataset with a barrel compactor comprising a plurality of logic cells arranged in an array and shifting one or more of the data units of the subset with the barrel compactor such that the subset is in a different position within the input dataset, wherein each of the data units of the subset have a corresponding independent shift value that indicates a number of positions within the input dataset to shift the associated data unit, and further wherein the barrel compactor shifts the one or more of the data units of the subset based on the independent shift values. In some embodiments, when in the different position within the input dataset, all of the data units of the subset are adjacent to each other. In some embodiments, when in the different position within the input dataset, a rightmost data unit of the subset is in a rightmost position of the input dataset or a leftmost data unit of the subset is in a leftmost position of the input dataset. In some embodiments, the array comprises a plurality of rows and a column for each of the plurality of data units of the input dataset, wherein the logic cells of each of the columns are coupled together in series by a plurality of data pass lines. In some embodiments, for one or more of the rows of one or more of the columns, each of the logic cells of the one or more rows of the one or more columns is coupled with the logic cell of the next row of a different one of the columns via a data shift line. In some embodiments, the different one of the columns is a predetermined number of columns away from the column including the logic cell of the one or more rows of the one or more columns. In some embodiments, the predetermined number of columns away is the same for all of the logic cells in the same one of the rows.
In some embodiments, the barrel compactor receives the input dataset by inputting a different one of the data units with each of the columns such that the input dataset is received by the array in parallel, and further wherein each of the independent shift values is transmitted through the array by the logic cells along with the associated one of the data units. In some embodiments, the method further comprises, for each of the logic cells, upon receiving one of the data units and the associated independent shift value from either one of the shift lines or one of the pass lines during a cycle transmitting with the logic cell the data unit and the associated independent shift value down one of the pass lines to the next logic cell of the column if the independent shift value does not indicate a shift is necessary by the row that the logic cell is a part of and transmitting with the logic cell the data unit and the associated independent shift value to the logic cell of the next row of the different one of the columns via the data shift line if the independent shift value indicates that a shift is necessary by the row that the logic cell is a part of. In some embodiments, each of the data units of the input dataset have a qualifier value that indicates if the data unit is a part of the subset. In some embodiments, each of the qualifier values is transmitted by the logic cells through the array along with the associated one of the data units. In some embodiments, the method further comprises, with each of the logic cells, upon receiving both one of the data units and the associated independent shift value from one of the shift lines and one of the data units and the associated independent shift value from one of the pass lines during the same cycle discarding with the logic cell the one of the data units and the associated independent shift value from the one of the pass lines and selecting with the logic cell the one of the data units and the associated independent shift value from the one of the shift lines for transmission based on the associated independent shift value.
In some embodiments, the method further comprises, for each of the logic cells, upon receiving both one of the data units, the associated independent shift value and the associated qualifier value from one of the shift lines and one of the data units, the associated independent shift value and the associated qualifier value from one of the pass lines during the same cycle discarding with the logic cell the one of the data units, the associated independent shift value and the associated qualifier value from the one of the pass lines if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is not a part of the subset, discarding with the logic cell the one of the data units, the associated independent shift value and the associated qualifier value from the one of the shift lines if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is not a part of the subset, if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is a part of the subset, selecting with the logic cell the one of the data units, the associated independent shift value and the associated qualifier value from the one of the pass lines for transmission based on the associated independent shift value from the one of the pass lines and if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is a part of the subset, selecting with the logic cell the one of the data units, the associated independent shift value and the associated qualifier value from the one of the shift lines for transmission based on the associated independent shift value from the one of the shift lines.
In some embodiments, the method further comprises inserting with the barrel compactor a zero in a location between one or more of the data units of the subset as organized in the different position by reducing the independent shift values of all of the data units to either the right or the left of the location by one. In some embodiments, each of the logic cells comprise a multiplexor. In some embodiments, the method further comprises generating the independent shift value for each of the data units of the subset with the barrel compactor based on the qualifier values of the plurality of data units. In some embodiments, the barrel compactor generates the independent shift value for each of the data units of the subset based on the qualifier values of the plurality of data units by using the qualifier values to identify the data units that are a part of the subset, calculating a first number of the data units that are between one side of the input dataset and a closest one of the data units of the subset to the one side and for each gap between one of the data units of the subset and a next of the data units of the subset, calculating a gap size that is equal to a number of the data units within the gap. In some embodiments, the barrel compactor determines the independent shift value of each of the data units of the subset by summing the first number and the gap size of each of the gaps between the data unit and the one side of the input dataset. In some embodiments, each of the data units is selected from the group consisting of a bit, a byte or a word. In some embodiments, for each of the rows of the array, each of the independent shift values indicate whether a shift is necessary for the row.
In the following description, numerous details are set forth for purposes of explanation. However, one of ordinary skill in the art will realize that the invention can be practiced without the use of these specific details. Thus, the present invention is not intended to be limited to the embodiments shown but is to be accorded the widest scope consistent with the principles and features described herein.
Embodiments are directed to a packet processing system having a barrel compactor that extracts a desired data subset from an input dataset (e.g. an incoming packet). The barrel compactor is able to selectively shift one or more of the input data units of the input dataset based on individual shift values for those data units. Additionally, in some embodiments one or more of the data units are able to be logically combined to produce a desired logical output unit. Accordingly, the desired subset of the input dataset is able to be shifted to a desired location within the input dataset such that the subset can be easily extracted as a continuous set of extracted data. As a result, the system provides the advantage of minimizing the cost of data extraction by eliminating the need for high cost wide multiplexors.
In operation, an input dataset is received and input by one or more of the barrel compactor 102 and/or the qualifier generator 106. Based on the input dataset, the qualifier generator 106 generates one or more qualifier values that identify a subset of the input data that needs to be extracted. For example, the qualifier generator 106 is able to identify an incoming packet or packets and assign qualifier values to one or more of the data units of the incoming data indicating that those data units need to be extracted (i.e. are a part of the desired subset of the input dataset). The shift generator 104 is able to receive these qualifier values and/or the input dataset and generate shift values for one or more of the data units of the dataset that indicate to the barrel compactor how much each of the data units need to be shifted in order to be extracted from the remainder of the input dataset. For example, the shift generator 104 is able to generate shift values for each of the data units of the dataset whose qualifier values indicate that they are a part of the desired subset. Indeed, the shift values are able to be selected such that after the data units of the subset are shifted the subset will form a single group (e.g. all be adjacent to each other) within the dataset.
The value of each of the shift values is able to be based on the qualifier values and/or the relative position of each of the data units within the input dataset. In particular, the shift values are able to be selected based on one or more gaps of data units that are not a part of the subset (e.g. have qualifier values that indicate that they are not a part of the desired subset) that are in between two or more data units of the subset or between an end position within the dataset and the subset. For example, for each data unit of the desired subset, the shift generator 104 is able to determining the size (e.g. number of data units) of all of the gaps between that data unit and an end of the dataset where the subset is being shifted to. The value of that summation of the size of all of those gaps is equal to the number of positions that the data unit will need to be shifted and thus is able to determine the corresponding shift value for the data units. Accordingly, once this has been performed for all of the data units of the subset, the shift generator 104 is able to generate shift values for all of the subset that will result in elimination of the gaps in the modified output dataset such that the subset forms an adjacent group of data units. Alternatively, the shift values are able to be otherwise determined by the shift generator 104 based on the input dataset and/or qualifier values.
The shift generator 104 transmits these shift values and qualifier values to the barrel compactor 102 such that along with the input dataset, each of the data units of the dataset received by the barrel compactor 102 have a corresponding shift value and a corresponding qualifier value. In some embodiments, instead of receiving the input dataset directly, the barrel compactor 102 receives the input dataset from the shift generator 104 and/or qualifier generator 106. In some embodiments, instead of from the qualifier generator 106 directly, the barrel compactor 102 receives the qualifier values from the qualifier generator 106 via the shift generator 104. The barrel compactor 102, upon receiving the dataset, the shift values and/or the qualifier values, is able to shift and otherwise process each of the data units of the dataset (including the corresponding shift value and qualifier value) in parallel. In particular, the barrel compactor 102 shifts the data units of the input dataset such that all of the data units of the subset are positioned in an adjacent group within the input dataset (e.g. on the far right or far left positions of the input dataset) thereby forming a modified output dataset that is output by the barrel compactor 102. As a result, the system 100 is able to provide the advantage of extracting the desired subset into a single group within the input dataset such that the subset is able to be easily removed and used for further processing.
In some embodiments, the barrel compactor 102 is able to logically combine/modify one or more of the data units of the subset according to predetermined logical functions when the shifting and/or qualifier values indicate that such a function should be performed on pairs of the data units of the subset. As a result, in such embodiments the system 100 provides the advantage of selectively performing desired combinatorial logic with one or more pairs of the data units and/or results from prior combinations of data units thereby providing increased processing power in addition to the data extraction. Additionally, in some embodiments the barrel compactor 102 is able to insert one or more zeros (or data units whose value is equal to zero) into the subset such that when the subset is positioned into the adjacent group within the modified output dataset one or more zeros will be added to the subset in between desired portions of the subset. As a result, in such embodiments the system 100 provides the advantage of enabling portions of the subset to be distinguished from each other (e.g. a buffer between a flag and a remainder of the subset) while still grouping the subset as a whole into an adjacent group (including the added zeros) within the modified output dataset.
In some embodiments, the input dataset comprises one or more packets and the associated packet data (e.g. a packet header, a packet body). Alternatively, the input dataset is able to comprise other types of data and/or data formats or signals wherein a subset of the data is able to be extracted from the input dataset. In some embodiments, each data unit of the input dataset is a bit. Alternatively, the data units are able to be bits, bytes, words, files and/or other groups or sizes of data. In other words, the granularity of the data units is able to be a small as a single bit and as large as any number or organization of a plurality of bits (e.g. bytes, words, files).
Specifically, as described in detail below, each of the logic cells 204 is able to output a received data unit (and the corresponding shift value and/or qualifier value) on the outgoing pass line 206a unless the corresponding shift value indicates that the logic cell 204 should output the data unit via the outgoing shift line 206b thereby shifting the data unit (and the corresponding shift value and/or qualifier value). Further, as described in detail below, if two data units are received during the same cycle on the incoming pass line 206a and the incoming shift line 206b, the logic cell 204 is able to choose one and discard the other or logically combine the two based on the corresponding qualifier values and/or data of the pair of data units. For example, in some embodiments the logic cell 204 always discards the data unit from the incoming pass line 206a and selects the data unit from the incoming shift line 206b. Indeed, in such embodiments the qualifier values are able to be omitted and/or not passed along with the corresponding data units through the array 202. Alternatively, if one of the data units is a part of the subset and the other one of the data units is not a part of the subset (e.g. as indicated by the corresponding qualifier values), the logic cell 204 is able to discard the data unit that is not a part of the subset and select the data unit that is a part of the subset. Moreover, in some embodiments if both of the data units are a part of the subset (e.g. as indicated by the corresponding qualifier values), the logic cell 204 is able to perform a predetermined logical function that combines the data of the two data units (thereby creating a single modified data units). In such embodiments, the logic cell 204 is able to select one of the shift values and qualifier to send along with the modified data unit or is able to combine the shift values into a modified shift value to be sent along with the modified data unit and the selected qualifier value.
Although as shown in
Each of the shift values 304 is able to comprise a plurality of values (e.g. one value for each of the rows 210 including logic cells 204 that are able to selectively shift data units 302, 302′) that individually indicate whether a shift should occur for cells 204 of different rows 210. For example, as shown in
In operation in the example shown in
In some embodiments, upon receiving two data units 302, 302′ during the same cycle, the logic cells 204 always discard the data unit 302 from the incoming pass line 206a and selects the data unit 302′ from the incoming shift line 206b to output (based on the corresponding shift value 304). Indeed, in such embodiments the qualifier values (not shown) are able to be omitted and/or not transmitted with the data units 302, 302′ through the array 202. Alternatively, if one of the data units 302′ is a part of the subset and the other one of the data units 302 is not a part of the subset (e.g. as indicated by the corresponding qualifier values), the logic cell 204 is able to discard the data unit 302 that is not a part of the subset and select the data unit 302′ (e.g. A, B and C) that is a part of the subset. In some embodiments, as shown in
In any case, the process then repeats for the logic cells 204 of the second row 210b, wherein in this case the shift values 304 indicate that data units 302′ B and C need to be output on the shift lines 206b whereas data units 302′ A and D (and the logic cells 204 receiving the other data units 302) need to be output on the pass lines 206a. Subsequently, after all of the logic cells 204 of all of the rows 210 of the array 202 have completed the process the resulting output will include all of the data units 302′ of the subset repositioned adjacent to each other in a group 306 at one end of the array 202 (and/or modified output dataset). Therefore, the compactor 102 provides the advantages of cheaply enabling the extraction of desired subsets of input datasets 300 and enabling each of the data units 302, 302′ to have a unit shift value 304 and thus be shifted uniquely to any of the other data units 302, 302′. In some embodiments, this group 306 is able to include one or more zeros in columns 208/positions between one or more of the data units 302′ of the subset based on the configuration of the barrel compactor 102 and/or the shift generator 104. For example, as described above, if the shift values of one or more of the data units 302′ (e.g. B, C and D) are configured to shift the data units 302′ one less column 208/position, the result will be a zero in the second column 208 of the group 306 between the data unit 302′ A and the data units 302′ B, C and D. Thus, the compactor 102 provides the advantage of enabling portions of the subset to be distinguished from each other (e.g. a buffer between a flag and a remainder of the subset) while still grouping the subset as a whole into an adjacent group (including the added zeros) within the modified output dataset.
In operation, each of the data units 402, 402′ of the input dataset 400 follow the bold paths through the array 202 based on their corresponding shift values (not shown) wherein the numerator of the values within each cell 204 indicate the data value 402a of the data unit 402, 402′ and the denominator of the values indicate the qualifier value 402b of the data unit 402, 402′ input and output by that logic cell 204. As shown in
For example, as shown in
In some embodiments, the logic cell 404b is able to select one of the two shift values (not shown) and/or one of the two qualifier values 402b to determine which line to send the modified data unit on and to send along with the modified data unit, or is able to combine the shift values and/or qualifier values 402b into a modified shift value and/or qualifier value to determine which line to send the modified data unit on and to be sent along with the modified data unit. Therefore, the compactor 102 provides the advantage of selectively performing desired combinatorial logic with one or more pairs of the data units 402, 402′ and/or results from prior combinations of data units (e.g. previously created modified data units) thereby providing increased processing power in addition to the data extraction. It should be noted, as described above, although the data 402a of the data units 402, 402′ of
In some embodiments, the subset is shifted such that all of the data units of the subset are adjacent to each other (e.g. at the rightmost or leftmost positions of the input dataset). In some embodiments, the shifting includes the transmitting of the corresponding shift value and the qualifier values with each of the data units as they are passed or shifted through the array 202. As a result, the method provides the advantage of enabling each of the data units to have a unit shift value and thus be shifted uniquely to any of the other data units. In some embodiments, if a logic cell 204 receives two data units during the same cycle, the logic cell 204 always discards the data unit from the incoming pass line 206a and selects the data unit from the incoming shift line 206b. Alternatively, if one of the data units is a part of the subset and the other one of the data units is not a part of the subset (e.g. as indicated by the corresponding qualifier values), the logic cell 204 is able to discard the data unit that is not a part of the subset and select the data unit that is a part of the subset. In some embodiments, if both of the received data units are a part of the subset (e.g. as indicated by the corresponding qualifier values), the logic cell 204 is able to perform a predetermined logical function that combines the data of the two data units (thereby creating a single modified data units). In such embodiments, the logic cell 204 is able to select one of the shift values and qualifier to send along with the modified data unit or is able to combine the shift values into a modified shift value to be sent along with the modified data unit and the selected qualifier value. As a result, the method provides the advantage of selectively performing desired combinatorial logic with one or more pairs of the data units and/or results from prior combinations of data units thereby providing increased processing power in addition to the data extraction.
Additionally, in some embodiments the method further comprises the barrel compactor 102 inserting one or more zeros in a location between one or more of the data units of the subset as organized in the different position. Specifically, the barrel compactor 102 is able to modify the shift values by reducing the shift values of all of the data units to either the right or the left of the location by the desired number of zeros. Thus, the method provides the advantage of enabling portions of the subset to be distinguished from each other (e.g. a buffer between a flag and a remainder of the subset) while still grouping the subset as a whole into an adjacent group (including the added zeros) within the modified output dataset. In some embodiments, the method further comprises the barrel compactor 102 and/or the shift generator 104 automatically generating the shift values based on the input dataset and the qualifier values. For example, the barrel compactor 102 and/or shift generator 104 is/are able to use the qualifier values to identify the data units that are a part of the subset, calculating a first number of the data units that are between one side of the input dataset and a closest one of the data units of the subset to the one side, and for each gap between one of the data units of the subset and a next of the data units of the subset, calculating a gap size that is equal to a number of the data units within the gap. As a result, the barrel compactor 102 and/or shift generator 104 is/are able to determine the shift value of each of the data units of the subset as the summation of the first number and the gap size of each of the gaps between the data unit and the one side of the input dataset. Thus, the method provides the advantage of not requiring shift values be supplied to the barrel compactor 102 and/or shift generator 104.
The packet processing system, method and device described herein has numerous advantages. In particular, the system, method and device provides the advantage of extracting the desired subset into a single group within the input dataset such that the subset is able to be easily removed and used for further processing. Further, the system, method and device provides the advantage of selectively performing desired combinatorial logic with one or more pairs of the data units and/or results from prior combinations of data units thereby providing increased processing power in addition to the data extraction. Moreover, the system, method and device provides the advantage of enabling portions of the subset to be distinguished from each other (e.g. a buffer between a flag and a remainder of the subset) while still grouping the subset as a whole into an adjacent group (including the added zeros) within the modified output dataset. Additionally, the system method and device provide the advantage of enabling each of the data units to have a unit shift value and thus be shifted uniquely to any of the other data units.
While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. For example, although the different methods and operations described herein describe a particular order of steps, other orders are contemplated as well as the omission of one or more of the steps and/or the addition of one or more new steps. Moreover, although the methods and operations above are described herein separately, one or more of the methods and operations are able to be combined (in whole or part). Thus, one of ordinary skill in the art will understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.
Claims
1. A barrel compactor system for extracting a subset of data from a plurality of data units that together form an input dataset, the system comprising:
- a data unit shift generator that generates a discrete shift value for at least one of the data units within the subset of the input dataset; and
- a barrel compactor comprising a plurality of logic cells arranged in an array, wherein the barrel compactor receives the input dataset, and shifts the at least one of the data units of the subset based on the discrete shift value such that the subset is in a different position within the input dataset.
2. The system of claim 1, wherein when in the different position within the input dataset, all of the data units of the subset are adjacent to each other.
3. The system of claim 2, wherein when in the different position within the input dataset, a rightmost data unit of the subset is in a rightmost position of the input dataset or a leftmost data unit of the subset is in a leftmost position of the input dataset.
4. The system of claim 3, wherein the array comprises a plurality of rows and a column for each of the plurality of data units of the input dataset, wherein the logic cells of each of the columns are coupled together in series by a plurality of data pass lines.
5. The system of claim 4, wherein for one or more of the rows of one or more of the columns, each of the logic cells of the one or more rows of the one or more columns is coupled with the logic cell of the next row of a different one of the columns via a data shift line.
6. The system of claim 5, wherein the different one of the columns is a predetermined number of columns away from the column including the logic cell of the one or more rows of the one or more columns.
7. The system of claim 6, wherein the predetermined number of columns away is the same for all of the logic cells in the same one of the rows.
8. The system of claim 7, wherein the barrel compactor receives the input dataset by inputting a different one of the data units with each of the columns such that the input dataset is received by the array in parallel, and further wherein each of the shift values is transmitted through the array along with the associated one of the data units.
9. The system of claim 8, wherein upon receiving one of the data units and the associated shift value from either one of the shift lines or one of the pass lines during a cycle, each of the logic cells:
- transmit the data unit and the associated shift value down one of the pass lines to the next logic cell of the column if the shift value does not indicate a shift is necessary by the row that the logic cell is a part of; and
- transmit the data unit and the associated shift value to the logic cell of the next row of the different one of the columns via the data shift line if the shift value indicates that a shift is necessary by the row that the logic cell is a part of.
10. The system of claim 9, further comprising a data subset identifier that generates a qualifier value for each of the data units of the input dataset.
11. The system of claim 10, wherein the qualifier value indicates if the data unit is a part of the subset, wherein each of the qualifier values is transmitted through the array along with the associated one of the data units.
12. The system of claim 11, wherein upon receiving both one of the data units and the associated shift value from one of the shift lines and one of the data units and the associated shift value from one of the pass lines during the same cycle, each of the logic cells:
- discard the one of the data units and the associated shift value from the one of the pass lines; and
- select the one of the data units and the associated shift value from the one of the shift lines for transmission based on the associated shift value.
13. The system of claim 11, wherein upon receiving both one of the data units, the associated shift value and the associated qualifier value from one of the shift lines and one of the data units, the associated shift value and the associated qualifier value from one of the pass lines during the same cycle, each of the logic cells:
- discard the one of the data units, the associated shift value and the associated qualifier value from the one of the pass lines if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is not a part of the subset;
- discard the one of the data units, the associated shift value and the associated qualifier value from the one of the shift lines if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is not a part of the subset;
- if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is a part of the subset, select the one of the data units, the associated shift value and the associated qualifier value from the one of the pass lines for transmission based on the associated shift value from the one of the pass lines; and
- if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is a part of the subset, select the one of the data units, the associated shift value and the associated qualifier value from the one of the shift lines for transmission based on the associated shift value from the one of the shift lines.
14. The system of claim 12, wherein the data shift unit generator inserts a zero in a location between one or more of the data units of the subset as organized in the different position by reducing the shift values of all of the data units to either the right or the left of the location by one.
15. The system of claim 14, wherein each of the logic cells comprise a multiplexor.
16. The system of claim 15, wherein the data unit shift generator generates the shift value for each of the data units of the subset based on the qualifier values of the plurality of data units.
17. The system of claim 16, wherein the data unit shift generator generates the shift value for each of the data units of the subset based on the qualifier values of the plurality of data units by:
- using the qualifier values to identify the data units that are a part of the subset;
- calculating a first number of the data units that are between one side of the input dataset and a closest one of the data units of the subset to the one side; and
- for each gap between one of the data units of the subset and a next of the data units of the subset, calculating a gap size that is equal to a number of the data units within the gap.
18. The system of claim 17, wherein the data unit shift generator determines the shift value of each of the data units of the subset by summing the first number and the gap size of each of the gaps between the data unit and the one side of the input dataset.
19. The system of claim 18, wherein each of the data units is selected from the group consisting of a bit, a byte or a word.
20. The system of claim 19, wherein, for each of the rows of the array, each of the shift values indicate whether a shift is necessary for the row.
21. A barrel compactor for extracting a subset of data from a plurality of data units that together form an input dataset, the barrel compactor comprising a plurality of logic cells arranged in an array, wherein at least one of the data units of the subset has a discrete corresponding shift value and the barrel compactor shifts the at least one of the data units of the subset based on the discrete shift value, wherein each of the plurality of logic cells are implemented via a non-transitory computer-readable medium.
22. The barrel compactor of claim 21, wherein when in the different position within the input dataset, all of the data units of the subset are adjacent to each other.
23. The barrel compactor of claim 22, wherein when in the different position within the input dataset, a rightmost data unit of the subset is in a rightmost position of the input dataset or a leftmost data unit of the subset is in a leftmost position of the input dataset.
24. The barrel compactor of claim 23, wherein the array comprises a plurality of rows and a column for each of the plurality of data units of the input dataset, wherein the logic cells of each of the columns are coupled together in series by a plurality of data pass lines.
25. The barrel compactor of claim 24, wherein for one or more of the rows of one or more of the columns, each of the logic cells of the one or more rows of the one or more columns is coupled with the logic cell of the next row of a different one of the columns via a data shift line.
26. The barrel compactor of claim 25, wherein the different one of the columns is a predetermined number of columns away from the column including the logic cell of the one or more rows of the one or more columns.
27. The barrel compactor of claim 26, wherein the predetermined number of columns away is the same for all of the logic cells in the same one of the rows.
28. The barrel compactor of claim 27, wherein the barrel compactor receives the input dataset by inputting a different one of the data units with each of the columns such that the input dataset is received by the array in parallel, and further wherein each of the shift values is transmitted through the array by the logic cells along with the associated one of the data units.
29. The barrel compactor of claim 28, wherein upon receiving one of the data units and the associated shift value from either one of the shift lines or one of the pass lines during a cycle, each of the logic cells:
- transmit the data unit and the associated shift value down one of the pass lines to the next logic cell of the column if the shift value does not indicate a shift is necessary by the row that the logic cell is a part of; and
- transmit the data unit and the associated shift value to the logic cell of the next row of the different one of the columns via the data shift line if the shift value indicates that a shift is necessary by the row that the logic cell is a part of.
30. The barrel compactor of claim 29, wherein each of the data units of the input dataset have a qualifier value that indicates if the data unit is a part of the subset.
31. The barrel compactor of claim 30, wherein each of the qualifier values is transmitted by the logic cells through the array along with the associated one of the data units.
32. The barrel compactor of claim 31, wherein upon receiving both one of the data units and the associated shift value from one of the shift lines and one of the data units and the associated shift value from one of the pass lines during the same cycle, each of the logic cells:
- discard the one of the data units and the associated shift value from the one of the pass lines; and
- select the one of the data units and the associated shift value from the one of the shift lines for transmission based on the associated shift value.
33. The barrel compactor of claim 31, wherein upon receiving both one of the data units, the associated shift value and the associated qualifier value from one of the shift lines and one of the data units, the associated shift value and the associated qualifier value from one of the pass lines during the same cycle, each of the logic cells:
- discard the one of the data units, the associated shift value and the associated qualifier value from the one of the pass lines if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is not a part of the subset;
- discard the one of the data units, the associated shift value and the associated qualifier value from the one of the shift lines if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is not a part of the subset;
- if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is a part of the subset, select the one of the data units, the associated shift value and the associated qualifier value from the one of the pass lines for transmission based on the associated shift value from the one of the pass lines; and
- if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is a part of the subset, select the one of the data units, the associated shift value and the associated qualifier value from the one of the shift lines for transmission based on the associated shift value from the one of the shift lines.
34. The barrel compactor of claim 32, wherein the barrel compactor inserts a zero in a location between one or more of the data units of the subset as organized in the different position by reducing the shift values of all of the data units to either the right or the left of the location by one.
35. The barrel compactor of claim 34, wherein each of the logic cells comprise a multiplexor.
36. The barrel compactor of claim 35, wherein the barrel compactor generates the shift value for each of the data units of the subset based on the qualifier values of the plurality of data units.
37. The barrel compactor of claim 36, wherein the barrel compactor generates the shift value for each of the data units of the subset based on the qualifier values of the plurality of data units by:
- using the qualifier values to identify the data units that are a part of the subset;
- calculating a first number of the data units that are between one side of the input dataset and a closest one of the data units of the subset to the one side; and
- for each gap between one of the data units of the subset and a next of the data units of the subset, calculating a gap size that is equal to a number of the data units within the gap.
38. The barrel compactor of claim 37, wherein the barrel compactor determines the shift value of each of the data units of the subset by summing the first number and the gap size of each of the gaps between the data unit and the one side of the input dataset.
39. The barrel compactor of claim 38, wherein each of the data units is selected from the group consisting of a bit, a byte or a word.
40. The barrel compactor of claim 39, wherein, for each of the rows of the array, each of the shift values indicate whether a shift is necessary for the row.
41. A method of extracting a subset of data from a plurality of data units that together form an input dataset, the method comprising:
- receiving the input dataset with a barrel compactor comprising a plurality of logic cells arranged in an array; and
- shifting one or more of the data units of the subset with the barrel compactor such that the subset is in a different position within the input dataset, wherein at least one of the data units of the subset has a discrete corresponding shift value the barrel compactor shifts the at least one of the data units of the subset based on the discrete shift value.
42. The method of claim 41, wherein when in the different position within the input dataset, all of the data units of the subset are adjacent to each other.
43. The method of claim 42, wherein when in the different position within the input dataset, a rightmost data unit of the subset is in a rightmost position of the input dataset or a leftmost data unit of the subset is in a leftmost position of the input dataset.
44. The method of claim 43, wherein the array comprises a plurality of rows and a column for each of the plurality of data units of the input dataset, wherein the logic cells of each of the columns are coupled together in series by a plurality of data pass lines.
45. The method of claim 44, wherein for one or more of the rows of one or more of the columns, each of the logic cells of the one or more rows of the one or more columns is coupled with the logic cell of the next row of a different one of the columns via a data shift line.
46. The method of claim 45, wherein the different one of the columns is a predetermined number of columns away from the column including the logic cell of the one or more rows of the one or more columns.
47. The method of claim 46, wherein the predetermined number of columns away is the same for all of the logic cells in the same one of the rows.
48. The method of claim 47, wherein the barrel compactor receives the input dataset by inputting a different one of the data units with each of the columns such that the input dataset is received by the array in parallel, and further wherein each of the shift values is transmitted through the array by the logic cells along with the associated one of the data units.
49. The method of claim 48, further comprising, for each of the logic cells, upon receiving one of the data units and the associated shift value from either one of the shift lines or one of the pass lines during a cycle:
- transmitting with the logic cell the data unit and the associated shift value down one of the pass lines to the next logic cell of the column if the shift value does not indicate a shift is necessary by the row that the logic cell is a part of; and
- transmitting with the logic cell the data unit and the associated shift value to the logic cell of the next row of the different one of the columns via the data shift line if the shift value indicates that a shift is necessary by the row that the logic cell is a part of.
50. The method of claim 49, wherein each of the data units of the input dataset have a qualifier value that indicates if the data unit is a part of the subset.
51. The method of claim 50, wherein each of the qualifier values is transmitted by the logic cells through the array along with the associated one of the data units.
52. The method of claim 51, further comprising, with each of the logic cells, upon receiving both one of the data units and the associated shift value from one of the shift lines and one of the data units and the associated shift value from one of the pass lines during the same cycle:
- discarding with the logic cell the one of the data units and the associated shift value from the one of the pass lines; and
- selecting with the logic cell the one of the data units and the associated shift value from the one of the shift lines for transmission based on the associated shift value.
53. The method of claim 51, further comprising, for each of the logic cells, upon receiving both one of the data units, the associated shift value and the associated qualifier value from one of the shift lines and one of the data units, the associated shift value and the associated qualifier value from one of the pass lines during the same cycle:
- discarding with the logic cell the one of the data units, the associated shift value and the associated qualifier value from the one of the pass lines if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is not a part of the subset;
- discarding with the logic cell the one of the data units, the associated shift value and the associated qualifier value from the one of the shift lines if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is not a part of the subset;
- if the associated qualifier value from the one of the pass lines indicates that the one of the data units from the one of the pass lines is a part of the subset, selecting with the logic cell the one of the data units, the associated shift value and the associated qualifier value from the one of the pass lines for transmission based on the associated shift value from the one of the pass lines; and
- if the associated qualifier value from the one of the shift lines indicates that the one of the data units from the one of the shift lines is a part of the subset, selecting with the logic cell the one of the data units, the associated shift value and the associated qualifier value from the one of the shift lines for transmission based on the associated shift value from the one of the shift lines.
54. The method of claim 52, further comprising inserting with the barrel compactor a zero in a location between one or more of the data units of the subset as organized in the different position by reducing the shift values of all of the data units to either the right or the left of the location by one.
55. The method of claim 54, wherein each of the logic cells comprise a multiplexor.
56. The method of claim 55, further comprising generating the shift value for each of the data units of the subset with the barrel compactor based on the qualifier values of the plurality of data units.
57. The method of claim 56, wherein the barrel compactor generates the shift value for each of the data units of the subset based on the qualifier values of the plurality of data units by:
- using the qualifier values to identify the data units that are a part of the subset;
- calculating a first number of the data units that are between one side of the input dataset and a closest one of the data units of the subset to the one side; and
- for each gap between one of the data units of the subset and a next of the data units of the subset, calculating a gap size that is equal to a number of the data units within the gap.
58. The method of claim 57, wherein the barrel compactor determines the shift value of each of the data units of the subset by summing the first number and the gap size of each of the gaps between the data unit and the one side of the input dataset.
59. The method of claim 58, wherein each of the data units is selected from the group consisting of a bit, a byte or a word.
60. The method of claim 59, wherein, for each of the rows of the array, each of the shift values indicate whether a shift is necessary for the row.
5650734 | July 22, 1997 | Chu |
6691214 | February 10, 2004 | Li |
6901489 | May 31, 2005 | Gruner |
7486110 | February 3, 2009 | Bhatti |
8300714 | October 30, 2012 | Yun |
20040196706 | October 7, 2004 | Matsumoto |
20050235148 | October 20, 2005 | Scheidt |
20080259796 | October 23, 2008 | Abousleman |
20110246955 | October 6, 2011 | Ohtsuka |
20120019286 | January 26, 2012 | Salhany |
20130170435 | July 4, 2013 | Dinan |
20140056577 | February 27, 2014 | Ogawa |
20160294988 | October 6, 2016 | Theivendran |
Type: Grant
Filed: Mar 9, 2018
Date of Patent: Mar 3, 2020
Patent Publication Number: 20180198462
Assignee: Cavium, LLC (Santa Clara, CA)
Inventors: Premshanth Theivendran (Foster City, CA), Weihuang Wang (Los Gatos, CA), Sowmya Hotha (Cupertino, CA), Srinath Atluri (Fremont, CA)
Primary Examiner: Wei Zhao
Application Number: 15/917,284
International Classification: H04L 27/20 (20060101); H03M 7/30 (20060101);