IP Library Granted Patent US 11,347,425
Granted Patent B2
US 11,347,425 · App. 16/940,611 · Granted May 31, 2022

Data mover selection system

Inventors: Shyam Iyer (Cedar Park, TX); Srinivas Giri Raju Gowda (Santa Clara, CA); Anh Dinh Luong (Austin, TX)
Assignee: Dell Products L.P.
G06F3/0647G06F3/0604G06F3/0683
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 11,347,425
App. No.
16/940,611
Granted
May 31, 2022
Kind
B2
Abstract

A data mover selection system includes a memory system coupled to first and second data mover devices, and an operating system coupled to the first and second data mover devices. The operating system determines that a first data transfer operation provides for the transfer of data between first and second memory locations in the memory system, and identifies the first data mover device for performing the first data transfer operation based on the first data mover device having a higher priority relative to the second data mover device for performing data transfers between the first and second memory locations in the memory system. In response, the operating system transmits a first data transfer instruction to the first data mover device that causes the first data mover device to perform the first data transfer operation to transfer data between the first and second memory locations in the memory system.

Claims (90)

1. A data mover selection system, comprising:

a first node including a first processing subsystem and a first memory subsystem;

a first data mover device that is included in the first node, coupled to the first memory subsystem, and configured to offload data transfer operations from the first processing subsystem;

a second node including a second processing subsystem and a second memory subsystem;

a second data mover device that is included in the second node, coupled to the second memory subsystem, and configured to offload data transfer operations from the second processing subsystem; and

a Basic Input/Output System (BIOS) that is coupled to the first node and the second node, wherein the BIOS is configured to:

discover, during a first initialization process, the first data mover device and the second data mover device; and

generate, during the first initialization process, a first data mover selection table based on the first data mover device, the second data mover device, the first memory subsystem, and the second memory subsystem;

an operating system that is coupled to the first node and the second node, wherein the operating system is configured to:

determine that a first data transfer operation provides for the transfer of data from a first memory location in one of the first memory subsystem and the second memory subsystem to a second memory location in one of the first memory subsystem and the second memory subsystem;

identify, using the first data mover selection table, the first data mover device for performing the first data transfer operation based on the first data mover device having a higher priority relative to the second data mover device for performing data transfers from the first memory location to the second memory location; and

transmit, in response to identifying the first data mover device for performing the first data transfer operation, a first data transfer instruction to the first data mover device that is configured to cause the first data mover device to perform the first data transfer operation to transfer data from the first memory location to the second memory location.

2. The system of claim 1 , wherein the operating system is configured to:

determine that a second data transfer operation provides for the transfer of data from a third memory location in one of the first memory subsystem and the second memory subsystem to a fourth memory location in one of the first memory subsystem and the second memory subsystem;

identify, using the first data mover selection table, the first data mover device for performing the second data transfer operation based on the first data mover device having the higher priority relative to the second data mover device for performing data transfers from the third memory location to the fourth memory location;

determine that the first data mover device is exceeding a data transfer operation threshold; and

transmit, in response to determining that the first data mover device is exceeding the data transfer operation threshold, a second data transfer instruction to the second data mover device that is configured to cause the second data mover device to perform the second data transfer operation to transfer data from the third memory location to the fourth memory location.

3. The system of claim 1 , wherein the first node is a first Non-Uniform Memory Access (NUMA) node and the second node is a second NUMA node.

4. The system of claim 1 , wherein the identifying the first data mover device for performing the first data transfer operation based on the first data mover device having the higher priority relative to the second data mover device for performing data transfers from the first memory location to the second memory location includes:

accessing the first data mover selection table that identifies relative distances of the first data mover device and the second data mover device to each of the first memory location and the second memory location.

5. The system of claim 1 , wherein the first data mover device has the higher priority relative to the second data mover device for performing data transfers from the first memory location to the second memory location based on the first data mover device being configured to provide faster data transfers from the first memory location relative to the second data mover device, while the second data mover device is configured to provide faster data transfers from the second memory location relative to the first data mover device.

6. The system of claim 1 ,

wherein the BIOS is configured to:

discover, during a second initialization process that is subsequent to the first initialization process, the first data mover device and a third data mover device; and

generate, during the second initialization process, a second data mover selection table that is different than the first data mover selection table and that is based on the first data mover device, the third data mover device, the first memory subsystem, and the second memory subsystem,

wherein the operating system is configured to:

determine that a second data transfer operation provides for the transfer of data from a third memory location in one of the first memory subsystem and the second memory subsystem to a fourth memory location in one of the first memory subsystem and the second memory subsystem;

identify, using the second data mover selection table, the third data mover device for performing the second data transfer operation based on the third data mover device having the higher priority relative to the first data mover device for performing data transfers from the third memory location to the fourth memory location; and

transmit, in response to identifying the third data mover device for performing the second data transfer operation, a second data transfer instruction to the third data mover device that is configured to cause the third data mover device to perform the second data transfer operation to transfer data from the third memory location to the fourth memory location.

