Storage array having multiple controllers
First Claim
1. A storage system comprising:
- a storage array comprising a plurality of peripheral component interconnect express (PCIe) type solid state storage devices (SSDs);
a plurality of controller devices, each of the plurality of controller devices comprising a processor;
a first processor comprising a first PCIe type root complex of the storage system, the first processor to;
determine a plurality of PCIe type endpoints of the storage system, the plurality of PCIe type endpoints comprising the plurality of controller devices and the plurality of PCIe type SSDs;
allocate memory addresses to each of the plurality of PCIe type endpoints;
generate a mapping table comprising one or more of the memory addresses allocated to one or more of the plurality of PCIe type endpoints; and
send the mapping table to at least a first controller device of the plurality of controller devices; and
a first PCIe type switch to interconnect the plurality of PCIe type SSDs, the first processor and the plurality of controller devices using a PCIe type interface, wherein the plurality of PCIe type SSDs and the plurality of controller devices each comprise a PCIe type endpoint;
wherein the first controller device is to;
connect the storage system to one or more remote servers;
receive a first request from a first server of the one or more remote servers;
determine whether the first request is a data request or a control request;
responsive to a determination that the first request is the data request associated with a data path, send a first message from a first PCIe type endpoint of the first controller device to a second PCIe type endpoint of a first SSD of the plurality of PCIe type SSDs via the first PCIe type switch using a peer-to-peer communication mechanism, bypassing the first processor and the first PCIe type root complex of the storage system; and
responsive to a determination that the first request is the control request associated with a control path, send a second message from the first PCIe type endpoint of the first controller device to the first PCIe type root complex.
1 Assignment
0 Petitions
Accused Products
Abstract
A storage system comprises a storage array comprising a plurality of solid state storage devices (SSDs), a first processor comprising a first root complex of the storage system, a plurality of controller devices, and a first switch to interconnect the plurality of SSDs, the first processor and the plurality of controller devices. A first controller device of the plurality of controller devices is to connect the storage system to one or more remote servers. The first controller device is further to receive a first request from a first server of the one or more remote servers and determine whether the first request is a data request or a control request. The first controller device is further to send a first message to a first SSD of the plurality of SSDs via the first switch, bypassing the first processor, responsive to a determination that the first request is a data request.
94 Citations
18 Claims
-
1. A storage system comprising:
-
a storage array comprising a plurality of peripheral component interconnect express (PCIe) type solid state storage devices (SSDs); a plurality of controller devices, each of the plurality of controller devices comprising a processor; a first processor comprising a first PCIe type root complex of the storage system, the first processor to; determine a plurality of PCIe type endpoints of the storage system, the plurality of PCIe type endpoints comprising the plurality of controller devices and the plurality of PCIe type SSDs; allocate memory addresses to each of the plurality of PCIe type endpoints; generate a mapping table comprising one or more of the memory addresses allocated to one or more of the plurality of PCIe type endpoints; and send the mapping table to at least a first controller device of the plurality of controller devices; and a first PCIe type switch to interconnect the plurality of PCIe type SSDs, the first processor and the plurality of controller devices using a PCIe type interface, wherein the plurality of PCIe type SSDs and the plurality of controller devices each comprise a PCIe type endpoint; wherein the first controller device is to; connect the storage system to one or more remote servers; receive a first request from a first server of the one or more remote servers; determine whether the first request is a data request or a control request; responsive to a determination that the first request is the data request associated with a data path, send a first message from a first PCIe type endpoint of the first controller device to a second PCIe type endpoint of a first SSD of the plurality of PCIe type SSDs via the first PCIe type switch using a peer-to-peer communication mechanism, bypassing the first processor and the first PCIe type root complex of the storage system; and responsive to a determination that the first request is the control request associated with a control path, send a second message from the first PCIe type endpoint of the first controller device to the first PCIe type root complex. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method comprising:
-
connecting, by a first controller device of a storage system, the storage system to one or more remote servers, wherein the storage system comprises
1) a plurality of controller devices comprising the first controller device, wherein the first controller device comprises a first processor,
2) a second processor comprising a first peripheral component interconnect express (PCIe) type root complex of the storage system,
3) a storage array comprising a plurality of PCIe type solid state storage devices (SSDs), and
4) a first PCIe type switch to interconnect the plurality of PCIe type SSDs, the second processor and the plurality of controller devices using a PCIe type interface, wherein the plurality of PCIe type SSDs and the plurality of controller devices each comprise a PCIe type endpoint;determining, by the second processor, a plurality of PCIe type endpoints of the storage system, the plurality of PCIe type endpoints comprising the plurality of controller devices and the plurality of PCIe type SSDs; allocating, by the second processor, memory addresses to each of the plurality of PCIe type endpoints; generating, by the second processor, a mapping table comprising one or more of the memory addresses allocated to one or more of the plurality of PCIe type endpoints; sending, by the second processor, the mapping table to at least the first controller device via the first PCIe type switch; receiving, by the first controller device, a first request from a first server of the one or more remote servers; determining, by the first controller device, whether the first request is a data request or a control request; responsive to a determination that the first request is the data request associated with a data path, sending a first message from a first PCIe type endpoint of the first controller device to a second PCIe type endpoint of a first SSD of the plurality of PCIe type SSDs via the first PCIe type switch using a peer-to-peer communication mechanism, bypassing the second processor; and responsive to a determination that the first request is the control request associated with a control path, sending a second message from the first PCIe type endpoint of the first controller device to the first PCIe type root complex. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A storage system comprising:
-
a storage array comprising a plurality of peripheral component interconnect express (PCIe) type solid state storage devices (SSDs); a plurality of controller devices, each of the plurality of controller devices to connect the storage system to one or more remote servers; a first processor comprising a first PCIe type root complex of the storage system; a first PCIe type switch to interconnect the plurality of PCIe type SSDs, the first processor and the plurality of controller devices using a PCIe type interface, wherein the plurality of PCIe type SSDs and the plurality of controller devices each comprise a PCIe type endpoint and are peers of the storage system; a second processor comprising a second PCIe type root complex that acts as a second master of the storage system; a second PCIe type switch to interconnect the plurality of PCIe type SSDs, the second processor and the plurality of controller devices; wherein the first processor is to; determine a plurality of PCIe type endpoints of the storage system, the plurality of PCIe type endpoints comprising the plurality of controller devices and the plurality of PCIe type SSDs; allocate memory addresses to each of the plurality of PCIe type endpoints; generate a mapping table comprising one or more of the memory addresses allocated to one or more of the plurality of PCIe type endpoints; and send the mapping table to at least a first controller device of the plurality of controller devices via the first PCIe type switch; and wherein the first controller device is to; receive a first request from a first server of the one or more remote servers; determine whether the first request is a data request or a control request; responsive to a determination that the first request is the data request associated with a data path, send a first message from a first PCIe type endpoint of the first controller device to a second PCIe type endpoint of a first SSD of the plurality of PCIe type SSDs via the first PCIe type switch using a peer-to-peer communication mechanism, bypassing the first processor; and responsive to a determination that the first request is the control request associated with a control path, send a second message from the first PCIe type endpoint of the first controller device to the first PCIe type root complex.
-
Specification