DE112017001027T5 - Page troubleshooting - Google Patents

Page troubleshooting Download PDF

Info

Publication number
DE112017001027T5
DE112017001027T5 DE112017001027.6T DE112017001027T DE112017001027T5 DE 112017001027 T5 DE112017001027 T5 DE 112017001027T5 DE 112017001027 T DE112017001027 T DE 112017001027T DE 112017001027 T5 DE112017001027 T5 DE 112017001027T5
Authority
DE
Germany
Prior art keywords
page
page size
virtual address
indication
main memory
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.)
Granted
Application number
DE112017001027.6T
Other languages
German (de)
Other versions
DE112017001027B4 (en
Inventor
Shakti Kapoor
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112017001027T5 publication Critical patent/DE112017001027T5/en
Application granted granted Critical
Publication of DE112017001027B4 publication Critical patent/DE112017001027B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Ein Hinweis auf die Seitengröße kann in ein nicht benutztes und reserviertes Feld in einer effektiven oder virtuellen Adresse zur Verwendung durch eine Software-Seitenfehlerbehandlungsroutine codiert werden, wenn ein Seitenfehler, der zu der effektiven oder virtuellen Adresse gehört, behandelt wird, um es einer Anwendung zu ermöglichen, einem Betriebssystem oder anderer softwarebasierter Umsetzungsfunktionalität Seitengrößenpräferenzen für die Zuordnung von Hauptspeicherseiten mitzuteilen und/oder die Suche nach Seitentabelleneinträgen in einer Hardware-Seitentabelle zu beschleunigen.

Figure DE112017001027T5_0000
An indication of page size may be encoded into an unused and reserved field in an effective or virtual address for use by a software page fault handler when a page fault associated with the effective or virtual address is treated to be applied to an application allow an operating system or other software-based translation functionality to communicate page size preferences for the allocation of main memory pages and / or speed up the search for page table entries in a hardware page table.
Figure DE112017001027T5_0000

Description

HINTERGRUNDBACKGROUND

Die Erfindung betrifft allgemein Computer und Computer-Software und insbesondere die Hauptspeicher-Adressumsetzung.The invention relates generally to computer and computer software, and more particularly to main memory address translation.

Die Hauptspeicherverwaltung, d.h., die Operationen, die bei der Verwaltung der in einem Computer gespeicherten Daten stattfinden, ist oftmals ein Schlüsselfaktor bei der Gesamtleistung des Systems für einen Computer. Unter anderem überwacht die Hauptspeicherverwaltung den Abruf und die Speicherung von Daten auf einem Computer und sie verwaltet auch bestimmte Sicherheitsaufgaben für einen Computer, indem sie Beschränkungen im Hinblick darauf auferlegt, worauf Benutzer und Computerprogramme zugreifen dürfen.Main memory management, that is, the operations that take place in managing the data stored in a computer, is often a key factor in the overall performance of the system for a computer. Among other things, main memory management monitors the retrieval and storage of data on a computer and also manages certain security tasks for a computer by imposing restrictions on what users and computer programs may access.

Modernen Computern liegt üblicherweise eine Hauptspeicherverwaltungstechnik zugrunde, die als virtuelle Hauptspeicherverwaltung bezeichnet wird, um die Leistungsfähigkeit zu steigern und eine größere Flexibilität bei Computern und den zugrunde liegenden Architekturdesigns, auf denen sie basieren, zu ermöglichen.Modern computers are typically based on a main memory management technique called virtual memory management, to increase performance and allow greater flexibility in computers and the underlying architectural designs on which they are based.

Bei einem virtuellen Hauptspeichersystem ist die zugrunde liegende Hardware, die das Hauptspeichersystem eines Computers realisiert, für die Software des Computers praktisch unsichtbar. Ein verhältnismäßig großer virtueller Hauptspeicherbereich, z.B. mit einer Breite von 64 Bit oder mehr, wird für einen solchen Computer angegeben, wobei Computerprogramme, die auf dem Computer ausgeführt werden, auf das Hauptspeichersystem mittels virtueller Adressen zugreifen, die auf Speicherplätze in dem virtuellen Hauptspeicherbereich zeigen. Auf die physischen Hauptspeichereinheiten in dem Computer wird jedoch über „reale“ Adressen zugegriffen, die direkt in bestimmte Hauptspeicherplätze in den physischen Hauptspeichereinheiten abgebildet werden. Hardware und/oder Software in dem Computer werden bereitgestellt, um eine „Adressumsetzung“ durchzuführen, um die realen Hauptspeicheradressen des physischen Hauptspeichers in virtuelle Adressen in dem virtuellen Hauptspeicherbereich abzubilden. Immer wenn ein Computerprogramm auf einem Computer versucht, mittels einer virtuellen Adresse auf Hauptspeicher zuzugreifen, setzt der Computer somit automatisch die virtuelle Adresse in eine entsprechende reale Adresse um, so dass der Zugriff auf den entsprechenden Speicherplatz in der entsprechenden physischen Einheit erfolgen kann, welche der virtuellen Adresse zugeordnet ist.In a virtual memory system, the underlying hardware that implements the main memory system of a computer is virtually invisible to the computer's software. A relatively large virtual memory area, e.g. with a width of 64 bits or more is specified for such a computer, wherein computer programs executing on the computer access the main memory system by means of virtual addresses pointing to memory locations in the main memory virtual area. However, the physical main storage units in the computer are accessed via "real" addresses which are mapped directly to specific main storage locations in the main physical storage units. Hardware and / or software in the computer are provided to perform an "address translation" to map the real main memory addresses of the physical memory into virtual addresses in the main memory virtual area. Thus, whenever a computer program on a computer attempts to access main storage by means of a virtual address, the computer automatically translates the virtual address to a corresponding physical address so that access can be made to the appropriate storage location in the corresponding physical unit which virtual address is assigned.

Ein Merkmal der virtuellen Adressierung ist, dass ein Computer für den ganzen virtuellen Hauptspeicherbereich in den physischen Hauptspeichereinheiten im Hauptspeicher des Computers keinen Speicher enthalten muss. Vielmehr können untere Speicherebenen wie zum Beispiel Plattenlaufwerke und andere Massenspeichereinheiten als Zusatzspeicher verwendet werden, wobei Hauptspeicheradressen gruppenweise zu „Seiten“ zusammengefasst werden, die nach Bedarf zwischen dem Hauptspeicher und dem Zusatzspeicher aus- und wieder eingelagert werden.A feature of virtual addressing is that a computer need not contain memory for the entire virtual memory area in the main physical memory units in the main memory of the computer. Rather, lower storage levels such as disk drives and other mass storage units may be used as overhead storage, with main storage addresses grouped together into "pages" that are offloaded and reinserted as needed between the main storage and the auxiliary storage.

Darüber hinaus gehört zu manchen Computerarchitekturen auch das Konzept der Segmentierung, das den virtuellen Hauptspeicher in verschiedene Segmente (wobei jedes Segment Blöcken von Seiten zugeordnet wird) unterteilt, um den Schutz des Hauptspeichers zu vereinfachen, die Handhabung von großen und wachsenden Datenstrukturen einfacher zu gestalten und ansonsten eine größere Flexibilität für die Durchführung der Hauptspeicherverwaltung zu ermöglichen, wenn mehrere Prozesse zu einem bestimmten Zeitpunkt in einem Computer ausgeführt werden können. Wenn Segmentierung zur Anwendung kommt, wird eine zusätzliche Dereferenzierungsebene verwendet, was die Durchführung einer zusätzlichen Umsetzung notwendig macht. In Systemen, die Segmentierung und Seitenauslagerung (Paging) beinhalten, greifen Computerprogramme üblicherweise mittels „effektiver“ Adressen auf das Hauptspeichersystem zu, die auf virtuelle Adressen abgebildet werden, was folglich zuerst eine Umsetzung von einer effektiven in eine virtuelle Adresse und dann von einer virtuellen in eine reale Adresse erforderlich macht.In addition, some computer architectures also incorporate the concept of segmentation, which divides virtual memory into different segments (each segment being allocated blocks by pages) to simplify main memory protection, simplify the handling of large and growing data structures, and otherwise, to allow greater flexibility to perform main memory management when multiple processes can run on a computer at a given time. When segmentation is used, an additional level of dereferencing is used, necessitating additional implementation. In systems that include segmentation and page paging, computer programs typically access the main memory system through "effective" addresses mapped to virtual addresses, thus first translating from an effective to a virtual address and then a virtual address a real address is required.

Aufgrund der Häufigkeit von Zugriffsanforderungen in einem Computer kann die Adressumsetzung eine beträchtliche Auswirkung auf die Gesamtleistung des Systems haben. Somit ist es wünschenswert, den Verarbeitungsaufwand zu minimieren, der mit dem kritischen Timing-Pfad verbunden ist, innerhalb dessen die Adressumsetzung durchgeführt wird.Because of the frequency of access requests in a computer, address translation can have a significant impact on the overall performance of the system. Thus, it is desirable to minimize the processing overhead associated with the critical timing path within which the address translation is performed.

Die Adressumsetzung in einem virtuellen Hauptspeichersystem beinhaltet üblicherweise den Zugriff auf verschiedene Adressumsetzungsdatenstrukturen. Eine solche Struktur, die als Seitentabelle bezeichnet wird, enthält mehrere Einträge, welche virtuelle Adressen seitenweise auf reale Adressen abbilden. Ebenso wird zur Durchführung der Segmentierung oftmals eine Segmenttabelle bereitgestellt, die Einträge enthält, welche effektive Adressen segmentweise auf virtuelle Adressen abbilden.Address translation in a main memory virtual system typically involves access to various address translation data structures. Such a structure, referred to as a page table, contains several entries which map virtual addresses to real addresses one page at a time. As well For example, in order to perform the segmentation, a segment table is often provided which contains entries which map effective addresses segment by segment to virtual addresses.

Aufgrund der großen Anzahl von Hauptspeicherzugriffen, die in einem Computer ständig stattfinden, kann die Anzahl der Einträge, die notwendig sind, um den durch einen Computer verwendeten gesamten Hauptspeicher-Adressraum abzubilden, beträchtlich sein und es erforderlich machen, dass die Einträge im Hauptspeicher und nicht im dedizierten Speicher gespeichert werden, was den Zugriff auf diese Einträge untragbar langsam macht. Um die Adressumsetzung bei einem solchen Schema zu beschleunigen, werden üblicherweise Hochgeschwindigkeitsspeicher, die als Adressumsetzpufferspeicher (translation lookaside buffers, TLBs) und Segmentumsetzpufferspeicher (segment lookaside buffers, SLBs) bezeichnet werden, verwendet, um zuletzt verwendete Einträge für einen schnellen Zugriff durch den Computer zwischenzuspeichern. Wenn ein benötigter Eintrag nicht in einem TLB oder SLB gespeichert ist, geht dies beim Laden des Eintrags aus dem Hauptspeicher mit einer Leistungseinbuße einher; üblicherweise ist die Trefferrate bei TLBs und SLBs jedoch außerordentlich hoch und die mit dem Laden von Einträgen aus dem Hauptspeicher verbundene Einbuße wird durch die Leistungssteigerungen, wenn auf Einträge unmittelbar aus dem TLB und SLB zugegriffen werden kann, mehr als wett gemacht.Due to the large number of main memory accesses that are constantly taking place in a computer, the number of entries necessary to map the entire main memory address space used by a computer can be significant, requiring that the entries be in main memory and not stored in dedicated memory, making access to these entries prohibitively slow. To speed address translation in such a scheme, high-speed memories called the translation lookaside buffers (TLBs) and the segment lookaside buffers (SLBs) are commonly used to cache most recently used entries for quick access by the computer , If a required entry is not stored in a TLB or SLB, this results in a performance penalty when loading the entry from main memory; Usually, however, the hit rate in TLBs and SLBs is extremely high and the penalty associated with loading entries from main memory is more than offset by the performance gains when entries can be accessed directly from the TLB and SLB.

Bei noch anderen Architekturen kann eine zusätzliche Ebene der Zwischenspeicherung verwendet werden, um die Leistung weiter zu beschleunigen, indem eine ERAT-Tabelle für die Umsetzung von effektiven in reale Adressen bereitgestellt wird, die Einträge enthält, welche direkte Zuordnungen zwischen effektiven und realen Adressen ermöglichen. Somit enthält eine ERAT-Tabelle praktisch Informationen aus dem SLB sowie dem TLB, um die Durchführung von zwei Umsetzungsstufen überflüssig zu machen. Bei manchen Architekturen werden jeweils getrennte Daten- und Instruktions-ERAT-Tabellen in unmittelbarer Nähe der Instruktions- und Datenverarbeitungslogik in einem Prozessor bereitgestellt, um die Auswirkungen der Adressumsetzung auf die kritischen Leistungspfade in dem Prozessor zu minimieren.In still other architectures, an additional level of caching may be used to further speed performance by providing an ERAT table for the conversion from effective to real addresses containing entries that allow direct mappings between effective and real addresses. Thus, an ERAT table contains practically information from the SLB as well as the TLB to make the implementation of two stages of implementation superfluous. In some architectures, separate data and instruction ERAT tables are provided in close proximity to the instruction and data processing logic in a processor to minimize the effects of address translation on the critical power paths in the processor.

Ursprünglich basierte das Paging auf festen Seitengrößen, z.B. 4K oder 4096 adressierbaren Speicherplätzen pro Seite. Bei Verwendung der Segmentierung können jedoch verschiedene Seitengrößen in verschiedenen Segmenten unterstützt werden. Kleinere Seitengrößen sind für eine effiziente Nutzung eines Hauptspeichersystems oftmals optimal, insbesondere, wenn viele Prozesse gleichzeitig in einem Computer ausgeführt werden. Da der Speicherbedarf von Computern und den darauf laufenden Programmen jedoch weiterhin zunimmt, nimmt auch die Anzahl der Hauptspeicherseiten, die von einem bestimmten Prozess oder Programm benötigt werden, zu und folglich können umfangreichere Seitengrößen für viele Situationen effizienter sein.Originally, paging was based on fixed page sizes, e.g. 4K or 4096 addressable memory locations per page. However, when using the segmentation, different page sizes in different segments can be supported. Smaller page sizes are often optimal for efficient use of a main memory system, especially when many processes are running simultaneously in a computer. However, as the memory requirements of computers and the programs running on them continue to increase, so does the number of main memory pages needed by a particular process or program, and consequently, larger page sizes can be more efficient for many situations.

Bei vielen Architekturen müssen große Seiten, d.h. Seiten, die größer als 4K-Seiten sind, zum Zeitpunkt des Urladens zugeordnet werden. Um diese Notwendigkeit einer Vorabzuordnung zu vermeiden, realisieren einige Betriebssysteme „transparente“ riesige Seiten, wobei versucht wird, sequenzielle Seiten zusammenzutragen und eine Umsetzung in eine große Seite vorzunehmen. Im Allgemeinen ist sich ein Betriebssystem jedoch nicht der Möglichkeit der Zuordnung von großen Seiten bewusst und nimmt standardmäßig Zuordnungen von 4K-Seiten vor.In many architectures, large pages, i. Pages that are larger than 4K pages can be assigned at the time of booting. To avoid this need for pre-allocation, some operating systems implement "transparent" huge pages, trying to collate sequential pages and translate into a large page. In general, however, an operating system is unaware of the ability to map large pages, and by default assigns 4K pages.

KURZDARSTELLUNGSUMMARY

Gemäß einer Ausführungsform der vorliegenden Erfindung kann ein Seitenfehler in einem Datenverarbeitungssystem von einem Typ, der mehrere HauptspeicherSeitengrößen unterstützt, behandelt werden, indem ein Seitenfehler erkannt wird, der durch Hardware-Umsetzungslogik eines Prozessors erzeugt wurde und zu einer virtuellen Adresse gehört, die von Programmcode angefordert wird, welcher von dem Prozessor ausgeführt wird, anhand der virtuellen Adresse ein Hinweis auf die Seitengröße festgestellt wird, der in ein nicht benutztes und reserviertes Feld der virtuellen Adresse codiert ist, und indem unter Verwendung des festgestellten Hinweises auf die Seitengröße eine Software-Adressumsetzungsoperation für die virtuelle Adresse durchgeführt wird.In accordance with one embodiment of the present invention, a page fault in a data processing system of a type supporting multiple main memory page sizes may be handled by detecting a page fault generated by a processor's hardware translation logic associated with a virtual address requested by program code For example, in response to the virtual address being addressed by the processor, an indication of the page size encoded in an unused and reserved virtual address field is determined and, using the established page size indication, a software address translation operation for the virtual address is performed.

Gemäß einer weiteren Ausführungsform der vorliegenden Erfindung kann ein Programm erstellt werden, indem ein Hinweis auf die Seitengröße in ein nicht benutztes und reserviertes Feld einer von einer Hauptspeicher-Zugriffsinstruktion referenzierten virtuellen Adresse codiert und das Programm mit der Hauptspeicher-Zugriffsinstruktion so erstellt wird, dass, nachdem ein von der Hauptspeicher-Zugriffsinstruktion verursachter Seitenfehler durch Hardware-Umsetzungslogik eines Datenverarbeitungssystems, auf dem das Programm ausgeführt wird, erkannt wurde, der Hinweis auf die Seitengröße bei der Durchführung der Software-Adressumsetzungsoperation verwendet wird.According to another embodiment of the present invention, a program may be created by encoding an indication of the page size into an unused and reserved field of a virtual address referenced by a main memory access instruction and constructing the program with the main memory access instruction such that: after a page fault caused by the main memory access instruction has been detected by hardware translation logic of a data processing system on which the program is executed, the pointer to the page size is used in performing the software address translation operation.

Diese und andere Vorteile und Merkmale, welche die Erfindung kennzeichnen, sind in den hier beigefügten Ansprüchen dargelegt und bilden einen weiteren Teil hiervon. Um die Erfindung sowie die Vorteile und die Zielsetzungen, die durch ihre Verwendung erreicht werden, jedoch besser zu verstehen, sollte auf die Zeichnungen und auf die beigefügte Beschreibung, in der beispielhafte Ausführungsformen der Erfindung aufgezeigt sind, Bezug genommen werden. These and other advantages and features which characterize the invention are set forth in the claims appended hereto and form a further part hereof. However, in order that the invention and the advantages and objectives attained by its use may be better understood, reference should be made to the drawings and the accompanying description, in which exemplary embodiments of the invention are shown.

Figurenlistelist of figures

Ausführungsformen der Erfindung werden nun lediglich beispielhaft mit Bezug auf die beiliegenden Zeichnungen beschrieben, bei denen:

  • die 1A und 1B Blockschaubilder einer beispielhaften Hardware- (1A) und Software-Umgebung (1B) gemäß den verschiedenen hierin beschriebenen Techniken sind;
  • 2 ein Blockschaubild ist, das beispielhafte Hardware- und Software-Entitäten zeigt, die verwendet werden können, um eine Adressumsetzung in der Umgebung der 1A bis 1B durchzuführen;
  • 3 ein Blockschaubild eines beispielhaften Formats einer effektiven Adresse ist, das in der Umgebung der 1A bis 1B verwendet werden kann;
  • 4 ein Ablaufplan ist, der eine beispielhafte Abfolge von Operationen zur Behandlung eines Seitenfehlers in der Umgebung der 1A bis 1B zeigt;
  • 5 ein Ablaufplan ist, der eine beispielhafte Abfolge von Operationen zur Durchführung der Suche nach dem in 4 referenzierten PTE-Block zeigt;
  • 6 ein Ablaufplan ist, der eine beispielhafte Abfolge von Operationen zur Erstellung eines Programms in der Umgebung der 1A bis 1B zeigt.
Embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings, in which:
  • the 1A and 1B Block Diagrams of an Exemplary Hardware ( 1A) and software environment ( 1B) according to the various techniques described herein;
  • 2 FIG. 12 is a block diagram showing exemplary hardware and software entities that may be used to implement address translation in the environment of 1A to 1B perform;
  • 3 is a block diagram of an exemplary format of an effective address that is in the environment of 1A to 1B can be used;
  • 4 FIG. 5 is a flowchart depicting an example sequence of operations for handling a page fault in the environment of 1A to 1B shows;
  • 5 is a flowchart illustrating an exemplary sequence of operations for performing the search for the in 4 referenced PTE block shows;
  • 6 is a flowchart illustrating an exemplary sequence of operations for creating a program in the environment of 1A to 1B shows.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

Nun Bezug nehmend auf die Zeichnungen, in denen gleiche Bezugszahlen in all den diversen Ansichten gleiche Teile bezeichnen, zeigen die 1A bis 1B die wichtigsten Hardware- und Softwarekomponenten in einer Datenverarbeitungsumgebung oder -vorrichtung 100, die der Erfindung entspricht und zur Durchführung einer Hauptspeicher-Adressumsetzung in verschiedenen Cloud- und/oder Nicht-Cloud-Computing-Umgebungen geeignet ist. Wie in 1A gezeigt ist, kann die Vorrichtung 100 ein Datenverarbeitungssystem 102 mit mehreren Knoten enthalten, bei dem die physische Hardware auf eine Vielzahl von physischen Prozessorknoten 104 verteilt ist, die in einer Vielzahl von Hosts oder Computersystemen 106 angeordnet sind, wobei die Hosts 106 in einem oder mehreren Pools 108 angeordnet sind. Jeder Prozessorknoten 104 enthält einen oder mehrere Prozessoren 110, ein oder mehrere Hauptspeichereinheiten 112 und in einigen Ausführungsformen zusätzliche Hardware wie Eingabe-/Ausgabe-/E/A-)Hardware 114 (z.B. ein oder mehrere Eingabe-/Ausgabe-(E/A-)Adapter) und/oder Netzhardware 116. Geeignete Netzfunktionalität (nicht gezeigt) kann ebenfalls verwendet werden, um eine Datenübertragung zwischen den verschiedenen Prozessorknoten 104 und Hosts 106 sowie anderen externen Systemen zu ermöglichen.Referring now to the drawings, in which like reference numerals designate like parts throughout the several views, FIGS 1A to 1B the most important hardware and software components in a computing environment or device 100 consistent with the invention and capable of performing main memory address translation in various cloud and / or non-cloud computing environments. As in 1A shown, the device can 100 a data processing system 102 containing multiple nodes, where the physical hardware on a variety of physical processor nodes 104 is distributed in a variety of hosts or computer systems 106 are arranged, with the hosts 106 in one or more pools 108 are arranged. Every processor node 104 contains one or more processors 110 , one or more main storage units 112 and in some embodiments additional hardware such as input / output / I / O) hardware 114 (eg, one or more input / output (I / O) adapters) and / or network hardware 116 , Suitable network functionality (not shown) may also be used to facilitate data transfer between the various processor nodes 104 and hosts 106 and other external systems.

