# Patent

## Title
Reorder-buffer-based static checkpointing for rename table rebuilding

## Abstract

Out-of-order CPUs, devices and methods diminish the time penalty from stalling the pipe to rebuild a rename table, such as due to a misprediction. A microprocessor can include a pipe that has a decoder, a dispatcher, and at least one execution unit. A rename table stores rename data, and a check-point table (“CPT”) stores rename data received from the dispatcher. A Re-Order Buffer (“ROB”) stores ROB data, and has a static mapping relationship with the CPT. If the rename table is flushed, such as due to a misprediction, the rename table is rebuilt at least in part by concurrent copying of rename data stored in the CPT, in coordination with walking the ROB.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application may be found to be related to U.S. patent application Ser. No. 13/831,488 filed Mar. 14, 2013, by the same inventors, filed by the same assignee on the same day as the instant application.
BACKGROUND
This disclosure relates to semiconductor devices, and more particularly to microprocessors that control the operation of electronic devices, plus electronic devices that use such microprocessors.
A microprocessor, also known as a Central Processing Unit (CPU), works by executing instructions. Some instructions result in branching points, where one path of execution can be chosen over another. A microprocessor can have increased speed if it makes a correct speculative prediction about which path will be chosen, and executes in advance instructions along that path. Such CPUs are known as out-of-order CPUs. The speed benefit diminishes, however, when there was a misprediction, and recovery is required.
A challenge with out-of-order CPUs is hazards such as Write After Write (WAW) and Write-After-Read (WAR). These hazards are avoided by register renaming, which is accomplished with the help of a rename table that keeps track of the renamed source and destination registers.
A remaining problem, however, is that, anytime there is a mispredicted branch instruction, the rename table has to be entirely flushed. Flushing is a problem because, since the branches can be executed out-of-order, there could be instructions waiting to retire which are older than the mispredicted branch instruction. The rename information for these older instructions has to be rebuilt into the rename table.
The problem, then, manifests itself as delay. During the rebuild process the rename logic has to stall the front end of the pipe from sending new instructions for renaming. This stalling results in delay, which amounts to the penalty for branch misprediction. The penalty depends not only on the rebuild latency, but also on the redirection latency and the depth of the front end of the pipe.
For reducing the stalling, check-pointing schemes have been proposed that are prior to the dispatch stage, as part of the rename pipeline. In those schemes, traditionally each branch instruction starts a new check-point window. This approach is area expensive, since it requires as many check-points as there are in-flight branches allowed in the machine.
BRIEF SUMMARY
The present description gives instances of microprocessors, devices that integrate microprocessors and methods that overcome problems in the prior art.
In one embodiment, a microprocessor includes a pipe that has a decoder, a dispatcher, and at least one execution unit. A rename table stores rename data, and a check-point table (“CPT”) stores rename data received from the dispatcher. A Re-Order Buffer (“ROB”) stores ROB data, and has a static mapping relationship with the CPT. If the rename table is flushed, such as due to a misprediction, the rename table is rebuilt at least in part by concurrent copying of rename data stored in the CPT, in coordination with walking the ROB.
An advantage over the prior art is that the time penalty from stalling the pipe to rebuild a rename table is diminished. Another advantage arises from the fact that the CPT is after the dispatcher, which drastically reduces the number of check-points required for successfully rebuilding the rename table. The invention results in embodiments that are more efficient in terms of area, power and timing, than pre-dispatch check-point schemes.
These and other features and advantages of this description will become more readily apparent from the following Detailed Description, which proceeds with reference to the drawings, in which:



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a diagram of components of a microprocessor made according to example embodiments.
FIGS. 2A, 2B, 2C are diagrams that show different example embodiments of the components in FIG. 1.
FIG. 3A is a block diagram that show a microprocessor made according to example embodiments, as it operates normally.
FIG. 3B is a diagram of the microprocessor of FIG. 3A that shows a rename table being flushed after operating normally, the flushing being a result of detecting a misprediction in which instructions to execute.
FIG. 3C is a diagram of the microprocessor of FIG. 3B that shows a rename table being rebuilt after being flushed.
FIG. 4 is a timing diagram, showing relative timing pulses for rebuilding a rename table, such as the rename table of FIG. 3C, according to embodiments.
FIG. 5 is a diagram of the components of FIG. 3C, for a first sample scenario where no benefit results from the invention.
FIG. 6 is a diagram of the components of FIG. 3C, for a second sample scenario where benefit results from the invention.
FIG. 7 is a diagram of the components of FIG. 3C, for a third sample scenario where benefit results from the invention.
FIG. 8 is a diagram of the components of FIG. 3C, for a fourth sample scenario where benefit results from the invention.
FIG. 9 is a diagram of the components of FIG. 3C, for a fifth sample scenario, where a maximum benefit results from the invention.
FIG. 10 is a block diagram for illustrating a system that includes a microprocessor according to example embodiments.
FIG. 11 is a flowchart for illustrating methods according to example embodiments.



