diff options
author | bd <bdunahu@operationnull.com> | 2025-03-27 20:47:44 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-03-27 20:47:44 -0400 |
commit | 043c2566c112f0d913c52aa80c9fcc4da5fb11ae (patch) | |
tree | 65afb024ab26d4731487343d553db961a8dc6659 /src | |
parent | eaa87e9fcd90c00d6261cbdb854efb7a09467f1d (diff) |
Use an unordered map to record pipe stage history on instructions
Diffstat (limited to 'src')
-rw-r--r-- | src/sim/if.cc | 2 | ||||
-rw-r--r-- | src/sim/instrDTO.cc | 11 |
2 files changed, 4 insertions, 9 deletions
diff --git a/src/sim/if.cc b/src/sim/if.cc index f5a2bb9..559ad2e 100644 --- a/src/sim/if.cc +++ b/src/sim/if.cc @@ -14,7 +14,7 @@ Response IF::advance(InstrDTO &i) r = this->storage->read_word(this->id, this->pc, bits); if (r == OK) { ++this->pc; - i.set_if_cycle(this->clock_cycle); + i.set_time_of(this->id, this->clock_cycle); i.set_instr_bits(bits); } diff --git a/src/sim/instrDTO.cc b/src/sim/instrDTO.cc index 4e24d4e..7864eb4 100644 --- a/src/sim/instrDTO.cc +++ b/src/sim/instrDTO.cc @@ -1,18 +1,15 @@ #include "instrDTO.h" +#include "accessor.h" InstrDTO::InstrDTO() { - this->if_cycle = 0; - this->id_cycle = 0; this->instr_bits = 0; this->s1 = 0; this->s2 = 0; this->s3 = 0; } -int InstrDTO::get_if_cycle() { return this->if_cycle; } - -int InstrDTO::get_id_cycle() { return this->id_cycle; } +int InstrDTO::get_time_of(Accessor a) { return this->hist[a]; } signed int InstrDTO::get_instr_bits() { return this->instr_bits; } @@ -22,9 +19,7 @@ signed int InstrDTO::get_s2() { return this->s2; } signed int InstrDTO::get_s3() { return this->s3; } -void InstrDTO::set_if_cycle(int cycle) { this->if_cycle = cycle; } - -void InstrDTO::set_id_cycle(int cycle) { this->id_cycle = cycle; } +void InstrDTO::set_time_of(Accessor a, int i) { this->hist[a] = i; } void InstrDTO::set_instr_bits(signed int instr) { this->instr_bits = instr; } |