DE4405845C2 - Method for converting a virtual memory address of a virtual memory into a real address of a real memory - Google Patents

Method for converting a virtual memory address of a virtual memory into a real address of a real memory

Info

Publication number
DE4405845C2
DE4405845C2 DE4405845A DE4405845A DE4405845C2 DE 4405845 C2 DE4405845 C2 DE 4405845C2 DE 4405845 A DE4405845 A DE 4405845A DE 4405845 A DE4405845 A DE 4405845A DE 4405845 C2 DE4405845 C2 DE 4405845C2
Authority
DE
Germany
Prior art keywords
bit string
address
bits
entry
bit
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.)
Expired - Fee Related
Application number
DE4405845A
Other languages
German (de)
Other versions
DE4405845A1 (en
Inventor
Jochen Liedtke
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.)
GMD-FORSCHUNGSZENTRUM INFORMATIONSTECHNIK GMBH, 53
Original Assignee
MATHEMATIK und DATENVERARBEITU
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 MATHEMATIK und DATENVERARBEITU filed Critical MATHEMATIK und DATENVERARBEITU
Priority to DE4405845A priority Critical patent/DE4405845C2/en
Priority to US08/549,731 priority patent/US5790979A/en
Priority to PCT/EP1994/001453 priority patent/WO1994027222A1/en
Publication of DE4405845A1 publication Critical patent/DE4405845A1/en
Application granted granted Critical
Publication of DE4405845C2 publication Critical patent/DE4405845C2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

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)

Description

Die Erfindung betrifft ein Verfahren zum Umsetzen einer durch einen ersten Bitstring mit einer ersten Länge repräsentierten virtuellen Speicheradresse eines vir­ tuellen Speichers in eine durch einen zweiten Bitstring mit einer zweiten Länge repräsentierten Realadresse eines Realspeichers.The invention relates to a method for implementing a by a first bit string with a first length represented virtual memory address of a vir actual memory into a by a second bit string real address represented with a second length a real memory.

Ein solches Verfahren ist einsetzbar, wenn es darum geht, bei Rechnern mit virtuellen Speichern in der sogenannten MMU (Memory Management Unit) die Adres­ se des virtuellen Speichers in die Adresse des Real­ speichers umzusetzen.Such a method can be used if it's about computers with virtual memories in the so-called MMU (Memory Management Unit) the virtual memory into the address of the real implement memory.

Die Adressenumsetzung virtuell → real erfolgt herkömm­ lich in einem mehrstufigen Verfahren, bei dem soge­ nannte Page Tables eingesetzt werden. Mittels der ersten Bits einer virtuellen Adresse wird eine erste Tabelle adressiert und der unter dieser Tabellenadresse gespeicherte Wert ausgelesen. Der ausgelesene Wert ist die Anfangsadresse einer zweiten Tabelle, die durch die nächste Gruppe von Bits der virtuellen Adresse adres­ siert wird. Da die Gruppen jeweils eine im vorhinein feste und von Gruppe zu Gruppe konstante Anzahl von Bits umfaßt, läuft das bekannte Verfahren in mehreren Stufen ab, bis man schließlich mit der letzten Tabelle auf der Datenspeicherseite, nämlich dem Realspeicher, angelangt ist. Die letzte Tabelle gibt die Datenseite (auch Kachel genannt) an. Die verbleibende Bitgruppe (letzten Bits der virtuellen Adresse) repräsentiert dann die Adresse (Offset) innerhalb der Datenseite. Dieses Verfahren ist daten- und zeitintensiv, und zwar insbesondere dann, wenn man sich Adreßräume von 2⁶⁴ Byte vorstellt, die spärlich besetzt und/oder fein­ granular sind. Ferner sind bei bekannten Verfahren Variationen der Größe der Datenseiten nur recht einge­ schränkt möglich, z. B. 4 MB und 4 KB große Datenseiten gleichzeitig realisierbar. Dies ist aber oftmals nicht ausreichend, da es wünschenswert und notwendig sein kann, daß viele unterschiedlich große Datenseiten vor­ gesehen werden können.The virtual → real address conversion takes place conventionally Lich in a multi-stage process, the so-called called page tables are used. By means of the first bits of a virtual address becomes a first Table addressed and under this table address  stored value read out. The value read is the start address of a second table, which is indicated by the next group of bits of the virtual address adres is settled. Since the groups are each one in advance fixed and constant from group to group of Includes bits, the known method runs in several Graduate until you finally get to the last table on the data storage side, namely the real storage, has arrived. The last table gives the data page (also called tile). The remaining bit group (last bits of the virtual address) then the address (offset) within the data page. This process is data and time consuming, namely especially if you look at address spaces of 2⁶⁴ Byte represents the sparse and / or fine are granular. Furthermore, in known methods Variations in the size of the data pages are only quite significant limited possible, e.g. B. 4 MB and 4 KB large data pages realizable at the same time. However, this is often not the case sufficient as it may be desirable and necessary can have many different sized data pages can be seen.

Durch moderne Betriebssystementwicklungen (beispiels­ weise Mach, L3), die Ideen der Objektorientierung mit vielen kleinen Objekten und insbesondere durch das Auf­ kommen von Prozessoren mit großen Adreßräumen (64-bit Adressen) werden wesentliche Defizite der bisher ver­ fügbaren MMUs deutlich. Zu diesen Defiziten zählen die zu grobe und zu uniforme Granularität für große Adreß­ räume, der immense Aufwand für spärlich belegte Adreß­ räume (2⁶⁴-Byte Adreßräume sind immer spärlich belegt) und die mangelnde Unterstützung hierarchischer Struktu­ ren. Für derart große Adreßräume werden hochauflösende MMUs benötigt. Hochauflösende MMUs müssen 64-bit oder noch breitere virtuelle Adressen verarbeiten können (denkbar sind 128-bit Adressen sowie noch breitere Adressen), Seitengrößen ab 8 Byte (8, 16, 32, . . ., 1K, 2K, 4K, . . .) verwalten können, wobei diese Seitengrößen im Adreßraum mischbar sein sollen und hochauflösende MMUs sollen bei beliebiger Belegung des Adreßraums maximal 16 bis 32 Bytes (je nach Größe des virtuellen und des realen Adreßraumes) Verwaltungsinformation pro allokierter Seite benötigen.Through modern operating system developments (e.g. wise Mach, L3), the ideas of object orientation many small objects and especially by opening come from processors with large address spaces (64-bit Addresses) are significant deficits of the previously ver available MMUs clearly. These deficits include the too coarse and too uniform granularity for large address spaces, the immense effort for sparsely occupied address spaces (2⁶⁴-byte address spaces are always sparsely occupied) and the lack of support for hierarchical structures Ren. For such large address spaces, high-resolution MMUs needed. High-resolution MMUs must be 64-bit or  can process even wider virtual addresses (128-bit addresses and even wider ones are conceivable Addresses), page sizes from 8 bytes (8, 16, 32,..., 1K, 2K, 4K,. . .) can manage, these page sizes should be miscible in the address space and high-resolution MMUs should be used for any assignment of the address space maximum 16 to 32 bytes (depending on the size of the virtual and the real address space) management information per allocated page.

Wie bereits oben erwähnt, werden bisher virtuelle Adressen schrittweise anhand eines Baums von einzelnen Page Tables (den einzelnen Tabellen) in Realadressen umgesetzt. Anhand von Fig. 18 soll nachfolgend ein ein­ zelner Umsetzschritt einer virtuellen (Binär-)Adresse v für eine Aktion x anhand einer Page Table mit der Adresse p nach dem herkömmlichen Verfahren betrachtet werden. Dazu wird v in einen höherwertigen Teil u (be­ stehend aus einer bestimmten Anzahl der höherwertigen Bits) und einem niederwertigen Teil v′ (bestehend aus den niederwertigen Bits) aufgespaltet. Mittels u wird dann ein Eintrag der durch p anfangsadressierten Page Table ausgewählt. Dieser Eintrag beinhaltet ein Access­ attribut a und eine neue Adresse p′ als Anfangsadresse für die nächste Tabelle bzw. den nächsten Page Table des Baums. Bei vielen Rechnern setzen sich die Aktionen aus der Operation read/write oder auch execute und dem Betriebsmodus user/kernel zusammen. Entsprechend sind die Accessattribute aufgebaut, die jeweils gewisse (im Extremfall alle oder keine) Aktionen zulassen. Die Menge und Semantik der konkreten Aktionen und Access­ attribute und die Methode der Prüfung "Aktion gegen Attribut" ist aus der Sicht des hier vorgestellten Ver­ fahrens irrelevant. Entscheidend ist nur, daß jeweils aufgrund von Aktion x und Accessattribut a entschieden wird, ob die Aktion erlaubt ist oder abgebrochen werden muß. Verbietet das Accessattribut die Aktion (x<a), wird die Umsetzung abgebrochen und Page Fault signali­ siert. Ist die Aktion zulässig (xa), gehen x, p′ und v′ als Eingangsparameter in die Umsetzung der nächsten Stufe ein. Man beachte, daß v′ um die Bitbreite von u kürzer ist als v. Ist die letzte Stufe erreicht, zeigt p′ auf den Anfang der Datenseite und v′ ist der Offset innerhalb der Seite. Bei einer zweistufigen Umsetzung ergibt sich die Situation gemäß Fig. 19. Wenn auf diese Weise 64-bit breite virtuelle Adressen umgesetzt werden sollen und die minimale Seitengröße 16 Bytes betragen soll, kann man das beispielsweise durch eine zehn­ stufige Umsetzung (4 KB pro Page Table) erreichen. Spärlich besetzte Adreßräume erfordern damit aller­ dings einen untragbaren Verwaltungsaufwand. So können 1024 16-byte-Seiten so allokiert werden, daß pro 16 Datenbytes 20 Kbytes Verwaltungsdaten nötig sind, das sind 0,08% Nutzdaten. Bei Verwendung einer 60-stufigen Umsetzung (8 Byte pro Page Table) reduziert sich der Verwaltungsaufwand auf das Minimum, 400 Bytes, das sind aber immer noch nur 4% Nutzdaten. Außerdem dürfte ein 60-stufiger Umsetzprozeß viel zu zeitaufwendig sein. Betrachtet man kleinere Adreßräume mit beispielsweise 32-bit-breiten Adressen, werden die entsprechenden Werte zwar besser, sind aber immer noch untragbar. So würde eine 14stufige Umsetzung (16 Byte pro Page Table) im schlechtesten Fall zu nur 8% Nutzdaten führen.As already mentioned above, virtual addresses have been gradually converted into real addresses using a tree from individual page tables (the individual tables). Referring to Fig. 18 to follow up a conversion step of individual virtual (binary) address v x for an action based on a page table with the address p are considered by the conventional method. For this purpose, v is split into a higher value part u (consisting of a certain number of higher value bits) and a lower value part v '(consisting of the lower value bits). Using u, an entry of the page table initially addressed by p is then selected. This entry contains an access attribute a and a new address p ′ as the start address for the next table or the next page table of the tree. On many computers, the actions consist of the read / write or execute operation and the user / kernel operating mode. The access attributes are structured accordingly, each permitting certain (in extreme cases all or no) actions. The amount and semantics of the specific actions and access attributes and the method of the "action against attribute" check is irrelevant from the point of view of the procedure presented here. The only thing that is decisive is that action x and access attribute a are used to decide whether the action is permitted or must be terminated. If the access attribute prohibits the action (x <a), the conversion is aborted and page faults are signaled. If the action is permissible (xa), x, p ′ and v ′ are used as input parameters in the implementation of the next stage. Note that v ′ is shorter than v by the bit width of u. When the last stage is reached, p ′ points to the beginning of the data page and v ′ is the offset within the page. The situation according to FIG. 19 results in a two-stage implementation . If 64-bit virtual addresses are to be implemented in this way and the minimum page size is to be 16 bytes, this can be done, for example, by a ten-stage implementation (4 KB per page table ) to reach. However, sparsely populated address spaces require an unbearable administrative effort. 1024 16-byte pages can be allocated in such a way that 20 Kbytes of administration data are required per 16 data bytes, which is 0.08% user data. When using a 60-stage conversion (8 bytes per page table), the administrative effort is reduced to the minimum, 400 bytes, but that is still only 4% user data. In addition, a 60-step conversion process is likely to be far too time-consuming. If you look at smaller address spaces with, for example, 32-bit-wide addresses, the corresponding values get better, but are still unbearable. In the worst case, a 14-stage conversion (16 bytes per page table) would only lead to 8% user data.

Bei einem weiteren bekannten Adreßumsetzungsverfahren (kurz Inverted oder Hashed Page Tables genannt) (Electronics, 15. März 1979, Heft 6, S. 111 bis 113) besteht jede Tabelle aus einem Eintrag pro Kachel des Realspeichers, der jeweils die virtuelle Adresse der zugeordneten Seite des virtuellen Adreßraums enthält. Zugegriffen wird mit Hilfe einer Hashfunktion. Eine Weiterentwicklung dieses Verfahrens ist in US-PS 4 680 700 beschrieben. Das grundsätzliche Verfahren ist bildlich in Fig. 20 wiedergegeben. Bei der Umsetzung der virtuellen Adresse v in die Realadresse r mittels In­ verted oder Hashed Page Tables wird der niederwertige Teil w direkt übernommen. Der höherwertige Teil u wird durch die Hashfunktion auf einen Wert p abgebildet, der sowohl die vermutliche Kachel im Realspeicher identifiziert als auch zur Indizierung der invertierten Page Table benutzt wird. Wenn der entsprechende Eintrag die richtige virtuelle Adresse u enthält, liegt ein Treffer vor. Andernfalls (in Fig. 20 nicht dargestellt) müssen vermittels Rehash oder Weiterkettung weitere Kacheln untersucht werden, bis ein Treffer vorliegt oder auf Page Fault entschieden wird. Da bei Inverted Page Tables die Verwaltungsinformation nur von der Größe des Realspeichers (und der Seitengröße) abhängt, aber nicht von der Größe und der Zahl der virtuellen Adreßräume, treten keine Platzprobleme auf. Trotzdem machen die drei nachfolgenden Einschränkungen die Methode für feingranulare riesige Adreßräume wenig brauchbar:In another known address conversion method (briefly called inverted or hashed page tables) (Electronics, March 15, 1979, number 6, pp. 111 to 113), each table consists of one entry per tile of the real memory, each of which is the virtual address of the assigned page of the virtual address space. It is accessed using a hash function. A further development of this method is described in US Pat. No. 4,680,700. The basic process is illustrated in Fig. 20. When converting the virtual address v into the real address r using in verted or hashed page tables, the low-order part w is adopted directly. The higher-value part u is mapped to a value p by the hash function, which both identifies the presumed tile in the real memory and is used for indexing the inverted page table. If the corresponding entry contains the correct virtual address u, there is a hit. Otherwise (not shown in FIG. 20), further tiles must be examined by means of rehash or further chaining until a hit is obtained or a decision is made on page fault. Since the management information for inverted page tables only depends on the size of the real memory (and the page size), but not on the size and number of virtual address spaces, there are no space problems. Nevertheless, the following three restrictions make the method of fine-grained huge address spaces not very useful:

  • 1. Alle Seiten müssen gleich groß sein, d. h. minimale Seitengröße haben. In der Praxis fast immer gün­ stiger dürfte aber eine Mischung aus kleinen (16 . . . 256 Bytes) und mittleren (2 . . . 16 Kbytes) sein. Man könnte mehrere Seitengrößen erlauben, indem man für jede Größe eine eigene Hashfunktion und invertierte Page Table verwendet. Ohne eine feste Aufteilung des Adreßraumes müßten dann aber bei jeder Adreßumsetzung in der Regel mehrere (im Extremfall alle) sequentiell durchprobiert werden. Aufgrund der Tabellengröße erscheint eine parallele Implementierung kaum möglich.1. All pages must be the same size, i. H. minimal Have page size. In practice almost always gün stiger is likely to be a mixture of small ones (16... 256 bytes) and medium (2... 16 Kbytes) his. You could allow multiple page sizes by having a hash function for each size and inverted page table. Without one then a fixed division of the address space would have to with each address translation usually several (in Extreme case all) can be tried sequentially.  Due to the table size, a parallel one appears Implementation hardly possible.
  • 2. Bei kleinen Seiten, großen Realspeichern und riesigen Adreßräumen muß die verwendete Hashfunktion extrem gut sein, um eine ausreichend hohe Trefferrate zu gewährleisten. Wahrscheinlich sind Verfahren wie Universal Hashing nötig, die die Hashfunktion dynamisch ändern. Der Hardware und Softwareoverhead dürfte immens sein.2. With small pages, large real memories and huge ones The hash function used must be in address spaces be extremely good at a sufficiently high hit rate to guarantee. Procedures are likely like universal hashing, which has the hash function change dynamically. The hardware and software overhead should be immense.
  • 3. Sharing von Seiten oder ganzen Adreßraumteilen ist nicht möglich. Die von modernen Betriebs­ systemen geforderten hierarchischen Operationen (lazy copying, copy on write, mapping, locking) sind nicht mit akzeptabler Effizienz realisierbar.3. Sharing pages or entire parts of the address space can not. That of modern operation systems required hierarchical operations (lazy copying, copy on write, mapping, locking) cannot be realized with acceptable efficiency.

Aus Kostengründen kann nicht bei jedem Speicherzugriff eines Programms der Page Table Baum durchlaufen werden. Dieser Overhead wird mit Hilfe eines speziellen Caches für die Adreßumsetzung vermieden, eine Translation Lookaside Buffers (sogenannter TLB - nachfolgend auch Abbildungseinheit genannt). Normalerweise werden mehr als 90% aller Adreßumsetzungen durch TLB Treffer erledigt. Nur bei einem TLB Miss werden die Page Tables durchlaufen. Konventionelle TLBs halten typischerweise 32 bis 128 Einträge, von denen jeder die Adreßumsetzung einer Seite beschreibt. Sie sind teil­ weise voll assoziativ, häufig aber nur 4-Wege-assozia­ tiv aufgebaut. Manchmal werden anstatt oder zur Ergän­ zung dieser TLB′s virtuell adressierte Caches benutzt.For cost reasons, not every memory access of a program the page table tree are run through. This overhead is created using a special cache Avoid translation for address translation Lookaside Buffers (so-called TLB - hereinafter also Imaging unit called). Usually there will be more than 90% of all address conversions TLB hit done. Only with a TLB will they be missed Go through page tables. Hold conventional TLBs typically 32 to 128 entries, each of which is the Address translation of a page describes. You are part wise fully associative, but often only 4-way associative built up tiv. Sometimes, instead of or to complement tion of these TLB’s uses virtually addressed caches.

Schließlich ist unter anderem aus WO92/02879 eine Adressenumsetzung für virteulle Speicher bekannt, bei der ein TLB als Assoziativspeicher (CAM) realisiert wird.Finally, one is from WO92 / 02879, among others Address translation for virteulle memory known at a TLB is realized as an associative memory (CAM).

Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren der eingangs genannten Art anzugeben, mit dem sich bei reduzierter Anzahl und/oder Größe von Page Tables eine effektive und effiziente Abbildung eines ersten Bitstrings auf einen zweiten Bitstring realisieren läßt und dies insbesondere bei spärlich besetzten (kleine Datenseiten und/oder Kacheln) großen Adreßräumen.The invention has for its object a method of the type mentioned at the beginning, with which reduced number and / or size of page tables one effective and efficient mapping of a first bit string can be implemented on a second bit string and this especially with sparsely occupied (small Data pages and / or tiles) large address spaces.

Insbesondere soll eine MMU von ihrer Funktionsweise her beschrieben werden, die mit vertretbarem Speicher- und Zeitaufwand die Realisierung riesiger, spärlich besetz­ ter Adreßräume (2⁶⁴ Bytes oder mehr) mit möglichst feiner Granularität erlaubt. Dabei sollen die Vorteile der zuvor beschriebenen baumartigen Page Tables (Sharing von Teilbäumen, Unterstützung hierarchischer Operationen) erhalten bleiben. Die Granularität soll nicht uniform sein müssen, d. h. die Seitengröße soll im Adreßraum von Stelle zu Stelle variieren können. Dabei sind Seiten stets ausgerichtet, d. h. für die virtuelle Anfangsadresse v einer Seite mit Größe 2i gilt stets v mod 2i=0. Als noch vertretbarer Speicheraufwand wird für den Extremfall (nur Seiten mit Minimalgröße, zufäl­ lig verteilt) eine Verteilung von Nutzdaten zu Verwal­ tungsinformation (Page Tables) von etwa 1:1 ange­ sehen. Das Verhältnis sollte mit zunehmender Seiten­ größe drastisch besser werden.In particular, an MMU should be described in terms of its functionality, which allows the implementation of huge, sparsely populated address spaces (2⁶⁴ bytes or more) with the finest possible granularity with reasonable memory and time expenditure. The advantages of the tree-like page tables described above (sharing of subtrees, support of hierarchical operations) should be retained. The granularity should not have to be uniform, ie the page size should vary from place to place in the address space. Pages are always aligned, ie v mod 2 i = 0 always applies to the virtual start address v of a page with size 2 i . In the extreme case (only pages with a minimum size, randomly distributed), a distribution of user data for administrative information (page tables) of around 1: 1 is considered to be a justifiable storage effort. The ratio should improve drastically with increasing page size.

Zur Lösung dieser Aufgabe wird mit der Erfindung ein Verfahren zum Abbilden eines ersten Bitstrings mit einer ersten Länge auf einen zweiten Bitstring mit einer zweiten Länge vorgeschlagen, bei demTo solve this problem, the invention Method for mapping a first bit string with a first length to a second bit string proposed a second length where

  • a) ein erster Speicherbereich mit einer ersten An­ fangsadresse (p) und einer ersten Länge vorgegeben wird,a) a first memory area with a first type start address (p) and a first length becomes,
  • b) geprüft wird, ob die Länge des ersten Speicher­ bereichs größer oder gleich 2 potenziert mit der Länge des ersten Bitstrings (v) ist und, wenn dies der Fall ist, die Summe aus der ersten Anfangs­ adresse (p) des ersten Speicherbereichs und dem ersten Bitstring (v) den zweiten Bitstring ergibt (Datenseite erreicht), und, wenn die obige Prüfung negativ ist, der erste Speicherbereich als eine erste Tabelle genommen wird undb) it is checked whether the length of the first memory area greater than or equal to 2 potentiated with the Length of the first bit string (v) and if so the case is the sum of the first initial address (p) of the first memory area and the first bit string (v) results in the second bit string (Data page reached) and if the above check is negative, the first memory area as one first table is taken and
  • c) aus dem ersten Bitstring (v) Bits (u) an be­ stimmten Stellen ausgewählt werden, wobei die nicht ausgewählten verbleibenden Bits einen Restbitstring (w, v′) bilden,c) from the first bit string (v) bits (u) to be selected positions, the unselected remaining bits Form residual bit string (w, v ′),
  • d) die ausgewählten Bits (u) des ersten Bitstrings (v) einen Eintrag der ersten Tabelle bestimmen,d) the selected bits (u) of the first bit string (v) determine an entry in the first table,
  • e) dieser Eintrag der ersten Tabelle ausgelesen wird,e) this entry of the first table is read out becomes,
  • f) aus dem ausgelesenen Tabelleneintrag die An­ fangsadresse (p′) sowie Länge eines weiteren Speicherbereichs und eine eine Anzahl von Bits umfassende Bitfolge (g) abgeleitet werden,f) from the table entry read start address (p ′) and length of another Memory area and a number of bits comprehensive bit sequence (g) are derived,
  • g) aus dem Restbitstring (w, v′) eine Anzahl von Bits ausgewählt wird, die gleich der Anzahl der Bits der aus dem Tabelleneintrag der ersten Tabelle abgeleiteten Bitfolge (g) ist,g) from the residual bit string (w, v ′) a number of Bits that are equal to the number of bits selected Bits from the table entry of the first Table derived bit sequence (g) is
  • h) geprüft wird, ob die ausgewählten Bits des Restbitstrings (w, v′) als Folge betrachtet gleich der aus dem Tabelleneintrag der ersten Tabelle abgeleiteten Bitfolge (g) ist,h) it is checked whether the selected bits of the Residual bit strings (w, v ′) considered as a consequence equal to that from the table entry of the first Table derived bit sequence (g) is
  • i) eine Fehlermeldung dergestalt, daß die Abbil­ dung für den ersten Bitstring (v) nicht defi­ niert ist, erzeugt wird, wenn die obige Prüfung negativ ist,i) an error message such that the fig not defined for the first bit string (v)  is generated when the above test is negative
  • k) die Bitfolge (g) aus dem Restbitstring (w, v′) extrahiert wird, wenn die obige Prüfung positiv ist, undk) the bit sequence (g) from the residual bit string (w, v ′) is extracted if the above test is positive is and
  • l) das Verfahren ab Schritt b) mit dem nicht­ extrahierten verbleibenden Teil (v′) des Rest­ bitstrings (w, v′) als erstem Bitstring (v) sowie der Anfangsadresse (p′) und Länge des weiteren Speicherbereichs als Anfangsadresse (p) und Länge des ersten Speicherbereichs fort­ gesetzt wird.l) the procedure from step b) with not extracted remaining part (v ′) of the rest bit strings (w, v ′) as the first bit string (v) as well as the start address (p ′) and length of the additional memory area as the start address (p) and length of the first memory area is set.

Bei dem erfindungsgemäßen Verfahren wird von einem ersten Bitstring, der die virtuelle Adresse repräsentiert, ausgegangen und dieser erste Bitstring auf einen zweiten Bitstring abgebildet (umgesetzt, konvertiert od. dgl.), der die Realadresse darstellt. Vorgegeben werden ein erster Speicherbereich, der eine Anfangsadresse und eine Länge aufweist. Läßt sich mit dem ersten Bit­ string ein Bereich mit einer größeren Länge als der des ersten Speicherbereichs nicht vollständig adressieren, so erhält man den zweiten Bitstring aus der Summe der Anfangsadresse der ersten Tabelle und dem ersten Bit­ string, d. h. aus der Summe der durch die Anfangsadresse und dem ersten Bitstring jeweils repräsentierten Zahlen. In diesem Fall ist die Datenseite erreicht.In the method according to the invention, a first bit string that represents the virtual address, assumed and this first bit string to a second bit string mapped (converted, converted or the like), which represents the real address. Be specified a first memory area that has a start address and has a length. Can be done with the first bit string an area of greater length than that of do not fully address the first memory area, so you get the second bit string from the sum of Start address of the first table and the first bit string, d. H. from the sum of the starting address and the first bit string each represents numbers. In this case the data page is reached.