Die Vorrichtung 100 kann mittels einer beliebigen Architektur von mehreren verschiedenen Architekturen, die für die Realisierung einer virtualisierten Umgebung geeignet sind, sowie verschiedener Architekturen, die für nicht virtualisierte Umgebungen geeignet sind, darunter sowohl Mehrbenutzer- als auch Einzelbenutzer-Umgebungen sowie eingebettete Umgebungen realisiert werden. Folglich kann die Vorrichtung 100 auch verschiedene Desktop-Computer, Supercomputer, Server, Laptop-Computer, Tablet-Computer, mobile Geräte und andere programmierbare elektronische Geräte usw. darstellen.The device 100 can be implemented using any of a variety of architectures suitable for realizing a virtualized environment, as well as various architectures suitable for non-virtualized environments, including both multi-user and single-user environments, and embedded environments. Consequently, the device can 100 also represent various desktop computers, supercomputers, servers, laptop computers, tablet computers, mobile devices and other programmable electronic devices and so on.

Jeder Prozessor 110 kann als ein Einzelthread- oder Multithread-Prozessor und/oder als ein Einzel- oder Mehrkernprozessor realisiert sein, während jeder Hauptspeicher 112 als ein Hauptspeicher aufgefasst werden kann, der eine oder mehrere Ebenen von Speichereinheiten, z.B. einen DRAM-basierten Hauptspeicher, sowie eine oder mehrere Ebenen von Daten-, Instruktions- und/oder Kombinationscachespeichern enthalten kann, wobei bestimmte Cachespeicher entweder einzelne Prozessoren oder mehrere Prozessoren bedienen, wie in der Technik hinlänglich bekannt ist. Überdies kann der Hauptspeicher der Vorrichtung 100 als ein Hauptspeicher aufgefasst werden, der Hauptspeicher, welcher sich physisch an einem anderen Ort in der Vorrichtung 100 befindet, z.B. einen beliebigen Cachespeicher in einem Prozessor, sowie eine beliebige Speicherkapazität enthält, die als ein virtueller Hauptspeicher verwendet wird, wie sie beispielsweise auf einer Massenspeichereinheit oder auf einem anderen Computer, der mit der Vorrichtung 100 verbunden ist, gespeichert ist.Every processor 110 can be implemented as a single thread or multithread processor and / or as a single or multi-core processor, while each main memory 112 may be construed as a main memory, which may include one or more levels of storage devices, eg, a DRAM-based main memory, and one or more levels of data, instruction, and / or combination cache memories, with certain caches serving either single processors or multiple processors as is well known in the art. Moreover, the main memory of the device 100 as a main memory, the main memory which physically resides elsewhere in the device 100 For example, it may contain any cache memory in a processor as well as any storage capacity used as a virtual memory, such as on a mass storage device or on another computer connected to the device 100 connected is stored.

Die Vorrichtung 100 wird von einem oder mehreren Kernels, Hypervisoren, Betriebssystemen usw. gesteuert betrieben und führt verschiedene Computer-Softwareanwendungen, Komponenten, Programme, Objekte, Module, Datenstrukturen usw. aus oder beruht andernfalls auf verschiedenen Computer-Softwareanwendungen, Komponenten, Programmen, Objekten, Modulen, Datenstrukturen usw., wie nachstehend ausführlicher beschrieben wird. Darüber hinaus können auch verschiedene Anwendungen, Komponenten, Programme, Objekte, Module usw. auf einem oder mehreren Prozessoren in einem weiteren Computer ausgeführt werden, der über ein Netzwerk, z.B. in einer verteilten oder Client-Server-Datenverarbeitungsumgebung, mit der Vorrichtung 100 verbunden ist, wobei die für die Ausführung der Funktionen eines Computerprogramms erforderliche Verarbeitung mehreren Computern über ein Netzwerk zugeordnet werden kann. The device 100 is operated by one or more kernels, hypervisors, operating systems, etc., and executes various computer software applications, components, programs, objects, modules, data structures, etc. or otherwise relies upon various computer software applications, components, programs, objects, modules, Data structures, etc., as described in more detail below. In addition, various applications, components, programs, objects, modules, etc., may also be executed on one or more processors in another computer that communicates with the device over a network, eg, in a distributed or client-server computing environment 100 wherein the processing required to perform the functions of a computer program can be assigned to multiple computers via a network.

Zum Beispiel zeigt 1B verschiedene Softwarekomponenten 118 bis 132, die sich in einem Host 106 in der Vorrichtung 100 befinden können. Ein Hypervisor oder Virtual Machine Monitor (VMM) 118 kann eine oder mehrere virtuelle Maschinen (VMs) 120 hosten und jeder virtuellen Maschine 120 einen Teil der physischen Hardware-Ressourcen des Hosts 106 (z.B. Prozessor-, Hauptspeicher- und/oder E/A-Ressourcen, die zu einem oder mehreren Prozessorknoten 104 gehören), die hiervon einem oder mehreren virtuellen Prozessoren (VPs) 122, einem virtuellen Hauptspeicher (VMem) 124 und virtuellen Eingabe-/Ausgabe-(VIO-)Ressourcen 126 dargestellt werden, zuordnen. Jede virtuelle Maschine 120 kann wiederum ein Betriebssystem 128 und optional Middleware 130 sowie einen oder mehrere Jobs und/oder Anwendungen 132 hosten. Es dürfte sich verstehen, dass jede virtuelle Maschine 120, die auch als logische Partition, virtueller Server oder virtueller Computer bezeichnet werden kann, in einer Weise betrieben werden kann, die einen separaten physischen Computer emuliert und somit praktisch alle Softwarekomponenten hosten kann, die von einem Computer gehostet werden können.For example, shows 1B different software components 118 to 132 who are in a host 106 in the device 100 can be located. A hypervisor or virtual machine monitor (VMM) 118 can have one or more virtual machines (VMs) 120 host and every virtual machine 120 a portion of the physical hardware resources of the host 106 (For example, processor, memory, and / or I / O resources related to one or more processor nodes 104 belonging to one or more virtual processors (VPs) 122 , a virtual memory (VMem) 124, and virtual input / output (VIO) resources 126. Every virtual machine 120 can turn an operating system 128 and optionally middleware 130 and one or more jobs and / or applications 132 host. It should be understood that every virtual machine 120 , which may also be referred to as a logical partition, virtual server or virtual machine, may be operated in a manner that emulates a separate physical computer and thus can host virtually all software components that can be hosted by a computer.

Zusätzliche Hardware- und/oder Softwarekomponenten können sich ebenfalls in der Vorrichtung 100 befinden, z.B. Massenspeicher-Hardware, externe Eingabe-/Ausgabeeinheiten wie Drucker oder Bildschirme, sowie Verwaltungshardware und/oder -software, z.B. eine Hardware-Managementkonsole (HMC), über die die Hardware- und/oder Softwarekonfiguration der Vorrichtung von einem Administrator verwaltet werden kann. Des Weiteren kann in den gezeigten Ausführungsformen die Anschlussmöglichkeit an ein oder mehrere externe Netzwerke 134 ebenso unterstützt werden wie die Anschlussmöglichkeit an ein oder mehrere Speichersysteme 136 über ein oder mehrere Speicher-Fabrics 138. Virtualisierte Umgebungen können auf zahlreiche Arten realisiert werden und unzählige Hardware- und/oder Softwarevarianten enthalten und somit ist die Erfindung nicht auf die hierin offenbarte spezielle Realisierung beschränkt.Additional hardware and / or software components may also be present in the device 100 For example, mass storage hardware, external input / output devices such as printers or monitors, as well as management hardware and / or software, such as a hardware management console (HMC), through which the hardware and / or software configuration of the device are managed by an administrator can. Furthermore, in the embodiments shown, the possibility of connecting to one or more external networks 134 as well as the possibility to connect to one or more storage systems 136 over one or more storage fabrics 138 , Virtualized environments can be implemented in a number of ways and include myriad hardware and / or software variants, and thus the invention is not limited to the particular implementation disclosed herein.

Es dürfte sich verstehen, dass es sich bei der vorliegenden Erfindung um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln kann. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programminstruktionen gespeichert sind, um einen oder mehrere Prozessoren dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.It should be understood that the present invention may be a system, a method, and / or a computer program product. The computer program product may include computer readable storage media (or media) having computer readable program instructions stored thereon for causing one or more processors to perform aspects of the present invention.

Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Instruktionen zur Verwendung durch ein System zur Ausführung von Instruktionen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Instruktionen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.The computer-readable storage medium may be a physical entity that can retain and store instructions for use by a system for executing instructions. The computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. A non-exhaustive list of more specific examples of the computer readable storage medium include the following: a portable computer diskette, a hard disk, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM) Flash memory), a static random access memory (SRAM), a portable compact disk read only memory (CD-ROM), a DVD (digital versatile disc), a memory stick, a floppy disk, a mechanically coded unit such as for example, punched cards or raised structures in a groove on which instructions are stored, and any suitable combination thereof. A computer-readable storage medium is not to be construed as a transitory signal per se herein, such as radio waves or other free-propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (eg, through a fiber optic cable) guided light pulses) or electrical signals transmitted by a wire.

