aboutsummaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.cc
diff options
context:
space:
mode:
authorMahmoud <[email protected]>2018-08-22 10:19:52 -0400
committerMahmoud <[email protected]>2018-08-22 10:19:52 -0400
commit8c81c1d04e8d20b08f122a12ce090b4f926adb4c (patch)
tree501c07ab11a733b017fc65fa3e38d636a49ae8a6 /src/gpgpu-sim/shader.cc
parent1e1c08286a505418d0e3ad1ee819e15881e9cb43 (diff)
adding lazy-fetch-on-read and invalidate operation to cache
Diffstat (limited to 'src/gpgpu-sim/shader.cc')
-rw-r--r--src/gpgpu-sim/shader.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc
index d2f40a1..b660b8c 100644
--- a/src/gpgpu-sim/shader.cc
+++ b/src/gpgpu-sim/shader.cc
@@ -1593,6 +1593,11 @@ void ldst_unit::flush(){
m_L1D->flush();
}
+void ldst_unit::invalidate(){
+ // Flush L1D cache
+ m_L1D->invalidate();
+}
+
simd_function_unit::simd_function_unit( const shader_core_config *config )
{
m_config=config;
@@ -2644,6 +2649,11 @@ void shader_core_ctx::cache_flush()
m_ldst_unit->flush();
}
+void shader_core_ctx::cache_invalidate()
+{
+ m_ldst_unit->invalidate();
+}
+
// modifiers
std::list<opndcoll_rfu_t::op_t> opndcoll_rfu_t::arbiter_t::allocate_reads()
{
@@ -3461,6 +3471,12 @@ void simt_core_cluster::cache_flush()
m_core[i]->cache_flush();
}
+void simt_core_cluster::cache_invalidate()
+{
+ for( unsigned i=0; i < m_config->n_simt_cores_per_cluster; i++ )
+ m_core[i]->cache_invalidate();
+}
+
bool simt_core_cluster::icnt_injection_buffer_full(unsigned size, bool write)
{
unsigned request_size = size;