One or more aspects relate, in general, to memory of a computing environment, and in particular, to facilitating translation of memory addresses used to access the memory.
System configurations include physical memory used to store applications and data. The amount of physical memory is fixed and often inadequate to support the needs of users. Therefore, to provide additional memory or at least the appearance of additional memory, a memory management technique, referred to as virtual memory, is utilized. Virtual memory uses virtual addressing, which provides ranges of addresses that can appear to be much larger than the physical size of main memory.
To access main memory in a system configuration that includes virtual memory, a memory access is requested that includes an effective address. The effective address is translated into a real address used to access the physical memory.
Translation is performed using an address translation technique. Several address translation techniques are available. For instance, in PowerPC systems offered by International Business Machines Corporation, an effective address is translated to a corresponding real address by way of page table entries found by selecting an effective segment identifier (ESID) table entry associated with the effective address, and using the entry to locate a group of page table entries by way of a hashing algorithm. In a further example, in the z/Architecture, also offered by International Business Machines Corporation, an effective address is translated to a corresponding real address by way of a hierarchy of translation tables. Translation tables are indexed by a portion of the effective address to find the address of the next translation table of the hierarchy until a real (or absolute) address is obtained. Both address translation techniques provide advantages to their respective operating systems.
Shortcomings of the prior art are overcome and additional advantages are provided through the provision of a computer program product for facilitating translation of a memory address. The computer program product comprises a storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method. The method includes, for instance, obtaining, by a processor, a memory address to be translated, the processor having a first type of address translation structure and a second type of address translation structure available for translating the memory address, wherein the first type is structurally different from the second type; and selecting by the processor one type of address translation structure of the first type of address translation structure and the second type of address translation structure to be used in translating the memory address.
Methods and systems relating to one or more aspects are also described and claimed herein. Further, services relating to one or more aspects are also described and may be claimed herein.
Additional features and advantages are realized through the techniques described herein. Other embodiments and aspects are described in detail herein and are considered a part of the claimed aspects.
One or more aspects are particularly pointed out and distinctly claimed as examples in the claims at the conclusion of the specification. The foregoing and objects, features, and advantages of one or more aspects are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
In one aspect, a system configuration is provided that has different types of translation structures available to it for use in translating memory addresses from one format (e.g., an effective address, and in particular, a virtual address associated therewith) to another format (e.g., a real address). Multiple translation structure formats (e.g., multiple page table formats, such as hash page tables and hierarchical page tables) are concurrently supported in a system configuration, and a control is provided to select, for a particular address to be translated, one or more types of translation structures to be used in the translation. In one embodiment, the different types of translation structures are structurally different, and include, for instance, hash structures, hierarchical structures and/or offset structures, which are described below.
Computing environments of different architectures may incorporate and use one or more aspects of the address translation capability provided herein. For instance, environments based on the PowerPC architecture, also referred to as Power ISA, offered by International Business Machines Corporation and described in the Power ISA™ Version 2.06 Revision B specification, Jul. 23, 2010, incorporated herein by reference in its entirety, may include one or more aspects, as well as computing environments of other architectures, such as the z/Architecture, offered by International Business Machines Corporation, and described in z/Architecture—Principles of Operation, Publication No. SA22-7932-08, 9th Edition, August 2010, which is hereby incorporated herein by reference in its entirety.
One example of a computing environment to incorporate and use one or more aspects of the translation capability is described with reference to
Memory management unit 104 is used in managing memory portion 108 including facilitating access to the memory by providing address translation. To improve address translation, the memory management unit utilizes a translation lookaside buffer (TLB). The TLB is a cache of previously translated addresses. Thus, when a request is received for a memory access that includes an address to be translated, the TLB is checked first. If the address and its translation are in the TLB, then no translation is necessary. Otherwise, the received address is translated using one of any number of translation techniques.
A further embodiment of a computing environment to incorporate and use one or more aspects of the present invention is depicted in
In this embodiment, each virtual machine is capable of hosting a guest operating system 168 and may be executing one or more applications 170. An operating system or application running in a virtual machine appears to have access to a full complete system, but in reality, only a portion of it is available.
Central processors 156 (e.g., central processing units) are physical processor resources that are assignable to a virtual machine. For instance, virtual machine 154 includes one or more logical processors, each of which represents all or a share of a physical processor 156 that may be dynamically allocated to the virtual machine. Virtual machines 154 are managed by hypervisor 158, such as PowerVM, offered by International Business Machines Corporation, as examples.
Central processor 156, like CPU 102, includes at least one MMU/TLB portion and at least one cache.
Input/output subsystem 160 directs the flow of information between devices and memory (also referred to herein as main memory or main storage). It is coupled to the server in that it can be part of the server or separate therefrom. The I/O subsystem relieves the central processors of the task of communicating directly with the I/O devices coupled to the server and permits data processing to proceed concurrently with I/O processing.
Further details regarding the physical memory used by either system, such as memory 108 or memory 162, and access thereto are described with reference to
Further details regarding a segment lookaside buffer and a page table are described with reference to
In one embodiment, instructions cannot be executed from a no-execute (N=1) segment. Segments may contain a mixture of page sizes. The L and LP bits specify the base virtual page size that the segment may contain. The SLBL∥LP encodings are those shown below, in one example:
where the “additional values” are implementation-dependent, as are the corresponding base virtual page sizes. The values that are not supported by a given implementation are reserved in that implementation.
The base virtual page size also referred to as the base page size is the smallest virtual page size for the segment. The base virtual page size is 2b bytes. The actual virtual page size (also referred to as the actual page size or virtual page size) is specified by PTEL∥LP.
The Class field is used in conjunction with the SLB Invalidate Entry (SLBIE) and SLB Invalidate All (SLBIA) instructions. Class refers to a grouping of SLB entries and implementation-specific lookaside information so that only entries in a certain group need be invalidated and others might be preserved. The class value assigned to an implementation-specific lookaside entry derived from an SLB entry is to match the class value of that SLB entry. The class value assigned to an implementation-specific lookaside entry that is not derived from an SLB entry (such as real mode address translations) is 0.
Software is to ensure that the SLB contains at most one entry that translates a given instruction effective address. An attempt to create an SLB entry that violates this requirement may cause a machine check.
As described herein, at least one field of the SLB is used to access a page table, and in particular, a specific page table entry. Further information regarding a page table and page table entries is described with reference to
Referring initially to
In one example, the hash page table contains page table entry groups (PTEGs). A page table entry group contains, for instance, eight page table entries of 16 bytes each; each page table entry group is thus 128 bytes long. PTEGs are entry points for searches of the page table.
Further details of a page table entry are described with reference to
Further details regarding one implementation of page tables and page table entries are described in Power ISA™ Version 2.06 Revision B specification, Jul. 23, 2010, offered by International Business Machines Corporation and incorporated herein by reference in its entirety.
The use of a hash page table to translate addresses is only one example of a translation technique. Other address translation schemes, including those that use a hierarchy of translation tables, are described below, as well as in the following publications: z/Architecture—Principles of Operation, Publication No. SA22-7932-08, 9th Edition, August 2010, and Intel Itanium Architecture Software Developer's Manual Volume 2: System Architecture, Document Number: 245318-005, each hereby incorporated herein by reference in its entirety. In one example, for the z/Architecture, the hierarchy of tables is referred to as dynamic address translation (DAT) tables; and for Power ISA, the tables are referred to as radix tables.
One example of a hierarchical translation table translation mechanism is described with reference to
The page table entry located by traversing the hierarchical page tables includes various information including at least a portion of a real address used to access the physical memory. The format and information included in the page table entry depends on the architecture of the system configuration and/or the specific type of translation.
In one example in which the address translation is the DAT translation of the z/Architecture, a page table entry 600 includes the following, as depicted in
As a further example in which the address translation is the radix translation of Power ISA, a page table entry includes the following fields, as depicted in
In accordance with one aspect, a system configuration is provided with different types of address translation structures for use in translating addresses. As examples, one type uses a hierarchical data structure (e.g., a radix structure), and another type uses a hash data structure. Other and/or different types of structures may also be used, including, for instance, a combination of a hierarchical and a hash structure, or an offset structure, as examples. Further, in one example, the type of translation structure to be used for a particular translation is selectable.
One embodiment of the logic to select from a plurality of translation mechanisms to translate an address is described with reference to
Referring to
Based on the effective address in the translation request, a guest virtual address is obtained and translated within the partition to a guest physical address using a selected translation format, such as, for instance, a radix translation, STEP 702. A determination is made as to whether a translation event has occurred based on the translation from the guest virtual address to the guest physical address, INQUIRY 704. If a translation event has occurred, then that event (e.g., radix table miss), along with the guest virtual address, is presented from the hardware to the operating system using an instruction storage interrupt (ISI) or data storage interrupt (DSI) depending on whether the translation that resulted in a fault corresponded to an instruction or data access, STEP 706. However, if there was no translation event, then the guest virtual address has been translated to the guest physical address.
Next, a determination is made as to the type of translation to be selected to translate the guest physical address to the host physical address, INQUIRY 708. In the example herein, it is either a hierarchical translation mechanism (e.g., radix) or a hash page table translation mechanism that is selected; however, in other embodiments, other types of translation mechanisms may be selected, such as an offset mechanism or other types. In one embodiment, the selection of the translation mechanism is dependent on the type of hypervisor that is configuring the system for translation, and the preference of that hypervisor; and/or the selection may be based on the condition of the memory. For instance, if host memory has little fragmentation or large pages, a radix or other hierarchical translation may be selected; for heavily fragmented host memory, hash page table translation may be selected; and for static partitions, an offset translation mechanism may be selected. Other selection criteria are also possible.
Further, in one embodiment, selection may be performed at various levels of translation including, for instance, from guest virtual to guest physical, and/or from guest physical to host physical, and each selection is independent of the other. That is, the selection of a particular structure at one level (e.g., guest level) has no bearing on the selection at another level (e.g., host level).
The selection, in one example, is configured by the hypervisor for the system by setting one or more indicators in one or more control registers, other registers, or memory, subsequent to making the selection and prior to receiving a translation request. In another example, the selection is made dynamically by, for instance, the hypervisor or operating system, at the time of the translation, and that selection is provided to the hardware or firmware.
Continuing at INQUIRY 708, if a radix (or other hierarchical) translation is selected for the host translation, then the guest physical address is translated to the host physical address using a radix (or other hierarchical) translation, STEP 710. However, if hash page table translation has been selected, then the guest physical address is translated to the host physical address using a hash page table translation, STEP 712. Other translation mechanisms may also be selected, although, not shown in this particular example.
If a translation event occurs during translation of the guest physical address to the host physical address, INQUIRY 714, then that event is indicated to the hypervisor via a host instruction storage interrupt (HISI)/host data storage interrupt (HDSI), in which the guest's physical address is specified, STEP 716. If a translation event has not been indicated, then the guest physical address has been translated to the host physical address, and the host physical address is usable for the memory access.
Should the hypervisor be interrupted via an HISI or HDSI, the hypervisor performs certain processing, an example of which is depicted and described with reference to
Returning to INQUIRY 762, if radix guest translation is enabled, in one embodiment, the partition fault address (e.g., the guest physical address) to be translated is obtained by the operating system from the hardware, STEP 768. Further, a translation entry for that address is obtained from a memory map to load the host translation table, STEP 770. The translation entry that is obtained is installed in the host translation table (e.g., HPT or radix, in a further embodiment), STEP 772, and execution of the instruction having caused the HISI/HDSI is restarted, STEP 774.
For example, in one embodiment, host translation is performed using an HPT structure. In accordance with this embodiment, further to STEP 768, a translation entry for that address is obtained from a memory map to load the HPT, STEP 770. In accordance with another embodiment and in another execution, a host physical page has been paged out and is paged in prior to installing a translation entry. The translation entry that is obtained is installed in the HPT, STEP 772, and execution of the instruction having caused the HISI/HDSI is restarted, STEP 774. In another embodiment, host translation is performed by a radix structure. In accordance with this embodiment, further to STEP 768, a translation fault is handled for a radix table, e.g., a translation entry for that address is obtained from a memory map to load the radix table, STEP 770. In accordance with another embodiment and in another execution, a host physical page has been paged out and is paged in prior to installing a translation entry. The translation entry that is obtained is installed in the radix table, STEP 772, and execution of the instruction having caused the HISI/HDSI is restarted, STEP 774.
Further details regarding different types of translation structures, including a hierarchical translation structure, such as a radix translation structure, and variations thereof, such as a radix on radix translation structure (i.e., using a radix table for guest translation in conjunction with a radix table for host translation), and a radix on hash page table (HPT) translation structure (i.e., using a radix table for guest translation in conjunction with an HPT table for host translation) are described below with reference to
Referring initially to
In one example, radix translation structure 802 includes, for instance, a plurality of radix structures, including a level 4 page directory (PD) 802a, a level 3 page directory 802b, a level 2 page directory 802c, and a level 1 page table (PT) 802d. Each page directory and page table includes a plurality of entries, referred to herein as page directory entries (PDEs) or page table entries (PTEs), respectively. (The L field of an entry indicates whether there are additional entries to be used in the translation.) The structures are indexed into, in this example, using a page number 810 generated from a segment offset 812 of the effective address.
To index into radix structure 802, as one example, the first X (e.g., 9) bits of page number 810 are used as an offset into PD 802a pointed to by radix table origin 800. The contents of a selected PDE of PD 802a provide an address of PD 802b, and the next X bits of page number 810 are used to index into PD 802b to obtain an address of PD 802c. Further, the next X bits of page number 810 are used to access a selected PDE of PD 802c to obtain the address of the page table 802d. The last X bits of page number 810 are used to access a selected PTE of PT 802d. The output of the PTE of PT 802d combined with byte portion 814 of segment offset 812 creates a physical address 816, also known as a real address.
The above describes one embodiment of translating a virtual address to a physical address using radix translation. However, in the situation in which the virtual address is a guest virtual address, additional processing may be used to translate each guest address to a corresponding host address. One embodiment of this logic is described with reference to
Referring to
Then, in guest structure 902, the first X (e.g., 9) bits of the effective address (not shown) to be translated are used to index into the level 4 PD 902a to obtain a virtual real address of level 3 PD 902b. This virtual address is translated into a real address of level 3 PD 902b using radix host structure 904, which is indexed into using the bits of the virtual real address of the level 3 PD, as described above. The second set of X bits of the effective address is then used to index into PD 902b to obtain a virtual real address of level 2 PD 902c. That address is then translated using host structure 904 to obtain a real address of level 2 PD 902c. The third set of X bits of the effective address is used to index into PD 902c to obtain a virtual real address of PT 902d. The virtual real address is then translated using radix host structure 904 to obtain a real address of level 1 PT 902d. The next X bits of the effective address are used to index into PT 902d to obtain a virtual real address. The virtual real address is translated using radix host structure 904, and the output of that translation combined with a byte offset of the effective address is a host physical address 906. In one example, using this type of translation, it takes 24 reads to translate an address, in the worst case.
In addition to the above, a radix on hash page table (HPT) translation mechanism is provided, in which the guest translations are via a radix structure and the host translations are via a hash page table structure. An example of a radix on hash page table translation is described with reference to
The first X (e.g., 9) bits of the effective address to be translated are used to index into PD 1004a to obtain the pertinent contents. As in each of these translations, the contents of the selected level 4 page directory entry of PD 1004a are checked to see if there are additional levels to be searched (e.g., is L=0), and if so, the virtual real address of PD 1004b is used to hash into HPT 1002. Based thereon, the real address of a level 3 PD structure 1004b is obtained. The next X bits of the effective address are used to index into PD 1004b and this access provides a virtual real address of a level 2 structure 1004c. This virtual address is used in hash structure 1002 to obtain a real address of structure 1004c. The next X bits of the effective address are used to index into PD 1004c to obtain a virtual real address of level 1 PT 1004d, which is used to access the HPT. The output of the HPT access is the real address of a level 1 table 1004d, which is used to obtain another virtual real address. Since implicitly L=1 as all levels in the page table have been exhausted, this is the last table of the radix structure, and therefore, this entry is the page table entry. The next X bits of the effective address are used to index into the page table to provide the guest physical address. The guest physical address is used to access the hash table. The output of the hash table combined with a byte offset of the effective address provides the host physical address 1006 corresponding to the effective address being translated.
In one embodiment, the guest page table pointer (e.g., guest page table pointer 1000; a.k.a., the virtual real address of the first table in the hierarchy of tables) is obtained using the hash table. This is described with reference to
More specifically, if the indicator specifies that multiple types of translation formats are to be used to translate the effective address of the request to a real address (i.e., SLBERS=1), then processing continues with obtaining the VSID from the SLBE. The VSID is used to locate an entry in one type of table (e.g., the hash table) in order to obtain the root of a another type of table (e.g., a hierarchical table, such as a radix table). In particular, in one example, the VSID is used to create a canonical address used to index into the HPT to obtain the RTABORG. A canonical address is an address created for a plurality of pages in a segment. That is, a particular segment includes a plurality of pages that share the same radix table. Therefore, the address used to index into HPT is to be the same for all those pages. In order to create the canonical address, the low order address bits for all the addresses that share the same radix table are zeroed out (and in one embodiment an appropriate constant is added). For instance, the virtual address obtained based on the effective address includes the VSID, and page and byte offsets. The VSID is used (optionally, along with the constant) to create the canonical address. The canonical address is used to index into the HPT to obtain the origin of the radix table (i.e., the virtual real address of the first table in the hierarchy of tables to be used in translation).
In addition to, or in lieu of, the translation mechanisms described above, other translation mechanisms may be used. One example of another type of translation mechanism is a radix on offset mechanism, in which a radix guest translation mechanism is used in conjunction with a host translation based on a real mode base and a real mode limit, an example of which is described with reference to
In this example, translation is performed using a real mode offset register (RMOR) and a real mode limit selector (RMLS) 1202 and a radix structure 1204. As described previously, radix structure 1204 includes, in this example, a level 4 PD 1204a, a level 3 PD 1204b, a level 2 PD 1204c and a level 1 PT 1204d, each including a plurality of PDEs or PTEs. A guest page table pointer 1200 (a.k.a., a virtual real address of PD 1204a) is translated to a real address of PD 1204a using a real mode offset register (RMOR) value and a real mode limit selector (RMLS). The RMOR is added to address 1200 and the result of the addition is compared to RMLS. If it is less than the limit, in this example, then the result is used to access PD 1204a of radix table 1204. The radix table is walked, as described herein (e.g., using first X (e.g., 9) bits of the effective address), to obtain from the selected PDE of PD 1204a a virtual real address of PD 1204b. The base and limit are used again, but this time with the virtual real address of PD 1204b to obtain the real address of PD 1204b. Translation continues and when the selected PTE of PT 1204d is located, a guest physical address is obtained which is translated using host structure 1202 to obtain an address that when concatenated with a byte offset of the effective address provides a host physical address to be used in translation.
Described in detail above are aspects in which multiple types of translation structures are included in a configuration, and it is selectable as to which translation mechanism(s) may be used to translate an effective address to a host real address. However, if the system configuration does not support such a feature or if it supports that feature, as well as legacy translation techniques, then legacy translation is provided.
One embodiment of the logic of a legacy translation technique in which a hash page table is used is described with reference to
Returning to INQUIRY 1308, if there is an HPT translation event, then the translation event is specified to either the operating system or hypervisor using, for instance, ISI/DSI or HISI/HDSI, STEP 1310. HPT event processing is performed, including optionally performing paging, STEP 1312. The operating system or hypervisor restarts the instruction, STEP 1314, and the flow returns to STEP 1300.
Returning to INQUIRY 1304, if there is an SLB generation event, then an SLB event is indicated to the operating system, STEP 1320. Further, SLB event processing is performed including, for instance, reloading the SLB (excluding paging), STEP 1322. The operating system restarts the instruction, STEP 1324, and processing continues with STEP 1300.
A further legacy technique for translating memory addresses is described with reference to
However, if there is a DAT translation event, INQUIRY 1404, then the translation event is either indicated to the operating system or hypervisor, STEP 1410. DAT event processing is performed in the operating system or hypervisor; optionally, performing paging, STEP 1412. Further, the operating system or the hypervisor restarts the instruction, STEP 1414, and processing continues to STEP 1400.
Described in detail above is a capability for selecting from multiple types of translation structures to translate an effective address to a real address. Although examples of translation mechanisms are described, additional and/or different mechanisms may be used. In one example, a first address (e.g., a guest virtual address) is translated to a second address (e.g., a guest physical address) using a scheme selected from, for instance, radix translation, other hierarchical translation, segmentation (e.g., using SLB), hash page table or a combination of the above, as examples. The second address is translated to a third address (e.g., a host physical address) using a translation scheme selected from one or more of page level schemes (translation schemes other than offset mechanisms); radix mechanisms; other hierarchical mechanisms; hash mechanisms; or offset mechanisms, as examples.
In one embodiment, the third address (e.g., host physical address) corresponds to an address executing in a hypervisor partition executing under control of another level of virtualization. That is, the third address is yet another virtual address to be translated to a physical address. The translation is performed as above, and the translation mechanisms are again independently selectable.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system”. Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus or device.
A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.
Referring now to
Program code embodied on a computer readable medium may be transmitted using an appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for one or more aspects may be written in any combination of one or more programming languages, including an object oriented programming language, such as Java, Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language, assembler or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
One or more aspects are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
In addition to the above, one or more aspects may be provided, offered, deployed, managed, serviced, etc. by a service provider who offers management of customer environments. For instance, the service provider can create, maintain, support, etc. computer code and/or a computer infrastructure that performs one or more aspects of the present invention for one or more customers. In return, the service provider may receive payment from the customer under a subscription and/or fee agreement, as examples. Additionally or alternatively, the service provider may receive payment from the sale of advertising content to one or more third parties.
In one aspect, an application may be deployed for performing one or more aspects of the present invention. As one example, the deploying of an application comprises providing computer infrastructure operable to perform one or more aspects of the present invention.
As a further aspect, a computing infrastructure may be deployed comprising integrating computer readable code into a computing system, in which the code in combination with the computing system is capable of performing one or more aspects of the present invention.
As yet a further aspect, a process for integrating computing infrastructure comprising integrating computer readable code into a computer system may be provided. The computer system comprises a computer readable medium, in which the computer medium comprises one or more aspects of the present invention. The code in combination with the computer system is capable of performing one or more aspects of the present invention.
Although various embodiments are described above, these are only examples. For example, computing environments of other architectures can incorporate and use one or more aspects of the present invention. Additionally, other types of translation structures may be used and other types of environments may benefit from one or more aspects. Additionally, the structures may have different fields and/or the fields can be of different sizes. Further, the number of bits used to index into a structure can be the same or different for each level, and/or for each structure. Many variations are possible.
Further, other types of computing environments can benefit from one or more aspects. As an example, an environment may include an emulator (e.g., software or other emulation mechanisms), in which a particular architecture (including, for instance, instruction execution, architected functions, such as address translation, and architected registers) or a subset thereof is emulated (e.g., on a native computer system having a processor and memory). In such an environment, one or more emulation functions of the emulator can implement one or more aspects of the present invention, even though a computer executing the emulator may have a different architecture than the capabilities being emulated. As one example, in emulation mode, the specific instruction or operation being emulated is decoded, and an appropriate emulation function is built to implement the individual instruction or operation.
In an emulation environment, a host computer includes, for instance, a memory to store instructions and data; an instruction fetch unit to fetch instructions from memory and to optionally, provide local buffering for the fetched instruction; an instruction decode unit to receive the fetched instructions and to determine the type of instructions that have been fetched; and an instruction execution unit to execute the instructions. Execution may include loading data into a register from memory; storing data back to memory from a register; or performing some type of arithmetic or logical operation, as determined by the decode unit. In one example, each unit is implemented in software. For instance, the operations being performed by the units are implemented as one or more subroutines within emulator software.
Further, a data processing system suitable for storing and/or executing program code is usable that includes at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements include, for instance, local memory employed during actual execution of the program code, bulk storage, and cache memory which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/Output or I/O devices (including, but not limited to, keyboards, displays, pointing devices, DASD, tape, CDs, DVDs, thumb drives and other memory media, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems, and Ethernet cards are just a few of the available types of network adapters.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising”, when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below, if any, are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain various aspects and the practical application, and to enable others of ordinary skill in the art to understand the various embodiments with various modifications as are suited to the particular use contemplated.
Number | Name | Date | Kind |
---|---|---|---|
4356549 | Chueh | Oct 1982 | A |
4456954 | Bullions, III et al. | Jun 1984 | A |
4680700 | Hester et al. | Jul 1987 | A |
4876646 | Gotou et al. | Oct 1989 | A |
5226168 | Kobayashi et al. | Jul 1993 | A |
5854913 | Goetz et al. | Dec 1998 | A |
6393544 | Bryg et al. | May 2002 | B1 |
6430670 | Bryg et al. | Aug 2002 | B1 |
6671791 | McGrath | Dec 2003 | B1 |
6895491 | Kjos et al. | May 2005 | B2 |
7089377 | Chen | Aug 2006 | B1 |
7111145 | Chen et al. | Sep 2006 | B1 |
7395405 | Anderson et al. | Jul 2008 | B2 |
7428626 | Vega | Sep 2008 | B2 |
7752417 | Manczak et al. | Jul 2010 | B2 |
7822941 | Vick et al. | Oct 2010 | B2 |
7827381 | Manczak et al. | Nov 2010 | B2 |
8078827 | Uhlig et al. | Dec 2011 | B2 |
8086822 | Devine et al. | Dec 2011 | B2 |
8103851 | Greiner et al. | Jan 2012 | B2 |
8127098 | Klaiber et al. | Feb 2012 | B1 |
8135937 | Hall et al. | Mar 2012 | B2 |
8225071 | Chen et al. | Jul 2012 | B2 |
8244978 | Kegel et al. | Aug 2012 | B2 |
8386747 | Moyer et al. | Feb 2013 | B2 |
20040210588 | Simkins et al. | Oct 2004 | A1 |
20050193165 | Sakaguchi | Sep 2005 | A1 |
20060064567 | Jacobson et al. | Mar 2006 | A1 |
20060075146 | Schoinas et al. | Apr 2006 | A1 |
20070101099 | Shinohara et al. | May 2007 | A1 |
20070283123 | Vick et al. | Dec 2007 | A1 |
20070283125 | Manczak | Dec 2007 | A1 |
20070294502 | Gunther | Dec 2007 | A1 |
20080086620 | Morris | Apr 2008 | A1 |
20080104362 | Buros et al. | May 2008 | A1 |
20080162864 | Sugumar et al. | Jul 2008 | A1 |
20080189506 | Kopec et al. | Aug 2008 | A1 |
20090037906 | Armstrong et al. | Feb 2009 | A1 |
20090037941 | Armstrong et al. | Feb 2009 | A1 |
20090113164 | Rajamony et al. | Apr 2009 | A1 |
20090172341 | Durham et al. | Jul 2009 | A1 |
20090228882 | Wang et al. | Sep 2009 | A1 |
20090327648 | Savagaonkar et al. | Dec 2009 | A1 |
20100011187 | Schoinas et al. | Jan 2010 | A1 |
20100058358 | Franke et al. | Mar 2010 | A1 |
20100125708 | Hall et al. | May 2010 | A1 |
20100125709 | Hall et al. | May 2010 | A1 |
20100180276 | Jiva | Jul 2010 | A1 |
20100250499 | McAlister et al. | Sep 2010 | A1 |
20100250869 | Adams et al. | Sep 2010 | A1 |
20100318761 | Moyer et al. | Dec 2010 | A1 |
20110016290 | Chobotaro et al. | Jan 2011 | A1 |
20110078388 | Gyuris et al. | Mar 2011 | A1 |
20110153909 | Dong | Jun 2011 | A1 |
20110197004 | Serebrin et al. | Aug 2011 | A1 |
20110239268 | Sharp et al. | Sep 2011 | A1 |
20110283040 | Chadha et al. | Nov 2011 | A1 |
20110320756 | Craddock et al. | Dec 2011 | A1 |
20110320758 | Craddock et al. | Dec 2011 | A1 |
20110320759 | Craddock et al. | Dec 2011 | A1 |
20110321158 | Craddock et al. | Dec 2011 | A1 |
20120011341 | Greiner et al. | Jan 2012 | A1 |
20120023300 | Tremaine et al. | Jan 2012 | A1 |
20120079479 | Hakewill | Mar 2012 | A1 |
20120110236 | Ali et al. | May 2012 | A1 |
20120137106 | Greiner et al. | May 2012 | A1 |
20120137288 | Barrett et al. | May 2012 | A1 |
20120159039 | Kegel et al. | Jun 2012 | A1 |
20120180047 | Cardona et al. | Jul 2012 | A1 |
20120185854 | Dahlstedt | Jul 2012 | A1 |
20120191940 | Brownlow et al. | Jul 2012 | A1 |
20120209894 | Kandasamy et al. | Aug 2012 | A1 |
20130024598 | Serebrin | Jan 2013 | A1 |
20140047251 | Kottilingal et al. | Feb 2014 | A1 |
20140101359 | Bybell et al. | Apr 2014 | A1 |
20140101360 | Gschwind | Apr 2014 | A1 |
20140101361 | Gschwind | Apr 2014 | A1 |
20140101362 | Gschwind | Apr 2014 | A1 |
20140101363 | Gschwind | Apr 2014 | A1 |
20140101364 | Gschwind | Apr 2014 | A1 |
20140101365 | Gschwind | Apr 2014 | A1 |
20140101402 | Gschwind | Apr 2014 | A1 |
20140101406 | Gschwind | Apr 2014 | A1 |
20140101407 | Bybell et al. | Apr 2014 | A1 |
20140101408 | Bybell et al. | Apr 2014 | A1 |
20140108701 | Liljeberg | Apr 2014 | A1 |
Number | Date | Country |
---|---|---|
690386 | Jan 1996 | EP |
1959348 | Dec 2007 | EP |
2012129729 | Oct 2012 | WO |
Entry |
---|
Ben-Yehuda et al. (IBM Research Report H-0282 (H1001-004)) Jan. 9, 2010. |
“z/Architecture—Principles of Operation,” Pulbication No. SA22-7932-08, 9th Edition, Aug. 2010. |
International Search Report and Written Opinion for PCT/US2013/063675 dated Jan. 22, 2014, pp. 1-11. |
International Search Report and Written Opinion for PCT/US2013/63651 dated Apr. 21, 2014, pp. 1-9. |
Hoang, Giang et al., “A Case for Alternative Nesting Paging Models for Virtualized Systems,” IEEE Computer Architecture Letters, Jan.-Jun. 2010, vol. 9, No. 1, pp. 17-20. |
Barr, Thomas et al., “Translation Caching: Skip, Don't Walk (the Page Table),” ISCA '10, Jun. 2010, pp. 48-59. |
Bybell, Anthony et al., “Asymmetric Co-Existent Address Translation Structure Formats,” U.S. Appl. No. 13/646,770, filed Oct. 8, 2012. |
Gschwind, Michael K., “Adjunct Component to Provide Full Virtualization Using Paravirtualized Hypervisors,” U.S. Appl. No. 13/646,773, filed Oct. 8, 2012. |
Gschwind, Michael K., “System Supporting Multiple Partitions with Differing Translation Formats,” U.S. Appl. No. 13/646,779, filed Oct. 8, 2012. |
Gschwind, Michael K., “Supporting Multiple Types of Guests by a Hypervisor,” U.S. Appl. No. 13/646,782, filed Oct. 8, 2012. |
Gschwind, Michael K., “Selectable Address Translation Mechanisms within a Partition,” U.S. Appl. No. 13/646,788, filed Oct. 8, 2012. |
“z/Architecture—Principles of Operation,” Publication No. SA22-7932-08, 9th Edition, Aug. 2010. |
Power ISA™ Version 2.06 Revision B specification, Jul. 23, 2010. |
Intel Itanium Architecture Software Developer's Manual vol. 2: System Architecture, Document No. 245318-005, Jan. 2006. |
Peng, C. Ray et al., “The Power PC Architecture: 64-Bit Power with 32-Bit Compatibility,” pp. 300-307, 1995 (no further date information available). |
Office Action for U.S. Appl. No. 13/646,779 dated Oct. 8, 2014, 26 pages. |
Office Action for U.S. Appl. No. 13/784,082 dated Oct. 8, 2014, 20 pages. |
Office Action for U.S. Appl. No. 13/646,788 dated Oct. 8, 2014, 23 pages. |
Office Action for U.S. Appl. No. 13/788,895 dated Oct. 8, 2014, 17 pages. |
Office Action for U.S. Appl. No. 13/646,770 dated Jun. 18, 2014, 18 pages. |
Office Action for U.S. Appl. No. 13/789,148 dated Jun. 19, 2014, 16 pages. |
Office Action for U.S. Appl. No. 13/789,124 dated Aug. 12, 2014, 17 pages. |
Final Office Action for U.S. Appl. No. 13/646,770 dated Nov. 19, 2014, 22 pages. |
Final Office Action for U.S. Appl. No. 13/789,148 dated Nov. 19, 2014, 20 pages. |
Office Action for U.S. Appl. No. 13/789,124 dated Dec. 2, 2014, 17 pages. |
Office Action for U.S. Appl. No. 13/646,773 dated Mar. 25, 2015, pp. 1-23. |
Office Action for U.S. Appl. No. 13/789,101 dated Mar. 26, 2015, pp. 1-17. |
Office Action for U.S. Appl. No. 13/646,782 dated Apr. 9, 2015, pp. 1-25. |
Office Action for U.S. Appl. No. 13/789,083 dated Apr. 9, 2015, pp. 1-19. |
Final Office Action for U.S. Appl. No. 13/646,788 dated May 5, 2015, pp. 1-16. |
Final Office Action for U.S. Appl. No. 13/784,082 dated May 5, 2015, pp. 1-17. |
Final Office Action for U.S. Appl. No. 13/646,779 dated May 6, 2015, pp. 1-21. |
Final Office Action for U.S. Appl. No. 13/788,895 dated May 6, 2015, pp. 1-13. |
Notice of Allowance in U.S. Appl. No. 13/784,082, dated Sep. 24, 2015, pp. 1-7. |
Notice of Allowance in U.S. Appl. No. 13/646,779, dated Sep. 30, 2015, pp. 1-7. |
Office Action in U.S. Appl. No. 13/788,895, dated Oct. 6, 2015, pp. 1-13. |
Final Office Action in U.S. Appl. No. 13/646,773, dated Oct. 7, 2015, pp. 1-17. |
Final Office Action in U.S. Appl. No. 13/789,101, dated Oct. 7, 2015, pp. 1-13. |
Office Action in U.S. Appl. No. 13/646,788, dated Oct. 8, 2015, pp. 1-17. |
Notice of Allowance in U.S. Appl. No. 13/646,782, dated Oct. 23, 2015, pp. 1-10. |
Notice of Allowance in U.S. Appl. No. 13/789,083, dated Oct. 23, 2015, pp. 1-10. |
International Search Report in related Application No. PCT/US2013/063672, dated Jan. 28, 2014, pp. 1-2. |
Nakajima et al., “Hybrid Virtualization: Enhanced Virtualization for Linux”, Proceedings of the Linux Symposium, 2007, vol. 2, pp. 87-96. |
International Preliminary Report on Patentablility and Written Opinion in related Application No. PCT/US2013/063672, dated Apr. 8, 2015, pp. 1-5. |
Notice of Allowance in U.S. Appl. No. 13/789,083, dated Dec. 4, 2015, pp. 1-14. |
Notice of Allowance in U.S. Appl. No. 13/784,082, dated Dec. 7, 2015, pp. 1-14. |
Notice of Allowance in U.S. Appl. No. 13/646,773, dated Jan. 15, 2016, pp. 1-14. |
Notice of Allowance in U.S. Appl. No. 13/646,779, dated Jan. 15, 2016, pp. 1-9. |
Notice of Allowance in U.S. Appl. No. 13/646,782, dated Jan. 19, 2016, pp. 1-14. |
Office Action in U.S. Appl. No. 13/789,101, dated Feb. 1, 2016, pp. 1-12. |
Wang et al., Dynamic Memory Paravirtualization Transparent to Guest OS, Science in China, Jan. 2010, 12 pages. |
Final Office Action in U.S. Appl. No. 13/788,895, dated Mar. 16, 2016, pp. 1-20. |
Final Office Action in U.S. Appl. No. 13/646,788, dated Mar. 17, 2016, pp. 1-24. |
Office Action in U.S. Appl. No. 13/646,788, dated Jun. 30, 2016, 17 pgs. |
Office Action in U.S. Appl. No. 13/788,895, dated Jun. 29, 2016, 13 pgs. |
Final Office Action in U.S. Appl. No. 14/993,136, dated Sep. 6, 2016, 13 pgs. |
Final Office Action in U.S. Appl. No. 14/994,460, dated Sep. 6, 2016, 13 pgs. |
Number | Date | Country | |
---|---|---|---|
20140101404 A1 | Apr 2014 | US |