IP Library Granted Patent US 12675392
Granted Patent B2
US 12675392 · App. 18/415,979 · Granted Jul 7, 2026

System and method of managing memory access among one or more computing entities

Inventors: Elad Raz (Ramat Gan, IL); Alex Margolin (Ashdod, IL)
Assignee: NEXT SILICON LTD.
G06F12/0223
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 12675392
App. No.
18/415,979
Granted
Jul 7, 2026
Kind
B2
Abstract

A method, a system and an accelerator for managing memory access among one or more computing entities may continuously monitor data access to at least one memory module, associated with a respective source computing entity. Based on the monitoring, embodiments may identify a memory area of the source memory module that contains a predetermined quantity of data that is expected to be used by a sink computing entity, and transmit a first version of content of the identified memory area to the sink computing entity. Embodiments may then identify an explicit request, from the sink computing entity to the source computing entity, for accessing data of the identified memory area. Embodiments may subsequently calculate a difference between the first version of content of the identified memory area and a current content of the identified memory area, and transmit the calculated difference to the requesting sink computing entity.

Claims (63)

1 . An accelerator comprising a non-transitory program memory device, wherein modules of instruction code are stored, and at least one processor associated with the non-transitory program memory device, and configured to execute the modules of instruction code, whereupon execution of said modules of instruction code, the at least one processor is configured to:

continuously monitor data access to at least one source memory module, associated with at least one respective source computing entity;

based on said monitoring, identify a memory area of the at least one source memory module that contains a predetermined quantity of data that is expected to be used by one or more sink computing entities;

push a first version of content of the identified memory area to the one or more sink computing entities, via a communication network;

based on said monitoring, identify an explicit request, from a specific sink computing entity of the one or more sink computing entities to the at least one source computing entity, for accessing data of the identified memory area;

subject to identifying said explicit request, calculate a difference between the pushed, first version of content of the identified memory area and a current content of the identified memory area; and

transmit the calculated difference in content of the identified memory area to the specific sink computing entity, via the communication network, thereby boosting throughput of data transfer between the at least one source computing entity and the specific sink computing entity.

2 . The accelerator of claim 1 , wherein the at least one processor is configured to transmit the content of the identified memory area to the one or more sink computing entities by:

pushing the content of the identified memory area via a communication network to a sink-side proxy memory locker, having a locker storage space;

based on the monitoring of data access, identifying the explicit request, from the specific sink computing entity to the at least one source computing entity; and

subject to identifying said explicit request, controlling the sink-side proxy memory locker, to dispense the transmitted memory area content to a computing device associated with the specific sink computing entity.

3 . The accelerator of claim 2 , wherein the at least one processor is further configured to:

based on the monitoring of data access, identify a change in content of the identified memory area;

calculate a difference between the first version of content of the identified memory area and a current content of the identified memory area; and

transmit the calculated difference in content of the identified memory area to the sink-side proxy memory locker,

wherein the sink-side proxy memory locker is configured to store an amended version of the transmitted content in the locker storage space, based on the calculated difference.

4 . The accelerator of claim 3 , wherein the at least one processor is further configured to:

based on the monitoring of data access, identify an explicit request, from a specific sink computing entity to the at least one source computing entity, for accessing data of the identified memory area; and

subject to identifying said explicit request, control the sink-side proxy memory locker to dispense the amended version of the transmitted content to the specific sink computing entity or to a computing device associated with the specific sink computing entity.

5 . The accelerator of claim 3 , wherein the at least one processor is further configured to control the sink-side proxy memory locker, so as to dispense the amended version of the transmitted memory area content to the specific sink computing entity.

6 . The accelerator of claim 2 , wherein the at least one processor is configured to identify the memory area of the source memory module by:

based on said monitoring, identifying a memory region characterized by spatial locality of data pertaining to the one or more sink computing entities;

predicting an extension of the identified memory region; and

defining the memory area based on said predicted extension.

7 . The accelerator of claim 6 , wherein the at least one processor is further configured to:

based on said monitoring of data access, identify occurrence of a triggering event; and

transmit said content of the identified memory area to the sink-side proxy memory locker, subject to the identified occurrence.