DETAILED DESCRIPTION
As has been mentioned, the present description is about microprocessors, devices and methods. Embodiments are now described in more detail.
FIG. 1 is a diagram of components of a microprocessor 110 made according to example embodiments. Microprocessor 110 includes a decoder 120 for receiving instructions, and for decoding these instructions into micro-operations, which are also known as micro-ops.
Microprocessor 110 also includes one or more execution units for executing the micro-ops. In FIG. 1, three execution units are shown, namely Execution Unit-A 151, Execution Unit-B 152 and Execution Unit-C 153, although that number of units is shown by way of example and not of limitation.
Decoder 120 and Units 151, 152, 153 are part of the so-called pipe, which includes additional components. One such component is a dispatcher 140, provided for ultimately dispatching the micro-ops to the execution units. In the example of FIG. 1, dispatching is first to one of three schedulers, namely Scheduler-A 141, Scheduler-B 142, and Scheduler-C 143. The schedulers transmit the micro-ops to execution units 151, 152, 153. These execution units read the sources from a Physical Register File (PRF), and then execute the micro-ops. The person skilled in the art will appreciate that the above are only one sample architecture for this part of the pipe, and different architectures are also possible.
Microprocessor 110 additionally includes a renamer 130, which receives the micro-ops from decoder 120. Renamer 130 generates rename data according to the micro-ops.
Microprocessor 110 moreover includes a rename table 136. Rename table 136 stores the rename data, which it receives from renamer 130 according to arrow 135.
Microprocessor 110 also includes a Re-Order Buffer (“ROB”) 160. ROB 160 has ROB entries, which are not shown individually in FIG. 1. As will be seen later in more detail, ROB 160 includes a Retire Pointer and a Flush Pointer, each of which points to a variable one of the ROB entries. ROB 160 may be circular or not. The ROB entries are for storing ROB data 162, which are generated from the micro-ops. In some embodiments, each ROB entry stores one micro-op, although more micro-ops could be stored in a single ROB entry. ROB data 162 includes rebuild rename data 182, which preferably corresponds to rename data stored in rename table 136. In the embodiment if FIG. 1, ROB data 162 is received from dispatcher 140.
Microprocessor 110 further includes at least one check-point table (“CPT”) 170. More possible implementations for CPTs are described later in this document. CPT 170 is as wide as rename table 136. CPT 170 has CPT entries, which are not shown individually in FIG. 1. The CPT entries are as many as those of rename table 136, which means that the CPT is as deep as rename table 136. The number of the CPT entries defines the CPT depth. The CPT entries are for storing a check-pointed version 180 of the rename data stored in rename table 136. The check-pointed version 180 of the rename data can be any version that can yield the rename data, or it can be exactly the rename data, in which case it is called check-pointed rename data 180 because it is stored in check-point table 170. In the embodiment if FIG. 1, the check-pointed version 180 of the rename data is received from dispatcher 140.
As will be described in more detail below, the ROB checkpoint window maps into the CPT according to a static relationship 188, where the ROB checkpoint window is fixed with respect to the ROB entries. Relationship 188 is therefore fixed, as described later in this document. As such, when a ROB entry gets allocated with a new micro-op, a selected CPT entry also becomes updated with the destination rename information for that micro-op, if that micro-op has a destination.
As described previously, rename table 136 may be flushed, which more exactly means that the rename data stored in the rename table may be flushed. In the embodiment of FIG. 1, microprocessor 110 also includes branch execution logic 157. Logic 157 can detect a misprediction, shown by flag 190, in executing the micro-ops as per the above. Rename table 136 can be flushed responsive to detecting misprediction 190.
If rename table 136 is flushed, then it can be rebuilt. For purposes of rebuilding, microprocessor 110 may also include a retire table 138, which can store retire check-point data. The retire check-point data can be copied to rename table 136 according to an arrow 139, as the initial part of the rebuilding.
Further for purposes of rebuilding, the flushed rename data can be restored to rename table 136 from two sources of data, in addition to the initial copying from the retire table. First, the check-pointed version 180 of the rename data can be copied as a mass importation from CPT 170 to rename table 136 according to an arrow 175. The mass importation is implemented by concurrent copying, if permitted by an aspect of static relationship 188, as explained later in this document. Second, at least a portion of rebuild rename data 182 within ROB data 162 can be copied from ROB 160 to rename table 136 according to an arrow 165, which is a process otherwise known as “walking the ROB”.
As mentioned above, there are many possible implementations for CPT 170. It will be appreciated that such implementations can be made with a view to favor rebuilding via the concurrent copying of arrow 175, over the copying of arrow 165, so as to save processor time. Examples are now described.
FIG. 2A is a diagram of an example where only a portion of the ROB maps into the CPT. More particularly, ROB 260 has 96 ROB entries, named from 0 to 95. ROB 260 could have had any number of ROB entries. In addition, only one CPT 270 is provided.
Moreover, a ROB checkpoint window is defined in ROB 260, which can be a group of any number of entries. In this case, the ROB checkpoint window is group of ROB entries 0-47. Regardless of which group it is, the ROB checkpoint window is fixed with respect to the 96 ROB entries. As such, static relationship 288-1 is a way of how the ROB, and more particularly the ROB checkpoint window, maps into CPT 270. The mapping is sometimes called an association. In this example, ROB entries 48 to 95 of ROB 260 do not map into CPT 270.
For purposes of rebuilding, the option exists that a specific element will be restored to the rename table from either the ROB entry it is stored in, or the associated CPT that it is stored in. If copying from the CPT is permitted, it will be faster.
The applicable static relationship, here 288-1, governs in part whether and to what extent rebuilding will be from CPT 270, in addition to from ROB 260. In fact, copying from CPT 270 takes place if otherwise permitted by an aspect of relationship 288-1. Examples of when that is permitted are described later in this document.
Regardless, the embodiment of FIG. 2A is not the preferred one, as not all the ROB entries are part of a ROB checkpoint window that maps into a CPT. Accordingly, there will be more scenarios where ROB 260 will need to be walked, as will be appreciated later in this document where scenarios are presented in more detail.
In some embodiments, an additional CPT is provided, i.e. a CPT in addition to CPT 170 that was described in FIG. 1, or to CPT 270 that was described in FIG. 2A. Unlike with FIG. 2A, all the ROB entries map into the previously-described CPT, or the additional CPT. Two examples are now described, with reference to FIGS. 2B and 2C.
FIG. 2B shows a ROB 261 that has 96 ROB entries, similarly with ROB 260. ROB 261 is divided into two static ROB checkpoint windows, one with ROB entries 0-47 and the other with ROB entries 48-95. In addition, there are two CPTs, namely CPT-0 271 and CPT-1 272. CPTs 271, 272 each have the same depth, equal to the depth of the rename table. In the example of FIG. 2B, there is a static relationship 288-2, which is as shown as associations between ROB checkpoint window 0 and CPT 271, and also between ROB checkpoint window 1 and CPT 272.
FIG. 2C shows a ROB 263 that has 96 ROB entries. In addition, there are four CPTs, namely CPT-0 273, CPT-1 274, CPT-2 275 and CPT-3 276, each corresponding to a ROB checkpoint window of ROB 263. Each of the four ROB checkpoint windows has the same depth, although that is not required for practicing the invention. The static relationship 288-3 is for a group of fixed one-to-one associations, as in relationship 288-2.
In conjunction with the below, it will be appreciated that, in most cases, the embodiment of FIG. 2C, by having four CPTs as opposed to merely two, will reduce the number of cycles needed to rebuild the rename table. This design consideration should be weighed against the fact that checkpoint tables are expensive, in terms of both area and power.
FIGS. 3A, 3B, 3C are now used in succession, to describe a sample sequence of events for a sample microprocessor 310 made according to embodiments. Microprocessor 310 includes a decoder 320, a renamer 330, a rename table 336, a retire table 338, a dispatcher 340, schedulers 341, 342, 343, a PRF 350, execution units 351, 352, 353, branch execution logic 357, and a ROB 360, which all can be as described above with reference to similar components in FIG. 1. ROB 360 stores ROB data 362 similar to ROB data 162. ROB data 362 includes rebuild rename data 382, similarly to rebuild rename data 182.
In addition, microprocessor 310 includes two CPTs, namely CPT-0 370 and CPT-1 371 that have a static relationship with ROB 360. CPTs 370 and 371 could have the same static relationship as relationship 288-2 of FIG. 2B. CPTs 370 and 371 store respectively check-pointed rename data 380, 381 according to the static relationship.
In FIG. 3A, microprocessor 310 operates normally. Instructions are received in decoder 320, pass through the pipe, and are executed at execution units 351, 352, 353.
In FIG. 3B a misprediction is detected, as indicated by flag 390. As a result, rename table 336 is flushed, indicated by comment 392.
In FIG. 3C, rename table 336 is being rebuilt, as indicated by comment 393. As a result, there is a stall in the front end of the pipe, indicated by comment 391.
Rebuilding takes place as follows: First, a retire checkpoint is copied from retire table 338 according to arrow 339. Then, rebuilding is by data that generally come from two different sources. Check-pointed rename data 380, 381 are copied according to arrows 375, 376 respectively, if permitted by an aspect of the applicable static relationship. Plus, rebuild rename data 382 is copied by walking ROB 360 according to arrow 365. In some particular cases, however, one of these two sources might not contribute, as will be seen in sample scenarios below.
Microprocessor 310 also typically includes a clock, which is not shown. The clock outputs pulses that define clock cycles. The clock cycles are a good way for measuring the advantages of the invention. Examples are now described.
FIG. 4 is a timing diagram, showing relative timing pulses for rebuilding a rename table, such as in FIG. 3C. Clock cycles 412 include a group 415 of N cycles, here shown as a single pulse. The number N is described later in more detail.
FIG. 4 illustrates an incidence of detecting a misprediction, and the subsequent penalties. A pulse 492 corresponds to flushing rename table 336 per comment 392. A prolonged stalling pulse 491 corresponds to the time that the pipe is stalled, per comment 391; the duration of pulse 491 is related to the time penalty for the misprediction, and the subsequent degradation in performance of the microprocessor. The penalty is larger if N is large, both in pulse 491 and also in group of cycles 415. Pulses 493A and 493B indicate the beginning and the ending of the rebuilding, corresponding to comment 393.
In general, renaming cycles 436 include a) a cycle 439 for copying the retire checkpoint as per operation 339, b) a cycle 475 for concurrent copying from a CPT according to arrow 375, c) a cycle 476 for another concurrent copying according to arrow 376, and d) a group 465 of as many as N cycles for walking the ROB as per arrow 365. Similarly to group of cycles 415, cycle 465 is shown as a single one, while in fact both take the value of N. Icons of arrows 339, 375, 376 and 365 are repeated in FIG. 4, at places that will enhance the mental association for the reader.
In particular, however, some of these renaming cycles 436 are not included every time. The question of which ones are included, and which ones not, depends on the scenario that is defined at the moment a misprediction is detected, and the rename table is therefore flushed. Specific operational scenarios are presented now in this document, and are referenced to FIG. 4.
First, for purposes of understanding the scenarios, it should be recognized that a ROB rebuild window becomes defined when the rename table is flushed. The ROB rebuild window has ROB entries starting from the Retire Pointer and ending one prior to the Flush Pointer. It is the ROB entries within the ROB rebuild window that define which data needs to be restored to the rename table, whether by concurrent copying from one or more of the CPTs, or by walking the ROB. In either case, the portion of the rebuild rename data being copied from the ROB to the rename table is within the ROB rebuild window.
The scenarios are different in that, each time the rename table is flushed, the ROB rebuild window will generally be encompassing a different set of ROB entries. As such, the different scenarios explore how the ROB rebuild window has different sizes relative to the depth of the previously mentioned ROB checkpoint window. It is also this aspect in the following sample scenarios that will determine whether or not a CPT table is permitted to be concurrently copied to the rename table, or instead the same contents will be copied by walking the ROB.
Examples of various such scenarios are now explored. For the purpose of these scenarios it is assumed that ROB 360 and CPTs 370, 371 are used, similarly with what is shown in FIG. 2B. In addition, a static relationship similar to static relationship 288-2 also applies, indicated by the brackets shown for the ROB checkpoint (CP) windows and CPTs 370 and 371.
FIG. 5 is a diagram of components of FIG. 3C, for a first sample scenario where no benefit results from the invention. CPT-0 370 stores check-pointed rename data 580, and CPT-1 371 stores check-pointed rename data 581. A ROB rebuild window 563, designated by an arrow, starts from ROB entry 15, pointed to by the Retire Pointer, and ends at ROB entry 37, which is one less than ROB entry 38 that is pointed to by the Flush Pointer. ROB data 562 within ROB rebuild window 563 includes rebuild rename data 582, which is to be restored to rename table 336, whether by concurrent copying from CPTs 370, 371, or directly by walking ROB 360.
In this example, ROB rebuild window 563 is wholly within the ROB checkpoint window of ROB entries 0-47. As such, check-pointed rename data 581 will not be needed, and is shown crossed out. Moreover, the contents of ROB entries 38-47 would be flushed, and therefore check-pointed rename data 580 will not be copied into rename table as part of the rebuilding process, since the whole CPT-0 370 would have to be copied to rename table 336. As such, check-pointed rename data 580 will not be needed either, and is also shown crossed out. Thus, per comment 567, rebuild rename data 582 in all ROB entries 15-37 will be restored according to arrow 565, i.e. by walking ROB 360.
As such, per comment 567, rebuild rename data 582 in all ROB entries 15-37 will be restored according to arrow 565, i.e. by walking ROB 360. In other words, the CPTs of FIG. 5 cannot be used for rebuilding, and thus the invention offered no advantage in the scenario of FIG. 5. Referring briefly to FIG. 4 for the scenario of FIG. 5, neither rename cycle 475 nor rename cycle 476 would be included, and the number N takes a value up to m, where m is the maximum number of steps that ROB 360 could be walked under such a scenario. The duration of stalling pulse 491 is not diminished from what it would be without the invention. Such is not true with the remaining example scenarios.
FIG. 6 is a diagram of components of FIG. 3C for a second sample scenario. CPT-0 370 stores check-pointed rename data portion 680, and CPT-1 371 stores check-pointed rename portion data 681. A ROB rebuild window 663 within ROB 360 spans ROB entries 15-54. Within ROB rebuild window 663, ROB data 662 includes rebuild rename data portions 682A and 682B, which is to be restored to rename table 336. It will be appreciated that the division of the rebuild rename data into portions 682A and 682B within ROB 360 arises from the boundaries of the two ROB checkpoint windows. Indeed, ROB entries 15-47 map into check-pointed rename data portion 680, and ROB entries 48-54 map into check-pointed rename data portion 681.
Check-pointed rename data portion 680 is useable and, per comment 677, it will be restored according to arrow 675. Accordingly, rebuild rename data portion 682A will not be needed, and is shown crossed out. However, portion 681 is not useable for the same reason as in FIG. 5 is thus shown crossed out. Per comment 667, rebuild rename data 682B in ROB entries 48-54 will be restored according to arrow 665, by walking ROB 360. With reference to FIG. 4, restoring according to arrow 675 can take place in a single clock pulse 475, while there may be no clock pulse 476. N will still be larger than zero, but less than m, and the duration of stalling pulse 491 will be diminished due to the invention. It will be observed that rebuilding in the scenario of FIG. 6 requires copying more data than in that of FIG. 5, but needs less time thanks to the invention.
FIG. 7 is a diagram of components of FIG. 3C for a third sample scenario. CPT-0 370 stores check-pointed rename data portion 780, and CPT-1 371 stores check-pointed rename data portion 781. A ROB rebuild window 763 is shown as starting from ROB entry 80, wrapping around from ROB entry 95 to ROB entry 0, and continuing until ROB entry 9. This is a case where ROB 360 stores ROB data in a circular queue, as indicated by wrapping arrow 768. ROB data portion 762A includes rebuild rename data portion 782A, and ROB data portion 762B includes rebuild rename data portion 782B. ROB entries 80-95 map into check-pointed rename data portion 781, and ROB entries 0-9 map into check-pointed rename data portion 780.
Check-pointed rename data portion 781 is useable and, per comment 777, it will be restored according to arrow 776. Accordingly, rebuild rename data portion 782A will not be needed, and is shown crossed out. However, portion 780 is not useable for the same reason as in FIG. 5 and, per comment 767, rebuild rename data 782B will be restored according to arrow 765, by walking ROB 360. With reference to FIG. 4, restoring according to arrow 776 can take place in a single clock pulse 476, while there may be no clock pulse 475. N will still be larger than zero but less than m, and the duration of stalling pulse 491 will be diminished due to the invention.
FIG. 8 is a diagram of components of FIG. 3C for a fourth sample scenario. CPT-0 370 stores check-pointed rename data portion 880, and CPT-1 371 stores check-pointed rename data portion 881. A ROB rebuild window 863 is shown as starting from ROB entry 80, wrapping around from ROB entry 95 to ROB entry 0, and continuing until ROB entry 74. ROB data portion 862A includes rebuild rename data portion 882A, ROB data portion 862B includes rebuild rename data portion 882B, and ROB data portion 862C includes rebuild rename data portion 882C. ROB entries 80-95 and 48-74 map into check-pointed rename data portion 881, and ROB entries 0-47 map into check-pointed rename data portion 880.
Check-pointed rename data portion 880 is useable and, per comment 877, it will be restored according to arrow 875. Accordingly, rebuild rename data portion 88BA will not be needed, and is shown crossed out. However, portion 881 is not useable. Accordingly, per comment 867, rebuild rename data 882A and 882C will be restored according to arrow 865, by walking ROB 360. With reference to FIG. 4, restoring according to arrow 875 can take place in a single clock pulse 475, while there may be no clock pulse 476. N will still be larger than zero but less than m, and the duration of stalling pulse 491 will be diminished due to the invention.
FIG. 9 is a diagram of components of FIG. 3C for a fifth sample scenario. CPT-0 370 stores check-pointed rename data portion 980, and CPT-1 371 stores check-pointed rename data portion 981. A ROB rebuild window 963 spans ROB entries 0-47. ROB data 962 includes rebuild rename data 982. In other words, ROB entries 0-47 are contained exactly within the lower ROB checkpoint window. This is a special case, which statistically does happen with some frequency.
Check-pointed rename data 980 is useable and, per comment 977, it will be restored according to arrow 975. Accordingly, rebuild rename data portion 982 will not be needed, and is shown crossed out. Moreover, per comment 967, there will be no walking ROB 360 in this scenario; no rebuild rename data will be copied from ROB 360 to rename table 336. Check-pointed rename data portion 981 will also not be needed, and is also shown crossed-out. With reference to FIG. 4, restoring according to arrow 975 can take place in a single clock pulse 475, while there may be no clock pulse 476. N will be zero, and there will be no group of pulses 415, 465. The duration of stalling pulse 491 will be minimized due to the invention.
Referring to FIG. 10, an electronic device includes a system 1000 that works with a semiconductor device according to example embodiments. System 1000 may be used in one of a personal digital assistant (PDA), a laptop computer, a mobile computer, a web tablet, a wireless phone, a cell phone, a digital music player, a wired or wireless electronic device, or a complex electronic device including at least two ones thereof. System 1000 may include a controller 1010, an input/output device 1020 such as a keypad, a keyboard, a display, a memory 1030, and an interface 1040 that communicate with each other through a bus 1050. Controller 1010 may include, for example, at least one microprocessor made according to embodiments, a digital signal processor, a microcontroller or the like. Memory 1030 may be configured to store instructions to be used by the controller 1010, and/or a user data that is accessible via the I/O device. Electronic device 1000 may use interface 1040 configured to transmit data to or receive data from a communication network. The transmission can be via wires, for example via cables, or USB interface. Alternately, the communication network can be wireless, and interface 1040 can be wireless and include, for example, an antenna, a wireless transceiver and so on. Electronic system 1000 may be used in a communication interface protocol of a communication system such as CDMA, GSM, NADC, E-TDMA, WCDMA, CDMA2000, Wi-Fi, Muni Wi-Fi, Bluetooth, DECT, Wireless USB, Flash-OFDM, IEEE 802.20, GPRS, iBurst, WiBro, WiMAX, WiMAX-Advanced, UMTS-TDD, HSPA, EVDO, LTE-Advanced, MMDS, and so forth.
FIG. 11 shows a flowchart 1100 for describing methods according to embodiments. The methods of flowchart 1100 may also be practiced by embodiments described above, like microprocessors and electronic devices.
According to an operation 1110, an instruction is decoded into micro-ops. According to a next operation 1120, rename data is generated according to the micro-ops. According to a next operation 1130, the rename data is stored in a rename table.
According to a next operation 1140, a check-pointed version of the rename data is stored in a CPT. According to another operation 1150, ROB data is stored in a ROB, which has been generated from the micro-ops. The ROB data includes rebuild rename data, which can be used for ultimately rebuilding the rename table, if need be. The ROB maintains a static relationship with the CPT. According to an operation 1160, the micro-ops are executed.
According to a next operation 1170, it is determined whether the rename table has been flushed; in other words, the rename data has been flushed from the rename table. If not, execution resumes to operation 1110 above. In some embodiments, the rename table has been flushed responsive to detecting a misprediction as per the above.
If the rename table has been flushed, then according to a next operation 1180, rename data is restored to the rename table; in other words, the rename table is rebuilt. Operation 1180 includes one or both of operations 1182 and 1184. For operation 1180, a ROB rebuild window of ROB entries can become defined, when the rename table is flushed; it is the rebuild rename data of these ROB entries within the ROB rebuild window that are restored to the rename table, whether by operation 1182, or by operation 1184.
According to operation 1182, the check-pointed version of the rename data is copied from the CPT to the rename table, if permitted by the relationship of operation 1150. In some embodiments, the check-pointed version of the rename data is so copied in a single clock cycle.
According to operation 1184, rebuild rename data is copied from the ROB to the rename table. Preferably, that is done for any remainder not covered by operation 1182, and is done by walking the ROB.
In the above, the order of operations is not constrained to what is shown, and different orders may be possible according to different embodiments. In addition, in certain embodiments, new operations may be added, or individual operations may be modified or deleted.
A person skilled in the art will be able to practice the present invention in view of this description, which is to be taken as a whole. Details have been included to provide a thorough understanding. In other instances, well-known aspects have not been described, in order to not obscure unnecessarily the present invention.
This description includes one or more examples, but that does not limit how the invention may be practiced. Indeed, examples or embodiments of the invention may be practiced according to what is described, or yet differently, and also in conjunction with other present or future technologies.
The following claims define certain combinations and subcombinations of elements, features and steps or operations, which are regarded as novel and non-obvious. Additional claims for other such combinations and subcombinations may be presented in this or a related document.

