[Libre-soc-bugs] [Bug 751] idea for reducing dependency matrixes in 6600-derived architecture with register renaming

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Thu Dec 2 22:46:05 GMT 2021


https://bugs.libre-soc.org/show_bug.cgi?id=751

--- Comment #8 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Jacob Lifshay from comment #6)

> I think you're misunderstanding still: the output register can have multiple
> fields in *one* FU's output register:
> 
> +--------------+
> | FU           |
> |              |
> | output reg   |
> | +----+-----+ |
> | | RT | CR0 | |
> | +----+-----+ |
> |              |
> +--------------+

[that's five output registers, not two]

this creates false (unnecessary) dependencies that in turn puts pressure
on the read/write ports of the regfile and/or on the number of FUs required
to hold in-flight data due to missed write opportunities.

it is one of the (not many) flaws of the original 6600 design that there is
only one GO_READ per Computation Unit.

in the original 6600 design because there is only one GO_READ flag
the Function Unit may *only* read from *all* regfile ports when *all*
regfile ports are cleared.

in the design that i have implemented, there is one GO_READ per regfile
port and one GO_WRITE per regfile port.  NOT: one GO_READ per *Function
Unit* and one GO_WRITE per Function Unit.

without this, even if RT is free to write, the Function Unit is FORCED
to wait until the Condition Register file is also free to write (and
the other way round, as well).

this again puts pressure on the number of Function Units required because
the in-flight data is now waiting around for much longer than is necessary
[any time that ONLY INT is available for write is a missed opportunity.
any time that ONLY CR is available for write is a missed opportunity.
BOTH INT *AND* CR must be free and clear]

the original 6600 compensated for this by having a whopping five read ports
and two write ports on the "A" regfile (i think), which is absolutely
enormous for the time.

either way there is pressure on either:

* the number of regfile ports required
* the number of Function Units required, to hold in-flight data

also the effectiveness of Operand-Forwarding may be adversely affected,
but that's a separate analysis.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list