Der Normalfall wird sein, daß im ersten Umsetzschritt 2 potenziert mit der Länge des ersten Bitstrings größer ist als die Länge des ersten Speicherbereichs oder, umgekehrt ausgedrückt, der erste Speicherbereich kleiner ist als 2 potenziert mit der Länge des ersten Bitstrings. In diesem Fall handelt es sich bei dem ersten Speicherbereich um eine erste Tabelle, die zur Adreß­ umsetzung benutzt wird und deren Anzahl an Einträgen üblicherweise eine Zweier-Potenz ist. Vom ersten Bit­ string werden Bits an bestimmten Stellen ausgewählt, so daß die Abbildung der ausgewählten Bits auf die Einträge der ersten Tabelle eindeutig ist, d. h., daß die Anzahl der ausgewählten Bits gleich dem Zweier-Loga­ rithmus der Anzahl der Tabelleneinträge ist. Die nicht ausgewählten verbleibenden Bits des ersten Bitstrings bilden dann einen Restbitstring. Die ausgewählten Bits des ersten Bit­ strings bestimmen denjenigen Eintrag der ersten Tabel­ le, der ausgelesen werden soll. In diesem Eintrag be­ finden sich Informationen über die Anfangsadresse und die Länge eines weiteren Speicherbereichs. Ferner ist in diesem Eintrag der Tabelle aber auch eine Bitfolge mit einer bestimmten Bitlänge abgelegt. Bei dieser Bit­ folge handelt es sich um den später auch mit "Guard" bezeichneten Datenwert. Es wird nun überprüft, ob der Restbitstring z. B. mit dieser Bitfolge beginnt. Ist dies nicht der Fall, so wird eine Fehlermeldung ausgegeben, die besagt, daß die Abbildung nicht definiert ist. Ist die Prüfung hingegen positiv, so wird der Restbitstring um die Bits der Bitfolge "gekürzt", d. h. in diesem Bei­ spiel werden die führenden Bits abgeschnitten. Dann beginnt das Verfahren von vorn, wobei der verbleibende Teil des Restbitstrings als neuer erster Bitstring und die Anfangsadresse sowie Länge des weiteren Speicherbe­ reichs als Anfangsadresse und Länge des neuen ersten Speicherbereichs genommen werden.The normal case will be that in the first conversion step 2 exponentiates larger with the length of the first bit string is the length of the first memory area or, conversely, the first memory area is smaller is raised to the power of 2 with the length of the first bit string. In this case it is the first Memory area around a first table for address  implementation is used and their number of entries is usually a power of two. From the first bit string bits are selected at certain positions, see above that the mapping of the selected bits to the entries the first table is clear, d. that is, the Number of bits selected equal to the log of two is the number of table entries. They don't selected remaining  Bits of the first bit string then form one Residual bit string. The selected bits of the first bit strings determine the entry in the first table le to be read out. In this entry be there is information about the start address and the length of another memory area. Further is but also a bit sequence in this entry of the table stored with a certain bit length. At this bit the consequence is the later with "Guard" designated data value. It is now checked whether the Remaining bit string e.g. B. starts with this bit sequence. Is if this is not the case, an error message is issued, which says that the mapping is not defined. Is however, if the test is positive, the remaining bit string "truncated" by the bits of the bit string, i.e. H. in this case the leading bits are cut off. Then the process starts over, with the remaining one Part of the residual bit string as the new first bit string and the start address and length of the further memory area reichs as the start address and length of the new first Storage area can be taken.

Eine Variante des Verfahrens ist, den Restbitstring vor der Prüfung darauf, ob er den Guard enthält, zu permu­ tieren und ihn unter Umständen danach (zurück-) zu permutieren.A variant of the method is to precede the residual bit string checking to see if it contains the Guard animals and possibly (back) it afterwards permute.

