This application claims benefit of priority under 35 U.S.C. §119 to Japanese Patent Application No. 2000-297242 filed on Sep. 28, 2000 and Japanese Patent Application No. 2001-101216 filed on Mar. 30, 2001, the entire contents of which are incorporated by reference herein.
1. Field of the Invention
The present invention relates to a renaming apparatus for setting a correspondence between a physical register number and a logical register number, and a processor in which a high-frequency operation is required, such as a microprocessor and a digital signal processor (DSP).
2. Related Background Art
When a frequency of a processor is raised in order to obtain a high performance, the number of pipeline stages inevitably increases, and a pipeline bubble (pipeline stall) increases. Software pipelining is generally performed in order to remove the bubble.
It is assumed that during execution of the program of
The processor has an interlock function of one issue and can execute a pipeline processing. This processor executes the program of
Similarly, the data written into a register r3 in a stage Wd of instruction 3 is read in a stage De of instruction 4. Instruction 5 is simply a branch instruction. This instruction, which has no dependence on other instructions, is soon executed in the next cycle.
Additionally, for simplicity, it is assumed in
To solve the pipeline bubble shown in
To raise efficiency of instruction throughput, a programmer primitively constructs and realizes software pipelining. The program is shown, for example, in FIG. 22.
In an example of
As described above, in the example of
The following two conventional techniques for solving this intricacy have been proposed. A first technique is a processor which has an out-of-order issue function and automatic register renaming function. In this processor, an ideal operation is performed as shown in
A second technique is a register rotation function mounted in a computer Itanium or Cydrome of Intel K.K. An example of
With an instruction branch_regrot, a jump instruction of the loop is executed, and simultaneously the registers are rotated. In the rotation, every three registers are replaced. The program is shown in
A correspondence of the registers at the time when a first loop is finished is shown in FIG. 26. Moreover, the correspondence of the registers at the time when a second loop is finished is shown in FIG. 27.
A conventional automatic renaming function has a problem that hardware is complicated. Moreover, a conventional register rotation function has a low flexibility, and has a problem that the function cannot be applied to rotations other than a simple rotation.
A renaming apparatus configured to set a correspondence between a physical register number and a logical register number, said apparatus comprising:
A processor and a renaming apparatus according to the present invention will more specifically be described hereinafter with reference to the drawings.
(First Embodiment)
In the present embodiment, 256 registers are divided into a plurality of bundles (banks) of every 16 registers, and a correspondence is established between a physical register number and a logical register number by a unit of the bank.
To establish the correspondence, the rename control register 5 is utilized. The rename control register 5 includes a source register (source RCR, first register section), a destination register (destination RCR, second register section), and an effective register (effective RCR, third register section).
As shown in
The register rename instructions are dedicated instructions for setting the rename control register 5, and is composed of four instructions (1) to (4): (1) STORE_REN is an instruction for setting the content of general-purpose register src1 to the destination RCR; (2) LOAD_REN is an instruction for setting the content of the destination RCR to the general-purpose register src1; (3) ROTATE is an instruction for rotating the register leftwards (leftwards) to a “to” bit from a “from” bit of the source RCR by the number of bits, as described later; and (4) RENAME is an instruction for copying the content of the destination RCR to the effective RCR and source RCR.
The rename control unit 4 of
Subsequently, the source RCR is updated based on the ROTATE instruction (step S2). An update result of the source RCR is next written into the destination RCR (step S3).
Subsequently, the content of the destination RCR is written into the source RCR and effective RCR (step S4). The correspondence between the physical register number and the logical register number is next written into the register file 6 based on the content of the effective RCR (step S5).
As described above, the correspondence between the logical register number and the physical register number is detected by referring to the effective RCR. Therefore, while the effective RCR is referred to, the source RCR and destination RCR can be utilized for an operation for performing the next rename processing and so on.
The register file 6 has a capacity of 16×16=256 bits, and stores the correspondence between the physical register number and the logical register number for each of the 16 bundles of the rename control register 5.
Moreover,
Furthermore,
Additionally,
Moreover,
Furthermore,
As described above, in the present embodiment, the correspondence between the physical register number and the logical register number can be designated for each bundle with respect to arbitrary bundles using the register rename instruction as the dedicated instruction for designating the correspondence between the physical register number and the logical register number. Therefore, the physical register number can be selected so that a pipeline babble is not generated, and as a result a processing speed of the processor can be enhanced.
Moreover, the concrete content of the register rename instruction can arbitrarily be designated by a programmer, and the rename processing can therefore be performed if necessary.
Furthermore, in the present embodiment, the source RCR, destination RCR and effective RCR are disposed as the control registers, and a rotated result is written into both the source RCR and the effective RCR. The content of the effective RCR is referred to, and the physical register number is associated with the logical register number. During this time, the source RCR and destination RCR can be utilized for other operations such as the next rotation processing. Therefore, a processing efficiency is enhanced.
In the first embodiment, the example in which the field corresponding to each bundle of the logical register is disposed in the rename control register 5 has been described. Conversely, the field corresponding to each bundle of the physical register may be disposed in the rename control register 5, and the rename control unit 4 may set the bundle number of the logical register.
(Second Embodiment)
As a result, a state of
For example, in a program in which the register having a logical number 3c (3 denotes a bundle number, c denotes a register number) is accessed, the actually accessed physical address changes as shown in FIG. 13. That is, after a first rotation, the program accesses the register of a physical address 9c. After a second rotation, the program accesses the register of a physical address 6c, and then, after a third rotation, accesses the register of a physical address 3c.
As described above, so-called software pipelining is performed. In the software pipelining, even when the same logical address is designated in the program, different physical address is actually used.
For the aforementioned register rename instruction, the type and range of the bundles to be rotated can arbitrarily be designated. Because of this, when the register rename processing is composed of hardware, it is necessary to dispose a path for transferring data to all bundles which can be movement destinations by rotation.
When the wirings are extended over the bundles as shown in
To solve the problem, in the following second embodiment, the rotation of the register number by the register rename instruction is realized by hardware which has a simple constitution.
The renaming apparatus of
When the original bundle number is between the lower-limit bundle number and the upper-limit bundle number of the register rename instruction, the first selector 12 selects and outputs a rotation amount of the register rename instruction. When the inputted bundle number is not between the lower-limit bundle number and the upper-limit bundle number of the register rename instruction, zero is outputted.
The first bundle number calculator 13 performs an operation of subtracting the selection result of the first selector 12 from the bundle number stored in the control register 18.
When the inputted bundle number is between the lower-limit bundle number and the upper-limit bundle number, and the bundle number calculated by the first bundle number calculator 13 is smaller than the lower-limit bundle number of the register rename instruction, the AND circuit 16 outputs “1”. In other cases, the circuit outputs “0”.
The second selector 15 outputs “0”, when the output of the AND circuit 16 is “0”. When the output of the AND circuit 16 is “1”, the selector outputs a value (To−From+1) obtained by subtracting the lower-limit bundle number from the upper-limit bundle number of the register rename instruction and adding “1” to the subtraction result.
The third selector 19 selects the bundle number calculated by the second bundle number calculator 17 during execution of the register rename instruction. During execution of other instructions, the bundle number stored in the control register 18 is selected.
When the register rename instruction is issued, the fourth selector 20 temporarily initializes the control register 18. In other cases, the selector selects the bundle number selected by the third selector 19 as it is. During initialization, the inputted bundle number is stored in the control register 18 as it is.
Here, the control register 18 corresponds to a reset part, and the second bundle number calculator 17 and third selector 19 correspond to a control register setting part.
A processing operation of the renaming apparatus of FIG. 15 will be described hereinafter as one example of the register rename instruction. In the example, as shown in
The renaming apparatus of
First, the processing operation at the time when the rotation information is set will be described. When the rotation instruction is issued, the fourth selector 20 initializes the content of the control register 18 before execution of the rotation operation. More specifically, the logical register number is set equal to the physical register number with respect to the bundles in the range in which the rotation is performed. With respect to the bundles in other ranges, the value of the control register 18 is not changed. As a result, as shown in
The processing operation at the time when the rotation instruction is not executed will next be described. In this case, since the third selector 19 selects the bundle number stored in the control register 18, data of the control register 18 does not change.
The processing at the time when the rotation instruction is executed, and the original bundle number is not between the lower-limit bundle number and the upper-limit bundle number (bundle numbers 0 to 2 and c to f of
The processing operation in the case in which the rotation instruction is executed, and the original bundle number is between the lower-limit bundle number and the upper-limit bundle number will next be described. In this case, the first judging section 11 outputs “1”, the first selector 12 outputs “3”, and the first bundle number calculator 13 outputs a value obtained by subtracting “3” from the bundle number stored in the control register 18. The output of the first bundle number calculator 13 is obtained as shown in FIG. 16C.
The second judging section 14 outputs “0” when the bundle number calculated by the first bundle number calculator 13 is any one of “0”, “1”, and “2”, and outputs “1” in other cases.
When the second judging section 14 outputs “0”, the second selector 15 outputs a value (11−3+1=9) obtained by adding “1” to the value obtained by subtracting the lower-limit bundle number “3” from the upper-limit bundle number “b”. When the second judging section 14 outputs “1”, the second selector 15 outputs “0”.
When the bundle number calculated by the first bundle number calculator 13 has values of “0”, “1” and “2”, the second bundle number calculator 17 outputs “9”, “a” and “b” obtained by adding “9” to the respective output values of the first bundle number calculator. Moreover, when the bundle numbers calculated by the first bundle number calculator 13 are “3” to “8”, the numbers are outputted as they are. Thereby, the content of the control register 18 is obtained as shown in FIG. 16D.
Thus, when executing the register rename instruction in the second embodiment, after the bundle in the rotation range is initialized, the rotation of the bundle is performed by hardware based on a rotation amount, lower-limit bundle number, and upper-limit bundle number of the register rename instruction. Therefore, the new bundle number can be set without exchanging data among the bundles. Therefore, the wiring extended over the bundles is unnecessary, thereby reducing the amount of the wiring and realizing a high-speed processing.
When the renaming apparatus of
The renaming apparatus of
The renaming apparatus of
Number | Date | Country | Kind |
---|---|---|---|
2000-297242 | Sep 2000 | JP | national |
2001-101216 | Mar 2001 | JP | national |
Number | Name | Date | Kind |
---|---|---|---|
5872989 | Tsushima et al. | Feb 1999 | A |
5974525 | Lin et al. | Oct 1999 | A |
6003126 | Huynh et al. | Dec 1999 | A |
6009509 | Leung et al. | Dec 1999 | A |
6049839 | Fujii et al. | Apr 2000 | A |
6094716 | Witt | Jul 2000 | A |
6167497 | Nakatsuka et al. | Dec 2000 | A |
6330661 | Torii | Dec 2001 | B1 |
Number | Date | Country |
---|---|---|
6-214784 | Aug 1994 | JP |
10-97423 | Apr 1998 | JP |
0118472 | Mar 1997 | KR |
WO 0007097 | Feb 2000 | WO |
Number | Date | Country | |
---|---|---|---|
20020042872 A1 | Apr 2002 | US |