Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
First Claim
Patent Images
1. A flash memory controller for controlling a flash memory, comprising:
- a plurality of processors each with a register, an ALU and an internal memory, the plurality of processors including;
a first set of processors; and
a second set of processors;
a plurality of random access memories, including;
a first set of random access memories in the plurality of random access memories including one or more data structures related to memory commands; and
a second set of random access memories in the plurality of random access memories each including a work queue for a corresponding processor of the plurality of processors;
a crossbar switch connecting the plurality of processors with the plurality of random access memories, the crossbar switch including;
a set of processor ports including one port for a respective processor and a set of memory ports including one port for a respective random access memory; and
an internal switching mechanism configured to connect any processor port with any memory port, but not configured to connect a processor port with another processor port or a memory port with another memory port;
wherein a processor in the first set of processors is configured to place a task for a processor in the second set of processors through the crossbar switch on a work queue associated with the processor in the second set of processors, the task placed on the work queue comprises a pointer to a data structure in the first set of random access memories.
11 Assignments
0 Petitions
Accused Products
Abstract
A controller designed for use with a flash memory storage module, including a crossbar switch designed to connect a plurality of internal processors with various internal resources, including a plurality of internal memories. The memories contain work lists for the processors. In one embodiment, the processors communicate by using the crossbar switch to place tasks on the work lists of other processors.
171 Citations
16 Claims
-
1. A flash memory controller for controlling a flash memory, comprising:
-
a plurality of processors each with a register, an ALU and an internal memory, the plurality of processors including; a first set of processors; and a second set of processors; a plurality of random access memories, including; a first set of random access memories in the plurality of random access memories including one or more data structures related to memory commands; and a second set of random access memories in the plurality of random access memories each including a work queue for a corresponding processor of the plurality of processors; a crossbar switch connecting the plurality of processors with the plurality of random access memories, the crossbar switch including; a set of processor ports including one port for a respective processor and a set of memory ports including one port for a respective random access memory; and an internal switching mechanism configured to connect any processor port with any memory port, but not configured to connect a processor port with another processor port or a memory port with another memory port; wherein a processor in the first set of processors is configured to place a task for a processor in the second set of processors through the crossbar switch on a work queue associated with the processor in the second set of processors, the task placed on the work queue comprises a pointer to a data structure in the first set of random access memories. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method of operating a flash storage controller to control a flash memory, the flash storage controller including a first and second processor, a crossbar switch connecting a plurality of processors with first and second random access memories, but not connecting a processor with another processor or a random access memory with another random access memory, the method comprising the following steps:
-
the first processor storing a first data structure in a processor memory internal to the first processor; the first processor accessing a first crossbar switch port associated with the first random access memory; the first processor copying the first data structure to the first random access memory; the first processor accessing a second crossbar switch port associated with the second random access memory; the first processor placing a pointer to the first data structure in a worklist stored in the second random access memory, the worklist corresponding to the second processor; the second processor accessing the first crossbar switch port; the second processor copying the first data structure from the first random access memory to a processor memory internal to the second processor; and the second processor modifying the first data structure. - View Dependent Claims (7, 8, 9, 10, 11)
-
-
12. A flash memory controller for controlling a flash memory comprising:
-
a first processor and a second processor, a respective processor including a register, an ALU and an internal processor memory; a first volatile memory containing a first worklist, the first worklist being associated with the first processor; a second volatile memory containing a second worklist, the second worklist being associated with the second processor; a third volatile memory containing a first data structure relating to a first host command; a fourth volatile memory containing a second data structure relating to a second host command; a crossbar switch connecting a plurality of processors with a plurality of random access memories, including; a set of processor ports, a respective processor port in the set of processor ports connected to a processor, including a first processor port connected to the first processor and a second processor port connected to the second processor; a set of memory ports, a respective memory port in the set of memory ports connected to a volatile memory, including a first memory port connected to the first volatile memory, a second memory port connected to the second volatile memory and a third memory port connected to the third volatile memory and a fourth memory port connected to the fourth volatile memory; and internal circuitry connecting one of the processor ports to one of the memory ports, but not connecting a processor with another processor or a random access memory with another random access memory; and a bus switch coupling the second processor and a buffer with the flash memory; wherein the first processor is configure to place a pointer to the first data structure on the second worklist corresponding to the second processor. - View Dependent Claims (13, 14, 15, 16)
-
Specification