Emulation Engine Memory Layout for More Instructions Per Cycle

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Hardware emulators face inefficiencies and significant cost increases due to the need for larger data array memory as the number of instructions processed per emulation cycle increases, making it challenging to keep pace with the growing complexity of integrated circuits.

Innovation Solution

The implementation of a data array with sub-arrays of varying sizes, where the size of each sub-array is determined by the probability of being accessed during future emulation steps, allows for more efficient storage and access of processor outputs, reducing the overall memory requirements without compromising emulation cycle performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the number of instructions processed per emulation cycle is increased, then the productivity of the emulation engine is improved, but the size of the data array must increase significantly

Engineering Contradiction:
Improvenumber of instructions per emulation cycleVSAvoiddata array memory size
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The data array is divided into multiple sub-arrays, each storing data for a specific time window (e.g., current cycle, previous cycle, two cycles ago). This segmentation allows the system to access only the necessary historical data for each instruction, reducing the total memory size required while supporting multiple instructions per cycle.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different sub-arrays are allocated based on local access patterns and probability of use. Sub-arrays are configured with different depths according to how frequently data from different time windows is accessed, optimizing memory usage by providing larger storage for frequently accessed data and smaller storage for less frequently accessed data.

Inventive Principle:
Principle #3Local quality

2Productivity

If additional data array memory is added to support more instructions per cycle, then the productivity is improved, but the cost of the hardware emulator increases significantly

Engineering Contradiction:
Improvenumber of instructions per emulation cycleVSAvoidhardware emulator cost
Core Design Contradiction:
ProductivityVSEase of manufacture

Solution Approach 1:

By segmenting the data array into sub-arrays that match actual access patterns, the system achieves high productivity with minimal memory. This eliminates the need for expensive large-scale memory expansions, thereby reducing hardware costs while maintaining the ability to execute multiple instructions per cycle.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system implements partial action by only storing data for the specific time windows that are actually needed for multi-instruction cycling, rather than storing all possible historical data. This partial storage approach achieves the required productivity improvement without the excessive memory investment that would be needed to store complete historical data for all possible access patterns.

Inventive Principle:
Principle #16Partial or excessive action

3Adaptability or versatility

If the data array stores data for all possible access patterns, then the adaptability is improved, but the memory size and cost increase

Engineering Contradiction:
Improvedata access flexibilityVSAvoiddata array memory size
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The data array structure provides adaptability by configuring sub-arrays with different depths based on local access probability characteristics. This allows the system to adapt to different access patterns without requiring uniform large storage across all sub-arrays, achieving versatility with optimized memory utilization.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system dynamically adapts to different access patterns by using probabilistic analysis to configure sub-array depths according to actual usage patterns. This dynamic configuration allows the data array to be versatile and adaptive to varying access requirements without permanently allocating excessive memory for all possible patterns.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS7827023B2Method and apparatus for increasing the efficiency of an emulation engine
Publication Date: 2010.11.02 CADENCE DESIGN SYST INC
  • US7827023B2 patent drawing
  • US7827023B2 patent drawing
  • US7827023B2 patent drawing

AI summary

A method and apparatus for a memory efficient hardware emulator. The emulator comprises a plurality of processor dusters having data within the duster is stored in at least one data array, where the at least one data array comprises a plurality of sub-arrays. The sub-arrays that are not of uniform size (e.g., the size of each sub-array is determined by the probability that a particular sub-array will be accessed by the processor during a future emulation step). For example, at least one first sub-array is equal in depth to instruction memory within a processor (i.e., equal to the number of instructions in an emulation cycle), and the remaining sub-arrays are a fractional depth of the first sub-array.