×

Flash storage controller execute loop

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

1. A method, comprising:

  • at a storage controller in a system in which the storage controller is operatively coupled to a flash memory module comprising a plurality of flash memory groups, each flash memory group corresponding to a distinct flash port of the storage controller, each flash port comprising a processor;

    writing state information into a first data structure related to performing a first flash read or write in a first flash memory group of the plurality of flash memory groups, the state information reflecting command and address information to be sent to the first flash memory group;

    placing a first pointer to the first data structure on a first queue;

    writing state information into a second data structure related to performing a second flash read or write in a second flash memory group of the plurality of flash memory groups, the state information reflecting command and address information to be sent to the second flash memory group;

    placing a second pointer to the second data structure on a second queue;

    writing state information into a third data structure related to performing a third flash read or write in a third flash memory group of the plurality of flash memory groups, the state information reflecting command and address information to be sent to the third flash memory group;

    placing a third pointer to the third data structure on a third queue;

    reading the first pointer from the first queue;

    based on the first pointer, reading the first data structure state information;

    based on the first data structure state information, transmitting address and command information to the first flash memory group;

    modifying the first data structure state information to reflect the need for a first buffer;

    reading the second pointer from the second queue;

    based on the second pointer, reading the second data structure state information;

    based on the second data structure state information, transmitting address and command information to the second flash memory group;

    modifying the second data structure state information to reflect the need for a second buffer;

    reading the third pointer from the third queue;

    based on the third pointer, reading the third data structure state information;

    based on the third data structure state information, transmitting address and command information to the third flash memory group;

    modifying the third data structure state information to reflect the need for a third buffer;

    reading the first pointer from the first queue;

    determining whether the first buffer is available;

    when the first buffer is available, initiating a first transfer between the first flash memory group and the first buffer, and modifying the first data structure state information to reflect the first transfer; and

    reading the second pointer from the second queue.

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