55
School of Engineerin g Heute: - ARM Befehlssätze - ARM Instruction Pipeline - Branches & Bedingte Befehle

Heute: - ARM Befehlssätze - ARM Instruction Pipeline - Branches & Bedingte Befehle

  • Upload
    rowa

  • View
    29

  • Download
    0

Embed Size (px)

DESCRIPTION

Heute: - ARM Befehlssätze - ARM Instruction Pipeline - Branches & Bedingte Befehle. ARM7 Exception Vectors. Exception. Mode. Address. Reset. Supervisor. 0x00000000. Undefined instruction. Undefined. 0x00000004. Software interrupt (SWI). Supervisor. 0x00000008. - PowerPoint PPT Presentation

Citation preview

Page 1: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Heute: - ARM Befehlssätze - ARM Instruction Pipeline - Branches & Bedingte Befehle

Page 2: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

ARM7 Exception Vectors

Prefetch Abort (instruction fetch memory abort)

Supervisor

0x0000001C

Exception Mode Address

Reset

Undefined instruction

Software interrupt (SWI)

Data Abort (data access memory abort)

IRQ (interrupt)

FIQ (fast interrupt)

Undefined

Supervisor

Abort

Abort

IRQ

FIQ

0x00000018

0x00000010

0x0000000C

0x00000008

0x00000004

0x00000000

Page 3: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

System & User

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13

R14

R15 (PC)

CPSR

FIQ

R0

R1

R2

R3

R4

R5

R6

R7_fiq

R8_fiq

R9_fiq

R10_fiq

R11_fiq

R12_fiq

R13_fiq

R14_fiq

R15 (PC)

CPSR

SPSR_fiq

Supervisor

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13_svc

R14_svc

R15 (PC)

CPSR

SPSR_svc

Abort

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13_abt

R14_abt

R15 (PC)

CPSR

SPSR_abt

IRQ

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13_irq

R14_irq

R15 (PC)

CPSR

SPSR_irq

Undefined

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13_und

R14_und

R15 (PC)

CPSR

SPSR_und

ARM7 Register & Betriebszustände

Page 4: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Cortex-M3 Betriebszustände

Privileged User

When running an Exception Handle Mode

When Running Main Program Thread Mode Thread Mode

OperationModes

PrivilegeLevels

Wechseln der Betriebszustände:MSR CONTROL, R0

Page 5: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Übung 1

• Von welcher Adresse wird die erste Zeile des vom Anwender geschriebenenAssemblercodes eingelesen (kein Betriebssystem vorausgesetzt) ?

• An welcher Adresse befindet sich die erste Assembleranweisung der Fast InterruptRoutine ?

• An welcher Adresse befindet sich die erste Assembleranweisung des UndefinedInstruktion Handlers ?

Page 6: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Übung 1 - Lösung

• Von welcher Adresse wird die erste Zeile des vom Anwender geschriebenenAssemblercodes eingelesen (kein Betriebssystem vorausgesetzt) ? 0x00000100

• An welcher Adresse befindet sich die erste Assembleranweisung der Fast InterruptRoutine ? 0x00007000

• An welcher Adresse befindet sich die erste Assembleranweisung des UndefinedInstruktion Handlers ? 0x00002000

Page 7: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

ARM Befehlssätze

Page 8: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

● Befehlssätze○ 32-bit „ARM“ Befehlssatz○ 16-bit „Thumb“ Befehlssatz○ 16/32-bit „Thumb-2“ Befehlssatz

(Thumb-2 Superset von Thumb Befehlssatz)● ARM7

○ Unterstützt ARM und Thumb Befehlssatz○ Notwendiges hin- und herschalten zwischen ARM und

Thumb Befehlssatz● Cortex-M

○ Nur Thumb-2 Befehlssatz○ Auch alle Thumb Befehle werden unterstützt○ Cortex M nicht Binärkompatibel mit ARM7

● Cortex-R-A Serie ○ ARM Befehlssatz & Thumb2 Befehlssatz

● Literatur: ○ ARMv7-M Architecture Application Level Reference Manual (Link

auf WWW)

Die Befehlssätze

