Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

School of Engineering Heute: - ARM Befehlssätze - ARM Instruction Pipeline - Branches & Bedingte Befehle.

Ähnliche Präsentationen


Präsentation zum Thema: "School of Engineering Heute: - ARM Befehlssätze - ARM Instruction Pipeline - Branches & Bedingte Befehle."—  Präsentation transkript:

1 School of Engineering Heute: - ARM Befehlssätze - ARM Instruction Pipeline - Branches & Bedingte Befehle

2 School of Engineering ARM7 Exception Vectors Prefetch Abort (instruction fetch memory abort) Supervisor 0x C ExceptionModeAddress Reset Undefined instruction Software interrupt (SWI) Data Abort (data access memory abort) IRQ (interrupt) FIQ (fast interrupt) Undefined Supervisor Abort IRQ FIQ 0x x x C 0x x x

3 School of Engineering ARM7 Register & Betriebszustände

4 School of Engineering Cortex-M3 Betriebszustände PrivilegedUser When running an ExceptionHandle Mode When Running Main ProgramThread Mode Operation Modes Privilege Levels Wechseln der Betriebszustände: MSR CONTROL, R0

5 School of Engineering Übung 1 Von welcher Adresse wird die erste Zeile des vom Anwender geschriebenen Assemblercodes eingelesen (kein Betriebssystem vorausgesetzt) ? An welcher Adresse befindet sich die erste Assembleranweisung der Fast Interrupt Routine ? An welcher Adresse befindet sich die erste Assembleranweisung des Undefined Instruktion Handlers ?

6 School of Engineering Übung 1 - Lösung Von welcher Adresse wird die erste Zeile des vom Anwender geschriebenen Assemblercodes eingelesen (kein Betriebssystem vorausgesetzt) ? 0x An welcher Adresse befindet sich die erste Assembleranweisung der Fast Interrupt Routine ? 0x An welcher Adresse befindet sich die erste Assembleranweisung des Undefined Instruktion Handlers ? 0x

7 School of Engineering ARM Befehlssätze

8 School of Engineering 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

9 School of Engineering Thumb vs. ARM Befehlssatz ARM Anweisung: ADD R0, R0,R1 Thumb Anweisung: ADD R0, R1 R0 ist gleichzeitig Ziel und Operand1 Ziel- register Operand1Operand2 R1 ist Operand2 R0 = R0 + R1

10 School of Engineering Thumb vs. ARM Befehlssatz 16-bit Thumb 32-bit ARM VorteilBraucht ~30% weniger Speicherplatz Läuft ~40% schneller NachteilEingeschränkte Funktionalität Speicherplatz Es braucht spezielle Funktion zwischen ARM und Thumb umzuschalten

11 School of Engineering ARM THUMB ARM Reset BLX BX Thumb: Umschalten ARM und Thumb Mode Spezielle Branch Anweisungen schalten zwischen ARM und Thumb Mode hin und her. Zusätzlich wird bei jeder Exception in den ARM Mode geschaltet

12 School of Engineering ARM THUMB Exception End of Exception Thumb: Umschalten ARM und Thumb Mode

13 School of Engineering 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

14 School of Engineering Vorteile 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

15 School of Engineering Thumb-2: Unified Assembler Language Gleich lautende Befehle für 16-bit und 32-bit Vorher:Thumb: AND R0, R1 ARM:AND R0, R0, R1 Jetzt nur noch:AND R0, R0, R1

16 School of Engineering Cond00IOpCodeSRnRdOperand = ADD 0010 = SUB 1101 = MOV … Destination Register Operand1 Register 0000 = EQ 0001 = NE 0010 = >= … 1110 = Immer Beispiel: ADDEQ R2,R4,R5 ;If Z flag set R2:= R4 + R5 Beispiel: 32-bit Befehl