Hierin beschriebene, durch einen Computer lesbare Programminstruktionen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programminstruktionen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programminstruktionen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.Computer readable program instructions described herein may be transferred from a computer readable storage medium to respective computing / processing units or over a network such as the Internet, a local area network, a wide area network, and / or a wireless network to an external computer or computer external storage unit downloaded become. The network may include copper transmission cables, fiber optic transmission, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each data processing unit receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the corresponding data processing unit.

Bei durch einen Computer lesbaren Programminstruktionen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Instruktionen, ISA-Instruktionen (Instruction-Set-Architecture), Maschineninstruktionen, maschinenabhängige Instruktionen, Mikrocode, Firmware-Instruktionen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programminstruktionen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programm instruktionen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programminstruktionen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.Computer readable program instructions for performing operations of the present invention may include assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, stateful data, or either source code or object code which are written in any combination of one or more programming languages, including object-oriented programming languages such as Java, Smalltalk, C ++, etc. as well as conventional procedural programming languages such as the programming language "C" or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter case, 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 (e.g. Internet using an Internet service provider). In some embodiments, electronic circuits, including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLA), may execute the computer readable program instructions by providing state information of the programmer use computer readable program instructions to personalize the electronic circuits to perform aspects of the present invention.

Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch durch einen Computer lesbare Programminstruktionen ausgeführt werden können.Aspects of the present invention are described herein with reference to flowcharts and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be appreciated that each block of the flowcharts and / or block diagrams, as well as combinations of blocks in the flowcharts and / or block diagrams, may be executed by computer readable program instructions.

Diese durch einen Computer lesbaren Programminstruktionen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Instruktionen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programminstruktionen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Instruktionen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Instruktionen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.These computer readable program instructions may be provided to a processor of a general purpose computer, a special purpose computer, or other programmable data processing device to generate a machine such that the instructions executed via the processor of the computer or other programmable data processing device comprise means for implementing the functions described in U.S. Pat generate the blocks or blocks of the flowcharts and / or block diagrams or graphs defined functions / steps. These computer readable program instructions may also be stored on a computer readable storage medium that may control a computer, programmable computing device, and / or other devices to function in a particular manner such that the computer readable storage medium on which instructions are stored has a manufacturing product, including instructions which implement aspects of the function / step specified in the block (s) of the schedule and / or the block diagrams.

Die durch einen Computer lesbaren Programminstruktionen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Instruktionen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.The computer readable program instructions may also be loaded onto a computer, other programmable data processing device or other device to cause a number of process steps to be performed on the computer or other programmable device or other device to be run on a computer to execute the executed process so that the instructions executed on the computer, other programmable device, or other device implement the functions / steps specified in the block or blocks of the flowcharts and / or the block diagrams.

Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Instruktionen darstellen, die eine oder mehrere ausführbare Instruktionen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computerinstruktionen ausführen.The flowcharts 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 flowcharts or block diagrams may represent a module, segment, or portion of instructions that may contain one or more executable instructions Execution of the specific logical function (s). In some alternative embodiments, the functions indicated in the block may take place in a different order than shown in the figures. For example, two blocks shown in succession may in fact be performed substantially simultaneously, or the blocks may sometimes be executed in reverse order, depending on the functionality involved. It should also be noted that each block of block diagrams and / or schedules, as well as combinations of blocks in the block diagrams and / or schedules, may be implemented by special hardware based systems that perform the designated functions or steps , or perform combinations of specialized hardware and computer instructions.

Ferner können durch einen Computer lesbare Programminstruktionen, von denen eine oder mehrere hierin gemeinsam als „Programmcode“ bezeichnet werden können, hierin basierend auf der Anwendung, in der solche Instruktionen in einer bestimmten Ausführungsform der Erfindung ausgeführt werden, angegeben werden. Es sollte sich jedoch verstehen, dass jedwede bestimmte Programm-Nomenklatur, die sich ergibt, lediglich aus Gründen der Zweckmäßigkeit verwendet wird, und folglich sollte die Erfindung nicht auf eine alleinige Verwendung in einer bestimmten Anwendung, die von dieser Nomenklatur angegeben und/oder durch diese Nomenklatur stillschweigend vorausgesetzt wird, beschränkt sein. In Anbetracht der in der Regel endlosen Anzahl von Arten, in denen Computerprogramme in Routinen, Prozeduren, Methoden, Module, Objekte und dergleichen gegliedert werden können, sowie der verschiedenen Arten, in denen Programmfunktionalität auf verschiedene Softwareschichten aufgeteilt werden kann, die sich in einem typischen Computer befinden (z.B. Betriebssysteme, Bibliotheken, Anwendungsprogrammierschnittstellen (APIs), Anwendungen, Applets, usw.), sollte es sich verstehen, dass die Erfindung nicht auf die hierin beschriebene bestimmte Gliederung und Aufteilung beschränkt ist.Further, computer readable program instructions, one or more of which may be collectively referred to herein as "program code," may be provided herein based on the application in which such instructions are executed in a particular embodiment of the invention. It should be understood, however, that any particular program nomenclature that arises is used for convenience only, and thus the invention should not be construed as a sole use in any particular application specified by and / or by this nomenclature Nomenclature is tacitly assumed to be limited. Given the typically endless number of ways in which computer programs can be organized into routines, procedures, methods, modules, objects, and the like, as well as the various ways in which program functionality can be divided among different software layers resulting in a typical Computers (eg, operating systems, libraries, application programming interfaces (APIs), applications, applets, etc.), it should be understood that the invention is not limited to the particular organization and distribution described herein.

Der Fachmann erkennt, dass die in den 1A und 1B gezeigte beispielhafte Umgebung die vorliegende Erfindung nicht einschränken soll. Tatsächlich erkennt der Fachmann, dass andere alternative Hardware- und/oder Softwareumgebungen verwendet werden können, ohne vom Umfang der Erfindung abzuweichen.The expert recognizes that in the 1A and 1B exemplary environment shown is not intended to limit the present invention. In fact, those skilled in the art will recognize that other alternative hardware and / or software environments may be used without departing from the scope of the invention.

Eingebetteter Hinweis auf die Seitengröße zur SeitenfehlerbehebungEmbedded note on page size for page fault recovery

Die Adressumsetzung wird von den meisten modernen Datenverarbeitungssystemen unterstützt und basiert im Allgemeinen sowohl auf Hardware als auch auf Software, um eine Umsetzung zwischen virtuellem und realem Hauptspeicher zu bewältigen. 2 beispielsweise zeigt die Adressumsetzungsfunktionalität in einem beispielhaften Datenverarbeitungssystem 200. In diesem Datenverarbeitungssystem werden mehrere Seitengrößen ebenso wie die Segmentierung unterstützt, so dass eine zweistufige Umsetzung durchgeführt wird, d.h., zuerst von einer effektiven Adresse in eine virtuelle Adresse und dann von einer virtuellen Adresse in eine reale Adresse. Es dürfte sich jedoch verstehen, dass die Erfindung nicht auf eine zweistufige Umsetzung beschränkt ist und in verschiedenen Umgebungen realisiert werden kann, in denen Adressen zwischen virtuellen und realen Adressräumen umgesetzt werden. Aus diesem Grund bezieht sich die nachstehende Beschreibung auf die Adressen, die von Programminstruktionen referenziert und in Form von „virtuellen Adressen“ in Adressen in einem realen Adressraum umgesetzt werden.Address translation is supported by most modern data processing systems and is generally based on both hardware and software to handle translation between virtual and real memory. 2 For example, address translation functionality in an exemplary data processing system 200 , In this data processing system, multiple page sizes as well as the segmentation are supported, so that a two-stage conversion is performed, ie, first from an effective address to a virtual address and then from a virtual address to a real address. It should be understood, however, that the invention is not limited to a two-stage implementation and can be practiced in various environments in which addresses are translated between virtual and real address spaces. For this reason, the following description refers to the addresses which are referenced by program instructions and translated in terms of "virtual addresses" into addresses in a real address space.

Wie beispielsweise in 2 gezeigt ist, kann eine Hauptspeicherzugriffsanforderung, wie zum Beispiel ein Versuch, von einer virtuellen Hauptspeicheradresse zu lesen oder in eine virtuelle Hauptspeicheradresse zu schreiben, oder eine Anforderung für die Zuordnung von Hauptspeicher zunächst von Hardware-Umsetzungslogik in einem Prozessor 202, z.B. einer Effective-to-Real-Address-Translation-(ERAT-)Einheit 208, verarbeitet werden, die in einigen Ausführungsformen mittels separater datenspezifischer und instruktionsspezifischer Einheiten (dERATs und iERATs) realisiert sein kann. Wenn auf der ERAT 208 ein Treffer stattfindet, kann die Adressumsetzung im Prozessor 202 durchgeführt werden; wenn jedoch ein Fehltreffer stattfindet, wird die Hauptspeicherzugriffsanforderung in der Regel an einen Speichercontroller oder eine Memory Management Unit (MMU) 204 weitergeleitet, der/die sich auf demselben oder einem anderen Chip als der Prozessor 202 befinden kann. Die MMU 204 kann die Anforderung mit Hilfe von Hardware-Umsetzungslogik verarbeiten, die einen oder mehrere Adressumsetzpufferspeicher (TLBs) und/oder Segmentumsetzpufferspeicher (SLBs) 210 enthält. Als Reaktion auf einen Treffer auf dem TLB und/oder SLB 210 kann die Hauptspeicherzugriffsanforderung in der MMU 210 verarbeitet werden; wenn jedoch ein Fehltreffer stattfindet, wird der Software 206, z.B. einem Betriebssystem (OS), Hypervisor, Virtual Machine Monitor, Kernel oder einer anderen Low-Level-Software in einem Datenverarbeitungssystem, im Allgemeinen ein Seitenfehler gemeldet, um auf verschiedene Software-Datenstrukturen, die gemeinsam als Hardware-Seitentabellen (Hardware Page Tables, HPTs) 212 bezeichnet werden, zuzugreifen und auf diese Weise den Seitenfehler zu beheben.Such as in 2 may be a main memory access request, such as an attempt to read from a virtual memory address or to write to a virtual memory address, or a request for the allocation of main memory first of hardware conversion logic in a processor 202 , eg, an Effective-to-Real Address Translation (ERAT) unit 208, which in some embodiments may be implemented by means of separate data-specific and instruction-specific units (DATs and iERATs). If on the ERAT 208 If there is a hit, the address translation in the processor can 202 be performed; however, if a miss occurs, the main memory access request is typically directed to a memory controller or memory management unit (MMU). 204 forwarded to the same or a different chip than the processor 202 can be located. The MMU 204 can process the request using hardware translation logic that includes one or more address translation buffers (TLBs) and / or segment translation buffers (SLBs). 210 contains. In response to a hit on the TLB and / or SLB 210 can the main memory access request in the MMU 210 are processed; however, if a miss occurs, the software becomes 206 For example, an operating system (OS), hypervisor, virtual machine monitor, kernel, or other low-level software in a data processing system, generally reported a page fault to access various software data structures that are collectively known as hardware page tables , HPTs) 212 to access and thus correct the page fault.

Es dürfte sich verstehen, dass jede(r) ERAT 208, SLB/TLB 210 und HPT 212 mindestens Adressumsetzungsdaten enthalten kann, die eine Zuordnung zwischen zwei verschiedenen Adressen, z.B. zwischen einer virtuellen oder effektiven Adresse und einer realen Adresse, vornehmen. In einigen Ausführungsformen können diese Adressumsetzungsdaten als ein Seitentabelleneintrag (page table entry, PTE) realisiert sein und so bezeichnet werden. Es dürfte sich jedoch verstehen, dass PTEs zusätzliche Informationen enthalten können, wie zum Beispiel Schutzdaten, die den Zugriff auf bestimmte Prozesse oder Arten von Prozessen oder auf bestimmte Arten des Zugriffs (z.B. Nur-Lese-Zugriff) beschränken, Statusdaten wie zum Beispiel einen Gültig-/Ungültig-Anzeiger oder einen Geändert-(Dirty-)Anzeiger, Verfolgungsdaten wie zum Beispiel einen Zähler oder LRU-Anzeiger, Daten zur Seitengröße usw. Während die PTEs einer jeden ERAT 208, SLB/TLB 210 und HPT 212 in einigen Ausführungsformen außerdem ähnlich konfiguriert sein können, können die PTEs in weiteren Ausführungsformen auf verschiedenen Ebenen der Hauptspeicherhierarchie voneinander abweichen und unterschiedliche, zusätzliche oder weniger Daten als auf anderen Ebenen enthalten, so dass Verweise auf eine PTE oder virtuelle/effektive Adresse, die zwischen verschiedenen Ebenen einer Hauptspeicherhierarchie weitergegeben werden, eine Änderung von Daten, eine Ergänzung um zusätzliche Daten und/oder ein Verwerfen von Daten, die zu einer PTE oder einer virtuellen/effektiven Adresse gehören, in Verbindung mit dem Formatieren der PTE oder virtuellen/effektiven Adresse in ein Format, das für die jeweilige Datenstruktur geeignet ist, welche auf dieser Ebene der Hierarchie realisiert ist, einschließen. It should be understood that each ERAT 208 , SLB / TLB 210 and HPT 212 may contain at least address translation data that make an association between two different addresses, eg between a virtual or effective address and a real address. In some embodiments, this address translation data may be implemented as a page table entry (PTE) and so designated. It should be understood, however, that PTEs may include additional information, such as protection data that limits access to certain processes or types of processes or to certain types of access (eg, read-only access), status data such as valid / Invalid indicator or a dirty indicator, tracking data such as a counter or LRU indicator, page size data, etc. While the PTEs of each ERAT 208 , SLB / TLB 210 and HPT 212 In some embodiments, the PTEs may also be similarly configured at different levels of the main memory hierarchy and contain different, additional or less data than at other levels, such that references to a PTE or virtual / effective address between different ones Layers of a main memory hierarchy are passed on, a change of data, an addition to additional data and / or a discard of data belonging to a PTE or a virtual / effective address in connection with the formatting of the PTE or virtual / effective address Format suitable for the particular data structure realized at this level of the hierarchy.