Der Hauptgedanke der Erfindung spiegelt sich in der Maßnahme wieder, in einer Tabelle neben der Anfangs­ adresse für die Tabelle der nächsten Stufe oder die Datenseite einen Wert (Guard genannt) in Form der Bit­ folge zu speichern, der angibt, wieviel (und unter Um­ ständen welche) Bits von den Restbitfolgen abgetrennt werden, um mit den Anfangsbits des verbleibenden nicht­ abgetrennten Teils der Restbitfolgen den nächsten Speicherbereich (Tabelle oder Datenseite) deren An­ fangsadresse in dem ausgelesenen Eintrag der vorherigen Tabelle enthalten ist, zu adressieren und den Eintrag der derart spezifizierten Adresse dieser Tabelle aus zu­ lesen. Eine Fehlermeldung, daß die Umsetzung nicht definiert oder möglich ist, wird immer dann ausge­ gebenen, wenn die den Guard darstellende Bitfolge nicht in der Restbitfolge des ersten Bitstrings oder in dem ersten Bitstring selbst enthalten ist. Je länger der Guard ist, umso weniger Umsetzungsstufen (Zyklen) sind erforderlich.The main idea of the invention is reflected in the Measure again, in a table next to the beginning address for the table of the next level or the Data side a value (called Guard) in the form of the bit follow save, which indicates how much (and under order which bits would be separated from the remaining bit sequences not to be left with the beginning bits of the remaining separated part of the remaining bit sequences the next  Memory area (table or data page) whose type start address in the read entry of the previous one Table is included to address and the entry the address of this table specified in this way read. An error message that the implementation is not is defined or possible, is always used given if the bit sequence representing the guard is not in the remaining bit sequence of the first bit string or in the first bit string itself is included. The longer the Guard is, the fewer implementation stages (cycles) are required.

Vorteilhafterweise werden die ersten Bits des ersten Bitstrings genommen, um die auszulesende Adresse der ersten Tabelle zu spezifizieren. Vorzugsweise wird auch der Guard mit den ersten Bits der verbleibenden Rest­ bitfolge des ersten Bitstrings auf Identität ver­ glichen. Man kann in beiden Fällen auch andere als die ersten Bits verwenden.The first bits of the first are advantageously Bit strings taken to read the address of the to specify the first table. Preferably too the guard with the first bits of the rest remaining bit sequence of the first bit string ver like. You can do other than that in both cases use the first bits.

Eine vorteilhafte Weiterbildung der Erfindung ist in Anspruch 4 angegeben. Hierbei wird die identische Ab­ bildung als Spezialfall einer Permutation betrachtet.An advantageous development of the invention is in Claim 4 specified. The identical Ab education viewed as a special case of a permutation.

Schließlich ist es von Vorteil, das erfindungsgemäße Verfahren dahingehend abzuändern, daß pro Umsetzschritt mehrere Guards daraufhin untersucht werden, ob ihre jeweilige Bitfolge in dem betreffenden Restbitstring enthalten ist. Diese Weiterbildung ist in Anspruch 5 angegeben. Hierdurch wird eine Beschleunigung der Um­ setzung bzw. eine Reduktion der für die Tabellen be­ nötigte Speichergröße erzielt. Wenn man das bisherige erfindungsgemäße Verfahren mit "(einfachen) guarded Page Tables" bezeichnen würde, so würde es sich bei dem Verfahren nach Anspruch 5 um "k-assoziative guarded Page Tables" handeln, wobei k für die Anzahl von pro Umsetzschritt zu vergleichender Guard-Bitfolgen steht.Finally, it is advantageous that the invention Modify the procedure so that per conversion step several guards are checked to see if their respective bit sequence in the relevant residual bit string is included. This further training is in claim 5 specified. This will accelerate the order occupation or a reduction of the for the tables required memory size achieved. If you take the previous one Method according to the invention with "(simple) guarded Page Tables "would be the case with the The method of claim 5 to "k-associative guarded  Page Tables ", where k is the number of per Implementation step of comparing guard bit sequences is available.

Die Merkmale weiterer vorteilhafter Ausgestaltungen der Erfindung sind in den übrigen Unteransprüchen angegeben.The features of further advantageous embodiments of the Invention are specified in the remaining subclaims.

Nachfolgend werden anhand der Figuren Ausführungsbei­ spiele der Erfindung näher erläutert. Im einzelnen zeigt:In the following, the figures are used to implement the figures games of the invention explained in more detail. In detail shows:

Fig. 1 eine bildliche Darstellung eines Umsetzungs­ schritts des erfindungsgemäßen Verfahrens gemäß dem Ausführungsbeispiel als "einfache guarded Page tables", Fig. 1 is a pictorial representation of a conversion step of the inventive method according to the embodiment as "simple guarded Page tables",

Fig. 2 ein Beispiel für drei binäre Page Tables mit je zwei Einträgen bei einer 20-bit Adreßumsetzung unter Zuhilfenahme des Verfahrens gemäß Fig. 1, Fig. 2 shows an example for three binary page tables, each with two entries with a 20-bit address translation with the aid of the method according to FIG. 1,

Fig. 3 eine bildliche Darstellung des erfindungsge­ mäßen Verfahrens gemäß dem Ausführungsbeispiel in der Form mit "K-assoziativen guarded Page Tables", Fig. 3 is a pictorial representation of the erfindungsge MAESSEN method according to the embodiment in the form of "K-associative guarded Page Tables",

Fig. 4 das erfindungsgemäße Verfahren in der Ausge­ staltung mit "k/j-assoziativen guarded Page Tables", Fig. 4, the method according to the invention in the extended staltung with "k / j-associative guarded Page Tables",

Fig. 5 das Verfahren gemäß Fig. 4, jedoch mit einem abgespeicherten Hinweiselement, Fig. 5, the method according to FIG. 4, however, with a stored reference element

Fig. 6 eine schematische Darstellung für die Verwen­ dung von mehreren sukzessive abzuarbeitenden TLBs (in den Ansprüchen mit Abbildungseinheit bezeichnet) für das "guarded Page Table"-Ver­ fahren, Fig. 6 is a schematic representation for the USAGE dung of several successively be processed TLBs (in the claims with imaging unit) for driving the 'guarded Page Table "-ver,

Fig. 7 eine Realisierung für eine Cache mit TLB₀-Funk­ tion, Fig. 7 tion a realization for a cache with TLB₀ radio,

Fig. 8 eine erste Alternative einer Realisierung für den in Fig. 6 mit TLB₁ bezeichneten Baustein, Fig. 8 shows a first alternative of realization for the designated in Fig. 6 with TLB₁ block,

Fig. 9 eine zweite Alternative für die Realisierung der in Fig. 6 mit TLB₁ bezeichneten Funktion, Fig. 9 shows a second alternative for the realization of the function indicated in Fig. 6 with TLB₁,

Fig. 10 eine bildliche Darstellung eines Umsetzungs­ schritts des erfindungsgemäßen Verfahrens gemäß einer weiteren Ausführungsform (User-Level- Mapping), Fig. 10 is a pictorial representation of a conversion step of the inventive method according to another embodiment (User-level mapping);

Fig. 11 eine schematische Darstellung eines Teils der Baumstruktur zur Verdeutlichung der Abarbeitung desselben gemäß dem Verfahren nach Fig. 10, Fig. 11 is a schematic representation of a portion of the tree structure for illustrating the processing thereof according to the method of Fig. 10,

Fig. 12 eine Darstellung des konventionellen "realen" Aliasing zur Verdeutlichung des Unterschieds dieses Verfahrens gegenüber demjenigen nach den Fig. 10 und 11, Fig. 12 is an illustration of the conventional "real" aliasing to clarify the difference of this method over that shown in FIGS. 10 and 11

Fig. 13 eine bildliche Darstellung eines Umsetzungs­ schritts gemäß einem weiteren Ausführungsbei­ spiel der Erfindung, Fig. 13 is a pictorial representation of a conversion step in accordance with a further Ausführungsbei game of the invention,

Fig. 14 eine bildliche Darstellung eines Umsetzungs­ schrittes, wie er bei einer weiteren Ausfüh­ rungsform des erfindungsgemäßen Verfahrens ab­ laufen kann, Fig. 14 is a pictorial representation of a conversion of the inventive method can be executed from step as approximate shape in a further exporting,

Fig. 15 eine erste Alternative einer Hardware-Realisie­ rung des Translators einer MMU gemäß der Erfin­ dung, Fig. 15 is a first alternative of a hardware Realisie tion of the translator of a MMU in accordance with the OF INVENTION dung,

Fig. 16 eine zweite Alternative einer Hardware-Reali­ sierung des Translators einer MMU gemäß der Erfindung, Fig. 16 is a second alternative of a hardware Reali tion of the translator of a MMU in accordance with the invention,

Fig. 17 eine dritte Alternative einer Hardware-Reali­ sierung des Translators einer MMU gemäß der Erfindung, Fig. 17 shows a third alternative of a hardware Reali tion of the translator of a MMU in accordance with the invention,

Fig. 18 eine bildliche Darstellung eines Umsetzungs­ schrittes bei dem konventionellen Page-Table- Verfahren, Fig. 18 is a pictorial representation of a conversion step-table Page method in the conventional,

Fig. 19 das konventionelle Page-Table-Verfahren grafisch dargestellt als zweistufiges Verfahren und Fig conventional page table method illustrated. 19 graphically as a two-step procedure and

Fig. 20 eine bildliche Darstellung eines Umsetzungs­ schritts bei dem konventionellen Verfahren mit "inverted Page Tables". Fig. 20 is a pictorial representation of an implementation step in the conventional method with "inverted page tables".

Anhand von Fig. 1 wird nachfolgend der Ablauf eines Umsetzungsschritts des Verfahrens in der Version mit einfachen guarded Page Tables erläutert.Referring to Fig. 1, the flow of a reaction step of the method is explained in the version with simple guarded page tables below.

Die zentrale Idee der guarded Page Tables ist die Er­ gänzung jedes Page Table Eintrags um einen Bitstring g mit variabler Länge, der als Guard bezeichnet wird. Zuerst wird bei jedem Umsetzschritt wie bei der konven­ tionellen Methode durch den höchstwertigen Teil u der virtuellen Adresse v ein Page Table Eintrag einer Page Table mit der Anfangsadresse p ausgewählt und die Aktion x gegen das Accessattribut a geprüft. Der ange­ wählte Eintrag enthält aber nicht nur Accessattribut und Zeiger (Anfangsadresse) für die nächste Page Table, sondern auch eine weitere Bitfolge, den sogenannten Guard g. Anhand der aktuellen Länge von g wird die restliche virtuelle Adresse in einen höherwertigen Teil w (gleichlang wie g) und niederwertigen Teil v′ aufge­ spalten. Dann wird geprüft, ob g=w gilt. Bei Un­ gleichheit wird die Umsetzung mit Page Fault abge­ brochen, bei Gleichheit wird sie mit x, p′ und v′ in der nächsten Stufe fortgesetzt bzw. p′+v′ wird von der letzten Stufe als Realadresse geliefert.The central idea of the guarded page tables is the he Adding a bit string to each page table entry g with variable length, which is called Guard. First, every conversion step is the same as for the konven tional method by the most significant part u virtual address v a page table entry of a page Table with the start address p selected and the  Action x checked against the access attribute a. The ange The selected entry does not only contain the access attribute and pointer (start address) for the next page table, but also another bit sequence, the so-called Guard g. Based on the current length of g, the remaining virtual address in a higher value part w (same length as g) and low-order part v ' columns. Then it is checked whether g = w. At Un Equality is implemented with Page Fault broken, in the case of equality, it is in x, p ′ and v ′ in the next stage or p ′ + v ′ is from the last stage as a real address.

Man beachte, daß die Länge der Guards von Eintrag zu Eintrag differieren kann. Ihre aktuelle Länge ist also als Längenfeld oder auf andere Weise geeignet codiert im Page Table Eintrag enthalten. Bei Guards der Länge 0 (G=Φ) arbeitet das Verfahren genau wie das konventio­ nelle. Aber immer, wenn konventionell Page Tables mit genau einem belegten Eintrag benötigt würden, kann hier statt dessen ein Guard eingesetzt werden. Ein Guard kann sogar eine Folge solcher Page Tables ersetzen, die nur je einen gültigen Eintrag enthalten. Damit werden so­ wohl Speicher als auch Umsetzschritte gespart, d. h. Guards wirken als Abkürzung.Note that the length of the guards increases from entry to Entry can differ. So your current length is encoded as a length field or otherwise included in the page table entry. For guards of length 0 (G = Φ) the process works exactly like the convention nelle. But always when using conventional page tables exactly one occupied entry would be needed here a guard can be used instead. A guard can even replace a sequence of such page tables that only each contain a valid entry. So that will be probably saved memory as well as conversion steps, d. H. Guards act as a shortcut.

Als Beispiel sei in Fig. 2 eine 20-bit Adreßumsetzung gezeigt, die drei binäre Page Tables (je zwei Einträge) verwendet. Weiterhin beinhaltet jeder Page Table Ein­ trag (im mit p bezeichneten Teil) nicht nur den Pointer auf die nächststufige Page Table oder Datenseite, son­ dern zusätzlich eine Größenangabe s für dieses Objekt. Bei Page Tables bezeichnet s die Zahl der Einträge; zulässig sind alle Zweierpotenzen 1, 2, 4, 8, . . . Aus der aktuellen Page Table Größe ergibt sich dann jeweils die Länge von u. Man kann zeigen, daß aufgrund der obi­ gen flexiblen Baumstruktur mit Hilfe der Guards Page Table Bäume so konstruiert werden können, daß höchsten zwei Page Table Einträge pro Datenseite benötigt wer­ den, und zwar unabhängig von Adreßraumgröße und Seitengröße.As an example, a 20-bit address conversion is shown in FIG. 2, which uses three binary page tables (two entries each). Furthermore, each page table entry (in the part labeled p) contains not only the pointer to the next level page table or data page, but also a size specification s for this object. For page tables, s denotes the number of entries; all powers of two 1, 2, 4, 8,. . . The current page table size then results in the length of u. It can be shown that due to the above flexible tree structure, guards can be used to construct page table trees in such a way that a maximum of two page table entries are required per data page, regardless of the address space size and page size.

Zusammen mit den variabel großen Datenseiten sollten damit fast immer mehr als 50% Nutzdaten erreichbar sein. Bei 8 Bytes pro Page Table Eintrag lassen sich Guards bis 30-bit Länge verwenden. Dann sind bei 32-bit Adressen maximal 16 Bytes Verwaltungsinformation pro Seite nötig. Bei 64-bit Adressen können in manchen Fäl­ len längere Guards nötig werden, die dann durch einen zusätzlichen Eintrag à 8 Bytes realisiert werden. Im worst case (nie mehr als eine Seite pro 2³¹ Bytes und nur 16-Byte-Seiten) sind dann 40% der Daten Nutzdaten.Together with the variable sized data pages should almost always more than 50% user data can be reached his. With 8 bytes per page table entry can be Use guards up to 30-bit length. Then at 32-bit Addresses maximum 16 bytes of administration information per Side needed. With 64-bit addresses, in some cases longer guards are necessary, which are then replaced by a additional entry of 8 bytes each can be realized. in the worst case (never more than one page per 2³¹ bytes and only 16 byte pages) then 40% of the data is user data.

Wie man ebenfalls zeigen kann, können weiterhin die Adreßumsetzungsbäume so konstruiert werden, daß höch­ sten n/2 Stufen für eine n-bit Adreßumsetzung nötig sind, wobei der oben aufgeführte Speicherbedarf nicht überschritten wird. Bei 64-bit Adressen sind somit maximal 30 Stufen, bei 32-bit Adressen 14 Stufen nötig, um 16-Byte-Seiten zu erreichen.As can also be shown, the Address translation trees are constructed so that maximum Most n / 2 levels necessary for an n-bit address translation are, but the memory requirements listed above are not is exceeded. So with 64-bit addresses 30 levels maximum, 14 levels required for 32-bit addresses, to reach 16 byte pages.

Einen Umsetzschritt für das Verfahren mit k-assozia­ tiven guarded Page Tables zeigt Fig. 3. Bei k-assozia­ tiven guarded Page Tables wird in jedem Schritt nicht ein Page Table Eintrag ausgewählt, sondern gleich k Stück. Für höchstmögliche Geschwindigkeit braucht man also k parallele Werke und parallele Datenpfade für k Page Table Einträge. Die Page Table besteht jetzt nicht mehr aus s einfachen Einträgen, sondern aus s/k Clustern, die aus je k einfachen Einträgen bestehen. Fig. 3 shows an implementation step for the method with k-associative guarded page tables . With k-associative guarded page tables, not a page table entry is selected in each step, but k pieces. For the highest possible speed you need k parallel works and parallel data paths for k page table entries. The page table now no longer consists of s simple entries, but of s / k clusters, each consisting of k simple entries.

u ist entsprechend kürzer und wählt einen Cluster aus. Ist bei einer Page Table k<s, wird k für diesen Um­ setzschritt gekürzt, d. h. nur s-assoziativ gearbeitet. Bei k=4 ergibt sich die in Fig. 3 dargestellte Situa­ tion. Hier werden die vier angewählten Einträge paral­ lel gelesen und (parallel) ausgewertet. Man beachte, daß sich die Guards gi normalerweise hinsichtlich ihrer Längen unterschieden, d. h. für die verschiedenen Ver­ gleiche wird der um u gekürzte Bitstring in verschie­ dene Paare wi, vi′ aufgeteilt. Falls kein Treffer auf­ tritt (alle gi≠wi), wird die Umsetzung mit Page Fault abgebrochen. Bei genau einem Treffer gi=wi wird das Accessattribut ai gegen die Aktion x geprüft, und im Gültigkeitsfall werden x, pi und vi′ an die nächste Stufe weitergereicht bzw. als Realadresse geliefert. Bei mehreren Treffern ist das Resultat nicht definiert. Wie man zeigen kann, erlauben 8-assoziative guarded Page Tables n-bit Adreßumsetzung in maximal n/4 Schritten bei höchsten zwei (einfachen) Einträgen pro Datenseite. Bei 64-bit Adressen sind somit maximal 15 Stufen, bei 32-bit Adressen 7 Stufen nötig, um 16-Byte- Seiten zu erreichen.u is correspondingly shorter and selects a cluster. If k <s in a page table, k is shortened for this conversion step, ie only s-associative. At k = 4, the situation shown in Fig. 3 results. Here the four selected entries are read in parallel and evaluated (in parallel). It should be noted that the guards g i normally differ in terms of their lengths, ie for the different comparisons the bit string shortened by u is divided into different pairs w i , v i '. If no hit occurs (all g i ≠ w i ), the implementation is aborted with Page Fault. If exactly one hit g i = w i , the access attribute a i is checked against the action x, and in the event of validity, x, p i and v i ′ are passed on to the next level or delivered as a real address. If there are multiple hits, the result is not defined. As can be shown, 8-associative guarded page tables allow n-bit address translation in a maximum of n / 4 steps with a maximum of two (simple) entries per data page. With 64-bit addresses, a maximum of 15 levels are required, with 32-bit addresses 7 levels are required to reach 16-byte pages.

Fig. 4 zeigt ein Beispiel für einen Umsetzschritt bei dem Verfahren mit k/j-assoziativen guarded Page Tables. k/j-assoziative guarded Page Tables haben dieselbe Semantik wie k-assoziative. Sie benötigen aber nur k/j- fache Parallelität zur Realisierung. Für höchstmögliche Geschwindigkeit braucht man also nur k/j parallele Werke und parallele Datenpfade für k/j Einträge. (Dabei sollte k durch j ohne Rest teilbar sein. Außerdem soll­ ten beides Zweierpotenzen sein.) Das k Einträge umfas­ sende Cluster wird in j (gleichgroße und zusammenhän­ gende) Teilcluster (Teilbereiche) aufgeteilt. Ist bei einer Page Table k<s, wird k für diesen Umsetzschritt auf s gekürzt. Ist sk/j, wird s-assoziativ gearbei­ tet, sonst s/j′-assoziativ, wobei j′ so gewählt wird, daß die Länge der Teilcluster unverändert bleibt, d. h. k/j=a/j′. Das bereitet keine Probleme, wenn s, k und j Zweierpotenzen sind. Um die Semantik der k-Assoziati­ vität zu erhalten, wird die Umsetzoperation dann sequentiell (k/j-parallel) auf verschiedenen Teil­ clustern durchgeführt, bis entweder ein Treffer ent­ steht oder alle j Teilcluster abgearbeitet sind. Wird kein Treffer gefunden, wird die Adreßumsetzung mit Page Fault abgebrochen, bei einem Treffer wird wie in anhand von Fig. 3 beschrieben Verfahren. Diese Methode ist offensichtlich nur effizient, wenn mögliche Treffer häufig schon beim ersten Versuch gefunden werden. Um einen Hinweis zu erhalten, werden nach dem Entfernen von u die höchstwertigen log₂ (k) Bits der verbleiben­ den virtuellen Adresse als Hinweis h genommen (diese werden aber weiterhin zur Bildung von wi verwendet). Bei einfachen k/j-assoziativen guarded Page Tables wird mit dem durch h/j adressierten Teilcluster begonnen. Die weitere Reihenfolge kann dann durch Inkrementieren von h/j modulo j bestimmt werden. Andere Reihenfolgen sind genauso möglich, z. B. von 0 bis j-1 bei Auslas­ sung von h/j. Sie spielen für die Effizienz keine Rolle. Fig. 4 shows an example of a conversion step in the process with k / j-associative guarded page tables. k / j-associative guarded page tables have the same semantics as k-associative. You only need k / j times the parallelism for the implementation. For the highest possible speed you only need k / j parallel works and parallel data paths for k / j entries. (Here, k should be divisible by j without a remainder. In addition, both should be powers of two.) The cluster containing k entries is divided into j (equally large and related) subclusters (subareas). If k <s in a page table, k is reduced to s for this conversion step. If sk / j, s-associative is used, otherwise s / j′-associative, where j ′ is chosen so that the length of the subclusters remains unchanged, ie k / j = a / j ′. This is not a problem if s, k and j are powers of two. In order to maintain the semantics of the k-association, the conversion operation is then carried out sequentially (k / j-parallel) on different sub-clusters until either a hit arises or all j sub-clusters are processed. If no hit is found, the address conversion is aborted with Page Fault; a hit is carried out as described in FIG. 3 using the method. This method is obviously only efficient if possible hits are often found on the first try. To get a hint, after removing u, the most significant log₂ (k) bits of the remaining virtual address are taken as h (but are still used to form w i ). For simple k / j associative guarded page tables, the sub-cluster addressed by h / j is started. The further sequence can then be determined by incrementing h / j modulo j. Other orders are also possible, e.g. B. from 0 to j-1 at Auslass solution of h / j. They don't matter for efficiency.

Bei k/j-assoziativen guarded Page Tables mit Hinweis ist jedes p (sowohl in Page Table Einträgen als auch im Root oder in TLB′s) um ein Feld H mit k Hinweiselemen­ ten ergänzt (dieses ist mit k log₂ (j) Bits relativ klein). Dann wird in jedem Schritt mit dem durch p·H[h] = h′ adressierten Teilcluster begonnen. Wird ein Tref­ fer nicht in dem durch h′ adressierten Teilcluster er­ zielt, sondern in einem anderen der Nummer h′′, wird das Hinweiselement neu geladen: p·H[h]:=h′′. Somit justie­ ren sich Hinweise automatisch.With k / j associative guarded page tables with note is every p (both in page table entries and in Root or in TLB’s) around a field H with k clue elements ten added (this is relative with k log₂ (j) bits small). Then in each step with the by p · H [h] = h ′ addressed subcluster started. Will a meeting fer not in the sub-cluster addressed by h ′ aims, but in another the number h ′ ′, that will  Hint element reloaded: p · H [h]: = h ′ ′. So justie notices are automatically deleted.

Man kann zeigen, daß 8/2-assoziative guarded Page Tables mit Hinweisen n-bit Adreßumsetzung in maximal n/4 Schritten bei höchsten 2 2/7 Einträgen pro Daten­ seite erlauben. Sie benötigen dazu im wesentlichen die­ selbe Zeit wie 8-assoziative, benötigen aber nur 4 statt 8 parallele Werke und entsprechend schmalere Datenpfade.It can be shown that 8/2 associative guarded page Tables with notes n-bit address conversion in maximum n / 4 steps with a maximum of 2 2/7 entries per data Allow side. You essentially need the same time as 8-associative, but only need 4 instead of 8 parallel works and accordingly narrower Data paths.

Um ausreichend schnelle Adreßumsetzung zu erzielen, müssen auch guarded Page Table Translatoren durch TLB′s unterstützt werden. Spezielle Probleme sind hierbei die unterschiedliche Seitengrößen, größere Working Sets (wegen der kleineren Granularität mehr Seiten) und tie­ fere Bäume bei riesigen Adreßräumen (Tiefe 15 bei 60- bit Adreßumsetzung), d. h. höhere Kosten bei TLB-miss.In order to achieve a sufficiently fast address translation, also need guarded page table translators through TLB’s get supported. Here are special problems different page sizes, larger working sets (more pages because of the smaller granularity) and tie distant trees with huge address spaces (depth 15 at 60- bit address translation), d. H. higher costs with TLB-miss.

Zur Lösung wird ein mehrstufiger TLB eingesetzt, wie er in Fig. 6 dargestellt ist.A multi-stage TLB as shown in FIG. 6 is used for the solution.

TLB₀ ist ein mehr oder minder konventioneller TLB auf Seitenbasis oder ein auch virtuell adressierbarer Cache; ein Treffer ergibt direkt die entsprechende Realadresse. TLB₁ operiert auf größeren Regionen (z. B. 16 MB), so daß bei einem ′near miss′ (TLB₀-miss und TLB₁-Treffer) ein Quereinstieg in den Page Table Baum möglich wird und nur ein kleiner Teil des Baumes pas­ siert zu werden braucht. Dieses Verfahren läßt sich bei Bedarf auf natürliche Weise um weitere TLB₁-Stufen er­ weitern.TLB₀ is a more or less conventional TLB Page basis or a virtually addressable one Cache; a hit directly results in the corresponding one Real address. TLB₁ operates on larger regions (e.g. 16 MB), so that with a 'near miss' (TLB₀-miss and TLB₁ hit) a lateral entry into the page table tree possible and only a small part of the tree pas needs to be fixed. This method can be used Need in a natural way for more TLB₁ levels continue.

Wesentliches Problem des in Fig. 6 dargestellten TLB₀ sind die unterschiedlich großen Seiten. Bekannte Lösung für ein voll-assoziativer TLB (wie z. B. beim MIPS R4000), was einen hohen Schaltungsaufwand zur Folge hat, oder ein virtuell adressierter Cache, der zwar schneller als ein real adressierter Cache ist, jedoch Schwierigkeiten bei Synonymen und Konsistenzprobleme bei Multiprozessoren verursacht.The main problem of the TLB₀ shown in Fig. 6 are the different sized pages. Known solution for a fully associative TLB (such as the MIPS R4000), which requires a lot of circuitry, or a virtually addressed cache, which is faster than a real addressed cache, but has difficulties with synonyms and consistency problems Causes multiprocessors.

Eine weitere Lösung ist ein virtuell und real adres­ sierbarer Cache, der die Vorteile eines virtuell adres­ sierten (TLB für kleine, viele und unterschiedlich große Seiten) und eines real adressierten Caches (Syno­ nyme möglich, geeignet für Multiprozessorsysteme) ver­ eint. Dies zeigt Fig. 7. Hier enthält das Feld je­ weils das End-Accessattribut, was durch Kombination der Accessattribute der einzelnen Stufen bei der Adreßum­ setzung entsteht.Another solution is a virtual and real addressable cache, which combines the advantages of a virtual addressed (TLB for small, many and differently sized pages) and a real addressed cache (synonyms possible, suitable for multiprocessor systems). This is shown in FIG. 7. Here the field contains the end access attribute, which is created by combining the access attributes of the individual stages in the address implementation.

Wie für den TLB₀ sind für den TLB₁ (und für höhere Stufen) mehrere Lösungen möglich. Eine ist in Fig. 8 gezeigt. So kann z. B. ein spezieller Cache (direct mapped oder n-fach assoziativ) für die einzelnen Regio­ nen verwendet werden. Er wird mit der Region (z. B. v÷2²⁴) adressiert und liefert bei einem Treffer den nächstmöglichen Einstieg in den Page Table Baum. Das sind die Adresse des entsprechenden Page Table Eintrags und seine Tiefe, d. i. die Anzahl führender Bits der virtuellen Adresse, die bis zu diesem Eintrag schon dekodiert sind (man beachte, daß der Eintrag nicht un­ bedingt auf der "Regionstiefe" sein muß, sondern auf­ grund der Guards auch höher angesiedelt sein kann) und deshalb beim Quereinstieg in den Adreßumsetzbaum von der virtuellen Adresse v die führenden Bits entfernt werden müssen. enthält hier die Accessattribute, die durch Kombination der Page Table Accessattribute bei der Adreßumsetzung bis zur Region entstanden sind. Bei TLB₁-hit und erlaubter Aktion (x) wird gemäß des erfindungsgemäßen Verfahrens die Adreßumsetzung schrittweise durchgeführt. Dabei wird mit v′ als vir­ tueller Adresse und p′ als Adresse einer Page Table mit nur einem Eintrag begonnen (da TLB₁ nicht die Page Table sondern schon den entsprechenden Page Table Ein­ trag liefert). Bei TLB₁-miss wird eine vollständige Adreßumsetzung nach dem erfindungsgemäßen Verfahren durchgeführt. Der dabei gefundene bestmögliche Einstieg in die Region wird dann in den TLB₁-Cache aufgenommen.As for the TLB₀, several solutions are possible for the TLB₁ (and for higher levels). One is shown in Fig. 8. So z. B. a special cache (direct mapped or n-fold associative) can be used for the individual regions. It is addressed with the region (e.g. v ÷ 2²⁴) and provides the next possible entry into the page table tree when a hit is made. This is the address of the corresponding page table entry and its depth, ie the number of leading bits of the virtual address that have already been decoded up to this entry (note that the entry does not necessarily have to be at the "region depth", but on because of the guards can also be located higher) and therefore the leading bits have to be removed from the virtual address v when entering the address translation tree. contains the access attributes that were created by combining the page table access attributes when converting addresses to the region. With TLB1 hit and allowed action (x), the address implementation is carried out step by step according to the inventive method. This starts with v ′ as the virtual address and p ′ as the address of a page table with only one entry (since TLB₁ does not supply the page table but already the corresponding page table entry). At TLB₁-miss a complete address translation is carried out according to the inventive method. The best possible entry into the region found is then included in the TLB₁ cache.

Eine weitere Alternative für den TLB₁ gemäß Fig. 6 ist im oberen Teil von Fig. 9 gezeigt. Bei Verwendung eines ausreichend großen TLB₀ respektive eines auch virtuell adressierbaren Datencaches kann auf einen speziellen Cache für TLB₁ verzichtet werden. Statt dessen kann eine zwei- (oder mehr-) stufige Hierarchie von Adreßumsetz­ bäumen benutzt werden. Linearisiert sieht der Adreß­ raum dann z. B. wie im unteren Teil von Fig. 9 gezeigt aus.A further alternative for the TLB 1 according to FIG. 6 is shown in the upper part of FIG. 9. When using a sufficiently large TLB₀ or a virtually addressable data cache, there is no need for a special cache for TLB₁. Instead, a two (or more) tier hierarchy of address translation trees can be used. Linearized, the address space then sees z. B. as shown in the lower part of FIG. 9.

Für jede Region wird ein eigener Baum verwendet. Die Wurzeln dieser Bäume sind über einen speziellen Bereich im virtuellen Adreßraum (′region roots′) erreichbar. Bei einem TLB₀-miss wird nun versucht, den entsprechen­ den Regionalbaum über seine virtuelle Adresse im Be­ reich ′region roots′ anzusprechen. Gelingt das vermit­ tels TLB₀-hit bei der entsprechenden virtuellen region­ root-Adresse, liegt ein TLB₁-hit vor. Dann braucht nur der (nicht sehr tiefe) Regionalbaum durchlaufen zu werden. Andernfalls wird beginnend bei ′root′ eine vollständige Adreßumsetzung der virtuellen region-root-Adresse durchgeführt und danach der Regionalbaum parsiert. Diese Methode benötigt weniger Hardware, kann aber im Extremfall (nur eine Seite pro Region) pro erreichbarer Seite einen zusätzlichen Page Table Eintrag erfordern. Ist die kleinste Seite größer als ein Page Table Ein­ trag, kann der zusätzliche Speicherbedarf aufgrund Fragmentierung des ′region root′ Bereiches entsprechend steigen.A separate tree is used for each region. The Roots of these trees are over a special area accessible in the virtual address space ('region roots'). In the case of a TLB₀ miss, an attempt is now made to match the the regional tree via its virtual address in the Be to address reich 'region roots'. If this succeeds tels TLB₀ hit at the corresponding virtual region root address, there is a TLB1 hit. Then just need going through the (not very deep) regional tree. Otherwise, a complete one starts at 'root' Address translation of the virtual region root address carried out and then parsed the regional tree. This method requires less hardware, but can be used in Extreme case (only one page per region) per reachable  Page require an additional page table entry. The smallest page is larger than a page table trag, may be due to the additional memory requirements Fragmentation of the 'region root' area accordingly climb.

Im folgenden soll auf eine weitere Besonderheit einge­ gangen werden, die insbesondere bei feingranularem Mapping bei großen Adreßräumen, die spärlich besetzt sind, auftritt.The following is intended to address another special feature be used, especially in the case of fine granular Mapping for large address spaces that are sparsely populated are occurs.

Feingranulares Mapping ermöglicht Zugriffskontrolle auf der Ebene von logischen Speicherobjekten (Programm­ variablen). Damit kann es sowohl im Bereich der klas­ sischen imperativen Programmiersprachen, als auch in objektorientierten und deklarativen Sprachen sinnvoll eingesetzt werden, insbesondere bei verteilten oder massiv-parallelen Systemen. Typische Anwendungen sind:Fine granular mapping enables access control to the level of logical storage objects (program variables). It can be used both in the field of class imperative programming languages, as well as in object-oriented and declarative languages make sense are used, especially in distributed or massive parallel systems. Typical applications are:

1. Aliasing1. Aliasing

Abbildung eines virtuellen Speicherobjekts auf ein anderes virtuelles Speicherobjekt. Das kann bei­ spielsweise zur Objektsynthese eingesetzt werden, aber auch zur Konstruktion alternativer Sichten oder einfach zur Parameterübergabe.Illustration of a virtual memory object on a other virtual storage object. That can with are used for example for object synthesis, but also for the construction of alternative views or simply for parameter transfer.

2. Call On Reference2. Call On Reference

Aufruf einer benutzerdefinierten Prozedur bei Zu­ griff. Damit kann spezielle Zugriffssemantik an Speicherbereiche gekoppelt werden, beispielsweise ′Verzögerung beim Lesezugriff′ (Wert der Variablen ist noch nicht berechnet), ′Signal beim Schreibzu­ griff′, ′Remote Object Invocation′, ′Stellver­ treterzugriff′ oder einfach ′Zugriffsprotokoll′.Call of a user-defined procedure at Zu Handle. This enables special access semantics Memory areas are coupled, for example 'Delay in read access' (value of the variable is not yet calculated), ′ signal when writing  handle ′, ′ Remote Object Invocation ′, ′ Stellver treadle access' or simply 'access log'.

Die Kopplung beider Methoden erlaubt effiziente Reali­ sierung verteilter Speicher, da auf potentiell ent­ fernte Objekte mit den Methoden der Local Object Invo­ cation zugegriffen werden kann. Die Speicherzugriffe werden dann im aktuell lokalen Fall direkt durchge­ führt, im aktuell entfernten algorithmisch. Die Unter­ scheidung geschieht durch Hardware. Funktional läßt sich das alles durch das Betriebssystem (µ-Kern) in Software realisieren. Da aber bei den erwähnten Metho­ den sehr häufige Änderungen des Mappings zu erwarten sind, ist aus Effizienzgründen eine direkte Änderungs­ möglichkeit des Mappings durch das (User Level) Pro­ gramm ohne Einschaltung des Betriebssystems wünschens­ wert. Diese Möglichkeit darf nicht gegen das Sicher­ heitsparadigma des Betriebssystems verstoßen.The coupling of both methods allows efficient realities distributed storage since potentially ent removed objects using the methods of Local Object Invo cation can be accessed. The memory accesses are then carried out directly in the currently local case leads, in the currently removed algorithmic. The sub divorce happens through hardware. Functionally leaves all this through the operating system (µ core) Realize software. But since the metho mentioned to expect the very frequent changes in the mapping is a direct change for efficiency reasons Mapping possible by the (User Level) Pro grams without switching on the operating system value. This possibility must not be against the certainty paradigm of the operating system violate.

User-Level-Mapping ist, wie oben erwähnt, besonders interessant, wenn die MMU feingranulare Adreßräume zuläßt. Das im folgenden zu beschreibende Verfahren läßt sich aber genauso in andere insbesondere fein- oder grobgranular abbildende MMUs einbauen. Diese MMUs sollten vorzugsweise darauf basieren, eine virtuelle Adresse anhand eines Page Table Baums in eine Real­ adresse umzusetzen. Dies ist aber nicht zwingend erfor­ derlich. Page Table Einträge bestehen konventionell aus einem Accessattribut a, das die gültigen Aktionen auf dem Speicherbereich bestimmt, und einem Zeiger π, der bei der normalen Adreßumsetzung die Realadresse p der nächststufigen Page Table Stufe oder der Datenseite ist. Jetzt hat jeder Page Table Eintrag außerdem einen Typ τ, der unter anderem die Interpretation des Zeigers π bestimmt. Die konventionellen Einträge haben den Typ τ = translate. Für User Level Mapping werden neue Typen und Spezialinstruktionen zur sicheren Änderung des Mappings eingeführt. Beim Typ alias wird der Zeiger π als virtuelle Aliasadresse interpretiert. Trifft die Adreßumsetzung auf irgendeiner Stufe auf einen alias- Eintrag, dessen Accessattribut a die Zugriffsaktion x erlaubt, wird zu der noch nicht dekodierten Rest­ adresse v′ addiert oder die neue Adresse anderweitig aus und v′ gebildet. Diese Situation ist in Fig. 10 für einen Umsetzschritt gezeigt.As mentioned above, user-level mapping is particularly interesting if the MMU allows fine-grained address spaces. However, the method to be described in the following can also be built into other MMUs, in particular fine or coarse granular imaging. These MMUs should preferably be based on converting a virtual address into a real address using a page table tree. However, this is not absolutely necessary. Page table entries conventionally consist of an access attribute a, which determines the valid actions in the memory area, and a pointer π, which is the real address p of the next level page table level or the data page during normal address conversion. Now each page table entry also has a type τ, which determines, among other things, the interpretation of the pointer π. The conventional entries have the type τ = translate. New types and special instructions for changing the mapping securely are introduced for user level mapping. With the alias type, the pointer π is interpreted as a virtual alias address. If the address conversion occurs at any level on an alias entry, the access attribute a of which allows the access action x, v 'is added to the undecoded remaining address or the new address is otherwise formed from and v'. This situation is shown in Fig. 10 for a conversion step.

Mit dem Ergebnis, einer virtuellen Adresse voller Länge (z. B. +v′) beginnt die Adreßumsetzung erneut. Somit wird der gesamte virtuelle Bereich, der durch den Alias-Eintrag abgedeckt wird, virtuell auf einen ande­ ren virtuellen Bereich abgebildet (siehe hierzu die schematisierte Darstellung einer Baumstruktur gemäß Fig. 11). Dieses Verfahren ist von dem konventionellen realen Aliasing, bei dem mehrere Realzeiger auf einer Page Table oder Datenseite zusammenlaufen, zu unter­ scheiden. Das konventionelle reale Aliasing ist in Fig. 12 schematisch dargestellt. Virtuelles Aliasing ist im Gegensatz zu realem Aliasing von Realspeicherzuordnun­ gen unabhängig. Damit ermöglicht es Veränderungen des Mappings durch User Level Software, und zwar unabhängig von aktueller Realspeicherbelegung und Paging, ohne die Schutzgrenzen des eigenen oder fremder Adreßräume unterlaufen zu können, und ohne die durch das Betriebs­ system vorgegebenen Accessattribute auf Seiten oder größeren Adreßraumteilen aufweichen zu können.With the result, a virtual address of full length (e.g. + v ′), the address translation begins again. Thus, the entire virtual area covered by the alias entry is virtually mapped to another virtual area (see the schematic representation of a tree structure according to FIG. 11). This method is to be distinguished from conventional real aliasing, in which several real pointers converge on a page table or data page. The conventional real aliasing is shown schematically in FIG. 12. In contrast to real aliasing, virtual aliasing is independent of real memory allocations. This enables changes in mapping by user level software, regardless of the current real memory usage and paging, without being able to undermine the protection limits of your own or third-party address spaces, and without being able to soften the access attributes specified by the operating system on pages or larger parts of the address space.

Beim Typ τ = call on reference wird der Zeiger π als virtuelle Adresse einer Prozedur interpretiert. Trifft die Adreßumsetzung auf einen call on reference- Eintrag, dessen Accessattribut a die Zugriffsaktion x erlaubt, wird die zugreifende Operation abgebrochen und statt dessen die angegebene Prozedur aufgerufen. Sie erhält den aktuellen Instruction Counter (ic) und die verursachende virtuelle Adresse vorig als Eingangspara­ meter. Wie bei einem Page Fault kann die auslösende Instruktion neu gestartet werden. Fig. 13 zeigt einen Umsetzschritt mit dem Typ τ = call on reference.With the type τ = call on reference, the pointer π is interpreted as the virtual address of a procedure. If the address conversion encounters a call on reference entry whose access attribute a permits the access action x, the accessing operation is terminated and the specified procedure is called instead. It receives the current instruction counter (ic) and the causing virtual address v orig as an input parameter. As with a page fault, the triggering instruction can be restarted. Fig. 13 shows a conversion step with the type τ = call on reference.

call on reference-Mapping ordnet Adreßraumbereichen Algorithmen zu. Diese können die verursachende Instruk­ tion beispielsweise überspringen, emulieren oder ähn­ lich wie einen Page Fault behandeln: den fraglichen Speicherbereich per alias neu abbilden und die Instruk­ tion neu starten, Skipping und Emulation von einzelnen Instruktionen kann unter Umständen durch Spezial­ instruktionen des Prozessors beschleunigt werden (siehe weiter unten unter den ergänzenden Instruktionen "get­ map", "getlength" und "execute").call on reference mapping maps address space areas Algorithms too. These can be the causative instruction tion, for example, skip, emulate or similar Treat like a page fault: the one in question Alias memory area and the instruct restart, skipping and emulation of individuals Instructions may be through special instructions of the processor are accelerated (see further below under the additional instructions "get map "," getlength "and" execute ").

Bei Prozessoren mit strikter Load/Store-Architektur kann die Emulation beschleunigt werden, indem die asso­ ziierte Prozedur nicht nur ic und vorig als Parameter erhält, sondern zusätzlich - beim Schreibzugriff - die Kennung ′Schreibzugriff′, die Operandenlänge (Byte, Wort, . . .) und den Operandenwert - beim Lesezugriff - die Kennung ′Lesezugriff′, die Operandenlänge (Byte, Wort, . . .) und die Nummer (Adresse) des Zielregisters. Bei Prozessoren mit komplexeren Instruktionen können statt dessen als zusätzliche Parameter die Operation (Mov, Add, Inc, . . .), die Operandenlänge (Byte, Wort, . . .), die Register/Speicheradresse der Quelle und die Register/Speicheradresse des Ziels übergeben werden.For processors with a strict load / store architecture, the emulation can be accelerated by not only assigning the associated procedure ic and v orig as parameters, but also - in the case of write access - the identifier 'write access', the operand length (byte, word,. .) and the operand value - for read access - the identifier 'read access', the operand length (byte, word,...) and the number (address) of the target register. For processors with more complex instructions, the operation (Mov, Add, Inc,...), The operand length (byte, word,...), The register / memory address of the source and the register / memory address of the destination can be used as additional parameters instead be handed over.

Der Instruktionssatz des Prozessors wird um die nicht­ privilegierte Instruktion ′map′ erweitert. Damit kann User Level Software direkt alias- und call on reference-Einträge verändern. Ein Page Table Eintrag wird eindeutig durch den virtuellen Adreßbereich be­ zeichnet (dies gilt nicht umgekehrt, da aufgrund von Realsharing ein Eintrag für mehrere virtuelle Adreß­ raumbereiche zuständig sein kann), den er in der primä­ ren Adreßumsetzung genau überdeckt. Unter primärer Adreßumsetzung wird hier der Übersetzungsvorgang ver­ standen, der die originale virtuelle Adresse umsetzt, bis entweder ein Page Fault diagnostiziert wird, ein alias-, call on reference- oder ein auf eine Datenseite verweisender Eintrag gefunden wird. Dementsprechend wird der adressierte Eintrag durch virtuelle Basis­ adresse b und Größe s des zugehörigen Adreßraumbe­ reichs spezifiziert. Dann lädt die InstruktionThe processor's instruction set is not about that privileged instruction ′ map ′ expanded. So that can  User level software directly alias and call on Change reference entries. A page table entry is clearly indicated by the virtual address area draws (this does not apply vice versa, because due to Realsharing an entry for multiple virtual addresses areas), which he primarily address conversion exactly covered. Under primary Address translation is the translation process here who implemented the original virtual address, until either a page fault is diagnosed, a alias, call on reference or one on a data page referring entry is found. Accordingly becomes the addressed entry by virtual basis address b and size s of the associated address space empire specified. Then the instruction loads

map ((b, s), (τ, π))map ((b, s), (τ, π))

den adressierten Page Table Eintrag mit τ und π, vor­ ausgesetzt τ ist alias oder call on reference (vir­ tuell-real Abbildungen können somit nicht definiert oder verändert werden) und der Zieleintrag existiert (Einträge können somit nicht heimlich erzeugt werden) und ist vom aktuellen Modus (user/kernel) aus zugreif­ bar (das Betriebssystem kann sich somit schützen) und hat bereits den Typ alias oder call on reference. Über­ lagern eines translate-Eintrags im Benutzerteil des Adreßraumes durch alias oder call on reference ist zwar nicht sicherheitskritisch, würde aber zu toten Teilbäumen führen, ohne daß das Betriebssystem das be­ merkt. Andernfalls führt map zu Page Fault. Damit kön­ nen von Unser Level Software entsprechende Einträge modifizieren, d. h. zwischen alias und call on reference wechseln und die Alias- bzw. assoziierte Prozeduradresse ändern. Mit dieser Instruktion können aber weder neue Einträge erzeugt, noch vorhandene virtuell-real Abbildung modifiziert, noch vorhandene Accessattribute aufgeweicht werden.the addressed page table entry with τ and π, before exposed τ is alias or call on reference (vir tuell-real images can therefore not be defined or changed) and the target entry exists (Entries cannot be created secretly) and is accessible from the current mode (user / kernel) bar (the operating system can protect itself) and already has the type alias or call on reference. About storing a translate entry in the user part of the Address space by alias or call on reference While not critical to safety, it would kill Lead subtrees without the operating system be notices. Otherwise map leads to Page Fault. So that entries from our level software modify, d. H. between alias and call on reference switch and the alias or associated procedure address to change. With this instruction you can neither  new entries created, existing virtual-real ones Modified image, still existing access attributes be softened.

Das Einrichten und Löschen entsprechender Einträge samt notwendiger Modifikation des Page Table Baums sollte durch System Calls im Betriebssystemkern realisiert werden. Alias- und call on reference-Einträge können vom Betriebssystem als langlebige Objekte realisiert werden, da verdrängte Einträge sowohl bei normalem Zu­ griff auf den Adreßbereich als auch bei map Zugriff auf den Eintrag zu Page Fault führen. Weitere Prozes­ sorinstruktionen sind nicht notwendig, könnten aber für bestimmte Prozessoren und Anwendungen unter Umständen interessant sein:The creation and deletion of corresponding entries together necessary modification of the page table tree should realized by system calls in the operating system core will. Alias and call on reference entries can realized by the operating system as durable objects because entries are suppressed both with normal closing accessed the address area as well as map access lead to the entry to Page Fault. Further processes instructions are not necessary, but could be for certain processors and applications to be interesting:

getmap (b, s), (τ, a, π)getmap (b, s), (τ, a, π)

liest einen existierenden Page Table Eintrag, der vom aktuellen Modus aus zugreifbar und vom Typ alias oder call on reference sein muß. Skipping und Emulation durch eine mit dem Adreßbereich assoziierte Prozedur kann unter Umständen durch Instruktionen effizienter werden, die die Länge einer anderen Instruktion liefern oder diese mit einer modifizierten Speicheradresse aus­ führen können:reads an existing page table entry dated current mode accessible and of the type alias or must be call on reference. Skipping and emulation by a procedure associated with the address area may be more efficient through instructions that provide the length of another instruction or with a modified memory address being able to lead:

getlength (dest, ptr)getlength (dest, ptr)

liefert die Länge der Instruktion, die an der virtuel­ len Adresse ′ptr′ steht, in ′dest′returns the length of the instruction attached to the virtuel len address ′ ptr ′ stands, in ′ dest ′

execute (ptr, v)execute (ptr, v)

führt die an der virtuellen Adresse ′ptr′ stehende In­ struktion aus, wobei allerdings anstelle der eigentlich in der Instruktion verwandten Speicheradresse die vir­ tuelle Adresse v verwendet wird. Bei Mehradreß­ maschinen sind unter Umständen komplexere Formen der Instruktion notwendig. Beide Instruktionen lohnen sich nicht bei Prozessorarchitekturen, die nur wenige und einfache Befehlsformate und Adressierungsmodi haben. Prinzipiell reichen die Eintragstypen alias und call on reference (neben translate) aus. Unter Umständen können auch Kombinationen interessant sein:performs the In at the virtual address ′ ptr ′ structure, but instead of actually in the instruction related memory address the vir current address v is used. With multiple address machines may be more complex forms of Instructions necessary. Both instructions are worthwhile not with processor architectures that only a few and have simple command formats and addressing modes. In principle, the entry types alias and call on are sufficient reference (next to translate). Maybe you can Combinations can also be interesting:

τ = call on write / alias on read
τ = call on read / alias on write.
τ = call on write / alias on read
τ = call on read / alias on write.

Hierfür müssen allerdings die Page Table Einträge ver­ größert werden, so daß sie und aufnehmen können, oder aber ist für alle Einträge fest. Die map- Instruktion arbeitet dann natürlich auch auf diesen beiden Typen.For this, however, the page table entries must be ver be enlarged so that they can accommodate and or is fixed for all entries. The map Instruction then of course also works on this both types.

Zum Ankoppeln bestimmter Hardware-Aktionen an Adreßbe­ reiche, z. B. Anstoßen komplexer Busprotokolle zum Zu­ griff auf entfernten Speicher, können weitere (Spe­ zial-)Typen für τ eingesetzt werden.For coupling certain hardware actions to addresses rich, e.g. B. Triggering complex bus protocols to close accessed remote storage, more (Spe zial-) types can be used for τ.

Bei Multiprozessor-Maschinen mit Shared Memory soll manchmal ein Adreßbereich gesperrt werden, so daß Zu­ griffe darauf durch andere Prozessoren automatisch bis zur Freigabe verzögert werden. Natürlich muß der Zu­ griff wenigstens einem Prozessor gestattet sein. Das kann man unter anderem durch virtuelles oder reales Aliasing erreichen. Locking kann man durch Ankoppeln einer leeren Routine an den Adreßbereich bewirken, d. h. man verwendet einen call on reference Page Table Eintrag und läßt diesen direkt auf eine ret-Instruktion zeigen. Unlockung wird dann durch Änderung des Mappings auf alias erreicht. Bei manchen Architekturen mag sich dafür ein spezieller neuer Typ τ = locked lohnen, der unter Umständen etwas effizienter implementiert werden kann, da er lock/unlock ohne Uminterpretationen in Cache und TLB erlaubt. Diese Situation ist in Fig. 14 wiedergegeben. Trifft die Adreßumsetzung auf einen solchen Eintrag, wird sie komplett neu gestartet. Erst wenn ein anderer Prozessor den Eintrag wieder auf translate setzt oder den Page Table Baum so modifi­ ziert, daß der Eintrag nicht mehr involviert ist, wird die Verzögerung beendet. Locked-Einträge unterscheiden sich nur im Typ von translate-Einträgen. Wechsel zwi­ schen beiden erfordern deshalb nur, die Typen der ent­ sprechenden Cache- und TLB Einträge (bei größeren Ob­ jekten ist ein TLB-Flush wahrscheinlich effizienter) konsistent zu ändern, aber keine Änderung der virtuell → real-Abbildung. Zum Wechsel zwischen locked und translate dienen zwei weitere Instruktionen:In multiprocessor machines with shared memory, an address area is sometimes to be blocked so that access to it by other processors is automatically delayed until it is released. Of course, access to at least one processor must be permitted. One way to do this is through virtual or real aliasing. Locking can be achieved by coupling an empty routine to the address area, ie using a call on reference page table entry and having it point directly to a ret instruction. Unlocking is then achieved by changing the mapping to alias. With some architectures, a special new type τ = locked may be worthwhile, which can be implemented a little more efficiently under certain circumstances, since it allows lock / unlock without reinterpretations in cache and TLB. This situation is shown in Fig. 14. If the address translation meets such an entry, it will be restarted completely. The delay is only ended when another processor sets the entry to translate again or modifies the page table tree so that the entry is no longer involved. Locked entries differ only in the type of translate entries. Changes between the two therefore only require consistent changes in the types of the corresponding cache and TLB entries (a TLB flush is probably more efficient for larger objects), but no change in the virtual → real mapping. There are two further instructions for switching between locked and translate:

lock (b, s)   unlock (b, s).lock (b, s) unlock (b, s).

Lock setzt den adressierten Page Table Eintrag auf locked und unlock wieder auf translate, vorausgesetzt der Zieleintrag existiert und ist vom aktuellen Modus (user/kernel) aus zugreifbar und hat bereits den Typ translate oder locked. In allen anderen Fällen wird Page Fault ausgelöst.Lock sets up the addressed page table entry locked and unlock back on translate, provided the target entry exists and is from the current mode (user / kernel) accessible and already has the type translate or locked. In all other cases Page fault triggered.

Zur Codierung der obigen Instruktionen und/oder flexi­ bel langer Bitstrings und -folgen (also auch Guards) stehen z. B. folgende Möglichkeiten zur Verfügung. For coding the above instructions and / or flexi long bit strings and sequences (including guards) stand z. B. the following options are available.  

Paare (b, s) von n-bit-breiter Basisadresse b und Größenangabe s=2i können als n-bit-WertPairs (b, s) of n-bit-wide base address b and size s = 2 i can be used as an n-bit value

für s2 codiert werden, wenn die Basisadresse immer s-ausgerichtet ist, d. h. b mod s=0. Die Bitrepräsen­ tation sieht dann folgendermaßen aus:be encoded for s2 if the base address is always is s-oriented, d. H. b mod s = 0. The bit representations then looks like this:

Das Verfahren kann genauso zur Codierung variabler lan­ ger Bitstrings bis zur Maximallänge n-1 benutzt werden, beispielsweise für die Guards der guarded Page Tables. Liegt ein Bitstring b der Länge ||b|| vor, wird er als n- bit-ZahlThe method can also be used for coding variable lengths bit strings up to the maximum length n-1 are used, for example for the guards of the guarded page tables. If there is a bit string b of length || b || before, it is called n- bit number

dargestellt. Die dekodierende Hardware nimmt in beiden Fällen das niederwertigste auftretende 1-bit als Trenn­ zeichen zum Bitstring (oder der Basisadresse) b. Natür­ lich können die Rollen von 0- und 1-Bits vertauscht und unabhängig davon die höchstwertigen Bits genommen werden:shown. The decoding hardware takes in both Cases the least significant 1-bit occurring as separation Character to the bit string (or the base address) b. Of course Lich the roles of 0 and 1 bits can be interchanged and regardless of which the most significant bits are taken:

Nachfolgend werden anhand der Fig. 15 bis 17 noch kurz mögliche Hardware-Realisierungen eines nach der Erfin­ dung arbeitenden Translators einer MMU beschrieben.In the following, possible hardware implementations of a translator of an MMU working according to the invention are described briefly with reference to FIGS . 15 to 17.

Gemäß Fig. 15 sind TLB₀ und TLB₁ als eigenständige Hardware vorhanden. Anstelle des Cache (siehe rechter Teil von Fig. 15) könnte natürlich auch direkt ein nor­ maler Speicher angeschlossen werden. Wenn ein virtuell adressierbarer Cache eingesetzt wird, kann dieser die Funktionalität des TLB₀ übernehmen, wie dies in Fig. 16 gezeigt ist. Noch einfacher wird das Blockschaltbild, wenn der TLB₁ vom Translator, wie weiter oben im Zusam­ menhang mit der Fig. 9 beschrieben, vermittels Cache + TLB₀ realisiert wird. Dann ergibt sich das Blockschalt­ bild gemäß Fig. 17.Referring to FIG. 15 are TLB₀ and TLB₁ present as independent hardware. Instead of the cache (see right part of FIG. 15), a normal memory could of course also be connected directly. If a virtually addressable cache is used, this can take over the functionality of the TLB₀, as shown in FIG. 16. The block diagram becomes even simpler if the TLB 1 from the translator, as described above in connection with FIG. 9, is implemented by means of cache + TLB 1. Then the block diagram as shown in FIG. 17 results.

Claims (11)

1. Verfahren zum Umsetzen einer durch einen ersten Bitstring (v) mit einer ersten Länge repräsentierten virtuellen Speicheradresse eines virtuellen Speichers in eine durch einen zweiten Bitstring mit einer zweiten Länge repräsentierten Real­ adresse eines Realspeichers, bei dem
  • a) ein erster Speicherbereich mit einer ersten Anfangsadresse (p) und einer ersten Länge vorgegeben wird,
  • b) geprüft wird, ob die Länge des ersten Speicher­ bereichs größer oder gleich 2 potenziert mit der Länge des ersten Bitstrings (v) ist und, wenn dies der Fall ist, die Summe aus der ersten Anfangsadresse (p) des ersten Speicher­ bereichs und dem ersten Bitstring (v) den zwei­ ten Bitstring ergibt (Datenseite erreicht), und, wenn die obige Prüfung negativ ist, der erste Speicherbereich als eine erste Tabelle genommen wird und
  • c) aus dem ersten Bitstring (v) Bits (u) an be­ stimmten Stellen ausgewählt werden, wobei die nicht ausgewählten verbleibenden Bits einen Restbitstring (w, v′) bilden,
  • d) die ausgewählten Bits (u) des ersten Bit­ strings (v) einen Eintrag der ersten Tabelle bestimmen,
  • e) dieser Eintrag der ersten Tabelle ausgelesen wird,
  • f) aus dem ausgelesenen Tabelleneintrag die An­ fangsadresse (p′) sowie die Länge eines weiteren Speicherbereichs und eine eine Anzahl von Bits umfassende Bitfolge (g) abgeleitet werden,
  • g) aus dem Restbitstring (w, v′) eine Anzahl von Bits ausgewählt wird, die gleich der Anzahl der Bits der aus dem Tabelleneintrag der ersten Tabelle abgeleiteten Bitfolge (g) ist,
  • h) geprüft wird, ob die ausgewählten Bits des Restbitstrings (w, v′) als Folge betrachtet gleich der aus dem Tabelleneintrag der ersten Tabelle abgeleiteten Bitfolge (g) ist,
  • i) eine Fehlermeldung dergestalt, daß die Ab­ bildung für den ersten Bitstring (v) nicht definiert ist, erzeugt wird, wenn die obige Prüfung negativ ist,
  • k) die Bitfolge (g) aus dem Restbitstring (w, v′) extrahiert wird, wenn die obige Prüfung positiv ist, und
  • l) das Verfahren ab Schritt b) mit dem nicht­ extrahierten verbleibenden Teil (v′) des Restbitstrings (w, v′) als erstem Bitstring (v) sowie der Anfangsadresse (p′) und Länge des weiteren Speicherbereichs als Anfangs­ adresse (p) und Länge des ersten Speicher­ bereichs fortgesetzt wird.
