Method for executing instructions that operate on different data types stored in the same single logical register file
First Claim
1. In a data processing apparatus, a method for executing instructions comprising the steps of:
- executing a first set of instructions of a packed instruction type on the contents of a first single logical register file, wherein said first single logical register file is operated as a flat register file while executing said first set of instructions; and
executing a first instruction of a scalar instruction type also on the contents of said first single logical register file, wherein said first single logical register file is operated as a stack referenced register file while executing said first instruction.
0 Assignments
0 Petitions
Accused Products
Abstract
A method for executing different sets of instructions that cause a processor to perform different data type operations in a manner that is invisible to various operating system techniques, that promotes good programming practices, and that is invisible to existing software conventions. According to one aspect of the invention, a data processing apparatus executes a first set of instructions of a first instruction type on what at least logically appears to software as a single logical register file. While the data processing apparatus is executing the first set of instructions, the single logical register file appears to be operated as a flat register file. In addition, the data processing apparatus executes a first instruction of a second instruction type using the logical register file. However, while the data processing apparatus is executing the first instruction, the logical register file appears to be operated as a stack referenced register file. Furthermore, the data processing apparatus alters all tags in a set of tags corresponding to the single logical register file to a non-empty state sometime between starting the execution of the first set of instructions and completing the execution of the first instruction. The tags identifying whether registers in the single logical register file are empty or non-empty.
-
Citations
25 Claims
-
1. In a data processing apparatus, a method for executing instructions comprising the steps of:
-
executing a first set of instructions of a packed instruction type on the contents of a first single logical register file, wherein said first single logical register file is operated as a flat register file while executing said first set of instructions; and
executing a first instruction of a scalar instruction type also on the contents of said first single logical register file, wherein said first single logical register file is operated as a stack referenced register file while executing said first instruction. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
altering a top of stack indication to an initialization value sometime between starting said step of executing said first set of instructions and completing said step of executing said first instruction of said scalar instruction type, wherein said top of stack indication identifies one register in said first single logical register file as a current top of stack register.
-
-
4. The method of claim 2 further comprising the step of:
altering a plurality of tags corresponding to said first single logical register file to a non-empty state sometime between starting said step of executing said first set of instructions and completing said step of executing said first instruction of said scalar instruction type, and wherein each tag in said plurality of tags corresponds to a different register in said first single logical register file and identifies whether said register is empty or non-empty.
-
5. The method of claim 2 further comprising the step of:
writing, in a sign and exponent field of each register in said first single logical register file that is written to during the step of executing said first set of instructions, a value indicating either not a number or infinity, sometime between starting said step of executing said first set of instructions and starting said step of executing said first instruction of said scalar instruction type.
-
6. The method of claim 2 further comprising the step of:
executing a second set of instructions of a packed floating point type on the contents of a second single logical register file.
-
7. The method of claim 6 further comprising the steps of:
altering a top of stack indication to an initialization value sometime between starting said step of executing said first set of instructions and completing said step of executing said first instruction of said scalar instruction type, wherein said top of stack indication identifies one register in said first single logical register file as a current top of stack register.
-
8. The method of claim 6 further comprising the step of:
altering a plurality of tags corresponding to said first single logical register file to a non-empty state sometime between starting said step of executing said first set of instructions and completing said step of executing said first instruction of said scalar instruction type, and wherein each tag in said plurality of tags corresponds to a different register in said first single logical register file and identifies whether said register is empty or non-empty.
-
9. The method of claim 6 further comprising the step of:
writing, in a sign and exponent field of each register in said first single logical register file that is written to during the step of executing said first set of instructions, a value indicating either not a number or infinity, sometime between starting said step of executing said first set of instructions and starting said step of executing said first instruction of said scalar instruction type.
-
10. In a data processing apparatus, a method for executing instructions comprising the steps of:
-
executing a set of packed integer data instructions and a set of scalar floating point instructions on the contents of a first single logical register file that is at least partially aliased, wherein a first of said floating point instructions is executed first;
executing a set of packed floating point data instructions on the contents of a second single logical register file; and
altering at least those of a plurality of tags corresponding to aliased registers in said first single logical register file to a non-empty state sometime between attempting to execute said set of packed integer data instructions and completing execution of the first of said set of scalar floating point instructions, and wherein said plurality of tags identify whether registers in said single logical resister file are empty or non-empty. - View Dependent Claims (11, 12, 13)
executing said set of packed integer data instructions on said first single logical register file as a fixed register file; and
executing said set of scalar floating point instructions on said single logical register file as a stack referenced register file.
-
-
12. The method of claim 11 further comprising the steps of:
altering a top of stack indication to an initialization value sometime between attempting to execute said set of packed integer data instructions and completing execution of the first of said set of scalar floating point instructions, wherein said top of stack indication identifies one register in said first single logical register file as a current top of stack register.
-
13. The method of claim 10 further comprising the step of:
writing, in a sign and exponent field of each register in said first single logical register file that is written to during the execution said set of packed integer data instructions, a value indicating either not a number or infinity, sometime between attempting to execute said set of packed integer data instructions and completing execution of the first of said set of scalar floating point instructions.
-
14. In a data processing apparatus, a method for executing instructions comprising the steps of:
-
executing a first set of instructions of a first instruction type on the contents of a first single logical register file, wherein said first single logical register file is operated as a flat register file while executing said first set of instructions;
executing a first instruction of a second instruction type also on the contents of said first single logical register file, wherein said first single logical register file is operated as a stack referenced register file while executing said first instruction; and
altering a top of stack indication to an initialization value sometime between starting said step of executing said first set of instructions and completing said step of executing said first instruction of said second instruction type, wherein said top of stack indication identifies one register in said first single logical register file as a current top of stack register. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
altering a plurality of tags corresponding to said first single logical register file to a non-empty state sometime between starting said step of executing said first set of instructions and completing said step of executing said first instruction of said second instruction type, and wherein each tag in said plurality of tags corresponds to a different register in said first single logical register file and identifies whether said register is empty or non-empty.
-
-
16. The method of claim 15, wherein said step of altering is performed in response to either attempting to execute said first instruction or executing the first of said first set of instructions.
-
17. The method of claim 15, wherein said step of altering is performed in between said step of executing said first set of instructions and executing said first instruction of said second instruction type.
-
18. The method of claim 15, wherein said step of altering is performed in response to attempting to execute the first of said first set of instructions.
-
19. The method of claim 15, wherein said first and second instruction types are respectively packed instructions and scalar instructions.
-
20. The method of claim 15, wherein said first and second instruction types are respectively packed integer instructions and scalar floating point instructions.
-
21. The method of claim 20 further comprising the step of:
executing a second set of instructions of a packed floating point type on the contents of a second single logical register file.
-
22. The method of claim 20, wherein said first and second instruction types are respectively packed instructions and scalar instructions.
-
23. The method of claim 20, wherein said first and second instruction types are respectively packed integer instructions and scalar floating point instructions.
-
24. The method of claim 23 further comprising the step of:
executing a second set of instructions of a packed floating point type on the contents of a second single logical register file.
-
25. The method of claim 15 further comprising the step of:
writing, in a sign and exponent field of each register in said first single logical register file that is written to during the step of executing said first set of instructions, a value indicating either not a number or infinity, sometime between starting said step of executing said first set of instructions and starting said step of executing said first instruction of said second instruction type.
Specification