summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/gpu-cache.h
diff options
context:
space:
mode:
authorWilson Fung <[email protected]>2013-02-18 20:37:36 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:50:05 -0700
commita37b03ced9c3f2a1ea832144a3d8087148ec77de (patch)
tree4dafd291d4aac2af1bfce164af245a0b18e4c523 /src/gpgpu-sim/gpu-cache.h
parentb7fc118ef12b8706d2e951aa00101de7d4d56af1 (diff)
Adding a check to prevent writeback cache with allocation-on-fill.
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 15277]
Diffstat (limited to 'src/gpgpu-sim/gpu-cache.h')
-rw-r--r--src/gpgpu-sim/gpu-cache.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gpgpu-sim/gpu-cache.h b/src/gpgpu-sim/gpu-cache.h
index fb59c01..6dce6b4 100644
--- a/src/gpgpu-sim/gpu-cache.h
+++ b/src/gpgpu-sim/gpu-cache.h
@@ -179,6 +179,19 @@ public:
default: exit_parse_error();
}
+ // detect invalid configuration
+ if (m_alloc_policy == ON_FILL and m_write_policy == WRITE_BACK) {
+ // A writeback cache with allocate-on-fill policy will inevitably lead to deadlock:
+ // The deadlock happens when an incoming cache-fill evicts a dirty
+ // line, generating a writeback request. If the memory subsystem
+ // is congested, the interconnection network may not have
+ // sufficient buffer for the writeback request. This stalls the
+ // incoming cache-fill. The stall may propagate through the memory
+ // subsystem back to the output port of the same core, creating a
+ // deadlock where the wrtieback request and the incoming cache-fill
+ // are stalling each other.
+ assert(0 && "Invalid cache configuration: Writeback cache cannot allocate new line on fill. ");
+ }
}
bool disabled() const { return m_disabled;}
unsigned get_line_sz() const