ARM7 Exception Vectors Exception Mode Address Reset Supervisor

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung Compilertechnik Sommersemester 2009 Zielcodeerzeugung M. Schölzel.
Advertisements

CPI Der einzelne Befehl braucht immer noch 5 Zyklen (stimmt nicht ganz, einige brauchen weniger!) Was verbessert wird, ist der Durchsatz = #Befehle /
Befehlssatz und Struktur
Der Crusoe-Prozessor von Transmeta
Elektronisch messen, steuern, regeln
Informatik 12, TU Dortmund
2.5 Vektorrechner & Multimedia-Erweiterungen
Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2009/01/17 Graphics:
Peter Marwedel TU Dortmund, Informatik 12
Fakultät für informatik informatik 12 technische universität dortmund Hardware/Software Partitioning Peter Marwedel Informatik 12 TU Dortmund Germany Chapter.
3 Prozessverwaltung  sieht einen Prozess als Objekt der Verwaltung,
Rechneraufbau & Rechnerstrukturen, Folie 10.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 10.
Hier wird Wissen Wirklichkeit Computer Architecture – Part 7 – page 1 of 56 – Prof. Dr. Uwe Brinkschulte, Prof. Dr. Klaus Waldschmidt Part 7 Instruction.
Hier wird Wissen Wirklichkeit Computer Architecture – Part 5 – page 1 of 25 – Prof. Dr. Uwe Brinkschulte, M.Sc. Benjamin Betting Part 5 Fundamentals in.
ilmenau.de Exploiting Pocket PC. ilmenau.de Exploiting Pocket PC PocketPC existiert seit über 5 Jahren (Windows CE seit ca. 10)
Vorlesung, Wintersemester 2009/10M. Schölzel 1 Optimierungstechniken in modernen Compilern Einführung.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik Übung 6 Methoden verstehen und entwerfen.
Zyklus Nr 0 Instruction Queue Instruction tag Instruction Register IF Stage CDB nameb ADD1 ADD2 ADD3 MUL1 MUL2 DIV INT MU1 MU2 MU3 Reservations OPV1Q1V2Q2.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester.
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Open Source Prozessor Leon2 Peer Royla und Marco Siebert RST-Labor WS 04/05 Prof. Dr.-Ing. Thomas Risse.
EPIC, IA-64 und Itanium Eine Kurzpräsentation von Jan Hübbers bei Prof. Dr.-Ing. Risse im Fach Labor Rechnerstrukturen an der Hochschule Bremen
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester.
Der Simple As Possible Computer
© Alexander Schwing, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 2.
Thin Client vs. Zero Client Key Account Government 04 / 2012 Tim Riedel Welche Vorteile bieten Thin Clients gegenüber Zero Clients?
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 6.Sitzung WS 02/03.
Passive Angriffe ... nicht-invasiv.
Ein kommando unter Windows 7
Es gibt keine Zustandsänderung, deren einziges Ergebnis die Übertragung von Wärme von einem Körper niederer auf einen Körper höherer Temperatur ist. There.
Institut AIFB, Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Towards Automatic Composition of Processes based on Semantic.
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
VHDL-Synthese für Fortgeschrittene
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
Grundlagen der Informatik 4 Lehrstuhl für Betriebssysteme 1 Wie werden Funktionen realisiert? Beispiel: int maximum(int x, int y) { int j = x; if (y >
School of Engineering ESI-Lektion School of Engineering ESI – Lektion 9-10 Memory MAP Controll Bootloader, ISP JTAG Debugging In Circuit Emulators.
School of Engineering ESI Lektion 7-8. School of Engineering ESI – Lektion 7-8 ARM Stacks Cortex Interrupt System Systemperipherie eines ARM basierenden.
Architekturen der ARM Prozessoren
Synthetisierbares VHDL
VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)
School of Engineering DT2 Projekt-3: Baud Rate Generator & GPS Decoder.
Inhalt Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse
School of Engineering DT2 Projekt-2: Baud Rate Generator & GPS Decoder.
Real Time Operating System
Equals, Hashcode und CompareTo Micha Kessler
Computerorientierte Physik VORLESUNG und Übungen Vorlesung Zeit: Di., 8.30 – Uhr Ort: Hörsaal 5.01, Institut für Experimentalphysik, Universitätsplatz.
Computerorientierte Physik VORLESUNG
Ein Projekt des Technischen Jugendfreizeit- und Bildungsvereins (tjfbv) e.V. kommunizieren.de Blended Learning for people with disabilities.
Fakultät für informatik informatik 12 technische universität dortmund Memory-architecture aware compilation - Sessions Peter Marwedel TU Dortmund.
Anwendung von Microcontollern
CIL – Common Intermediate Language All roads lead to Rome (proverb).NET Framework & CLR: All languages lead to Intermediate Language.
Advanced Digital Design Übung 3. Aufgabe 2 + R1R2R3 +
Advanced Digital Design Übung 3. Aufgabe 1: Algorithmus für Phasen Inverter Plazierung Systematic approach: 1. Identify combinational logic and registers/memories.
Programmieren in Assembler
1 Intern | ST-IN/PRM-EU | | © Robert Bosch GmbH Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung,
Rechnerarchitekturen
EN/FAD Ericsson GmbH EDD/ Information im 21. Jahrundert muss Erwünscht Relevant Erreichbar Schnell Kostenlos!?
Software Prefetching Reduzierung der Miss-Rate Erfordert Prefetch-Instruktionen –Nicht blockierend –Erzeugen keine Ausnahmen Nicht blockierende Caches.
Universität Rostock Fachbereich Elektrotechnik und Informationstechnik Institut für Angewandte Mikroelektronik und Datentechnik Eine Prozessorarchitektur.
6. Übung Informatik 1 Inhalte: Der DLX-Prozessor
Aufbau und Funktionsweise einer CPU
oder Womit genau ein Prozessor seine Zeit verbringt
Data Hazards 0x30 sub $6 $0 $1 0x34 add $7 $6 $
Vom HW-Automaten zum Prozessor
Aufbau und Anwendungen von Mikrokontrollern
מבוא למערכות מחשב ואסמבלי
CSL211 Computer Architecture
 Präsentation transkript:

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

ARM7 Exception Vectors Exception Mode Address Reset Supervisor Undefined instruction Undefined 0x00000004 Software interrupt (SWI) Supervisor 0x00000008 Prefetch Abort (instruction fetch memory abort) Abort 0x0000000C Data Abort (data access memory abort) Abort 0x00000010 IRQ (interrupt) IRQ 0x00000018 FIQ (fast interrupt) FIQ 0x0000001C

ARM7 Register & Betriebszustände System & User R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 (PC) CPSR FIQ R7_fiq R8_fiq R9_fiq R10_fiq R11_fiq R12_fiq R13_fiq R14_fiq SPSR_fiq Supervisor R13_svc R14_svc SPSR_svc Abort R13_abt R14_abt SPSR_abt IRQ R13_irq R14_irq SPSR_irq Undefined R13_und R14_und SPSR_und

Cortex-M3 Betriebszustände Privileged User When running an Exception Handle Mode When Running Main Program Thread Mode Operation Modes Privilege Levels User Thread System Control space nicht zugreifbar (Speicherregion), MSR Move status Register blockiert verursacht fault exception Wechseln der Betriebszustände: MSR CONTROL, R0

Ü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 ?

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

ARM Befehlssätze

Die Befehlssätze Befehlssätze ARM7 Cortex-M Cortex-R-A Serie 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)

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

