Claims
- 1. A processor having data and instruction storage, the processor being one of a plurality of processors in a multiprocessor system(MP), the processor comprising:
means for out of order operand fetch providing operand re-fetch after cache line invalidation in the multiprocessor system; operand fetch logic configured to maintain information indicative of where data is fetched from to support operand re-fetch; a cache storage configured with line invalidation and configured to maintain information about which line each doubleword request comes from to process the invalidations; and an operand buffer configured with operand buffer logic, the operand buffer logic configured to maintain information about a state of each buffer and configured to signal which buffer needs to begin the operand re-fetch for a point where the data invalidation is detected.
- 2. A processor as in claim 1 wherein the providing operand re-fetch is configured for an instruction having operands longer that eight bytes in length.
- 3. A processor as in claim 2 wherein the processor implements an architecture that allows an operand to be updated during execution of the instruction with storage ordering rules that require only new updated data to be used after the point where the data invalidation is detected in the operand by performing the operand re-fetch to obtain the new updated data.
- 4. A processor as in claim 3 wherein the operand re-fetch is configured to allow the operand lost to line invalidation to fetch the new updated data for all data past the point in the operand where the invalidation was detected without canceling the instruction and re-executing the instruction.
- 5. A processor as in claim 4 wherein the point in the operand when the line invalidation is detected based on operand buffer invalidation information and where in the operand the data is being currently read to keep as much valid data as is architecturally allowed before marking the point of cache line invalidation.
- 6. A processor as in claim 1 wherein the operand to be invalidated and the operand to be re-fetched more than one time are a same operand, the same operand is for a single instructions execution.
- 7. A processor as in claim 1 wherein the operand re-fetch includes fetching two operands for a single instruction, the re-fetch for the two operands happens at different or simultaneous times for each operand during execution.
- 8. A processor as in claim 1 wherein when the providing operand re-fetch occurs the cache storage is required to return a first buffer of the operand with valid data before the line may again be invalidated, such that with a current read pointer information in the operand buffer logic, at least one doubleword will be kept as valid before the line can be again allowed to be invalidated to ensure forward progress of execution of the operand even when there are repeated line invalidations by on at least one of the plurality of processors in the multiprocessor system.
- 9. A method to detect and re-fetch data that is fetched out-of-order in a processor of a multiprocessor system, the method comprising:
fetching instructions from a cache storage to operand buffers; executing instructions from an executing program in program order; detecting a point where data is fetched out-of-order; invalidating all data past the point where data is fetched out-of-order; providing operand re-fetch after cache line invalidation due to the out-of-order fetch; configuring operand fetch logic to maintain information indicative of where data is fetched from to support operand re-fetch; configuring a cache storage with line invalidation and configured to maintain information about which line each doubleword request comes from to process the invalidations; and configuring an operand buffer with operand buffer logic, the operand buffer logic configured to maintain information about a state of each buffer and configured to signal which buffer needs to begin the operand re-fetch for a point where the data invalidation is detected.
- 10. A method as in claim 9 wherein the providing operand re-fetch is for an instruction having operands longer that eight bytes in length.
- 11. A method as in claim 10 further comprising:
implementing an architecture that allows an operand to be updated during execution of the instruction with storage ordering rules that require only new updated data to be used after the point where the data invalidation is detected in the operand by performing the operand re-fetch to obtain the new updated data.
- 12. A method as in claim 11 wherein the configuring operand re-fetch includes allowing the operand lost to line invalidation to fetch the new updated data for all data past the point in the operand where the invalidation was detected without canceling the instruction and re-executing the instruction.
- 13. A method as in claim 12 wherein the point in the operand when the line invalidation is detected based on operand buffer invalidation information and where in the operand the data is being currently read to keep as much valid data as is architecturally allowed before marking the point of cache line invalidation.
- 14. A method as in claim 9 wherein the operand to be invalidated and the operand to be re-fetched more than one time are a same operand, the same operand is for a single instructions execution.
- 15. A method as in claim 9 wherein providing operand re-fetch includes fetching two operands for a single instruction, the re-fetch for the two operands happens at different or simultaneous times for each operand during execution.
- 16. A method as in claim 9 wherein when the providing operand re-fetch occurs the cache storage is required to return a first buffer of the operand with valid data before the line may again be invalidated, such that with a current read pointer information in the operand buffer logic, at least one doubleword will be kept as valid before the line can be again allowed to be invalidated to ensure forward progress of execution of the operand even when there are repeated line invalidations by on at least one of the plurality of processors in the multiprocessor system.
- 17. A storage medium encoded with machine-readable computer code for verifying a hardware design of a system under evaluation via a test program executing on a computer, said storage medium including instructions for causing said computer to implement a method, comprising:
fetching instructions from a cache storage to operand buffers; executing instructions from an executing program in program order; detecting a point where data is fetched out-of-order; providing operand re-fetch after cache line invalidation due to the out-of-order fetch; configuring operand fetch logic to maintain information indicative of where data is fetched from to support operand re-fetch; configuring a cache storage with line invalidation and configured to maintain information about which line each doubleword request comes from to process the invalidations; and configuring an operand buffer with operand buffer logic, the operand buffer logic configured to maintain information about a state of each buffer and configured to signal which buffer needs to begin the operand re-fetch for a point where the data invalidation is detected.
- 18. A storage medium as in claim 17 wherein the providing operand re-fetch is for an instruction having operands longer that eight bytes in length.
- 19. A storage medium as in claim 17 further comprising:
implementing an architecture that allows an operand to be updated during execution of the instruction with storage ordering rules that require only new updated data to be used after the point where the data invalidation is detected in the operand by performing the operand re-fetch to obtain the new updated data.
- 20. A storage medium as in claim 19 wherein the configuring operand re-fetch includes allowing the operand lost to line invalidation to fetch the new updated data for all data past the point in the operand where the invalidation was detected without canceling the instruction and re-executing the instruction.
RELATED APPLICATIONS
[0001] This application is related to United States Patent Application entitled “System and Method To Handle Page Validation in a Processor with Out-Of-Order Fetch”, attorney docket number POU920030073US 1, filed contemporaneously with this application.