Apparatus, system, and method for managing commands of solid-state storage using bank interleave
DCFirst Claim
1. A method comprising:
- receiving storage commands at respective command queues, each command queue associated with one of two or more banks of a non-volatile solid-state storage device, wherein the storage commands include storage commands of a first type received in an order at a first command queue associated with a first one of the banks and storage commands of a second, different type, received in an order at a second command queue associated with a second one of the banks;
issuing commands from the first and second command queues such that execution of a first command of the first type overlaps in time with execution of a second command of the second type,wherein an execution duration of the first command is at least an order of magnitude greater than an execution duration of the second command; and
issuing commands from the first command queue in an order different than the order in which the commands were received at the first command queue.
16 Assignments
Litigations
0 Petitions
Accused Products
Abstract
An apparatus, system, and method are disclosed for efficiently managing commands in a solid-state storage device that includes a solid-state storage arranged in two or more banks. Each bank is separately accessible and includes two or more solid-state storage elements accessed in parallel by a storage input/output bus. The solid-state storage includes solid-state, non-volatile memory. The solid-state storage device includes a bank interleave that directs one or more commands to two or more queues, where the one or more commands are separated by command type into the queues. Each bank includes a set of queues in the bank interleave controller. Each set of queues includes a queue for each command type. The bank interleave controller coordinates among the banks execution of the commands stored in the queues, where a command of a first type executes on one bank while a command of a second type executes on a second bank.
291 Citations
26 Claims
-
1. A method comprising:
-
receiving storage commands at respective command queues, each command queue associated with one of two or more banks of a non-volatile solid-state storage device, wherein the storage commands include storage commands of a first type received in an order at a first command queue associated with a first one of the banks and storage commands of a second, different type, received in an order at a second command queue associated with a second one of the banks; issuing commands from the first and second command queues such that execution of a first command of the first type overlaps in time with execution of a second command of the second type, wherein an execution duration of the first command is at least an order of magnitude greater than an execution duration of the second command; and issuing commands from the first command queue in an order different than the order in which the commands were received at the first command queue. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method, comprising:
-
directing storage commands to respective command queues, each command queue associated with one of two or more banks of a non-volatile solid-state storage device, wherein the storage commands include storage commands of a first type directed in an order to a first command queue associated with a first one of the banks and storage commands of a second, different type, directed in an order to a second command queue associated with a second one of the banks; sequencing execution of two or more commands in the command queues such that execution of a first command of the first type overlaps in time with execution of a second command of the second type; and executing one or more write commands in the command queues such that data is written sequentially at an append point that is advanced through the two or more banks, wherein commands are issued from the first command queue in an order different than the order in which the commands are directed to the first command queue, wherein an execution duration of the command of the first type and an execution duration of the command of the second type differ by at least an order of magnitude. - View Dependent Claims (8, 9, 10, 11)
-
-
12. A method, comprising:
-
storing storage commands in respective command queues, each command queue associated with one of two or more banks of a non-volatile solid-state storage device; and selecting two or more commands in the command queues for execution such that execution of a first command of a first execution duration on a first one of the banks overlaps in time with execution of a second command of a second, different execution duration on a second one of the banks, wherein the selecting of the first and second commands for execution is based on the first and second execution durations, wherein the first command is of a first type, wherein the second command is of a second type, and wherein the first and second execution durations differ by at least an order of magnitude. - View Dependent Claims (13, 14, 15, 16)
-
-
17. A method, comprising:
-
directing storage commands to respective command queues, each command queue associated with one of two or more banks of a non-volatile solid-state storage device; and sequencing execution of two or more commands in the command queues such that execution of a first command of a first type on a first one of the banks overlaps with execution of a second command of a second, different type on a second one of the banks, wherein an execution duration of the first command is at least an order of magnitude greater than an execution duration of the second command. - View Dependent Claims (18, 19, 20, 21, 22)
-
-
23. An FPGA solid-state storage controller for controlling execution of storage commands on non-volatile solid state storage, the storage controller comprising circuitry configured to:
-
receive storage commands at respective command queues, each command queue associated with one of two or more banks of a non-volatile solid-state storage device, wherein the storage commands include storage commands of a first type received in an order at a first command queue associated with a first one of the banks and storage commands of a second, different type, received in an order at a second command queue associated with a second one of the banks; issue commands from the first and second command queues such that execution of a first command of the first type overlaps in time with execution of a second command of the second type, wherein an execution duration of the first command is at least an order of magnitude greater than an execution duration of the second command; and issue commands from the first command queue in an order different than the order in which the commands were received at the first command queue.
-
-
24. An FPGA solid-state storage controller for controlling execution of storage commands on non-volatile solid state storage, the storage controller comprising circuitry configured to:
-
direct storage commands to respective command queues, each command queue associated with one of two or more banks of a non-volatile solid-state storage device, wherein the storage commands include storage commands of a first type directed in an order to a first command queue associated with a first one of the banks and storage commands of a second, different type, directed in an order to a second command queue associated with a second one of the banks; sequence execution of two or more commands in the command queues such that execution of a first command of the first type overlaps in time with execution of a second command of the second type; and execute one or more write commands in the command queues such that data is written sequentially at an append point that is advanced through the two or more banks, wherein commands are issued from the first command queue in an order different than the order in which the commands are directed to the first command queue, wherein an execution duration of the first command is at least an order of magnitude greater than an execution duration of the second command.
-
-
25. A non-volatile solid-state storage device comprising:
-
non-volatile solid-state storage arranged in two or more banks each bank configured to operate independently; and a bank interleave controller configured to; store storage commands in respective command queues, each command queue associated with one of the two or more banks; and select two or more commands in the command queues for execution such that execution of a first command of a first execution duration on a first one of the banks overlaps in time with execution of a second command of a second, different execution duration, on a second one of the banks, wherein the selecting of the first and second commands for execution is based on the first and second execution durations, wherein an execution duration of the first command is at least an order of magnitude greater than an execution duration of the second command.
-
-
26. A non-volatile solid-state storage device comprising:
-
non-volatile solid-state storage arranged in two or more banks each bank configured to operate independently; and a bank interleave controller configured to; direct storage commands to respective command queues, each command queue associated with one of the two or more banks; and sequence execution of two or more commands in the command queues such that execution of a first command of a first type on a first one of the banks overlaps with execution of a second command of a second, different type on a second one of the banks, wherein an execution duration of the first command is at least an order of magnitude greater than an execution duration of the second command.
-
Specification