Libre RISC-V Mailing list Archives (accessible via public-inbox)
 help / color / Atom feed
* [libre-riscv-dev] Request for Scoreboard and Functional Units Update
@ 2020-05-30 14:58 Yehowshua
  2020-05-30 16:26 ` Luke Kenneth Casson Leighton
  0 siblings, 1 reply; 5+ messages in thread
From: Yehowshua @ 2020-05-30 14:58 UTC (permalink / raw)
  To: Libre-RISCV General Development

So browsing through the codebase, it seems we have about 10ish functional units,
about 29 Scoreboard components. How many more scoreboard components and 
functional units are needed for August?

All the functional units have some formal verification tests, how confident are we 
that the scoreboard works correctly?

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [libre-riscv-dev] Request for Scoreboard and Functional Units Update
  2020-05-30 14:58 [libre-riscv-dev] Request for Scoreboard and Functional Units Update Yehowshua
@ 2020-05-30 16:26 ` Luke Kenneth Casson Leighton
  2020-05-30 17:08   ` Yehowshua
  0 siblings, 1 reply; 5+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-30 16:26 UTC (permalink / raw)
  To: Libre-RISCV General Development

On Sat, May 30, 2020 at 3:59 PM Yehowshua <yimmanuel3@gatech.edu> wrote:
>
> So browsing through the codebase, it seems we have about 10ish functional units,

soc.fu.*:

* ALU        (done)
* Logical    (done)
* ShiftRot  (done)
* MUL       (not done - Jacob)
* DIV         (not done - Jacob)
* Branch    (done)
* TRAP      (specified)
* SYS        (specified)
* LDST      ("odd one out")
* SPR       (specified)
* CR - Condition Register (done)

of these:

* SYS, TRAP and SPR need writing (they've been defined, no unit test exists yet)
* MUL and DIV we're waiting for Jacob
* LDST depends on a functional L0CacheBuffer, however does not "fit"
the FU mould and kinda-qualifies as "partly complete" because the
majority of functionality is in the *Computation Unit* rather than an
actual "Pipeline".


> about 29 Scoreboard components. How many more scoreboard components and
> functional units are needed for August?

scoreboard components to be written: none.   the entirety of the
scoreboard functionality was done well over a year ago, including
shadowing which covers branches, exceptions, traps, interrupts (and
predication when we add it).

the only reason i had to make changes (2 months ago) was for the
mutli-signal capability.

tying the components *together* is where the complexity lies.

Function Units: see above.

one additional absolutely critical blocker (which i *may* have solved,
today): the Computation Unit "Manager" <-> ALU interaction.  this
*critically* relies on properly implementing the pipeline API... in
both the CompUnit (as sender *and* receiver) and the ALU (as receiver
and sender).

yes, the CompUnit "sends" (operands) to the ALU, then "receives" the
results (from the ALU).  that's its job - its sole purpose.  it's
basically as complex a FSM as any **PAIR** of interacting Wishbone or
AXI4 Bus Master Router-Arbiters, back-to-back, in the same code.


> All the functional units have some formal verification tests, how confident are we
> that the scoreboard works correctly?

strictly speaking: not in the slightest, until there exists full
formal verification for it (and for each component).  there's a
special budget of EUR 6,000 *specifically* for that one task, because
it's (a) extremely involved and (b) actually covers quite a lot of
interaction(s) and components.

on a "proof-of-concept" level: reasonably confident.
score6600_multi.py is functional for ALU operations (including
overlapping ones, including parallel execution), and when i was
testing speculative branch operations (including cancellation either
way - correct / incorrect branches), that worked too.  however that
was for "single read/write".

the complexity lies in the "allocation" of the required components, to
meet the register and FU allocation.  i've defined the "regspec" API
to help meet that.
https://libre-soc.org/3d_gpu/architecture/regfile/

so this is why i said, last week, that it would be a good idea to take
an incremental approach:
https://bugs.libre-soc.org/show_bug.cgi?id=346

this allows us to "have something working" - complete, prove and bug
fix both the regfile *and* Function Units, get the "hello world" demo
out the door much faster than would otherwise be achievable, and
*then* add in the Dependency Matrices.

it works by only issuing one instruction, using the regfile buses
*exclusively* for that *ONE* Function Unit, waiting for that *ONE*
instruction to complete, before moving on to the next one.

this basically means that we would have an IPC of somewhere under...
0.3.  as in: 3-5 cycles per instruction.

adding in the Dependency Matrices then becomes a straightforward
task... *if* we know full well that the Function Units properly comply
to the Pipeline API, interact properly with their Computational Unit
"Manager", properly read and write registers according to the Go_Read
/ Write - Req_Read / Req_Write protocol.

once added, the DMs bring us up to near a 1.0 IPC (branch prediction
being the key, there).

l.

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [libre-riscv-dev] Request for Scoreboard and Functional Units Update
  2020-05-30 16:26 ` Luke Kenneth Casson Leighton
