Per-Thread Command Identifier Pools for Threaded Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In threaded computing systems, the synchronization mechanism for command identifiers leads to performance lag due to conflicts and synchronization delays when multiple threads use a global pool of identifiers, affecting the efficiency of read/write operations.

Innovation Solution

Implementing pre-allocated pools of command identifiers for each thread, where each thread has a separate pool of unique identifiers, eliminating the need for synchronization across threads and reducing latency in command identifier assignment.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a global pool of command identifiers is used with synchronization mechanism, then command identifier uniqueness is ensured across threads, but system performance deteriorates due to synchronization lag and locking delays

Engineering Contradiction:
Improvecommand identifier uniquenessVSAvoidsystem performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The global pool of command identifiers is segmented into multiple per-thread pools, with each thread having its own dedicated pool of identifiers. This segmentation eliminates the need for cross-thread synchronization while ensuring that each thread receives unique identifiers from its own pool, resolving the contradiction between reliability and productivity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Command identifier pools are pre-allocated to each thread before execution begins. Each thread is assigned a dedicated pool of identifiers in advance, eliminating the need for runtime synchronization when acquiring identifiers. This preliminary action ensures both uniqueness and high performance.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If synchronization mechanism is used for global command identifier pool, then conflicts between threads are prevented, but latency in command identifier assignment increases

Engineering Contradiction:
Improveconflict preventionVSAvoidassignment latency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The unified command identifier pool is divided into separate per-thread pools, eliminating the need for synchronization when threads acquire identifiers. Each thread independently manages its own pool, preventing conflicts without incurring synchronization latency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The synchronization mechanism is extracted and removed from the command identifier assignment process. By giving each thread its own dedicated pool, the need for synchronization is completely eliminated, achieving both conflict prevention and zero synchronization latency.

Inventive Principle:
Principle #2Taking out (Extraction)

3Ease of operation

If each thread uses native command management with locally unique identifiers, then thread independence is maintained, but command identifier conflicts occur when multiple commands with same identifier are in transit to common resource

Engineering Contradiction:
Improvethread independenceVSAvoidcommand identifier conflict
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The solution merges the benefits of both approaches: thread-independent local management with globally unique identifiers. Each thread independently manages its own dedicated pool of identifiers, maintaining thread independence while ensuring global uniqueness across all threads through the use of separate per-thread pools.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS11681550B2Command management using allocated command identifier pools
Publication Date: 2023.06.20 SANDISK TECHNOLOGIES LLC
  • US11681550B2 patent drawing
  • US11681550B2 patent drawing
  • US11681550B2 patent drawing

AI summary

Systems and methods for threaded computing systems using allocated command identifier pools for command management are described. Command requests for different processing threads are received. Based on the thread assigned to process the command request, command identifiers are assigned from different pools of command identifiers for each thread, where each pool contains non-overlapping sets of command identifiers. The command identifiers are returned to the same pool that the command identifier came from upon completion of each command.