CGRA
**CGRA Coarse-Grained Reconfigurable Array** is **a programmable processor architecture composed of multiple coarse-grained processing elements interconnected through a flexible routing fabric, enabling domain-specific computation** — Coarse-Grained Reconfigurable Arrays provide versatility between fixed ASICs and fine-grained FPGAs through larger functional units supporting complete operations rather than bit-level logic gates. **Processing Elements** implement word-level arithmetic logic units, multiply-accumulate units, memory blocks, and specialized function units, reducing configuration memory and context switching overhead compared to bit-grained FPGAs. **Interconnect Fabric** provides high-bandwidth communication between processing elements through mesh networks, supporting direct nearest-neighbor connections and long-range bypass paths. **Configuration** stores per-cycle operation specifications enabling different computation patterns across consecutive cycles, supporting dynamic reconfiguration enabling algorithm switching during execution. **Application Mapping** assigns computation kernels to processing elements considering communication patterns, data dependencies, and resource utilization, optimizing placement for throughput and latency. **Memory Hierarchy** integrates local registers, distributed memory blocks enabling low-latency access, and external memory interfaces for large datasets. **Temporal Dimension** exploits reconfiguration flexibility executing sequential algorithms across multiple cycles, amortizing configuration memory overhead. **Energy Efficiency** achieves efficiency between CPUs and custom ASICs through operation-specific customization with reconfiguration flexibility. **CGRA Coarse-Grained Reconfigurable Array** provides balanced computation flexibility and efficiency.