| US 7,523,296 B2 | ||
| System and method for handling exceptions and branch mispredictions in a superscalar microprocessor | ||
| Johannes Wang, Redwood City, Calif. (US); Sanjiv Garg, Freemont, Calif. (US); and Trevor Deosaran, Sunnyvale, Calif. (US) | ||
| Assigned to Seiko Epson Corporation, Palo Alto, Calif. (US) | ||
| Filed on Jun. 10, 2005, as Appl. No. 11/149,227. | ||
| Application 11/149227 is a continuation of application No. 10/815742, filed on Apr. 02, 2004, granted, now 6,920,548. | ||
| Application 10/815742 is a continuation of application No. 10/151932, filed on May 22, 2002, granted, now 6,775,761. | ||
| Application 10/151932 is a continuation of application No. 09/631640, filed on Aug. 02, 2000, granted, now 6,412,064. | ||
| Application 09/631640 is a continuation of application No. 09/009412, filed on Jan. 20, 1998, granted, now 6,131,157. | ||
| Application 09/009412 is a continuation of application No. 08/481146, filed on Jun. 07, 1995, granted, now 5,826,055. | ||
| Application 08/481146 is a continuation of application No. 07/877451, filed on May 01, 1992, abandoned. | ||
| Prior Publication US 2005/0228973 A1, Oct. 13, 2005 | ||
| Int. Cl. G06F 9/34 (2006.01) | ||
| U.S. Cl. 712—218 [712/244] | 24 Claims |

| 1. A method for handling an exception in a superscalar microprocessor configured to execute a group of instructions, the group
of instructions having a predefined program order, the method comprising:
(a) executing a subset of instructions from the group of instructions in an out-of-order fashion with respect to the program
order;
(b) storing each result generated in step (a) in a static location in a buffer, wherein the location of the instruction for
which the result was generated determines the static location;
(c) detecting an exception; and
(d) responsive to detecting the exception:
(i) suspending out-of-order execution,
(ii) retiring each result stored in step (b) that is the result of an instruction that precedes the instruction that caused
the exception in the program order, wherein retiring a result comprises associating the result with a corresponding location
in an array, wherein the array includes a plurality of locations referenced to provide execution results of instructions that
have been retired, and
(iii) resuming out-of-order execution, wherein resuming out-of-order execution comprises overwriting non-retired results stored
in the buffer.
|