IP Library › Granted Patent US 12,236,135
Granted Patent B2
US 12,236,135 · App. 18/092,403 · Granted Feb 25, 2025

Switch device for interfacing multiple hosts to a solid state drive

Inventors: Scott Furey (Cupertino, CA); Salil Suri (Fremont, CA); Liping Guo (Palo Alto, CA); Chih-Lung Liu (San Jose, CA); Yingdong Li (Palo Alto, CA)
Assignee: Marvell Asia Pte Ltd
G06F3/0659G06F3/0614G06F3/0664G06F3/0688G06F9/45533
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,236,135
App. No.
18/092,403
Granted
Feb 25, 2025
Kind
B2
Abstract

A switch device is configured to communicate with a plurality of hosts and a solid state drive (SSD). The plurality of hosts includes a first host and a second host. The switch device receives a first memory access command from the SSD, the first memory access command including an indication of the first host to indicate the first memory access command is intended for the first host. The switch device uses the indication of the first host in the first memory access command to route the first memory access command to the first host. The switch device removes the indication of the first host from the first memory access command prior to sending the first memory access command to the first host via a peripheral computer interface express (PCIe) interface of the switch device.

Claims (61)

1. A method implemented by a switch device that is configured to communicate with a plurality of hosts and a solid state drive (SSD), the plurality of hosts including a first host and a second host, the method comprising:

receiving, at the switch device, a first memory access command from the SSD, the first memory access command including an indication of the first host to indicate the first memory access command is intended for the first host;

using, by the switch device, the indication of the first host in the first memory access command to route the first memory access command to the first host; and

removing, by the switch device, the indication of the first host from the first memory access command prior to sending the first memory access command to the first host via a peripheral computer interface express (PCIe) interface of the switch device.

2. The method of claim 1 , wherein the indication of the first host is included in a tag in the first memory access command.

3. The method of claim 2 , wherein the tag is included in a non-volatile memory express (NVMe) physical region page address field of the first storage access command.

4. The method of claim 1 , further comprising, prior to receiving the first memory access command from the SSD:

receiving, from the first host via the PCIe interface of the switch device, a second storage access command to access the SSD, wherein the second storage access command conforms to a non-volatile memory express (NVMe) protocol;

generating, at the switch device, a third storage access command based on the second storage access command, including generating the third storage access command to include an indication of the first host; and

sending, by the switch device, the third storage access command to the SSD;

wherein the first storage access command from the SSD is responsive to the third storage access command.

5. The method of claim 4 , wherein generating the third storage access command comprises:

adding, by the switch, a tag to the second storage access command, the tag having the indication of the first host.

6. The method of claim 5 , wherein adding the tag to the second storage access command comprises:

inserting, by the switch, the tag in a non-volatile memory express (NVMe) physical region page address field of the second storage access command.

7. The method of claim 4 , further comprising:

terminating, by the switch device, the second storage access command at the switch device.

8. The method of claim 1 , further comprising:

processing, at the switch device, non-volatile memory express (NVMe) commands to control PCIe-based point-to-point switch connections between the plurality of hosts and the SSD.

9. A non-volatile memory express (NVMe) switch, comprising:

a peripheral computer interface express (PCIe) interface configured to communicatively couple the NVMe switch to a plurality of hosts including a first host and a second host;

a communication interface configured to communicatively couple the NVMe switch to a solid state drive (SSD); and

circuitry configured to:

receive a first memory access command from the SSD via the communication interface, the first memory access command including an indication of the first host to indicate the first memory access command is intended for the first host,

use the indication of the first host in the first memory access command to route the first memory access command to the first host, and

remove the indication of the first host from the first memory access command prior to sending the first memory access command to the first host via the PCIe interface.

10. The NVMe switch of claim 9 , wherein the indication of the first host is included in a tag in the first memory access command.

11. The NVMe switch of claim 10 , wherein the tag is included in an NVMe physical region page address field of the first storage access command.

12. The NVMe switch of claim 9 , wherein the circuitry is further configured to, prior to receiving the first memory access command from the SSD:

receive, via the PCIe interface, a second storage access command from the first host to access the SSD, wherein the second storage access command conforms an NVMe protocol;

generate a third storage access command based on the second storage access command, including generating the third storage access command to include an indication of the first host; and

send the third storage access command to the SSD via the communication interface;

wherein the first storage access command from the SSD is responsive to the third storage access command.

13. The NVMe switch of claim 12 , wherein the circuitry is configured to generate the third storage access command at least by adding a tag to the second storage access command, the tag having the indication of the first host.

14. The NVMe switch of claim 13 , wherein the circuitry is configured to insert the tag in an NVMe physical region page address field of the second storage access command.

15. The NVMe switch of claim 12 , wherein the circuitry is further configured to:

terminate the second storage access command at the switch device.

16. The NVMe switch of claim 9 , wherein the circuitry is further configured to:

