[libre-riscv-dev] [Bug 70] evaluate Bus Architectures

bugzilla-daemon at libre-riscv.org bugzilla-daemon at libre-riscv.org
Thu Jan 9 13:03:26 GMT 2020


http://bugs.libre-riscv.org/show_bug.cgi?id=70

--- Comment #7 from Jacob Lifshay <programmerjake at gmail.com> ---
(In reply to Luke Kenneth Casson Leighton from comment #6)
> when multiple reference implementatiobs are available it will save us a huge
> amount of time and help us to ensure interoperability.

Ok, sounds good.

> 
> until then, unfortunately, the cost is i feel too high.  it's a brilliant
> idea, not to be ruled out entirely: we may even need to span across multiple
> FPGAs and ethernet is one of the easiest ways to do that.

>From reading the spec, tilelink seems to be a relatively simple (20-30 states)
state machine along with a 64-bit Add/CompareEq/Min/Max/MinU/MaxU/And/Or/Xor
ALU for handling AMOs. I would be surprised if TileLink needed more than 2-3k
gates.

If all the upstream interfaces handled AMOs themselves, the ALU wouldn't be
needed, however, I think it's a good idea to have the ALU even if we don't end
up using TileLink at all.

The tilelink state machine:
https://github.com/chipsalliance/omnixtend/blob/master/OmniXtend-1.0.3/spec/StateTransitionTables-1.8.0.pdf

To implement OmniXtend, you'll need receive and retransmit buffers, both
buffers need to be at least 1 ethernet frame, but making them larger will
increase maximum throughput. The retransmit buffer can be single ported, but
the receive buffer should have a separate read and write port.

So, for a 1Gbps link with 30us round-trip-time, you would need about 4kB for
each buffer to fully saturate the link. That is about the same size of buffers
needed to implement a CPU-controlled ethernet interface anyway, so it doesn't
seem too expensive, especially considering that it would only need to run at
less than 20MHz if it has a 64-bit datapath.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-riscv-dev mailing list