Libre RISC-V Mailing list Archives (accessible via public-inbox)
 help / color / Atom feed
From: bugzilla-daemon@libre-soc.org
To: libre-riscv-dev@lists.libre-riscv.org
Subject: [libre-riscv-dev] [Bug 296] idea: cyclic buffer between FUs and register file
Date: Sat, 02 May 2020 13:15:16 +0000
Message-ID: <bug-296-13-KVvWJnd0TB@https.bugs.libre-soc.org/> (raw)
In-Reply-To: <bug-296-13@https.bugs.libre-soc.org/>

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

--- Comment #10 from Luke Kenneth Casson Leighton <lkcl@lkcl.net> ---
as can be seen from the comp.arch discussion, a cyclic buffer on *each Function
Unit*
seems to have some advantages over just having a global cyclic buffer.

in particular, we discussed 18 months ago the merits of an idea by Mitch Alsup
to use *only* 1R-or-1W SRAMs on the regfile, with serial reads followed by
FMAC (the example) pipeline stages and a single write.  it's extremely
efficient
resource-utilisation on parallel workloads.

the problem with that idea is that it absolutely sucks for scalar code.

turns out that if we have a cyclic buffer and turn the "dedicated" RD1/2/3
WR1/2
Broadcast Buses into "general-purpose read / write buses", that we get the best
of both worlds:

* in the scalar case, a 3-operand FunctionUnit may use *three* Broadcast Buses
  to receive operand1, operand2 and operand3 in a single cycle

* in the parallel case (or during heavy loading) the lack of availability of
  all but one of the available buses does *not* stop a Function Unit from
  receiving its operands.  even if it takes 3 cycles to receive operands over
  just the one Bus, the fact that it will *also* take 3 cycles to rotate those
  values into the correct Operand Latches *does not matter*

(Yehowshua, this is partly where / why the extra gates of a Benes / Butterfly
Network are overkill: *all* operands need to be delivered before the operation
can proceed, which leaves time to shuffle things into place).

what does need to be thought through is to preserve the read/write
Dependencies.
the crucial one is not reads: those can drop their dependency the moment that
the operand is received (even into the cyclic buffer), however writes
definitely
cannot.

whilst they can be _delivered_ via the forwarding bus, the Function Unit *must*
remain busy (not be sent a "Go_Write" signal which will tell it to drop the
dependency) until its result has reached the regfile.

and "in any of the cyclic buffers" is *not* the regfile.

so that needs a little more thought.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

  parent reply index

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-01  2:09 [libre-riscv-dev] [Bug 296] New: " bugzilla-daemon
2020-05-01  2:10 ` [libre-riscv-dev] [Bug 296] " bugzilla-daemon
2020-05-01  2:10 ` bugzilla-daemon
2020-05-01  3:02 ` bugzilla-daemon
2020-05-01  5:03 ` bugzilla-daemon
2020-05-01 18:19 ` bugzilla-daemon
2020-05-01 18:33 ` bugzilla-daemon
2020-05-01 18:54 ` bugzilla-daemon
2020-05-01 19:12 ` bugzilla-daemon
2020-05-01 20:23 ` bugzilla-daemon
2020-05-02  2:01 ` bugzilla-daemon
2020-05-02 13:15 ` bugzilla-daemon [this message]
2020-05-02 15:02 ` bugzilla-daemon
2020-05-03 11:58 ` bugzilla-daemon
2020-05-03 13:23 ` bugzilla-daemon
2020-05-03 14:07 ` bugzilla-daemon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-296-13-KVvWJnd0TB@https.bugs.libre-soc.org/ \
    --to=bugzilla-daemon@libre-soc.org \
    --cc=libre-riscv-dev@lists.libre-riscv.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Libre RISC-V Mailing list Archives (accessible via public-inbox)

Archives are clonable: git clone --mirror https://inbox.libre-soc.org/libre-riscv-dev

Example config snippet for mirrors


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git