Es dürfte sich verstehen, dass in verschiedenen Ausführungsformen der Erfindung eine große Vielfalt an Adressumsetzungsimplementierungen verwendet werden kann und die Erfindung somit nicht auf die Implementierung von 2 beschränkt ist. Zum Beispiel kann in Non-Uniform Memory-Access-(NUMA-)Umgebungen, Mehrkernumgebungen und anderen Umgebungen Adressumsetzungslogik und/oder -funktionalität über ein ganzes Datenverarbeitungssystem hinweg anders verteilt werden und verschiedene Kombinationen von Datenstrukturen, Pufferspeichern, Tabellen usw. können verwendet werden, um Adressumsetzungsdaten oder PTEs zur Verwendung durch die Adressumsetzungsfunktionalität eines Datenverarbeitungssystems in Einklang mit der Erfindung zu halten. Die HPT 212 beispielsweise kann in einigen Ausführungsformen in einem Versuch, die Latenzzeit zu minimieren, welche mit Adressumsetzungsoperationen verbunden ist, die keinen Treffer auf der Hardware-Umsetzungslogik landen, mittels mehrerer Tabellen, mehrstufiger Tabellen, verschachtelter Tabellen, virtualisierter Tabellen realisiert sein. Es dürfte sich auch verstehen, dass die mit der Durchführung von Adressumsetzungsoperationen verbundene Latenzzeit in einigen Ausführungsformen aufgrund der Notwendigkeit, dass möglicherweise auf mehrere Datenstrukturen zugegriffen werden muss, sowie der möglichen Notwendigkeit, diese Datenstrukturen aus dem langsameren Hauptspeicher oder gar Massen- oder persistenten Speicher abrufen zu müssen, unterschiedlich sein kann.It should be understood that in various embodiments of the invention, a wide variety of address translation implementations may be used, and thus the invention is not limited to the implementation of 2 is limited. For example, in non-uniform memory access (NUMA) environments, multi-core environments and other environments, address translation logic and / or functionality may be redistributed throughout an entire data processing system and various combinations of data structures, buffers, tables, etc. may be used. to hold address translation data or PTEs for use by the address translation functionality of a data processing system in accordance with the invention. The HPT 212 For example, in some embodiments, in an attempt to minimize the latency associated with address translation operations that do not hit the hardware translation logic, multiple tables, multi-level tables, nested tables, virtualized tables may be implemented. It should also be understood that in some embodiments, the latency associated with performing address translation operations may be due to the need to potentially access multiple data structures and the potential need to retrieve these data structures from the slower main memory or even mass or persistent memory to be able to be different.

Es dürfte sich außerdem verstehen, dass in verschiedenen Ausführungsformen der Erfindung mehrere Seitengrößen unterstützt werden können. Im Allgemeinen können Seiten, die eine Standardgröße (z.B. 4K oder 4096 Byte in einigen Ausführungsformen) überschreiten, als große oder riesige Seiten bezeichnet werden. Große Seiten können beispielsweise bei einigen Arten von Arbeitslasten nützlich sein, z.B., wenn ein Programm eine verhältnismäßig große Menge an zusammenhängenden Daten und/oder Instruktionen enthält und/oder wenn häufig und/oder wiederholt auf große Blöcke von Daten zugegriffen wird. Im Gegensatz dazu bieten kleinere Seitengrößen bei anderen Arbeitslasten, z.B. Arbeitslasten, bei denen Hauptspeicherzugriffe verteilter und zufälliger sind, gegebenenfalls eine bessere Leistung.It should also be understood that various page sizes may be supported in various embodiments of the invention. In general, pages that exceed a standard size (e.g., 4K or 4096 bytes in some embodiments) may be referred to as large or giant pages. For example, large pages may be useful in some types of workloads, such as when a program contains a relatively large amount of contiguous data and / or instructions and / or when large and large blocks of data are accessed frequently and / or repeatedly. In contrast, smaller page sizes on other workloads, e.g. Workloads where main memory accesses are more distributed and random may perform better.

Bei einigen herkömmlichen Ansätzen müssen Seiten, die eine Standardgröße überschreiten, zum Zeitpunkt des Urladens zugeordnet werden, während bei anderen herkömmlichen Ansätzen eine Vorabzuordnung durch die Verwendung von „transparenten“ riesigen Seiten vermieden werden kann, wobei ein Betriebssystem oder eine ähnliche Software versucht, sequenzielle Seiten zusammenzutragen und Umsetzungen in eine große oder riesige Seite vorzunehmen. Im Allgemeinen sind dem Betriebssystem Bedingungen, die für die Verwendung von großen oder riesigen Seiten besonders geeignet sind, jedoch nicht bekannt, so dass die Möglichkeit von Betriebssystemen und anderer softwarebasierter Adressumsetzungslogik, verschiedene Größen von Seiten intelligent zuzuordnen, um verschiedenen Arten von Arbeitslasten oder Szenarien Rechnung zu tragen, in der Regel beschränkt ist.In some conventional approaches, pages that exceed a standard size must be allocated at the time of boot, while in other conventional approaches pre-allocation can be avoided through the use of "transparent" giant pages, with an operating system or similar software attempting sequential pages to put together and implement in a large or huge page. In general, however, conditions that are particularly suited to the use of large or giant pages are not known to the operating system, so the ability of operating systems and other software-based address translation logic to intelligently map different sizes of pages accounts for different types of workloads or scenarios to wear, is usually limited.

Der Erfindung entsprechende Ausführungsformen können jedoch verwendet werden, um die Zuordnung von Hauptspeicher und die Behandlung von Seitenfehlern in einem Datenverarbeitungssystem zu optimieren, indem einem Betriebssystem, Hypervisor/VM-Manager oder anderer in Software ausgeführter Seitenfehler-Behandlungslogik in einem Datenverarbeitungssystem Hinweise auf die Seitengröße bereitgestellt werden. Die Hinweise auf die Seitengröße können beispielsweise in virtuelle Adressen, die von Programmcode-Instruktionen in einem Programm angefordert werden, das in einem solchen Datenverarbeitungssystem ausgeführt wird, und insbesondere in reservierten und/oder nicht benutzten Feldern der virtuellen Adressen eingebettet sein. Die Hinweise auf die Seitengröße können dann von in Software ausgeführter Seitenfehler-Behandlungslogik gelesen werden, um die aufgrund einer Hauptspeicherzugriffsanforderung zugeordnete Seitengröße zu steuern und/oder um die Suche nach Adressumsetzungsdaten aus einer oder mehreren Hardware-Seitentabellen aufgrund einer Hauptspeicheranforderung zu optimieren.However, embodiments consistent with the invention may be used to optimize the allocation of main memory and the handling of page faults in a data processing system by providing page size information to an operating system, hypervisor / VM manager, or other software executed page fault handling logic in a data processing system become. The pointers to the page size may be, for example, virtual addresses requested by program code instructions in a program executed in such a data processing system, and more particularly in reserved and / or unused virtual address fields be embedded. The page size indications may then be read by software executed page fault handling logic to control the page size associated with a main memory access request and / or to optimize the search for address translation data from one or more hardware page tables due to a main memory request.

In einigen der Erfindung entsprechenden Ausführungsformen beispielsweise kann ein von Hardwareumsetzungslogik eines Prozessors erzeugter Seitenfehler von einer Software-Seitenfehlerbehandlungsroutine erkannt werden, ein in ein nicht benutztes und reserviertes Feld der virtuellen Adresse codierter Hinweis auf die Seitengröße kann festgestellt werden und dann kann eine Software-Adressumsetzungsoperation für die virtuelle Adresse unter Verwendung des festgestellten Hinweises auf die Seitengröße durchgeführt werden. Wie nachstehend deutlicher erkennbar werden wird, wird dabei in einigen Ausführungsformen ermöglicht, dass ein Hinweis auf die Seitengröße von einem ausführenden Programm nahtlos an eine Software-Seitenfehlerbehandlungsroutine übertragen werden kann, um Hauptspeicher-Zuordnungen und/oder Adressumsetzungen zu beschleunigen, indem die Latenzzeit, die mit dem Zugriff auf Datenstrukturen wie Hardware-Seitentabellen und dergleichen verbunden ist, teilweise verringert wird.For example, in embodiments consistent with the invention, a page fault generated by a processor's hardware translation logic may be recognized by a software page fault handler, a page size indication encoded into an unused and reserved virtual address field may be detected, and then a software address translation operation may be performed the virtual address is made using the noted page size indication. As will become more apparent below, in some embodiments, an indication of the page size from an executing program may be seamlessly transferred to a software page fault handler to expedite main memory allocations and / or address translations by increasing the latency, the associated with the access to data structures such as hardware page tables and the like is partially reduced.

In dieser Hinsicht kann Hardware-Umsetzungslogik so aufgefasst werden, dass sie verschiedene Arten von in Hardware ausgeführter Adressumsetzungsfunktionalität beinhaltet, die z.B. in einem Prozessor, Prozessorkern, Speichercontroller, einer Hauptspeicherverwaltungseinheit, einem Cache-Controller usw. realisiert sein und verschiedene Datenstrukturen wie ERATs, SLBs, TLBs oder dergleichen enthalten kann. Ebenso kann eine Software-Seitenfehlerbehandlungsroutine so aufgefasst werden, dass sie verschiedene Arten von in Software ausgeführter Adressumsetzungsfunktionalität beinhaltet, die z.B. in einem Betriebssystem, Kernel, Hypervisor, Virtual Machine Monitor oder anderer Low-Level-Software realisiert sein kann, um auf verschiedene Arten von Umsetzungsdatenstrukturen, darunter verschiedene Arten von Seitentabellen, zuzugreifen.In this regard, hardware translation logic may be construed to include various types of hardware implemented address translation functionality, e.g. in a processor, processor core, memory controller, main memory management unit, cache controller, etc., and may include various data structures such as ERATs, SLBs, TLBs, or the like. Similarly, a software page fault handler may be considered to include various types of software implemented address translation functionality, e.g. may be implemented in an operating system, kernel, hypervisor, virtual machine monitor, or other low-level software to access various types of translation data structures, including various types of page tables.

Eine Software-Seitenfehlerbehandlungsroutine kann in einigen Ausführungsformen so konfiguriert sein, dass sie verschiedene Arten von Software-Adressumsetzungsoperation realisiert. Eine Art einer Software-Adressumsetzungsoperation, die durchgeführt werden kann, ist eine Suche nach einem Seitentabelleneintrag oder anderen Adressumsetzungsdaten zur Verwendung bei der Durchführung einer Adressumsetzung von einer virtuellen Adresse in eine reale Adresse. Eine andere Art einer Software-Adressumsetzungsoperation, die durchgeführt werden kann, ist die Zuordnung einer neuen Hauptspeicherseite, z.B., aufgrund der Feststellung, dass eine angeforderte virtuelle Adresse noch nicht auf eine reale Adresse abgebildet wurde und noch keine Hauptspeicherseite für diese virtuelle Adresse zugeordnet wurde. Zusätzliche Software-Adressumsetzungsoperationen können verschiedene Verwaltungsoperationen wie das Ändern von Hauptspeicherseiten oder das Aufheben der Zuordnung von Hauptspeicherseiten, das Aus- und Wiedereinlagern von Hauptspeicherseiten in den und aus dem Hauptspeicher usw. beinhalten.A software page fault handler may, in some embodiments, be configured to implement various types of software address translation operation. One type of software address translation operation that may be performed is a search for a page table entry or other address translation data for use in performing an address translation from a virtual address to a physical address. Another type of software address translation operation that can be performed is the allocation of a new main memory page, e.g., based on the determination that a requested virtual address has not yet been mapped to a real address and no main memory page has yet been allocated for that virtual address. Additional software address translation operations may include various management operations, such as changing main memory pages or de-allocating main memory pages, dumping main memory pages to and from main memory, and so on.

Wenn wir uns nun 3 zuwenden, ist bei 220 ein beispielhaftes Format einer effektiven oder virtuellen Adresse gezeigt, das sich zur Verwendung in Verbindung mit der Übertragung von Hinweisen auf die Seitengröße eignet. Im Einzelnen stellt das Format 220 ein beliebiges von mehreren typischen Adressformaten dar, die in Verbindung mit einigen Ausführungsformen der Erfindung verwendet werden können, welches ein Offset-Feld 222, das einen Offset in eine Hauptspeicherseite darstellt, die der effektiven oder virtuellen Adresse entspricht, sowie ein Index- und Tag-Feld 224 und 226 enthält, die zusammen eine eindeutige Kennung für eine virtuelle Seite darstellen. Das Index-Feld 224 beispielsweise kann verwendet werden, um eine Datenstruktur zu adressieren, die PTEs enthält, wobei das Tag-Feld 226 verwendet wird, um die indexierte Seite von anderen Seiten zu unterscheiden, die auf denselben Index abgebildet sind. In einigen Ausführungsformen kann das Tag-Feld 226 weggelassen werden, da das Index-Feld 224 ausreicht, um die Seite in einer Datenstruktur zu adressieren.If we now 3 turn to is at 220 an exemplary format of an effective or virtual address that is suitable for use in connection with the transmission of pointers to the page size. Specifically, the format represents 220 is any of several typical address formats that may be used in conjunction with some embodiments of the invention that include an offset field 222 which represents an offset into a main memory page corresponding to the effective or virtual address, as well as an index and tag field 224 and 226 contains, which together represent a unique identifier for a virtual page. The index field 224 for example, it can be used to address a data structure that contains PTEs, where the tag field 226 is used to distinguish the indexed page from other pages mapped to the same index. In some embodiments, the tag field 226 be omitted because the index field 224 sufficient to address the page in a data structure.

