Sie sind auf Seite 1von 15

4.

Tutorium Rechnerorganisation
Tutorium 17 | Wintersemester 2021/2022
Raphael Abels | 26.11.2021

INSTITUT FÜR TECHNISCHE INFORMATIK

KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu


Gliederung

1 Einführung in die RISC-V-Architektur

2 Hello World, RISC-V!

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 2/15


Was ist RISC-V?

Prozessorarchitektur, die 2010 in Berkeley entwickelt wurde


Nicht patentiert, darf von jedem verwendet werden
Folgt den Designprinzipien einer RISC-Architektur (Reduced
Instruction Set Computer)
Wenige, elementare Befehle; wenige Befehlsformate; viele Register
Festverdrahtetes Steuerwerk statt Mikroprogrammierung
Deshalb hohe Taktung und einfaches Pipelining möglich
Vergleich zu CISC (Complex Instruction Set Computer)
Viele Befehle, die z.T. komplexe Abläufe implementieren,
nur wenige Befehle werden tatsächlich genutzt
Mikroprogrammierte Befehle
Erschwertes Pipelining (unterschiedlich lange Befehle)

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 3/15


Datenspeicherung

Byte (b): immer 8-Bit


Half-Word (h): in RISC-V (wie meistens) 16-Bit
Word (w): in RISC-V (wie meistens) 32-Bit

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 4/15


Register
$zero (x0): enthält Null-Wert
$ra (x1): Rücksprungadresse
$sp (x2): Stack-Pointer
$gp (x3): Global-Pointer
$tp (x4): Thread-Pointer
$t0-2 (x5-7): Temporäre Variablen
$s0/fp (x8): Langlebige Variablen, Frame-Pointer
$s1 (x9): Langlebige Variable (müssen vom Unterprogramm
gesichert werden)
$a0-1 (x10-11): Funktionsargumente/Funktionsrückgabe
$a2-7 (x12-17): Funktionsargumente
$s2-11 (x18-27): Langlebige Variablen
$t3-6 (x28-31): Temporäre Variablen
Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 5/15


Befehlsformate von RISC-V

Alle Befehlsformate sind 32 bit breit


R-Typ (“Register”): 7 Bit Opcode, 5 bit Zielregister, 2x 5 bit
Quellregister, 3;5 bit Funktionscode (Zusatz für OpCode)
I-Typ (“Immediate”): 7 bit Opcode, 2x 5 bit Register-Nummer, 12 bit
Immediate-Wert, 3 Bit Funktionscode
S-Typ (“Store"): 7 bit Opcode, 12 bit Immediate-Wert (aufgeteilt 11-5;
4-0), 2x 5 bit Register, 3 bit Funktionscode
SB-Type(SSelect Branch"): 7 bit OpCode, 2x 5 bit Quellregister, 12
bit Zieladresse (PC-relativ), 3 bit Funktionscode
U-Type (Üpper Immediate Instruction"): 20 bit immediate, 5 bit
Zielregister, 7 bit OpCode
UJ-Type (Ünconditional(?) Jump"): 20 bit offset (PC-relative Adresse),
5 bit Register (Speicherung der Rücksprungadresse), 7 bit OpCode

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 6/15


Befehlsformate von RISC-V

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 7/15


Pseudobefehle

Erweiterung des Befehlssatzes, ohne dass sich die Komplexität des


CPU-Designs erhöht
Werden nicht (direkt) auf einen Maschinenbefehl abgebildet, sondern
durch einen oder mehrere native Befehle ersetzt
Anwendungsfälle:
Anbieten häufig verwendeter Spezialfälle zur Vereinfachung der
Programmierung (z.B. neg )
Ausgleich von Beschränkungen des Befehlssatzes (z.B. li )

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 8/15


Einige RISC-V Befehle

Grundsätzlich:
„ u “ = unsigned /without overflow
„ i “ = immediate (Konstante)
add t1, t2, t3 / addi t1, t2, imm #Addition
div t1, t2, t3 / rem t1, t2, t3 #Division
neg t1, t2 #Negation, Pseudo

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 9/15


Assemblerdirektiven

Beginnen in RISC-V mit einem Punkt


Werden nicht (direkt) in Maschinencode umgesetzt
Steuern das Verhalten des Assemblierers
Wahl des Segments
Reservierung von Speicher
Veränderung der Art, wie Daten abgelegt werden (z.B. Alignment)
Wichtige Assemblerdirektiven: .data , .text , .globl , .ascii , .asciz ,
.byte , .half , .word, .float

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 10/15


Systemaufrufe

Werden in RISC-V mit dem Befehl ecall ausgelöst


Erlauben die Nutzung von vorgegebenen Betriebssystemfunktionen
Details: Vorlesung Betriebssysteme
Aufrufkonvention:
Nummer des gewünschten Systemaufrufs muss vorher in das
Register $a7 geschrieben werden
Übergabe von Parametern und Rückgabewerten ebenfalls über
Register

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 11/15


Liste der Systemaufrufe

Ausgabe von Werten:


print int (#1), print float (#2), print double (#3), print string (#4)
Parameter: Integer in $a0 , Gleitkommazahl $a0 , Startadresse des
Strings in $a0
Einlesen von Werten:
read int (#5), read float (#6), read double (#7), read string (#8)
Parameter: Rückgabe des Integers in $a0 , Gleitkommazahl in/ab
$fa0, Startadresse des Stringpuffers in $a0 , maximale Stringlänge in
$a1
Sonstiges:
sbrk (#9): Allokiert Speicherblock der Größe $a0 Bytes und schreibt
die Startadresse in $a0
exit (#10): Beendet die Ausführung

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 12/15


Hello World, RISC-V!

Ladet euch den RISC-V-Simulator RARS von der Projektseite


https://github.com/TheThirdOne/rars/releases/tag/continuous oder im
Ilias herunter und installiert diesen auf eurem System.
Schreibt damit ein gültiges Hello-World-Programm

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 13/15


Lösung
# H e l l o World i n RISC−V−Assemblersprache
.data
# Es f o l g e n Daten im Datensegment
hello : . a s c i z " H e l l o World ! \ n "
# auszugebender Text
.text
# Umschalten a u f s Textsegment
. g l o b l main
# main a l s g l o b a l e s Symbol
main : l i a7 , 4
# Systemaufruf − N r . f u e r P r i n t S t r i n g −> a7
l a a0 , h e l l o
# Adresse des auszugebeneden Texts −> a0
ecall # Sy s t em a uf r uf
j r ra # Programmende
Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 14/15


Danke für eure Aufmerksamkeit!

Einführung in die RISC-V-Architektur Hello World, RISC-V!

Raphael Abels – 4. Tutorium Rechnerorganisation 26.11.2021 15/15

Das könnte Ihnen auch gefallen