Dynamic Memory Port Allocation for Parallel Computing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing parallel computing models, such as BSP, face inefficiencies in data access and communication phases due to rigid port allocation strategies, which can hinder performance in compute and exchange phases, especially in complex computations like neural networks.

Innovation Solution

Implementing a processor with multiple computing units and memory ports that dynamically allocate ports for input and output regions during compute and exchange phases, allowing simultaneous access and communication to optimize data access and reduce overall processing time.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If a single memory port is assigned to both input and output regions during compute phase, then memory access simplicity is improved, but port utilization efficiency deteriorates

Engineering Contradiction:
Improvememory access simplicityVSAvoidport utilization efficiency
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent implements dynamic port allocation where memory ports are reassigned between compute phase and exchange phase. During compute phase, a single port serves both input and output regions for simplicity. During exchange phase, separate ports are assigned to input and output regions to maximize utilization. This dynamic reconfiguration resolves the contradiction by adapting port allocation to phase-specific requirements.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes the operational parameters of memory ports based on execution phase. The port assignment configuration is modified between compute phase (single port for both regions) and exchange phase (separate ports for input and output regions). This parameter change enables the system to optimize for ease of operation during computation and for productivity during data exchange.

Inventive Principle:
Principle #35Parameter changes

2Productivity

If separate memory ports are assigned to input and output regions during exchange phase, then port utilization efficiency is improved, but system complexity increases

Engineering Contradiction:
Improveport utilization efficiencyVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system employs dynamic port allocation that activates separate port assignments only during the exchange phase when needed for maximum efficiency. During compute phase, the system reverts to simpler single-port configuration. This temporal separation of complexity reduces overall system complexity while maintaining high port utilization during critical exchange operations.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent implements periodic switching between port allocation modes synchronized with computation phases. The system alternates between single-port mode (compute phase) and multi-port mode (exchange phase) in a regular periodic pattern. This periodic action allows the system to manage complexity by confining complex multi-port operations to specific time intervals rather than maintaining them continuously.

Inventive Principle:
Principle #19Periodic action

3Ease of manufacture

If rigid port allocation is used in BSP model, then implementation simplicity is improved, but time efficiency deteriorates

Engineering Contradiction:
Improveimplementation simplicityVSAvoidtime efficiency
Core Design Contradiction:
Ease of manufactureVSLoss of time

Solution Approach 1:

The patent introduces dynamic port allocation that adapts to computational needs during different phases. During compute phase, simplified single-port access maintains implementation ease. During exchange phase, dynamic reassignment of separate ports to input and output regions optimizes data transfer time. This resolves the contradiction by maintaining simplicity where possible and optimizing performance where critical.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The computation process is segmented into distinct phases (compute phase and exchange phase) with different port allocation strategies. This segmentation allows the system to apply simplified allocation during computation and optimized allocation during exchange, resolving the time efficiency issue without compromising overall implementation simplicity.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS10585716B2Parallel computing
Publication Date: 2020.03.10 GRAPHCORE LTD
  • US10585716B2 patent drawing
  • US10585716B2 patent drawing
  • US10585716B2 patent drawing

AI summary

A method for executing a computer program, the method implemented by a processor comprising a plural number of computing units and an interconnect connected to the computing units, wherein each computing unit comprises a processing unit and a memory having at least two memory ports, each port assignable to one or more respective regions of the memory, wherein the method comprises at each computing unit: performing an initial step of the program to write: an initial output value to an output region of the memory, and an initial input value to an input region of the memory; and performing a subsequent step of the program by: in a compute phase: assigning one of the two ports to both the input region and the output region; executing code sequences on the processing unit to compute an output set of one or more new output values, and writing the output set to the output region, the output set computed from the initial output and initial input values, each of which is retrieved via said one port in the compute phase; when the compute phase has completed, in an exchange phase: assigning a first of the two ports to the output region and a second of the two ports to input region; and retrieving a new output value of the output set from the output region via said first port and sending the retrieved value to a different computing unit via the interconnect, and receiving via the interconnect a new input value which has been computed by a different computing unit in the subsequent step and writing the received value to the input region via said second port.