| CPC G06F 12/0815 (2013.01) [G06F 12/084 (2013.01); G06F 12/1408 (2013.01)] | 24 Claims |

|
1. A peripheral device, comprising:
a processor, to execute software code;
a cache memory, to cache a portion of the software code;
memory interface, to communicate with a non-volatile memory (NVM) that stores a replica of the software code;
a host interface, to communicate over a peripheral bus with one or more hosts that store additional respective replicas of the software code; and
a cache controller, to:
determine for each of the one or more hosts, whether the host is to be allocated or not for code fetching, based on a specified allocation criterion;
receive a request from the processor for a segment of the software code;
when the segment is available in the cache memory, fetch the segment from the cache memory;
when the segment is unavailable in the cache memory and at least one of the hosts is allocated, fetch the segment from the at least one of the hosts that are allocated, via the host interface;
when the segment is unavailable in the cache memory and none of the one or more hosts is allocated, fetch the segment from the NVM via the memory interface; and
serve the fetched segment to the processor.
|