Detecting a repetitive pattern in an instruction pipeline of a processor to reduce repeated fetching
11520590 · 2022-12-06
Assignee
Inventors
Cpc classification
G06F9/3861
PHYSICS
G06F9/3808
PHYSICS
International classification
Abstract
Exemplary aspects disclosed herein include detecting a repetitive pattern in an instruction pipeline of a processor to reduce repeated fetching. The processor includes a pattern record circuit configured to receive information in a data stream (e.g., instructions or consumed data) in the instruction pipeline. The pattern record circuit includes a first in, first out (FIFO) table circuit that contains an input record column and plurality of additional adjacent record columns. As new data occurs in the data stream, the data record circuit is configured to sequentially record next incoming data from the data stream into a next input entry of an input record column and then shift previously recorded data into adjacent entries of adjacent record columns. The distance between the input record column and the additional record column that has matching data is the distance in the data stream between a reoccurrence of data in the data stream.
Claims
1. A processor, comprising: an instruction processing circuit configured to fetch data into an instruction pipeline as a data stream; and a pattern record circuit comprising an input record column comprising an input data entry, and one or more additional record columns each comprising a data entry and a frequency indicator; the pattern record circuit configured to: receive a next incoming data from the data stream; and in response to receiving the next incoming data from the data stream: store data in the data entry of the one or more additional record columns into a data entry of a respective available adjacent additional record column among the one or more additional record columns; store data in the input data entry of the input record column to an additional record column among the one or more additional record columns adjacent to the input record column; store the next incoming data in the input data entry in the input record column as data in the input data entry; and in response to the data stored in the data entry of at least one additional record column among the one or more additional record columns matching the data stored in the input data entry, update a frequency indicator of the at least one additional record column among the one or more additional record columns matching the data stored in the input data entry to a repetition frequency state indicating a repetition frequency of the next incoming data in the data stream.
2. The processor of claim 1, wherein each additional record column is assigned to a respective data repetition frequency in the data stream based on its distance from the input record column.
3. The processor of claim 1, wherein the instruction processing circuit is configured to fetch a plurality of instructions into the instruction pipeline as the data stream.
4. The processor of claim 1, wherein the instruction processing circuit is configured to fetch a plurality of source data used for processing one or more instructions, into the instruction pipeline as the data stream.
5. The processor of claim 1, wherein the pattern record circuit comprises a first in, first out (FIFO) table circuit; and the pattern record circuit is configured to, in response to receiving the next incoming data from the data stream: shift the data in the input data entry of the input record column to the additional record column among the one or more additional record columns adjacent to the input record column; and shift the data in the data entry of each of the one or more additional record columns into the data entry of the respective available adjacent additional record column among the one or more additional record columns.
6. The processor of claim 1, wherein: the frequency indicator of each additional record column among the one or more additional record columns comprises a frequency counter; and the pattern record circuit is configured to, in response to the data stored in the data entry of the at least one additional record column among the one or more additional record columns matching the data stored in the input data entry, increment the frequency indicator of the at least one additional record column among the one or more additional record columns matching the data stored in the input data entry.
7. The processor of claim 6, wherein the pattern record circuit is further configured to, in response to the data stored in the data entry of the at least one additional record column among the one or more additional record columns not matching the data stored in the input data entry, reset the frequency indicator of the at least one additional record column among the one or more additional record columns not matching the data stored in the input data entry to a no repetition frequency state to indicate no repetition frequency of the next incoming data in the data stream.
8. The processor of claim 1, further comprising a data record circuit coupled to the pattern record circuit, the data record circuit comprising: a plurality of data record entries each corresponding to a respective additional record column among the one or more additional record columns in the pattern record circuit, each data record entry among the plurality of data record entries comprising a data stream record configured to store a recorded data stream, and a repetition indicator entry configured to store a repetition indicator indicating the repetition frequency of the recorded data stream; and the data record circuit configured to, for each data record entry among the plurality of data record entries: store the next incoming data in the recorded data stream in the data stream record; receive the frequency indicator of the respective additional record column in the pattern record circuit; and update the repetition indicator in the repetition indicator entry based on the frequency indicator.
9. The processor of claim 8, wherein: the pattern record circuit is further configured to, in response to the data stored in the data entry of the at least one additional record column among the one or more additional record columns not matching the data stored in the input data entry, reset the frequency indicator of the at least one additional record column among the one or more additional record columns not matching the data stored in the input data entry to a no repetition frequency state to indicate no repetition frequency of the next incoming data in the data stream; and the data record circuit is further configured to, for each data record entry among the plurality of data record entries, reset the repetition indicator in the repetition indicator entry, in response to the reset of the frequency indicator in the at least one additional record column among the one or more additional record columns not matching the data stored in the input data entry to the no repetition frequency state in the pattern record circuit.
10. The processor of claim 8, wherein the data record circuit is configured to, for each data record entry among the plurality of data record entries, update the repetition indicator in the repetition indicator entry based on the frequency indicator, by being configured to: divide the frequency indicator of the respective additional record column in the pattern record circuit by a distance between the respective additional record column and the input record column.
11. The processor of claim 8, wherein each data record entry among the plurality of data record entries further comprises a data indicator configured to identify data in the data stream.
12. The processor of claim 8, wherein: the instruction processing circuit further comprises an execution circuit configured to: execute a plurality of instructions fetched into the instruction pipeline; and generate a pipeline flush indicator in response to a precise interrupt occurring in response to executing an instruction among the plurality of instructions; and the pattern record circuit is further configured to: in response to the pipeline flush indicator: flush the data entry in the input record column; flush the data entry and the frequency indicator in each of the one or more additional record columns; and flush the repetition indicator in each of the plurality of data record entries.
13. The processor of claim 11, wherein: the instruction processing circuit is configured to fetch a plurality of instructions from a program code into the instruction pipeline as the data stream; and each data record entry among the plurality of data record entries comprises the data indicator comprising an instruction indicator configured to identify an instruction in the program code.
14. The processor of claim 11, further comprising a pattern fetch circuit configured to: receive a data indicator of a second next incoming data in the instruction pipeline; determine if the second next incoming data matches a data indicator of a data record entry among the plurality of data record entries in the data record circuit; and in response to the second next incoming data matching a data indicator of a data record entry among the plurality of data record entries in the data record circuit: determine if the repetition indicator in the repetition indicator entry of the data record entry containing the matching data indicator exceeds a data pattern repetition threshold; and in response to the repetition indicator in the repetition indicator entry of the data record entry containing the matching data indicator exceeding the data pattern repetition threshold: fetch the recorded data stream in the data record entry containing the matching data indicator; and inject the recorded data stream into the instruction pipeline for a number of repetitions based on the repetition indicator.
15. The processor of claim 14, wherein the pattern fetch circuit is further configured to, in response to the repetition indicator in the repetition indicator entry of the data record entry containing the matching data indicator exceeding the data pattern repetition threshold: cause the processor to halt fetching of new incoming data into the instruction pipeline for a duration of the number of repetitions of the recorded data stream.
16. The processor of claim 14, wherein the pattern fetch circuit is configured to: determine if the second next incoming data matches a plurality of data indicators among the plurality of data record entries in the data record circuit; in response to the second next incoming data matching the plurality of data indicators of a plurality of data record entries among the plurality of data record entries in the data record circuit: determine if the repetition indicator in a plurality of repetition indicator entries of the plurality of data record entries containing the matching data indicator exceeds the data pattern repetition threshold; and in response to more than one repetition indicator in more than one data record entry among the plurality of repetition indicator entries of the plurality data record entries containing the matching data indicator exceeding the data pattern repetition threshold: fetch the recorded data stream in the data record entry among the more than one data record entries having a largest repetition indicator; and inject the recorded data stream in the data record entry among the more than one data record entries having the largest repetition indicator, into the instruction pipeline for a number of repetitions based on the repetition indicator.
17. The processor of claim 1, wherein: the instruction processing circuit further comprises an execution circuit configured to: execute a plurality of instructions fetched into the instruction pipeline; and generate a pipeline flush indicator in response to a precise interrupt occurring in response to executing an instruction among the plurality of instructions; and the pattern record circuit is further configured to: in response to the pipeline flush indicator: flush the data entry in the input record column; and flush the data entry and the frequency indicator in each of the one or more additional record columns.
18. A method of detecting a repetitive pattern in an instruction pipeline of a processor, comprising: receiving a next incoming data from a data stream fetched into the instruction pipeline; storing the next incoming data in an input data entry in an input record column in a pattern record circuit; storing data in the input data entry of the input record column in a data entry in an additional record column among one or more additional record columns in the pattern record circuit adjacent to the input record column; storing data in a data entry of the one or more additional record columns into a data entry of a respective available adjacent additional record column among the one or more additional record columns; in response to determining the data stored in the data entry of at least one additional record column among the one or more additional record columns matches the data in the input data entry; and in response to the data stored in the data entry of the at least one additional record column among the one or more additional record columns matching the data stored in the input data entry: updating a frequency indicator of the at least one additional record column among the one or more additional record columns matching the data stored in the input data entry to a repetition frequency state indicating a repetition frequency of the next incoming data in the data stream.
19. The method of claim 18, further comprising: storing a recorded data stream and a repetition indicator entry in a data record circuit configured to store a repetition indicator indicating the repetition frequency of the recorded data stream comprising a plurality of data record entries each corresponding to a respective additional record column among the one or more additional record columns in the pattern record circuit, each data record entry among the plurality of data record entries comprising a data stream record; storing the next incoming data in the recorded data stream in the data stream record for each data record entry among the plurality of data record entries; receiving the frequency indicator of the respective additional record column in the pattern record circuit; and updating the repetition indicator in the repetition indicator entry based on the frequency indicator.
20. The method of claim 19, further comprising: receiving a data indicator of the next incoming data in the instruction pipeline in a pattern fetch circuit; in response to determining the next incoming data matches a data indicator of a data record entry among the plurality of data record entries in the data record circuit; in response to the next incoming data matching a data indicator of a data record entry among the plurality of data record entries in the data record circuit: in response to determining the repetition indicator in the repetition indicator entry of the data record entry containing the matching data indicator exceeds a data pattern repetition threshold; and in response to the repetition indicator in the repetition indicator entry of the data record entry containing the matching data indicator exceeding the data pattern repetition threshold: fetch the recorded data stream in the data record entry containing the matching data indicator; and inject the recorded data stream into the instruction pipeline for a number of repetitions based on the repetition indicator.
21. The method of claim 20, further comprising: in response to the repetition indicator in the repetition indicator entry of the data record entry containing the matching data indicator exceeding the data pattern repetition threshold: causing the processor to halt fetching of new incoming data, from the pattern fetch circuit, into the instruction pipeline for a duration of the number of repetitions of the recorded data stream.
22. The method of claim 20, further comprising: in response to determining the next incoming data matches a plurality of data indicators of a plurality of data record entries among the plurality of data record entries in the data record circuit; in response to the next incoming data matching the plurality of data indicators of a plurality of data record entries among the plurality of data record entries in the data record circuit: in response to determining the repetition indicator in a plurality of repetition indicator entries of the plurality of data record entries containing the matching data indicator exceeds the data pattern repetition threshold; and in response to more than one repetition indicator in more than one data record entry among the plurality of repetition indicator entries of the plurality of data record entries containing the matching data indicator exceeding the data pattern repetition threshold: fetching the recorded data stream in the data record entry among the more than one data record entries having a largest repetition indicator; and injecting the recorded data stream in the data record entry among the more than one data record entries having the largest repetition indicator, into the instruction pipeline for a number of repetitions based on the repetition indicator.
Description
BRIEF DESCRIPTION OF THE DRAWING FIGURES
(1) The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure, and together with the description serve to explain the principles of the disclosure.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
DETAILED DESCRIPTION
(12) Exemplary aspects disclosed herein include detecting a repetitive pattern in an instruction pipeline of a processor to reduce repeated fetching. The processor includes an instruction processing circuit configured to fetch instructions into an instruction pipeline as part of an instruction data stream to be processed and executed as a part of instruction pipelining. Data specified by source operands in the fetched instructions is also fetched into the instruction pipeline and used to execute the instructions in the data stream in the instruction pipeline. The instructions and/or its source data fetched into the instruction pipeline may repeat (i.e. repetitively fetched into instruction pipeline). In exemplary aspects, it is desired to detect these repeated patterns of data (e.g., instructions and/or source data) occurring in the instruction pipeline so that previously recorded patterns of such data can be inserted into the instruction pipeline without having to re-fetch this data.
(13) In this regard, in exemplary aspects, the processor includes a pattern record circuit. The pattern record circuit is configured to receive information in a data stream (e.g., instructions and/or source data) in the instruction pipeline. In one example, the pattern record circuit includes a first in, first out (FIFO) table circuit. The pattern record circuit contains an input record column and plurality of additional adjacent record columns. The number of record columns defines the width of the pattern record circuit. As new data occurs in the data stream, a pattern record circuit is configured to sequentially record next incoming data from the data stream into a next input entry of an input record column of the pattern record circuit and then store (e.g., shift) previously recorded data into adjacent entries of adjacent record columns of the pattern record circuit. Thus, if data repeats in the data stream in a frequency equal to or less than the width of the pattern record circuit, the incoming data recorded in the input record column in the pattern record circuit will match a previous occurrence of the data previously shifted into an additional record column. The distance between the input record column and the additional record column, that has matching data, is the distance in the data stream between a reoccurrence (i.e., repeat) of data in the data stream. The additional record columns also include respective frequency indicators that are updated by the pattern record circuit for detected matches between data in one or more additional record columns and new input data recorded in the input column.
(14) In this manner, the frequency indicators indicating an occurrence of a repetitive data pattern can be consulted by a pattern fetch circuit in the processor to determine potential data patterns occurring in a data stream in the instruction pipeline. Detecting a repetitive pattern in the instruction pipeline of the processor can be used to reduce repeated re-fetching. For example, the pattern fetch circuit can be configured to receive an indication of new data fetched into the instruction pipeline. The pattern fetch circuit can be configured to consult the frequency indicators previously recorded for the new fetched data to determine the likelihood the new fetched data is the start of a previously recorded repetitive data pattern. If the new fetched data is determined to be the start of a previously recorded repetitive data pattern, the pattern fetch circuit is configured to insert the data from the previously recorded repetitive data pattern into the instruction pipeline such that the fetching of new data can be temporarily disabled.
(15) In this regard,
(16) With continuing reference to
(17) A control flow prediction circuit 124 (e.g., a control flow prediction circuit) is also provided in the instruction processing circuit 104 in the processor 102 of
(18) The issue circuit 132 is further configured to store decoded instructions 110D in reservation entries in the instruction pipeline I.sub.0-I.sub.N until all their respective source register operands are available for consumption in execution. The issue circuit 132 issues decoded instructions 110D ready to be executed by the execution circuit 122. A commit circuit 134 is also provided in the instruction processing circuit 104 to commit or write-back produced values generated by execution of decoded instructions 110D to memory, such as the PRF 128, cache memory, or system memory.
(19) Repetitive patterns can occur in the data stream 114 in the instruction pipelines I.sub.0-I.sub.N of the instruction processing circuit 104 in
(20) In this regard, to recognize repetition of data in the data stream 114 (e.g., the instruction stream 1141 and/or the source data stream 114S) in the instruction pipeline I.sub.0-I.sub.N of the processor 102, to potentially avoid re-fetching of repetitive data, the pattern record circuit 106 is provided in the processor 102 in
(21)
(22) With continuing reference to
(23) To track the occurrence of data repetition in the incoming data 112 as a pattern in the data stream 114, the FIFO table circuit 200 also includes respective frequency indicators 138(1)-138(4) in each additional record column S.sub.1-S.sub.K in the form of a frequency counter 140(1)-140(4) in this example. The additional record columns S.sub.1-S.sub.K of the FIFO table circuit 200 are configured to compare the incoming data 112 from the data stream 114 recorded in the input data entry 136(0) in the input record column S.sub.0 to each of the previously recorded and shifted incoming data 112 recorded in the additional data entries 136(1)-136(4) in the respective additional data columns S.sub.1-S.sub.K. The frequency indicators 138(1)-138(4) start out as NULL values until incoming data 112 is shifted into the additional data entry 136(1)-136(4) of its respective additional record column S.sub.1-S.sub.4. In response to the data in an additional data entry 136(1)-136(4) of a respective additional data column S.sub.1-S.sub.K matching the incoming data 112 recorded in the input data entry 136(0) of the input record column S.sub.0, the FIFO table circuit 200 is configured to update (e.g., increment) the respective frequency indicators 138(1)-138(4) in the respective additional data columns S.sub.1-S.sub.4 to indicate a repetition and the repetition frequency of the incoming data 112 in the data stream 114. If the additional data entry 136(1)-136(4) of a respective additional data column S.sub.1-S.sub.K does not match the incoming data 112 recorded in the input data entry 136(0) of the input record column S.sub.0, the respective frequency indicators 138(1)-138(4) in the respective additional data column S.sub.1-S.sub.4 are reset to zero (0).
(24) Thus, for example as shown in
(25) In this example, the data pattern ‘A’ ‘B’ ‘C’ ‘D’ has repeated once so far with a repetition frequency of every four (4) elements of incoming data 112, so the frequency counter 140(4) is equal to ‘4’. Thus, at time t.sub.11, frequency counter 140(4) is of value ‘7’, because the shifted-in incoming data 112 in additional data entry 136(4) has been detected to match the incoming data 112 recorded in the input data entry 136(0) seven (7) times. The data pattern of distance ‘4’ in this example can be determined, because the frequency counter 140(4) in the fourth additional record column S.sub.4 minus the number of the additional record column S.sub.4 is greater than four (4). The value of the frequency counter 140(1)-140(4) minus the column number of its associated additional record column S.sub.1-S.sub.4, divided by the column number of its associated additional record column S.sub.1-S.sub.4+1, rounded down to the positive whole integer, and incremented by one, is the number of times the data pattern of a width equal to the number of the associated additional record column S.sub.1-S.sub.4 has repeated. Thus, in this example, at time t.sub.8, the frequency counter 140(4) of value ‘4’ means that the data pattern ‘A″B″C″D’ has repeated once so far, because ‘4’-‘4’ (i.e., value of frequency counter 140(4) in additional record column S.sub.4 at time t.sub.8 minus the column number of the associated additional record column S.sub.4 of ‘4’) is equal to ‘0’. Zero ‘0’ is then divided by the column number of the associated additional record column S.sub.4 of ‘4’ to arrive at ‘0’, which is then rounded down to the next positive whole integer of ‘0’. Then, ‘0’ added with ‘1’ equals ‘1’ or one time of the data pattern ‘A’ ‘B’ ‘C’ ‘D’ repeated. Thus, in this example, at time t.sub.11, the frequency counter 140(4) of value ‘7’ means that the data pattern ‘A’ ‘B’ ‘C’ ‘D’ has repeated once so far, because ‘7’-‘4’ (i.e., value of frequency counter 140(4) in additional record column S.sub.4 at time t.sub.11 minus the column number of the associated additional record column S.sub.4 of ‘4’), is equal to three (3). Three (3) is then divided by the column number of the associated additional record column S.sub.4 of ‘4’ to arrive at 0.75, which is then rounded down to the next positive whole integer of ‘0’. Then, ‘0’ added with ‘1’ equals ‘1’, representing a repeat of the data pattern ‘A’ ‘B’ ‘C’ ‘D’ being completed only one time thus far. If after time t.sub.11, the next incoming data 112 is ‘D,’ the frequency counter 140(4) would be incremented to a value of ‘8’. This value of ‘8’ is subtracted by the column number of the associated additional record column S.sub.4 of ‘4’, which equals to ‘4’, and is then divided by the column number of the associated additional record column S.sub.4 of ‘4’, and rounded down to the next positive whole integer, which would be equal to ‘1’+‘1’=‘2’, signifying that the data pattern ‘A’ ‘B’ ‘C’ ‘D’ has repeated twice.
(26)
(27) However, at time t.sub.8, the incoming data 112 of ‘A’ in input data entry 136(0) matches the previously recorded incoming data of ‘A’ in additional data entry 136(3) in additional record column S.sub.3 such that the frequency counter 140(3) is incremented to a value of ‘1’. However, a three element repetitive data pattern has not been established unless the frequency counter 140(3) reaches a value of ‘3’ as discussed above. The frequency counter 140(3) does not reach a value of ‘3’ in the example in
(28) In the exemplary FIFO table circuit 200 in
(29) Next, assume the next incoming data 112 after incoming data ‘A’ that occurs in the data stream 114 is data ‘B’. In this regard, as shown as time t.sub.2, incoming data ‘B’ is written into the input data entry 136(0) in the input record column S.sub.0. Before writing the incoming data ‘B’ in the input data entry 136(0) in the input record column S.sub.0, the FIFO table circuit 200 shifts previously recorded incoming data ‘A’ from the input data entry 136(0) in the input record column S.sub.0 by one (1) column to the additional data entry 136(1) in the additional record column S.sub.1. This continues to occur for the next incoming data ‘C’ at time t.sub.3, and so on. At time t.sub.5, the first incoming data ‘A’ at time t.sub.1 has been shifted all the way to the last additional record column S.sub.K as shown in
(30) Now that the pattern record circuit 106 and its example in the form of a FIFO table circuit 200 has been described by example in
(31) With reference to
(32) The data record circuit 142 is configured to store a matching data indicator entry 147(1)-147(K), a repetition indicator entry 148(1)-148(K), and a data pattern entry 150(1)-150(K), based on the recorded data stream 146. The matching data indicator entry 147(1)-147(K) is a program counter (PC) that is assigned to each data record entry 144(1)-144(K). The PC is configured to allow the pattern fetch circuit 108 to identify an instruction in the program code to be potentially re-fetched from the data record circuit 142. The repetition indicator entry 148(1)-148(K) is configured to determine a number of repetitions of the pattern stored in the data record entry 144(1)-144(K), from the frequency counter 140(1)-140(4) in the additional record columns S.sub.1-S.sub.K. As the frequency counter 140(1)-140(4) increments, the data record circuit 142 is subsequently updated in order to indicate the number of times the pattern has repeated. The data pattern entry 150(1)-150(K) is configured to receive the recorded data stream 146 that has been determined by the frequency counter 140(1)-140(4) to have one or more repetitions resulting in a data pattern. Accordingly, the data record entries 144(1)-144(K) in the data record circuit 142 are configured to identify data in the recorded data stream 146 via the PC in the matching data indicator entry 147(1)-147(K), identify the pattern associated with the PC in the data pattern entry 150(1)-150(K), and the number of times the pattern in the data pattern entry 150(1)-150(K) should be repeated based on the value stored in the repetition indicator entry 148(1)-148(K). The data record circuit 142 is further configured to fetch a plurality of instructions 110 from a program counter of the matching data indicator entry 147(1)-147(K) into the instruction pipeline I.sub.0-I.sub.N as the data stream 114. The program counter of the matching data indicator entry 147(1)-147(K) is configured to be consulted by the pattern fetch circuit 108 to check for a previously stored pattern that is available to inject into the instruction pipeline I.sub.0-I.sub.N in order to avoid fetching new instructions 110. Accordingly, as the data in the additional record columns S.sub.1-S.sub.K in the pattern record circuit 106 are updated, the data record entries 144(1)-144(K) in the data record circuit 142 are configured to reflect the incrementing of the frequency counters 140(1)-140(4) and the associated pattern of data from the data stream 114. Accordingly, there can be instances where the frequency counters 140(1)-140(4) have reset due to a halt in repetition and the frequency indicator 138(1)-138(4) being reset to a no repetition frequency state. The no repetition frequency state is configured to indicate that there is no occurrence of a repetition frequency of the incoming data 112 in the data stream 114, associated with the frequency counters 140(1)-140(4) in the additional record columns S.sub.1-S.sub.K. The repetition indicator entry 148(1)-148(K), the data pattern entry 150(1)-150(K), and the matching data indicator entry 147(1)-147(K) in the data record circuit 142, are configured to reset for the data record entries 144(1)-144(4) corresponding to the additional record columns S.sub.1-S.sub.K.
(33) The data record entries 144(1)-144(4) are configured to be referenced by the pattern fetch circuit 108 in the processor 102 as shown in
(34)
(35) In this regard, the pattern record circuit 106 is configured to receive a next incoming data 112 from the data stream 114 that is fetched into the instruction pipeline I.sub.0-I.sub.N (block 302 in
(36)
(37)
(38)
(39) In one example, the pattern fetch circuit 108 can cause the instruction fetch circuit 116 to stop prefetching additional instructions 110 for the duration of the pattern repetition. Accordingly, if the repetition indicator in the repetition indicator entry 148(1)-148(K) of the data record entry 144(1)-144(K) associated with the matching data indicator entry 147(1)-147(K) exceeds the data pattern repetition threshold, the processor 102 can be instructed to stop fetching the next incoming data 112. As such, the processor 102 will halt fetching next incoming data 112 from the pattern fetch circuit 108 into the instruction pipeline I.sub.0-I.sub.N for the duration of the number of repetitions of the recorded data stream 146.
(40) In another example, optionally, the pattern fetch circuit 108 can be configured to select a recorded data stream 146 in the data record circuit 142, to inject into the instruction pipeline I.sub.0-I.sub.N based on the strength of the repetition indicator entry 148(1)-148(K). In the instance where the repetition indicator is strong for multiple data record entries 144(1)-144(K) in the data record circuit 142, the pattern fetch circuit 108 is configured to determine if the next incoming data 112 from the data stream 114 matches a plurality of data indicators of a in the data record circuit 142. If the next incoming data 112 in the data stream 114 matches the plurality of data indicators of a plurality of data record entries 144(1)-144(K), the pattern fetch circuit 108 can further include determining if the repetition indicator in the plurality of repetition indicator entries 148(1)-148(K) of the data record entries 144(1)-144(K) containing the matching data indicator entries 147(1)-147(K) exceeds a data pattern repetition threshold. If the data pattern threshold is exceeded, the process of the pattern record circuit 106 can include fetching the recorded data stream 146 in the data record entry 144(1)-144(K) having the largest repetition indicator entry 148(1)-148(K). Additionally, the pattern record circuit 106 is configured to inject the recorded data stream 146 in the data record entry 144(1)-144(K) of the largest repetition indicator entry 148(1)-148(K) into the instruction pipeline I.sub.0-I.sub.N. If the data record entry 144(1)-144(K) of the largest repetition indicator entry 148(1)-148(K) has multiple repetitions as indicated by the repetition indicator in the repetition indicator entry 148(1)-148(K), the pattern is repeated for the number of repetitions of the value of the repetition indicator entry 148(1)-148(K).
(41)
(42) Accordingly, to flush out data stored in the pattern record circuit 106 and data record circuit 142 as invalid to then start over with recording incoming data 112 to detect repetitive patterns, the pipeline flush indicator 702 can be sent to the data record circuit 142 and/or the pattern record circuit 106. Accordingly, the pattern record circuit 106 in response to the pipeline flush indicator 702 is configured to flush the input data entry 136(0) in the input record column S.sub.0. Additionally, the pattern record circuit 106 is configured to flush the input data entries 136(1)-136(K) in the additional record columns S.sub.1-S.sub.K and the frequency indicator 138(1)-138(K) in each of the one or more additional record columns S.sub.1-S.sub.K, in response to the pipeline flush indicator 702. The pipeline flush indicator 702 is configured to flush the data record entries 144(1)-144(K) in the data record circuit 142. Accordingly, the repetition indicator entry 148(1)-148(K), the data pattern entry 150(1)-150(K), and the matching data indicator entry 147(1)-147(K) are each reset in response to the pipeline flush indicator 702. Upon flushing the pattern record circuit 106 and/or the data record circuit 142, the pattern fetch circuit 108 can continue the fetching operation of providing instructions 110 into the one or more instruction pipelines I.sub.0-I.sub.N as a data stream 114. The pattern record circuit 106 can then restart the process of storing data in the input record column S.sub.0 and the one or more additional record columns S.sub.1-S.sub.K. Similarly, the data record circuit 142 restarts the process of storing data in the repetition indicator entry 148(1)-148(K), the data pattern entry 150(1)-150(K), and the matching data indicator entry 147(1)-147(K).
(43)
(44)
(45) The processor-based system 900 may be a circuit or circuits included in an electronic board card, such as a printed circuit board (PCB), a server, a personal computer, a desktop computer, a laptop computer, a personal digital assistant (PDA), a computing pad, a mobile device, or any other device, and may represent, for example, a server, or a user's computer. In this example, the processor-based system 900 includes the processor 902. The processor 902 represents one or more general-purpose processing circuits, such as a microprocessor, central processing unit, or the like. More particularly, the processor 902 may be an EDGE instruction set microprocessor, or other processor implementing an instruction set that supports explicit consumer naming for communicating produced values resulting from execution of producer instructions. The processor 902 is configured to execute processing logic in instructions for performing the operations and steps discussed herein. In this example, the processor 902 includes an instruction cache 908 for temporary, fast access memory storage of instructions accessible by the instruction processing circuit 904. Fetched or pre-fetched instructions from a memory, such as from a system memory 910 over a system bus 912, are stored in the instruction cache 908. The instruction processing circuit 904 is configured to process instructions fetched into the instruction cache 908 and process the instructions for execution.
(46) The processor 902 and the system memory 910 are coupled to the system bus 912 and can intercouple peripheral devices included in the processor-based system 900. As is well known, the processor 902 communicates with these other devices by exchanging address, control, and data information over the system bus 912. For example, the processor 902 can communicate bus transaction requests to a memory controller 914 in the system memory 910 as an example of a slave device. Although not illustrated in
(47) Other devices can be connected to the system bus 912. As illustrated in
(48) The processor-based system 900 in
(49) While the computer-readable medium 932 is shown in an exemplary embodiment to be a single medium, the term “computer-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that stores the one or more sets of instructions. The term “computer-readable medium” shall also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the processing device and that causes the processing device to perform any one or more of the methodologies of the embodiments disclosed herein. The term “computer-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical medium, and magnetic medium.
(50) The embodiments disclosed herein include various steps. The steps of the embodiments disclosed herein may be formed by hardware components or may be embodied in machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor programmed with the instructions to perform the steps. Alternatively, the steps may be performed by a combination of hardware and software.
(51) The embodiments disclosed herein may be provided as a computer program product, or software, that may include a machine-readable medium (or computer-readable medium) having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the embodiments disclosed herein. A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes: a machine-readable storage medium (e.g., ROM, random access memory (“RAM”), a magnetic disk storage medium, an optical storage medium, flash memory devices, etc.); and the like.
(52) Unless specifically stated otherwise and as apparent from the previous discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing,” “computing,” “determining,” “displaying,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data and memories represented as physical (electronic) quantities within the computer system's registers into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission, or display devices.
(53) The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatuses to perform the required method steps. The required structure for a variety of these systems will appear from the description above. In addition, the embodiments described herein are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the embodiments as described herein.
(54) Those of skill in the art will further appreciate that the various illustrative logical blocks, modules, circuits, and algorithms described in connection with the embodiments disclosed herein may be implemented as electronic hardware, instructions stored in memory or in another computer-readable medium and executed by a processor or other processing device, or combinations of both. The components of the distributed antenna systems described herein may be employed in any circuit, hardware component, integrated circuit (IC), or IC chip, as examples. Memory disclosed herein may be any type and size of memory and may be configured to store any type of information desired. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. How such functionality is implemented depends on the particular application, design choices, and/or design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present embodiments.
(55) The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), or other programmable logic device, a discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. Furthermore, a controller may be a processor. A processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
(56) The embodiments disclosed herein may be embodied in hardware and in instructions that are stored in hardware, and may reside, for example, in RAM, flash memory, ROM, Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer-readable medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a remote station. In the alternative, the processor and the storage medium may reside as discrete components in a remote station, base station, or server.
(57) It is also noted that the operational steps described in any of the exemplary embodiments herein are described to provide examples and discussion. The operations described may be performed in numerous different sequences other than the illustrated sequences. Furthermore, operations described in a single operational step may actually be performed in a number of different steps. Additionally, one or more operational steps discussed in the exemplary embodiments may be combined. Those of skill in the art will also understand that information and signals may be represented using any of a variety of technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips, that may be references throughout the above description, may be represented by voltages, currents, electromagnetic waves, magnetic fields, or particles, optical fields or particles, or any combination thereof.
(58) Unless otherwise expressly stated, it is in no way intended that any method set forth herein be construed as requiring that its steps be performed in a specific order. Accordingly, where a method claim does not actually recite an order to be followed by its steps, or it is not otherwise specifically stated in the claims or descriptions that the steps are to be limited to a specific order, it is in no way intended that any particular order be inferred.
(59) It will be apparent to those skilled in the art that various modifications and variations can be made without departing from the spirit or scope of the invention. Since modifications, combinations, sub-combinations and variations of the disclosed embodiments incorporating the spirit and substance of the invention may occur to persons skilled in the art, the invention should be construed to include everything within the scope of the appended claims and their equivalents.