×

Flash storage controller execute loop

  • US 8,959,283 B2
  • Filed: 12/20/2013
  • Issued: 02/17/2015
  • Est. Priority Date: 12/27/2007
  • Status: Active Grant
First Claim
Patent Images

1. A method including performing the following steps by a first processor of a first flash port of a plurality of flash ports of a storage controller, the storage controller configured to be coupled to a flash memory module, each flash port of the plurality of flash ports corresponding to a flash memory group of the flash memory module, each flash port comprising an associated processor:

  • checking a first state variable in a first data structure selected from a first queue for a first bank of a first flash memory group corresponding to the first flash port;

    in accordance with a determination that the first state variable indicates a predefined stage of command processing, initiating a first task, wherein the first task is related to reading data from or writing data to the first bank of the first flash memory group, and updating the first state variable in the first data structure;

    in accordance with a determination that the first state variable indicates a first resource is required, checking if the first resource is available;

    in accordance with a determination that the first resource is available, processing and completing the first task, and setting a return value in the first flash port as busy;

    checking a second state variable in a second data structure selected from a second queue for a second bank of the first flash memory group corresponding to the first flash port;

    in accordance with a determination that the second state variable indicates the predefined stage of command processing, initiating a second task, wherein the second task is related to reading data from or writing data to the second bank of the first flash memory group, and updating the second state variable in the second data structure;

    in accordance with a determination that the second state variable indicates a second resource is required, checking if the second resource is available;

    in accordance with a determination that the second resource is available, processing and completing the second task, and setting a return value in the first flash port as busy; and

    repeating the above steps until the first state variable indicates that the first task is complete, removing the first data structure from the first queue and continue performing the above steps until the second state variable indicates that the second task is complete, and removing the second data structure from the second queue;

    whereinthe first data structure represents a first host command from a first host and the second data structure represents a second host command from a second host.

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