Cache

Beispiel direkt-abbildender Cache

Hauptspeichergröße: 4MiB
Einträge des Caches: 4096
Blockgröße: 16 Byte

Cachezeilen/Einträge des Caches = Cachegröße / Blockgröße

Cacheadresse = Gültigkeitsbit + Tag + Index + Byteblock
Wie viel Bit benötigt man um den kompletten Hauptspeicher anzusprechen?
4 MiB = 4 * 2^20 = 2^22 => 22 Bit

Wie viel Bit besitzt der Block-Offset Bereich?
16 Byte = 2^4 Byte => 4 Bit

Wie viel Bit besitzt der Index Bereich?
4096 = 4 * 2^10 = 2^12 => 12 Bit

Wie viel Bit besitzt der Tag Bereich?
Aus den vorherigen Ergebnissen: 22-4-12 = 6 Bit

Wie viel Bit lang wird die Cacheadresse mit zusätzlichem Validbit?
Zur Adressierungslänge (s. oben) 1 Bit hinzufügen => 22 + 1 = 23 Bit

Paging

Virtuelle Seitennummer | Seiten-Offset
    |
    | (Abbildung/Übersetzung)
    v
Physikalische Seitennummer | Seiten-Offset
Virtuelle Adresslänge: 32 Bit
Physikalische Adresslänge: 30 Bit
Seitengröße: 4K (2^12)

Wie viele Einträge in der Seiten Tabelle?
Größe Virtueller Speicher / Seitengröße
zB. 2^32 / 2^12 = 2^20

Wie viele Seitenrahmen?
Größe Physikalischer Speicher / Seitengröße
zB. 2^30 / 2^12 = 2^18

Wie viel Bit pro Seiteneintrag?
1 Valid Bit + 18 Bit = 19 Bit

Maximale Größe der Seitentabelle?
2^20 * 19 Bit = 19 MBit

1 Dimensionales Paging

Größe virtueller Adressraum: 2^32 Bytes
Größe virtuelle Seite: 2^12 Bytes

=> 2^32/2^12 = 2^20 Einträge die in die physikalische Seite Verweisen

2^20 Einträge à 32 Bit (4 Byte) => 4 MiB für Seitentabelle

Verwaltung + Nutzdaten:
4 MiB (Seitentabelle) + 4 KiB (physikalische Seite) = ~4,008 MiB

2 Dimensionales Paging

Größe Seitenverzeichnis: 2^10 Bytes
Größe Seitentabelle: 2^10 Bytes

=> 2^10 Einträge à 32 Bit => 4 KiB für Seitenverzeichnis
=> 2^10 Einträge à 32 Bit => 4 KiB für eine Seitentabelle

Verwaltung + Nutzdaten:
4 KiB (Seitenverzeichnis) + 4 KiB (Seitentabelle) + 4 KiB (phys. Seite) = ~16 KiB