• Keine Ergebnisse gefunden

Grundlagen der Rechnerarchitektur

N/A
N/A
Protected

Academic year: 2022

Aktie "Grundlagen der Rechnerarchitektur"

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Grundlagen der Rechnerarchitektur

MIPS‐Assembler

MIPS Assembler

(2)

Übersicht

• Arithmetik, Register und Speicherzugriff

• Darstellung von Instruktionen g

• Logische Operationen W it A ith tik

• Weitere Arithmetik

• Branches und Jumps

• Prozeduren

• 32‐Bit‐Konstanten und Adressierung

• 32‐Bit‐Konstanten und Adressierung

• Synchronisation

• Exceptions

• Pseudoinstruktionen, Direktiven und Makros ,

(3)

Motivation

Grundlagen der Rechnerarchitektur ‐Assembler 3

(4)

Warum ein Assembler‐Kurs?

• Wir wollen etwas über Rechnerarchitektur lernen. 

Assembler ist ein Teil davon.

• Nach dem Erlernen von Assembler eines Systems, 

l t A bl d R h ki d l i ht

lernt man Assembler anderer Rechner kinderleicht

• Während wir uns mit Assembler beschäftigen  g

lernen wir auch generelle Konzepte kennen, wie 

die Hardware in Computern und eingebetteten

die Hardware in Computern und eingebetteten 

Systemen organisiert ist

(5)

Vor‐ und Nachteile von Assembler

ll bl i ?

• Wann sollte man Assembler programmieren?

– Code‐Größe oder Geschwindigkeit sollen bis auf das äußerste  ausgereizt werden g

– Verwendung  spezieller Maschineninstruktionen, die ein Compiler  nicht nutzt  (in der Regel bei CISC) 

– Es gibt für die Computer‐Hardware keine höhere Sprache Es gibt für die Computer Hardware keine höhere Sprache

• Meist wird ein hybrider Ansatz gewählt

– Man programmiert das meiste in einer High‐Level‐Sprache

– Nur kleine Teile des gesamten Codes werden direkt in Assembler  optimiert

• Nachteil von Assembler Nachteil von Assembler

– Programme laufen nur für den Hardwaretyp für den diese  programmiert sind

Assembler Code ist im Vergleich zu High Level Sprachen deutlich – Assembler‐Code ist im Vergleich zu High‐Level‐Sprachen deutlich 

länger

• Programmieren dauert deutlich länger

• Programmieren ist fehleranfälliger (insbesondere wegen fehlender Struktur)

• Programmieren ist fehleranfälliger (insbesondere wegen fehlender Struktur)

Grundlagen der Rechnerarchitektur ‐Assembler 5

(6)

Assembler am Beispiel der MIPS‐Architektur

h i bi

• Frühere Einsatzgebiete MIPS

– Silicon Graphics Unix‐Workstations (z. B. SGI Indigo2)  Silicon Graphics Unix Server (z B SGI Origin2000)

– Silicon Graphics Unix‐Server (z. B. SGI Origin2000) 

– DEC Workstations (z.B. DECstation‐Familie und DECsystem) – Siemens bzw. SNI Server der RM‐Serie

– Control Data Corporation Computer des Typs CDC 4680 

• Heutiger Einsatz von MIPS in eingebetteten Systemen

– Cobalt‐Server bis RaQ/Qube2 – BMW‐Navigationssysteme

die Fritz!Box – die Fritz!Box

– Satellitenreceiver – Dreambox Dreambox

– Konica Minolta DSLRs 

– Sony‐ und Nintendo‐Spielkonsolen

Quelle der Liste: de.wikipedia.org/wiki/MIPS‐Architektur

(7)

Warum gerade MIPS (und nicht Intel x86)?

• MIPS‐Instruktionssatz ist klar und einfach (RISC)

• Sehr gut in Lehrbüchern beschrieben Sehr gut in Lehrbüchern beschrieben

• Sehr ähnlich zu vielen modernen Prozessoren 

( B ARM h i h h k )

(z.B. ARM; schauen wir uns auch noch kurz an)

• MIPS ist eine kommerziell relevante 

Instruktionssatzarchitektur. (z.B. 2002 wurden  fast 100 Millionen MIPS Prozessoren hergestellt) fast 100 Millionen MIPS Prozessoren hergestellt)

7 Grundlagen der Rechnerarchitektur ‐Assembler

(8)

Begleitend: SPIM‐ und MARS‐Simulator

Programmieren lernt man nicht durch zuschauen!

Programmieren lernt man nicht durch zuschauen!

Alle Konzepte sollte man hier selber ausprobieren!

(9)

Arithmetik, Register und Speicherzugriff

Grundlagen der Rechnerarchitektur ‐Assembler 9

(10)

Arithmetik und Zuweisungen

Ei f h A ith tik it Z i C Programm:

a = b + c;

MIPS Instruktionen:

Einfache Arithmetik mit Zuweisung

a = b + c;

d = a – e;

K l A ith tik it Z i

C Programm: MIPS Instruktionen (verwende temporäre 

Variablen t0 und t1):

Komplexere Arithmetik mit Zuweisung

f = (g + h) – (i + j);

(11)

Die Operanden sind Register

V i B i i l K l A ith tik it Z i C Programm:

f = (g + h) (i + j);

MIPS Instruktionen (verwende temporäre  Register $t0 und $t1):

Voriges Beispiel: Komplexere Arithmetik mit Zuweisung

f = (g + h) – (i + j);

Sei hierbei:

in Re ister $s1 espei hert

add $t0, $s1, $s2 # t0=g+h add $t1, $s3, $s4 # t1=i+j

g in Register $s1 gespeichert

h in Register $s2 gespeichert i in Register $s3 gespeichert j in Register $s4 gespeichert

add $s0, $t0, $t1 # f=t0+t1

j in Register $s4 gespeichert f in Register $s0 gespeichert

MIPS Registergröße = 32 Bit

Assembler‐Syntax:

Das Zeichen  # leitet für den Rest der Zeile einen Kommentar ein. 

Grundlagen der Rechnerarchitektur ‐Assembler 11

Der Text wird vom Assembler einfach ignoriert.

(12)

Speicher‐Operanden

C Programm:

g = h + A[8];

MIPS Instruktionen (verwende temporäres  Register $t0):

Sei hierbei:

g in Register $s1 gespeichert h in Register $s2 gespeichertg $ g p

Basisadresse von A in Register $s3

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

(13)

Alignment‐Restriction

Zugriff auf A[8], wenn Basisadresse von A in Register $s3 gespeichert?g [ ], g $ g p

Grundlagen der Rechnerarchitektur ‐Assembler 13

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

(14)

Laden und Speichern

C Programm:

A[12] = h + A[8];

MIPS Instruktionen (verwende temporäre  Register $t0):

A[12] = h + A[8];

Sei hierbei:

Basisadresse on A in in Re ister $s3 Basisadresse von A in in Register $s3  h in Register $s2 gespeichert

(15)

Laden und Speichern von Bytes

C Programm:

A[12] = A[8];

MIPS Instruktionen (verwende temporäre  Register $t0):

Sei hierbei:

Basisadresse von A in in Register $s3  h in Register $s2 gespeichert

h in Register $s2 gespeichert

Sei A[8] = 01110010. Was passiert im obigen Beispiel bei lb mit $t0 genau?

LSB

$t0 MSB

Sei A[8] = 11110010. Was passiert im obigen Beispiel bei lb mit $t0 genau?

$t0

Grundlagen der Rechnerarchitektur ‐Assembler 15

MSB LSB

(16)

Weitere Befehle zum Laden und Speichern

Laden von Byte ohne Sign‐Extension:

lbu { Beispiel: lbu $t0, 27($s3) }

Was passiert im obigen Beispiel mit $t0, wenn 27($s3) = 11001000?

$t0

LSB

$t0 MSB

Laden von Halfword mit Sign‐Extension:

lh { Beispiel: lh $t0, 22($s3) }

Laden von Halfword ohne Sign‐Extension:

lhu { Beispiel: lhu $t0, 22($s3) }

Speichern von Halfword:

sh { Beispiel: sh $t0, 22($s3) }

(17)

Addieren und Laden von Konstanten

C Programm:

x = x + 4;

MIPS Instruktion:

Sei hierbei:

x in Register $s3 gespeichert

MIPS erlaubt negative Konstanten und braucht damit kein ‚subi‘.

MIPS hat ein spezielles Register $zero, welches 0 ‘hart verdrahtet‘ speichert.

C Programm:

x = 42;

MIPS Instruktion:

Sei hierbei:

x in Register $s3 gespeichert

Grundlagen der Rechnerarchitektur ‐Assembler 17

(18)

Zwischenbilanz der MIPS Architektur

CPU

Memory

Name Nummer Verwendung

$0 . Registers

g

$zero 0 Konstante 0

$at 1

. . .

$31

$v0‐$v1 2‐3

$a0‐$a3 4‐7

$t0 $t7 8 15 T ä R i t

$ Arithmetic

Unit

$t0‐$t7 8‐15 Temporäre Register

$s0‐$s7 16‐23 „saved“ temporäre Reg.

$t8‐$t9 24‐25 Temporäre Register

Unit $t8 $t9 24 25 Temporäre Register

$k0‐$k1 26‐27

$gp 28

$sp 29

$fp 30

$

$ra 31

(19)

Zusammenfassung der behandelten Instruktionen

Instruktion Bedeutung Instruktion Bedeutung

hmetik add

rd, rs, rt Register rd = Register rs + Register rt

addi

rt, rs, imm Register rt = Register rs + Konstante imm

Arith addi

rt, rs, imm Register rt  Register rs  Konstante imm

sub

rd, rs, rt Register rd = Register rs –Register rt

lb

rt, address Lade Byte an der Adresse address in Register rt.

en

Das Byte ist sign‐extended.

lbu

rt, address Lade Byte an der Adresse address in Register rt.

Lade

lh

rt, address Lade Half‐Word an der Adresse address in Register rt.

Das Half‐Word ist sign‐extended.

lhu

rt address Lade Half‐Word an der Adresse address in Register rt

lhu

rt, address Lade Half Word an der Adresse address in Register rt.

lw

rt, address Lade Word an der Adresse address in Register rt.

n sb

rt, address Speichere unterstes Byte des Registers rt an Adresse address

Speichern

, p y g

sh

rt, address Speichere unteres Half‐Word des Registers rt an Adresse  address

Grundlagen der Rechnerarchitektur ‐Assembler 19

S sw

rt, address Speichere Inhalt des Registers rt an Adresse address.

(20)

Quiz

addi $s0, $zero, 4 # lw $s1, 0($s0) # l $ 2 4($ 0) # lw $s2, 4($s0) # add $s1, $s1, $s1 # add $s1, $s1, $s2 # add $s1, $s1, $s2 # addi $s1, $s1, 1 # sw $s1, 0($s0) #

… Inhalt (Word)

… Inhalt (Word)

8 4

12 33

dr esse

8 12

dr esse

0 421

4 12

8 4

A

0 4

A 8

Speicher zu Beginn Speicher nach Instruktionsdurchlauf

Referenzen

ÄHNLICHE DOKUMENTE

regungen zu häuslicher Kunfipflege zu geben; andrerfeits: den Nachweis zu führen, dafs der gute Gefchmack nicht auf Laune und Willkür beruht, fondern logifch begründet werden

eines Diploditrioeders in gleicher Stellung, entweder seohsfi, Zusp. der Endecken, die Zusp. auf die F1. aufgesetzt, oder Zusch‚ der stumpferen Endkanten, oder vierfl.«Zugp.

sechsfl, Zusp. der Endecken, die Zusp. auf die Kanten ger. der Seitenecken, die Zusp. auf die F1, aufgesetzt, wenn m’ < 111, wobei die Comhinationskanten mitden Endkanten

Die Abbildung 7 zeigt einen Dreipass, wie er etwa in der gotischen Architektur er- scheint.. Die Seiten sind zunehmend nach außen gebogen. 8: Zweite Potenz.. Die

I do not exaggerate when I say that 2014 needs to be the year in which every government, every organization, every business, every individual needs to ask themselves, ‘How am I

Es wird keine Haftung übernommen für Schäden durch die Verwendung von Informationen aus diesem Online-Angebot oder durch das Fehlen von Informationen.. Dies gilt auch für

An LT summary interrupt can be generated when 64 characters of the message buffer are filled or when a communications function is completed but, because

A d ir~nlilueudas diiguisitiooes dc os~ilicafionis processu, qiias in hm commentationi, riroriim aoctoriini jildicio propono, Reichert, profcssor elarissinius,