Claims
- 1. A system for performing register renaming of source registers in a processor having an instruction window for storing a group of instructions to be executed by the processor, wherein new instructions are added to the instruction window when the processor retires preceding instructions, the system comprising:
first means for storing source and destination register addresses for the instructions in the instruction window; second means, coupled to said first means, for accessing said stored source and destination register addresses for performing a data dependency check for each new instruction added to the instruction window; and third means, coupled to said second means, for renaming source register addresses for instructions having dependencies as determined by said second means.
- 2. The system of claim 1, wherein the system further comprises a rename result register file for storing said renamed source register addresses.
- 3. The system of claim 1, wherein the instruction window is a variable advance instruction window.
- 4. The system of claim 3, wherein instructions in the variable advance instruction window are assigned a tag, and the tag of an instruction leaving the window is assigned to the next new instruction to be added to the variable advance instruction window.
- 5. The system of claim 1, wherein said dependencies are input dependencies.
- 6. The system of claim 1, wherein:
said second means determines whether more than one dependency exists; and a priority encoder, coupled to said second and third means, which selects a highest priority dependency identified by said second means and passes said highest priority dependency to said third means.
- 7. The system of claim 6, wherein said system further comprises a temp buffer means for storing results of instructions executed by the processor according to said tags to avoid output and anti-dependencies, wherein said ternp buffer permits the processor to execute instructions out of order and in parallel.
- 8. The system of claim 7, wherein said third means comprises tag assignment logic for determining where in said temp buffer operands of dependent instructions are located according to said highest priority dependency.
- 9. The system of claim 8, wherein said system further comprises means for passing the results stored in said temp buffer to a main register file in program order.
- 10. A method for performing register renaming of source registers in a processor having a variable advance instruction window for storing a group of instructions to be executed by the processor, wherein new instructions are added to the variable advance instruction window when a location becomes available therein, the method comprising the steps of:
(a) storing source and destination register addresses for the instructions in the variable advance instruction window; (b) assigning a tag to each instruction in the variable advance instruction window, wherein the tag of each retired instruction is assigned to the next new instruction to be added to the variable advance instruction window; (c) storing, in a temp buffer, results of instructions executed by the processor according to their corresponding tags to avoid output and anti-dependencies, said temp buffer permitting the processor to execute instructions out of order and in parallel; (d) performing data dependency checks for input dependencies for each new instruction added to the variable advance instruction window; (e) determining where operands are located in the temp buffer for the instructions having input dependencies as determined by step (d); (f) renaming source register addresses of the instructions having dependencies; and (g) storing said renamed source register addresses in a rename result register file.
- 11. The method of claim 10, further comprises the step of passing the results stored in the temp buffer to a main register file in program order.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of application Ser. No. 10/083,143, filed Feb. 27, 2002, which is a continuation of application Ser. No. 09/826,211, filed Apr. 5, 2001, now U.S. Pat. No. 6,408,375, which is a continuation of application Ser. No. 09/399,000, filed Sep. 17, 1999, now U.S. Pat. No. 6,272,617, which is a continuation of application Ser. No. 09/063,059, filed Apr. 21, 1998, now U.S. Pat. No. 6,138,231, which is a continuation of application Ser. No. 08/698,211, filed Aug. 15, 1996, now U.S. Pat. No. 5,809,276, which is a continuation of application Ser. No. 08/478,531, filed Jun. 7, 1995, now U.S. Pat. No. 5,590,295, which is a continuation of application Ser. No. 07/997,948, filed Dec. 31, 1992, now abandoned.
[0002] The following are related applications:
[0003] Superscalar RISC Instruction Scheduling, Ser. No. 08/219,425, filed Mar. 29, 1994, now U.S. Pat. No. 5,497,499, which is a file wrapper continuation of Ser. No. 07/860,719, filed Mar. 31, 1992, now abandoned;
[0004] Semiconductor Floor Plan for a Register Renaming Circuit, Ser. No. 07/860,718, filed Mar. 31, 1992, now U.S. Pat. No. 5,371,684;
[0005] System and Method for Retiring Instructions in a Superscalar Microprocessor, Ser. No. 08/481,146, filed Jun. 7, 1995, now U.S. Pat. No. 5,826,055, which is a file wrapper continuation of Ser. No. 07/877,451, filed May 1, 1992, now abandoned;
[0006] High-Performance, Superscalar-Based Computer System with Out-of-Order Instruction Execution, Ser. No. 07/817,810, filed Jan. 8, 1992, now U.S. Pat. No. 5,539,911, which is a continuation of Ser. No. 07/727,006, filed Jul. 8, 1991, now abandoned;
[0007] High-Performance, Superscalar-Based Computer System with Out-of-Order Execution and Concurrent Results Distribution, Ser. No. 08/397,016, filed Mar. 1, 1995, now U.S. Pat. No. 5,560,032, which is a file wrapper continuation of Ser. No. 07/817,809, filed Jan. 8, 1992, now abandoned, which is a continuation of application Ser. No. 07/727,058, filed Jul. 8, 1991, now abandoned.
[0008] The above cited patent documents are incorporated herein by reference.
Continuations (7)
|
Number |
Date |
Country |
Parent |
10083143 |
Feb 2002 |
US |
Child |
10222935 |
Aug 2002 |
US |
Parent |
09826211 |
Apr 2001 |
US |
Child |
10083143 |
Feb 2002 |
US |
Parent |
09399000 |
Sep 1999 |
US |
Child |
09826211 |
Apr 2001 |
US |
Parent |
09063059 |
Apr 1998 |
US |
Child |
09399000 |
Sep 1999 |
US |
Parent |
08698211 |
Aug 1996 |
US |
Child |
09063059 |
Apr 1998 |
US |
Parent |
08478531 |
Jun 1995 |
US |
Child |
08698211 |
Aug 1996 |
US |
Parent |
07997948 |
Dec 1992 |
US |
Child |
08478531 |
Jun 1995 |
US |