Selectively enabling a host transfer interrupt
First Claim
1. A non-volatile storage system capable of reducing interrupt overhead, comprising:
- an interface configured to receive a command from a host device, the command including an identification tag, the identification tag chosen from a limited set of identification tags, each identification tag being unique to an outstanding command, the interface additionally configured to schedule host data transfers using a host communication thread, the host communication thread configured to produce an interrupt upon host transfer completion; and
a processor configured to manage communications with the host device through the interface, to determine whether to place the command in a first queue to be executed based on an available capacity of the first queue, to place the command in a second queue if it is determined that the first queue is filled to capacity, and to, upon placing the command in said first queue, selectively disable generation of an interrupt by the interface upon host transfer completion, said interrupt indicating a completion of a data transfer to the host device or from the host device, the selective disablement based at least in part on one of a command type, availability of interface resources to accept additional host transfers, and a command size, whereby the selective disablement reduces an overhead associated with executing the command.
8 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the invention are directed to systems and methods for reducing the number of interrupts on a controller for a non-volatile storage device to improve data transfer performance of the storage system. The embodiments described herein selectively enable an interrupt generated by host transfer hardware for a host command. The interrupt can be enabled or disabled by considering the command type, availability of interface resources to accept additional host transfers, and the command size. Embodiments described herein are useful for host interfaces implementing a tagging scheme for host transfers with a limited range of identification tags.
168 Citations
18 Claims
-
1. A non-volatile storage system capable of reducing interrupt overhead, comprising:
-
an interface configured to receive a command from a host device, the command including an identification tag, the identification tag chosen from a limited set of identification tags, each identification tag being unique to an outstanding command, the interface additionally configured to schedule host data transfers using a host communication thread, the host communication thread configured to produce an interrupt upon host transfer completion; and a processor configured to manage communications with the host device through the interface, to determine whether to place the command in a first queue to be executed based on an available capacity of the first queue, to place the command in a second queue if it is determined that the first queue is filled to capacity, and to, upon placing the command in said first queue, selectively disable generation of an interrupt by the interface upon host transfer completion, said interrupt indicating a completion of a data transfer to the host device or from the host device, the selective disablement based at least in part on one of a command type, availability of interface resources to accept additional host transfers, and a command size, whereby the selective disablement reduces an overhead associated with executing the command. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method of host transfer request handling, comprising:
by a non-volatile storage device that communicates with a host system; receiving a host transfer request from the host system, the host transfer request associated with an identification tag chosen from a limited set of identification tags, each identification tag being unique to an outstanding command; storing the host transfer request in a queue of the non-volatile storage device; executing the host transfer request using a host interface; and determining, upon receiving and queuing the host transfer request, whether to interrupt a processor of the non-volatile storage device upon completion of the host transfer request to indicate a completion of a data transfer to the host system or from the host system, the determination on whether to interrupt the processor based at least in part on at least one of allocated resources associated with the host transfer request and an availability of interface resources to accept additional host transfer requests. - View Dependent Claims (14)
-
15. A method performed by a storage subsystem that implements native command queuing, the method comprising:
-
receiving a tagged read command from a host system, and storing the tagged read command in a queue of the storage subsystem; executing the tagged read command from the queue, wherein executing the tagged read command comprises transferring data stored by the storage subsystem to the host system; and determining, upon storing the tagged read command in the queue, whether to execute an interrupt process associated with the tagged read command based at least partly on whether any other commands are stored in the queue, wherein the interrupt process indicates a completion of a data transfer to or from the host system. - View Dependent Claims (16, 17, 18)
-
Specification