1. A method for converting a virtual memory address of a virtual memory represented by a first bit string (v) with a first length into a real address of a real memory represented by a second bit string with a second length, in which
  • a) a first memory area with a first start address (p) and a first length is specified,
  • b) it is checked whether the length of the first memory area is greater than or equal to 2 potentiated with the length of the first bit string (v) and, if this is the case, the sum of the first start address (p) of the first memory area and the first bit string (v) yields the second bit string (data side reached), and if the above test is negative, the first memory area is taken as a first table and
  • c) bits (u) are selected from the first bit string (v) at certain positions, the unselected remaining bits forming a residual bit string (w, v ′),
  • d) the selected bits (u) of the first bit string (v) determine an entry in the first table,
  • e) this entry of the first table is read out,
  • f) the starting address (p ′) as well as the length of a further memory area and a bit sequence (g) comprising a number of bits are derived from the table entry read,
  • g) a number of bits is selected from the residual bit string (w, v ′) which is equal to the number of bits of the bit sequence (g) derived from the table entry of the first table,
  • h) it is checked whether the selected bits of the residual bit string (w, v ′) considered as a sequence are equal to the bit sequence (g) derived from the table entry of the first table,
  • i) an error message such that the mapping for the first bit string (v) is not defined is generated if the above check is negative,
  • k) the bit sequence (g) is extracted from the residual bit string (w, v ′) if the above test is positive, and
  • l) the method from step b) with the non-extracted remaining part (v ′) of the residual bit string (w, v ′) as the first bit string (v) and the start address (p ′) and length of the further memory area as the start address (p) and length of the first memory area is continued.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die bei Schritt c) ausgewählten Bits die An­ fangsbits (u) des ersten Bitstrings (v) sind.2. The method according to claim 1, characterized in that that the bits selected in step c) the on are catch bits (u) of the first bit string (v). 3. Verfahren nach Anspruch 1 oder 2, dadurch gekenn­ zeichnet, daß bei Schritt f) geprüft wird, ob der Restbitstring (w, v′) aus den nicht ausgewählten Bits des ersten Bitstrings (v) als Anfang (w) die aus dem Tabelleneintrag der ersten Tabelle abge­ leitete Bitfolge (g) aufweist, und daß bei Schritt k) der mit der Bitfolge identische Anfang (w) des Restbitstrings (w, v′) abgetrennt wird, wenn die Prüfung des Schritts h) positiv ist.3. The method according to claim 1 or 2, characterized records that it is checked in step f) whether the Residual bit string (w, v ′) from the unselected Bits of the first bit string (v) as the start (w)  from the table entry of the first table directed bit sequence (g), and that at step k) the beginning (w) of the bit sequence identical Residual bit strings (w, v ′) is separated when the Checking step h) is positive. 4. Verfahren nach einem der Ansprüche 1 bis 3, da­ durch gekennzeichnet, daß vor Schritt g) der Rest­ bitstring (w, v′) gemäß einer ersten Permutations­ regel permutiert wird und daß nach Schritt k) und vor Schritt l) der verbleibende Teil des permu­ tierten Restbitstrings (w, v′) gemäß einer zweiten Permutationsregel permutiert wird, bevor mit Schritt b) fortgefahren wird.4. The method according to any one of claims 1 to 3, because characterized in that before step g) the rest bitstring (w, v ′) according to a first permutation rule is permuted and that after step k) and before step l) the remaining part of the permu tiert residual bit strings (w, v ') according to a second Permutation rule is permuted before using Step b) is continued. 5. Verfahren nach einem der Ansprüche 1 bis 4, da­ durch gekennzeichnet, daß
  • - bei Schritt d) die ausgewählten Bits des ersten Bitstrings einen Tabellenbereich (Cluster) einer ersten Tabelle bestimmen,
  • - bei Schritt e) die Einträge des derart adres­ sierten Bereichs der ersten Tabelle ausgelesen werden,
  • - bei Schritt f) aus den ausgelesenen Einträgen des anfangsadressierten Bereichs der ersten Tabelle die Anfangsadressen (pi′) sowie Längen mehrerer möglicherweise unterschiedlicher, wei­ terer Speicherbereiche und mehrerer Bitfolgen (gi) mit möglicherweise unterschiedlichen Bit­ längen abgeleitet werden, wobei einer Bitfolge (gi) jeweils eine Anfangsadresse (pi′) und Länge eines weiteren Speicherbereichs zugeordnet sind,
  • - Schritte g) und h) für alle ausgelesenen Bit­ folgen (gi) parallel oder sequentiell durchgeführt werden,
  • - eine Fehlermeldung dergestalt, daß die Abbil­ dung für den ersten Bitstring (v) nicht definiert ist, erzeugt wird, wenn alle Prüfungen in Schritt h) negativ sind, und
  • - andernfalls diejenige Bitfolge (gi) oder eine derjenigen Bitfolgen (gi) aus dem Restbitstring (w, v′) extrahiert wird, für die die Prüfung in Schritt h) positiv ist, sowie die zugeordnete Anfangsadresse und Länge als Anfangsadresse (pi) und Länge des weiteren Speicherbereichs genommen wird.
