Register scoreboarding to support overlapped execution of vector memory reference instructions in a vector processor
First Claim
1. A method of overlapping the execution of multiple instructions in a virtual-address vector computer having architectural registers holding multiple vector elements, and a control unit for reading and writing said vector elements in said registers in accordance with a sequence of instructions, the method comprising:
- executing a plurality of the instructions overlapped in time with each other, at least one of the instructions being a vector memory reference instruction (VMRI);
repeating the following operations for each of the overlapped instructions;
If the instruction is a VMRI, assigning a column of indicators to the VMRI, the indicators in the column corresponding to respective ones of the registers and setting all of the indicators in the column to an “
unused”
state;
identifying one of the registers as a source register for the overlapped instructions;
if the indicator corresponding to the source register is in the “
unused”
state, setting said indicator corresponding to the source register to a “
live”
state;
identifying one of the registers as a target register for the overlapped instruction;
if the indicator corresponding to the target register is in the “
unused”
state, setting said indicator corresponding to the target register to a “
dead”
state;
if the indicator corresponding to the target register is in the “
live”
state, stalling the overlapped instructions.
6 Assignments
0 Petitions
Accused Products
Abstract
A vector-processor SIMD RISC computer system uses virtual addressing and overlapped instruction execution. Indicators for each of the architected registers assume different states when an instruction, overlapped with a vector memory-reference instruction, has or has not read from or written to a particular register. Multiple overlapped vector memory-reference instructions are assigned separate sets of indicators. Indicators in a certain state prevents a subsequent overlapped instruction from writing to its associated register.
55 Citations
30 Claims
-
1. A method of overlapping the execution of multiple instructions in a virtual-address vector computer having architectural registers holding multiple vector elements, and a control unit for reading and writing said vector elements in said registers in accordance with a sequence of instructions, the method comprising:
-
executing a plurality of the instructions overlapped in time with each other, at least one of the instructions being a vector memory reference instruction (VMRI);
repeating the following operations for each of the overlapped instructions;
If the instruction is a VMRI, assigning a column of indicators to the VMRI, the indicators in the column corresponding to respective ones of the registers and setting all of the indicators in the column to an “
unused”
state;
identifying one of the registers as a source register for the overlapped instructions;
if the indicator corresponding to the source register is in the “
unused”
state, setting said indicator corresponding to the source register to a “
live”
state;
identifying one of the registers as a target register for the overlapped instruction;
if the indicator corresponding to the target register is in the “
unused”
state, setting said indicator corresponding to the target register to a “
dead”
state;
if the indicator corresponding to the target register is in the “
live”
state, stalling the overlapped instructions.- View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
detecting completion of the VMRI;
setting the indicators in the column to the “
unused”
state.
-
-
3. The method of claim 2, wherein the completion of the VMRI is a successful completion.
-
4. The method of claim 3, further comprising freeing the column for use by a subsequent VMRI in the sequence of instructions.
-
5. The method of claim 2, wherein the completion of the VMRI denotes a page fault.
-
6. The method of claim 5, further comprising rolling back the overlapped instructions.
-
7. The method of claim 1, further comprising reading the contents of the source register.
-
8. The method of claim 1, further comprising writing to the target register if the indicator corresponding to the target register is not in the “
- live”
state.
- live”
-
9. A method of overlapping the execution of multiple instructions in a virtual-address vector computer having architectural registers holding multiple vector elements, and a control unit for reading and writing said vector elements in said registers in accordance with a sequence of instructions, the method comprising:
-
executing a plurality of the instructions overlapped in time with each other, a plurality of the overlapped instructions being vector memory reference instructions (VMRIs);
repeating, for each of the overlapped instructions, identifying one of the registers as a source register for overlapped instruction;
if any of the indicators in the row corresponding to the source register is in the “
unused”
state, setting the indicator in the row corresponding to the source register and in the column corresponding to a current one of the instructions to a “
live”
state;
identifying one of the registers as a target register for the overlapped instruction;
if any of the indicators in the row corresponding to the target register is in the “
unused”
state, setting the indicator in the row corresponding to the target register and in the column corresponding to the current one of the instructions to a “
dead”
state;
if any of the indicators corresponding to the target register in the “
live”
state, stalling the overlapped instructions.- View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
detecting completion of one of the VMRIs;
setting the indicators in the column assigned to the completed VMRI to the “
unused”
state.
-
-
15. The method of claim 14, further comprising freeing the column assigned to the completed VMRI.
-
16. The method of claim 15, further comprising reassigning the freed column to another of the plurality of VMRIs.
-
17. The method of claim 14, further comprising rolling back the overlapped instructions.
-
18. A vector computer for executing overlapped instructions including vector memory-reference instructions (VMRIs) containing virtual addresses representing multi-element vectors, the computer comprising:
-
a memory subsystem for translating the virtual addresses to and from real addresses in response to the VMRIs;
a set of architectural registers coupled to the memory subsystem;
a matrix of indicators in a plurality of rows each corresponding to one of said registers and in at least one column associated with one of the VMRIs, each of the indicators being capable of assuming any of at least three different states, including an “
unused”
state indicating that its corresponding register has been neither written nor read during execution of one of the overlapped instructions,a “
dead”
state indicating that its corresponding register has been written during execution of one of the overlapped instructions,a “
live”
state indicating that its corresponding register has been read during execution of one of the overlapped instructions;
a control unit coupled to said registers and to said memory unit for reading and writing particular ones of the registers in response to the overlapped instructions, and for stalling executing of the overlapped instructions when both one of the overlapped instructions requests writing one of the registers, and one of the indicators associated with said one register is in the “
live”
state.- View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27)
a memory unit for storing data at the real addresses; and
a load/store unit for translating between the real addresses and the virtual addresses.
-
-
24. The computer of claim 23, wherein the data includes elements of multi-element vectors.
-
25. The computer of claim 23 wherein the memory subsystem further comprises a translation buffer coupled between said memory unit and said load/store unit.
-
26. The computer of claim 23, further comprising a vector processing unit having a vector function unit coupled to the registers.
-
27. The computer of claim 26, further comprising a scalar processing unit coupled to said vector processing unit and to said load/store unit.
-
28. A vector computer for executing overlapped instructions including vector memory-reference instructions (VMRIs) containing virtual addresses representing multi-element vectors, the computer comprising:
-
memory means for translating the virtual addresses to and from real addresses in response to the VMRIs;
a set of register means coupled to the memory means;
a matrix of indicator means in a plurality of rows each corresponding to one of said register means and in a plurality of columns each associated with a different one of the VMRIs, each of the indicator means being capable of assuming any of at least three different states, including an “
unused”
state indicating that its corresponding register means has been neither written nor read during execution of one of the overlapped instructions,a “
dead”
state indicating that its corresponding register means has been written during execution of one of the overlapped instructions,a “
live”
state indicating that its corresponding register means has been read during execution of one of the overlapped instructions;
control means coupled to said register means and to said memory means for reading and writing particular ones of the register means in response to the overlapped instructions, and for stalling executing of the overlapped instructions when both one of the overlapped instructions requests writing one of the register means, and one of the indicator means associated with said one register means is in the “
live”
state.- View Dependent Claims (29, 30)
-
Specification