Das Format 220 kann optional auch ein oder mehrere Flags 228 enthalten, die Informationen wie Statusinformationen, Zugriffssteuerungsinformationen oder andere Informationen bereitstellen, wie der Fachmann verstehen wird, der über die aktuelle Offenbarung verfügt.The format 220 can optionally also have one or more flags 228 which provide information such as status information, access control information, or other information, as understood by those skilled in the art having the current disclosure.

Das Format 220 kann auch ein reserviertes Feld 230 beinhalten, das ein oder mehrere Bits enthält, die nicht verwendet werden und reserviert sind. Nicht benutzt und reserviert im Kontext der Erfindung bezieht sich auf ein Feld in einer virtuellen oder effektiven Adresse, das von dem System ausdrücklich zur zukünftigen Verwendung reserviert wird und das für Adressumsetzungszwecke oder andernfalls für die Adressierung eines Speicherplatzes im Hauptspeicher nicht benutzt wird. Es ist daher im reservierten Feld 230, wo ein Hinweis auf die Seitengröße in Ausführungsformen, die der Erfindung entsprechen, codiert sein kann.The format 220 can also be a reserved field 230 include one or more bits that are not used and reserved. Unused and reserved in the context of the invention refers to a field in a virtual or effective address that is expressly reserved by the system for future use and that is not used for address translation purposes or otherwise for addressing a memory location in main memory. It is therefore in the reserved field 230 where an indication of page size may be encoded in embodiments consistent with the invention.

Als eine beispielhafte Realisierung werden im Falle einer 64-Bit-Radix-Umsetzung, wie sie z.B. in der Power8-Architektur realisiert ist, 10 Bits (z.B. die Bits 2 bis 11, Big Endian, oder die Bits 61 bis 52, Little Endian) von der Architektur reserviert und zum Zweck der Adressumsetzung oder andernfalls zum Zweck der Referenzierung von Hauptspeicher nicht benutzt. In einer beispielhaften Ausführungsform können ein oder mehrere Bits dieses Feldes verwendet werden, um Hinweise auf die Seitengröße bereitzustellen, wie in der nachstehenden Tabelle I gezeigt ist. Tabelle I: Codierung von Hinweisen auf die Seitengröße Verschachtle Maskenbits der Umsetzungs-Seitengröße: 0x3100000000000000 # Maskiere Bits, um die Seitengröße einer Adresse zu kennen Verschachtle Off-Maskenbit der Umsetzung: 0x0000000000000000 # 4K-Seitenzuordnung Verschachtle 4K-Maskenbit der Umsetzung: 0x0800000000000000 # 64 K-Seitenzuordnung Verschachtle 64K-Maskenbit der Umsetzung: 0x1000000000000000 # 2MB-Seitenzuordnung. Im Falle von Hash bedeutet dies, dass wir MPSS 4K/64K sind. Verschachtle 16MB-Maskenbit der Umsetzung: 0x1100000000000000 # 16MB-Seitenzuordnung Verschachtle Off-Maskenbit der Umsetzung: 0x2000000000000000 # 16GB-Seitenzuordnung Verschachtle Off-Maskenbit der Umsetzung: 0x2100000000000000 # Reserviert für zukünftige Codierungen Verschachtle Off-Maskenbit der Umsetzung: 0x300000000000000 # Reserviert für zukünftige Codierungen Verschachtle Off-Maskenbit der Umsetzung: 0x310000000000000 # Reserviert für zukünftige Codierungen As an exemplary implementation, in the case of a 64-bit radix conversion, as implemented, for example, in the Power8 architecture, 10 bits (eg, the bits 2 to 11 , Big Endian, or the bits 61 to 52 , Little Endian) reserved by the architecture and not used for the purpose of address translation or otherwise for the purpose of referencing main memory. In an exemplary embodiment, one or more bits of this field may be used to provide page size indications, as shown in Table I below. Table I: Encoding hints on page size Nesting mask bits of the translation page size: 0x3100000000000000 # Mask bits to know the page size of an address Verschachtle off-mask bit of implementation: 0x0000000000000000 # 4K page assignment Verschachtle 4K mask bit of implementation: 0x0800000000000000 # 64 K page assignment Verschachtle 64K mask bit of implementation: 0x1000000000000000 # 2MB page assignment. In the case of hash, this means that we are MPSS 4K / 64K. Verschachtle 16MB mask bit of implementation: 0x1100000000000000 # 16MB page assignment Verschachtle off-mask bit of implementation: 0x2000000000000000 # 16GB page assignment Verschachtle off-mask bit of implementation: 0x2100000000000000 # Reserved for future encodings Verschachtle off-mask bit of implementation: 0x300000000000000 # Reserved for future encodings Verschachtle off-mask bit of implementation: 0x310000000000000 # Reserved for future encodings

Bei der vorstehenden Codierung kann eine effektive Adresse eine Konvention für Compiler, Bindelader (Linker) und Anwendungen werden, um eine Anforderung für eine Umsetzung an ein Betriebssystem oder eine andere softwarebasierte Adressumsetzungsfunktionalität zu stellen. Ferner kann diese Codierung in einigen Ausführungsformen in eine Kopfdatei eingebunden und für neue Kompilierungen eines Betriebssystems, Compilers, Bindeladers und/oder einer Anwendung geändert werden.In the above coding, an effective address may become a convention for compilers, linkers, and applications to make a request for translation to an operating system or other software-based address translation functionality. Further, in some embodiments, this encoding may be incorporated into a header file and changed for new compilations of an operating system, compiler, bind loader, and / or application.

Es dürfte sich verstehen, dass Werte ungleich null im reservierten Feld 230 in einigen Ausführungsformen zu einer Bestätigung einer unzulässigen Adressbedingung durch eine Hauptspeicherverwaltungseinheit oder andere Hardware-Umsetzungslogik führen können. Herkömmlicherweise führt eine solche Bedingung im Allgemeinen dazu, dass ein Betriebssystem eine Anwendung oder einen Einheitentreiber beendet. In einigen Ausführungsformen kann diese Bedingung jedoch erfasst und verwendet werden, um einen Hinweis auf die Seitengröße zum Zweck der Adressumsetzung bereitzustellen. In einigen Ausführungsformen kann die Hardware-Umsetzungslogik auch einen konfigurierbaren Modus beinhalten, der aktiviert oder deaktiviert werden kann, um zu verhindern, dass die Bedingung gemeldet wird (d.h. so, dass die Hardware-Umsetzungslogik die Bits ungleich null einfach ignoriert). Folglich kann der Modus der Hardware-Umsetzungslogik bei Verwendung von Hinweisen auf die Seitengröße entsprechend gesetzt werden.It should be understood that non-zero values in the reserved field 230 in some embodiments, may result in acknowledgment of an invalid address condition by a memory controller or other hardware translation logic. Conventionally, such a condition generally results in an operating system terminating an application or device driver. However, in some embodiments, this condition may be detected and used to provide an indication of page size for the purpose of address translation. In some embodiments, the hardware translation logic may also include a configurable mode that may be enabled or disabled to prevent the condition from being reported (ie, such that the hardware translation logic simply ignores the non-zero bits). Consequently, the mode of hardware translation logic may be set accordingly using page size hints.

Wenn wir uns nun 4 zuwenden, zeigt diese Figur eine Abfolge von Operationen 250 für eine Software-Seitenfehlerbehandlungsroutine, die eine in Software ausgeführte Seitenfehler-Behandlungslogik realisiert, welche Unterstützung für Hinweise auf die Seitengröße in einer der Erfindung entsprechenden Weise enthält. Diese Abfolge von Operationen kann zum Beispiel aufgrund der Bestätigung eines Seitenfehlers durch Hardware-Umsetzungslogik gestartet und in einem Betriebssystem, Hypervisor, Virtual Machine Monitor, Kernel oder anderer Low-Level-Software durchgeführt werden. Überdies führt die Abfolge 250 eine automatische Zuordnung von neuen Hauptspeicherseiten aufgrund von Seitenfehlern durch, die zu effektiven Adressen gehören, welche noch nicht zugeordnet wurden, obgleich es sich verstehen dürfte, dass die Hauptspeicherzuordnung in weiteren Ausführungsformen von der Seitenfehlerbehandlung getrennt vorgenommen werden kann.If we now 4 Turning to this figure shows a sequence of operations 250 for a software page fault handler that implements software executed page fault handling logic that includes support for page size indications in a manner consistent with the invention. This sequence of operations may be started, for example, due to the acknowledgment of a page fault by hardware conversion logic, and performed in an operating system, hypervisor, virtual machine monitor, kernel, or other low-level software. Moreover, the sequence leads 250 automatically allocating new main memory pages due to page faults associated with effective addresses that have not yet been allocated, although it should be understood that in other embodiments, the main memory allocation may be made separate from the page fault handling.

