Computerarchitektur · Modul 03 · Kapitel 3 · Folien 60–78

Register und Speicher

Elf Bilder, die zeigen, wie es in der Hardware wirklich aussieht. Bei den meisten Bildern steht zuerst eine Frage. Tipp deine Antwort, bevor du auf Abspielen drückst. Unten steht eine Checkliste mit allen Kernpunkten der Folien.

3.1 · Die 32 Register
Bild 1 · Folie 61–62

Die Registerdatei: 32 gleiche Reihen mit Aufklebern

Jede Reihe besteht aus 32 Flip-Flops, also XLEN = 32 Bit (RV64: 64 Bit). Die ABI-Namen kleben nur darauf. Zieh die Aufkleber ab, dann siehst du, was die Hardware sieht.

Bit 31XLEN = 32 Flip-FlopsBit 0

Mit Aufklebern ist das die ABI-Sicht. Compiler und Betriebssystem halten sich an diese Rollen, damit separat übersetzter Code zusammenpasst (mehr in Kapitel 6).

3.2 · x0 und PC
Bild 2 · Folie 63–64

x0 im Schaltplan: Write-Enable an Masse

Links wählt der Decoder anhand von rd genau eine Write-Enable-Leitung (WE) aus. Nur wo WE ankommt, übernimmt das Register beim Takt den Wert vom Write-Bus. Bei x0 ist der WE-Eingang fest mit Masse (GND, 0 V) verbunden.

Wähle einen Befehl und schau, welche Leitungen aufleuchten.

Bild 3 · Folie 65

Der PC läuft über das Befehlsband

3.3 · Endianness, Größen, Alignment
Bild 4 · Folie 66

Little-Endian: die Bytes kippen in den Speicher

x5 = 0x12345678, x10 = 0x1000. Die Farbe bleibt am Byte, so siehst du, wohin es wandert.

Bild 5 · Folie 67

Sign-Extension ist ein Draht

Bild 6 · Folie 68–69

Alignment: Der Bus holt immer eine ganze Reihe

Der Datenbus ist 32 Bit breit, er holt also immer eine Reihe aus 4 Bytes, die an einer durch 4 teilbaren Adresse beginnt. Schieb das Fenster und schau, wie viele Reihen es braucht.

Bild 7 · Folie 70–71

Der Trap-Handler flickt das Wort zusammen

Ein strikter Core soll lw x5, 1(x10) mit x10 = 0x1000 ausführen. Er kann es nicht und springt in den Trap-Handler. Spiel den Handler Zeile für Zeile durch. Rot umrandet sind die 4 Bytes, die eigentlich gemeint sind.

    Bild 8 · Folie 69–70

    Was das kostet: 100 Takte gegen 1

    Strikter Core, jedes Kästchen ist ein Takt:

    Advanced Core: Die Hardware teilt den Zugriff selbst in zwei Cache-Zugriffe auf.

    3.4 · Der Adressraum
    Bild 9 · Folie 72–73

    Stack gegen Heap

    Bild 10 · Folie 74–75

    Der Adressdecoder wählt das Modul

    Im SoC hängen Speicher und Hardware am selben Bus. Der Interconnect (AXI, TileLink) schaut auf die oberen Adressbits und schaltet genau eine Chip-Select-Leitung frei. Gib eine Adresse ein oder wähle eine.

    Bild 11 · Folie 76

    MMIO: vom C-Code bis aufs Kabel

    Das Programm schreibt zweimal 'A' an das UART-Datenregister. Für die CPU ist das ein ganz normales sw. Einen eigenen I/O-Befehl wie bei Port-Mapped I/O gibt es nicht.

    
        

    Zum Schluss
    Übung 3.1 · Folie 77 · ohne Lösung

    x5 = 0xDEADBEEF, x6 = 0x2000. Nach sw x5, 0(x6): Welches Byte steht bei 0x2000, 0x2001, 0x2002 und 0x2003? Was lädt danach lbu x7, 1(x6)?

    Dafür brauchst du Bild 4 und Bild 5.

    Hinweis zu Folie 67

    Dort steht lw x5, 0(x2000). In der Klammer muss aber ein Register stehen. Gemeint ist ein Register, in dem 0x2000 steht. Die Ergebniswerte auf der Folie stimmen.

    Checkliste · Folien 61–78

    Kannst du das erklären?

    Hak einen Punkt erst ab, wenn du ihn ohne Hilfe erklären kannst. Die Häkchen merkt sich nur dieser Browser.