×

Flash storage controller execute loop

  • US 8,621,138 B2
  • Filed: 04/08/2008
  • Issued: 12/31/2013
  • Est. Priority Date: 12/27/2007
  • Status: Active Grant
First Claim
Patent Images

1. A method including performing the following steps by a storage controller in a system wherein the storage controller is operatively coupled to a flash memory module:

  • for each flash port of a plurality of flash ports, each flash port corresponding to a flash group of the flash memory module, each flash port comprising an associated processor, setting a repeat count register to a predetermined value if the flash port is in sleep mode such that the processor associated with the flash port wakes up before a transfer operation associated with the flash port is complete;

    upon wake up of a first processor of a first flash port of the plurality of flash ports, prior to the transfer operation completing, in accordance with the predetermined value set in the repeat count register;

    reading a first identifier of a first data structure from a first queue corresponding to a first bank of a first flash group;

    reading a first state information from the first data structure, the first state information identifying a first stage of a first flash read or write command;

    based on the identified first stage, identifying a first task to be accomplished or a first resource required by the first data structure, wherein the first task is related to reading data from or writing data to the first bank of the first flash group;

    if the first resource is required by the first stage, checking to determine if it is available;

    if the first resource is available, or if the first stage does not require resource availability, performing the first task;

    modifying the first state information in the first data structure to reflect performance of the first task;

    reading a second identifier of a second data structure from a second queue corresponding to a second bank of the first flash group;

    reading a second state information from the second data structure, the second state information identifying a second stage of a second flash read or write command;

    based on the identified second stage, identifying a second task to be accomplished or a second resource required by the second data structure, wherein the second task is related to reading data from or writing data to the second bank of the first flash group;

    if the second resource is required by the second stage, checking to determine if it is available;

    if the second resource is available, or if the second stage does not require resource availability, performing the second task; and

    modifying the second state information in the second data structure to reflect performance of the second task; and

    repeating the above steps until the first state information or the second state information indicates that the operations required by the corresponding data structure is are completed, at which point a 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 operations required by it are completed, at which point a pointer to that data structure is removed from the corresponding queue.

View all claims
  • 11 Assignments
Timeline View
Assignment View
    ×
    ×