Neural Processor Zero Padding via Partitioned Tensor Registers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing neural network processing methods consume significant CPU bandwidth and increase power consumption due to reliance on central processing units for extensive computing operations, particularly in configurations involving convolutional neural networks.

Innovation Solution

Implementing zero-padding in convolution operations within a neural processor circuit by dividing input tensors into partitions and using registers to manage zero-padding patterns, where active and inactive values are processed differently, and updating these patterns across compute cycles to optimize convolution operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If convolution operations are performed using CPU and main memory, then ease of configuration is improved, but CPU bandwidth consumption and power consumption increase

Engineering Contradiction:
Improveease of configurationVSAvoidpower consumption
Core Design Contradiction:
Ease of operationVSUse of energy by moving object

Solution Approach 1:

The patent divides the input tensor into multiple partitions and processes them in parallel using multiple compute circuits. This segmentation allows the system to distribute computational load across dedicated hardware units rather than relying on a single CPU, reducing overall power consumption while maintaining configurability through software updates to the neural network model.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a specialized neural processor as an intermediary between the CPU and the computation task. This dedicated hardware unit handles convolution operations, freeing the CPU from intensive computational work and reducing its bandwidth consumption and power usage, while the neural processor itself is optimized for energy-efficient matrix operations.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If zero-padding is implemented for all compute circuits in each kernel row, then computational completeness is improved, but processing efficiency deteriorates due to unnecessary computations

Engineering Contradiction:
Improvecomputational completenessVSAvoidprocessing efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies zero-padding selectively to specific compute circuits based on their position in the kernel row and the current processing cycle. Instead of uniformly padding all circuits, the system determines which circuits require padding by checking if their corresponding input indices fall within valid tensor boundaries. This local differentiation ensures computational correctness where needed while avoiding unnecessary operations elsewhere, thereby improving processing efficiency.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent implements partial zero-padding by applying the padding operation only to the extent necessary for each compute circuit. The system calculates the exact range of valid input indices and applies zero-padding only to compute circuits that would otherwise access out-of-bounds memory locations. This partial action approach maintains computational completeness for valid operations while eliminating excessive padding operations that would waste processing cycles.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS20240220764A1Efficient zero padding in convolution at neural processor
Publication Date: 2024.07.04 APPLE INC
  • US20240220764A1 patent drawing
  • US20240220764A1 patent drawing
  • US20240220764A1 patent drawing

AI summary

Embodiments relate to a method of efficient zero-padding in convolution. The method includes accessing a partition among a plurality of partitions of an input tensor. The input tensor is divided into the plurality of partitions in a raster-scan direction. For each row of a kernel for performing convolution on the input tensor, a register is populated with a set of values indicating a zero-padding pattern. For a compute cycle in the row of the kernel, computations associated with the convolution are performed based in part on the zero-padding pattern. After that, an updated zero-padding pattern representing a zero-padding pattern for a next cycle in the row of the kernel is generated. The set of values in the register is updated to the updated zero-padding pattern.