TileLink crossbar

248 views
Skip to first unread message

Hadir Khan

unread,
Jul 23, 2020, 10:12:34 AM7/23/20
to RISC-V HW Dev
Hello everyone,

I have a question regarding the general structure of the TileLink bus topology. In the attached screenshot what is the need of using a Crossbar Module? Let's say if the top processor module is Processor A and the bottom processor module is Processor B then if "A" wants to communicate with Cache, it can directly communicate with it and at the same time "B" can communicate with the memory mapped device (MMD). I am wondering what is the use of Crossbar here or am I missing something?

Thank you
Screen Shot 2020-07-23 at 7.01.37 PM.png

Srinivasan Dk

unread,
Jul 23, 2020, 10:26:45 AM7/23/20
to Hadir Khan, RISC-V HW Dev
Hi Hadir,

IMO, the pic xbar depicting two output connections and two input connections doesn't mean the muxing within the crossbar is fixed. It could also allow for A and B to talk to mmd and the cache respectively. cross bar is a generic block that helps this functionality. It can also allow for simultaneous accesses and assign some arbitration scheme too amongst competing inputs for the same output in which case the xbar may have extra logic to buffer unserviced requests or inputs.

Regards


--
You received this message because you are subscribed to the Google Groups "RISC-V HW Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hw-dev+un...@groups.riscv.org.
To view this discussion on the web visit https://groups.google.com/a/groups.riscv.org/d/msgid/hw-dev/39d026df-906c-421b-b0a4-fd714e2fc716o%40groups.riscv.org.

Hadir Khan

unread,
Jul 23, 2020, 10:55:01 AM7/23/20
to Srinivasan Dk, RISC-V HW Dev
But I got confused as the spec suggests each module can have multiple agents. Then what is the use of Crossbar? If a Cache Module has two slave ports then processor A as well as processor B both can access the Cache simultaneously without any arbitration. Similarly, if the mmd has multiple slave ports then processor A as well as processor B both can access the mmd simultaneously.

Hadir Khan

unread,
Jul 23, 2020, 1:26:31 PM7/23/20
to RISC-V HW Dev

My question is what if I build up an architecture like the image attached? Now both processors can have multiple ports and they can in parallel communicate with other devices without the need of any Crossbar switch (arbiter or decoder). Am I assuming something wrong?
Tilelink.png

Rishi Khan

unread,
Jul 23, 2020, 1:29:12 PM7/23/20
to Hadir Khan, RISC-V HW Dev
A crossbar is useful to create a star topology instead of an all-to-all topology. The all-to-all topology does not scale. But, if you have only 4 agents, it could be done either way. You’ve just moved the arbitration into the agents.

--
You received this message because you are subscribed to the Google Groups "RISC-V HW Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hw-dev+un...@groups.riscv.org.

Hadir Khan

unread,
Jul 23, 2020, 1:34:57 PM7/23/20
to RISC-V HW Dev, hadir...@gmail.com
Moreover how does the Crossbar agent move data from slave to master? From the TileLink spec diagram what I can see is the Crossbar module is forwarding data from it's slave port to it's master port to further communicate with the slave devices. How is that possible? How can a slave port communicate with the master port? Coming from the AHB bus this is confusing me a lot. 


On Thursday, 23 July 2020 22:29:12 UTC+5, Rishi Khan wrote:
A crossbar is useful to create a star topology instead of an all-to-all topology. The all-to-all topology does not scale. But, if you have only 4 agents, it could be done either way. You’ve just moved the arbitration into the agents.
On Jul 23, 2020, at 1:26 PM, Hadir Khan <hadir...@gmail.com> wrote:


My question is what if I build up an architecture like the image attached? Now both processors can have multiple ports and they can in parallel communicate with other devices without the need of any Crossbar switch (arbiter or decoder). Am I assuming something wrong?

On Thursday, 23 July 2020 19:12:34 UTC+5, Hadir Khan wrote:
Hello everyone,

I have a question regarding the general structure of the TileLink bus topology. In the attached screenshot what is the need of using a Crossbar Module? Let's say if the top processor module is Processor A and the bottom processor module is Processor B then if "A" wants to communicate with Cache, it can directly communicate with it and at the same time "B" can communicate with the memory mapped device (MMD). I am wondering what is the use of Crossbar here or am I missing something?

Thank you

--
You received this message because you are subscribed to the Google Groups "RISC-V HW Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hw-...@groups.riscv.org.
Reply all
Reply to author
Forward
0 new messages