Efficient enforcement of command execution order in solid state drives
First Claim
Patent Images
1. A method, comprising:
- receiving, by a memory system, a plurality of commands from a host, the plurality of commands including corresponding data;
storing a subset of the plurality of commands that are to be executed in an order in which they are received into an in-order queue;
assigning a respective sequence number to each command of the subset, wherein the respective sequence number corresponds to an order in which each command of the subset is received by the memory system;
executing, by a processor included in the memory system, commands of the subset in accordance with internal scheduling criteria that allows commands to be executed in an order different than the order in which the commands were received;
storing, in the memory system, the corresponding data and the respective sequence number for executed commands;
recording, in the memory system, the respective sequence number for a last command of a series of commands that have executed successfully in an order in which each command of the series was received by the memory system;
sending a message to the host indicating that a given command of the subset has been executed in response to determining that each command of the subset with a respective sequence number less than the respective sequence number assigned to the given command has been successfully executed; and
in response to determining that the memory system is recovering from a power disruption;
skipping stored sequence numbers less than the recorded sequence number; and
scanning the stored sequence numbers, beginning at the recorded sequence number, to identify a gap in the respective sequence numbers stored in the memory system.
0 Assignments
0 Petitions
Accused Products
Abstract
A method in a storage device includes receiving from a host storage commands for execution in a non-volatile memory of the storage device. At least a subset of the storage commands are to be executed in accordance with an order-of-arrival in which the storage commands in the subset are received. The received storage commands are executed in the non-volatile memory in accordance with internal scheduling criteria of the storage device, which permit deviations from the order-of-arrival, but such that execution of the storage commands in the subset reflects the order-of-arrival to the host.
29 Citations
20 Claims
-
1. A method, comprising:
-
receiving, by a memory system, a plurality of commands from a host, the plurality of commands including corresponding data; storing a subset of the plurality of commands that are to be executed in an order in which they are received into an in-order queue; assigning a respective sequence number to each command of the subset, wherein the respective sequence number corresponds to an order in which each command of the subset is received by the memory system; executing, by a processor included in the memory system, commands of the subset in accordance with internal scheduling criteria that allows commands to be executed in an order different than the order in which the commands were received; storing, in the memory system, the corresponding data and the respective sequence number for executed commands; recording, in the memory system, the respective sequence number for a last command of a series of commands that have executed successfully in an order in which each command of the series was received by the memory system; sending a message to the host indicating that a given command of the subset has been executed in response to determining that each command of the subset with a respective sequence number less than the respective sequence number assigned to the given command has been successfully executed; and in response to determining that the memory system is recovering from a power disruption; skipping stored sequence numbers less than the recorded sequence number; and scanning the stored sequence numbers, beginning at the recorded sequence number, to identify a gap in the respective sequence numbers stored in the memory system. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. An apparatus, comprising:
-
a memory; a host interface configured to receive a plurality of commands for execution on the memory, the plurality of commands including corresponding data; an in-order queue configured to receive a subset of the plurality of commands, wherein commands of the subset are to be executed in an order in which they are received; a processor configured to; assign a respective sequence number to each command of the subset, wherein the respective sequence number corresponds to an order in which each command of the subset is received; execute commands of the subset in accordance with internal scheduling criteria that allows commands to be executed in an order different than the order in which the commands were received; store, in the memory, the corresponding data and the respective sequence number for each executed commands of the subset; record, in the memory, the respective sequence number for a last command of a series of commands that have executed successfully in an order in which each command of the series was received by the host interface; send, via the host interface, an acknowledgement that a given command of the subset has been executed in response to a determination that each command of the subset with a respective sequence number less than the respective sequence number for the given command has been successfully executed; and in response to a determination that the processor is recovering from a power disruption; skipping stored sequence numbers less than the recorded sequence number; and scanning stored sequence numbers, beginning at the recorded sequence number, to identify a gap in the respective sequence numbers stored in the memory. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A system, comprising:
-
a memory device; and a host configured to send a plurality of commands to the memory device; wherein the memory device is configured to; store a subset of the plurality of commands that are to be executed in an order in which they are received into an in-order queue; assign a respective sequence number to each command of the subset, wherein the respective sequence number corresponds to an order in which each command of the subset is sent by the host; execute commands of the subset in accordance with internal scheduling criteria that allows commands to be executed in an order different than the order in which the commands were sent; store the corresponding data and the respective sequence number for executed commands; send a message to the host indicating that a given command of the subset has been executed in response to a determination that each command of the subset with a respective sequence number less than the respective sequence number for the given command has been successfully executed; record the respective sequence number for a last command of a series of commands that have executed successfully in an order in which each of the series of commands was received; upon recovery from a power disruption; skip stored sequence numbers less than the recorded sequence number; and search for a gap the store respective sequence numbers beginning at the respective sequence number for the last command of the series of commands. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification