core: Track GPR hazards using tags that propagate through the pipelines
authorPaul Mackerras <paulus@ozlabs.org>
Tue, 10 Nov 2020 09:04:00 +0000 (20:04 +1100)
committerPaul Mackerras <paulus@ozlabs.org>
Mon, 18 Jan 2021 22:27:29 +0000 (09:27 +1100)
commitc0b45e153b39ddd7fe062b575d136979cdcec076
tree050e26099096b169108017d7027ef45019d32ea6
parenta1d7b54f76859e7270c48a56536b901f3c05c641
core: Track GPR hazards using tags that propagate through the pipelines

This changes the way GPR hazards are detected and tracked.  Instead of
having a model of the pipeline in gpr_hazard.vhdl, which has to mirror
the behaviour of the real pipeline exactly, we now assign a 2-bit tag
to each instruction and record which GSPR the instruction writes.
Subsequent instructions that need to use the GSPR get the tag number
and stall until the value with that tag is being written back to the
register file.

For now, the forwarding paths are disabled.  That gives about a 8%
reduction in coremark performance.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Makefile
common.vhdl
control.vhdl
core.vhdl
decode2.vhdl
execute1.vhdl
fpu.vhdl
gpr_hazard.vhdl [deleted file]
loadstore1.vhdl
microwatt.core
writeback.vhdl