5. The method according to any one of claims 1 to 4, characterized in that
  • in step d) the selected bits of the first bit string determine a table area (cluster) of a first table,
  • in step e) the entries of the area of the first table addressed in this way are read out,
  • - In step f), the starting addresses (p i ′) and lengths of several possibly different, further memory areas and several bit sequences (g i ) with possibly different bit lengths are derived from the read entries of the initially addressed area of the first table, with a bit sequence ( g i ) a start address (p i ′) and length of a further memory area are assigned,
  • Steps g) and h) follow for all bits read out (g i ) are carried out in parallel or sequentially,
  • - An error message such that the mapping for the first bit string (v) is not defined is generated if all the tests in step h) are negative, and
  • - Otherwise that bit sequence (g i ) or one of those bit sequences (g i ) is extracted from the residual bit string (w, v ') for which the test in step h) is positive, and the assigned start address and length as start address (p i ) and the length of the further memory area is taken.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet,
  • - daß der Bereich (Cluster) der ersten Tabelle in mehrere Teilbereiche (Teilcluster) unterteilt ist, von denen jeder mindestens einen Eintrag, bestehend aus einer Anfangsadresse, einer Länge und einer weiteren Bitfolge, aufweist,
  • - daß eine Hinweisadresse (h) vorgegeben wird und
  • - daß aus dem durch die ausgewählten Bits des ersten Bitstrings anfangsadressierten Bereich der ersten Tabelle zuerst die Einträge des durch die Hinweisadresse (h) anfangsadressierten Teilbereichs ausgelesen werden.
6. The method according to claim 5, characterized in
  • that the area (cluster) of the first table is divided into several partial areas (partial clusters), each of which has at least one entry consisting of a start address, a length and a further bit sequence,
  • - That a reference address (h) is specified and
  • - That from the area of the first table initially addressed by the selected bits of the first bit string, the entries of the partial area initially addressed by the reference address (h) are read out first.
7. Verfahren nach einem der Ansprüche 1 bis 6, da­ durch gekennzeichnet,
  • - daß der erste Bitstring (v) sukzessive min­ destens einer Abbildungseinrichtung (TLB₁) zu­ geführt wird, in der Abbildungen des ersten Bitstrings (v) auf Anfangsadressen (p) sowie Längen von Speicherbereichen und Kürzungswerte gespeichert sind, und
  • - daß in dem Fall, daß eine Abbildung des ersten Bitstrings (v), in der mindestens einen Abbil­ dungseinheit (TLB₁) nicht gespeichert ist, mit Schritt a), angewendet auf den abzubildenden ersten Bitstring (v), begonnen wird, während andernfalls das Verfahren mit demjenigen Speicherbereich als erster Tabelle, der durch die sich aus der mindestens einen Abbildungs­ einheit (TLB₁) ergebenden Anfangsadresse und Länge spezifiziert ist, und mit dem um dem Kür­ zungswert verkürzten ersten Bitstring als neuem ersten Bitstring bei Schritt b) begonnen wird, wobei die Verkürzung insbesondere aus einem Abscheiden der führenden Bits besteht.
