core: Allow multiple loadstore instructions to be in flight
authorPaul Mackerras <paulus@ozlabs.org>
Mon, 28 Dec 2020 04:15:30 +0000 (15:15 +1100)
committerPaul Mackerras <paulus@ozlabs.org>
Tue, 19 Jan 2021 01:16:41 +0000 (12:16 +1100)
commit17fd069640c240054db07746543252c89322407f
treeed2084ea713ee3e7d564ef8b067a0fc2f7fbd8fc
parentf583d088b7e6bf38839449c8101beb64b23b12ed
core: Allow multiple loadstore instructions to be in flight

The idea here is that we can have multiple instructions in progress at
the same time as long as they all go to the same unit, because that
unit will keep them in order.  If we get an instruction for a
different unit, we wait for all the previous instructions to finish
before executing it.  Since the loadstore unit is the only one that is
currently pipelined, this boils down to saying that loadstore
instructions can go ahead while l_in.in_progress = 1 but other
instructions have to wait until it is 0.

This gives a 2% increase on coremark performance on the Arty A7-100
(from ~190 to ~194).

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
common.vhdl
control.vhdl
decode2.vhdl
execute1.vhdl
loadstore1.vhdl