@ 2020-05-30 17:08   ` Yehowshua
  2020-05-30 17:31     ` Luke Kenneth Casson Leighton
  0 siblings, 1 reply; 5+ messages in thread
From: Yehowshua @ 2020-05-30 17:08 UTC (permalink / raw)
  To: Libre-RISCV General Development

Ok. Thanks for the well written update. Sounds like things are moving a long nicely.
Browsing through the codebase, I didn’t find anything alarming.

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [libre-riscv-dev] Request for Scoreboard and Functional Units Update
  2020-05-30 17:08   ` Yehowshua
@ 2020-05-30 17:31     ` Luke Kenneth Casson Leighton
  2020-05-30 21:34       ` Cole Poirier
  0 siblings, 1 reply; 5+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-30 17:31 UTC (permalink / raw)
  To: Libre-RISCV General Development

On Saturday, May 30, 2020, Yehowshua <yimmanuel3@gatech.edu> wrote:

> Ok. Thanks for the well written update. Sounds like things are moving a
> long nicely.


slower without michael.


> Browsing through the codebase, I didn’t find anything alarming.


i am really impressed by what michael did, very quickly, however it was the
collaboration that really did it.  cole as well, his enthusiasm is
inspiring, and it is very funny that he knew flat-out zero about gate-level
programming *and* python, let alone nmigen, even a few months ago.

the entire suite of FUs that we did is entirely combinatorial, which made
progress much faster.
the pipeline API makes life one hell of a lot easier.

the places that have been slow progress are the time-dependent FSMs.

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [libre-riscv-dev] Request for Scoreboard and Functional Units Update
  2020-05-30 17:31     ` Luke Kenneth Casson Leighton
@ 2020-05-30 21:34       ` Cole Poirier
  0 siblings, 0 replies; 5+ messages in thread
From: Cole Poirier @ 2020-05-30 21:34 UTC (permalink / raw)
  To: Libre-RISCV General Development; +Cc: Libre-RISCV General Development

On May 30 2020, at 10:31 am, Luke Kenneth Casson Leighton
<lkcl@lkcl.net> wrote:
> i am really impressed by what michael did, very quickly, however it
> was the
> collaboration that really did it.  cole as well, his enthusiasm is
> inspiring, and it is very funny that he knew flat-out zero about gate-level
> programming *and* python, let alone nmigen, even a few months ago.

Thanks Luke, the help from you, Michael, Jacob, Yehowshua, Jean-Paul,
and the others who I may be forgetting to mention, has been so
awe-inspiring. Your patience, friendliness, and sheer overall
helpfulness has been honestly amazing, and frankly inspiring, as is the
overall attitude and goals of the project. I am thrilled to be starting
to become a contributing member, and hopefully one-day, with lots of
effort and studying, I can I achieve somewhere near the competency and
brilliance of Michael, through learning from him and everyone else. 

One small correction though, I did know python and rust prior to joining
the project. I'm not that brilliant ;) Gate-level programming as well as
nmigen still hurt my brain tremendously when thinking through them to
write code and proofs, however it's a very good kind of pain because
thanks again to your *painstakingly* attentive and patient help I'm learning.

Cole


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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-30 14:58 [libre-riscv-dev] Request for Scoreboard and Functional Units Update Yehowshua
2020-05-30 16:26 ` Luke Kenneth Casson Leighton
2020-05-30 17:08   ` Yehowshua
2020-05-30 17:31     ` Luke Kenneth Casson Leighton
2020-05-30 21:34       ` Cole Poirier

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