## Claims

1. A microprocessor, comprising:
a decoder for decoding an instruction into micro-operations;
an execution unit for executing the micro-operations;
a renamer for generating rename data according to the micro-operations;
a rename table for storing the rename data, wherein the rename table is configured to flush the rename data from the rename table;
a re-order buffer having re-order buffer entries for storing re-order buffer data generated from the micro-operations, the re-order buffer data including rebuild rename data; and
a check-point table including check-point entries, wherein each check-point entry value is configured to store a check-pointed version of the rename data and, wherein each check-point entry value is correlated sequentially one-to-one with a corresponding one of a subset of the re-order buffer entries;
in which if rename data stored in the rename table is flushed from the rename table, the flushed rename data can be restored to the rename table by:
the check-pointed version of the rename data being copied from the check-point table to the rename table if permitted by an aspect of a static relationship, plus
at least a portion of the rebuild rename data being copied from the re-order buffer to the rename table.

2. The microprocessor of claim 1, further comprising:
a dispatcher for dispatching the micro-operations to the execution unit, wherein the check-point table receives the check-pointed version of the rename data from the dispatcher.

3. The microprocessor of claim 1, further comprising:
branch execution logic for detecting a misprediction in executing the micro-operations,
wherein the rename data is flushed from the rename table based on detection of the misprediction.