7. An Information Handling System (IHS), comprising:

a processing system provided by:

a first node having a first processing subsystem; and

a second node having a second processing subsystem;

a memory system provided by:

a first memory subsystem that is included in the first node; and

a second memory subsystem that is included in the second node,

wherein the memory system is coupled to the processing system and includes instructions that, when executed by the processing system, cause the processing system to provide:

a Basic Input/Output System (BIOS) that is configured to:

discover, during a first initialization process, a first data mover device that is included in the first node and configured to offload data transfer operations from the first processing subsystem, and a second data mover device that is included in the second node and configured to offload data transfer operations from the second processing subsystem; and

generate, during the first initialization process, a first data mover selection table based on the first data mover device, the second data mover device, the first memory subsystem, and the second memory subsystem;

an operating system engine that is configured to:

determine that a first data transfer operation provides for the transfer of data from a first memory location in one of the first memory subsystem and the second memory subsystem to a second memory location in one of the first memory subsystem and the second memory subsystem;

identify, using the first data mover selection table, a first data mover device for performing the first data transfer operation based on the first data mover device having a higher priority relative to a second data mover device for performing data transfers from the first memory location to the second memory location; and

transmit, in response to identifying the first data mover device for performing the first data transfer operation, a first data transfer instruction to the first data mover device that is configured to cause the first data mover device to perform the first data transfer operation to transfer data from the first memory location to the second memory location.

8. The IHS of claim 7 , wherein the operating system is configured to:

determine that a second data transfer operation provides for the transfer of data from a third memory location in one of the first memory subsystem and the second memory subsystem to a fourth memory location in one of the first memory subsystem and the second memory subsystem;

identify, using the first data mover selection table, the first data mover device for performing the second data transfer operation based on the first data mover device having the higher priority relative to the second data mover device for performing data transfers from the third memory location to the fourth memory location;

determine that the first data mover device is exceeding a data transfer operation threshold; and

transmit, in response to determining that the first data mover device is exceeding the data transfer operation threshold, a second data transfer instruction to the second data mover device that is configured to cause the second data mover device to perform the second data transfer operation to transfer data from the third memory location to the fourth memory location.

9. The IHS of claim 7 , wherein the first node is a first Non-Uniform Memory Access (NUMA) node and the second node is a second NUMA node.

10. The IHS of claim 7 , wherein the identifying the first data mover device for performing the first data transfer operation based on the first data mover device having the higher priority relative to the second data mover device for performing data transfers from the first memory location to the second memory location includes:

accessing the first data mover selection table that identifies relative distances of the first data mover device and the second data mover device to each of the first memory location and the second memory location.

11. The IHS of claim 7 , wherein the first data mover device has the higher priority relative to the second data mover device for performing data transfers from the first memory location to the second memory location based on the first data mover device being configured to provide faster data transfers from the first memory location relative to the second data mover device, while the second data mover device is configured to provide faster data transfers from the second memory location relative to the first data mover device.

12. The IHS of claim 7 , wherein the BIOS is configured to:

discover, during a second initialization process that is subsequent to the first initialization process, the first data mover device and a third data mover device; and

generate, during the second initialization process, a second data mover selection table that is different than the first data mover selection table and that is based on the first data mover device, the third data mover device, the first memory subsystem, and the second memory subsystem,

wherein the operating system is configured to:

determine that a second data transfer operation provides for the transfer of data from a third memory location in one of the first memory subsystem and the second memory subsystem to a fourth memory location in one of the first memory subsystem and the second memory subsystem;

identify, using the second data mover selection table, the third data mover device for performing the second data transfer operation based on the third data mover device having the higher priority relative to the first data mover device for performing data transfers from the third memory location to the fourth memory location; and

transmit, in response to identifying the third data mover device for performing the second data transfer operation, a second data transfer instruction to the third data mover device that is configured to cause the third data mover device to perform the second data transfer operation to transfer data from the third memory location to the fourth memory location.

13. The IHS of claim 7 , wherein the operating system is configured to:

determine that a second data transfer operation provides for the transfer of data from a third memory location in one of the first memory subsystem and the second memory subsystem to a fourth memory location in one of the first memory subsystem and the second memory subsystem;

identify a third data mover device for performing the second data transfer operation based on the third data mover device having a higher priority relative to the first data mover device and the second data mover device for performing data transfers from the third memory location to the fourth memory location; and

transmit, in response to identifying the third data mover device for performing the second data transfer operation, a second data transfer instruction to the third data mover device that is configured to cause the third data mover device to perform the second data transfer operation to transfer data from the third memory location to the fourth memory location.

14. A method for selecting a data mover device comprising:

discovering, by a Basic Input/Output System (BIOS) provided by a computing device during a first initialization process:

a first data mover device that is included in a first node having a first processing subsystem and a first memory subsystem, wherein the first data mover device is configured to offload data transfer operations from the first processing subsystem; and

