[libre-riscv-dev] store computation unit
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Sat Jun 8 07:06:53 BST 2019
ok so i have a preliminary unit test up and running, with the two
memory-based dependency matrices.
* the first matrix is based directly on FU-Regs. names changed to
protect the guilty: the unary reg#s became unary FU#s, dest_reg_i
became ld_fu_i, src2 got deleted, src2_reg_i became st_fu_i.
* the second matrix is the one from section 11.4.12, which
encapsulates the load-holds-store and store-holds-load rules.
and... i realised i've been a bit of an idiot. took me a few days to
recognise it.
i'd *assumed* that the second matrix is equivalent to the FU-FU one,
which from explorations a few weeks back we learned the hard way it
expresses result-interdependence. thus, i could create the first
matrix on FU-Regs.
wark-wark...
the clue should have been that FU-Regs "forward progress" comes from
ORing the read register dependencies with the *write* function-unit
latch information, which is precisely what the second
(memory-dependency) matrix does (except read-->store and
write-->load).
the second clue should have been that just as the register
dependencies are *dropped*, so are the memory dependencies, and, only
when cleared, do we get an "all clear" signal (a NOR).
so... sigh... i'm now going to try copying and adapting the FU-FU
matrix instead, and connect that to the MemDep one, and see what
happens.
l.
More information about the libre-riscv-dev
mailing list