[libre-riscv-dev] store computation unit
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Sun Jun 9 06:37:19 BST 2019
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
is that making any sense?
More information about the libre-riscv-dev