8 . The accelerator of claim 7 , wherein the at least one processor is further configured to:

calculate a rate at which data pertaining to the one or more sink computing entities is written into the defined memory area;

based on the calculated rate, predicting a future timestamp at which the defined memory area will comprise a predetermined portion of fresh data; and

identify the occurrence of a triggering event as elapse of the predicted timestamp.

9 . The accelerator of claim 7 wherein the triggering event is selected from a list consisting of: (i) filling of the defined memory area with a predetermined portion of fresh data pertaining to the one or more sink computing entities, (ii) identifying a predefined number of write, delete or modify data accesses to the defined memory area, (iii) elapse of a predetermined, recurring time frame, (iv) occurrence of a specific program-counter value in a computing device associated with the one or more sink computing entities, and (v) occurrence of a specific program-counter value in a computing device associated with the one or more source computing entities.

10 . The accelerator of claim 7 , wherein the at least one processor is further configured to:

monitor signals of the one or more source computing entities or one or more sink computing entities;

based on said monitoring of signals, recognizing at least one signal as likely to precede the explicit request for accessing data of the identified memory area; and

identify the occurrence of a triggering event as occurrence of the recognized at least one signal.

11 . The accelerator of claim 2 , wherein the at least one processor is further configured to:

identify deallocation of the memory area of the source memory module; and

communicate a release message, distinguishing the deallocated the memory area, to the sink-side proxy memory locker,

wherein the sink-side proxy memory locker is configured to release a region of the locker storage space based on the release message.

12 . The accelerator of claim 2 , wherein the at least one processor is further configured to:

identify an overflow of the locker storage space; and

communicate a release message, distinguishing a low-priority memory area, to the sink-side proxy memory locker,

wherein the sink-side proxy memory locker is configured to release a region of the locker storage space based on the release message.

13 . The accelerator of claim 1 , wherein the one or more sink computing entities and the at least one source computing entities pertain to a common software application, executed by a common computing device.

14 . The accelerator of claim 1 , wherein the one or more sink computing entities are executed by one or more respective client computing devices, and wherein the at least one source computing entities are executed by at least one respective server computing devices.

15 . A system for managing memory access, the system comprising:

(a) one or more source computing devices associated with at least one source memory module;

(b) an accelerator, adapted to:

continuously monitor data access to the at least one source memory module;

based on said monitoring, identify a memory area of the at least one source memory module that contains a predetermined quantity of data that is expected to be used by one or more sink computing entities;

push content of the identified memory area to a sink-side proxy memory locker via a communication network;

based on said monitoring, identify an explicit request, from a specific sink computing entity of said one or more sink computing entities, to the at least one source computing entity, for accessing data of the identified memory area;

subject to the identification of the explicit request, transmitting a difference between the pushed, first version of content of the identified memory area and a current content of the identified memory area, to the sink-side proxy memory locker, thereby boosting throughput of data transfer between the at least one source computing entity and the specific sink computing entity, and communicating a release message to the sink-side proxy memory locker, and

(c) the sink-side proxy memory locker, configured to dispense said content of the identified memory area to the specific sink computing entity based on the release message.

16 . A method of managing memory access among one or more computing entities, by at least one processor, the method comprising:

continuously monitoring data access to at least one source memory module, associated with at least one respective source computing entity;

based on said monitoring, identifying a memory area of the source memory module that contains a predetermined quantity of data that pertains to one or more sink computing entities;

pushing a first version of content of the identified memory area, via a communication network, to a sink-side proxy memory locker, having a locker storage space;

based on said monitoring, identifying an explicit request, from a specific sink computing entity of the one or more sink computing entities to the at least one source computing entity, for accessing data of the identified memory area;

subject to identification of the explicit request, transmitting a difference between the pushed, first version of content of the identified memory area and a current content of the identified memory area to the sink-side proxy memory locker, thereby boosting throughput of data transfer between the at least one source computing entity and the specific sink computing entity; and

controlling the sink-side proxy memory locker to dispense the transmitted content to the specific sink computing entity.

17 . The method of claim 16 , wherein the sink-side proxy memory locker is configured to store an amended version of the transmitted content in the locker storage space, based on said difference.