Logically Partitioned Memory Array for Queue Management

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing memory queue technologies face challenges in efficiently managing data storage and retrieval in synchronous and asynchronous environments, particularly in handling invalid data and partitioning memory arrays for optimal performance.

Innovation Solution

The implementation of multiple first in, first out (FIFO) and first in, random out (FIRO) memory queues with logically partitioned memory arrays and control logic that manages read and write pointers, status flags, and handshaking signals to facilitate efficient data access and storage across multiple memory sub-arrays.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If memory arrays are partitioned into multiple sub-arrays with independent read/write pointers, then data storage and retrieval efficiency is improved, but device complexity increases

Engineering Contradiction:
Improvedata storage and retrieval efficiencyVSAvoiddevice complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The memory array is divided into multiple independently accessible sub-arrays, each with its own read pointer and write pointer. This segmentation allows parallel read/write operations to occur simultaneously in different sub-arrays, improving throughput and efficiency while the modular structure helps manage complexity through clear separation of functions.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The control logic is designed to universally manage multiple sub-arrays using the same read/write pointer mechanisms and status flag systems. This multi-functional approach allows a single control unit to handle various operations across different sub-arrays without requiring separate dedicated control logic for each, thereby improving efficiency while controlling complexity growth.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Reliability

If status flags are used to mark invalid data in memory columns, then data integrity is improved, but device complexity increases

Engineering Contradiction:
Improvedata integrityVSAvoiddevice complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

Status flags are implemented to provide feedback about the validity of data in each memory column. When data is written or read, the corresponding status flag is updated to reflect the current state (valid/invalid). This feedback mechanism ensures data integrity by allowing the system to track and respond to the state of each memory location, preventing errors while maintaining relatively simple flag-based implementation.

Inventive Principle:
Principle #23Feedback

3Productivity

If sequential read operations are performed from top entry to bottom entry in memory columns, then data access efficiency is improved, but loss of time occurs due to invalid data skipping

Engineering Contradiction:
Improvedata access efficiencyVSAvoidtime for skipping invalid data
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The status flags are set in advance to indicate which memory columns contain valid or invalid data before read operations begin. This preliminary marking allows the control logic to quickly identify and skip invalid columns during sequential reads, avoiding unnecessary access attempts and reducing the time lost to invalid data without compromising the overall sequential access efficiency.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10983725B2Memory array architectures for memory queues
Publication Date: 2021.04.20 SYNOPSYS INC
  • US10983725B2 patent drawing
  • US10983725B2 patent drawing
  • US10983725B2 patent drawing

AI summary

Memory queues described herein use a single hardware and/or software architecture for a memory array. This memory array can be partitioned to be between one memory sub-array to implement a single memory queue and multiple memory sub-arrays to implement multiple memory queues. Various electrical signals provided by or provided to these multiple memory queues include addressing information to associate these various control signals with one or more of the multiple memory sub-arrays. In some situations, the memory queues can externally associate their corresponding read pointers to entries of one of their memory sub-arrays. In these situations, these memory queues can dynamically associate their read pointers to point to any entry from among their memory arrays and to read the data store therein starting from any random entry within their memory arrays.