A non-transitory computer-readable medium having stored thereon computer executable instructions which, when executed by a processor, cause the processor to access a memory system comprising a smaller memory system comprising a plurality of first memory entries each configured to store data, and a larger memory system comparing a plurality of second memory entries each configured to store data, and wherein the number of the plurality of second memory entries is larger than the number of the plurality of first memory entries, by causing the processor to:
- receive a first memory write request comprising first write data on a memory write input;
- determine if none of the plurality of first memory entries in the smaller memory system are available for data storage, in response to receiving the first memory write request;
- forward the first memory write request to the larger memory system, in response to determining none of the plurality of first memory entries in the smaller memory system are available for data storage;
- write, in a second memory entry of the plurality of second memory entries in the larger memory system, the first write data from the forwarded memory write request, in response to receipt of the forwarded memory write request to the larger memory system;
- forward first read data stored in a next second memory entry of the plurality second memory entries in the larger memory system, to the smaller memory system;
- write, in a first memory entry of the plurality of first memory entries in the smaller memory system, the first read data, in response to receipt of the first read data;
- receive a next memory read request;
- and
- assert second read data stored in a next first memory entry of the plurality of first memory entries in the smaller memory system onto a memory read output, in response to the received next memory read request.