IP Library Granted Patent US 10,963,383
Granted Patent B2
US 10,963,383 · App. 15/979,511 · Granted Mar 30, 2021

Hardware assisted remote transactional memory

Inventor: Makoto Ono (Chapel Hill, NC)
Assignee: Lenovo Enterprise Solutions (Singapore) Pte. Ltd.
G06F12/084G06F2212/656
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 10,963,383
App. No.
15/979,511
Granted
Mar 30, 2021
Kind
B2
Abstract

Hardware assisted remote transactional memory including receiving, from a first remote processor over a high-speed communications fabric, an indication of a beginning of a first memory transaction; queuing, in a first hardware memory assistant, memory instructions for the first memory transaction; receiving, from a second remote processor over the high-speed communications fabric, an indication of a beginning of a second memory transaction; queuing, in a second hardware memory assistant, memory instructions for the second memory transaction; receiving, from the first remote processor over the high-speed communications fabric, an indication of an ending of the first memory transaction; comparing memory addresses accessed in the first memory transaction to memory addresses accessed in the second memory transaction; and in response to determining that the memory addresses accessed in the first memory transaction overlap with the memory addresses accessed in the second memory transaction, aborting the first memory transaction.

Claims (56)

1. A method comprising:

by program instructions on a computing device,

receiving, by a first hardware memory assistant within a shared memory system, from a first remote processor over a high-speed communications fabric, an indication of a beginning of a first memory transaction, wherein the shared memory system is remote from the first remote processor and a second remote processor;

queuing, in a first queue of the first hardware memory assistant, memory instructions for the first memory transaction received from the first remote processor over the high-speed communications fabric;

receiving, by a second hardware memory assistant within the shared memory system, from the second remote processor over the high-speed communications fabric, an indication of a beginning of a second memory transaction;

queuing, in a second queue of the second hardware memory assistant, memory instructions for the second memory transaction received from the second remote processor over the high-speed communications fabric;

receiving, from the first remote processor over the high-speed communications fabric, an indication of an ending of the first memory transaction;

comparing memory addresses accessed in the first memory transaction to memory addresses accessed in the second memory transaction; and

in response to determining that the memory addresses accessed in the first memory transaction overlap with the memory addresses accessed in the second memory transaction, aborting the first memory transaction.

2. The method of claim 1 , further comprising:

in response to determining that the memory addresses accessed in the first memory instructions do not overlap with the memory addresses accessed in the second memory instructions:

committing the first memory transaction to shared memory; and

sending, to the first remote processor, a confirmation that the first memory transaction has been committed to memory.

3. The method of claim 2 , wherein comparing the memory addresses accessed in the first memory transaction to the memory addresses accessed in the second memory transaction comprises locking the second hardware memory assistant; and

in response to determining that the memory addresses accessed in the first memory instructions do not overlap with the memory addresses accessed in the second memory instructions, unlocking the second hardware memory assistant.

4. The method of claim 1 , further comprising: in response to determining that the memory addresses accessed in the first memory transaction overlap with the memory addresses accessed in the second memory transaction, aborting the second memory transaction.

5. The method of claim 1 , wherein comparing the memory addresses accessed in the first memory transaction to the memory addresses accessed in the second memory transaction comprises comparing the memory address from the memory instructions queued in the first hardware memory assistant to the memory addresses from the memory instructions queued in the second hardware memory assistant.

6. The method of claim 1 , wherein the first hardware memory assistant and the second hardware memory assistant are each a collection of hardware logic and reside on a hardware memory assistant switch communicatively coupled to remote shared memory targeted by the first memory transaction and the second memory transaction, wherein both the hardware memory assistant switch and the remote shared memory are within the shared memory system that is remote from the first and second remote processors.

7. The method of claim 1 , wherein the first hardware memory assistant is assigned to the first remote processor, and wherein the second hardware memory assistant is assigned to the second remote processor.

8. An apparatus comprising a computing device, a computer processor, and a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

receiving, by a first hardware memory assistant within a shared memory system, from a first remote processor over a high-speed communications fabric, an indication of a beginning of a first memory transaction, wherein the shared memory system is remote from the first remote processor and a second remote processor;

queuing, in a first queue of the first hardware memory assistant, memory instructions for the first memory transaction received from the first remote processor over the high-speed communications fabric;

receiving, by a second hardware memory assistant within the shared memory system, from the second remote processor over the high-speed communications fabric, an indication of a beginning of a second memory transaction;

queuing, in a second queue of the second hardware memory assistant, memory instructions for the second memory transaction received from the second remote processor over the high-speed communications fabric;

receiving, from the first remote processor over the high-speed communications fabric, an indication of an ending of the first memory transaction;

comparing memory addresses accessed in the first memory transaction to memory addresses accessed in the second memory transaction; and

in response to determining that the memory addresses accessed in the first memory transaction overlap with the memory addresses accessed in the second memory transaction, aborting the first memory transaction.

