diff options
author | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2019-03-17 01:07:01 +0100 |
---|---|---|
committer | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2019-03-17 01:07:01 +0100 |
commit | f44ecd1e02c0f4760124a95b5019f67d0e77ecb7 (patch) | |
tree | 8fee484f9778fb8509c262c34dd7f2974d7105dd /qtmips_machine | |
parent | 8b5298566773275b5c8423dace3396a325f38541 (diff) | |
download | qtmips-f44ecd1e02c0f4760124a95b5019f67d0e77ecb7.tar.gz qtmips-f44ecd1e02c0f4760124a95b5019f67d0e77ecb7.tar.bz2 qtmips-f44ecd1e02c0f4760124a95b5019f67d0e77ecb7.zip |
Highlight actual word read or written to the cache.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_machine')
-rw-r--r-- | qtmips_machine/cache.cpp | 6 | ||||
-rw-r--r-- | qtmips_machine/cache.h | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/qtmips_machine/cache.cpp b/qtmips_machine/cache.cpp index 961ab49..ec6a021 100644 --- a/qtmips_machine/cache.cpp +++ b/qtmips_machine/cache.cpp @@ -179,7 +179,7 @@ void Cache::flush() { for (unsigned st = 0; st < cnf.sets(); st++) if (dt[as][st].valid) { kick(as, st); - emit cache_update(as, st, 0, false, false, 0, 0); + emit cache_update(as, st, 0, false, false, 0, 0, false); } change_counter++; update_statistics(); @@ -264,7 +264,7 @@ void Cache::reset() { if (cnf.enabled()) { for (unsigned as = 0; as < cnf.associativity(); as++) for (unsigned st = 0; st < cnf.sets(); st++) - emit cache_update(as, st, 0, false, false, 0, 0); + emit cache_update(as, st, 0, false, false, 0, 0, false); } } @@ -415,7 +415,7 @@ bool Cache::access(std::uint32_t address, std::uint32_t *data, bool write, std:: cd.data[col] = value; } - emit cache_update(indx, row, col, cd.valid, cd.dirty, cd.tag, cd.data); + emit cache_update(indx, row, col, cd.valid, cd.dirty, cd.tag, cd.data, write); if (changed) change_counter++; return changed; diff --git a/qtmips_machine/cache.h b/qtmips_machine/cache.h index 2602f0b..324d55a 100644 --- a/qtmips_machine/cache.h +++ b/qtmips_machine/cache.h @@ -76,7 +76,8 @@ signals: void hit_update(unsigned) const; void miss_update(unsigned) const; void statistics_update(unsigned stalled_cycles, double speed_improv, double hit_rate) const; - void cache_update(unsigned associat, unsigned set, unsigned col, bool valid, bool dirty, std::uint32_t tag, const std::uint32_t *data) const; + void cache_update(unsigned associat, unsigned set, unsigned col, bool valid, bool dirty, + std::uint32_t tag, const std::uint32_t *data, bool write) const; void memory_writes_update(unsigned) const; void memory_reads_update(unsigned) const; |