Page 9: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Thumb vs. ARM Befehlssatz

ARM Anweisung:ADD R0, R0,R1

Thumb Anweisung:ADD R0, R1

R0 ist gleichzeitigZiel und Operand1

Ziel-register Operand1 Operand2

R1 ist Operand2

R0 = R0 + R1

Page 10: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Thumb vs. ARM Befehlssatz

16-bitThumb

32-bitARM

Vorteil Braucht ~30% weniger Speicherplatz

Läuft ~40% schneller

Nachteil Eingeschränkte Funktionalität

Speicherplatz

Es braucht spezielle Funktion zwischen ARM und Thumb umzuschalten

Page 11: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

ARM

THUMB

ARM

Reset

BLX

BX

Thumb: Umschalten ARM und Thumb Mode

• Spezielle Branch Anweisungen schalten zwischen ARM und ThumbMode hin und her.• Zusätzlich wird bei jeder Exception in den ARM Mode geschaltet

Page 12: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

ARM

THUMB

THUMB

Exception

End ofException

Thumb: Umschalten ARM und Thumb Mode

Page 13: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Neuer: Thumb-2 Befehlssatz

● Enthält 32-bit Befehle und 16-bit Befehle● Kein Umschalten zwischen 32-bit und 16-bit

Befehlen● Superset des Thumb Befehlssatzes● Erlaubt komplexere Operationen als Thumb

○ Hardware Divide und Multiply

● Enthält auch alle Thumb Befehle

Page 14: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineeringVorteile von Thumb-2 gegenüber

Thumb

● Verfügt auch über einige 32-bit Befehle● Zusätzliche Befehle gegenüber Thumb

○ Compare Zero Branch○ Coprozessor Instructions○ IT- if then○ Bit reversal

● Laut ARM kann ARM Code kann ohne grosse Leistungsverluste mit Thumb-2 Code ersetzt werden und spart zusätzlich Speicherplatz

Page 15: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Thumb-2: Unified Assembler Language

Gleich lautende Befehle für 16-bit und 32-bitVorher: Thumb: AND R0, R1

ARM: AND R0, R0, R1

Jetzt nur noch: AND R0, R0, R1

Page 16: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Cond 00 I OpCode S Rn Rd Operand2

20 15 1112 0162631 25 1921242728

0100 = ADD0010 = SUB1101 = MOV…

DestinationRegister

Operand1Register

0000 = EQ0001 = NE0010 = >=…1110 = Immer

Beispiel:ADDEQ R2,R4,R5 ;If Z flag set R2:= R4 + R5

Beispiel: 32-bit Befehl

Page 17: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Beispiel: 16-bit Befehl

0 1 0 0 0 0 Op Rs Rd

8 5 34 261215 10 79111314

0101 = ADC0110 = SBC0000 = AND…

Source/DestinationRegister

SourceRegister 2

1 0

