On Tuesday, December 28, 2021 at 4:16:24 PM UTC-6, Thomas Koenig wrote:
> Anton Ertl <
an...@mips.complang.tuwien.ac.at> schrieb:
> > Thomas Koenig <
tko...@netcologne.de> writes:
> >>Anton Ertl <
an...@mips.complang.tuwien.ac.at> schrieb:
> >>
> >>> In the thread starting at
> >>><
2021Mar1...@mips.complang.tuwien.ac.at> we have discussed adding
> >>> an extra bit to each register to allow an efficient add-with-carry
> >>> (and other things), without adding a special-purpose flag register to
> >>> the architecture (which is against MIPS-style architectural
> >>> principles).
> >>
> >>I remember that discussion, and that is probably the best way.
> >>So, the add with carry would be something like
> >>
> >> add t0, r1, r2
> >> add t1, r3, r4
> >> addcf t1, t1, t0
> >>
> >>where "addcf" would add the carry flag from t0 to t1.
> >
> > Yes, that's a good way to do it if you want to stay with
> > two-source-register instructions. The add for the next pair of words
> > can be done in parallel with the addcf, so the overall latency is the
> > latency of the first add plus n times the latency of addcf.
> What else would there be to fix with RISC-V if one
> wanted to maintain strict two-source-registers?
<
Solve the FMAC problem using one 2 operand register specifiers !
>
> An indexed store actually accesses three registers, so
<
Err, not what you think:
<
An indexed store is allowed to access the register containing data to
be stored AFTER LD-Align (nominally the WRITE-Back stage). This
alleviates register read pressure, eliminates large numbers of flip-
flops in the pipeline, and simplifies pipeline design. I, personally,
have never had problems "reading the write slot" that is reading the
register file in the clock period where one would normally be writing
the result register. Done this way, there is NO FORWARDING needed
for the read of the ST.data.
<
I. for one, do not consider reading the register data to be stored
"a problem" worthy of an ISA-level "solution". Let the HW guys tell
you what to do here. HP even got a patent on ST pipeline design
(circa 1986) Follow (or at least READ) this patent before you do ISA
design.
<
There are a lot of things I don't like about RISC-V, but STs and LDs
should be symmetrical {and OpCodes should be at the most significant
parts of the container.}
<
> if one wanted to remain pure there, array accesses
> could be done via a LEA instruction which does
>
> Ra = Rb + Rc << scale
<
My 66000 has:
<
Rd = Rb + Ri<<scale + Disp // +'s are unsigned here; Disp optional
<
as its LEA instruction.