Elastic CGRAs
The design of an elastic CGRA involves the construction of an architecture from stallable elastic components. The elastic components share a common communication protocol that is designed such that the latency within each individual component can be variable, without affecting the functional correctness. In this paper, our elastic components adhere to the SELF protocol proposed by Cortadella. The protocol features a data bus and two control signals. In the SELF protocol, upstream refers to the component that provides the data and downstream refers to the component that consumes the data. The upstream component sets the valid signal, which is bundled with the data to inform the downstream component that the data is ready to be consumed. Meanwhile, the stop signal may be set by the downstream component when the downstream component is busy and unable to consume new data. The SELF protocol can be "wrapped around" the original components within the CGRA, as well as integrated into other components.
Elastic design concepts have the potential to bring multiple benefits to coarse-grained reconfigurable arrays (CGRAs) architecture, including the ability to interface withmemories, having unknown latencies, incorporate run-time variable-latency processing elements, and ease the CGRA mapping challenges of scheduling, placement and routing.
Elastic CGRA API
CGRA-ME’s architecture-specification API includes commonly used primitives for dataflow/elastic architectures, which are the following: 1) Fork 2) Join 3) Elastic Buffer 4) Elastic Memory Port 5) Merge 6) Diverge
Elastic CGRA Design Guiedlines
The added elastic design library is used to elasticize the ADRES and HyCUBE architectures. Note that in this study, the data width is 32-bits. To elasticize the CGRAs, we follow the following guidelines:
1) Adding a fork unit to any multiple fan-out signal. 2) Passing the inputs of the processing unit (ALU) to a join component. 3) Amending a VLU wrapper to the processing unit. 4) Passing the output of the processing unit to an elastic buffer.
Some elastic components are architecture specific (i.e. the register file in ADRES and the crossbar for HyCUBE), that was elasticized within CGRA-ME for the architectures.
Riken CGRA
Riken CGRA is an elastic CGRA that you can find in the list of architectures.