US 11,656,992 B2
Distributed cache with in-network prefetch
Marjan Radi, San Jose, CA (US); and Dejan Vucinic, San Jose, CA (US)
Assigned to Western Digital Technologies, Inc., San Jose, CA (US)
Filed by Western Digital Technologies, Inc., San Jose, CA (US)
Filed on Aug. 22, 2019, as Appl. No. 16/548,116.
Claims priority of provisional application 62/842,959, filed on May 3, 2019.
Prior Publication US 2020/0349080 A1, Nov. 5, 2020
Int. Cl. G06F 12/00 (2006.01); G06F 12/0862 (2016.01); G06F 12/0806 (2016.01); G06F 12/0802 (2016.01); H04L 67/1097 (2022.01); G06F 12/0817 (2016.01); H04L 67/568 (2022.01); G06F 9/38 (2018.01); G06F 9/34 (2018.01)
CPC G06F 12/0862 (2013.01) [G06F 12/0802 (2013.01); G06F 12/082 (2013.01); G06F 12/0806 (2013.01); G06F 12/0817 (2013.01); G06F 12/0822 (2013.01); G06F 12/0828 (2013.01); H04L 67/1097 (2013.01); H04L 67/568 (2022.05); G06F 9/34 (2013.01); G06F 9/3824 (2013.01); G06F 2212/154 (2013.01); G06F 2212/602 (2013.01)] 26 Claims
OG exemplary drawing
 
1. A programmable switch, comprising:
a plurality of ports for communication with devices on a network; and
circuitry configured to:
receive program instructions to program the programmable switch for processing packets within the network, wherein the program instructions configure a data plane of the programmable switch for routing packets between a plurality of devices on the network;
receive a cache line request from a client of a plurality of clients on the network to obtain a cache line;
identify one or more additional cache lines to obtain based on the received cache line request and prefetch information received from a host in communication with the programmable switch, wherein the prefetch information is based on cache miss data previously sent to the host from the programmable switch representing cache line requests received by the programmable switch from the plurality of clients;
request the cache line and the identified one or more additional cache lines from one or more memory devices on the network via one or more ports of the plurality of ports;
receive the requested cache line and the one or more additional cache lines from the one or more memory devices; and
send the requested cache line and the one or more additional cache lines to the client.