Die Abfolge 250 wird mit einer virtuellen Adresse, z.B. einer effektiven Adresse, übergeben und beginnt im Block 252, indem nach einem passenden Seitentabelleneintrag in einer oder mehreren Datenstrukturen gesucht wird, welche die Hardware-Seitentabelle für die Umgebung realisieren. Stellt man die mit der Suche nach einem passenden Seitentabelleneintrag verbundenen Operationen für den Moment zurück (die nachstehend in Verbindung mit 5 beschrieben werden), schaltet die Steuerung als Nächstes zum Block 254, wo festgestellt wird, ob ein passender Seitentabelleneintrag gefunden wurde. Wenn ja, schaltet die Steuerung zum Block 256, um den aufgefundenen Seitentabelleneintrag zu verwenden, um auf den Seitenfehler in einer Weise zu reagieren, die für den Fachmann offensichtlich ist, der über die aktuelle Offenbarung verfügt. Wenn jedoch keiner gefunden wird, übergibt der Block 254 die Steuerung an den Block 258, um auf ein oder mehrere der reservierten Bits der effektiven Adresse zuzugreifen, um festzustellen, ob ein Hinweis auf die Seitengröße in die effektive Adresse codiert wurde, z.B., durch das Anwenden einer Maske und die Feststellung, ob irgendwelche der nicht maskierten Bits Werte ungleich null haben. Wenn die nicht maskierten Bits alle den Wert null haben, übergibt der Block 260 die Steuerung an den Block 262, um der effektiven Adresse eine neue Hauptspeicherseite, die eine Standard-Hauptspeicherseitengröße aufweist, zuzuordnen, da in der effektiven Adresse kein Hinweis auf die Seitengröße codiert ist. Die Zuordnung einer neuen Hauptspeicherseite kann sowohl das Reservieren einer Hauptspeicherseite für den Prozess, indem ein neuer Seitentabelleneintrag für die Hauptspeicherseite erstellt wird, als auch das Aus- und Wiedereinlagern dieser Seite in den bzw. aus dem Hauptspeicher oder andere Operationen oder Kombinationen von Operationen beinhalten, die für den Fachmann offensichtlich sind, der über die aktuelle Offenbarung verfügt. Insbesondere im Falle von Hardware-Seitentabellen, die mehrere seitengrößenspezifische Datenstrukturen enthalten, welche unterschiedlichen Seitengrößen entsprechen, kann das Erstellen eines neuen Seitentabelleneintrags das Erstellen des neuen Seitentabelleneintrags in einer Datenstruktur umfassen, die für die Standardseitengröße spezifisch ist. The sequence 250 is passed with a virtual address, eg an effective address, and starts in the block 252 by searching for a matching page table entry in one or more data structures that implement the hardware page table for the environment. For the moment, return the operations associated with finding a matching page table entry (discussed below in connection with 5 the controller next switches to the block 254 where it is determined if a matching page table entry was found. If so, the controller switches to the block 256 to use the found page table entry to respond to the page fault in a manner that will be apparent to those skilled in the art having the current disclosure. However, if none is found, the block passes 254 the controller to the block 258 to access one or more of the reserved bits of the effective address to determine if an indication of page size has been encoded into the effective address, eg, by applying a mask and determining if any of the unmasked bits are non-zero values to have. If the unmasked bits are all zero, the block passes 260 the controller to the block 262 to map a new main memory page that has a default main memory page size to the effective address, since no indication of page size is encoded in the effective address. The assignment of a new main memory page can include both reserving a main memory page for the process by creating a new page table entry for the main memory page, and offloading and restoring that page into main memory or other operations or combinations of operations, that are obvious to those skilled in the art having the current disclosure. In particular, in the case of hardware page tables that contain multiple page size specific data structures that correspond to different page sizes, creating a new page table entry may involve creating the new page table entry in a data structure that is specific to the default page size.

Wenn der Block 260 andererseits feststellt, dass ein Wert ungleich null in den nicht maskierten Bits der effektiven Adresse gespeichert ist, wird ein Hinweis auf die Seitengröße in der effektiven Adresse codiert und die Steuerung schaltet zum Block 264, um festzustellen, ob die angeforderte Hauptspeicherseitengröße des Hinweises auf die Seitengröße zulässig ist. Beispielsweise kann die angeforderte Hauptspeicherseitengröße verweigert werden, wenn das angeforderte Speichervolumen nicht zur Verfügung steht. Wenn sie nicht zulässig ist, schaltet die Steuerung zum Block 262, um die Standardseitengröße zuzuordnen; wenn sie jedoch zulässig ist, schaltet die Steuerung stattdessen zum Block 266, um eine neue Hauptspeicherseite mit der angeforderten Seitengröße zuzuordnen, die von dem Hinweis auf die Seitengröße angegeben wird. In dem Fall beispielsweise, in dem unterschiedliche Datenstrukturen Seitentabelleneinträge halten, die zu verschiedenen Seitengrößen gehören, kann ein neuer Seitentabelleneintrag für die neue Hauptspeicherseite in der Datenstruktur erstellt werden, die für die Seitengröße spezifisch ist, welche von dem Hinweis auf die Seitengröße angegeben wird. Nach erfolgter Ausführung von einem beliebigen der Blöcke 256, 262 oder 266 gilt der Seitenfehler als behandelt und die Abfolge 250 ist abgeschlossen.If the block 260 On the other hand, if it detects that a non-zero value is stored in the non-masked bits of the effective address, an indication of the page size in the effective address is encoded and control goes to the block 264 to determine if the requested memory page size of the page size indication is allowed. For example, the requested memory page size may be denied if the requested amount of memory is unavailable. If it is not allowed, the controller will switch to the block 262 to assign the default page size; however, if allowed, the controller will switch to the block instead 266 to map a new main memory page with the requested page size specified by the page size hint. For example, in the case where different data structures hold page table entries that belong to different page sizes, a new page table entry may be created for the new main memory page in the data structure specific to the page size specified by the page size hint. After execution of any of the blocks 256 . 262 or 266 the page fault is treated as and the sequence 250 is closed.

Somit kann bei der Abfolge 250 ein in eine effektive Adresse codierter Hinweis auf die Seitengröße verwendet werden, um einen neuen Seitentabelleneintrag zu erstellen und eine neue Hauptspeicherseite auf der Grundlage der Seitengröße zuzuordnen, die von dem Hinweis auf die Seitengröße angegeben wird. In einigen Ausführungsformen kann ein Hinweis auf die Seitengröße jedoch verwendet werden, um die Behandlung eines Seitenfehlers für eine Hauptspeicherseite, die bereits zugeordnet worden ist, zu beschleunigen und/oder zu vereinfachen. 5 zeigt beispielsweise eine beispielhafte Abfolge von Operationen zur Durchführung einer Suche nach dem PTE-Block 252 von 4. Es dürfte sich verstehen, dass eine ähnliche Abfolge von Operationen auch in Ausführungen verwendet werden kann, bei denen die Hauptspeicherzuordnung getrennt von der Seitenfehlerbehandlung vorgenommen wird.Thus, in the sequence 250 a page size indication encoded in an effective address is used to create a new page table entry and allocate a new main memory page based on the page size specified by the page size indication. However, in some embodiments, an indication of the page size may be used to speed up and / or simplify the handling of a page fault for a main memory page that has already been allocated. 5 For example, FIG. 10 shows an exemplary sequence of operations for performing a search for the PTE block 252 from 4 , It should be understood that a similar sequence of operations may also be used in implementations where the main memory allocation is made separately from the page fault handling.

Zuerst wird im Block 280 auf eines oder mehrere der reservierten Bits der effektiven Adresse zugegriffen, die in die Seitenfehler-Behandlungsroutine eingegeben wurde, um festzustellen, ob ein Hinweis auf die Seitengröße in die effektive Adresse codiert wurde, z.B. durch das Anwenden einer Maske und die Feststellung, ob irgendwelche der nicht maskierten Bits Werte ungleich null haben. Wenn die nicht maskierten Bits alle den Wert null haben, übergibt der Block 282 die Steuerung an den Block 284, um die verschiedenen Hardware-Seitentabellendatenstrukturen zu durchlaufen, um zu versuchen, einen passenden Seitentabelleneintrag für die effektive Adresse zu finden, wobei von einer Standardseitengröße ausgegangen wird. In einigen Ausführungsformen kann ein fehlender Hinweis auf die Seitengröße auch dazu führen, dass ein passender Seitentabelleneintrag aufgefunden wird, der Hauptspeicherseiten entspricht, welche von der Standardseitengröße abweichende Seitengrößen aufweisen. Es dürfte sich auch verstehen, dass die im Block 284 durchgeführte Suche auch rechenintensiv sein kann, da gegebenenfalls auf mehrere unterschiedliche Datenstrukturen zugegriffen werden muss, um zu versuchen, einen passenden Seitentabelleneintrag aufzufinden, und diese möglicherweise sogar aus dem Massenspeicher abgerufen werden müssen, wie der Fachmann verstehen dürfte, der über die aktuelle Offenbarung verfügt. Der Block 286 stellt somit fest, ob ein passender Seitentabelleneintrag gefunden wurde, und wenn ja, wird der passende Seitentabelleneintrag im Block 288 zurückgegeben. Falls jedoch nicht, schaltet die Steuerung zum Block 290, um einen „Nicht gefunden“-Hinweis zurückzugeben.First, in the block 280 accessing one or more of the reserved bits of the effective address input to the page fault handler to determine if an indication of page size has been encoded into the effective address, eg, by applying a mask and determining if any of the non-masked bits have nonzero values. If the unmasked bits are all zero, the block passes 282 the controller to the block 284 to iterate through the various hardware page table data structures to try to find a matching page table entry for the effective address, assuming a default page size. In some embodiments, missing an indication of the page size may also result in finding a matching page table entry that corresponds to main memory pages that have page sizes that differ from the default page size. It should also understand that in the block 284 search can also be computationally intensive, since it may be necessary to access several different data structures in order to try to find a suitable page table entry, and these may even have to be retrieved from the mass storage, as the person skilled in the art would understand. who has the current revelation. The block 286 thus determines if a matching page table entry was found, and if so, the matching page table entry in the block 288 returned. If not, the controller switches to the block 290 to return a "not found" notice.

Wenn der Block 282 andererseits feststellt, dass ein Wert ungleich null in den nicht maskierten Bits der effektiven Adresse gespeichert ist, wird ein Hinweis auf die Seitengröße in der effektiven Adresse codiert und die Steuerung schaltet zum Block 292, um eine oder mehrere Datenstrukturen zu durchsuchen, die zu der Seitengröße gehören, welche von dem Hinweis auf die Seitengröße angegeben wird. Wenn man davon ausgeht, dass die erwartete Seitengröße bekannt ist, kann die im Block 292 durchgeführte Suche daher weniger rechenintensiv als eine Komplettsuche sein und somit kann die Suche unter Zuhilfenahme des Hinweises auf die Seitengröße wirksamer sein als eine Komplettsuche und in einigen Ausführungsformen kann sie die mit einem Seitentabellenfehler verbundene Latenzzeit verringern.If the block 282 On the other hand, if it detects that a non-zero value is stored in the non-masked bits of the effective address, an indication of the page size in the effective address is encoded and control goes to the block 292 to search one or more data structures belonging to the page size specified by the page size hint. Assuming that the expected page size is known, the one in block 292 Therefore, the search performed using the pointer to the page size may be more efficient than a full search, and in some embodiments may reduce the latency associated with a page table error.

Als Nächstes stellt der Block 294 fest, ob ein passender Seitentabelleneintrag gefunden wurde, und wenn ja, schaltet die Steuerung zum Block 288, um den passenden Seitentabelleneintrag zurückzugeben. Andernfalls kann der Block 294 die Steuerung an den Block 284 übergeben, um eine Komplettsuche zu versuchen. In weiteren Ausführungsformen ist möglicherweise keine Komplettsuche erforderlich und der Block 294 kann stattdessen einen „Nicht gefunden“-Hinweis zurückgeben, indem er die Steuerung direkt an den Block 290 übergibt. Somit kann beim Block 252 ein in eine effektive Adresse codierter Hinweis auf die Seitengröße verwendet werden, um das Auffinden eines Seitentabelleneintrags auf der Grundlage der Seitengröße, die von dem Hinweis auf die Seitengröße angegeben wird, zu beschleunigen. In einigen Ausführungsformen kann die Beschleunigung beispielsweise infolge dessen auftreten, dass ein Zugriff durch mindestens eine Datenstruktur umgangen wird, auf die normalerweise zugegriffen würde, wenn die Hardware-Seitentabelle nach einer Hauptspeicher-Zugriffsinstruktion durchlaufen wird, welcher ein codierter Hinweis auf die Seitengröße fehlt.Next is the block 294 determines if a matching page table entry was found, and if so, control goes to the block 288 to return the matching page table entry. Otherwise, the block 294 the controller to the block 284 hand over to try a complete search. In other embodiments, a complete search may not be required and the block 294 instead, you can return a "not found" hint by sending the control directly to the block 290 passes. Thus, at the block 252 an indication of the page size encoded in an effective address may be used to speed up the retrieval of a page table entry based on the page size indicated by the page size indication. For example, in some embodiments, the acceleration may occur as a result of bypassing access by at least one data structure that would normally be accessed when the hardware page table is traversed after a main memory access instruction that lacks a coded pointer to the page size.

Es dürfte sich verstehen, dass Hinweise auf die Seitengröße auf mehrere Arten, die der Erfindung entsprechen, in eine effektive oder virtuelle Adresse codiert werden können. In einigen Ausführungsformen können Hinweise auf die Seitengröße beispielsweise in Verbindung mit dem Erstellen eines Programms, z.B. während des Kompilierens, Optimierens, Bindeladens, Installierens oder der Bereitstellung eines Programms, in virtuelle Adressen codiert werden. In solchen Ausführungsformen können Hinweise auf die Seitengröße während des Erstellens eines Programms in das nicht benutzte Feld und das reservierte Feld von einer oder mehreren von Hauptspeicher-Zugriffsinstruktionen in einem Programm referenzierten virtuellen Adressen codiert werden und das Programm kann mit den Hauptspeicher-Zugriffsinstruktionen so erstellt werden, dass, nachdem von den Hauptspeicher-Zugriffsinstruktionen verursachte Seitenfehler durch Hardware-Umsetzungslogik eines Datenverarbeitungssystems, auf dem das Programm ausgeführt wird, erkannt wurden, die Hinweise auf die Seitengröße bei der Durchführung von Software-Adressumsetzungsoperationen verwendet werden können.It should be understood that pointers to page size may be encoded into an effective or virtual address in a number of ways consistent with the invention. For example, in some embodiments, pointers to page size may be associated with creating a program, e.g. while compiling, optimizing, wrapping, installing or deploying a program, they are encoded into virtual addresses. In such embodiments, pointers to the page size may be encoded in the unused field and the reserved field by one or more of the main memory access instructions in a program referenced virtual address, and the program may be constructed with the main memory access instructions in that, after page faults caused by the main memory access instructions were detected by hardware translation logic of a data processing system on which the program is executed, the pointers to the page size may be used in performing software address translation operations.

6 zeigt beispielsweise eine Abfolge von Operationen 300 zum Erstellen eines Programms einschließlich dreier verschiedener Szenarien, welche in einigen Ausführungsformen der Erfindung unterstützt werden können. In dem Beispiel von 6 sind Hinweise auf die Seitengröße als Hinweise gezeigt, die aufgrund von Compilersteueranweisungen (Blöcke 302 bis 304), aufgrund einer Optimierung (Blöcke 306 bis 310) und aufgrund des Erzeugens einer ausführbaren Datei (Blöcke 312 bis 314) in Hauptspeicher-Adressinstruktionen codiert werden. Andere Operationen, die während des Erstellens eines Programms durchgeführt werden, z.B. Parsen von Quellcode, Erzeugen von Zwischencodes, Ausführen von verschiedenen Code-Optimierungen, Verpacken von Code, der ausführbaren Code erzeugt, Verknüpfen von Code mit anderem ausführbarem Code und/oder Bibliotheken, Bereitstellen oder Installieren von Code usw., werden in 6 weggelassen, um die nachstehende Beschreibung zu vereinfachen, doch dürfte es sich verstehen, dass solche Operationen in der Technik generell verstanden werden und ein Fachmann, der über die aktuelle Offenbarung verfügt, in der Lage wäre, die hierin beschriebene Funktionalität in beliebige dieser Operationen einzubinden. 6 zeigt im Block 316 jedoch die Ausgabe von einer oder mehreren ausführbaren Dateien infolge des Erstellvorgangs, die, so dürfte es sich verstehen, eine oder mehrere Hauptspeicher-Zugriffsinstruktionen enthalten können, bei denen ein Hinweis auf die Seitengröße in ein nicht benutztes und reserviertes Feld der effektiven oder virtuellen Adresse der Hauptspeicher-Zugriffsinstruktion codiert ist. Es dürfte sich auch verstehen, dass in einigen Ausführungsformen alle drei in 6 gezeigten Szenarien nicht unterstützt werden können. Es dürfte sich auch verstehen, dass in weiteren Ausführungsformen andere Szenarien verwendet werden können, um Hinweise auf die Seitengröße in die Hauptspeicher-Zugriffsinstruktionen eines Programms zu codieren, so dass die Erfindung nicht auf die bestimmten, in 6 dargestellten Szenarien beschränkt ist. 6 shows, for example, a sequence of operations 300 for creating a program including three different scenarios that may be supported in some embodiments of the invention. In the example of 6 are hints on the page size shown as hints, due to compiler control statements (blocks 302 to 304 ), due to optimization (blocks 306 to 310 ) and due to the creation of an executable file (blocks 312 to 314 ) are encoded in main memory address instructions. Other operations performed during the creation of a program, eg, parsing source code, creating intermediate codes, executing various code optimizations, packaging code that generates executable code, associating code with other executable code, and / or libraries, providing or installing code, etc., will be in 6 however, to simplify the description below, it should be understood that such operations are generally understood in the art and one skilled in the art having the current disclosure would be able to incorporate the functionality described herein into any of these operations. 6 shows in the block 316 however, the issuance of one or more executables as a result of the build which, it should be understood, may include one or more main memory access instructions, where an indication of the page size in an unused and reserved field of the effective or virtual address of the Main memory access instruction is coded. It should also be understood that in some embodiments, all three in 6 shown scenarios can not be supported. It should also be understood that in other embodiments, other scenarios may be used to encode page size information into the main memory access instructions of a program, so that the invention will not be limited to the particular ones described in US Pat 6 Scenarios is limited.

Die Blöcke 302 bis 304 zeigen beispielsweise ein Szenario, in dem ein Anwendungsentwickler eine Compilersteueranweisung in den Quellcode einer Anwendung, welche gerade entwickelt wird, einfügt, die durch einen Compiler (Block 302) erkannt werden kann, um zu verursachen, dass der Compiler eine oder mehrere Hauptspeicher-Zugriffsinstruktionen in einem Programm ändert, um Hinweise auf die Seitengröße in diese Hauptspeicher-Zugriffsinstruktionen zu codieren (Block 304). Eine Compilersteueranweisung kann beispielsweise das Codieren von Hinweisen auf die Seitengröße für den gesamten oder für Abschnitte des Quellcodes aktivieren oder deaktivieren. Eine Compilersteueranweisung kann auch eine gewünschte Seitengröße für bestimmte Hauptspeicher-Zuordnungsinstruktionen, für einen bestimmten Code-Abschnitt oder für bestimmte Arten von Instruktionen (z.B. für Instruktionen, die Daten abrufen im Vergleich zu Instruktionen, die andere Progamminstruktionen abrufen, usw.) angeben. Anweisungen können zu einzelnen Instruktionen, Code-Abschnitten, bestimmten Methoden, Klassen oder Modulen oder zu einem ganzen Programm gehören. Im Allgemeinen ermöglichen die Anweisungen einem Anwendungsentwickler, den Programmerstellungsprozess zu steuern, um zu bewirken, dass die Anwendung, die gerade entwickelt wird, die von dem Anwendungsentwickler gewünschten Seitengrößen verwendet. Es dürfte sich jedoch auch verstehen, dass ein Entwickler die Verwendung von Hinweisen auf die Seitengröße in weiteren Ausführungsformen auch auf andere Art und Weise steuern kann.The blocks 302 to 304 For example, FIG. 1 shows a scenario in which an application developer inserts a compiler control statement into the source code of an application being developed through a compiler (block 302 ) may be detected to cause the compiler to change one or more main memory access instructions in a program to encode page size indications into those main memory access instructions (block 304 ). For example, a compiler control statement may enable or disable the encoding of page size hints for all or portions of the source code. A compiler control statement may also specify a desired page size for particular main memory allocation instructions, for a particular piece of code, or for certain types of instructions (eg instructions fetching data as compared to instructions fetching other program instructions, etc.). Statements may belong to individual instructions, code sections, specific methods, classes or modules, or to a whole program. In general, the instructions allow an application developer to control the program building process to cause the application being developed to use the page sizes desired by the application developer. It should also be understood, however, that a developer may otherwise control the use of page size references in other embodiments in other embodiments.

Die Blöcke 306 bis 310 zeigen andererseits ein Szenario, in dem ein Compiler beispielsweise während der Optimierung feststellt, dass bestimmte Seitengrößen für bestimmte Hauptspeicher-Zugriffsinstruktionen oder -anforderungen optimal wären. Zum Beispiel kann der Block 306 als Teil der Optimierung Muster von Hauptspeicheranforderungen in einem Versuch, geeignete Kandidaten für das Codieren von Hinweisen auf die Seitengröße ausfindig zu machen, auswerten. Als Reaktion auf das Ausfindigmachen solcher Kandidaten kann der Block 308 die Steuerung an den Block 310 umleiten, um die Hauptspeicher-Zugriffsinstruktionen, die zu solchen Kandidaten gehören, zu ändern, um Hinweise auf die Seitengröße für geeignete Seitengrößen zu codieren. Geeignete Kandidaten könnten beispielsweise vorhanden sein, wenn festgestellt wird, dass das Speichervolumen, auf das durch einen kritischen Abschnitt des Codes in dem Programm immer wieder zugegriffen wird, größer ist als die Standardseitengröße, so dass es vorteilhaft wird, das ganze Speichervolumen in einer einzelnen, größeren Seite und nicht in mehreren Seiten, die andernfalls aufgrund von anderem Hauptspeicherverkehr ein- und wieder ausgelagert werden könnten, zu halten.The blocks 306 to 310 On the other hand, a scenario in which a compiler determines during optimization, for example, that certain page sizes would be optimal for particular main memory access instructions or requests. For example, the block 306 evaluate, as part of the optimization, patterns of memory requirements in an attempt to locate suitable candidates for encoding page size hints. In response to locating such candidates, the block 308 the controller to the block 310 redirect to change the main memory access instructions associated with such candidates to encode page size indications for appropriate page sizes. For example, suitable candidates may be present if it is determined that the storage volume accessed by a critical portion of the code in the program is greater than the default page size, so that it becomes advantageous to store all the storage in a single, larger pages and not in multiple pages that might otherwise be paged in and out of other memory traffic.

Die Blöcke 312 bis 314 zeigen noch ein weiteres Szenario, in dem ein Compiler oder Bindelader feststellen kann, ob eine ausführbare Datei, die während des Erstellungsprozesses erzeugt wurde, in eine bestimmte Seitengröße passt. Als Reaktion auf das Erkennen eines solchen Szenarios kann der Block 312 beispielsweise die Steuerung an den Block 314 übergeben, um das Programm so zu konfigurieren, dass es die vorher festgelegte Seitengröße lädt, z.B., indem Hinweise auf die Seitengröße in die Instruktionen codiert werden, welche Hauptspeicher für ein Programm (oder für bestimmte Module, Bibliotheken, Abschnitte, Klassen, Dateien usw. des Programms) zuordnen. Wenn somit beispielsweise festgestellt werden kann, dass die kompilierte Anwendung in eine einzelne 2MB-Seite passt, kann es in einigen Ausführungsformen wünschenswert sein, die Anwendung so zu konfigurieren, dass sie eine 2MB-Seite anfordert, wenn sie geladen wird, so dass die ganze Anwendung in eine einzelne Seite des Hauptspeichers geladen wird. Auf diese Weise wird eine Seitenein- und -wiederauslagerung, um verschiedene Module oder Code-Abschnitte für die Anwendung zu laden, vermieden, wodurch die gesamte Leistungsfähigkeit der Anwendung in entsprechenden Szenarien verbessert wird.The blocks 312 to 314 show yet another scenario in which a compiler or binder loader can determine if an executable file created during the build process fits into a particular page size. In response to detecting such a scenario, the block 312 for example, the control to the block 314 to configure the program to load the pre-set page size, for example by encoding page size instructions into the instructions, which main memory is allocated to a program (or to specific modules, libraries, sections, classes, files, etc.). of the program). Thus, for example, if it can be determined that the compiled application fits into a single 2MB page, in some embodiments, it may be desirable to configure the application to request a 2MB page when it is loaded, so that the whole Application is loaded into a single page of main memory. In this way, page loading and unloading to load different modules or code sections for the application is avoided, thereby improving the overall performance of the application in appropriate scenarios.

