Compiler Configuring Hardware Computational Units for Network Packet Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Network interface devices face challenges in efficiently processing and configuring hardware to handle data packets, particularly in optimizing data streams and reducing the complexity of program branches, while maintaining performance and throughput.

Innovation Solution

A compiler method that configures hardware in network interface devices by defining computational units to process data packets as streams of words, using buffers for data storage, converging common accesses, and optimizing packet and map accesses, while also reducing program branches through conditional execution and switch combinations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If computational units process data packets as streams of words with multiple buffers, then data processing capability is improved, but device complexity increases

Engineering Contradiction:
Improvedata processing capabilityVSAvoidhardware complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The data processing system is divided into multiple computational units, each handling specific portions of packet data streams. Each computational unit processes words independently, allowing parallel operation and improving overall throughput without requiring a single complex processing unit.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Buffers are introduced as intermediary components between computational units to temporarily store data words. This allows computational units to operate independently without direct synchronization, simplifying the control logic while maintaining high data flow efficiency.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Device complexity

If multiple accesses are converged into single access operations, then hardware complexity is reduced, but processing time may increase

Engineering Contradiction:
Improvehardware complexityVSAvoidprocessing time
Core Design Contradiction:
Device complexityVSLoss of time

Solution Approach 1:

Multiple packet accesses that target the same memory location are merged into single access operations. The compiler identifies redundant accesses within a convergence window and combines them, reducing the total number of memory access operations and simplifying hardware requirements.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The compiler performs preliminary analysis of access patterns during the compilation phase to identify and merge redundant accesses before code execution. This static analysis allows the system to optimize access patterns without adding runtime overhead.

Inventive Principle:
Principle #10Preliminary action

3Device complexity

If program branches are reduced through conditional execution, then device complexity is reduced, but adaptability decreases

Engineering Contradiction:
Improveprogram branch complexityVSAvoidprogram branching capability
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The system uses dynamic conditional execution where computational units can be enabled or disabled based on runtime conditions. This allows the hardware to adapt to different packet processing requirements without requiring multiple fixed architectural configurations, maintaining flexibility while reducing structural complexity.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS20240184552A1Compilers and compiling methods field
Publication Date: 2024.06.06 XILINX INC
  • US20240184552A1 patent drawing
  • US20240184552A1 patent drawing
  • US20240184552A1 patent drawing

AI summary

A method comprises compiling, by a compiler, a received program to provide a compiler output for configuring hardware to implement the received program. The received program relate to packets of data in a memory. The compiling comprising defining by the compiler output a plurality of computational units in the hardware, each of the computational units being configured to receive a packet of data as a stream of words and between a first and a second of the computational units, a first buffer for storing words of a packet and a second buffer for storing data output by the first computational unit.