summaryrefslogtreecommitdiff
path: root/src/cpu/o3/lsq_unit.hh
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2012-01-28 19:09:04 -0600
committerNilay Vaish <nilay@cs.wisc.edu>2012-01-28 19:09:04 -0600
commit5c2fc35e029d8cd8e69e983e1baef6b86e47d64d (patch)
tree03e3f37b4cef15a165f79b5dde0a7abee14e0523 /src/cpu/o3/lsq_unit.hh
parent4acca8a0536d4445ed25b67edf571ae460446ab9 (diff)
downloadgem5-5c2fc35e029d8cd8e69e983e1baef6b86e47d64d.tar.xz
O3 CPU LSQ: Implement TSO
This patch makes O3's LSQ maintain total order between stores. Essentially only the store at the head of the store buffer is allowed to be in flight. Only after that store completes, the next store is issued to the memory system. By default, the x86 architecture will have TSO.
Diffstat (limited to 'src/cpu/o3/lsq_unit.hh')
-rw-r--r--src/cpu/o3/lsq_unit.hh6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/cpu/o3/lsq_unit.hh b/src/cpu/o3/lsq_unit.hh
index 3c1af4533..a11d95f3b 100644
--- a/src/cpu/o3/lsq_unit.hh
+++ b/src/cpu/o3/lsq_unit.hh
@@ -453,6 +453,9 @@ class LSQUnit {
/** Has the blocked load been handled. */
bool loadBlockedHandled;
+ /** Whether or not a store is in flight. */
+ bool storeInFlight;
+
/** The sequence number of the blocked load. */
InstSeqNum blockedLoadSeqNum;
@@ -466,6 +469,9 @@ class LSQUnit {
/** The packet that is pending free cache ports. */
PacketPtr pendingPkt;
+ /** Flag for memory model. */
+ bool needsTSO;
+
// Will also need how many read/write ports the Dcache has. Or keep track
// of that in stage that is one level up, and only call executeLoad/Store
// the appropriate number of times.