• Thumb hat keineConditional Instruction• Thumb-2 hat IT (If Then Instruction und CZB (compare zero branch)

Page 18: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineeringThumb: Eingeschränkter Zugriff auf R8 –

R12

Page 19: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

ARM Instruction Pipeline

Page 20: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

ARM7 Instruction Pipeline

1 2 3 4 5 6 Instruction

Fetch

Decode

Execute

Page 21: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

LDR R0, [R1,#4]

Was ist der Wert von R0?

R1 = 0x5000

0x5000

0x5004

0x5008

0x11111111

0x22222222

0x33333333

0x22222222

R0

Page 22: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Welche Adresse steht danach im PC?

0x4000

0x4004

0x4008

0x400C

0x4000 LDR PC, [PC,#4]

PC

LDR PC,[PC,#4]

0x22222222

0x44444444

0x33333333

PC

0x0000400c

Page 23: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Fetch

Decode

Execute

QD QD QDDecode Execute

Instruction Pipeline

Page 24: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

PC 0x4000 0x4004 0x4008

Fetch LDR PC, [PC,#4]

Decode LDR PC, [PC,#4]

Execute LDR PC, [PC,#4]

QD QD QDDecode Execute

0x400c

Instruction Pipeline

Page 25: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Übung 2

• An welcher Adresse befindet sich das Vektor Adress Register des Interrupt Controllers(es handelt sich hier nicht um einen NXP LPC) ?

Page 26: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Übung 2 - Lösung

• An welcher Adresse befindet sich das Vektor Adress Register des Interrupt Controllers(es handelt sich hier nicht um einen NXP LPC) ?

0x18 + 2 x 4 Byte – 0x1000 = 0xFFFF F020

Page 27: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Branches (Context Switch)

Page 28: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Main

Subroutine

Main

Reset

B = branch to target +/- 1 MBBL = Branch Link +/- 16MBBX = Branch optionaly exchange instruction setBLX = Branch link optionaly exchange instruction set

B LR

Branch Befehle

Branch zu Link Register

Page 29: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Umschalten zwischen ARM u. Thumb

2 Möglichkeiten:• BLX,BX Instruction• Exception

Page 30: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Einfacher Branch

B = Branch zu Adresse 0x8000

LDR R2, # 10

Bei einem Branch wird die gesamte Pipeline gespült (geflusht)

Page 31: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

BL = Branch Link - Lädt Adresse in PC und speichertdie Return Adresse 0x400 +4 in Link Register (R14)

LDR R2, # 10

Branch Link

Page 32: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

BL = Branch Link - Lädt Adresse in PC und speichertdie Return Adresse 0x400 +4 in Link Register (R14)

LDR R2, # 10

Branch Link

Page 33: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Data Processing Instructions

Page 34: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Multiply Accumulate Unit (MAC)

MACUnit

Page 35: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Load and Store Architektur

Page 36: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Multiply Accumulate Unit (MAC)

Mnemonic Meaning ResolutionMUL Multiply 32 bit resultMULA Multiply accumulate 32 bit resultUMUL Unsigned multiply 64 bit resultUMLAL Unsigned multiply accumulate 64 bit resultSMULL Signed multiply 64 bit resultSMLAL Signed multiply accumulate 64 bit result

Page 37: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Data Prozessing OP Codes

Kürzel BedeutungAND Logical bitwise ANDEOR Logical bitwise exclusive ORSUB SubtractRSB Reverse SubtractADD AddADC Add with carrySBC Subtract with carryRSC Reverse Subtract with carryTST TestTEQ Test EquivalenceCMP CompareCMN Compare negatedORR Logical bitwise ORMOV MoveBIC Bit clearMVN Move negated

Page 38: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

ADDEQS R1,R2,R3,LSL #2

Entspricht:

If (Z ==1) R1 = R2+(R3 x 4)

Grundstruktur einer Data Processing Instruction

Page 39: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Data Transfer Instructions

Page 40: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineeringKopieren von mehreren Registern mit

einem Befehl

Abspeichern von mehreren Registern auf den StackSTMFD R13!, {[registers], R14}

Zurückholen der Register vom Stack:LDMFD R13!, {[registers], PC}

Page 41: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Load/Store to/from Special-Register

Page 42: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Bedingte Befehle

Können zum Teil Branches ersetzen

Page 43: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Bei traditionellen Prozessoren, ist dies nur bei der Branch Anweisung möglich

Vorteil der bedingten Anweisungen : Pipeline wird dabei nicht gelöscht und muss somit nach dem Branch nicht wieder Neu aufgefüllt werden

Oberen 4 bits jeder Anweisung sindmit dem CPSR logisch verknüpft.Wenn keine Übereinstimmung wird Befehl wie NOP behandelt

Bedingte Befehle

Page 44: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Cond 00 I OpCode S Rn Rd Operand2

20 15 1112 0162631 25 1921242728

0100 = ADD0010 = SUB1101 = MOV…

DestinationRegister

Operand1Register

0000 = EQ0001 = NE0010 = >=…1110 = Immer

Beispiel:ADDEQ R2,R4,R5 ;If Z flag set R2:= R4 + R5

Beispiel einer Instruktion mit Condition

Page 45: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Betriebszustand:FIQIRQSupervisorUserUndefined

F = 1 FIQ disableI = 1 IRQ disable T = 1 Thumb mode

Condition Code Flags:N = NegativeZ = ZeroC = Carry Over V = Overflow (Ergebnis grösser als Platz im Register)

ARM7 Current Processor Status Register (CPSR)

Page 46: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

AssemblerKürzel

Negativ

N

Zero

Z

Carry Over

C

Overflow

V

Bedeutung

EQ x 1 x x Equal

NE x 0 x x Not Equal

CS x x 1 x Carry bit set

CC x x 0 x Carry bit cloear

MI 1 x x x Minus (Negativ)

PL 0 x x x Plus (Positiv)

VS x x x 1 Overflow bit set

VC x x x 0 Overflow bit clear

HI x 0 1 x Higher Than (unsigned)

LS x 1 0 x Lower Same (signed)

GE 01

Xx

Xx

01

Greater or equal

LT 10

Xx

Xx

01

Less than

GT Z = 0 UND (N = V) Greater than

LE Z = 1 OR (N != V) Less than or equal

AL x x x x Allways

Condition Codes

Page 47: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Beispiel Conditional Move

CMP R1, R2 ; Compare R1 and R2 update Flags

MOVEQ R3, R0 ; Schiebe Inhalt von R0 in R3 wenn R1 und R2 gleich

MOVEQ …

• Überspringen von Befehlen hat den Vorteil, dass die Pipeline nicht gespültwerden muss.• Der Kompiler setzt Conditional Moves nur bei kurzen Branches ein, da sonst zu viele NOPs ausgeführt werden müssten.

Beispiel:If (x<100){X++}

Werden bei nicht eintreten der Bedingung durch NOP ersetzt

Page 48: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Nur Cortex-M: If-Then Befehl

C-Code Assembly Code

IF (R1 < R2) then CMP R1, R2

ITTEE LT

R2 = R2 - R1 SUB R2, R1 1. Befehl

R2 = R2/2 LSR R2, #1 2. Befehl (T)

else

R1 = R1 - R2 SUB R1, R2 3. Befehl (E)

R1 = R1/2 LSR R1, #1 4. Befehl (E)

• Der IF-THEN Befehl erlaubt bis zu 4 Folgebefehle auszuführen• Falls die Bedingung nicht wahr ist, werden die nicht asugeführte Befehle durch ein NOP ersetzt

Bei nicht eintreten derBedingung durch NOP ersetzt

ITTEE

2. Befehl

3. Befehl

4. Befehl

Page 49: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

MOVS R0, R1

S Suffix

S-Suffix Aktualisiert Flags nach Ausfführung des Befehlsz.B. wird Z-Flag gesetzt wenn das Zielregister R0 nach Ausführen des Befehls 0 ist

MOVEQS R0, R2

S Sufix und Bedingte Ausführung können Kombiniert wrden

Page 50: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Beispiel1 :

MOVS R0, R1

MOVEQS R0, R2

MOVEQ R0, R3

Übung3: Conditional MOVE

R0 = 0R1 = 0R2 = 0R3 = 4

Was ist der Wert von R0 nach den drei MOV Befehlen?

Vor Ausführung der drei Befehle sind die 3 Register wie folgt geladen:

Page 51: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Beispiel1 :

MOVS R0, R1

MOVEQS R0, R2

MOVEQ R0, R3

-- R1 wird in R0 geschoben und Z flag wird 1 da R0 = 0

-- Da Z Flag = 1 wird R2 wird in R0 geschoben und Z flag wird 1 da R2 = 0

-- Da Z Flag = 1 wird R3 in R0 geschoben

Übung3 - Lösung: Conditional MOVE

R0 = 0R1 = 0R2 = 0R3 = 4

Was ist der Wert von R0 nach den drei MOV Befehlen? R0 ist 4

Vor Ausführung der drei Befehle sind die 3 Register wie folgt geladen:

Page 52: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Übung4: Conditional Move

Page 53: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineering

Übung4 - Lösung: Conditional Move

Page 54: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineeringÜbung5: Conditional Move

Page 55: Heute: - ARM Befehlssätze   - ARM Instruction Pipeline   - Branches & Bedingte Befehle

School ofEngineeringÜbung5 - Lösung: Conditional Move