diff options
author | Ali Saidi <Ali.Saidi@ARM.com> | 2011-04-04 11:42:23 -0500 |
---|---|---|
committer | Ali Saidi <Ali.Saidi@ARM.com> | 2011-04-04 11:42:23 -0500 |
commit | 7dde557fdc51140988092962137e1006d1609bea (patch) | |
tree | 7511f093667759fb13a88cb204247b416295b3c9 /src/cpu/o3/lsq_unit.hh | |
parent | ee489a541a8a49de4e8ca6e486081149f57de99f (diff) | |
download | gem5-7dde557fdc51140988092962137e1006d1609bea.tar.xz |
O3: Tighten memory order violation checking to 16 bytes.
The comment in the code suggests that the checking granularity should be 16
bytes, however in reality the shift by 8 is 256 bytes which seems much
larger than required.
Diffstat (limited to 'src/cpu/o3/lsq_unit.hh')
-rw-r--r-- | src/cpu/o3/lsq_unit.hh | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cpu/o3/lsq_unit.hh b/src/cpu/o3/lsq_unit.hh index 2bb42cadc..bdc524dec 100644 --- a/src/cpu/o3/lsq_unit.hh +++ b/src/cpu/o3/lsq_unit.hh @@ -111,6 +111,12 @@ class LSQUnit { /** Inserts a store instruction. */ void insertStore(DynInstPtr &store_inst); + /** Check for ordering violations in the LSQ + * @param load_idx index to start checking at + * @param inst the instruction to check + */ + Fault checkViolations(int load_idx, DynInstPtr &inst); + /** Executes a load instruction. */ Fault executeLoad(DynInstPtr &inst); @@ -366,6 +372,14 @@ class LSQUnit { */ unsigned SQEntries; + /** The number of places to shift addresses in the LSQ before checking + * for dependency violations + */ + unsigned depCheckShift; + + /** Should loads be checked for dependency issues */ + bool checkLoads; + /** The number of load instructions in the LQ. */ int loads; /** The number of store instructions in the SQ. */ |