a second data mover device that is included in a second node having a second processing subsystem and a second memory subsystem, wherein the second data mover device is configured to offload data transfer operations from the second processing subsystem;

generating, by the BIOS provided by the computing device during the first initialization process, a first data mover selection table based on the first data mover device, the second data mover device, the first memory subsystem, and the second memory subsystem;

determining, by an operating system provided by the computing device, that a first data transfer operation provides for the transfer of data from a first memory location in one of the first memory subsystem and the second memory subsystem to a second memory location in one of the first memory subsystem and the second memory subsystem;

identifying, by the operating system provided by the computing device using the first data mover selection table, a first data mover device for performing the first data transfer operation based on the first data mover device having a higher priority relative to a second data mover device for performing data transfers from the first memory location to the second memory location; and

transmitting, by the operating system provided by the computing device in response to identifying the first data mover device for performing the first data transfer operation, a first data transfer instruction to the first data mover device that is configured to cause the first data mover device to perform the first data transfer operation to transfer data from the first memory location to the second memory location.

15. The method of claim 14 , further comprising:

determining, by the operating system provided by the computing device, that a second data transfer operation provides for the transfer of data from a third memory location in one of the first memory subsystem and the second memory subsystem to a fourth memory location in one of the first memory subsystem and the second memory subsystem;

identifying, by the operating system provided by the computing device using the first data mover selection table, the first data mover device for performing the second data transfer operation based on the first data mover device having the higher priority relative to the second data mover device for performing data transfers from the third memory location in the memory system to the fourth memory location in the memory system;

determining, by the operating system provided by the computing device, that the first data mover device is exceeding a data transfer operation threshold; and

transmitting, by the operating system provided by the computing device in response to determining that the first data mover device is exceeding the data transfer operation threshold, a second data transfer instruction to the second data mover device that is configured to cause the second data mover device to perform the second data transfer operation to transfer data from the third memory location to the fourth memory location.

16. The method of claim 14 , wherein the first node is a first Non-Uniform Memory Access (NUMA) node and the second node is a second NUMA node.

17. The method of claim 14 , wherein the identifying the first data mover device for performing the first data transfer operation based on the first data mover device having the higher priority relative to the second data mover device for performing data transfers from the first memory location to the second memory location includes:

accessing the first data mover selection table that identifies relative distances of the first data mover device and the second data mover device to each of the first memory location and the second memory location.

18. The method of claim 14 , wherein the first data mover device has the higher priority relative to the second data mover device for performing data transfers from the first memory location to the second memory location based on the first data mover device being configured to provide faster data transfers from the first memory location relative to the second data mover device, while the second data mover device is configured to provide faster data transfers from the second memory location relative to the first data mover device.

19. The method of claim 14 , further comprising:

discovering, by the BIOS provided by the computing device during a second initialization process that is subsequent to the first initialization process, the first data mover device and a third data mover device; and

generating, by the BIOS provided by the computing device during the second initialization process, a second data mover selection table and that is based on the first data mover device, the third data mover device, the first memory subsystem, and the second memory subsystem, determining, by the operating system provided by the computing device, that a second data transfer operation provides for the transfer of data from a third memory location in one of the first memory subsystem and the second memory subsystem to a fourth memory location in one of the first memory subsystem and the second memory subsystem;

identifying, by the operating system provided by the computing device using the second data mover selection table, the third data mover device for performing the second data transfer operation based on the third data mover device having the higher priority relative to the first data mover device for performing data transfers from the third memory location to the fourth memory location; and

transmitting, by the operating system provided by the computing device in response to identifying the third data mover device for performing the second data transfer operation, a second data transfer instruction to the third data mover device that is configured to cause the third data mover device to perform the second data transfer operation to transfer data from the third memory location to the fourth memory location.

20. The method of claim 14 , further comprising:

determining, by the operating system provided by the computing device, that a second data transfer operation provides for the transfer of data from a third memory location in one of the first memory subsystem and the second memory subsystem to a fourth memory location in one of the first memory subsystem and the second memory subsystem;

identifying, by the operating system provided by the computing device, a third data mover device for performing the second data transfer operation based on the third data mover device having a higher priority relative to the first data mover device and the second data mover device for performing data transfers from the third memory location to the fourth memory location; and

transmitting, by the operating system provided by the computing device in response to identifying the third data mover device for performing the second data transfer operation, a second data transfer instruction to the third data mover device that is configured to cause the third data mover device to perform the second data transfer operation to transfer data from the third memory location to the fourth memory location.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053578/0183) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060332/0864 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053574/0221) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060333/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053573/0535) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060333/0106 →
RELEASE OF SECURITY INTEREST AT REEL 053531 FRAME 0108 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0371 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053578/0183 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053573/0535 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053574/0221 →
SECURITY AGREEMENT Recorded Aug 18, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 053531/0108 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 12, 2020
From: IYER, SHYAM; GOWDA, SRINIVAS GIRI RAJU; LUONG, ANH DINH
To: DELL PRODUCTS L.P.
Reel/Frame 053478/0736 →