Detecting raw hazards in an object-addressed memory hierarchy by comparing an object identifier and offset for a load instruction to object identifiers and offsets in a store queue
First Claim
1. A method for processing memory-access instructions in an object-addressed memory hierarchy, comprising:
- receiving at least one store instruction to be executed, wherein the store instruction specifies an object identifier (OID) and an offset;
creating an entry in a store queue for the store instruction, wherein the entry includes a valid flag for the offset and a separate valid flag for the OID;
when the offset for the store instruction becomes available, storing the offset into the entry and setting the valid flag for the offset;
when the OID for the store instruction becomes available, storing the OID for the store instruction into the entry and setting the valid flag for the OID; and
when a data value for the store instruction becomes available, storing the data value into a data field of the entry;
receiving a load instruction to be executed, wherein the load instruction loads a data item from an object, and wherein the load instruction specifies an OID for the object and an offset for the data item within the object;
comparing the OID and the offset for the load instruction against OIDs and offsets for outstanding store instructions in the store queue; and
if the offset for the load instruction does not match any of the offsets for the outstanding store instructions in the store queue, and hence no read-after-write (RAW) hazard exists, performing a cache access to retrieve the data item for the load instruction.
2 Assignments
0 Petitions
Accused Products
Abstract
One embodiment of the present invention provides a system that processes memory-access instructions in an object-addressed memory hierarchy. During operation, the system receives a load instruction to be executed, wherein the load instruction loads a data item from an object, and wherein the load instruction specifies an object identifier (OID) for the object and an offset for the data item within the object. Next, the system compares the OID and the offset for the data item against OIDs and offsets for outstanding store instructions in a store queue. If the offset for the data item does not match any of the offsets for the outstanding store instructions in the store queue, and hence no read-after-write (RAW) hazard exists, the system performs a cache access to retrieve the data item for the load instruction.
57 Citations
16 Claims
-
1. A method for processing memory-access instructions in an object-addressed memory hierarchy, comprising:
-
receiving at least one store instruction to be executed, wherein the store instruction specifies an object identifier (OID) and an offset; creating an entry in a store queue for the store instruction, wherein the entry includes a valid flag for the offset and a separate valid flag for the OID; when the offset for the store instruction becomes available, storing the offset into the entry and setting the valid flag for the offset; when the OID for the store instruction becomes available, storing the OID for the store instruction into the entry and setting the valid flag for the OID; and when a data value for the store instruction becomes available, storing the data value into a data field of the entry; receiving a load instruction to be executed, wherein the load instruction loads a data item from an object, and wherein the load instruction specifies an OID for the object and an offset for the data item within the object; comparing the OID and the offset for the load instruction against OIDs and offsets for outstanding store instructions in the store queue; and if the offset for the load instruction does not match any of the offsets for the outstanding store instructions in the store queue, and hence no read-after-write (RAW) hazard exists, performing a cache access to retrieve the data item for the load instruction. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. An apparatus that efficiently processes memory-access instructions in an object-addressed memory hierarchy, comprising:
-
an instruction-processing mechanism configured to receive a load instruction to be executed, wherein the load instruction loads a data item from an object, and wherein the load instruction specifies an object identifier (OID) for the object and an offset for the data item within the object; wherein the instruction-processing mechanism is further configured to receive at least one store instruction to be executed, wherein the store instruction specifies an OID and an offset, and wherein the instruction-processing mechanism is further configured to; create an entry in a store queue for the store instruction, wherein the entry includes a valid flag for the offset for the store instruction and a separate valid flag for the OID for the store instruction; when the offset for the store instruction becomes available, store the offset for the store instruction into the entry and set the valid flag for the offset for the store instruction; when the OID for the store instruction becomes available, store the OID for the store instruction into the entry and set the valid flag for the OID for the store instruction; and when a data value for the store instruction becomes available, store the data value into a data field of the entry; a comparison mechanism configured to compare the OID and the offset for the load instruction against OIDs and offsets for outstanding store instructions in the store queue; and wherein if the offset for the load instruction does not match any of the offsets for the outstanding store instructions in the store queue, and hence no RAW hazard exists, the instruction-processing mechanism is configured to perform a cache access to retrieve the data item for the load instruction. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A computer system which is configured to efficiently processes memory-access instructions in an object-addressed memory hierarchy, comprising:
-
a processor; a memory; an instruction-processing mechanism within the processor configured to receive a load instruction to be executed, wherein the load instruction loads a data item from an object, and wherein the load instruction specifies an object identifier (OID) for the object and an offset for the data item within the object; wherein the instruction-processing mechanism is further configured to receive at least one store instruction to be executed, wherein the store instruction specifies an OID and an offset, and wherein the instruction-processing mechanism is further configured to; create an entry in a store queue for the store instruction, wherein the entry includes a valid flag for the offset for the store instruction and a separate valid flag for the OID for the store instruction; when the offset for the store instruction becomes available, store the offset into the entry and set the valid flag for the offset for the store instruction; when the OID for the store instruction becomes available, store the OID for the store instruction into the entry and set the valid flag for the OID for the store instruction; and when a data value for the store instruction becomes available, store the data value into a data field of the entry; a comparison mechanism within the processor configured to compare the OID and the offset for the load instruction against OIDs and offsets for outstanding store instructions in the store queue; and wherein if the offset for the load instruction does not match any of the offsets for the outstanding store instructions in the store queue, and hence no RAW hazard exists, the instruction-processing mechanism is configured to perform a cache access to retrieve the data item for the load instruction. - View Dependent Claims (14, 15, 16)
-
Specification