Burst support#15
Conversation
An "isburst" signal is needed to redistribute grouped responses at the initiator.
a76e1a7 to
486a10b
Compare
1837b50 to
1598ff7
Compare
1598ff7 to
8071742
Compare
bc6fa6f to
8529a1a
Compare
| parameter int unsigned NumOutLog2 = (NumOut > 32'd1) ? unsigned'($clog2(NumOut)) : 32'd1, | ||
| // Burst response type can be overwritten for DataWidth > 32b | ||
| // This can happen when the DataWidth includes transaction metadata | ||
| parameter type burst_resp_t = burst_pkg::burst_gresp_t |
There was a problem hiding this comment.
MemPool relies on this line to override burst_resp_t with its own definition, which is slightly different from the default burst_pkg::burst_gresp_t. Removing it therefore seems to break the current MemPool interface.
Was the intention to update MemPool’s side of the interface as part of this change too?
MemPool's definition of the struct: https://github.com/pulp-platform/mempool/blob/b4bd2b1ff61b0fdce1a0321306a99dbf3fcf44d4/hardware/src/mempool_tile.sv#L506-L518
MemPool's burst_resp_t override: https://github.com/pulp-platform/mempool/blob/b4bd2b1ff61b0fdce1a0321306a99dbf3fcf44d4/hardware/src/mempool_tile.sv#L541
There was a problem hiding this comment.
Correct, this was updated in the current WIP of MemPool (https://github.com/pulp-platform/mempool/blob/86049e831a5869a6faf6018a90bd726d89893718/hardware/src/mempool_tile.sv#L522-L563).
This PR adds burst support to the variable latency interconnect.
In systems where multiple interconnects are instantiated hierarchically, the arbitration across multiple initiators at the boundary between hierarchies causes a bottleneck in the request-per-cycle injected into the interconnect. The burst functionality solves the problem. We provide:
burst_req_groupermodule, that groups a parallel valid request in a burst request,burst_cuttermodule, that issues two bursts when the parallel request crosses the boundary between hierarchies and targets different arbitrators,burst_managermodule, that receives a burst request and translates it into a parallel request,burst_rsp_groupermodule, that increases the bandwidth of the response channel to send multiple words from a parallel response with the sameresp_valid, thus reducing congestion to the arbiters also on the response path.More details on the burst protocol applied to a system with hierarchical crossbars and wide memory requests initiators are in the following publication:
TCDM Burst Access: Breaking the Bandwidth Barrier in Shared-L1 RVV Clusters Beyond 1000 FPUs
This paper is available on arXiv:2501.14370 [cs.AR].