Flash storage controller execute loop
First Claim
1. A method including performing the following steps in a system comprising a storage controller and a flash memory module:
- (a) reading an identifier of a first data structure from a first queue;
(b) reading first state information from the first data structure, the first state information identifying a stage of a flash read or write command;
(c) based on the identified stage, identifying a task to be accomplished or a resource required by the first data structure;
(d) if a resource is required, checking to determine if it is available;
(e) if the resource is available, or if the stage does not require resource availability, performing a task related to reading or writing data from a first segment of the flash memory module;
(f) modifying the first data structure first state information to reflect the performance of the task;
(g) reading an identifier of a second data structure from a second queue;
(h) reading second state information from the second data structure, the second state information identifying a stage of a flash read or write command;
(i) based on the identified stage, identifying a task to be accomplished or a resource required by the second data structure;
(j) if a resource is required, checking to determine if it is available;
(k) if the resource is available, or if the stage does not require resource availability, performing a task related to reading or writing data from a second segment of the flash memory module;
(l) modifying the second data structure second state information to reflect the performance of the task;
(m) returning to step (a) and continuing to repeat the specified steps until the first state information or the second state information indicates that the operations required by the corresponding data structure is complete, at which point the pointer to that data structure is removed from the corresponding queue and the method continues for the other data structure until its state information indicates that the operation required by it are complete, at which point the pointer to that data structure is removed from the corresponding queue.
11 Assignments
0 Petitions
Accused Products
Abstract
In a storage controller connected to a flash memory module, an execute loop used to carry out tasks related to reading or writing data from the module. The loop includes reading a data structure from a queue and carrying out a task specified by the data structure, unless resources required by the task are not available, in which event the loop moves on to another data structure stored in another queue. Data structures bypassed by the loop are periodically revisited, until all tasks required are completed. Data structures store state information that is updated when tasks are completed.
157 Citations
25 Claims
-
1. A method including performing the following steps in a system comprising a storage controller and a flash memory module:
-
(a) reading an identifier of a first data structure from a first queue; (b) reading first state information from the first data structure, the first state information identifying a stage of a flash read or write command; (c) based on the identified stage, identifying a task to be accomplished or a resource required by the first data structure; (d) if a resource is required, checking to determine if it is available; (e) if the resource is available, or if the stage does not require resource availability, performing a task related to reading or writing data from a first segment of the flash memory module; (f) modifying the first data structure first state information to reflect the performance of the task; (g) reading an identifier of a second data structure from a second queue; (h) reading second state information from the second data structure, the second state information identifying a stage of a flash read or write command; (i) based on the identified stage, identifying a task to be accomplished or a resource required by the second data structure; (j) if a resource is required, checking to determine if it is available; (k) if the resource is available, or if the stage does not require resource availability, performing a task related to reading or writing data from a second segment of the flash memory module; (l) modifying the second data structure second state information to reflect the performance of the task; (m) returning to step (a) and continuing to repeat the specified steps until the first state information or the second state information indicates that the operations required by the corresponding data structure is complete, at which point the pointer to that data structure is removed from the corresponding queue and the method continues for the other data structure until its state information indicates that the operation required by it are complete, at which point the pointer to that data structure is removed from the corresponding queue. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method including performing the following steps in a system comprising a storage controller and a flash memory module made up of a plurality of flash memory groups:
-
(a) writing state information into a first data structure related to performing a flash read or write in a first flash memory group, the state information reflecting a need to send command and address information to the first flash memory group; (b) placing a first pointer to the first data structure on a first queue; (c) writing state information into a second data structure related to performing a flash read or write in a second flash memory group, the state information reflecting a need to send command and address information to the second flash memory group; (d) placing a second pointer to the second data structure on a second queue; (e) writing state information into a third data structure related to performing a flash read or write in a third flash memory group, the state information reflecting a need to send command and address information to the third flash memory group; (f) placing a third pointer to the third data structure on a third queue; (g) reading the first pointer from the first queue; (h) based on the first pointer, reading the first data structure state information; (i) based on the first data structure state information, transmitting address and command information to the first flash memory group; (j) modifying the first data structure state information so that the state information reflects the need for a first buffer; (k) reading the second pointer from the second queue; (l) based on the second pointer, reading the second data structure state information; (m) based on the second data structure state information, transmitting address and command information to the second flash memory group; (n) modifying the second data structure state information so that the state information reflects the need for a second buffer; (o) reading the third pointer from the third queue; (p) based on the third pointer, reading the third data structure state information; (q) based on the third data structure state information, transmitting address and command information to the third flash memory group; (r) modifying the third data structure state information so that the state information reflects the need for a third buffer; (s) reading the first pointer from the first queue; (t) determining whether the first buffer is available; (u) if the first buffer is available, causing a transfer from the first flash memory group to the first buffer, but if the first buffer is not available, skipping this step (u) and step (v); (v) modifying the first data structure state information; (w) reading the second pointer from the second queue. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A system comprising a storage controller connected to a flash memory module, the storage controller including the following:
-
a first data structure containing state information relating to the stage of completion of a first flash read or write operation, the first flash operation relating to a first group of flash memory devices within the flash memory module; a second data structure containing state information relating to the stage of completion of a second flash read or write operation, the second flash operation relating to the first group of flash memory devices within the flash memory module; a third data structure containing state information relating to the stage of completion of a third flash read or write operation, the third flash operation relating to a second group of flash memory devices within the flash memory module; a fourth data structure containing state information relating to the stage of completion of a fourth flash read or write operation, the fourth flash operation relating to a third group of flash memory devices within the flash memory module; a first queue holding a pointer to the first data structure and the second data structure; a second queue holding a pointer to the third data structure; and a third queue holding a pointer to the fourth data structure. - View Dependent Claims (22, 23, 24, 25)
-
Specification