[libre-riscv-dev] [hw-dev] Re: 6600-style out-of-order scoreboard designs (ariane)

Luke Kenneth Casson Leighton lkcl at lkcl.net
Tue May 21 06:53:00 BST 2019


On Mon, May 20, 2019 at 5:38 PM Mitchalsup <mitchalsup at aol.com> wrote:

> > does the addition to the Computation Unit of a Read_Release_Request
> > signal look about right to you?  it's mirrored on the write release
> > request (except without the timing delay).
>
> No, what looks right to me is that readable cannot be asserted unless Issue_FU
> has taken place.

 that's why i brought in the busy signal from the CU, because it's
based on the latch which went HI when, yes, Issue took place.

> And readable goes away on detection of GO_Read_FU.

 it does... i won't bore you with the sheer volume of random
drunken-walk variations i tried

 i found that if only the "CU Busy" signal is used to switch off an
individual unit going into the priority picker, that just (spuriously)
results in re-assertion on the next clock cycle, which then re-asserts
GO_Read on the next, which causes it to be de-asserted again: flip
(bounce) flop (bounce), flip (bounce)

 this is for the FU-Deps Matrix version btw

 what i found was, because only one bit of the FU-Deps "row"
(representing src or dest regs in unary) is set, once the Latch for
that register goes LO, the "pending" dependencies are viewed as
CLEARED.

 this *reasserts* the "readable" flag... *even though the row of
dependency cells has done its job*.  result: flip-flopping of the
Go_Read flag.

 by taking the *computation unit's* SR-Latches, which are *definitely*
switched off when the Go_Read is asserted, the spurious flip-flopping
stops.


> This is what the 4-input to the 8 decoder NAND gates is supposed to do.

 sorry, am slightly confused: i'm not using NAND gates anywhere, only
AND, OR, NOT AND NOR, i haven't seen NAND anywhere in the diagrams.

 did you mean the priority picker?

l.



More information about the libre-riscv-dev mailing list