Method and apparatus to use DRAM as a cache for slow byte-addressible memory for efficient cloud applications
US-12174739-B2 · Dec 24, 2024 · US
US9639464B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9639464-B2 |
| Application number | US-201213628155-A |
| Country | US |
| Kind code | B2 |
| Filing date | Sep 27, 2012 |
| Priority date | Sep 27, 2012 |
| Publication date | May 2, 2017 |
| Grant date | May 2, 2017 |
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.
A method for data transfer includes receiving in an operating system of a host computer an instruction initiated by a user application running on the host processor identifying a page of virtual memory of the host computer that is to be used in receiving data in a message that is to be transmitted over a network to the host computer but has not yet been received by the host computer. In response to the instruction, the page is loaded into the memory, and upon receiving the message, the data are written to the loaded page.
Opening claim text (preview).
The invention claimed is: 1. A method for data transfer, comprising: providing a computer system including a host computer, a memory and an I/O device, wherein both the computer and the I/O device are enabled to read and write directly to and from the memory; executing, by the host computer, a user application including a command to perform an I/O operation, which places a request to perform the I/O operation in a queue; identifying the execution of the command to perform an I/O operation, by a driver program, separate from the user application, running on the host computer in a user space, by identifying the request in the queue; executing, by the driver program, responsive to identifying the command, an instruction, separate from the command to perform the I/O operation, invoking an operating system of the host computer to load a page of virtual memory of the host computer into the memory, wherein the page of virtual memory, is to be used in receiving data in a message that is to be transmitted over a network to the I/O device in response to the executed command, but has not yet been received by the I/O device; in response to the instruction initiated by the driver program, running on the host computer, loading the page into the memory, by the operating system, before the message is received by the I/O device; and upon receiving the message by the I/O device, writing the data to the loaded page by the I/O device. 2. The method according to claim 1 , wherein executing the instruction comprises invoking an application program interface (API) of the operating system. 3. The method according to claim 2 , and comprising, before executing the instruction, the driver program running in the user space requests the operating system to indicate whether the page is in the memory and in response the operating system provides to the user application, via the API, an indication of whether the page is present in the memory and wherein executing the instruction by the driver program is performed only upon a determination that the page is not in the memory. 4. The method according to claim 1 , and comprising checking, by the driver program, in a user-level operation, whether the page is present in the memory and is available to receive the data, without executing operating system code, and wherein executing the instruction invoking the operating system is performed only responsive to a determination that the page is not present in the memory. 5. The method according to claim 1 , wherein executing the instruction invoking the operating system is performed by the driver program, before the message is received by the I/O device, responsively to detecting, in a user-level operation, by the driver program, that a work item was posted to a receive queue of the I/O device specifying a virtual address. 6. The method according to claim 1 , wherein the driver program and the user application are a same application and wherein the instruction invoking the operating system is located proximate to the command to perform an I/O operation in the user application. 7. The method according to claim 1 , and comprising, after writing the data to the loaded page by the I/O device, receiving by the operating system from the user application, an indication that the page is no longer required, and making the page available to be overwritten with data from a further message responsively to the indication. 8. Data processing apparatus, comprising: a host processor, which has a host memory and a memory management unit (MMU) associated with the host memory, and which is configured to run an operating system, a driver program running in a user space and one or more user applications, wherein the memory management unit is configured to manage loading of pages of virtual memory into the host memory; and a network interface controller (NIC), which is coupled to receive messages including data, and to write the data directly to pages in the host memory, wherein the driver program is configured to identify commands of user applications to perform I/O operations, by identifying a request to perform an I/O operation in a queue, and responsive to the identified commands to execute an instruction invoking the operating system to load a page of virtual memory of the host computer into the memory; wherein the operating system is configured to receive the instruction to load a page of virtual memory of the host computer, and is configured to load the identified page into the host memory in response to the instruction, wherein the instruction is separate from an I/O operation causing transmission of messages to the NIC. 9. The apparatus according to claim 8 , wherein the instruction comprises an invocation of an application program interface (API) of the operating system. 10. The apparatus according to claim 9 , wherein the API is configured to provide an indication to the user application of whether the page is present in the memory and is accessible by the NIC. 11. The apparatus according to claim 8 , wherein a user-level operation running on the host processor is configured to check whether the page is present in the memory and is available to receive the data, and to submit a call to the operating system when the user-level operation determines that the page is not present and available. 12. The apparatus according to claim 8 , wherein a user-level operation running on the host processor is configured to detect that the user application has posted a work item to a receive queue specifying a virtual address, and to submit a call for the page of the virtual memory responsively to the work item. 13. The apparatus according to claim 8 , wherein the user application is configured to issue a command that causes the NIC to transmit a message over the network to another node, wherein the message invokes a reply containing the data, and wherein the user application is configured to submit a call to the operating system identifying the page of virtual memory proximate to the command issued by the user application that causes the message to be sent. 14. The apparatus according to claim 8 , wherein the user application is configured, after the NIC has written the data to the loaded page, to provide an indication to the operating system that the page is no longer required, so as to make the page available, responsively to the indication, to be overwritten with data from a further message. 15. A computer software product, comprising a non-transitory computer-readable medium in which program instructions are stored, which instructions, when read by a computer, including a memory and an I/O device enabled to read and write directly to and from the memory, running an operating system and one or more user applications, cause the computer: to execute a user application including a command to perform an I/O operation, which places a request to perform the I/O operation in a queue; to identify the command to perform an I/O operation by a driver program, separate from the user application, running on the host computer in a user space, by identifying the request in the queue; to execute, by the driver program, responsive to identifying the command, an instruction, separate from the command to perform the I/O operation, invoking the operating system to load a page of virtual memory of the computer into the memory, wherein the page of virtual memory, is to be used in receiving data in a message that is to be transmitted over a network to the I/O device of the computer in response to the executed command, but has not yet been received by the I/O device of the computer, and to load the identified
for peripheral access to main memory, e.g. direct memory access [DMA] · CPC title
Decentralised address translation, e.g. in distributed shared memory systems · CPC title
Performance improvement · CPC title
Multi-level translation tables · CPC title
in hierarchically structured memory systems, e.g. virtual memory systems · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.