diff options
| author | Julian Blake Kongslie | 2023-01-15 14:02:54 -0800 |
|---|---|---|
| committer | Julian Blake Kongslie | 2023-01-15 15:04:07 -0800 |
| commit | 27a58c86ce494588a12023a12b027b7f44bb35fc (patch) | |
| tree | b793a60b97ab402d8438aba0800667d4151909fe /uarch/core.h | |
| parent | Enable parallel LTO linking. (diff) | |
| download | biggolf-27a58c86ce494588a12023a12b027b7f44bb35fc.tar.xz | |
Stall decode after an instruction with stores until the stores are done.
Diffstat (limited to '')
| -rw-r--r-- | uarch/core.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/uarch/core.h b/uarch/core.h index b53a205..21725b3 100644 --- a/uarch/core.h +++ b/uarch/core.h | |||
| @@ -17,6 +17,7 @@ struct restart { | |||
| 17 | infra::transaction tr; | 17 | infra::transaction tr; |
| 18 | unsigned int new_pc; | 18 | unsigned int new_pc; |
| 19 | bool interrupt; | 19 | bool interrupt; |
| 20 | unsigned int stores_sent = 0; | ||
| 20 | }; | 21 | }; |
| 21 | 22 | ||
| 22 | struct fetch_bundle { | 23 | struct fetch_bundle { |
| @@ -57,6 +58,9 @@ struct decode_stage : public infra::sim { | |||
| 57 | unsigned int pc; | 58 | unsigned int pc; |
| 58 | std::uint64_t icount; | 59 | std::uint64_t icount; |
| 59 | 60 | ||
| 61 | unsigned int speculative_stores_sent = 0; | ||
| 62 | unsigned int stores_done = 0; | ||
| 63 | |||
| 60 | decode_stage(core &c); | 64 | decode_stage(core &c); |
| 61 | 65 | ||
| 62 | void clock(); | 66 | void clock(); |
| @@ -77,6 +81,8 @@ struct exec_stage : public infra::sim { | |||
| 77 | 81 | ||
| 78 | unsigned int gen = 0; | 82 | unsigned int gen = 0; |
| 79 | 83 | ||
| 84 | unsigned int stores_sent = 0; | ||
| 85 | |||
| 80 | unsigned int acc; | 86 | unsigned int acc; |
| 81 | unsigned int link; | 87 | unsigned int link; |
| 82 | unsigned int mq; | 88 | unsigned int mq; |
| @@ -108,6 +114,7 @@ struct core { | |||
| 108 | 114 | ||
| 109 | infra::port<memory::dram::command> decode_mem_commandp; | 115 | infra::port<memory::dram::command> decode_mem_commandp; |
| 110 | infra::port<memory::dram::response> decode_mem_responsep; | 116 | infra::port<memory::dram::response> decode_mem_responsep; |
| 117 | infra::port<memory::dram::response> decode_store_completep; | ||
| 111 | infra::port<inst_bundle> decode_to_exec_instp; | 118 | infra::port<inst_bundle> decode_to_exec_instp; |
| 112 | 119 | ||
| 113 | infra::port<inst_bundle> indir_instp; | 120 | infra::port<inst_bundle> indir_instp; |