process NVMe commands to control PCIe-based point-to-point switch connections between the plurality of hosts and the SSD.

17. The NVMe switch of claim 9 , wherein:

the PCIe interface is a first PCIe interface; and

the communication interface is a second PCIe interface configured to communicatively couple the NVMe switch to the SSD.

18. A non-transitory computer-readable medium storing machine-readable instructions that, when executed by one or more processors of a switch device that is configured to communicate with a plurality of hosts and a solid state drive (SSD), cause the one or more processors to at least:

receive a first memory access command from the SSD, the first memory access command including an indication of the first host to indicate the first memory access command is intended for the first host;

use the indication of the first host in the first memory access command to route the first memory access command to the first host; and

remove the indication of the first host from the first memory access command prior to sending the first memory access command to the first host via a peripheral computer interface express (PCIe) interface of the switch device.

19. The non-transitory computer-readable medium of claim 18 , wherein the indication of the first host is included in a tag in the first memory access command.

20. The non-transitory computer-readable medium of claim 19 , wherein the tag is included in a non-volatile memory express (NVMe) physical region page address field of the first storage access command.

21. The non-transitory computer-readable medium of claim 18 , further storing machine-readable instructions that, when executed by the one or more processors, cause the one or more processors to, prior to receiving the first memory access command from the SSD:

receive, from the first host via the PCIe interface of the switch device, a second storage access command to access the SSD, wherein the second storage access command conforms to a non-volatile memory express (NVMe) protocol;

generate a third storage access command based on the second storage access command, including generating the third storage access command to include an indication of the first host; and

send the third storage access command to the SSD;

wherein the first storage access command from the SSD is responsive to the third storage access command.

22. The non-transitory computer-readable medium of claim 21 , wherein the machine-readable instructions are configured to, when executed by the one or more processors, cause the one or more processors to:

generate the third storage access command at least by adding a tag to the second storage access command, the tag having the indication of the first host.

23. The non-transitory computer-readable medium of claim 22 , wherein the machine-readable instructions are configured to, when executed by the one or more processors, cause the one or more processors to:

insert the tag in a non-volatile memory express (NVMe) physical region page address field of the second storage access command.

24. The non-transitory computer-readable medium of claim 21 , further storing machine-readable instructions that, when executed by the one or more processors, cause the one or more processors to:

terminate the second storage access command at the switch device.

25. The non-transitory computer-readable medium of claim 18 , further storing machine-readable instructions that, when executed by the one or more processors, cause the one or more processors to:

process non-volatile memory express (NVMe) commands to control PCIe-based point-to-point switch connections between the plurality of hosts and the SSD.