4. The microprocessor of claim 1, further comprising:
an additional check-point table, wherein the all the ROB entries map into one of the check-point table or the additional check-point table.

5. The microprocessor of claim 1, further comprising:
a clock for outputting pulses that define clock cycles, wherein the check-pointed version of the rename data is copied from the check-point table to the rename table in a single one of the clock cycles.

6. The microprocessor of claim 1, wherein
a ROB rebuild window of ROB entries becomes defined when rename data is flushed from the rename table, and
the portion of the rebuild rename data being copied from the ROB to the rename table is within the ROB rebuild window.

7. A microprocessor, comprising:
a renamer for generating rename data according to micro-operations;
a rename table for storing the rename data;
a re-order buffer for storing re-order buffer data generated from the micro-operations, the ROB data including rebuild rename data; and
two or more check-point tables for storing a check-pointed version of the rename data, and
in which if rename data stored in the rename table is flushed from the rename table, the flushed rename data is restored by:
for each check-point table, performing a comparison between a re-order buffer checkpoint window, defined by a sequential one-to-one association between entries of the check-point table to a portion of the entries re-order buffer, to a re-order buffer rebuild window, defined by a state of the re-order buffer, and if the re-order rebuild window includes an association with a pre-defined entry of the check-point table, copying the check-pointed version of the rename data from the check-point table to the rename table,
but, if all rename data is restored via the check-point tables, without any portion of the rebuild rename data being copied from the re-order buffer to the rename table.

