« »

Übersetzung physischer Adressen

Ein 32-Bit RISC-V-Prozessor (mit dem virtuellen Speichermodus sv32) nutzt die folgende Seitentabelle:

 Diagramm zur Adressübersetzung. Die virtuelle Adresse ist aufgeteilt in 10 Bit für L2, 10 Bit für L1 und 12 Bit für den Offset. Die physische Adresse alloziert 20 Bit für PPN und 12 Bit für den Offset. Das Diagramm zeigt außerdem drei Tabellen. Ein mit “satp” beschrifteter Pfeil zeigt auf Zeile 0 einer Tabelle mit dem Namen “Page directory”. Die Tabelle enthält folgende vier Einträge: Zeile 0 mit PPN “0x00000” und Flags “V”. Zeile 1 mit PPN “0x02040” und Flags “V”. Zeile 2 mit PPN “0x02468” und Flags “V”. Zeile 3 mit PPN “0x04080” und Flags “V”. Ein mit dem Wert “0x040800000” beschrifteter Pfeil zeigt auf Zeile 0 einer weiteren Tabelle mit dem Namen “Page table”. Diese hat folgende vier Einträge: Zeile 0 mit PPN “0x10101” und Flags “–”. Zeile 1 mit PPN “0x20202” und Flags “VRX”. Zeile 2 mit PPN “0x30303” und Flags “VR”. Zeile 3 mit PPN “0x40404” und Flags “VRW”. Ein mit dem Wert “0x02040000” beschrifteter Pfeil zeigt auf Zeile 0 einer weiteren Tabelle mit dem Namen “Page table”. Diese hat folgende vier Einträge: Zeile 0 mit PPN “0x13375” und Flags “VRW”. Zeile 1 mit PPN “0x01000” und Flags “VR”. Zeile 2 mit PPN “0xFACE5” und Flags “–”. Zeile 16 mit PPN “0xF00D5” und Flags “VRW”. Die Bedeutung der Flags wird durch eine Legende erklärt: “V” für “Valid”, “R” für “Read”, “W” für “Write” und “X” für “Execute”.

Bestimmen Sie nun für die angegebene zweistufige Seitentabelle die jeweiligen virtuellen Adressen zu den folgenden physischen Adressen.

Diese Aufgabe war Teil der Klausur im Sommersemester 2025 (Zweittermin).

a)

Level 3: Anwenden

Physische Adresse 0xF00D5010

Lösung

Adresse in Einzelteile zerlegen:

  • Physische Seitennummer (PPN): 0xF00D5
  • Offset: 0x010 (erste 12 Bit)

Adresse nachverfolgen:

  • PPN 0xF00D5 abgelegt in Seitentabelle 0x02040000 an Index 16
  • Seitentabelle 0x02040000 referenziert im Seitenverzeichnis an Index 1

Adresse übersetzen:

  • Index in der Seitentabelle (level 0): 16 (0x10)
  • Index im Seitenverzeichnis (level 1): 1
  • Offset übernehmen
   0    0    4    1    0    0    1    0 (hex)
0000 0000 0100 0001 0000 0000 0001 0000 (binär)
VVVV VVVV VVTT TTTT TTTT OOOO OOOO OOOO

(V = Verzeichnis, T = Tabelle, O = Offset)

Virtuelle Adresse: 0x00410010

b)

Level 3: Anwenden

Physische Adresse 0x30303030

Lösung
  • PPN 0x30303 abgelegt in Seitentabelle 0x040800000 an Index 2 → level 0
  • Seitentabelle 0x040800000 referenziert im Seitenverzeichnis an Index 3 → level 1
  • Offset 0x030 (erste 12 Bit) übernehmen
   0    0    C    0    2    0    3    0 (hex)
0000 0000 1100 0000 0010 0000 0011 0000 (binär)
VVVV VVVV VVTT TTTT TTTT OOOO OOOO OOOO

(V = Verzeichnis, T = Tabelle, O = Offset)

Virtuelle Adresse: 0x00C02030

c)

Level 3: Anwenden

Physische Adresse 0xFACE5678

Lösung
  • PPN 0xFACE5 abgelegt in Seitentabelle 0x02040000 an Index 2 → level 0
  • Seitentabelle 0x02040000 referenziert im Seitenverzeichnis an Index 1 → level 1
  • Offset 0x678 (erste 12 Bit) übernehmen
   0    0    4    0    2    6    7    8 (hex)
0000 0000 0100 0000 0010 0110 0111 1000 (binär)
VVVV VVVV VVTT TTTT TTTT OOOO OOOO OOOO

(V = Verzeichnis, T = Tabelle, O = Offset)

Virtuelle Adresse: 0x00402678

d)

Level 3: Anwenden

Zusatzaufgabe: Folgende zusätzliche Aufgaben können zum Üben verwendet werden. Alle Lösungen befinden sich im folgenden Lösungsblock.

  1. Bestimmen Sie die virtuelle Adresse zur physischen Adresse 0x404040FF.
  2. Wir erweitern die Seitentabelle 0x02040000 um die PPN 0xBEEF2 an Index 768. Welcher virtuellen Adresse entspricht diese mit einem beliebigen Offset?
  3. Löst der Versuch, im Speicher den Wert an der physischen Adresse 0xFACE5678 zu lesen, einen Seitenfehler aus?
Lösung
  1. Virtuelle Adresse: 0x00C030FF.
  2. Virtuelle Adresse: 0x00700___.
  3. Ja, denn der Seitentabelleneintrag ist ungültig (fehlendes V-Bit).

Lernziele

In dieser Aufgabe …

  • nähern sich die Studierenden aus der umgekehrten Richtung der Adressübersetzung.