MOESI_hammer: minor fixes to full-bit dir
authorBrad Beckmann <Brad.Beckmann@amd.com>
Sat, 19 Mar 2011 21:17:48 +0000 (14:17 -0700)
committerBrad Beckmann <Brad.Beckmann@amd.com>
Sat, 19 Mar 2011 21:17:48 +0000 (14:17 -0700)
src/mem/protocol/MOESI_hammer-dir.sm

index 0bc863afbe90f87d3e0cf93859afdc14571bdd7d..369f8784b661ee9f0ce9544effb3bc9599fa31e6 100644 (file)
@@ -186,7 +186,7 @@ machine(Directory, "AMD Hammer-like protocol")
   }
 
   PfEntry getProbeFilterEntry(Address addr), return_by_pointer="yes" {
-    if(probe_filter_enabled) {
+    if (probe_filter_enabled || full_bit_dir_enabled) {
       PfEntry pfEntry := static_cast(PfEntry, "pointer", probeFilter.lookup(addr));
       return pfEntry;
     }
@@ -200,8 +200,6 @@ machine(Directory, "AMD Hammer-like protocol")
       if (probe_filter_enabled || full_bit_dir_enabled) {
         if (is_valid(pf_entry)) {
           assert(pf_entry.PfState == getDirectoryEntry(addr).DirectoryState);
-        } else {
-          assert(getDirectoryEntry(addr).DirectoryState == State:E);
         }
       }
       return getDirectoryEntry(addr).DirectoryState;
@@ -219,6 +217,9 @@ machine(Directory, "AMD Hammer-like protocol")
       if (state == State:NX || state == State:NO || state == State:S || state == State:O) {
         assert(is_valid(pf_entry));
       }
+      if (state == State:E) {
+        assert(is_valid(pf_entry) == false);
+      }
     }
     if (state == State:E || state == State:NX || state == State:NO || state == State:S || 
         state == State:O) {
@@ -469,6 +470,7 @@ machine(Directory, "AMD Hammer-like protocol")
       peek(requestQueue_in, RequestMsg) {
         set_cache_entry(probeFilter.allocate(address, new PfEntry));
         cache_entry.Owner := in_msg.Requestor;
+        cache_entry.Sharers.setSize(machineCount(MachineType:L1Cache));
       }
     }
   }