DVMC verifies Allowable Reordering by checking
all reorderings between program order and cache access
order (described in Section 3.) against the restrictions
defined by the ordering table. The position in program
order is obtained by labeling every instruction X with a
sequence number, seqX, that is stored in the ROB during
decode. Since operations are decoded in program order,
seqX equals X’s rank in program order. The rank in perform order is implicitly known, because we verify
Allowable Reordering when an operation performs. The
Allowable Reordering checker uses the sequence numbers to find reorderings and check them against the
ordering table. For this purpose, the checker maintains a
counter register for every operation type OPx (e.g., load
or store) in the ordering table. This counter, max{OPx},
contains the greatest sequence number of an operation
of type OPx that has already performed. When operation
X of type OPx performs, the checker verifies that seqX >
max{OPy} for all operation types OPy that have an
ordering relation OPx