7. The method according to any one of claims 1 to 6, characterized in that
  • - That the first bit string (v) is successively guided to at least one mapping device (TLB₁), in which images of the first bit string (v) are stored on start addresses (p) and lengths of memory areas and shortening values, and
  • - That in the event that an image of the first bit string (v), in which at least one image unit (TLB₁) is not stored, with step a), applied to the first bit string (v) to be imaged, is started, otherwise that Method with that memory area as the first table, which is specified by the starting address and length resulting from the at least one mapping unit (TLB₁), and with the shortened by the shortened first bit string as a new first bit string in step b), where the shortening consists in particular of separating the leading bits.
8. Verfahren nach einem der Ansprüche 1 bis 7, bei dem
  • - der erste Bitstring in den zweiten Bitstring gemäß einem Umsetzverfahren umgesetzt wird, das die folgenden Schritte umfaßt:
    • - eine Tabelle mit mindestens einem Tabellen­ eintrag wird vorgegeben,
    • - aus einem Eingangsbitstring werden Bits an bestimmten Stellen ausgewählt, wobei die nicht ausgewählten verbleibenden Bits einen Restbitstring bilden,
    • - die ausgewählten Bits des Eingangsbitstrings bestimmen einen Eintrag der ersten Tabelle,
    • - dieser Eintrag der ersten Tabelle wird aus­ gelesen,
    • - in dem Fall, daß der ausgelesene Tabellen­ eintrag vom Typ ALIAS ist, folgende Teil­ schritte durchgeführt werden:
    • - aus dem Tabelleneintrag wird ein Alias- Bitstring extrahiert,
    • - der Alias-Bitstring und der Restbitstring werden zu einem Ausgangsbitstring kombiniert,
    • - das gesamte Umsetzverfahren wird mit dem Ausgangsbitstring als neuem ersten Bitstring von Anfang an begonnen.
