SATA Host Controller Native Command Queuing via Software Offload
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional host controllers that implement native command queuing for SATA II protocols require significant die area, increasing costs due to the need to store and maintain the state of each queued command, which is not efficiently managed.
Innovation Solution
A software-based approach where the host controller device driver maintains the native command queuing state and generates interrupts to request DMA transfer contexts, reducing the need for the host controller to store multiple command states and allowing it to process only the current command, thereby simplifying the hardware and minimizing die area.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If conventional host controller stores and maintains the state of each queued command, then native command queuing functionality is achieved, but die area increases and cost increases
Solution Approach 1:
The patent extracts the command state storage and management functionality from the host controller hardware and relocates it to software (device driver) running on the CPU. The host controller hardware is reduced to only maintaining the current command being processed, while the device driver maintains the state of all queued commands in system memory. This extraction eliminates the need for large hardware storage structures in the host controller, thereby reducing die area while preserving full NCQ functionality.
Solution Approach 2:
The patent introduces system memory as an intermediary storage medium between the host controller and the device driver. The device driver uses scatter-gather lists stored in system memory to manage command states, acting as a mediator that bridges the simplified host controller hardware and the full NCQ functionality required by SATA II disks. This intermediary approach allows the host controller to remain simple while achieving complex queuing capabilities through software management.
2Productivity
If conventional host controller includes logic to perform native command queuing, then disk access performance is improved, but device cost increases
Solution Approach 1:
The patent extracts the complex NCQ logic from the host controller hardware and implements it in software form within the device driver. By moving the state management logic to software, the hardware can be manufactured with fewer transistors and simpler logic circuits, directly reducing manufacturing cost while maintaining the ability to process multiple queued commands efficiently for improved disk access performance.
Solution Approach 2:
The patent replaces the mechanical/hardware-based state storage and management system with a software-based system. Instead of using hardware registers and logic circuits to track command states, the system uses software data structures (scatter-gather lists) in system memory, managed by the device driver. This substitution reduces hardware complexity and manufacturing cost while preserving the functional capabilities needed for high-performance disk access.
3Adaptability or versatility
If host controller stores DMA transfer context for each queued command, then command processing capability is maintained, but die area increases
Solution Approach 1:
The patent extracts the DMA transfer context storage from the host controller hardware and places it in system memory, managed by the device driver. The host controller only stores the DMA context for the currently executing command, while the device driver maintains contexts for all queued commands using scatter-gather lists. This extraction dramatically reduces the host controller's memory requirements and die area while preserving full command processing capability through software management.
Data Source
AI summary
Systems and methods for performing native command queuing according to the protocol specified by Serial ATA II for transferring data between a disk and system memory are described. Native command queuing context for queued commands is maintained by a host controller device driver and is provided to the host controller as needed to process the queued commands. The host controller is simplified since it only stores the context of the one command being processed. The host controller generates a backoff interrupt when a command cannot be queued. The host controller generates a DMA transfer context request interrupt to request programming of the registers that store the context for the one command being processed.


