CNN Hardware Accelerator with Vector MAC Units
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing hardware and software systems face challenges in achieving high computational efficiency when processing convolutional neural networks (CNNs) due to varied data access patterns and layer sizes, leading to inefficiencies in processing complex CNNs.
Innovation Solution
A hardware accelerator architecture that includes a compute core with multiple compute units, each equipped with memory caches and vector multiply-accumulate units, optimized for efficient processing of CNNs by loading contiguous data traces and weight vectors, and operating in cooperative or independent modes to maximize parallelism and minimize latency.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If standard hardware and software systems are used to process CNNs, then general-purpose computing is achieved, but computational efficiency deteriorates due to varied data access patterns and layer sizes
Solution Approach 1:
The processing system is segmented into multiple compute units, each capable of independently processing different data access patterns. Each compute unit contains its own memory caches and vector MAC units, allowing parallel processing of different CNN layers and operations without interfering with each other, thus maintaining high computational efficiency across varied workloads
Solution Approach 2:
The compute units can dynamically switch between cooperative and independent operating modes based on the specific CNN layer being processed. This dynamic adaptability allows the system to optimize for either parallelism (cooperative mode) or independent data access patterns (independent mode), resolving the contradiction between versatility and efficiency
2Speed
If multiple memory caches are provided in each compute unit, then data access efficiency is improved, but device complexity increases
Solution Approach 1:
Multiple memory caches (first memory cache for map traces and second memory cache for kernel traces) are merged into a single compute unit structure, sharing common control logic and interconnect resources. This integration reduces the overall device complexity while maintaining fast data access speeds through localized caching of frequently accessed data
3Productivity
If vector multiply-accumulate units are used, then computational throughput is improved, but energy consumption increases
Solution Approach 1:
The vector MAC units are designed to perform continuous multiply-accumulate operations without interruption, processing data in streamlined vectors rather than scalar operations. This continuous operation maximizes throughput while minimizing the energy cost per computation by keeping the computational units actively engaged rather than idle
Solution Approach 2:
Traditional scalar multiplication and addition operations are replaced with vectorized MAC units that perform multiple operations in parallel. This substitution increases computational throughput significantly while the energy consumption increases only proportionally, not exponentially, due to the efficient vector processing architecture
Data Source
AI summary
An accelerator for processing of a convolutional neural network (CNN) includes a compute core having a plurality of compute units. Each compute unit includes a first memory cache configured to store at least one vector in a map trace, a second memory cache configured to store at least one vector in a kernel trace, and a plurality of vector multiply-accumulate units (vMACs) connected to the first and second memory caches. Each vMAC includes a plurality of multiply-accumulate units (MACs). Each MAC includes a multiplier unit configured to multiply a first word that of the at least one vector in the map trace by a second word of the at least one vector in the kernel trace to produce an intermediate product, and an adder unit that adds the intermediate product to a third word to generate a sum of the intermediate product and the third word.


