Method and apparatus for improving performance of out of sequence load operations in a computer system
First Claim
1. A method for improving the execution performance of out of sequence load operations with the use of a processor and a dedicated address compare unit (ACU) for comparing a memory address against a stored set of addresses, which method comprises:
- (a) executing a compiled optimized program with the processor, said complied optimized program having a load operation identified and out of sequence ahead of a store operation, said store operation being identified and preceding said load operation in an uncompiled form of said compiled optimized program, said load operation being out of sequence ahead of said store operation in said compiled optimized program so as to optimize execution performance;
(b) saving to the ACU during said executing step (a) an address of an operand fetched by the out of sequence load operation and comparing the saved address with an address generated by the store operation during compiled optimized program execution;
(c) if the addresses are different, completing the store operation and continuing said executing step (a) of the compiled optimized program;
(d) if the addresses are identical, aborting the store operation and providing for recovery of the program; and
wherein execution of said compiled optimized program produces a same output as an execution of said program in a compiled unoptimized form having said load operation in sequence and following said store operation.
0 Assignments
0 Petitions
Accused Products
Abstract
The invention provides for improved performance of out of sequence load operations. The system has an improved compiler, with an optimizer, an improved CPU with four new instructions in its instruction set, and an address compare unit (ACU). During compilation, the improved compiler identifies load operations that can be move out of sequence ahead of associated store operations and moves those load operations out of sequence and flags them as such. The associated store operations are also flagged. During processor execution of a compiled and optimized program, the address of operands fetched by the out of sequence load operations are saved to the new associative memory. On request, the ACU compares the addresses saved to the addresses generated by the associated store operations. If a comparison results in an identity between the address of a store operation and an address of the out of sequence load operation, a recovery code is run to correct the problem, if not the system continues to execute the program in its compiled order. The system also has the ability to work in a multiprogramming or multitasking environment.
51 Citations
60 Claims
-
1. A method for improving the execution performance of out of sequence load operations with the use of a processor and a dedicated address compare unit (ACU) for comparing a memory address against a stored set of addresses, which method comprises:
-
(a) executing a compiled optimized program with the processor, said complied optimized program having a load operation identified and out of sequence ahead of a store operation, said store operation being identified and preceding said load operation in an uncompiled form of said compiled optimized program, said load operation being out of sequence ahead of said store operation in said compiled optimized program so as to optimize execution performance; (b) saving to the ACU during said executing step (a) an address of an operand fetched by the out of sequence load operation and comparing the saved address with an address generated by the store operation during compiled optimized program execution; (c) if the addresses are different, completing the store operation and continuing said executing step (a) of the compiled optimized program; (d) if the addresses are identical, aborting the store operation and providing for recovery of the program; and wherein execution of said compiled optimized program produces a same output as an execution of said program in a compiled unoptimized form having said load operation in sequence and following said store operation. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system for improving performance of out of sequence load operations comprising:
-
compiling means for during compilation and optimization of a program having a first output corresponding to an execution of a compiled unoptimized form of said program;
identifying a load operation that can be moved out of sequence ahead of a store operation,storing the identified load operation out of sequence, ahead of said store operation in a compiled optimized program, so as to improve execution performance, and identifying the store operation before which the load operation has been moved in the compiled optimized program; processor means for execution of the compiled optimized program to produce said first output; dedicated means for saving during said execution of the compiled optimized program an address of an operand fetched by the load operation moved out of sequence; dedicated means for comparing the saved address with an address generated by the store operation during said execution of the compiled optimized program; means for completing the store operation and continuing execution of the compiled optimized program in sequence if the compared addresses are different; and means for aborting the store operation and providing for recovery of the program if the compared addresses are identical. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. An improved apparatus comprising a programmed processor for compiling and optimizing an uncompiled computer program for execution by a processor having an address compare unit (ACU), said uncompiled computer program having a first output corresponding to an execution of a compiled unoptimized form of said uncompiled computer program, said programmed processor comprising:
-
means to identify and flag a load operation of said uncompiled computer program which can be moved ahead of a store operation, said store operation having preceded the load operation in said uncompiled computer program; means to store and flag the store operation in a compiled optimized program; and means to store the identified and flagged load operation ahead of the store operation in the compiled optimized program to facilitate execution of said compiled optimized program to produce said first output, whereby during said execution of said compiled optimized program by said processor having said ACU, said store operation facilitates a comparison by said ACU of an address referenced by said load operation with an address referenced by said store operation. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29)
-
-
30. A method for optimizing a computer program during program compilation with a programmed processor, said computer program for execution by a processor having an address compare unit (ACU), said computer program having a first output corresponding to an execution of a compiled unoptimized form of said computer program, said method comprising:
-
identifying and flagging a load operation which can be moved ahead of a store operation, said store operation having preceded the load operation in an uncompiled form of the program; flagging the store operation; and storing said identified and flagged load operation ahead of the store operation in a compiled optimized program to facilitate execution of said compiled optimized program to produce said first output, whereby during said execution of said compiled optimized program by said processor having said ACU, said store operation facilitates a comparison by said ACU of an address referenced by said load operation with an address referenced by said store operation. - View Dependent Claims (31, 32, 33, 34, 35, 36, 37, 38)
-
-
39. A system for performing out of sequence load operations of a compiled optimized program, said compiled optimized program having a flagged load operation moved out of sequence ahead of a flagged store operation, said system comprising:
-
a processor and associated address compare unit (ACU); the processor comprising;
means for executing the compiled program having said flagged load operation moved out of sequence ahead of said flagged store operation, means for recognizing the flagged load operation and saving to the ACU an address of an operand fetched by the load operation, and means for recognizing the flagged store operation and generating an address by the store operation;the ACU comprising means to compare the saved address with the address generated by the store operation; and wherein the ACU facilitates said executing said compiled optimized program to produce a same output as an executing of a compiled unoptimized form of said compiled optimized program, said compiled unoptimized form having said load operation in sequence and following said store operation. - View Dependent Claims (40, 41, 42, 43)
-
-
44. A method for performing, on a processor with a dedicated address compare unit, out of sequence load operations of a compiled optimized program, said compiled optimized program having a load operation moved out of sequence ahead of a store operation in said compiled optimized program, said method comprising the steps of:
-
executing the compiled optimized program including executing the out of sequence load operation on the processor;
during said executing;
recognizing the load operation and saving an address of an operand fetched by the load operation in said dedicated address compare unit and recognizing the store operation and generating an address by the store operation;comparing in said dedicated address compare unit the saved address with the address generated by the store operation; implementing a recovery routine when the comparing step indicates that the saved address is identical to the address generated by the store operation, said recovery routine including the step of resuming said executing the compiled optimized program and providing for proper executing of said load operation; and wherein said executing said compiled optimized program produces a same output as an executing of a compiled unoptimized form of said compiled optimized program, said compiled and unoptimized form having said load operation in sequence and following said store operation. - View Dependent Claims (45, 46, 47, 48)
-
-
49. An address compare unit for use in a system for performing out of sequence load operations during execution of a compiled and optimized program, said compiled and optimized program having a load operation moved out of sequence ahead of a store operation, said address compare unit comprising:
-
means for saving an address of an operand fetched by the load operation, said load operation being stored out of sequence ahead of the store operation in the compiled and optimized program; means for comparing the saved address with an address generated by the store operation during execution of the compiled and optimized program; means for generating a signal when the compared saved address is identical to the address generated by the store operation; and wherein said address compare unit facilitates execution of said compiled and optimized program producing a same output as an execution of a compiled and unoptimized form of said compiled and optimized program, said compiled and unoptimized form having said load operation in sequence and following said store operation. - View Dependent Claims (50, 51, 52, 53, 54, 55, 56, 57)
-
-
58. An improved processor having an instruction set including a load-save instruction and a store-check instruction comprising:
-
means for implementing the load-save instruction by performing a load operation and saving an address of an operand fetched by the load operation; means for implementing the store-check instruction by generating an address for the store operation and initiating comparison of the generated address with the saved address; dedicated means for comparing the generated address with the saved address; and means for running a recovery sequence when said comparison indicates the generated address is identical to the saved address, wherein said recovery sequence is generated during compilation and optimization of a computer program containing said load-save instruction and said store-check instruction. - View Dependent Claims (59, 60)
-
Specification