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] daily kan-ban update 19may2020
Date: Tue, 19 May 2020 18:34:47 +0100
Message-ID: <CAPweEDw_Had6AZTOh8ROHGj2BVTA6AcZiEYVu+a_uvMB-c_Z=Q@mail.gmail.com> (raw)
In-Reply-To: <CAC2bXD7fXnNeGWcGTiVzMnxSDcKSZuoteY1gAKHm-RGYGh+Bsw@mail.gmail.com>
On Tue, May 19, 2020 at 6:13 PM Jacob Lifshay <programmerjake@gmail.com> wrote:
> I'll be working on the mul and div pipelines today,
ah good, whew
> I'm planning on adding
> mul-add and mul-sub support to the partitionable multiplier since that's
> much easier than writing a whole new multiplier.
true.
(remember, the initial plan is not to use partitioning: just a
straight 64-bit MUL. we are running in 180nm: latency is not high)
however.... if you feel that this really should be split into 2
pipeline stages, then even without partitioning at all (which,
remember, we are *not* doing - at all - for this critical Oct
deadline) it may indeed be easier to use PartMul because of its
pipeline capability, hard-code the partition bits to "fully open", and
set the "breakdown" point to a matrix of 4x32 or a matrix of 16x16-bit
MULs rather than the 8x8 which we tested the code with, last year.
in particular i think if we went with 4x32-bit MULs it would not
result in massive simulation times.
also now that i think of it, because it already has the
signed/unsigned calculation (done and tested), it may definitely turn
out to be easier to use PartMul than starting from zero.
> Will then add the FU
> interface logic needed to drive it, perhaps in simplified form (1 mul per
> clock, no packing smaller muls together) since that would allow me to get
> back to the load/store unit faster.
if you can cookie-cut soc.fu.shift_rot (cut/paste copy) i did notice
that the input-data and output-data formats are identical to what is
needed for MUL (particularly due to the 3-input MAC). so that would
just leave the intermediary pipe stages which would be dropped into
soc.fu.shift_rot/pipeline.py ok cookie-cut it would be
soc.fu.mul/pipeline.py
this will get the infrastructure in place very rapidly and give a
template which ultimately just involves filling in main_stage.py and
adjusting pipeline.py
> If there's spare time later, it can be
> made fancier to allow issuing multiple smaller ops per clock and/or have
> fpmul/fpmuladd added.
we're definitely not going to have time to add any of the FP pipeline, at all.
> Will modify the fpdiv pipe to add idiv/udiv/irem/urem as well as div by
> zero and int overflow detection, will then use that in the DIV FUs,
this one i agree fully, yes, good idea, like it. here, use
soc.fu.logical as a cookie-cut template, using the LogicalInputData
data structure (that's: if you can confirm and agree that it is
identical to what is used, for its register allocation).
> can add support for fdiv/fsqrt/frsqrt if there's spare time later.
there definitely won't. time is *really* short.
> I picked both those routes since that seems like the path of least
> resistance, and because it makes adding fp later that much easier.
i am inclined to recommend leaving even consideration of FP off the
table, and, when we have time, literally dumping whatever code was
written and replacing it. although, i suspect that, actually, very
little would actually get thrown away: more... morphed.
l.
_______________________________________________
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: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-19 11:59 Luke Kenneth Casson Leighton
2020-05-19 12:36 ` Luke Kenneth Casson Leighton
2020-05-19 16:38 ` Cesar Strauss
2020-05-19 17:13 ` Jacob Lifshay
2020-05-19 17:34 ` Luke Kenneth Casson Leighton [this message]
2020-05-19 17:47 ` Michael Nolan
2020-05-19 17:56 ` Luke Kenneth Casson Leighton
2020-05-19 18:01 ` [libre-riscv-dev] priority encoder replacement Jacob Lifshay
2020-05-19 18:46 ` Luke Kenneth Casson Leighton
2020-05-19 20:17 ` [libre-riscv-dev] daily kan-ban update 19may2020 Cole Poirier
2020-05-20 6:39 ` Tobias Platen
2020-05-20 11:28 ` 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='CAPweEDw_Had6AZTOh8ROHGj2BVTA6AcZiEYVu+a_uvMB-c_Z=Q@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