Libre RISC-V Mailing list Archives (accessible via public-inbox)
 help / color / Atom feed
From: Luke Kenneth Casson Leighton <lkcl@lkcl.net>
To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
Subject: [libre-riscv-dev] priority picker
Date: Tue, 17 Mar 2020 21:51:57 +0000
Message-ID: <CAPweEDzz2P0Z+JAqPkoV=QVo-EaRayHkPTKhzpLaKpc_ShyZJA@mail.gmail.com> (raw)

https://git.libre-riscv.org/?p=nmutil.git;a=blob;f=src/nmutil/picker.py;h=0e50fd24f1131cb40ff306030f0dcfb107d0c22e;hb=a6130a92485d572182ab80a2da279997388ef52e#l64

i just created something called "MultiPriorityPicker" which is quite cute.
PriorityPicker is an important "selector" of which (unary-encoded).  This is
used to select which Function Unit's output will get access to a given register
file port, for example.

Except... what happens if we have multiple register file ports? (which we do)
Err... who gets access to which port?

that's what the MultiPriorityPicker is for.  basically it is an array
of PriorityPickers (see
https://libre-riscv.org/3d_gpu/architecture/6600scoreboard/)

the PriorityPickers are connected in a cascade, where the output of
each *accumulates* a mask that *prevents* downstream PriorityPickers
from picking already-picked outputs.

in addition, in order to help select a particular "port", an index
(currently in binary, i may change that to unary later) is set - again
in an incrementing cascade - such that whichever Picker's output has a
"1" set it is *guaranteed* to also be allocated a unique "index" as
well.

this "index" can be used to say which "port" on the register file, for
example, that the "Picker" is permitted to write (or read) from.

it also has uses for the LOAD/STORE buffer: namely the
Load/Store-FunctionUnit's have to know which "port" to write into the
(multi-input) LD/ST Buffer (aka cache).

all good fun.

l.

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

                 reply index

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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='CAPweEDzz2P0Z+JAqPkoV=QVo-EaRayHkPTKhzpLaKpc_ShyZJA@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