Stream FIFO Insertion in Heterogeneous Multi-Core Compilation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing compilers for multi-core architectures do not effectively address heterogeneous architectures, particularly in mapping compute kernels to processor cores and data structures to memory banks, and routing stream data and DMA data between processor cores and programmable logic.

Innovation Solution

A compilation flow for a heterogeneous multi-core architecture that involves obtaining a graph representation of an application, mapping kernels onto data processing engines (DPEs) and data structures onto memory, routing communication channels, and adding FIFO buffers to communication channels to generate implementation data for programming a System-on-Chip (SoC).

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If existing compilers are used for multi-core architectures, then compilation can be performed, but they cannot effectively address heterogeneous architectures including mapping kernels to processor cores and routing stream data between cores and programmable logic

Engineering Contradiction:
Improvecompatibility with heterogeneous multi-core architectureVSAvoidcompilation capability
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The compilation process is divided into distinct stages: graph representation parsing, kernel mapping to DPEs, data structure mapping to memory banks, communication channel routing, and FIFO insertion. Each stage handles a specific aspect of heterogeneous architecture compilation, enabling the compiler to effectively process complex multi-core applications while maintaining adaptability to the target architecture.

Inventive Principle:
Principle #1Segmentation

2Productivity

If FIFO buffers are added to communication channels, then data flow synchronization and performance are improved, but device complexity increases

Engineering Contradiction:
Improveexecution performanceVSAvoidbuffer insertion
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The compiler performs preliminary analysis of the application graph to identify communication channels that require FIFO buffers before code generation. By determining FIFO requirements during the compilation phase rather than at runtime, the system optimizes execution performance while managing complexity through static analysis and automated buffer placement in the communication path between DPEs.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If kernel mapping and data structure allocation are optimized, then execution efficiency improves, but compilation complexity increases

Engineering Contradiction:
Improveexecution efficiencyVSAvoidcompilation process
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediate representation (graph representation) that models the application's computational kernels and data dependencies. This graph serves as a mediator between the high-level application code and the low-level heterogeneous architecture, enabling the compiler to perform optimized mapping of kernels to DPEs and data structures to memory banks while managing compilation complexity through structured analysis.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10628622B1Stream FIFO insertion in a compilation flow for a heterogeneous multi-core architecture
Publication Date: 2020.04.21 XILINX INC
  • US10628622B1 patent drawing
  • US10628622B1 patent drawing
  • US10628622B1 patent drawing

AI summary

An example method of implementing an application for a system-on-chip (SOC) having a data processing engine (DPE) array includes obtaining a graph representation of the application, the graph representation including nodes representing kernels of the application and edges representing communication between the kernels, mapping, based on the graph, the kernels onto DPEs of the DPE array and data structures of the kernels onto memory in the DPE array, routing communication channels between DPEs and circuitry of the application configured in programmable logic of the SOC, adding at least one first-in-first-out (FIFO) buffer to at least one of the communication channels, and generating implementation data for programming the SOC to implement the application based on results of the mapping and the routing.