IP Library › Granted Patent US 11,847,074
Granted Patent B2
US 11,847,074 · App. 17/087,221 · Granted Dec 19, 2023

Input/output device operational modes for a system with memory pools

Inventors: Pavel Zaykov (Brno, CZ); Larry James Miller (Black Canyon City, AZ)
Assignee: Honeywell International Inc.
G06F13/28G06F12/0806G06F13/1668G06F2212/6042G06F2213/28
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,847,074
App. No.
17/087,221
Granted
Dec 19, 2023
Kind
B2
Abstract

Examples of computing systems that include input/output (I/O) devices that respect an existing hardware resource partitioning in a modern computing platform are provided.

Claims (39)

1. A computing system, comprising:

at least one central processing unit;

one or more central processing unit caches;

a main memory comprising a plurality of locations, wherein each location of the plurality of locations maps to a set in the one or more central processing unit caches, wherein a first subset of locations of the plurality of locations are partitioned for one or more threads of a first application and assigned to non-contiguous memory locations of the main memory based on a respective set of one or more sets in the one or more central processing unit caches to which each location is mapped; and

a first input/output (I/O) device separate from the at least one central processing unit, wherein the first I/O device is configured to store data in a second subset of locations of the plurality of locations that are different from the first subset of locations partitioned for the one or more threads of the first application, wherein the second subset of locations are non-contiguous memory locations of the main memory that are separated in address space according to a predefined pattern;

wherein the first I/O device is configured to determine the predefined pattern based on commands received from the at least one central processing unit, a linked-list that includes pointers indicating where data is to be written next, information from a memory management unit, or information in a set of registers of the first I/O device.

2. The computing system of claim 1 , wherein the first I/O device is a direct memory access (DMA) engine, a graphics processing unit (GPU), or a co-processor, wherein the first I/O device is configured to input data to the main memory and/or output data from the main memory.

3. The computing system of claim 1 , further comprising a second I/O device separate from the first I/O device and the at least one central processing unit, wherein the second I/O device is configured to store data in a third subset of locations of the plurality of locations that are distinct from the first subset of locations partitioned for the one or more threads of the first application and the second subset of locations, wherein the third subset of locations are non-contiguous memory locations of the main memory that are separated in address space according to the predefined pattern or according to a second predefined pattern.

4. The computing system of claim 1 , wherein the predefined pattern is stored in the main memory and represented as a linked-list, wherein the first I/O device is configured to retrieve the linked-list when inputting data to the main memory.

5. The computing system of claim 1 , further comprising a memory management unit, wherein the I/O device is configured to determine the predefined pattern either from an I/O configuration interface or directly from a processor architecture.

6. A computing system, comprising:

at least one central processing unit;

one or more central processing unit caches;

a main memory comprising a plurality of locations, wherein each location of the plurality of locations maps to a set in the one or more central processing unit caches, wherein a first subset of locations of the plurality of locations are partitioned for one or more threads of a first application and assigned to non-contiguous memory locations of the main memory based on a respective set of one or more sets in the one or more central processing unit caches to which each location is mapped; and

a first input/output (I/O) device separate from the at least one central processing unit, wherein the first I/O device is configured to store data in a second subset of locations of the plurality of locations that is and a fourth subset of locations of the plurality of locations that are different from the first subset of locations partitioned for the one or more threads of the first application, wherein the second subset of locations are non-contiguous memory locations of the main memory that are separated in address space according to a first predefined pattern and mapped to the same sets of the one or more central processing unit caches as the first subset of locations;

wherein the first I/O device is configured to determine the first predefined pattern based on commands received from the at least one central processing unit, a linked-list that includes pointers indicating where data is to be written next, information from a memory management unit, or information in a set of registers of the first I/O device.

7. The computing system of claim 6 , wherein the first I/O device is a direct memory access (DMA) engine, a graphics processing unit (GPU), or a co-processor, wherein the first I/O device is configured to input data to the main memory and/or output data from the main memory.

8. The computing system of claim 6 , further comprising a second I/O device separate from the first I/O device and the at least one central processing unit, wherein the second I/O device is configured to store data in a third subset of locations of the plurality of locations that are distinct from the first subset of locations partitioned for the one or more threads of the first application and the second subset of locations, wherein the third subset of locations are non-contiguous memory locations of the main memory that are separated in address space according to the first predefined pattern used for the first subset of non-contiguous memory locations and mapped to the same sets of the one or more central processing unit caches for the first subset of locations or according to a second predefined pattern and mapped to different sets of the one or more central processing unit caches than the first subset of locations and the second subset of locations.