8. The microprocessor of claim 7, further comprising:
a dispatcher for dispatching the micro-operations to an execution unit, and
in which the check-point table receives the check-pointed version of the rename data from the dispatcher.

9. The microprocessor of claim 7, further comprising:
branch execution logic for detecting a misprediction in an execution of the micro-operations, wherein the rename table is so rebuilt based on detection of the misprediction.

10. The microprocessor of claim 7, further comprising:
a clock for outputting pulses that define clock cycles, wherein the check-pointed version of the rename data is copied from one of the check-point tables to the rename table in a single one of the clock cycles.

11. An apparatus comprising:
a rename table configured to store rename data associated with a plurality of renamed registers;
a re-order buffer comprising:
a plurality of re-order buffer entries, wherein each re-order buffer entry is configured to store at least one piece of re-order data; and

at least one check-point table, each check-point table comprising check-point entries, and configured to store a check-pointed version of the rename data and, wherein each check-point entry value is correlated in a contiguous one-to-one fashion with a corresponding one of a subset of the re-order buffer entries;

wherein if rename data stored in the rename table is flushed from the rename table, the flushed rename data can be restored to the rename table by:
the check-pointed version of the rename data being copied from at least one of the at least one check-point tables to the rename table if permitted by an aspect of a static correlation between the check-point entries of a check-point table and the subset of the re-order buffer entries, plus
if required by an aspect of a static correlation between the check-point entries of a check-point table and the subset of the re-order buffer entries, at least a portion of the rename data being rebuilt from the re-order buffer.

