Linker Hierarchical Resource Pools for Multiprocessor Symbol Management

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multiprocessor systems, existing methods lack efficient mechanisms to manage memory accessibility across multiple processors, leading to manual management of symbol usage and potential name collisions, which complicates the generation of executable code for embedded processors.

Innovation Solution

A linker program that uses scope level information to uniquify symbols and allocate resource instances, allowing for hierarchical declaration and allocation of non-memory resources, ensuring correct loading and execution of code across multiple processors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If manual header file management is used to control symbol accessibility, then memory resource accessibility can be managed, but device complexity and programming burden increase

Engineering Contradiction:
Improvememory accessibility controlVSAvoidprogramming complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The linker automatically manages symbol visibility and uniqueness across processors by reading scope level annotations from declare instructions. The system self-services the complexity of managing symbol accessibility, eliminating the need for manual header file management while maintaining precise control over which symbols are accessible to which processors.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The invention introduces scope level as a new parameter in symbol declarations that automatically controls accessibility. By changing the scope level parameter (e.g., processor-specific vs. global), the system automatically adjusts symbol visibility and uniqueness requirements, replacing manual header file management with automated parameter-driven control.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If symbol uniquification is performed for all symbols, then name collisions are prevented, but processing time and linker complexity increase

Engineering Contradiction:
Improvename collision preventionVSAvoidlinker processing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The linker applies symbol uniquification selectively based on scope level annotations. Symbols marked with processor-specific scope levels are uniquified only within their designated processor context, while global symbols remain unchanged. This local quality approach ensures name collision prevention only where necessary, reducing unnecessary processing overhead.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

Instead of applying symbol uniquification universally to all symbols (excessive action), the linker performs partial uniquification only on symbols with processor-specific scope levels. This partial action approach maintains reliability for symbols that need it while minimizing processing time for symbols that don't require uniquification.

Inventive Principle:
Principle #16Partial or excessive action

3Adaptability or versatility

If hierarchical resource pools are implemented, then resource allocation flexibility improves, but linker program complexity increases

Engineering Contradiction:
Improveresource allocation flexibilityVSAvoidlinker program complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The linker implements hierarchical resource pools using a nested structure where global resource pools contain processor-specific sub-pools, which in turn contain individual symbol allocations. This nesting allows the linker to manage resources at multiple levels of abstraction, providing flexible allocation while organizing complexity in a manageable hierarchical manner.

Inventive Principle:
Principle #7Nested doll (Nesting)

Solution Approach 2:

The resource pool is segmented into hierarchical levels (global pools, processor-specific sub-pools, and individual symbol allocations). This segmentation breaks down the complex task of resource management into manageable segments at different levels, allowing flexible allocation while keeping the linker program structure organized and maintainable.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9223555B2Hierarchical resource pools in a linker
Publication Date: 2015.12.29 NETRONOME SYSTEMS INC
  • US9223555B2 patent drawing
  • US9223555B2 patent drawing
  • US9223555B2 patent drawing

AI summary

A novel declare instruction can be used in source code to declare a sub-pool of resource instances to be taken from the resource instances of a larger declared pool. Using such declare instructions, a hierarchy of pools and sub-pools can be declared. A novel allocate instruction can then be used in the source code to instruct a novel linker to make resource instance allocations from a desired pool or a desired sub-pool of the hierarchy. After compilation, the declare and allocate instructions appear in the object code. The linker uses the declare and allocate instructions in the object code to set up the hierarchy of pools and to make the indicated allocations of resource instances to symbols. After resource allocation, the linker replaces instances of a symbol in the object code with the address of the allocated resource instance, thereby generating executable code.