9. The apparatus of claim 8 , wherein the computer program instructions further cause the apparatus to carry out the steps of:

in response to determining that the memory addresses accessed in the first memory instructions do not overlap with the memory addresses accessed in the second memory instructions:

committing the first memory transaction to shared memory; and

sending, to the first remote processor, a confirmation that the first memory transaction has been committed to memory.

10. The apparatus of claim 9 , wherein comparing the memory addresses accessed in the first memory transaction to the memory addresses accessed in the second memory transaction comprises locking the second hardware memory assistant; and

in response to determining that the memory addresses accessed in the first memory instructions do not overlap with the memory addresses accessed in the second memory instructions, unlocking the second hardware memory assistant.

11. The apparatus of claim 8 , wherein the computer program instructions further cause the apparatus to carry out the steps of:

in response to determining that the memory addresses accessed in the first memory transaction overlap with the memory addresses accessed in the second memory transaction, aborting the second memory transaction.

12. The apparatus of claim 8 , wherein comparing the memory addresses accessed in the first memory transaction to the memory addresses accessed in the second memory transaction comprises comparing the memory address from the memory instructions queued in the first hardware memory assistant to the memory addresses from the memory instructions queued in the second hardware memory assistant.

13. The apparatus of claim 8 , wherein the first hardware memory assistant and the second hardware memory assistant are each a collection of hardware logic and reside on a hardware memory assistant switch communicatively coupled to remote shared memory targeted by the first memory transaction and the second memory transaction, wherein both the hardware memory assistant switch and the remote shared memory are within the shared memory system that is remote from the first and second remote processors.

14. The apparatus of claim 8 , wherein the first remote processor resides on a first remote server, and wherein the second remote processor resides on a second remote server.

15. A computer program product including a computer readable medium, the computer program product comprising computer program instructions that, when executed, cause a computer to carry out the steps of:

receiving, by a first hardware memory assistant within a shared memory system, from a first remote processor over a high-speed communications fabric, an indication of a beginning of a first memory transaction, wherein the shared memory system is remote from the first remote processor and a second remote processor;

queuing, in a first queue of the first hardware memory assistant, memory instructions for the first memory transaction received from the first remote processor over the high-speed communications fabric;

receiving, by a second hardware memory assistant within the shared memory system, from the second remote processor over the high-speed communications fabric, an indication of a beginning of a second memory transaction;

queuing, in a second queue of the second hardware memory assistant, memory instructions for the second memory transaction received from the second remote processor over the high-speed communications fabric;

receiving, from the first remote processor over the high-speed communications fabric, an indication of an ending of the first memory transaction;

comparing memory addresses accessed in the first memory transaction to memory addresses accessed in the second memory transaction; and

in response to determining that the memory addresses accessed in the first memory transaction overlap with the memory addresses accessed in the second memory transaction, aborting the first memory transaction.

16. The computer program product of claim 15 , wherein the computer program instructions further cause the computer to carry out the steps of:

in response to determining that the memory addresses accessed in the first memory instructions do not overlap with the memory addresses accessed in the second memory instructions:

committing the first memory transaction to shared memory; and

sending, to the first remote processor, a confirmation that the first memory transaction has been committed to memory.

17. The computer program product of claim 16 , wherein comparing the memory addresses accessed in the first memory transaction to the memory addresses accessed in the second memory transaction comprises locking the second hardware memory assistant; and

in response to determining that the memory addresses accessed in the first memory instructions do not overlap with the memory addresses accessed in the second memory instructions, unlocking the second hardware memory assistant.

18. The computer program product of claim 15 , wherein the computer program instructions further cause the computer to carry out the steps of:

in response to determining that the memory addresses accessed in the first memory transaction overlap with the memory addresses accessed in the second memory transaction, aborting the second memory transaction.

19. The computer program product of claim 15 , wherein comparing the memory addresses accessed in the first memory transaction to the memory addresses accessed in the second memory transaction comprises comparing the memory address from the memory instructions queued in the first hardware memory assistant to the memory addresses from the memory instructions queued in the second hardware memory assistant.

20. The computer program product of claim 15 , wherein the first hardware memory assistant and the second hardware memory assistant are each a collection of hardware logic and reside on a hardware memory assistant switch communicatively coupled to remote shared memory targeted by the first memory transaction and the second memory transaction, wherein both the hardware memory assistant switch and the remote shared memory are within the shared memory system that is remote from the first and second remote processors, and wherein the hardware memory assistant switch is local to the remote shared memory.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2025
From: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE LTD.
To: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LTD.
Reel/Frame 070267/0082 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2025
From: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LIMITED
To: LENOVO GLOBAL TECHNOLOGIES SWITZERLAND INTERNATIONAL GMBH
Reel/Frame 070269/0207 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2018
From: ONO, MAKOTO
To: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE. LTD.
Reel/Frame 045800/0275 →