Somit können es Ausführungsformen, die der Erfindung entsprechen, ermöglichen, dass nicht benutzte und reservierte Bits von virtuellen oder effektiven Adressen einem neuen Zweck zugeführt werden, um Hinweise auf die Seitengröße an Software-Seitenfehlerbehandlungsfunktionalität in einem Betriebssystem, Hypervisor, Virtual Machine Monitor, Kernel oder anderer Low-Level-Software in einem Datenverarbeitungssystem zu übertragen, um in Verbindung mit der Behandlung eines Seitenfehlers verwendet zu werden. In einigen Ausführungsformen kann die eigentliche Codierung überdies vor der Ausführung des Programms durchgeführt werden und in einigen Ausführungsformen kann sie während des Kompilierens, Bindeladens, der Bereitstellung oder Installation des Programms erfolgen.Thus, embodiments consistent with the invention may allow unused and reserved bits of virtual or effective addresses to be redirected to page size indications of software page fault handling functionality in an operating system, hypervisor, virtual machine monitor, kernel, or other low-level software in a data processing system to be used in conjunction with the handling of a page fault. In addition, in some embodiments, the actual encoding may be performed prior to the execution of the program, and in some embodiments, may occur during compilation, bind loading, deployment, or installation of the program.

In einigen Ausführungsformen kann der Erstellungsprozess des Weiteren auch die Einbindung von einer oder mehreren Instruktionen in das Programm beinhalten, um die Programm-Hardware-Umsetzungslogik eines Datenverarbeitungssystems so zu konfigurieren, dass sie in einem Modus arbeitet, der die Erzeugung von unzulässigen Adressbenachrichtigungen aufgrund von Werten ungleich null in den nicht benutzten und reservierten Feldern von virtuellen oder effektiven Adressen deaktiviert. In weiteren Ausführungsformen darf die Hardware-Umsetzungslogik keine unzulässigen Adressbenachrichtigungen erzeugen und in einigen Ausführungsformen kann die Auswahl eines geeigneten Modus getrennt von der Ausführung eines durch einen Hinweis auf die Seitengröße aktivierten Programms, z.B. durch ein Betriebssystem, vorgenommen werden.In some embodiments, the build process may further include incorporating one or more instructions into the program to configure the program hardware implementation logic of a data processing system to operate in a mode that is capable of generating invalid address notifications based on values nonzero in the unused and reserved fields of virtual or effective addresses disabled. In other embodiments, the hardware translation logic may not generate invalid address notifications, and in some embodiments, the selection of a suitable mode may be separate from the execution of a program activated by an indication of the page size, e.g. through an operating system.

Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung erfolgten zum Zweck der Veranschaulichung, sollen jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Ab- und Veränderungen sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt befindlicher Technologien am besten zu erklären oder um anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein has been chosen to best explain the principles of the embodiments, the practical application or technical improvement over the technologies on the market, or to assist others in understanding the embodiments disclosed herein.

Claims (20)

Verfahren zum Behandeln eines Seitenfehlers in einem Datenverarbeitungssystem von einem Typ, der mehrere Hauptspeicherseitengrößen unterstützt, wobei das Verfahren aufweist: Erkennen eines durch Hardware-Umsetzungslogik eines Prozessors erzeugten Seitenfehlers, wobei der Seitenfehler zu einer virtuellen Adresse gehört, die von Programmcode angefordert wird, welcher von dem Prozessor ausgeführt wird; anhand der virtuellen Adresse Feststellen eines Hinweises auf die Seitengröße, der in ein nicht benutztes und reserviertes Feld der virtuellen Adresse codiert ist; und Durchführen einer Software-Adressumsetzungsoperation für die virtuelle Adresse unter Verwendung des festgestellten Hinweises auf die Seitengröße.A method of handling a page fault in a data processing system of a type supporting a plurality of main memory page sizes, the method comprising: Detecting a page fault generated by hardware implementation logic of a processor, the page fault associated with a virtual address requested by program code executed by the processor; determining, by virtue of the virtual address, an indication of the page size encoded in an unused and reserved virtual address field; and Perform a software address translation operation on the virtual address using the noted page size indication. Verfahren nach Anspruch 1, wobei der Hinweis auf die Seitengröße vor der Ausführung des Programmcodes in das nicht benutzte und reservierte Feld codiert wird.Method according to Claim 1 , where the reference to the page size is encoded before executing the program code in the unused and reserved field. Verfahren nach Anspruch 2, wobei der Hinweis auf die Seitengröße während des Kompilierens, Bindeladens, der Bereitstellung oder Installation des Programmcodes in das nicht benutzte und reservierte Feld codiert wird.Method according to Claim 2 in which the indication of the page size is encoded into the unused and reserved field during compilation, binding loading, the provision or installation of the program code. Verfahren nach Anspruch 1, wobei die Hardware-Umsetzungslogik konfigurierbar ist, um in einem ersten und in einem zweiten Modus betrieben zu werden, wobei die Hardware-Umsetzungslogik in dem ersten Modus aufgrund von einem oder mehreren Werten in dem nicht benutzten und reservierten Feld der virtuellen Adresse eine unzulässige Adressbenachrichtigung erzeugt, wobei die Erzeugung von unzulässigen Adressbenachrichtigungen durch die Hardware-Umsetzungslogik in dem zweiten Modus aufgrund von dem einen oder den mehreren Werten in dem nicht benutzten und reservierten Feld der virtuellen Adresse deaktiviert wird, und wobei das Verfahren des Weiteren das Konfigurieren der Hardware-Umsetzungslogik in dem zweiten Modus aufweist.Method according to Claim 1 wherein the hardware translation logic is configurable to operate in a first and a second mode, the hardware translation logic in the first mode having an invalid address notification due to one or more values in the unused and reserved virtual address field wherein the generation of invalid address notifications is disabled by the hardware translation logic in the second mode due to the one or more values in the unused and reserved virtual address field, and wherein the method further comprises configuring the hardware translation logic in the second mode. Verfahren nach Anspruch 4, wobei die Hardware-Umsetzungslogik so konfiguriert ist, dass sie in dem ersten Modus eine unzulässige Adressbenachrichtigung aufgrund von einem Wert ungleich null in dem nicht benutzten und reservierten Feld der virtuellen Adresse erzeugt.Method according to Claim 4 wherein the hardware translation logic is configured to generate in the first mode an invalid address notification due to a nonzero value in the unused and reserved virtual address field. Verfahren nach Anspruch 1, das des Weiteren das selektive Zuordnen einer Seitengröße aufweist, die dem festgestellten Hinweis auf die Seitengröße auf der Grundlage des verfügbaren Hauptspeichers entspricht.Method according to Claim 1 and further comprising selectively associating a page size that corresponds to the determined indication of page size based on the available main memory. Verfahren nach Anspruch 1, wobei das Feststellen des Hinweises auf die Seitengröße durchgeführt wird, bevor eine oder mehrere Datenstrukturen einer Hardware-Seitentabelle durchsucht werden, und wobei das Durchführen der Software-Adressumsetzungsoperation für die virtuelle Adresse unter Verwendung des festgestellten Hinweises auf die Seitengröße das Verwenden des festgestellten Hinweises auf die Seitengröße beinhaltet, um auf die eine oder die mehreren Datenstrukturen zuzugreifen.Method according to Claim 1 wherein determining the indication of the page size is performed before searching one or more data structures of a hardware page table, and performing the software address translation operation for the virtual address using the established indication of the page size using the detected indication the page size includes to access the one or more data structures. Verfahren nach Anspruch 7, wobei zu der einen oder den mehreren Datenstrukturen mindestens eine seitengrößenspezifische Datenstruktur gehört, die so konfiguriert ist, dass sie Adressumsetzungsinformationen für Seiten mit einer bestimmten Seitengröße speichert, und wobei das Durchführen der Software-Adressumsetzungsoperation für die virtuelle Adresse unter Verwendung des festgestellten Hinweises auf die Seitengröße das Verwenden des festgestellten Hinweises auf die Seitengröße für den Zugriff auf die seitengrößenspezifische Datenstruktur beinhaltet, die so konfiguriert ist, dass sie Adressumsetzungsinformationen für die Seitengröße speichert, die zu dem Hinweis auf die Seitengröße gehört.Method according to Claim 7 wherein the at least one page size specific data structure configured to store address translation information for pages having a particular page size is associated with the one or more data structures, and performing the software address translation operation for the virtual address using the noted reference to Page size includes using the noted page size indication for accessing the page size specific data structure configured to store page size address translation information pertaining to the page size indication. Verfahren nach Anspruch 8, wobei das Durchführen der Software-Adressumsetzungsoperation für die virtuelle Adresse unter Verwendung des festgestellten Hinweises auf die Seitengröße das Umgehen eines Zugriffs durch mindestens eine andere Datenstruktur beinhaltet, auf die zugegriffen wird, wenn die Hardware-Seitentabelle nach einer Hauptspeicher-Zugriffsinstruktion durchlaufen wird, welcher ein codierter Hinweis auf die Seitengröße fehlt.Method according to Claim 8 wherein performing the software address translation operation for the virtual address using the established page size indication includes bypassing access by at least one other data structure that is accessed when the hardware Page table is traversed after a main memory access instruction which lacks a coded pointer to the page size. Verfahren nach Anspruch 9, das aufgrund eines zweiten Seitenfehlers, der zu einer zweiten virtuellen Adresse gehört, die von Programmcode angefordert wird, welcher durch den Prozessor ausgeführt wird und dem ein codierter Hinweis auf die Seitengröße fehlt, des Weiteren das Durchlaufen einer Vielzahl von Datenstrukturen der Hardware-Seitentabelle aufweist, um einen Seitentabelleneintrag ausfindig zu machen, der der zweiten virtuellen Adresse entspricht.Method according to Claim 9 further comprising passing through a plurality of hardware page table data structures due to a second page fault associated with a second virtual address requested by program code executed by the processor and lacking a coded pointer to the page size to locate a page table entry corresponding to the second virtual address. Verfahren nach Anspruch 1, wobei das Feststellen des Hinweises auf die Seitengröße vor der Zuordnung einer Hauptspeicherseite für die virtuelle Adresse erfolgt, wobei das Verfahren des Weiteren das Zuordnen der Hauptspeicherseite für die virtuelle Adresse mit einer Seitengröße aufweist, die von dem Hinweis auf die Seitengröße angegeben wird.Method according to Claim 1 wherein determining the indication of the page size is prior to the assignment of a main memory page for the virtual address, the method further comprising associating the main memory page for the virtual address with a page size indicated by the indication of the page size. Verfahren nach Anspruch 11, wobei das Zuordnen der Hauptspeicherseite für die virtuelle Adresse mit einer Seitengröße, die von dem Hinweis auf die Seitengröße angegeben wird, aufgrund der Feststellung, dass die von dem Hinweises auf die Seitengröße angegebene Seitengröße zulässig ist, zulässig ist.Method according to Claim 11 wherein the assignment of the main memory page for the virtual address to a page size indicated by the page size indication is permitted based on the determination that the page size indicated by the page size indication is allowed. Verfahren nach Anspruch 11, das aufgrund eines zweiten Seitenfehlers, der zu einer zweiten virtuellen Adresse gehört, die von Programmcode angefordert wird, welcher durch den Prozessor ausgeführt wird und dem ein codierter Hinweis auf die Seitengröße fehlt, des Weiteren das Zuordnen einer Hauptspeicherseite für die virtuelle Adresse mit einer Standardseitengröße aufweist.Method according to Claim 11 that is due to a second page fault associated with a second virtual address requested by program code that is executed by the processor and that lacks a coded pointer to the page size, further assigning a main page virtual address page with a default page size having. Verfahren nach Anspruch 1, das des Weiteren das Feststellen anhand der virtuellen Adresse aufweist, dass ein Hinweis auf die Seitengröße in das nicht benutzte und reservierte Feld der virtuellen Adresse codiert ist, indem ein Wert ungleich null in mindestens einer Teilmenge einer Vielzahl von Bits in dem nicht benutzten und reservierten Feld erkannt wird.Method according to Claim 1 further comprising determining, based on the virtual address, that an indication of the page size is encoded into the unused and reserved virtual address field by a nonzero value in at least a subset of a plurality of bits in the unused and reserved Field is detected. Verfahren zum Erstellen eines Programms, wobei das Verfahren aufweist: Codieren eines Hinweises auf die Seitengröße in ein nicht benutztes und reserviertes Feld einer von einer Hauptspeicher-Zugriffsinstruktion referenzierten virtuellen Adresse; und Erstellen des Programms mit der Hauptspeicher-Zugriffsinstruktion in der Weise, dass, nachdem ein von der Hauptspeicher-Zugriffsinstruktion verursachter Seitenfehler durch Hardware-Umsetzungslogik eines Datenverarbeitungssystems, auf dem das Programm ausgeführt wird, erkannt wurde, der Hinweis auf die Seitengröße bei der Durchführung einer Software-Adressumsetzungsoperation verwendet wird.A method of creating a program, the method comprising: Encoding an indication of the page size into an unused and reserved field of a virtual address referenced by a main memory access instruction; and Creating the program with the main memory access instruction such that after a page fault caused by the main memory access instruction has been detected by hardware translation logic of a data processing system on which the program is executed, the indication of the page size in the execution of software Address translation operation is used. Verfahren nach Anspruch 15, wobei das Codieren des Hinweises auf die Seitengröße in das nicht benutzte und reservierte Feld der von der Hauptspeicher-Zugriffsinstruktion referenzierten virtuellen Adresse während des Kompilierens oder Bindeladens des Programms durchgeführt wird.Method according to Claim 15 wherein the encoding of the page size indication into the unused and reserved field of the virtual address referenced by the main memory access instruction is performed during compilation or binding of the program. Verfahren nach Anspruch 15, wobei das Codieren des Hinweises auf die Seitengröße in das nicht benutzte und reservierte Feld der von der Hauptspeicher-Zugriffsinstruktion referenzierten virtuellen Adresse aufgrund der Feststellung durchgeführt wird, dass eine ausführbare Datei für das Programm in eine Seitengröße passt, die zu dem Hinweis auf die Seitengröße gehört.Method according to Claim 15 wherein the encoding of the page size indication into the unused and reserved field of the virtual address referenced by the main memory access instruction is performed on the determination that an executable file for the program fits into a page size corresponding to the page size indication belongs. Verfahren nach Anspruch 15, wobei das Codieren des Hinweises auf die Seitengröße in das nicht benutzte und reservierte Feld der von der Hauptspeicher-Zugriffsinstruktion referenzierten virtuellen Adresse aufgrund des Auswertens eines Musters von Daten-Hauptspeicheranforderungen während der Optimierung des Programms durchgeführt wird.Method according to Claim 15 wherein the encoding of the page size indication into the unused and reserved field of the virtual address referenced by the main memory access instruction is performed on the basis of evaluating a pattern of data main memory requests during optimization of the program. Vorrichtung, die mehrere Hauptspeicherseitengrößen unterstützt, wobei die Vorrichtung aufweist: mindestens einen Prozessor, der Hardware-Umsetzungslogik enthält; und Programmcode, der so konfiguriert ist, dass er nach der Ausführung durch den mindestens einen Prozessor einen Seitenfehler behandelt, indem er: einen durch die Hardware-Umsetzungslogik erzeugten Seitenfehler erkennt, wobei der Seitenfehler zu einer virtuellen Adresse gehört, die von einem Programm angefordert wird, welches von dem Prozessor ausgeführt wird; anhand der virtuellen Adresse einen Hinweis auf die Seitengröße feststellt, der in ein nicht benutztes und reserviertes Feld der virtuellen Adresse codiert ist; und eine Software-Adressumsetzungsoperation für die virtuelle Adresse unter Verwendung des festgestellten Hinweises auf die Seitengröße durchführt.An apparatus supporting multiple main memory page sizes, the apparatus comprising: at least one processor containing hardware translation logic; and program code configured to handle a page fault upon execution by the at least one processor by: detecting a page fault generated by the hardware translation logic, the page fault associated with a virtual address requested by a program which is executed by the processor; uses the virtual address to determine an indication of the page size encoded into an unused and reserved virtual address field; and performs a software address translation operation on the virtual address using the established page size indication. Programmprodukt, das aufweist: einen nicht flüchtigen, durch einen Computer lesbaren Datenträger; und Programmcode, der auf dem nicht flüchtigen, durch einen Computer lesbaren Datenträger gespeichert und so konfiguriert ist, dass er nach der Ausführung durch mindestens einen Prozessor einen Seitenfehler in einem Datenverarbeitungssystem von einem Typ behandelt, der mehrere Hauptspeicherseitengrößen unterstützt, indem: ein durch Hardware-Umsetzungslogik des Prozessors erzeugter Seitenfehler erkannt wird, wobei der Seitenfehler zu einer virtuellen Adresse gehört, die von Programmcode angefordert wird, welcher von dem Prozessor ausgeführt wird; anhand der virtuellen Adresse ein Hinweis auf die Seitengröße festgestellt wird, der in ein nicht benutztes und reserviertes Feld der virtuellen Adresse codiert ist; und eine Software-Adressumsetzungsoperation für die virtuelle Adresse unter Verwendung des festgestellten Hinweises auf die Seitengröße durchgeführt wird.A program product comprising: a nonvolatile computer readable medium; and Program code stored on the non-transitory computer-readable medium and configured to handle, after execution by at least one processor, a page fault in a data processing system of a type that supports multiple main memory page sizes by: detecting a page fault generated by processor hardware conversion logic, the page fault associated with a virtual address requested by program code executed by the processor; by means of the virtual address, an indication of the page size coded in an unused and reserved field of the virtual address; and a software address translation operation is performed for the virtual address using the established page size indication.
DE112017001027.6T 2016-05-24 2017-05-12 page error fix Active DE112017001027B4 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/163,372 2016-05-24
US15/163,372 US10528476B2 (en) 2016-05-24 2016-05-24 Embedded page size hint for page fault resolution
PCT/IB2017/052790 WO2017203387A1 (en) 2016-05-24 2017-05-12 Page fault resolution

