Claims Analysis
Total Claims: 5
Claim 1
Independent Claim
242 words
A method of reordering memory operations in superscalar or very long instruction word (VLIW) processors even for arbitrarily separated and ambiguous memory references comprising the steps of: decoding instructions issued by a processor; determining if a decoded instruction is an out-of-order load instruction and, if so, determining if the out-of-order load instruction generates an exception; setting a delayed exception bit associated with a target register of the load instruction for an out-of-order load instruction which generates an exception; saving a memory address of an out-of-order load instruction which does not generate an exception in an address comparator and setting a valid bit for the saved memory address in the address comparator; determining if a decoded instruction is a store operation; comparing a range of memory addresses referenced by a decoded store instruction with all entries in the address comparator; for each match of an entry in the address comparator, setting the valid bit of the corresponding entry to invalid; determining if a decoded instruction is a commit operation; checking the valid bit of the address comparator entry associated with a target register of the decoded commit operation and generating a delayed exception if the valid bit is set to invalid and, at the same time, checking the delayed exception bit of a source register of the commit operation and, if the delayed exception bit is set, generating a delayed exception; and aborting an excepting instruction and transferring control to an exception handler.
Claim 2
Independent Claim
242 words
A method of reordering memory operations in superscalar or very long instruction word (VLIW) processors even for arbitrarily separated and ambiguous memory references comprising the steps of: decoding instructions issued by a processor; determining if a decoded instruction is an out-of-order load instruction and, if so, determining if the out-of-order load instruction generates an exception; setting a delayed exception bit associated with a target register of the load instruction for an out-of-order load instruction which generates an exception; saving a memory address of an out-of-order load instruction which does not generate an exception in an address comparator and setting a valid bit for the saved memory address in the address comparator; determining if a decoded instruction is a store operation; comparing a range of memory addresses referenced by a decoded store instruction with all entries in the address comparator; for each match of an entry in the address comparator, setting the valid bit of the corresponding entry to invalid; determining if a decoded instruction is a commit operation; checking the valid bit of the address comparator entry associated with a target register of the decoded commit operation and generating a delayed exception if the valid bit is set to invalid and, at the same time, checking the delayed exception bit of a source register of the commit operation and, if the delayed exception bit is set, generating a delayed exception; and aborting an excepting instruction and transferring control to an exception handler.
Claim 3
Dependent Claim
71 words
The method of reordering memory operations in superscalar or very long instruction word (VLIW) processors recited in claim 1 further comprising the steps of: determining if the decoded instruction is other than an out-of-order load, a store or a commit instruction; and checking the delayed exception bit for all source registers used by the instruction and if any delayed exception bits are set, setting corresponding delayed exception bits in target registers.
Claim 4
Dependent Claim
278 words
A superscalar or very long instruction word (VLIW) processor capable of reordering memory operations even for arbitrarily separated and ambiguous memory references comprising: a decoder for decoding instructions issued by the processor; a plurality of registers each having delayed exception bits accessible as special purpose registers; functional means for determining if a decoded instruction is an out-of-order load instruction and, if so, determining if the out-of-order load instruction generates an exception, said functional means setting a delayed exception bit associated with a target register of the load instruction for an out-of-order load instruction which generates an exception; an address comparator for saving a memory address of an out-of-order load instruction which does not generate an exception, said address comparator having a valid bit which is set for the saved memory address; said functional means determining if a decoded instruction is a store operation; said address comparator comparing a range of memory addresses referenced by a decoded store instruction with all entries in the address comparator and, for each match of an entry in the address comparator, setting the valid bit of the corresponding entry to invalid; said functional means determining if a decoded instruction is a commit operation, checking the valid bit of the address comparator entry associated with a source register of the decoded commit operation and generating a delayed exception if the valid bit is set to invalid and, at the same time, checking the delayed exception bit of a source register of the commit operation and, if the delayed exception bit is set, generating a delayed exception and aborting the excepting instruction; and an exception handler executing recovery code when an excepting instruction is aborted.
Claim 5
Dependent Claim
278 words
A superscalar or very long instruction word (VLIW) processor capable of reordering memory operations even for arbitrarily separated and ambiguous memory references comprising: a decoder for decoding instructions issued by the processor; a plurality of registers each having delayed exception bits accessible as special purpose registers; functional means for determining if a decoded instruction is an out-of-order load instruction and, if so, determining if the out-of-order load instruction generates an exception, said functional means setting a delayed exception bit associated with a target register of the load instruction for an out-of-order load instruction which generates an exception; an address comparator for saving a memory address of an out-of-order load instruction which does not generate an exception, said address comparator having a valid bit which is set for the saved memory address; said functional means determining if a decoded instruction is a store operation; said address comparator comparing a range of memory addresses referenced by a decoded store instruction with all entries in the address comparator and, for each match of an entry in the address comparator, setting the valid bit of the corresponding entry to invalid; said functional means determining if a decoded instruction is a commit operation, checking the valid bit of the address comparator entry associated with a source register of the decoded commit operation and generating a delayed exception if the valid bit is set to invalid and, at the same time, checking the delayed exception bit of a source register of the commit operation and, if the delayed exception bit is set, generating a delayed exception and aborting the excepting instruction; and an exception handler executing recovery code when an excepting instruction is aborted.