17 School of Engineering Beispiel: 16-bit Befehl OpRsRd = ADC 0110 = SBC 0000 = AND … Source/Destination Register Source Register 2 10 Thumb hat keine Conditional Instruction Thumb-2 hat IT (If Then Instruction und CZB (compare zero branch)

18 School of Engineering Thumb: Eingeschränkter Zugriff auf R8 – R12

19 School of Engineering ARM Instruction Pipeline

20 School of Engineering ARM7 Instruction Pipeline Instruction Fetch Decode Execute

21 School of Engineering LDR R0, [R1,#4] Was ist der Wert von R0? R1 = 0x5000 0x5000 0x5004 0x5008 0x x x x R0

22 School of Engineering Welche Adresse steht danach im PC? 0x4000 0x4004 0x4008 0x400C 0x4000LDR PC, [PC,#4] PC LDR PC,[PC,#4] 0x x x PC 0x c

23 School of Engineering Fetch Decode Execute QDQDQD Decode Execute Instruction Pipeline

24 School of Engineering PC 0x40000x40040x4008 Fetch LDR PC, [PC,#4] Decode LDR PC, [PC,#4] Execute LDR PC, [PC,#4] QDQDQD Decode Execute 0x400c Instruction Pipeline

25 School of Engineering Übung 2 An welcher Adresse befindet sich das Vektor Adress Register des Interrupt Controllers (es handelt sich hier nicht um einen NXP LPC) ?

26 School of Engineering Ü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) ? 0x x 4 Byte – 0x1000 = 0xFFFF F020

27 School of Engineering Branches (Context Switch)

28 School of Engineering Main Subroutine Main Reset B = branch to target +/- 1 MB BL = Branch Link +/- 16MB BX = Branch optionaly exchange instruction set BLX = Branch link optionaly exchange instruction set B LR Branch Befehle Branch zu Link Register

29 School of Engineering Umschalten zwischen ARM u. Thumb 2 Möglichkeiten: BLX,BX Instruction Exception

30 School of Engineering Einfacher Branch B = Branch zu Adresse 0x8000 LDR R2, # 10 Bei einem Branch wird die gesamte Pipeline gespült (geflusht)

31 School of Engineering BL = Branch Link - Lädt Adresse in PC und speichert die Return Adresse 0x in Link Register (R14) LDR R2, # 10 Branch Link

32 School of Engineering BL = Branch Link - Lädt Adresse in PC und speichert die Return Adresse 0x in Link Register (R14) LDR R2, # 10 Branch Link

33 School of Engineering Data Processing Instructions

34 School of Engineering Multiply Accumulate Unit (MAC) MAC Unit

35 School of Engineering Load and Store Architektur

36 School of Engineering Multiply Accumulate Unit (MAC) MnemonicMeaning Resolution MUL Multiply32 bit result MULA Multiply accumulate 32 bit result UMUL Unsigned multiply 64 bit result UMLAL Unsigned multiply accumulate 64 bit result SMULL Signed multiply 64 bit result SMLAL Signed multiply accumulate 64 bit result

37 School of Engineering Data Prozessing OP Codes Kürzel Bedeutung AND Logical bitwise AND EOR Logical bitwise exclusive OR SUB Subtract RSB Reverse Subtract ADD Add ADC Add with carry SBC Subtract with carry RSC Reverse Subtract with carry TST Test TEQ Test Equivalence CMP Compare CMN Compare negated ORR Logical bitwise OR MOV Move BIC Bit clear MVN Move negated

38 School of Engineering ADDEQS R1,R2,R3,LSL #2 Entspricht: If (Z ==1) R1 = R2+(R3 x 4) Grundstruktur einer Data Processing Instruction

39 School of Engineering Data Transfer Instructions

40 School of Engineering Kopieren von mehreren Registern mit einem Befehl Abspeichern von mehreren Registern auf den Stack STMFD R13!, {[registers], R14} Zurückholen der Register vom Stack: LDMFD R13!, {[registers], PC}

41 School of Engineering Load/Store to/from Special-Register

42 School of Engineering Bedingte Befehle Können zum Teil Branches ersetzen

43 School of Engineering 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 sind mit dem CPSR logisch verknüpft. Wenn keine Übereinstimmung wird Befehl wie NOP behandelt Bedingte Befehle

44 School of Engineering Cond00IOpCodeSRnRdOperand = ADD 0010 = SUB 1101 = MOV … Destination Register Operand1 Register 0000 = EQ 0001 = NE 0010 = >= … 1110 = Immer Beispiel: ADDEQ R2,R4,R5 ;If Z flag set R2:= R4 + R5 Beispiel einer Instruktion mit Condition

45 School of Engineering Betriebszustand: FIQ IRQ Supervisor User Undefined F = 1 FIQ disable I = 1 IRQ disable T = 1 Thumb mode Condition Code Flags: N = Negative Z = Zero C = Carry Over V = Overflow (Ergebnis grösser als Platz im Register) ARM7 Current Processor Status Register (CPSR)

46 School of Engineering Assembler Kürzel Negativ N Zero Z Carry Over C Over flow V Bedeutung EQx1xxEqual NEx0xxNot Equal CSxx1xCarry bit set CCxx0xCarry bit cloear MI1xxxMinus (Negativ) PL0xxxPlus (Positiv) VSxxx1Overflow bit set VCxxx0Overflow bit clear HIx01xHigher Than (unsigned) LSx10xLower Same (signed) GE0101 XxXx XxXx 0101 Greater or equal LT1010 XxXx XxXx 0101 Less than GTZ = 0 UND (N = V)Greater than LEZ = 1 OR (N != V)Less than or equal ALxxxxAllways Condition Codes

47 School of Engineering 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ült werden 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

48 School of Engineering Nur Cortex-M: If-Then Befehl C-CodeAssembly Code IF (R1 < R2) thenCMP R1, R2 ITTEE LT R2 = R2 - R1SUB R2, R11. Befehl R2 = R2/2LSR R2, #12. Befehl (T) else R1 = R1 - R2SUB R1, R23. Befehl (E) R1 = R1/2LSR R1, #14. 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 der Bedingung durch NOP ersetzt ITTEE 2. Befehl 3. Befehl 4. Befehl

49 School of Engineering MOVSR0, R1 S Suffix S-Suffix Aktualisiert Flags nach Ausfführung des Befehls z.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

50 School of Engineering Beispiel1 : MOVSR0, R1 MOVEQS R0, R2 MOVEQR0, R3 Übung3: Conditional MOVE R0 = 0 R1 = 0 R2 = 0 R3 = 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:

51 School of Engineering Beispiel1 : MOVSR0, R1 MOVEQS R0, R2 MOVEQR0, 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 = 0 R1 = 0 R2 = 0 R3 = 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:

52 School of Engineering Übung4: Conditional Move

53 School of Engineering Übung4 - Lösung: Conditional Move

54 School of Engineering Übung5: Conditional Move

55 School of Engineering Übung5 - Lösung: Conditional Move


Herunterladen ppt "School of Engineering Heute: - ARM Befehlssätze - ARM Instruction Pipeline - Branches & Bedingte Befehle."

Ähnliche Präsentationen


Google-Anzeigen