9. The computing system of claim 6 , wherein the first predefined pattern for non-contiguous memory access and the second predefined pattern for non-contiguous memory access are stored in the main memory and represented as a linked-list, wherein the first I/O device is configured to retrieve the linked-list when inputting data to the main memory.

10. The computing system of claim 6 , further comprising a memory management unit, wherein the first I/O device is configured to determine the first predefined pattern and the second predefined pattern from an I/O configuration interface with the memory management unit or directly from the at least one central processing unit.

11. A computing system, comprising:

at least one central processing unit;

one or more central processing unit caches;

a main memory comprising a plurality of locations, wherein each location of the plurality of locations maps to a set in the one or more central processing unit caches, wherein a first subset of locations of the plurality of locations are partitioned for one or more first threads of a first application and assigned to non-contiguous memory locations of the main memory based on a respective set of one or more sets in the one or more central processing unit caches to which each location is mapped, wherein a second subset of locations of the plurality of locations are partitioned for one or more second threads of the first application and assigned to non-contiguous memory locations of the main memory based on a respective set of one or more sets in the one or more central processing unit caches to which each location is mapped;

a first input/output (I/O) device separate from the at least one central processing unit, wherein the first I/O device is configured to store data in a third subset of locations of the plurality of locations that are different from the first subset of locations partitioned for the one or more first threads of the first application and the second subset of locations partitioned for the one or more second threads of the first application, wherein the second subset of locations are non-contiguous memory locations of the main memory that are separated in address space according to a first predefined pattern; and

a second input/output (I/O) device separate from the first I/O device and the at least one central processing unit, wherein the second I/O device is configured to store data in a fourth subset of locations of the plurality of locations that are different from the first subset of locations partitioned for the one or more first threads of the first application, the second subset of locations partitioned for the one or more second threads of the first application, and the third subset of locations, wherein the fourth subset of locations are non-contiguous memory locations of the main memory that are separated in address space according to a second predefined pattern;

wherein the first I/O device is configured to determine the first predefined pattern based on commands received from the at least one central processing unit, a linked-list that includes pointers indicating where data is to be written next, information from a memory management unit, or information in a set of registers of the first I/O device;

wherein the second I/O device is configured to determine the second predefined pattern based on commands received from the at least one central processing unit, a linked-list that includes pointers indicating where data is to be written next, information from a memory management unit, or information in a set of registers of the second I/O device.

12. The computing system of claim 11 , wherein the first I/O device is a direct memory access (DMA) engine, a graphics processing unit (GPU), or a co-processor, wherein the first I/O device is configured to input data to the main memory and/or output data from the main memory.

13. The computing system of claim 11 , wherein the first predefined pattern for non-contiguous memory access and the second predefined pattern for non-contiguous memory access are stored in the main memory and represented as a linked-list, wherein the first I/O device is configured to retrieve the linked-list when inputting data to the main memory.

14. The computing system of claim 11 , further comprising a memory management unit, wherein the first I/O device is configured to determine the first predefined pattern from a first I/O configuration interface with the memory management unit or directly from the at least one central processing unit, wherein the second I/O device is configured to determine the second predefined pattern from a second I/O configuration interface with the memory management unit or directly from the at least one central processing unit.

15. The computing system of claim 11 , wherein the first I/O device is communicatively coupled to the at least one central processing unit via a first communication link, wherein the first I/O device is configured to receive one or more commands from the at least one central processing unit via the first communication link; and/or

wherein the second I/O device is communicatively coupled to the at least one central processing unit via a second communication link, wherein the second I/O device is configured to receive one or more commands from the at least one central processing unit via the second communication link.

16. The computing system of claim 11 , wherein the first I/O device is configured to determine the first predefined pattern based on information in a set of registers of the first I/O device; and/or

wherein the second I/O device is configured to determine the second predefined pattern based on information in a set of registers of the second I/O device.

17. The computing system of claim 1 , wherein the first I/O device is communicatively coupled to the at least one central processing unit via a first communication link, wherein the first I/O device is configured to receive one or more commands from the at least one central processing unit via the first communication link.

18. The computing system of claim 1 , wherein the first I/O device is configured to determine the predefined pattern based on information in a set of registers of the first I/O device.

19. The computing system of claim 6 , wherein the first I/O device is communicatively coupled to the at least one central processing unit via a first communication link, wherein the first I/O device is configured to receive one or more commands from the at least one central processing unit via the first communication link.

20. The computing system of claim 6 , wherein the first I/O device is configured to determine the predefined pattern based on information in a set of registers of the first I/O device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2020
From: ZAYKOV, PAVEL; MILLER, LARRY JAMES
To: HONEYWELL INTERNATIONAL INC.
Reel/Frame 054245/0719 →
Continuity (1)
Related Publication 20220138131A1 · May 5, 2022