Thumb vs. ARM Befehlssatz 16-bit Thumb 32-bit ARM Vorteil Braucht ~30% weniger Speicherplatz Läuft ~40% schneller Nachteil Eingeschränkte Funktionalität Speicherplatz Es braucht spezielle Funktion zwischen ARM und Thumb umzuschalten

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

Thumb: Umschalten ARM und Thumb Mode Exception ARM End of Exception THUMB

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

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

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

Beispiel: 32-bit Befehl 31 28 27 26 25 24 21 20 19 16 15 12 11 Cond 00 I OpCode S Rn Rd Operand2 Destination Register 0000 = EQ 0001 = NE 0010 = >= … 1110 = Immer 0100 = ADD 0010 = SUB 1101 = MOV … Operand1 Register Beispiel: ADDEQ R2,R4,R5 ;If Z flag set R2:= R4 + R5

Source/Destination Register Beispiel: 16-bit Befehl 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 Op Rs Rd Source/Destination Register Thumb hat keine Conditional Instruction Thumb-2 hat IT (If Then Instruction und CZB (compare zero branch) Source Register 2 0101 = ADC 0110 = SBC 0000 = AND …

Thumb: Eingeschränkter Zugriff auf R8 – R12

ARM Instruction Pipeline

ARM7 Instruction Pipeline 1 2 3 4 5 6 Instruction Fetch Decode Execute

LDR R0, [R1,#4] Was ist der Wert von R0? 0x5000 0x22222222 R0 0x5004

Welche Adresse steht danach im PC? 0x4000 LDR PC, [PC,#4] 0x4000 LDR PC,[PC,#4] PC 0x4004 0x22222222 0x4008 0x33333333 0x44444444 0x400C PC 0x0000400c

Instruction Pipeline Fetch Decode Execute Q D Q D Execute Q D Decode

Instruction Pipeline PC Fetch Decode Execute Q D Q D Q D 0x4000 0x4004 LDR PC, [PC,#4] Decode Execute 0x400c Q D Q D Execute Q D Decode

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

Übung 2 - Lösung 0x18 + 2 x 4 Byte – 0x1000 = 0xFFFF F020 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

Branches (Context Switch)

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

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

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

Branch Link BL = Branch Link - Lädt Adresse in PC und speichert die Return Adresse 0x400 +4 in Link Register (R14) LDR R2, # 10

Branch Link BL = Branch Link - Lädt Adresse in PC und speichert die Return Adresse 0x400 +4 in Link Register (R14) LDR R2, # 10

Data Processing Instructions

Multiply Accumulate Unit (MAC) MAC Unit

Load and Store Architektur

Multiply Accumulate Unit (MAC) Mnemonic Meaning Resolution MUL Multiply 32 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

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

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

Data Transfer Instructions

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}

Load/Store to/from Special-Register

Bedingte Befehle Können zum Teil Branches ersetzen

Bedingte Befehle 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

Beispiel einer Instruktion mit Condition 31 28 27 26 25 24 21 20 19 16 15 12 11 Cond 00 I OpCode S Rn Rd Operand2 Destination Register 0000 = EQ 0001 = NE 0010 = >= … 1110 = Immer 0100 = ADD 0010 = SUB 1101 = MOV … Operand1 Register Beispiel: ADDEQ R2,R4,R5 ;If Z flag set R2:= R4 + R5

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

Condition Codes Assembler Kürzel Negativ N Zero Z Carry Over C Over flow V Bedeutung EQ x 1 Equal NE Not Equal CS Carry bit set CC Carry bit cloear MI Minus (Negativ) PL Plus (Positiv) VS Overflow bit set VC Overflow bit clear HI Higher Than (unsigned) LS Lower Same (signed) GE 0 1 X x Greater or equal LT 1 0 Less than GT Z = 0 UND (N = V) Greater than LE Z = 1 OR (N != V) Less than or equal AL Allways

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 … Werden bei nicht eintreten der Bedingung durch NOP ersetzt Ü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++ }

Nur Cortex-M: If-Then Befehl 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 2. 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) 3. Befehl 4. Befehl ITTEE Bei nicht eintreten der Bedingung durch NOP ersetzt

S Suffix MOVS R0, R1 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

Übung3: Conditional MOVE Beispiel1 : MOVS R0, R1 MOVEQS R0, R2 MOVEQ R0, R3 Vor Ausführung der drei Befehle sind die 3 Register wie folgt geladen: R0 = 0 R1 = 0 R2 = 0 R3 = 4 Was ist der Wert von R0 nach den drei MOV Befehlen?

Übung3 - Lösung: Conditional MOVE 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 Vor Ausführung der drei Befehle sind die 3 Register wie folgt geladen: R0 = 0 R1 = 0 R2 = 0 R3 = 4 Was ist der Wert von R0 nach den drei MOV Befehlen? R0 ist 4

Übung4: Conditional Move

Übung4 - Lösung: Conditional Move

Übung5: Conditional Move

Übung5 - Lösung: Conditional Move