Unified kernel virtual address space for heterogeneous computing
US-10853263-B1 · Dec 1, 2020 · US
US11960410B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-11960410-B2 |
| Application number | US-202017105331-A |
| Country | US |
| Kind code | B2 |
| Filing date | Nov 25, 2020 |
| Priority date | Jul 23, 2019 |
| Publication date | Apr 16, 2024 |
| Grant date | Apr 16, 2024 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Systems, apparatuses, and methods for implementing a unified kernel virtual address space for heterogeneous computing are disclosed. A system includes at least a first subsystem running a first kernel, an input/output memory management unit (IOMMU), and a second subsystem running a second kernel. In order to share a memory buffer between the two subsystems, the first subsystem allocates a block of memory in part of the system memory controlled by the first subsystem. A first mapping is created from a first logical address of the kernel address space of the first subsystem to the block of memory. Then, the IOMMU creates a second mapping to map the physical address of that block of memory from a second logical address of the kernel address space of the second subsystem. These mappings allow the first and second subsystems to share buffer pointers which reference the block of memory.
Opening claim text (preview).
What is claimed is: 1. A method comprising: mapping a first region of a first kernel address space to a first region in a first physical address space; mapping a first region of a second kernel address space to the first region in the first physical address space, wherein mapping the first region of the second kernel address space to the first region in the first physical address space comprises mapping the first region of the second kernel address space to a first region in a device memory space, and mapping the first region in the device memory space to the first region in the first physical address space; enabling a common shared region in both the first kernel address space and the second kernel address space for use; and creating a unified kernel address space, based at least in part on the common shared region. 2. The method as recited in claim 1 , further comprising: passing a buffer pointer from a first subsystem to a second subsystem different from the first subsystem using the unified kernel address space, to enable the first subsystem and the second subsystem to share at least one buffer. 3. The method as recited in claim 2 , wherein the common shared region is enabled for sharing by both the first subsystem and the second subsystem. 4. The method as recited in claim 1 , wherein addresses in the first region of the first kernel address space are mapped to same locations in the first physical address space as addresses in the first region of the second kernel address space. 5. The method as recited in claim 1 , wherein said mapping of the first region of the first kernel address space to the first region in the first physical address space is performed by a first subsystem. 6. The method as recited in claim 5 , wherein said mapping of the first region of the second kernel address space to the first region in first physical address space is performed by a second subsystem different from the first subsystem. 7. The method as recited in claim 6 , wherein mapping the first region of the second kernel address space to a device memory space is performed by an input/output memory management unit. 8. A system comprising: a first subsystem comprising circuitry configured to map a first region of a first kernel address space to a first region in a first physical address space; and a second subsystem comprising circuitry configured to map a first region of a second kernel address space to the first region in first physical address space, wherein the second subsystem is configured to map the first region of the second kernel address space to a first region in a device memory space, and map the first region in the device memory space to the first region in the first physical address space; wherein the system configured to enable a common shared region in both the first kernel address space and the second kernel address space for use, and create a unified kernel address space, based at least in part on the common shared region. 9. The system as recited in claim 8 , wherein the second subsystem is configured to: pass a buffer pointer to the first subsystem using the unified kernel address space; and share at least one buffer with the first subsystem using the buffer pointer. 10. The system as recited in claim 8 , wherein addresses in the first region of the first kernel address space are mapped to same locations in the first physical address space as addresses in the first region of the second kernel address space. 11. The system as recited in claim 8 , wherein the second subsystem is an input/output memory management unit. 12. The system as recited in claim 8 , wherein the first subsystem is configured to allocate the first region in the first physical address space. 13. The system as recited in claim 8 , wherein the first subsystem is configured to convey to the second subsystem a pointer to a location in the first region of the first physical address space, wherein the first subsystem is configured to convey the pointer to the second subsystem via the common shared region. 14. The system as recited in claim 13 , wherein the second subsystem comprises an input/output memory management unit configured to map the first region of the second kernel address space to the first region in first physical address space. 15. A system comprising: a memory device; a first processing device comprising circuitry configured to map a first region of a first virtual address space to a region in the memory device; and a second processing device comprising circuitry configured to: map a first region of a second virtual address space to the region in the memory device such that the region in the memory device is shared by the first processing device and the second processing device, wherein to map the first region of the second virtual address space to the region in the memory device, the second processing device is further configured to map the first region of the second virtual address space to a first region in a device memory space, and map the first region in the device memory space to the region in the memory device; and create a unified kernel address space, based at least in part on an enabled common shared region with the first processing device. 16. The system as recited in claim 15 , wherein the second processing device is configured to: pass a buffer pointer to the first processing device, using the unified kernel address space, to enable sharing of at least one buffer with the first processing device. 17. The system as recited in claim 15 , wherein addresses in the first region of the first virtual address space are mapped to same locations in the memory device as addresses in the first region of the second virtual address space. 18. The system as recited in claim 15 , wherein the second processing device comprises an input/output memory management unit configured to map the device memory space to the region in the memory device. 19. The system as recited in claim 15 , wherein the first processing device is configured to allocate the region in the memory device. 20. The system as recited in claim 15 , wherein the first processing device is configured to convey to the second processing device a pointer to a location in the region of the memory device, wherein the first processing device is configured to convey the pointer to the second processing device via the region in the memory device.
using page tables, e.g. page table structures · CPC title
Buffers; Shared memory; Pipes · CPC title
where tasks reside in different layers, e.g. user- and kernel-space · CPC title
in block erasable memory, e.g. flash memory · CPC title
for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence) · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.