summaryrefslogtreecommitdiff
path: root/src/cpu/o3/lsq_unit.hh
diff options
context:
space:
mode:
authorAli Saidi <Ali.Saidi@ARM.com>2011-04-04 11:42:23 -0500
committerAli Saidi <Ali.Saidi@ARM.com>2011-04-04 11:42:23 -0500
commit7dde557fdc51140988092962137e1006d1609bea (patch)
tree7511f093667759fb13a88cb204247b416295b3c9 /src/cpu/o3/lsq_unit.hh
parentee489a541a8a49de4e8ca6e486081149f57de99f (diff)
downloadgem5-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.hh14
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. */