Continuity (3)
Continuation 16532081 · Aug 5, 2019
Provisional Application 62716275 · Aug 8, 2018
Related Publication 20230145212A1 · May 11, 2023
References Cited (73)
US 6804766B1 · Noel et al. · 2004 [cited by applicant]
US 7657663B2 · Freimuth et al. · 2010 [cited by applicant]
US 8185664B1 · Lok et al. · 2012 [cited by applicant]
US 8897303B2 · Xiong · 2014 [cited by applicant]
US 8966164B1 · Asnaashari et al. · 2015 [cited by applicant]
US 9098402B2 · Fanning et al. · 2015 [cited by applicant]
US 9298648B2 · Johnson et al. · 2016 [cited by applicant]
US 9430412B2 · Huang · 2016 [cited by applicant]
US 9652426B2 · Su · 2017 [cited by applicant]
US 9842075B1 · Davis et al. · 2017 [cited by applicant]
US 9934173B1 · Sakalley et al. · 2018 [cited by applicant]
US 10579305B2 · Lu · 2020 [cited by applicant]
US 10977199B2 · Suri et al. · 2021 [cited by applicant]
US 11086813B1 · Schuette · 2021 [cited by applicant]
US 11544000B2 · Furey et al. · 2023 [cited by applicant]
US 11614986B2 · Guo · 2023 [cited by applicant]
US 20080104283A1 · Shin et al. · 2008 [cited by applicant]
US 20080126547A1 · Waldspurger · 2008 [cited by applicant]
US 20120014386A1 · Xiong et al. · 2012 [cited by applicant]
US 20120110233A1 · Higuchi et al. · 2012 [cited by applicant]
US 20130007332A1 · Teh et al. · 2013 [cited by applicant]
US 20140122768A1 · Su et al. · 2014 [cited by applicant]
US 20140189427A1 · Jayaprakash Bharadwaj · 2014 [cited by applicant]
US 20150074320A1 · Galles · 2015 [cited by applicant]
US 20150082080A1 · Lin et al. · 2015 [cited by applicant]
US 20150169331A1 · Nelogal et al. · 2015 [cited by applicant]
US 20150248366A1 · Bergsten et al. · 2015 [cited by applicant]
US 20150261709A1 · Billi · 2015 [cited by applicant]
US 20150293873A1 · Shao et al. · 2015 [cited by applicant]
US 20150317088A1 · Hussain et al. · 2015 [cited by applicant]
US 20160127492A1 · Malwankar et al. · 2016 [cited by applicant]
US 20160132395A1 · Bolen · 2016 [cited by applicant]
US 20160147592A1 · Guddeti · 2016 [cited by applicant]
US 20170024166A1 · Singh et al. · 2017 [cited by applicant]
US 20170090794A1 · Huang · 2017 [cited by applicant]
US 20170212579A1 · Tirumala et al. · 2017 [cited by applicant]
US 20170286363A1 · Joshua et al. · 2017 [cited by applicant]
US 20180074757A1 · Yamaguchi et al. · 2018 [cited by applicant]
US 20180253138A1 · Bakshi et al. · 2018 [cited by applicant]
US 20180357108A1 · Mullender et al. · 2018 [cited by applicant]
US 20190310913A1 · Helmick et al. · 2019 [cited by applicant]
US 20190361763A1 · Bakshi et al. · 2019 [cited by applicant]
US 20190361773A1 · Berke et al. · 2019 [cited by applicant]
US 20200050402A1 · Furey et al. · 2020 [cited by applicant]
US 20200050505A1 · Guo et al. · 2020 [cited by applicant]
US 20200050558A1 · Suri et al. · 2020 [cited by applicant]
CN 103270736A · 2013 [cited by applicant]
WO 2014099025A1 · 2014 [cited by applicant]
WO 2015080690A1 · 2015 [cited by applicant]
Communication pursuant to Article 94(3) EPC in European Pat. App. No. 19190605.6, dated Jan. 19, 2021. [cited by applicant]
Communication pursuant to Article 94(3} EPC in European Patent Application No.  19190675.9, (dated Feb. 1, 2021 (5 pages). [cited by applicant]
EP Application No. 19190605.6, Extended Search Report, dated Dec. 9, 2019, 8 pages. [cited by applicant]
EP Application No. 19190675.9, Extended Search Report, dated Dec. 9, 2019, 7 pages. [cited by applicant]
EP Application No. 19190677.5, Extended Search Report, dated Dec. 9, 2019, 7 pages. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 16/532,272 dated Jun. 28, 2022. (12 pages). [cited by applicant]
NVM Express over Fabrics specification, Revision 1.0a, Jul. 17, 2018, a href=″http://nvmexpress.org.″target=″_blank″http://nvmexpress.org./a. [cited by applicant]
Summons to attend oral proceedings pursuant to Rule 115(1) EPC for Application No. 19 190 605.6 dated Jul. 12, 2022 (7 pages). [cited by applicant]
Summons to attend oral proceedings pursuant to Rule 115(1) EPC for Application No. 19 190 675.9 dated Oct. 5, 2022 (7 pages). [cited by applicant]
U.S. Appl. No. 16/532,272, Non-Final Office Action, dated Mar. 2, 2022, 27 pages. [cited by applicant]
First Office Action for Chinese Application No. 2019107311146, mailed Oct. 26, 2023. (9 pages). [cited by applicant]
Search Report for Chinese Application No. 2019107311146, mailed Oct. 23, 2023. (3 pages). [cited by applicant]
Non-Final Office Action in U.S. Appl. No. 18/101,495, mailed Oct. 12, 2023 (6 pages). [cited by applicant]
Extended Search Report for European Patent Application No. 23216230.5, mailed Feb. 28, 2024. (8 pages). [cited by applicant]
Extended Search Report for European Patent Application No. 23207046.6, mailed Mar. 11, 2024. (8 pages). [cited by applicant]
Notice of Allowance for U.S. Appl. No. 18/101,495, mailed Feb. 2, 2024. (9 pages). [cited by applicant]
U.S. Appl. No. 16/532,186, Non-Final Office Action, mailed Dec. 31, 2019, 13 pages. [cited by applicant]
First Office Action for Chinese Application No. 201910727578.X, mailed Jun. 28, 2024. (14 pages). [cited by applicant]
Search Report for Chinese Application No. 201910727578X, mailed Jun. 28, 2024. (3 pages). [cited by applicant]
Notice of Allowance for U.S. Appl. No. 18/101,495, mailed on May 22, 2024 (10 pages). [cited by applicant]
First Office Action for Chinese Application No. 2019107309432, mailed Mar. 31, 2024. (6 pages). [cited by applicant]
Communication pursuant to Article 94(3) EPC in European Patent Application No. 19190605.6, dated Jan. 19, 2021 (5 pages). [cited by applicant]
Second Office action for Chinese Application No. 2019107311146, mailed Jul. 12, 2024. (8 pages). [cited by applicant]
Office Action for Korean Application No. 10-2019-0096062, mailed Jan. 10, 2025. (13 pages). [cited by applicant]