8. The method according to any one of claims 1 to 7, in which
  • the first bit string is converted into the second bit string according to a conversion process which comprises the following steps:
    • - a table with at least one table entry is specified,
    • bits are selected at specific positions from an input bit string, the unselected remaining bits forming a residual bit string,
    • the selected bits of the input bit string determine an entry in the first table,
    • - This entry in the first table is read from
    • - In the event that the table entry read is of the ALIAS type, the following steps are carried out:
    • - an alias bit string is extracted from the table entry,
    • the alias bit string and the residual bit string are combined to form an output bit string,
    • - The entire conversion process is started from the beginning with the output bit string as the new first bit string.
9. Verfahren nach einem der Ansprüche 1 bis 7, bei dem
  • - der erste Bitstring in den zweiten Bitstring gemäß einem Umsetzverfahren umgesetzt wird, das die folgenden Schritte umfaßt:
    • - eine Tabelle mit mindestens einem Tabellen­ eintrag wird vorgegeben,
    • - aus einem Eingangsbitstring werden Bits an bestimmten Stellen ausgewählt, wobei die nicht ausgewählten verbleibenden Bits einen Restbitstring bilden,
    • - die ausgewählten Bits des Eingangsbitstrings bestimmen einen Eintrag der ersten Tabelle,
    • - dieser Eintrag der ersten Tabelle wird aus­ gelesen,
    • - in dem Fall, daß der Tabelleneintrag vom Typ SIGNAL ist, folgende Teilschritte durchgeführt werden:
      • - aus dem Tabelleneintrag wird ein Hilfs­ bitstring extrahiert,
      • - das gesamte Umsetzverfahren wird abge­ brochen und
      • - eine Meldung wird erzeugt, die mindestens den Hilfsbitstring enthält.
9. The method according to any one of claims 1 to 7, in which
  • the first bit string is converted into the second bit string according to a conversion process which comprises the following steps:
    • - a table with at least one table entry is specified,
    • bits are selected at specific positions from an input bit string, the unselected remaining bits forming a residual bit string,
    • the selected bits of the input bit string determine an entry in the first table,
    • - This entry in the first table is read from
    • - In the event that the table entry is of the SIGNAL type, the following substeps are carried out:
      • - an auxiliary bit string is extracted from the table entry,
      • - The entire implementation process is canceled and
      • - A message is generated that contains at least the auxiliary bit string.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß aufgrund der Meldung eine Prozedur an einer durch den Hilfsbitstring spezifizierten Adresse aufgerufen wird.10. The method according to claim 9, characterized in that due to the message a procedure on a by the address specified by the auxiliary bit string is called. 11. Verfahren nach einem der Ansprüche 1 bis 7, bei dem
  • - der erste Bitstring in den zweiten Bitstring gemäß einem Umsetzverfahren umgesetzt wird, das die folgenden Schritte umfaßt:
    • - eine Tabelle mit mindestens einem Tabellen­ eintrag wird vorgegeben,
    • - aus einem Eingangsbitstring werden Bits an bestimmten Stellen ausgewählt, wobei die nicht ausgewählten verbleibenden Bits einen Restbitstring bilden,
    • - die ausgewählten Bits des Eingangsbitstrings bestimmen einen Eintrag der ersten Tabelle,
    • - dieser Eintrag der ersten Tabelle wird aus­ gelesen und
    • - in dem Fall, daß der Tabelleneintrag vom Typ LOCKED ist, das gesamte Umsetzverfahren von Anfang an neu begonnen wird.
11. The method according to any one of claims 1 to 7, in which
  • the first bit string is converted into the second bit string according to a conversion process which comprises the following steps:
    • - a table with at least one table entry is specified,
    • bits are selected at specific positions from an input bit string, the unselected remaining bits forming a residual bit string,
    • the selected bits of the input bit string determine an entry in the first table,
    • - This entry in the first table is read from and
    • - In the event that the table entry is of the LOCKED type, the entire conversion process is started again from the beginning.
DE4405845A 1993-05-10 1994-02-23 Method for converting a virtual memory address of a virtual memory into a real address of a real memory Expired - Fee Related DE4405845C2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE4405845A DE4405845C2 (en) 1993-05-10 1994-02-23 Method for converting a virtual memory address of a virtual memory into a real address of a real memory
US08/549,731 US5790979A (en) 1993-05-10 1994-05-06 Translation method in which page-table progression is dynamically determined by guard-bit sequences
PCT/EP1994/001453 WO1994027222A1 (en) 1993-05-10 1994-05-06 Process for converting a virtual store address with a first length into a real address with a second length

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE4315567 1993-05-10
DE4319842 1993-05-28
DE4405845A DE4405845C2 (en) 1993-05-10 1994-02-23 Method for converting a virtual memory address of a virtual memory into a real address of a real memory

Publications (2)

Publication Number Publication Date
DE4405845A1 DE4405845A1 (en) 1994-11-17
DE4405845C2 true DE4405845C2 (en) 1995-06-08

Family

ID=25925779

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4405845A Expired - Fee Related DE4405845C2 (en) 1993-05-10 1994-02-23 Method for converting a virtual memory address of a virtual memory into a real address of a real memory

Country Status (1)

Country Link
DE (1) DE4405845C2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10127198A1 (en) 2001-06-05 2002-12-19 Infineon Technologies Ag Physical address provision method for processor system with virtual addressing uses hierarchy mapping process for conversion of virtual address

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4680700A (en) * 1983-12-07 1987-07-14 International Business Machines Corporation Virtual memory address translation mechanism with combined hash address table and inverted page table
WO1992002879A1 (en) * 1990-08-03 1992-02-20 Du Pont Pixel Systems Limited Virtual memory system

Also Published As

Publication number Publication date
DE4405845A1 (en) 1994-11-17

Similar Documents

Publication Publication Date Title
WO1994027222A1 (en) Process for converting a virtual store address with a first length into a real address with a second length
DE2459006C2 (en) Device for forming an absolute address in a data processing system
DE69637294T2 (en) MICRO-TLB WITH PARALLEL ACCESS TO ACCELERATE ADDRESS TRANSLATION
DE2131066C3 (en) Arrangement for addressing a table memory
DE4410060B4 (en) Translating device for converting a virtual memory address into a physical memory address
EP1393184B1 (en) Device and method for determining a physical address from a virtual address, using a hierarchical mapping rule comprising compressed nodes
DE2226382C3 (en) Data processing system with several processors and buffer memories assigned to them
DE602004011018T2 (en) INVALIDITY STATEMENT OF A MEMORY AND DELETION OF BUFFER ENTRIES
DE69721590T2 (en) A RANGE BASED SIDE-TABLE-WALK-BIT USING METHOD AND DEVICE
DE2749850C3 (en) Hybrid semiconductor memory with associative page addressing, page exchange and control on the chip
DE69629800T2 (en) ADDRESS TRANSLATION BUFFER IN A COMPUTER SYSTEM
DE60320026T2 (en) IMPROVED STORAGE MANAGEMENT FOR REAL-TIME APPLICATIONS
DE69738101T2 (en) Management of access to objects using three-state references
DE3833933C2 (en) Information processing device with an address expansion function
DE112017001027B4 (en) page error fix
DE60035432T2 (en) SYSTEM FOR MANAGING THE RDBM FRAGMENTATION
DE102014014076A1 (en) Reduced address translation with multiple page sizes
DE10002120A1 (en) Address converting buffer arrangement for address translation and address converting buffers has two dividing/partial units, a higher and lower address converting planes
DE19954534A1 (en) Joker search method for relational databank for directory service for e-mail system has forwards and backwards index established for provision of relational databank interrogation when joker has given position
DE2346525A1 (en) VIRTUAL STORAGE DEVICE
DE112018002032T5 (en) SHARING VIRTUAL AND REAL TRANSLATIONS IN A VIRTUAL CACHE
DE112018002028T5 (en) IMPLEMENTATION SUPPORT FOR A VIRTUAL CACHE
DE112018003032T5 (en) CACHE STRUCTURE USING A LOGICAL DIRECTORY
DE102013200030B4 (en) HASH-BASED MANAGEMENT OF STORAGE IDS
DE69815482T2 (en) Computer arrangement with processor and memory hierarchy and its operating method

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GMD-FORSCHUNGSZENTRUM INFORMATIONSTECHNIK GMBH, 53

8339 Ceased/non-payment of the annual fee