summaryrefslogtreecommitdiff
path: root/uarch/core.h
diff options
context:
space:
mode:
authorJulian Blake Kongslie2023-01-15 14:02:54 -0800
committerJulian Blake Kongslie2023-01-15 15:04:07 -0800
commit27a58c86ce494588a12023a12b027b7f44bb35fc (patch)
treeb793a60b97ab402d8438aba0800667d4151909fe /uarch/core.h
parentEnable parallel LTO linking. (diff)
downloadbiggolf-27a58c86ce494588a12023a12b027b7f44bb35fc.tar.xz
Stall decode after an instruction with stores until the stores are done.
Diffstat (limited to 'uarch/core.h')
-rw-r--r--uarch/core.h7
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
22struct fetch_bundle { 23struct 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;