Publications (2)

Publication Number Publication Date
DE112017001027T5 true DE112017001027T5 (en) 2018-12-27
DE112017001027B4 DE112017001027B4 (en) 2023-05-04

Family

ID=60412685

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017001027.6T Active DE112017001027B4 (en) 2016-05-24 2017-05-12 page error fix

Country Status (6)

Country Link
US (1) US10528476B2 (en)
JP (1) JP6764485B2 (en)
CN (1) CN109074316B (en)
DE (1) DE112017001027B4 (en)
GB (1) GB2565495B (en)
WO (1) WO2017203387A1 (en)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017189620A1 (en) * 2016-04-25 2017-11-02 Netlist, Inc. Method and apparatus for uniform memory access in a storage cluster
US11768769B2 (en) * 2016-04-25 2023-09-26 Netlist, Inc. Uniform memory access in a system having a plurality of nodes
US10572337B2 (en) 2017-05-01 2020-02-25 International Business Machines Corporation Live partition mobility enabled hardware accelerator address translation fault resolution
KR102581318B1 (en) 2018-04-04 2023-09-25 삼성전자주식회사 Semiconductor memory module and memory system including semiconductor memory module
US10990463B2 (en) 2018-03-27 2021-04-27 Samsung Electronics Co., Ltd. Semiconductor memory module and memory system including the same
WO2020124519A1 (en) * 2018-12-21 2020-06-25 Intel Corporation Process address space identifier virtualization using hardware paging hint
US10936507B2 (en) * 2019-03-28 2021-03-02 Intel Corporation System, apparatus and method for application specific address mapping
CN113377490A (en) * 2020-03-10 2021-09-10 阿里巴巴集团控股有限公司 Memory allocation method, device and system of virtual machine
KR20210141156A (en) * 2020-05-15 2021-11-23 삼성전자주식회사 Handling operation system (OS) in a system for predicting and managing faulty memories based on page faults
US11429590B2 (en) * 2020-10-15 2022-08-30 International Business Machines Corporation Protecting against invalid memory references
US11966331B2 (en) 2020-12-30 2024-04-23 International Business Machines Corporation Dedicated bound information register file for protecting against out-of-bounds memory references
US11983532B2 (en) 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection
KR102552592B1 (en) * 2021-07-16 2023-07-07 성균관대학교산학협력단 Operation method of the Non-Uniform Memory Access system

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60118937A (en) 1983-11-30 1985-06-26 Sharp Corp Multi-task controlling device
JPH09319658A (en) * 1996-05-24 1997-12-12 Nec Corp Memory managing system for variable page size
US6549997B2 (en) * 2001-03-16 2003-04-15 Fujitsu Limited Dynamic variable page size translation of addresses
US7043622B2 (en) * 2002-12-23 2006-05-09 Lsi Logic Corporation Method and apparatus for handling storage requests
US7100018B2 (en) * 2003-07-31 2006-08-29 Silicon Graphics, Inc. System and method for encoding page size information
GB0325788D0 (en) 2003-11-05 2003-12-10 Ibm Memory allocation
US20060036830A1 (en) 2004-07-31 2006-02-16 Dinechin Christophe De Method for monitoring access to virtual memory pages
US7734842B2 (en) * 2006-03-28 2010-06-08 International Business Machines Corporation Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages
US7681012B2 (en) * 2007-01-30 2010-03-16 Texas Instruments Incorporated Method, system and device for handling a memory management fault in a multiple processor device
US9081501B2 (en) 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
GB2478727B (en) * 2010-03-15 2013-07-17 Advanced Risc Mach Ltd Translation table control
US8745307B2 (en) * 2010-05-13 2014-06-03 International Business Machines Corporation Multiple page size segment encoding
CN103597451B (en) * 2011-03-31 2017-06-13 英特尔公司 Memory image and redundancy generation for high availability
WO2013085794A1 (en) * 2011-12-06 2013-06-13 Advanced Micro Devices, Inc. Method and apparatus for servicing page fault exceptions
US20130141446A1 (en) 2011-12-06 2013-06-06 Advanced Micro Devices, Inc. Method and Apparatus for Servicing Page Fault Exceptions
US9058284B1 (en) 2012-03-16 2015-06-16 Applied Micro Circuits Corporation Method and apparatus for performing table lookup
US20130318307A1 (en) * 2012-05-23 2013-11-28 Alexander Rabinovitch Memory mapped fetch-ahead control for data cache accesses
US9235529B2 (en) 2012-08-02 2016-01-12 Oracle International Corporation Using broadcast-based TLB sharing to reduce address-translation latency in a shared-memory system with optical interconnect
US8930596B2 (en) 2012-11-30 2015-01-06 International Business Machines Corporation Concurrent array-based queue
US9507727B2 (en) * 2013-07-17 2016-11-29 Bitdefender IPR Management Ltd. Page fault injection in virtual machines
US9864698B2 (en) 2013-11-04 2018-01-09 International Business Machines Corporation Resolving cache lookup of large pages with variable granularity
KR102225525B1 (en) 2014-04-08 2021-03-09 삼성전자 주식회사 Hardware based memory management apparatus and memory management method thereof

Also Published As

Publication number Publication date
GB2565495B (en) 2021-11-03
US10528476B2 (en) 2020-01-07
GB201819512D0 (en) 2019-01-16
JP6764485B2 (en) 2020-09-30
WO2017203387A1 (en) 2017-11-30
DE112017001027B4 (en) 2023-05-04
US20170344489A1 (en) 2017-11-30
GB2565495A (en) 2019-02-13
CN109074316A (en) 2018-12-21
JP2019523920A (en) 2019-08-29
CN109074316B (en) 2023-05-12

Similar Documents

Publication Publication Date Title
DE112017001027B4 (en) page error fix
DE10357804B4 (en) Reclaim existing fields in address translation data structures to extend memory access control
DE112005002298B4 (en) Increasing the performance of an address translation using translation tables comprising large address spaces
DE102007063946B4 (en) Guest-host address translation for device access to storage in a partitioned system
DE112005001798B4 (en) Managing processor resources during architectural events
DE102014014076A1 (en) Reduced address translation with multiple page sizes
DE69029504T2 (en) Procedure for translating and copying addresses
DE10393920B4 (en) Methods and systems for controlling virtual machines
DE102007063960B3 (en) Synchronizing a translation buffer (TLB) with an extended paging table
DE112007001988T5 (en) Sharing information with guests in a virtual machine environment
DE112005002328T5 (en) Caching support for direct memory access address translation
DE112020002562T5 (en) INTELLIGENT MIGRATION OF CONTENT WITH LOANED STORAGE
DE102010035603A1 (en) Providing hardware support for shared virtual memory between physical local and remote storage
DE112010003397T5 (en) Cache partitioning in virtualized environments
DE112012000635T5 (en) Dynamic storage management in a virtualized computing environment
DE112004000464T5 (en) Invalidating memory entries, deleting cache entries
DE102008025476A1 (en) Translation of a virtual address into a physical address with support of page attributes
DE112010003554T5 (en) Symmetrical direct migration of virtual machines
DE112018005404T5 (en) SIMPLIFY ACCESSING A STORAGE'S LOCALITY DOMAIN INFORMATION
DE112019001821B4 (en) METHOD AND APPARATUS FOR REPRODUCTION OF PAUSE-LESS GARBAGE COLLECTION ACTIVATION FRAMEWORK
DE112020002575T5 (en) STORAGE AS A SERVICE THROTTLING BASED ON CONNECTION BANDWIDTH
DE112020002583T5 (en) STORAGE SERVICES BETWEEN OPERATING SYSTEMS VIA COMMUNICATION NETWORK CONNECTIONS
DE112011103536T5 (en) A method of detecting access to an object and computer and computer program product therefor
DE112018002032T5 (en) SHARING VIRTUAL AND REAL TRANSLATIONS IN A VIRTUAL CACHE
DE112018002028T5 (en) IMPLEMENTATION SUPPORT FOR A VIRTUAL CACHE

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final