12. The apparatus of claim 11, wherein the re-order buffer comprises a re-order buffer rebuild window that includes at least one re-order buffer entry, and defined as starting from a re-order buffer entry identified by a retire pointer and ending one prior to a re-order buffer entry identified by a flush pointer; and
wherein the check-pointed version of the rename data of a check-point table is permitted to be copied to the rename table if a last check-point entry of the check-point table is associated with a re-order buffer entry included within the re-order buffer rebuild window.

13. The apparatus of claim 11, wherein copying the check-pointed version of the rename data from a check-point table to the rename table is accomplished within one clock cycle; and
wherein rebuilding at least a portion of the rename data from the re-order buffer is accomplished within multiple clock cycles.

14. The apparatus of claim 11, wherein the at least one check-point tables comprises a first check-point table and a second check-point table;
wherein each check-point entry of the first check-point table is correlated with a corresponding one of a first half of the re-order buffer entries; and
wherein each check-point entry of the second check-point table is correlated with a corresponding one of a second half of the re-order buffer entries.

15. The apparatus of claim 11, wherein the at least one check-point tables comprises a first check-point table and a second check-point table; and
wherein the apparatus is configured to restore the rename table by:

if a first re-order buffer checkpoint window defined by the first check-point table terminates at or before an end of a re-order buffer rebuild window, defined by a state of the re-order buffer, copy the check-pointed version of the rename data stored by the first check-point table to the rename table, and
if a second re-order buffer checkpoint window defined by the second check-point table terminates after an end of the re-order buffer rebuild window not copy the check-pointed version of the rename data stored by the second check-point table to the rename table.

