From: Luke Kenneth Casson Leighton <lkcl@lkcl.net>
To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
Subject: Re: [libre-riscv-dev] MultiCompUnit- ALU interaction. was: daily kan-ban update 30may2020
Date: Sat, 30 May 2020 19:06:56 +0100
Message-ID: <CAPweEDxUtX=uFFTbYu7nSHOAMUSeLQ6yaDF1ZNrO5COkOL+cBQ@mail.gmail.com> (raw)
In-Reply-To: <38EFD023-443F-419A-9306-19F7D6401DD0@gatech.edu>
On Saturday, May 30, 2020, Yehowshua <yimmanuel3@gatech.edu> wrote:
> When you say you got something working, do you mean that you got the
> decoder to decode, the issuer to issue, and the ALU FU to compute? All
> working together?
the interaction - the interface - between MultiCompUnit (a data "monitor"
aka Reservation Station) and a pipelined ALU.
MCU is a massively complex and compact FSM (the LDST CompUnit equally so).
it must:
* handle multiple ready/valid signalling to bring in multiple (optional)
operands from the regfile
* then use ready/valid signalling to kick off the ALU
* *WAIT* for ready/valid signalling from the ALU and capture the output
* finally use *yet more* ready/valid signalling to independently
acknowledge every single output being sent to its corresponding regfile for
write.
all of that *back-propagates* such that if the ALU *OUTPUT* is not ready,
the incoming data to the ALU must not be sent.
and every single one of those ready/valid events can occur independently at
any time.
and some of them are optional at the input phase.
and some of them are optional at the output phase.
it is quite ridiculously complex for such a relatively small amount of code.
> If this is the case, how can I make the codebase do this myself?
$ cd soc/src/soc
$ python3 fu/compunits/test/test_alu_compunit.py
it will currently fail at the extsb unit test because the MCU expects *all*
operands (non-optionally) to be requested from the regfile, and extsb does
not have RB.
l.
--
---
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
next prev parent reply index
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-30 17:40 Luke Kenneth Casson Leighton
2020-05-30 17:50 ` Yehowshua
2020-05-30 18:06 ` Luke Kenneth Casson Leighton [this message]
2020-05-30 19:05 ` Luke Kenneth Casson Leighton
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='CAPweEDxUtX=uFFTbYu7nSHOAMUSeLQ6yaDF1ZNrO5COkOL+cBQ@mail.gmail.com' \
--to=lkcl@lkcl.net \
--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