US20100049883A1 - Method and system for memory address translation and pinning - Google Patents
Method and system for memory address translation and pinning Download PDFInfo
- Publication number
- US20100049883A1 US20100049883A1 US12/568,712 US56871209A US2010049883A1 US 20100049883 A1 US20100049883 A1 US 20100049883A1 US 56871209 A US56871209 A US 56871209A US 2010049883 A1 US2010049883 A1 US 2010049883A1
- Authority
- US
- United States
- Prior art keywords
- address space
- virtual address
- dma request
- memory
- consumer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
Definitions
- the present invention is related to U.S. patent application Ser. No. 11/333,066, filed on Jan. 11, 2006, titled “A METHOD AND SYSTEM FOR MEMORY PROTECTION AND SECURITY USING CREDENTIALS”, and to U.S. patent application Ser. No. 11/333,716, filed on Jan. 11, 2006, titled “A METHOD AND SYSTEM FOR PROTECTION AND SECURITY of IO DEVICES USING CREDENTIALS”.
- the present invention relates generally to the field of computer and processor architecture.
- the present invention relates to a method and system for memory address translation and pinning.
- PC system 10 typically includes memory 20 , which may be embedded within one or more processing units 12 , or may be separate therefrom.
- Processing units 12 are typically coupled with IO devices 14 [ 1 ]- 14 [i] via one or more IO buses 16 , e.g., peripheral component interconnect (PCI) buses.
- PCI peripheral component interconnect
- PC system 10 may also include one or more components that communicate with the processing units 12 and control the interaction with memory 20 , and the IO buses 16 , e.g., a north bridge unit 18 .
- the translation from virtual address space to physical address space is required to remain stable for as long as the DMA operation is in progress, e.g., it cannot refer to another physical page for as long as the DMA is in progress. If this requirement is violated data corruption may occur. This requirement is referred hereinafter as memory pinning.
- FIG. 4 is an exemplary flow chart diagram of a method of data transaction in accordance with an embodiment of the present invention.
- FIG. 5 is a flow chart diagram of a method for communicating an unmap operation.
- HG 42 may check (step 302 ) whether a translation exists for the buffers referenced in the request, e.g., by looking up the virtual addresses of the buffers in the address space(s) identified by the address space identifier(s) attached to the DMA request, or other pre-defined address space(s). If all translations exist and are valid, HG 42 may translate (step 304 ) the virtual addresses into the corresponding physical page frames (using the host page tables or some other translation information).
- the consumer may initiate the DMA request directly against HG 42 , without informing the upper layers that the DMA request has been initiated.
- HG 42 may check the validity of the address provided by the IO operation, and if it valid, HG 42 may translate (step 406 ) the address requested for access by the DMA request from consumer ID to address space ID, and then from address space and virtual address, as described above, to a physical page frame.
- Another option is to buffer the DMA request on HG 42 itself. This option is the most expensive option.
- An Additional option is for DC 46 to issue an explicit prefetch request to HG 42 . Such a request may include one or several buffer addresses that HG 42 should establish translations for.
- IO miss interrupts may be raised as a result of IO activity which may not necessarily be related to the currently running code and its address space.
- FIG. 5 is a flow chart diagram of a method for communicating to HG 42 an unmap operation.
- the communicating entity may be at the upper layer of system 40 , for example, an OS or a hypervisor which may control the unmap operation.
- the decision between the two alternatives is effected mainly by the reason the unmapping operation was originally requested. For example, if it was because a process exited, the likely decision is to retry it. If it was because of memory shortage, aborting the unmap operation and trying some other page is more likely.
- mapping may be invalid, for example, in the following cases:
- the present invention is typically implemented as a computer program product, comprising a set of program instructions for controlling a computer or similar device. These instructions can be supplied preloaded into a system or recorded on a storage medium such as a CD-ROM, or made available for downloading over a network such as the Internet or a mobile telephone network.
Abstract
A method and system for memory address translation and pinning are provided. The method includes attaching a memory address space identifier to a direct memory access (DMA) request, the DMA request is sent by a consumer and using a virtual address in a given address space. The method further includes looking up for the memory address space identifier to find a translation of the virtual address in the given address space used in the DMA request to a physical page frame. Provided that the physical page frame is found, pinning the physical page frame as long as the DMA request is in progress to prevent an unmapping operation of said virtual address in said given address space, and completing the DMA request, wherein the steps of attaching, looking up and pinning are centrally controlled by a host gateway.
Description
- The present invention is related to U.S. patent application Ser. No. 11/333,066, filed on Jan. 11, 2006, titled “A METHOD AND SYSTEM FOR MEMORY PROTECTION AND SECURITY USING CREDENTIALS”, and to U.S. patent application Ser. No. 11/333,716, filed on Jan. 11, 2006, titled “A METHOD AND SYSTEM FOR PROTECTION AND SECURITY of IO DEVICES USING CREDENTIALS”.
- The present invention relates generally to the field of computer and processor architecture. In particular, the present invention relates to a method and system for memory address translation and pinning.
- The architecture of most current personal computer (PC) systems, from desktop to server, may be conceptually and schematically illustrated in
FIG. 1 , to which reference is now made. -
PC system 10 typically includesmemory 20, which may be embedded within one ormore processing units 12, or may be separate therefrom.Processing units 12 are typically coupled with IO devices 14[1]-14[i] via one ormore IO buses 16, e.g., peripheral component interconnect (PCI) buses. Optionally, in order to make the connection betweenprocessing units 12 and IO devices 14[1]-14[i] quicker,PC system 10 may also include one or more components that communicate with theprocessing units 12 and control the interaction withmemory 20, and theIO buses 16, e.g., anorth bridge unit 18. -
Processing unit 12 typically includes a Central Processing Unit (CPU) 26 that typically refers to virtual memory addresses in virtual memory address space, which get translated by the memory management unit (MMU) 24 into physical addresses. - Typically, when an IO device uses direct memory access (DMA) operations to write or read data from
memory 20, that data is located in physical page frames, and a consumer, e.g., a hypervisor, an OS, or a process using IO having its own virtual memory space, will make use of this data. The consumer typically accesses the data through a virtual address which is translated by the MMU 24 to a physical address. - The translation from virtual address space to physical address space is required to remain stable for as long as the DMA operation is in progress, e.g., it cannot refer to another physical page for as long as the DMA is in progress. If this requirement is violated data corruption may occur. This requirement is referred hereinafter as memory pinning.
- Known methods of memory pinning typically communicate physical addresses to the IO device. These methods typically include translation from virtual address to physical address at the upper layers of
system 10, e.g., at the OS or the hypervisor (or another component that may manage the operating systems ofsystem 40 and allocate the IO memory space per consumer, not shown inFIG. 1 ), and pinning the translation. As a result, the IO path is longer and slower, since the involvement of the upper layers is necessary for each DMA operation. Alternatively, the translation is done in advance, at the memory space of the consumer, by pre-registering all of the required physical memory. The drawback of this approach is the “waste” of the physical memory, which is a precious resource, e.g., as long as a page frame is pinned for a given process, no other process can make use of it, even if no IO operation is executed to or from that page frame. - According to a first aspect of the present invention there is provided a computer-implemented method for a centralized memory address translation and pinning. The method includes attaching a memory address space identifier to a direct memory access (DMA) request, the DMA request is sent by a consumer and using a virtual address in a given address space. The method further includes looking up for the memory address space identifier to find a translation of the virtual address in the given address space used in the DMA request to a physical page frame. Provided that the physical page frame is found, pinning the physical page frame as long as the DMA request is in progress to prevent an unmapping operation of said virtual address in said given address space, and completing the DMA request, wherein the steps of attaching, looking up and pinning are centrally controlled by a host gateway.
- According to a second aspect of the present invention there is provided a computer-implemented method for communicating an unmap operation of a virtual address in a virtual memory address space. The method includes marking that the virtual address is intended to be unmapped, sending an address space identifier and the virtual address of the virtual address space to determine whether the virtual address can be unmapped, and determining whether the virtual address can be unmapped.
- According to a third aspect of the present invention there is provided a system for a centralized memory address translation and pinning. The system includes a host gateway arranged to attach a memory address space identifier to a direct memory access (DMA) request, the DMA request is sent by a consumer and using a virtual address space. The system further includes a second component arranged to look up for the memory address space identifier to find a translation of the virtual address space used in the DMA request to a physical page frame, and a third component arranged to pin the physical page frame as long as the DMA request is in progress to prevent an unmapping operation of the physical page frame, wherein the second and third components are centrally controlled by the host gateway.
- According to a fourth aspect of the present invention there is provided a computer software product, including a computer-readable medium in which computer program instructions are stored, which instructions, when read by a computer, cause the computer to perform a method for a centralized memory address translation and pinning. The method includes attaching a memory address space identifier to a direct memory access (DMA) request, the DMA request is sent by a consumer and using a virtual address in a given address space. The method further includes looking up for the memory address space identifier to find a translation of the virtual address in the given address space used in the DMA request to a physical page frame. Provided that the physical page frame is found, pinning the physical page frame as long as the DMA request is in progress to prevent an unmapping operation of said virtual address in said given address space, and completing the DMA request, wherein the steps of attaching, looking up and pinning are centrally controlled by a host gateway.
- Embodiments of the present invention will now be described, by way of examples only, with reference to the accompanying drawings in which:
-
FIG. 1 is a schematic block diagram of a prior art computer system; -
FIG. 2 is a schematic block diagram of a computer system in accordance with an embodiment of the present invention; -
FIG. 3 is a schematic flow chart diagram of a method for memory pinning and translation, in accordance with embodiments of the present invention; -
FIG. 4 is an exemplary flow chart diagram of a method of data transaction in accordance with an embodiment of the present invention; and -
FIG. 5 is a flow chart diagram of a method for communicating an unmap operation. - In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, and components have not been described in detail so as not to obscure the present invention.
- Reference is now made to
FIG. 2 which is a schematic block diagram of acomputer system 40 in accordance with an embodiment of the present invention.System 40 may utilize memory pinning and translation as will be described in detail below. - In
system 40, a hypervisor, an OS, or a process using IO having its own virtual memory space, (not shown), hereinafter collectively referred as a “consumer”, in communication withmemory 50 may request a direct memory access (DMA) from one or more IO devices 44[1]-44[i] tomemory 50. The DMA request may include, for example, the ID of the consumer, the virtual address in the address space of the consumer (the virtual address may supply both a page and the offset within that page), and the length of the request. The DMA request may be sent to Host Gateway (HG) 42, which may attach an address space identifier to the DMA request, where the address space identifier is that of the initiating consumer. - As shown in
FIG. 1 ,HG 42 may be coupled with one ormore IO buses 16, e.g., peripheral component interconnect (PCI) buses, and with one or morenorth bridges 18 that may control the interaction withmemory 50, and theIO buses 16. - The DMA request may be sent from
HG 42 to a device controller (DC) 46 in a format that may include the address space of the consumer, virtual address, offset, and the length mentioned above.DC 46 may then send the DMA request to IO devices 14[1]-44[i]. After the DMA request is executed,DC 46 may send toHG 42 the buffers involved in the IO operation in the same format (address space, virtual address, offset, length). HG 42 may then do the actual data placement intomemory 50. - According to some embodiments of the present invention, HG 42 may be separated from the processing unit 12 (as shown in
FIG. 1 ). In thisconfiguration HG 42 may first do address translation, then pin the translations and pages involved in the DMA request and IO operation, and then do the actual data placement. - According to some other embodiments of the present invention, HG 42 may be integrated with
processing unit 12, and more specifically with MMU 24. In this configuration (not shown),HG 42 may use virtual addresses when accessingmemory 50, and theMMU 24 may control and execute the translation, handle cases of IO miss interrupt, etc. - Reference is now made to
FIG. 3 which is a schematic flow chart diagram of a method for memory pinning and translation, in accordance with embodiments of the present invention. In the description of this method below the entity which is responsible for the memory pinning and translation, e.g.,HG 42, is separate fromprocessing unit 12. According to this configuration,HG 42 may be responsible to attach (step 300) memory address space identifiers to incoming DMA requests. Thereafter, wheneverHG 42 receives an incoming DMA request, it may check (step 302) whether a translation exists for the buffers referenced in the request, e.g., by looking up the virtual addresses of the buffers in the address space(s) identified by the address space identifier(s) attached to the DMA request, or other pre-defined address space(s). If all translations exist and are valid,HG 42 may translate (step 304) the virtual addresses into the corresponding physical page frames (using the host page tables or some other translation information). - If no translation exists,
HG 42 may raise (step 306) an “IO miss interrupt” call to the upper layers ofsystem 40, e.g., to the hypervisor or to the OS, to establish a translation. The hypervisor may reflect the IO miss interrupt to an OS running under it, if the IO miss interrupt was caused by an IO operation done by an application running under that OS. - When a translation is found, e.g., the respective page frames, the physical pages may be pinned (step 308) as long as the DMA operation and the data placement in the memory is in progress, so that the upper layers will not unmap them while the data placement is in progress.
- Since in accordance to this embodiment of the present invention, the DMA operation is performed between the consumer,
HG 42,DC 46, and the IO device, without the involvement or control of the upper layers (except in the specific cases described above),HG 42 may be required to prevent the upper layers from unmapping a page while it is involved in DMA operation, and the upper layers may perform an unmapping protocol withHG 42 before unmapping a page. To do so,HG 42 may mark which pages are currently involved in DMA operation and data placement and thus cannot be unmapped by the upper layers, and mark which pages that have been involved in DMA ‘read’ operations are dirty without the knowledge of the upper layers. These markings may be achieved, for example, by using dirty bits for each type of mark. - When the DMA operation ends,
HG 42 may update (step 310) the upper layers which pages may be unmapped, for example, by updating the dirty bits. - It should be noted that in the configuration that HG 42 is integrated with
MMU 24, the pinning and translation operations may done via the MMU, in the same way it is done for consumer's CPU memory accesses. In this mode,HG 42 may be responsible for attaching address space identifiers to incoming DMA requests.MMU 24 may also take care of dirtying the page table entries automatically. - In conjunction with
FIGS. 2 and 3 , reference is now made toFIG. 4 which is an exemplary flow chart diagram of a method of data transaction in accordance with an embodiment of the present invention. - A consumer may initiate (step 400) a DMA request against
HG 42.HG 42 may receive the consumer ID, the virtual address in the consumer's address space (the virtual address may supply both a page and the offset within that page, and the length of the DMA request). - It should be noted that the consumer may initiate the DMA request directly against
HG 42, without informing the upper layers that the DMA request has been initiated. -
HG 42 may pass (step 402) the DMA request, with the same information, toDC 46. The information may be protected in order to maintain its integrity, as described in U.S. Ser. No. 11/333,066, filed on Jan. 11, 2006, titled “A METHOD AND SYSTEM FOR MEMORY PROTECTION AND SECURITY USING CREDENTIALS”, which is assigned to the common assignees. - At some point in time when the DMA request is completed by the IO device,
DC 46 may send (step 404) an IO operation toHG 42, including the buffers information which is needed to complete the DMA operation to its destination at the consumer's memory. For example, for each buffer the address of the buffer in the consumer's virtual address space, the consumer ID (which is then translated to address space ID), the length of the buffer, etc., may be included. Optionally, the credential protecting the buffer may also be included, etc. -
HG 42 may check the validity of the address provided by the IO operation, and if it valid,HG 42 may translate (step 406) the address requested for access by the DMA request from consumer ID to address space ID, and then from address space and virtual address, as described above, to a physical page frame. - If a translation is found, the
HG 42 may proceed (step 408) with the DMA operation, marking that a data placement operation is performed against the specific virtual address in the specific address space. If the translation is not found,HG 42 may check (step 410) the page tables for this specific address space inmemory 50. It should be noted that the page tables may be located inmemory 50 but they may also be located in processingunit 12. The page table is a data structure shared betweenCPU 26 and the most privileged software application running on the CPU, e.g., the OS or the hypervisor. - If the translation is found in the page tables,
HG 42 may use the translation and proceed with the IO operation, marking as described above instep 408 that the IO operation is in progress. If the translation is not found in the page tables, HG may raise (step 412) an IO miss interrupt. Once the IO miss interrupt is handled (step 414) by the upper layers, e.g., the hypervisor or the OS, as will be described in detail below and the page tables have been updated,HG 42 may proceed with the IO operation, or alternatively,HG 42 may abort the IO operation, or take any other action, depending on the response received from the upper layers. - It should be noted that the term IO miss interrupt includes early interrupts, e.g., an interrupt that is raised when
HG 42 does not find the required translation information when the DMA request is received from the consumer before it is sent toDC 46, or late interrupts, an interrupt that is raised whenHG 42 does not find the required translation information whenDC 46 sends the IO operation, or a combination of both. In both cases,HG 42 may do the same translation and pinning operations. The difference is the length of time a translation remains pinned. The earlier the translation is done the longer it remains pinned. Therefore, a translation which is established due to an early interrupt will remain pinned longer than a translation established after a late interrupt. - Once the IO operation is completed and the data placement operation is finished,
HG 42 may mark (step 416) that the virtual address used for the DMA process is no longer in use for data placement. - It should be noted that when
HG 42 is required to do an operation which requires more resources fromHG 42 than the routine operations it perform, e.g., having a lookup operation inmemory 50, raising an IO miss interrupt, etc., it may be required to pace the incoming DMA requests.HG 42 may do any of the following, in decreasing orders of desirability. -
HG 42 may requestDC 46 to retry the DMA request. It is then the responsibility ofDC 46 to retry the DMA request in the near future, andHG 42 may take actions to guarantee that a mapping will exist when the DMA request is retried. - Alternatively,
HG 42 may do the DMA request to a pre-allocated list of free pages inmemory 50, and then raise the IO miss interrupt to the upper layers to fix the mappings so that the data ends up mapped wherever the consumer expects it. - A less preferred alternative is to fail the DMA request and to expect a retry to happen eventually. It should be noted that since
HG 42 is allowed to fail any DMA request that does not have a mapping,HG 42 may effectively require pinning all IO buffers in advance, e.g., by failing all other DMA requests/IO operations. - Another option is to buffer the DMA request on
HG 42 itself. This option is the most expensive option. An Additional option is forDC 46 to issue an explicit prefetch request toHG 42. Such a request may include one or several buffer addresses that HG 42 should establish translations for. - As previously mentioned, there may be cases that HG 42 raises an IO miss interrupt. When the hypervisor receives an IO miss interrupt from
HG 42, the hypervisor may establish a valid mapping for the given address and a range in the given address space. If the address space belongs to an OS, the OS does the mapping itself. If the address space belongs to an application running inside an OS, it reflects the IO miss interrupt to the OS and lets the OS to handle it. Once the page tables have been updated,HG 42 is notified and the DMA operation may proceed. - It should be noted that unlike state of the art page faults which are typically synchronous, e.g., happen for processes that are currently executing, IO miss interrupts are asynchronous in nature. Page faults managed by the MMU are typically raised by the MMU when the currently executing code references a virtual address that does not have a valid translation to a physical address. These translations are per address space, e.g., the same virtual address in different address space may point to different physical addresses. When a page fault occurs, it occurs for a translation in the current address space, which is the address space of the currently executing code.
- It should be noted that unlike page faults, IO miss interrupts may be raised as a result of IO activity which may not necessarily be related to the currently running code and its address space.
- Because state of the art page faults are typically raised on behalf of the code currently executing, which is running in a specific well known address space, it is essentially not required to pass to component that handles the page in which address space the page fault should be handled. As shown above, this is not the case for IO miss interrupt; thus
HG 42 may be required to communicate to the consumer code which handles IO miss interrupt, e.g., in which address space this IO miss interrupt should be handled. This additional information may be passed on the IO miss interrupt stack or in some architecture specific register, depending on the architecture. - As previously mentioned,
HG 42 is required to prevent the upper layers from unmapping a page while that page is involved in DMA operation, e.g., data is written to it. Therefore, when, for example, a hypervisor or an OS are required to unmap a page, they have to communicate their intent to unmap the page toHG 42, because that intended-to-be-unmapped page may be involved in an IO operation, and in that case, the unmapping operation should be prevented to avoid data corruption. - Reference is now made to
FIG. 5 which is a flow chart diagram of a method for communicating toHG 42 an unmap operation. The communicating entity may be at the upper layer ofsystem 40, for example, an OS or a hypervisor which may control the unmap operation. - Initially, the entity at the upper layer may mark (step 500) the Page Table Entry (PTE) which is intended to be unmapped as not present, but do not reuse the physical frame of that PTE for another purpose. Then, the entity at the upper layer may send (step 502) to
HG 42 the address space identifier and virtual address of the page which is intended to be unmapped.HG 42 may check (step 504) if this page can be unmapped, e.g., if a data placement is in progress the unmap operation cannot be done. - In
case HG 42 replies that the page may be unmapped, the entity at the upper layer may unmap (step 506) the page and acknowledge receipt of the reply. Alternatively, if the unmapping cannot be done, the entity at the upper layer may abort (step 508) the attempt to unmap the requested page or retry (step 508A) to unmap after a waiting period. - It should be noted that the decision between the two alternatives is effected mainly by the reason the unmapping operation was originally requested. For example, if it was because a process exited, the likely decision is to retry it. If it was because of memory shortage, aborting the unmap operation and trying some other page is more likely.
- It should be further noted that this method for communicating the unmap operation may be required when unmapping PTE's in the address space of a consumer that uses virtual addresses for IO, but may not be required otherwise. In this case, the upper layer, e.g., OS or hypervisor, respectively, may be required to grant the consumer a credential before the IO operation is initiated, as described in U.S. Ser. App. 11/333,066, filed on Jan. 11, 2006, titled “A METHOD AND SYSTEM FOR MEMORY PROTECTION AND SECURITY USING CREDENTIALS”, which is assigned to the common assignees. Additional optimizations may also be possible, by restricting the IO targets to be a subset of the translations for a given page table, so that only those translations will use the method for communicating the unmap operation described above.
- In accordance with some embodiments of the present invention, the proposed system is scalable, e.g., additional consumers, IO devices, host gateways (HG) and device controllers (DC) may be easily added to the system, as will be described in detail below.
- The scalability of the system may be achieved by distributing the information which is important for the devices that may be added to the system. In accordance with some embodiments of the present invention,
DC 46 may keep its relevant translation control entries (TCE). A TCE is a table of the page entries and their corresponding virtual address that are coupled with an IO device.DC 46 may keep a single TCE for all IO devices that it controls, or more than one TCE, each TCE for one IO device thatDC 46 controls. From the view point of a consumer, e.g., a hypervisor, an OS, or a process using IO having its own virtual memory space, the IO translation table of the consumer is distributed between all DC's 46 in the form of the TCE's that are distributed. All mappings that may be required by a specific consumer may be marked with a mapping ID, MID, which may be used, for example, to manage the credentials as will be described below. It should be noted that a single MID may be used to manage many capabilities In addition, a mapping credential, CAPM, may verify one or more TCE's where: -
- TCEi=[virtual address region, physical address, flags]
- CAPMi=[MID, TCEi, time, protection bits]
- i: one or more TCE entries identified by the same MID.
- When
HG 42 receives an IO request from a consumer, and therefore, mapping may be required,HG 42 may create, sign CAPM and send it to therelevant DC 46. - It should be noted that CAPM may be renewed in
case DC 46 fails to provideHG 42 the requested DMA operation by a predefined time window (TW). Renewal of CAPM is applicable, for example, as described in U.S. Ser. No. 11/333,066, filed on Jan. 11, 2006, titled “A METHOD AND SYSTEM FOR MEMORY PROTECTION AND SECURITY USING CREDENTIALS”, which is assigned to the common assignees. It should also be noted that in case that a late pinning is required, for example, if the mapping is not known at the time the CAPM is generated, then a null CAPM may be sent to the DC, e.g., a CAPM without a valid MID, to trigger a page fault when the DMA operation is initiated by the DC. -
DC 46 may send the DMA operations toHG 42 with the relevant TCE's and CAPM.HG 42 may use this information to verify and translate the virtual address. IfHG 42 determines that CAPM is valid, e.g., valid credential, time within the time window, and MID is not listed in the list of revoked credentials used byHG 42 to manage the renewal of the credentials, then the translation may be done and the DMA operation may proceed. In case the translation is invalid,HG 42 may send a retry request toDC 46. Additionally,HG 42 may request a mapping from upper layers. Once a new mapping is received, the updated CAPM may be sent toDC 46, which may now retry the DMA operation. - It should be noted that a mapping may be invalid, for example, in the following cases:
-
- a late pinning was requested (e.g., by a null CAPM), or
- a mapping update has been received from the OS or hypervisor with in the previous TW.
- In the
latter case HG 42 may add the MID to the revoked list, which may be used to check any new arriving translation. Since CAPM must be renewed every TW, the revoked list is limited in length, as described in U.S. Ser. No. 11/333,066, filed on Jan. 11, 2006, titled “A METHOD AND SYSTEM FOR MEMORY PROTECTION AND SECURITY USING CREDENTIALS”, which is assigned to the common assignees. - Furthermore, in accordance with some embodiments of the present invention,
HG 42 andDC 46 are not required to store any state information of the data being transferred, e.g., they may be stateless. As described above, the only common state is the revoked list kept byHG 42. The TCE's may be distributed throughout the various DC's 46 without requiring global synchronization, e.g., OS or hypervisor page table update notifications (which may require updating the relevant TCE) may be sent only to theHG 42, and only on a mapping failure an update may be sent to therelevant DC 46. - In the description above, numerous specific details were set forth in order to provide a thorough understanding of the present invention. It will be apparent to one skilled in the art, however, that the present invention may be practiced without these specific details. In other instances, well-known circuits, control logic, and the details of computer program instructions for conventional algorithms and processes have not been shown in detail in order not to obscure the present invention unnecessarily.
- Software programming code that embodies aspects of the present invention is typically maintained in permanent storage, such as a computer readable medium. In a client-server environment, such software programming code may be stored on a client or server. The software programming code may be embodied on any of a variety of known media for use with a data processing system. This includes, but is not limited to, magnetic and optical storage devices such as disk drives, magnetic tape, compact discs (CD's), digital video discs (DVD's), and computer instruction signals embodied in a transmission medium with or without a carrier wave upon which the signals are modulated. For example, the transmission medium may include a communications network, such as the Internet. In addition, while the invention may be embodied in computer software, the functions necessary to implement the invention may alternatively be embodied in part or in whole using hardware components such as application-specific integrated circuits or other hardware, or some combination of hardware components and software. For example,
HG 42 may be embodied in computer software, or alternatively, in part or in whole using hardware components. - The present invention is typically implemented as a computer program product, comprising a set of program instructions for controlling a computer or similar device. These instructions can be supplied preloaded into a system or recorded on a storage medium such as a CD-ROM, or made available for downloading over a network such as the Internet or a mobile telephone network.
- Improvements and modifications can be made to the foregoing without departing from the scope of the present invention.
- It will be appreciated by persons skilled in the art that the present invention is not limited to what has been particularly shown and described hereinabove. Rather, the scope of the present invention includes both combinations and sub-combinations of the various features described hereinabove, as well as variations and modifications thereof that are not in the prior art, which would occur to persons skilled in the art upon reading the foregoing description.
Claims (26)
1.-4. (canceled)
5. A computer-implemented method for a centralized memory address translation and pinning, said method comprising:
attaching a memory address space identifier to a direct memory access (DMA) request, said DMA request is sent by a consumer and using a virtual address in a given address space;
looking up for said memory address space identifier to find a translation of said virtual address in said given address space used in said DMA request to a physical page frame;
provided that said physical page frame is found, pinning said physical page frame as long as said DMA request is in progress to prevent an unmapping operation of said virtual address in said given address space; and
completing said DMA request, wherein said steps of attaching, looking up and pinning are centrally controlled by a host gateway, wherein said DMA request includes at least an identification of said consumer, a virtual address in the address space of said consumer, and a length of said DMA request.
6. The method of claim 5 , wherein said looking up further comprises looking up in page tables located in the memory of said consumer.
7. The method of claim 5 , wherein said looking up further comprises looking up in translation control entries (TCE) tables located in device controllers coupled with IO devices for which said DMA request is requested, said TCE tables hold records of page entries coupled with said IO devices and virtual addresses corresponding to said page entries.
8.-12. (canceled)
13. A computer-implemented method for communicating an unmap operation of a virtual address in a virtual memory address space, said method comprising:
marking that said virtual address is intended to be unmapped;
sending an address space identifier and said virtual address of said virtual address space to determine whether said virtual address can be unmapped; and
determining whether said virtual address can be unmapped.
14. The method of claim 13 , wherein if said virtual address can be unmapped, said method further comprises unmapping said virtual address.
15. The method of claim 13 , wherein if said virtual address cannot be unmapped, said method further comprises aborting said unmap operation.
16. The method of claim 13 , wherein if said virtual address cannot be unmapped, said method further comprises retrying to unmap said virtual address after a waiting period.
17. A system for a centralized memory address translation and pinning, said system comprising:
a host gateway arranged to attach a memory address space identifier to a direct memory access (DMA) request, said DMA request is sent by a consumer and using a virtual address space;
a second component arranged to look up for said memory address space identifier to find a translation of said virtual address space used in said DMA request to a physical page frame; and
a third component arranged to pin said physical page frame as long as said DMA request is in progress to prevent an unmapping operation of said physical page frame, wherein said second and third components are centrally controlled by said host gateway.
18. The system of claim 17 , wherein said DMA request includes at least an identification of said consumer, a virtual address in the address space of said consumer, and a length of said DMA request.
19. The system of claim 17 , wherein second component is further arranged to look up in page tables located in the memory of said consumer.
20. The system of claim 17 , wherein said third component is further arranged to mark to a hypervisor or an operating system that said physical page frame involved in said DMA request prevent said hypervisor or operating system from mapping said physical page frame to a different task.
21. The system of claim 17 , wherein said host gateway is integrated with a memory management unit (MMU) of a processing unit.
22. The system of claim 17 , further comprises a device controller (DC) arranged to control one or more IO devices that are coupled with said DC.
23. The system of claim 22 , wherein said DC is further arranged to keep at least one translation control entries (TCE) table to hold records of page entries coupled with said IO devices and virtual addresses □orresponding to said page entries.
24. The system of claim 23 , wherein said DMA request includes at least an identification of said consumer, a virtual address of the address space of said consumer and a page entry coupled with said consumer in the form of a TCE record, a length of said DMA request, and a mapping ID of said DMA request.
25. The system of claim 23 , wherein said TCE record is further used by said host gateway to verify and translate a virtual address for a mapping operation.
26. The system of claim 23 , wherein said host gateway is further arranged to update said TCE table when said memory address space identifier is missing from said TCE table.
27. A computer software product, including a computer-readable medium in which computer program instructions are stored, which instructions, when read by a computer, cause the computer to perform a method for a centralized memory address translation and pinning, said method comprising:
attaching a memory address space identifier to a direct memory access (DMA) request, said DMA request is sent by a consumer and using a virtual address in a virtual address space;
looking up for said memory address space identifier to find a translation of said virtual address in said virtual address space used in said DMA request to a physical page frame;
provided that said physical page frame is found, pinning said physical page frame as long as said DMA request is in progress to prevent an unmapping operation of said virtual addressing said given address space; and
completing said DMA request, wherein said steps of attaching, looking up and pinning are centrally controlled by a host gateway.
28. The method of claim 27 , wherein said looking up further comprises looking up in page tables located in the memory of said consumer.
29. The method of claim 27 , wherein said looking up further comprises looking up in translation control entries (TCE) tables located in device controllers coupled with IO devices for which said DMA request is requested, said TCE tables hold records of page entries coupled with said IO devices and virtual addresses □orresponding to said page entries.
30. The method of claim 27 , wherein if said physical page frame is not found in said step of looking up, said method further comprises raising an IO miss interrupt call to a hypervisor or an operating system to establish said translation.
31. The method of claim 27 , wherein said pinning further comprises marking to said hypervisor or said operating system that said physical page frame involved in said DMA request prevent said hypervisor or operating system from mapping said physical page frame to a different task.
32. The method according to claim 29 , further comprising using said TCE record is to verify and translate a virtual address for a mapping operation.
33. The method of claim 29 , further comprises updating said TCE table when said memory address space identifier is missing from said TCE table.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/568,712 US20100049883A1 (en) | 2006-06-27 | 2009-09-29 | Method and system for memory address translation and pinning |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/426,588 US7636800B2 (en) | 2006-06-27 | 2006-06-27 | Method and system for memory address translation and pinning |
US12/568,712 US20100049883A1 (en) | 2006-06-27 | 2009-09-29 | Method and system for memory address translation and pinning |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/426,588 Continuation US7636800B2 (en) | 2006-06-27 | 2006-06-27 | Method and system for memory address translation and pinning |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100049883A1 true US20100049883A1 (en) | 2010-02-25 |
Family
ID=38874758
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/426,588 Expired - Fee Related US7636800B2 (en) | 2006-06-27 | 2006-06-27 | Method and system for memory address translation and pinning |
US12/568,712 Abandoned US20100049883A1 (en) | 2006-06-27 | 2009-09-29 | Method and system for memory address translation and pinning |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/426,588 Expired - Fee Related US7636800B2 (en) | 2006-06-27 | 2006-06-27 | Method and system for memory address translation and pinning |
Country Status (4)
Country | Link |
---|---|
US (2) | US7636800B2 (en) |
JP (1) | JP5068108B2 (en) |
CN (1) | CN100538667C (en) |
TW (1) | TW200817901A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150067087A1 (en) * | 2013-08-29 | 2015-03-05 | International Business Machines Corporation | Automatic pinning and unpinning of virtual pages for remote direct memory access |
EP3230879A4 (en) * | 2015-05-02 | 2018-10-24 | Hewlett-Packard Enterprise Development LP | Storage memory direct access |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8209683B2 (en) * | 2007-04-17 | 2012-06-26 | International Business Machines Corporation | System and method for probing hypervisor tasks in an asynchronous environment |
US8312230B2 (en) * | 2008-06-06 | 2012-11-13 | International Business Machines Corporation | Dynamic control of partition memory affinity in a shared memory partition data processing system |
US8090911B2 (en) | 2009-04-16 | 2012-01-03 | International Business Machines Corporation | Selecting a target number of pages for allocation to a partition |
WO2010135430A1 (en) * | 2009-05-19 | 2010-11-25 | Vmware, Inc. | Shortcut input/output in virtual machine systems |
US9535849B2 (en) * | 2009-07-24 | 2017-01-03 | Advanced Micro Devices, Inc. | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US20110153877A1 (en) * | 2009-12-23 | 2011-06-23 | King Steven R | Method and apparatus to exchange data via an intermediary translation and queue manager |
US8631404B2 (en) * | 2010-02-18 | 2014-01-14 | Red Hat Israel, Ltd. | Mechanism for downloading hypervisor updates via a virtual hardware device using existing virtual machine-host channels |
US8631170B2 (en) * | 2010-09-16 | 2014-01-14 | Red Hat Israel, Ltd. | Memory overcommit by using an emulated IOMMU in a computer system with a host IOMMU |
US8954959B2 (en) | 2010-09-16 | 2015-02-10 | Red Hat Israel, Ltd. | Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU |
JP5593195B2 (en) * | 2010-10-19 | 2014-09-17 | ルネサスエレクトロニクス株式会社 | Data processing device |
US9021465B2 (en) | 2010-12-15 | 2015-04-28 | Red Hat Israel, Ltd. | Downloading guest software updates by a hypervisor |
US9164923B2 (en) * | 2011-07-01 | 2015-10-20 | Intel Corporation | Dynamic pinning of virtual pages shared between different type processors of a heterogeneous computing platform |
US20130318269A1 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Processing structured and unstructured data using offload processors |
US9258276B2 (en) | 2012-05-22 | 2016-02-09 | Xockets, Inc. | Efficient packet handling, redirection, and inspection using offload processors |
US9021476B1 (en) * | 2012-06-19 | 2015-04-28 | Bromium, Inc. | Ensuring the privacy and integrity of a hypervisor |
US10140139B1 (en) | 2012-06-19 | 2018-11-27 | Bromium, Inc. | Ensuring the privacy and integrity of a hypervisor |
US9135046B1 (en) | 2012-06-19 | 2015-09-15 | Bromium, Inc. | Preventing host operating system from inspecting or modifying data received by hardware controller by moving host operating system into a virtual machine after boot up |
US9373182B2 (en) * | 2012-08-17 | 2016-06-21 | Intel Corporation | Memory sharing via a unified memory architecture |
US9197446B2 (en) | 2012-12-12 | 2015-11-24 | Google Inc. | Address pinning |
US9378161B1 (en) | 2013-01-17 | 2016-06-28 | Xockets, Inc. | Full bandwidth packet handling with server systems including offload processors |
US9250954B2 (en) | 2013-01-17 | 2016-02-02 | Xockets, Inc. | Offload processor modules for connection to system memory, and corresponding methods and systems |
CN103455438A (en) * | 2013-07-30 | 2013-12-18 | 华为技术有限公司 | Internal memory management method and equipment |
US9239804B2 (en) * | 2013-10-03 | 2016-01-19 | Advanced Micro Devices, Inc. | Back-off mechanism for a peripheral page request log |
JP6294732B2 (en) * | 2014-03-31 | 2018-03-14 | 株式会社メガチップス | Data transfer control device and memory built-in device |
US10025722B2 (en) * | 2015-10-28 | 2018-07-17 | International Business Machines Corporation | Efficient translation reloads for page faults with host accelerator directly accessing process address space without setting up DMA with driver and kernel by process inheriting hardware context from the host accelerator |
CN109643277B (en) * | 2016-09-26 | 2024-02-20 | 英特尔公司 | Apparatus and method for mediating and sharing memory page merging |
US10387186B2 (en) * | 2017-06-28 | 2019-08-20 | Vmware, Inc. | Hypervisor with virtual-memory file system |
US10635602B2 (en) * | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10552070B2 (en) * | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10761983B2 (en) * | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10698686B2 (en) * | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
CN110324380B (en) * | 2018-03-30 | 2021-09-07 | 北京忆芯科技有限公司 | Cloud computing and fog computing system using KV storage device |
US11243891B2 (en) * | 2018-09-25 | 2022-02-08 | Ati Technologies Ulc | External memory based translation lookaside buffer |
CN110046106B (en) * | 2019-03-29 | 2021-06-29 | 海光信息技术股份有限公司 | Address translation method, address translation module and system |
KR20210016188A (en) | 2019-08-01 | 2021-02-15 | 삼성전자주식회사 | Storage device and operating method of storage device |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4638426A (en) * | 1982-12-30 | 1987-01-20 | International Business Machines Corporation | Virtual memory address translation mechanism with controlled data persistence |
US5983332A (en) * | 1996-07-01 | 1999-11-09 | Sun Microsystems, Inc. | Asynchronous transfer mode (ATM) segmentation and reassembly unit virtual address translation unit architecture |
US20020078308A1 (en) * | 2000-12-14 | 2002-06-20 | International Business Machines Corporation | Symmetric multi-processing system |
US6493343B1 (en) * | 1998-01-07 | 2002-12-10 | Compaq Information Technologies Group | System and method for implementing multi-pathing data transfers in a system area network |
US6658522B1 (en) * | 2000-06-16 | 2003-12-02 | Emc Corporation | Method to reduce overhead associated with system I/O in a multiprocessor computer system |
US20050131899A1 (en) * | 2003-12-12 | 2005-06-16 | Mike Dvorkin | Adaptive object level locking |
US20050268071A1 (en) * | 2004-05-27 | 2005-12-01 | International Business Machines Corporation | Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment |
US7278008B1 (en) * | 2004-01-30 | 2007-10-02 | Nvidia Corporation | Virtual address translation system with caching of variable-range translation clusters |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119214A (en) * | 1994-04-25 | 2000-09-12 | Apple Computer, Inc. | Method for allocation of address space in a virtual memory system |
US5666514A (en) * | 1994-07-01 | 1997-09-09 | Board Of Trustees Of The Leland Stanford Junior University | Cache memory containing extra status bits to indicate memory regions where logging of data should occur |
US5765022A (en) * | 1995-09-29 | 1998-06-09 | International Business Machines Corporation | System for transferring data from a source device to a target device in which the address of data movement engine is determined |
US5659798A (en) * | 1996-02-02 | 1997-08-19 | Blumrich; Matthias Augustin | Method and system for initiating and loading DMA controller registers by using user-level programs |
US6356996B1 (en) * | 1998-03-24 | 2002-03-12 | Novell, Inc. | Cache fencing for interpretive environments |
US6859867B1 (en) * | 2000-05-31 | 2005-02-22 | Intel Corporation | Translation and protection table and method of using the same to validate access requests |
EP1360820B1 (en) * | 2001-02-13 | 2009-09-23 | Siemens Aktiengesellschaft | Method and array for determining the virtual address of a terminal |
US7254696B2 (en) * | 2002-12-12 | 2007-08-07 | Alacritech, Inc. | Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests |
US7664909B2 (en) * | 2003-04-18 | 2010-02-16 | Nextio, Inc. | Method and apparatus for a shared I/O serial ATA controller |
US20050246453A1 (en) * | 2004-04-30 | 2005-11-03 | Microsoft Corporation | Providing direct access to hardware from a virtual environment |
-
2006
- 2006-06-27 US US11/426,588 patent/US7636800B2/en not_active Expired - Fee Related
-
2007
- 2007-06-15 TW TW096121851A patent/TW200817901A/en unknown
- 2007-06-25 JP JP2007166028A patent/JP5068108B2/en not_active Expired - Fee Related
- 2007-06-26 CN CNB2007101126416A patent/CN100538667C/en not_active Expired - Fee Related
-
2009
- 2009-09-29 US US12/568,712 patent/US20100049883A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4638426A (en) * | 1982-12-30 | 1987-01-20 | International Business Machines Corporation | Virtual memory address translation mechanism with controlled data persistence |
US5983332A (en) * | 1996-07-01 | 1999-11-09 | Sun Microsystems, Inc. | Asynchronous transfer mode (ATM) segmentation and reassembly unit virtual address translation unit architecture |
US6493343B1 (en) * | 1998-01-07 | 2002-12-10 | Compaq Information Technologies Group | System and method for implementing multi-pathing data transfers in a system area network |
US6658522B1 (en) * | 2000-06-16 | 2003-12-02 | Emc Corporation | Method to reduce overhead associated with system I/O in a multiprocessor computer system |
US20020078308A1 (en) * | 2000-12-14 | 2002-06-20 | International Business Machines Corporation | Symmetric multi-processing system |
US20050131899A1 (en) * | 2003-12-12 | 2005-06-16 | Mike Dvorkin | Adaptive object level locking |
US7278008B1 (en) * | 2004-01-30 | 2007-10-02 | Nvidia Corporation | Virtual address translation system with caching of variable-range translation clusters |
US20050268071A1 (en) * | 2004-05-27 | 2005-12-01 | International Business Machines Corporation | Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150067087A1 (en) * | 2013-08-29 | 2015-03-05 | International Business Machines Corporation | Automatic pinning and unpinning of virtual pages for remote direct memory access |
US20150067085A1 (en) * | 2013-08-29 | 2015-03-05 | International Business Machines Corporation | Automatic pinning and unpinning of virtual pages for remote direct memory access |
US9037753B2 (en) * | 2013-08-29 | 2015-05-19 | International Business Machines Corporation | Automatic pinning and unpinning of virtual pages for remote direct memory access |
US9043498B2 (en) * | 2013-08-29 | 2015-05-26 | International Business Machines Corporation | Automatic pinning and unpinning of virtual pages for remote direct memory access |
EP3230879A4 (en) * | 2015-05-02 | 2018-10-24 | Hewlett-Packard Enterprise Development LP | Storage memory direct access |
US10255206B2 (en) | 2015-05-02 | 2019-04-09 | Hewlett Packard Enterprise Development Lp | Storage memory direct access |
Also Published As
Publication number | Publication date |
---|---|
US7636800B2 (en) | 2009-12-22 |
CN100538667C (en) | 2009-09-09 |
CN101097546A (en) | 2008-01-02 |
US20070299990A1 (en) | 2007-12-27 |
JP2008009982A (en) | 2008-01-17 |
TW200817901A (en) | 2008-04-16 |
JP5068108B2 (en) | 2012-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7636800B2 (en) | Method and system for memory address translation and pinning | |
US10268597B2 (en) | VM inter-process communication | |
JP5452660B2 (en) | Direct memory access filter for virtualized operating systems | |
US7882330B2 (en) | Virtualizing an IOMMU | |
US7623134B1 (en) | System and method for hardware-based GPU paging to system memory | |
US7702826B2 (en) | Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices | |
JP4237190B2 (en) | Method and system for guest physical address virtualization within a virtual machine environment | |
US9218302B2 (en) | Page table management | |
US20080189432A1 (en) | Method and system for vm migration in an infiniband network | |
US9146879B1 (en) | Virtual memory management for real-time embedded devices | |
US7853957B2 (en) | Doorbell mechanism using protection domains | |
US10223305B2 (en) | Input/output computer system including hardware assisted autopurge of cache entries associated with PCI address translations | |
US9189426B2 (en) | Protected access to virtual memory | |
US8335903B2 (en) | Method and system for processing access to disk block | |
US7549152B2 (en) | Method and system for maintaining buffer registrations in a system area network | |
US11836083B2 (en) | Memory access tracking using a peripheral device | |
JPH08161228A (en) | Multiprocessor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |