Grundlagen der Rechnerarchitektur - userpages.uni-koblenz.deunikorn/lehre/gdra/ss12/04 ARM, x86 und...

Post on 31-Aug-2019

4 views 0 download

Transcript of Grundlagen der Rechnerarchitektur - userpages.uni-koblenz.deunikorn/lehre/gdra/ss12/04 ARM, x86 und...

Grundlagen der Rechnerarchitektur

ARM, x86 und ISA‐PrinzipienARM, x86 und ISA Prinzipien

Übersicht• Rudimente des ARM‐Assemblers

• Rudimente des Intel‐AssemblersRudimente des Intel Assemblers

• ISA Prinzipien

2Grundlagen der Rechnerarchitektur ‐ Assembler

Rudimente der ARM ISA

Grundlagen der Rechnerarchitektur ‐ Assembler 3

ARM (Advanced RISC Machine)• Einsatz in eingebetteten Systemen

– MobiltelefonMobiltelefon

– PDA

R t– Router

– Spielekonsole

– Unterhaltungselektronik

• Wird in mehr als dreimilliarden Geräte pro JahrWird in mehr als dreimilliarden Geräte pro Jahr verbaut [Patterson/Hennessey 2012]

Grundlagen der Rechnerarchitektur ‐ Assembler 4

Vergleich zwischen ARM und MIPS

Grundlagen der Rechnerarchitektur ‐ Assembler 5Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Vergleich zwischen ARM und MIPS: Instruktionen

Grundlagen der Rechnerarchitektur ‐ Assembler 6Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Vergleich zwischen ARM und MIPS: Instruktionen

Grundlagen der Rechnerarchitektur ‐ Assembler 7Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Vergleich zwischen ARM und MIPS: Instruktionen

Grundlagen der Rechnerarchitektur ‐ Assembler 8Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Vergleich ARM und MIPS: Instruktionsformate

Grundlagen der Rechnerarchitektur ‐ Assembler 9Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Vergleich und Bedingte Sprünge in ARMd di di i ll i di i d• ARM verwendet die traditionellen vier Condition‐Code‐

Flags, die in einem Programm‐Status‐Register gespeichert sind:sind:negative, zero, carry, und overflow

• Flags können für alle arithmetischen und logischen (Operationen gesetzt werden (Modifikation der Flags kann 

für jede dieser Instruktionen als Option ein oder ausgeschaltet sein)ausgeschaltet sein)

• Realisierung von bedingten Sprüngen– Setzen der Flagsg

• Z.B. CMP: subtrahiere ein Operand vom anderen, ignoriere das Ergebnis, setze aber die Flags entsprechend

• Z.B. CMN: analog wie vorher nur für die Additiong• Z.B. TST: berechne logische AND zwischen zwei Operanden und setze mit Ausnahme des Overflow‐Flags die übrigen Flags entsprechend

• Z.B. TEQ: analog wie vorher nur mit ORg– Springen in Abhängigkeit der Flags

Grundlagen der Rechnerarchitektur ‐ Assembler 10

Bedinge Ausführung von Instruktionen in ARM• Jede Instruktion beinhaltet ein Condition‐Field, welches bestimmt ob die CPU die Instruktion ausführt oder nicht i h f h k i b h i• Nicht ausgeführte Instruktionen verbrauchen nur einen 

Clock‐Cycle aufgrund von Fetching und Decoding B di t I t kti füh ö li ht i l• Bedingte Instruktionsausführung ermöglicht es viele Branches einzusparen

Dies erlaub sehr dichten In Line Code ohne Branches– Dies erlaub sehr dichten In‐Line‐Code, ohne Branches– Die Zeiteinbuße mehrere aufeinander folgende “ausmaskierte” Befehle zu bearbeiten ist häufig weniger zeitaufwendig als g g gBraches oder Aufruf von Subroutinen

A füh i Abhä i k it d Fl ti d fl

Grundlagen der Rechnerarchitektur ‐ Assembler 11Bildquelle: The ARM Instruction Set ‐ ARM University Program ‐ V1.0

Ausführung in Abhängigkeit der Flags negative, zero, carry und overflow

Befehls‐Postfixe

Grundlagen der Rechnerarchitektur ‐ Assembler 12

Beispiel• Um einen Befehl nur bedingt auszuführen, wird dieser einfach mit der entsprechenden Bedingung p g gals Postfix versehen

Z B i i l h t di Additi i t kti di• Zum Beispiel hat die Additionsinstruktion die folgende Form:– ADD r0,r1,r2      ; r0 = r1 + r2

• Um diese Addition auszuführen nur dann wennUm diese Addition auszuführen nur dann wenn das Zero‐Flag gesetzt ist verwende den Postfix EQ, alsoalso:– ADDEQ r0,r1,r2    ; If zero flag set then…

; ... r0 = r1 + r2Grundlagen der Rechnerarchitektur ‐ Assembler 13

ARM und MIPS Unterschiede zwischen Adressierungsmodes

Erinnerung Register‐Operand in MIPS:add $s0, $s2, $s4 # $s0 = $s2 + $s (Instruktionstyp: R‐Typ)

Erinnerung Immediate‐Operand in MIPS:addi $s0, $s2, 42 # $s0 = $s2 + 42 (Instruktionstyp: I‐Typ)

Erinnerung Register plus Offset in MIPS:l $ 0 12($ 0) # $ 0 h l d i h ll $ 2 12

Grundlagen der Rechnerarchitektur ‐ Assembler 14Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

lw $t0, 12($s0) # $t0 = Inhalt der Speicherstelle $s2+12

Rudimente der X86 ISA

Grundlagen der Rechnerarchitektur ‐ Assembler 15

Entwicklung der Intel x86‐ArchitekturJahr Ereignis

1978 Intel bringt die 8086 16‐Bit‐Architektur heraus. Der 8086 ist Assembler‐Sprachen‐kompatibel zu der bisher sehr erfolgreichen Intel 8080 8‐Bit‐Sprachen kompatibel zu der bisher sehr erfolgreichen Intel 8080 8 BitArchitektur.

1980 Intel bringt den 8087 Floating‐Point‐Coprozessors raus. Der 8087 erweitert den 8086 um 60 Floating Point Instruktionen Der 8087 basiert auf einem Stack8086 um 60 Floating‐Point‐Instruktionen. Der 8087 basiert auf einem Stackanstatt auf Registern.

1982 Der 80286 erweitert den 8086 um einem 24‐Bit‐Adressraum, ausgeklügeltem M M i d i P i M dMemory‐Mapping und einem Protection‐Mode.

1985 Der 80386 erweitert den 80286 um einen 32‐Bit‐Adressraum, 32‐Bit‐Register, weitere Adressierungsarten, Genral‐Purpose‐Register, Paging‐Unterstützung und segmentierte Adressierung.

1989‐95 Die nachfolgenden 80486 von 1989, Pentium von 1992 und Pentium Pro von 1995 wurden hauptsächlich in der Performance verbessert. Nach außen änderte psich der Instruktionssatz nur um vier weitere Instruktionen: drei als Unterstützung für Multiprocessing und ein Conditional‐Move.

Grundlagen der Rechnerarchitektur ‐ Assembler 16

Entwicklung der Intel x86‐ArchitekturJahr Ereignis

1997 Erweiterung der Pentium Architektur um MMX (Multi‐Media‐Extensions). 57 neue Befehle auf Basis des Floating‐Point‐Stacks zur Beschleunigung von Multimedia‐Befehle auf Basis des Floating Point Stacks zur Beschleunigung von Multimediaund Kommunikations‐anwendungen. MMX arbeitet nach dem Prinzip SIMD (Single Instruction Multiple Data). Es kommt auch der Pentium II raus; allerdins noch ohne MMX.

1999 Intel bringt den Pentium IIImit zusätzlichen 70 SSE (Streaming SIMD Extensions) Befehlen heraus. Hinzufügung von 8 Registern mit 128‐Bit Breite. Erlaubt vier parallele 32‐Bit Floating‐Point‐Operationen Cache‐Prefetch‐Instruktionen undparallele 32 Bit Floating Point Operationen. Cache Prefetch Instruktionen und Cache‐Bypass‐Funktionen für direktes Schreiben in den Speicher.

2001 Intel fügt weitere 170 Befehle mit der Bezeichnung SSE2 hinzu. Dies erlaubt jetzt paare von parallelen 64 Bit Operationen Der erste Rechner mit SSE2 ist derpaare von parallelen 64‐Bit‐Operationen. Der erste Rechner mit SSE2 ist der Pentium 4.

2003 AMD erweitert die x86‐Architektur von 32‐Bit auf 64‐Bit und bring den AMD64 auf den Markt. Registergröße 64‐Bit, Erhöhung der Register auf 16 und der 128‐Bit SSE‐Register auf 16 und weiteres. Es gibt verschiedene Ausführungs‐Modes: long‐mode(alles in 64‐Bit ausführen), legacy‐mode (identisch mit x86) und compatibility‐mode( 86 d OS 64 Bit)(user‐programme x86 und OS 64‐Bit). 

Grundlagen der Rechnerarchitektur ‐ Assembler 17

Entwicklung der Intel x86‐ArchitekturJahr Ereignis

2004 Intel baut einen Nachfolger der AMD64‐Architektur, den EM64T. Zusätzliche 128‐Bit „atomic compare and swap“. Intel bringt die Media‐Erweiterung SSE3 heraus. 13Bit „atomic compare and swap . Intel bringt die Media Erweiterung SSE3 heraus. 13 weitere Befehle zur Unterstützung von komplexer Arithmetik, Grafikoperationen auf Array‐Strukturen, Video‐Encoding, Floating‐Point‐Conversion und Thread‐Synchronisation.y

2006 Intel bringt das SSE4‐Instruktionsset mit 54 weiteren Instruktionen heraus. Summe absoluter Differenzen, Skalarprodukt von Arrays, Sign‐ und Zero‐Extension, Population‐Count und weiteres Unter anderem auch Unterstützung von Virtuellen‐Population Count und weiteres. Unter anderem auch Unterstützung von VirtuellenMaschinen.

2007 AMD bringt weitere 170 Instruktionen als Teil von SSE5 heraus. Unter anderem 46 Instuktionen des Basis Instruktionsset um Drei Operanden Instruktionen wie beiInstuktionen des Basis‐Instruktionsset um Drei‐Operanden‐Instruktionen wie bei MIPS erweitert.

2008 Intel bringt die Advanced Vector Extension heraus, die die SSE‐Register von 128 auf 256 Bit erweitern. Zusätzlich werden 128 neue Instruktionen hinzugefügt.

… …

Grundlagen der Rechnerarchitektur ‐ Assembler 18

Zusammengefasst

Liste der Befehle: en wikipedia org/

Grundlagen der Rechnerarchitektur ‐ Assembler 19Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Liste der Befehle: en.wikipedia.org/wiki/X86_instruction_listings

Das 80386 Register‐Set

8 allgemeine Register

6 Segment‐Register

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

Grundlagen der Rechnerarchitektur ‐ Assembler

Instruktionstypen für Arithmetik, Logik und Datentransfer

• Immediate kann 8, 16 oder 32 Bit sein• Arithmetische, logische und Datentransfer‐Instruktionen sind 

Zweioperanden‐Instruktionenp– Ein Register ist somit immer Source‐ und Destination‐Register in einem

• MIPS und ARM hingegen erlauben Drei‐Operanden‐Instruktionen– Ein Operand kann direkt im Speicher liegenEin Operand kann direkt im Speicher liegen

• Optionen: Adressgröße kann entweder 8‐Bit oder 32‐Bit sein (Displacement genannt)• Bei MIPS und ARM dürfen Operanden nur Register sein

Grundlagen der Rechnerarchitektur ‐ Assembler 21Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Integer‐Operationen• Jede Operation arbeitet auf 8 Bit und einer längeren Datengröße die als Default‐Adressgröße festgelegt 

d ( d d )wird (Mode 16‐Bit oder 32‐Bit)• Schon seit 8086 können Befehle mit Prefixenversehen werden– „Lock the bus to support synchronization“– „Repeat the following instruction until the ECX Register counts down to 0“

– ...

• Seit 80386 gib es noch den Prefix– „Override default address size“– (Damit lässt sich ein Befehl mit 32‐Bit Adressgröße im 16‐Bit‐Mode und umgekehrt ausführen)

Grundlagen der Rechnerarchitektur ‐ Assembler 22

Typische Instruktionen

Grundlagen der Rechnerarchitektur ‐ Assembler 23Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Typische Instruktionsformate

Grundlagen der Rechnerarchitektur ‐ Assembler 24Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

ISA Prinzipien

Wo befinden sich die Operanden?

Grundlagen der Rechnerarchitektur ‐ Assembler 26Bildquelle: John L. Hennessy und David A. Patterson, „Computer Architecture“, Fifth Edition, 2012

Code‐Beispiel für die Stack‐Architektur

Die Code‐Sequenzq

C = A + B

wird wie folgt bearbeitet

Push APush BAddPop C

Grundlagen der Rechnerarchitektur ‐ Assembler 27Bildquelle: John L. Hennessy und David A. Patterson, „Computer Architecture“, Fifth Edition, 2012

Code‐Beispiel für die Accumulator‐Architektur

Die Code‐SequenzProcessor q

C = A + B

Processor

wird wie folgt bearbeitet

Load AAdd BMemory

Store Cy

Grundlagen der Rechnerarchitektur ‐ Assembler 28Bildquelle: John L. Hennessy und David A. Patterson, „Computer Architecture“, Fifth Edition, 2012

Code‐Beispiel für die Register‐Memory‐Architektur

Processor Die Code‐Sequenzq

C = A + B

wird wie folgt bearbeitet

MemoryLoad R1, AAdd R3, R1, BStore R3, C

Grundlagen der Rechnerarchitektur ‐ Assembler 29Bildquelle: John L. Hennessy und David A. Patterson, „Computer Architecture“, Fifth Edition, 2012

Code‐Beispiel für die Load‐Store‐Architektur

Processor Die Code‐SequenzProcessor q

C = A + B

wird wie folgt bearbeitet

Memory

Load R1, ALoad R2, BMemoryAdd R3, R1, R2Store R3, C

Grundlagen der Rechnerarchitektur ‐ Assembler 30Bildquelle: John L. Hennessy und David A. Patterson, „Computer Architecture“, Fifth Edition, 2012

Die wichtigsten Klassen heutzutage• General‐Purpose‐Register‐Architektur

– Beispiel x86erBeispiel x86er• 16 General‐Purpose‐Register

• 16 Floating‐Point‐Register16 Floating Point Register

– Beispiel MIPS32 G l P R i t• 32 General‐Purpose‐Register

• 32 Floating‐Point‐Register

• Unterscheidung in– Register‐Memory‐ISAg y

– Load‐Store‐ISA

Grundlagen der Rechnerarchitektur ‐ Assembler 31

Zusammenfassung und Literatur

Grundlagen der Rechnerarchitektur ‐ Assembler 32

Zusammenfassung• Kenntnis einer Assemblersprache erleichtert den Einstieg in andereg

• Wesentlicher unterschied CISC, RISC

• Nach Praxis mit MIPS sollte es möglich sein mit Handbuch der Befehle anderer ISAs in Assembler zu programmieren. (Natürlich Kenntnis der Rechnerarchitektur erforderlich; also nächsteRechnerarchitektur erforderlich; also nächste Kapitel: CPU, Mem, IO)

Grundlagen der Rechnerarchitektur ‐ Assembler 33

Literatur[PattersonHennessy2012] David A. Patterson und John L. Hennessy, „Computer Organization andy, „ p gDesign“, Fourth Edition, 20122 16 Real Stuff: ARM Instructions2.16 Real Stuff: ARM Instructions

2.17 Real Stuff: x86 Instructions

[HennessyPatterson2012] John L. Hennessy und David A. Patterson, „Computer Architecture“, Fiftha d atte so , „Co pute c tectu e , tEdition, 20121 3 Defining Computer Architecture1.3 Defining Computer Architecture

A.2 Classifying Instruction Set Architectures

Grundlagen der Rechnerarchitektur ‐ Assembler 34