16. The apparatus of claim 11, wherein the check-pointed version of the rename data is copied from the at least one of the at least one check-point tables to the rename table before the at least a portion of the rename data is rebuilt, if required, from the re-order buffer.

17. The microprocessor of claim 1, wherein the re-order buffer comprises a re-order buffer rebuild window that includes a at least one re-order buffer entry, and defined as starting from a re-order buffer entry identified by a retire pointer and ending one prior to a re-order buffer entry identified by a flush pointer; and
wherein the check-pointed version of the rename data of the check-point table is permitted to be copied to the rename table if a last check-point entry of the check-point table is associated with a re-order buffer entry included within the re-order buffer rebuild window.

18. The microprocessor of claim 1, further comprising a second check-point table; and
wherein the microprocessor is configured to restore the rename table by:
if a first re-order buffer checkpoint window, defined by the first check-point table, terminates at or before an end of a re-order buffer rebuild window, defined by a state of the re-order buffer, copy the check-pointed version of the rename data stored by the first check-point table to the rename table, and
if a second re-order buffer checkpoint window, defined by the second check-point table, terminates after an end of the re-order buffer rebuild window not copy the check-pointed version of the rename data stored by the second check-point table to the rename table.

19. The microprocessor of claim 7, wherein the re-order buffer comprises a re-order buffer rebuild window that includes a at least one re-order buffer entry, and defined as ending based upon a re-order buffer entry identified by a flush pointer; and
wherein the check-pointed version of the rename data of a check-point table is permitted to be copied to the rename table if a last check-point entry of the check-point table is associated with a re-order buffer entry included within the re-order buffer rebuild window.

20. The microprocessor of claim 7, wherein the two or more check-point tables comprise a first a second check-point table and a second check-point table; and wherein the microprocessor is configured to restore the rename table by:
if a first re-order buffer checkpoint window, defined by the first check-point table, terminates at or before an end of a re-order buffer rebuild window, defined by a state of the re-order buffer, copy the check-pointed version of the rename data stored by the first check-point table to the rename table, and
if a second re-order buffer checkpoint window, defined by the second check-point table, terminates after an end of the re-order buffer rebuild window not copy the check-pointed version of the rename data stored by the second check-point table to the rename table.