[libre-riscv-dev] store computation unit

Luke Kenneth Casson Leighton lkcl at lkcl.net
Sun Jun 9 06:37:19 BST 2019

hiya mitch,

just looking at the 88120 book chapter on the MDM (memory dependence
matrix), it's basically the same as the 11.4.12 augmented-6600 one,
with a little more detail.

i drew out a block-level diagram with the 2 types of matched-matrices:
one pair for MemRef and one pair for the registers used in the LD/ST.

i then drew an array of AGEN Computation Units, with associated
"Request_Address" line, and wired them up to an AGEN

then i thought, hmm, how the hell, in a multi-issue context, where
several LD/STs can be issued and retire simultaneously, are we going
to wire a single "mismatch" vector from the AGEN mis-match-spotter,
back into the MemRef (MDM) Matrix?

the answer is: you can't.

i believe that a *vector* of AGEN mis-match-spotters only works for a
single-issue context, where, back at the AGEN Request_Address stage
you would need a priority-picker to pick *only one* AGEN to allow to
be added to the AGEN mis-matcher at any one time.

thus, i believe, if we want full multi-issue, the AGEN
mis-match-spotters need to be expanded out into a Matrix (of size
equal to and directly matching with the MDM) and the contents of the
AGEN compares *overlaid* with the MDM and wired directly to the
corresponding dependency cancellation signal in the corresponding MDM

in other words, the MDM *merges* with the AGEN matcher, in a
multi-issue context.

is that making any sense?


More information about the libre-riscv-dev mailing list