Storage Controller Virtual Queue Interrupt Mechanism
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
As the number of microprocessors in storage apparatus increases, processing speed is reduced due to increased unnecessary access to virtual queues, depletion of usable RX_IDs, and processing backlogs on hard disks, leading to inefficiencies in command processing.
Innovation Solution
Implementing a storage apparatus with virtual and real queues, updated pointers, and a checking unit that detects pointer updates to efficiently manage command processing, reduce polling, and dynamically assign RX_IDs, thereby improving processing speed and load distribution across microprocessors and hard disks.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If the number of microprocessors is increased, then processing capacity is improved, but processing speed is reduced due to increased polling operations
Solution Approach 1:
The patent replaces the mechanical polling system with an interrupt-driven system. Instead of sequentially accessing each virtual queue to check for commands (mechanical polling), the system uses interrupt signals to notify the controller when commands are available in virtual queues. This substitution eliminates the time-consuming sequential access pattern and allows the controller to respond only when necessary, thereby maintaining high processing speed even with a large number of microprocessors.
Solution Approach 2:
The patent implements a self-service mechanism where each virtual queue automatically generates an interrupt signal when it contains commands for processing. This eliminates the need for the controller to actively poll each queue, as the queues themselves notify the controller of their state. This self-service approach significantly reduces the controller's workload and maintains processing speed regardless of the number of microprocessors in the system.
2Ease of manufacture
If RX_IDs are uniformly assigned to each microprocessor, then resource allocation is simplified, but the number of usable RX_IDs per microprocessor is reduced when more microprocessors are installed
Solution Approach 1:
The patent implements dynamic RX_ID allocation instead of static uniform assignment. The system maintains a pool of available RX_IDs and dynamically assigns them to microprocessors based on current workload and availability. This dynamic approach allows the same RX_ID to be reused by different microprocessors at different times, effectively increasing the number of usable RX_IDs per microprocessor without requiring a larger total pool of identifiers.
Solution Approach 2:
The patent changes the allocation parameter from fixed uniform distribution to dynamic assignment based on system state. By monitoring RX_ID usage patterns and microprocessor workload, the system adjusts assignments in real-time, allowing efficient reuse of RX_IDs across multiple microprocessors. This parameter change enables the system to support more microprocessors without depleting the available RX_ID pool.
3Productivity
If multiple microprocessors execute command processing simultaneously, then throughput is improved, but processing backlog occurs on single hard disks
Solution Approach 1:
The patent implements a feedback mechanism that monitors hard disk processing status and uses this information to regulate command issuance. When a hard disk becomes busy or shows signs of backlog, the system receives feedback and adjusts its command allocation accordingly, temporarily reducing commands to that disk until it becomes available. This feedback loop prevents processing backlog while maintaining high overall throughput by dynamically balancing the load across multiple disks.
Data Source
AI summary
A storage apparatus which contains a plurality of microprocessors includes a virtual queue which stores a virtual command which is used in the storage apparatus; a real queue which stores a real command based on an actual communication protocol; a first pointer which is updated when the virtual command is stored in the virtual queue; a second pointer which is updated when the first pointer is updated; a checking unit which detects an update to the first pointer and updates the second pointer; and a controller. Upon detecting that the second pointer has been updated by the checking unit, the controller references the second pointer and the first pointer, and, after reading the virtual command stored in the virtual queue and converting the virtual command to the real command, stores the real command in the real queue.


