[libre-riscv-dev] [hw-dev] Re: 6600-style out-of-order scoreboard designs (ariane)
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Wed May 22 08:44:55 BST 2019
it's working! the dependency-matrix version (FU-Regs + FU-FU) is
actually working. for a given definition of "work".
at the moment, there is a bug where if an instruction uses a src
register also as a dest register, the matrices believe that this is
both a read-hazard (on itself) *and* a write-hazard (on itself). this
because the test for read-dependencies and the test for
write-dependencies is in the same clock cycle.
whoops.
this is very hard to distinguish from the case where there are e.g.
three instructions:
ADD r1 r2 r3
ADD r3 r3 r3
ADD r3 r4 r5
* instruction 2 depends on instruction 1 (RaW)
* instruction 3 depends on instruction 2 (WaR)
if however the testing of read dependencies was done on a *separate*
clock cycle (one earlier) from write dependencies, there may be an
opportunity to detect that the middle instruction is not dependent on
itself.
i have a suspicion that the CDC6600's use of major-minor clock cycles
on read-register and write-register *may* also be responsible for
ensuring that.
this is going to take some time to investigate.
l.
More information about the libre-riscv-dev
mailing list