Flash storage controller execute loop
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.
2 Assignments
0 Petitions
Accused Products
Abstract
A storage controller is provided that contains multiple processors. In some embodiments, the storage controller is coupled to a flash memory module having multiple flash memory groups, each flash memory group corresponding to a distinct flash port in the storage controller, each flash port comprising an associated processor. Each processor handles a portion of one or more host commands, including reads and writes, allowing multiple parallel pipelines to handle one or more host commands simultaneously.
195 Citations
20 Claims
-
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 Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A storage controller configured to be coupled to a flash memory module comprising a plurality of flash memory groups, comprising:
-
a host interface configured to receive one or more host commands; a plurality of flash ports, including a distinct flash port corresponding to each flash memory group of the plurality of flash memory groups; a plurality of processors; memory storing one or more programs, which when executed by respective processors of the plurality of processors, cause the storage controller to perform a method comprising; 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 Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification