Flash Controller Command Selection via Multi-Stage Arbitration

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing flash storage systems face inefficiencies due to the need to process hundreds of commands simultaneously, which is memory-intensive and time-consuming, often leading to unfair and inefficient command execution due to limited reordering capabilities.

Innovation Solution

A system with multiple ports and arbiters selects a subset of command identifiers based on age and port priority, allowing a microcontroller to optimize command execution by processing a smaller set of commands, ensuring fairness and efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If all issued flash commands are examined and reordered, then command execution efficiency is improved, but memory usage and processing time increase significantly

Engineering Contradiction:
Improvecommand execution efficiencyVSAvoidmemory usage
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent segments the command selection process into multiple stages: first, port arbiters select commands from individual ports; then a second arbiter selects from the aggregated set. This segmentation reduces the memory burden on any single component and enables efficient processing through distributed selection logic.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Instead of examining all issued commands simultaneously, the system performs partial examination in sequential stages. The port arbiters perform preliminary selection, and the second arbiter performs final selection from a reduced set, avoiding the need to hold all commands in memory at once while still achieving efficient reordering.

Inventive Principle:
Principle #16Partial or excessive action

2Device complexity

If commands are processed in the order they are issued, then processing simplicity is maintained, but system efficiency deteriorates due to inability to execute parallelizable commands

Engineering Contradiction:
Improveprocessing simplicityVSAvoidsystem efficiency
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The port arbiters perform preliminary selection of commands from each port before the second arbiter performs final selection. This preliminary action organizes commands in advance, enabling the second arbiter to efficiently select commands for reordering without complex real-time analysis, thus maintaining processing simplicity while improving efficiency.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If limited command reordering is implemented, then some efficiency improvement is achieved, but command execution fairness deteriorates as newer commands may be executed while older commands languish

Engineering Contradiction:
Improveefficiency improvementVSAvoidcommand execution fairness
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The arbitration process is segmented across multiple components (port arbiters and second arbiter) that work sequentially. This segmentation ensures that commands from all ports are considered in the selection process, preventing any single port from monopolizing execution while still allowing efficient reordering through the multi-stage selection mechanism.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9208108B2Method and system for improved flash controller commands selection
Publication Date: 2015.12.08 NVIDIA CORP
  • US9208108B2 patent drawing
  • US9208108B2 patent drawing
  • US9208108B2 patent drawing

AI summary

A system for selecting a subset of issued flash storage commands to improve processing time for command execution. A plurality of ports stores a first plurality of command identifiers and are associated with the plurality of ports. Each of the first plurality of arbiters selects an oldest command identifier among command identifiers within each corresponding port resulting in a second plurality of command identifiers. A second arbiter makes a plurality of selections from the second plurality of command identifiers based on command identifier age and the priority of the port. A session identifier queue stores commands associated with the plurality of selections among other commands forming a third plurality of commands. A microcontroller selects an executable command from the third plurality of commands for execution based on an execution optimization heuristic. After execution of the command, the command identifier in the port is cleared.