MICROPROCESSOR WITH MICROARCHITECTURE FOR EFFICIENTLY EXECUTING READ/MODIFY/WRITE MEMORY OPERAND INSTRUCTIONS
First Claim
1. A microprocessor having a macroinstruction set in its macroarchitecture that includes a macroinstruction that instructs the microprocessor to perform a read/modify/write operation on an operand in memory, the microprocessor comprising:
- an instruction translator, configured to translate the macroinstruction into exactly three microinstructions to perform the read/modify/write operation on the memory operand, wherein the three microinstructions are first, second, and third microinstructions;
wherein the first microinstruction instructs the microprocessor to load the memory operand into the microprocessor from a memory location and to calculate a destination address of the memory location;
wherein the second microinstruction instructs the microprocessor to perform an arithmetic or logical operation on the loaded memory operand to generate a result;
wherein the third microinstruction instructs the microprocessor to write the result to the memory location whose destination address is calculated by the first microinstruction;
a first execution unit, configured to receive the first microinstruction, to responsively load the memory operand into the microprocessor from the memory location; and
a second execution unit, configured to also receive the first microinstruction, to responsively calculate the destination address of the memory location, wherein the first and second execution units are distinct execution units within the microprocessor.
1 Assignment
0 Petitions
Accused Products
Abstract
The microprocessor includes an instruction translator that translates a macroinstruction of a macroinstruction set in its macroarchitecture into exactly three microinstructions to perform a read/modify/write operation on a memory operand. The first microinstruction instructs the microprocessor to load the memory operand into the microprocessor from a memory location and to calculate a destination address of the memory location. The second microinstruction instructs the microprocessor to perform an arithmetic or logical operation on the loaded memory operand to generate a result. The third microinstruction instructs the microprocessor to write the result to the memory location whose destination address is calculated by the first microinstruction. A first execution unit receives the first microinstruction and responsively loads the memory operand into the microprocessor from the memory location, and a second distinct execution unit also receives the first microinstruction and responsively calculates the destination address of the memory location.
29 Citations
25 Claims
-
1. A microprocessor having a macroinstruction set in its macroarchitecture that includes a macroinstruction that instructs the microprocessor to perform a read/modify/write operation on an operand in memory, the microprocessor comprising:
-
an instruction translator, configured to translate the macroinstruction into exactly three microinstructions to perform the read/modify/write operation on the memory operand, wherein the three microinstructions are first, second, and third microinstructions; wherein the first microinstruction instructs the microprocessor to load the memory operand into the microprocessor from a memory location and to calculate a destination address of the memory location; wherein the second microinstruction instructs the microprocessor to perform an arithmetic or logical operation on the loaded memory operand to generate a result; wherein the third microinstruction instructs the microprocessor to write the result to the memory location whose destination address is calculated by the first microinstruction; a first execution unit, configured to receive the first microinstruction, to responsively load the memory operand into the microprocessor from the memory location; and a second execution unit, configured to also receive the first microinstruction, to responsively calculate the destination address of the memory location, wherein the first and second execution units are distinct execution units within the microprocessor. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method for executing a macroinstruction in a microprocessor having a macroinstruction set in its macroarchitecture that includes the macroinstruction that instructs the microprocessor to perform a read/modify/write operation on an operand in memory, the method comprising:
-
translating the macroinstruction into exactly three microinstructions to perform the read/modify/write operation on the memory operand, wherein the three microinstructions are first, second, and third microinstructions; wherein the first microinstruction instructs the microprocessor to load the memory operand into the microprocessor from a memory location and to calculate a destination address of the memory location; wherein the second microinstruction instructs the microprocessor to modify the loaded memory operand to generate a result; wherein the third microinstruction instructs the microprocessor to write the result to the memory location whose destination address is calculated by the first microinstruction; receiving the first microinstruction by both first and second execution units of the microprocessor; loading the memory operand into the microprocessor from the memory location, wherein said loading is performed by a first execution unit of the microprocessor in response to said receiving; and calculating the destination address of the memory location, wherein said calculating is performed by a second execution unit of the microprocessor in response to said receiving, wherein the first and second execution units are distinct execution units within the microprocessor. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
-
19. A microprocessor having a macroinstruction set in its macroarchitecture that includes a macroinstruction that instructs the microprocessor to perform a read/modify/write operation on a memory operand having an address, the microprocessor comprising:
-
a cache memory, configured to cache data including the memory operand; an instruction translator, configured to translate the macroinstruction into exactly three microinstructions to perform the read/modify/write operation on the memory operand, wherein the three microinstructions are first, second, and third microinstructions; a first execution unit, configured to load the operand from the cache memory into a register of the microprocessor in response to the first microinstruction; a second execution unit, configured to calculate the address of the memory operand also in response to the first microinstruction; a third execution unit, configured to perform an arithmetic or logical operation on the operand from the register to generate a result in response to the second microinstruction after the first execution unit loads the operand from cache memory; and a fourth execution unit, configured to store the result to the cache memory at the address calculated by the second execution unit in response to the third microinstruction; wherein the first, second, third, and fourth execution units are distinct execution units within the microprocessor. - View Dependent Claims (20)
-
-
21. A microprocessor having a macroinstruction set in its macroarchitecture that includes a macroinstruction that instructs the microprocessor to perform a read/modify/write operation on an operand in memory, the microprocessor comprising:
-
an instruction translator, configured to translate the macroinstruction into a plurality of microinstructions to perform the read/modify/write operation on the memory operand; first and second execution units, each configured to receive a first of the plurality of microinstructions, wherein the first execution unit is configured to execute the read operation on the memory operand, wherein the second execution unit is configured to execute the write operation on the memory operand, wherein the first and second execution units are distinct execution units within the microprocessor; and a reorder buffer, coupled to the instruction translator and to the first and second execution units, having a plurality of entries for storing microinstructions, wherein the microprocessor allocates a single entry configured to store the first microinstruction even though both of the first and second execution units receive and execute the first microinstruction. - View Dependent Claims (22, 23, 24)
-
-
25. A microprocessor having a macroinstruction set in its macroarchitecture that includes a macroinstruction that instructs the microprocessor to perform a read/modify/write operation on a memory operand having an address, the microprocessor comprising:
-
an instruction translator, configured to translate the macroinstruction into exactly three microinstructions to perform the read/modify/write operation on the memory operand; a first execution unit, exclusively configured among all the execution units of the microprocessor to calculate read operation addresses of memory operands; and a second execution unit, exclusively configured among all the execution units of the microprocessor to calculate write operation addresses of memory operands, wherein the first and second execution units are distinct execution units within the microprocessor; and wherein the microprocessor is configured to dispatch one of the three microinstructions to the first execution unit to calculate the read operation address of the memory operand, and to also dispatch the one of the three microinstructions to the second execution unit to calculate the write operation address of the memory operand.
-
Specification