Auf einen Blick. Prozessor-Modi. Register. Moduswechsel. Der Prozessor befindet sich zu jedem Zeitpunkt in genau einem Modus.



Ähnliche Dokumente
Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Prozessoren für mobile und. eingebettete Systeme I: Die ARM-Architektur. EMES: Eigenschaften mobiler und eingebetteter Systeme

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Die Mikroprogrammebene eines Rechners

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Technische Informatik 2 Adressierungsarten

Mikrocontroller Grundlagen. Markus Koch April 2011

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

5 Speicherverwaltung. bs-5.1 1

Inbetriebnahme grabbmodul-1 / minimodul-16x bzw. smarteye-1

Einführung in die technische Informatik

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Quanton Manual (de) Datum: URL: )

SharePoint Demonstration

AVR-Mikrocontroller mit dem GCC programmieren

Teil VIII Von Neumann Rechner 1

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Mikrocomputertechnik. Adressierungsarten

B1 Stapelspeicher (stack)

M a i l C r e d i t. \\Burt\user\Soutschek\FP\Technik\Frankiermaschinen\00_PC Software\MailCredit\Anleitung MailCredit Installation.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Das neue Volume-Flag S (Scannen erforderlich)

Trackaufzeichnungen können als Active-Logs oder mit eigenen Namen versehene und auf max. 500 Punkte begrenzte Saved-Tracks gespeichert werden.

Prozessor HC680 fiktiv

Mikroprozessor als universeller digitaler Baustein

Dokumentenkontrolle Matthias Wohlgemuth Telefon Erstellt am


Duonix Service Software Bedienungsanleitung. Bitte beachten Sie folgende Hinweise vor der Inbetriebnahmen der Service Software.

4D Server v12 64-bit Version BETA VERSION

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

1CONFIGURATION MANAGEMENT

Anleitung zur Nutzung des SharePort Utility

Checkliste für die Behebung des Problems, wenn der PC Garmin USB GPS-Geräte nicht erkennt.

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Sucosoft S40 KOP/FBS KOP FBS

JMPCN Sprungbefehl nur ausführen, wenn VKE 0 ist. JMPC Sprungbefehl nur ausführen, wenn VKE 1 ist. JMP Ohne Bedingung zur Sprungmarke wechseln.

Karten-Freischaltung mit dem UNLOCK MANAGER

HowTo: Einrichtung & Management von APs mittels des DWC-1000

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2)

Benutzerhandbuch bintec R4100 / R4300 Configuration Management. Copyright 17. Juli 2006 Funkwerk Enterprise Communications GmbH Version 1.

teischl.com Software Design & Services e.u. office@teischl.com

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

OP-LOG

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Grundlagen von Python

Johann Wolfgang Goethe-Universität

Enigmail Konfiguration

Das Prinzip an einem alltäglichen Beispiel

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

Einführung in die Programmierung

mit SD-Karte SD-Karte Inhalt

I.1 Die Parrot Assemblersprache

32-Bit Microcontroller based, passive and intelligent UHF RFID Gen2 Tag. Zürcher Fachhochschule

Übersicht und Dokumentation der Reset- Funktionen der IO CONNECT

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Elektrische Logigsystem mit Rückführung

Installation OMNIKEY 3121 USB

RO-Serie CAN-Übertragungsprotokoll

Installation der SAS Foundation Software auf Windows

WinWerk. Prozess 4 Akonto. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Übungsaufgaben. - Vorgehensweise entsprechend dem Algorithmus der schriftlichen Multiplikation

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Password Depot für ios

Ein Scan basierter Seitenangriff auf DES

ARM9 Kern Jiri Spale, Programmierung eingebetteter Systeme 1

Windows Server 2008 (R2): Anwendungsplattform

Samsung Large Format Display

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

S7-Hantierungsbausteine für R355, R6000 und R2700

Kostenstellen verwalten. Tipps & Tricks

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Kleines Handbuch zur Fotogalerie der Pixel AG

SEP 114. Design by Contract

Microsoft PowerPoint 2013 Folien gemeinsam nutzen

OSF Integrator für Btracking und Salesforce Anleitung für die Nutzer

Softwarelösungen: Versuch 4

Hilfe zur ekim. Inhalt:

Anleitung über den Umgang mit Schildern

Windows Small Business Server (SBS) 2008

Persönliches Adressbuch

Microsoft Update Windows Update

BEO-Sanktionsprüfung Eine Einführung zum Thema Sanktionsprüfung und eine Übersicht zur BEO-Lösung.

Updatehinweise für die Version forma 5.5.5

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

1 Aufgaben zu Wie funktioniert ein Computer?

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Formular»Fragenkatalog BIM-Server«

Objektorientierte Programmierung

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Neue Funktionen im GUI für PC-DMIS V3.x 4.x Seite 1 von 8

Transkript:

Trivia Trivia Die -Architektur Praktikum Betriebssysteme Was ist? ist ein Design und kein konkreter Prozessor. Mario Haustein Matthias Werner Jan Richling 1 TU Chemnitz WS 2013/14 Bezeichnung Kenngröße Im Praktikum Version des es v4t Familie 9 Kern 920 Variante T Implementierung AT91RM9200 1 Mit freundlicher Genehmigung Mario Haustein (TUC) Die -Architektur WS 2013/14 1 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 2 / 39 Trivia Trivia Varianten / Versionen Bezeichner Varianten T Zusätzlicher Thumb- M Multiplikation 32 Bit 32 Bit 64 Bit E Zusätzliche DPS-Operationen J Hardwarebeschleunigung für Java-Bytecode Versionen v1 Entwicklungsversion. 26-Bit-Adressen. v2 Mehr Register als v1, Kooprozessoren, Multiplikation, 26-Bit-Adressen v3 32-Bit-Adressraum, Statusregister CPSR und SPSR, zwei neue Prozessormodi, M-Variante v4 System-Modus, T-Variante v5 Bessere Zusammenarbeit zwischen - und Thumb-, J- und E-Variante v6 SIMD-Befehle, verbesserte Interruptbehandlung, Thumb2 optional v7 Thumb2 obligatorisch, weitere SIMD-Befehle, DSP-Unterstützung Version v Versionnr. [{ Variantenbezeichner }] Besonderheit Ab v4 unterstützt jeder Kern standardmäßig die M-Variante. Kerne ohne M-Unterstützung tragen xm im Variantenbezeichner. Kerne Familie Modellnummer [{ Variantenbezeichner }] z.b. 920T 9 implementiert z.b. v4 aufwärts. Mario Haustein (TUC) Die -Architektur WS 2013/14 3 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 4 / 39

Architektur Register und Modi Auf einen Blick Von-Neumann-Architektur RISC-Architektur Load/Store-Architektur 32 Bit Adress- und Datenbus. Linearer Adressraum. 3-Adress-Code 7 Prozessor-Modi 37 Register 5 Adressierungsarten mit jeweils bis zu 11 Unterformen Datentypen Wort (32 Bit), an 4-Byte-Grenze ausgerichtet. Halbwort (16 Bit), an 2-Byte-Grenze ausgerichtet. Byte (8 Bit) Maschinenbefehle 54 -Befehle. Genau ein Wort groß. 38 Thumb-Befehle. Genau ein Halbwort groß. Datenverarbeitende Operationen arbeiten alle auf Wörtern. Mario Haustein (TUC) Die -Architektur WS 2013/14 5 / 39 Prozessor-Modi Der Prozessor befindet sich zu jedem Zeitpunkt in genau einem Modus. User usr Regulärer Benutzermodus System sys Regulärer priviligierter Modus Supervisor svc Modus für Systemrufe Abort abt Memory Abort Undefined und Undefinierter Befehl Interrupt irq Interrupts Fast Interrupt fiq Beschleunigte Interrupts priviligiert Ausnahme Mario Haustein (TUC) Die -Architektur WS 2013/14 6 / 39 Register und Modi Register und Modi Moduswechsel Register Der aktuelle Modus wird im Statusregister gespeichert. priviligiert priviligiert Inhalt des Statusregister ändern. USR Priviligiert Entsprechende Bits im Statusregister können nicht geändert werden. Nur durch eine Ausnahme möglich. = Kein direkter Übergang USR SYS. priviligiert USR Inhalt des Statusregister ändern. 37 Register (32 Bit): R0 bis R15 + CPSR + SPSR Allgemeine Register: R0 bis R12 Sonderfunktion: R13 (sp): Stack-Pointer R14 (lr): Link-Register speichert Rücksprungadresse bei Unterprozeduraufruf. R15 (pc): Program-Counter speichert Adresse der nächsten Befehls. CPSR: Current Program Status Register SPSR: Saved Program Status Register Einige Register sind modusspezifisch. Nach dem Reset befindet sich der Prozessor im SVC-Modus. Mario Haustein (TUC) Die -Architektur WS 2013/14 7 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 8 / 39

Register und Modi Register und Modi Modusspezifische Register R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 CPSR R13 svc R14 svc SPSR svc R13 abt R14 abt SPSR abt R13 und R14 und SPSR und R13 irq R14 irq SPSR irq R8 fiq R9 fiq R10 fiq R11 fiq R12 fiq R13 fiq R14 fiq SPSR fiq USR/SYS SVC ABT UND IRQ FIQ Das CPSR 31 28 27 N Z C V Reserviert I F T M[4:0] N Negativ-Flag Z Zero-Flag C Carry-Flag (vorzeichenloser Über-/Unterlauf) V Overflow-Flag (vorzeichnbehafteter Über-/Unterlauf) I, F Interrupt-Flags (IRQ und FIQ), 1 deaktiviert T Thumb-Modus, 1 Thumb- M Modus 10000 USR 10001 FIQ 10010 IRQ 10011 SVC 10111 ABT 11011 UND 11111 SYS I, F, T und M können im USR-Mode nicht geändert werden. SPSR: Inhalt des CPSR bei Auftreten der Exception 8 7 6 5 4 0 Mario Haustein (TUC) Die -Architektur WS 2013/14 9 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 10 / 39 Exceptions Exceptions Ausnahmen Exception-Handler Fehler, Interrupt (IRQ) oder Software-Interrupt (SWI) Verhalten des Prozessors beim Eintritt einer Ausnahme R14_ exception mode = return link SPSR_ exception mode = CPSR CPSR [ 4: 0] = exception mode number CPSR [5] = 0 ; Execute in state if exception mode = RESET or FIQ CPSR [6] = 1 ; Disable FIQs CPSR [7] = 1 ; Disable IRQs PC = exception vector address Abschließen der Ausnahmenbehandlung Gleichzeitig CPSR wiederherstellen und LR exception mode PC. Für jede Exception gibt es eine Handler-Funktion. Vektoren in Interrupttabelle Achtung: Die Interrupttabelle enthält Maschinenbefehle und nicht Adressen! Art Modus Adresse IVT Adresse HV 2 Reset SVC 0x00000000 0xFFFF0000 Undefined Instr. UND 0x00000004 0xFFFF0004 Software Interrupt SVC 0x00000008 0xFFFF0008 Prefetch Abort ABT 0x0000000C 0xFFFF000C Data Abort ABT 0x00000010 0xFFFF0010 IRQ IRQ 0x00000018 0xFFFF0018 Fast IRQ FIQ 0x0000001C 0xFFFF001C 2 Für zukünftige Erweiterungen frei gehalten. Mario Haustein (TUC) Die -Architektur WS 2013/14 11 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 12 / 39

Exceptions Befehlsausführung Prioritäten von Exceptions 1. Reset 2. Data Abort 3. Fast IRQ 4. IRQ 5. Prefetch Abort 6. Undefined Instruction 3 6. Software Interrupt 4 Exception-Handler können durch andere Exceptions unterbrochen werden. Achtung: Die Handler müssen diesen Fall ggf. berücksichtigen. Pipelining Der v4-prozessor nutzt eine 5-stufige Pipeline IF Instruction Fetch ID Instruction Decode EX Execute MEM Memory Access REG Register Write Nicht alle Pipelinekonflikte werden durch die CPU abgefangen. Müssen vom Programmierer/Compiler beachtet werden. t 4 Können nicht gleichzeitig eintreten. Mario Haustein (TUC) Die -Architektur WS 2013/14 13 / 39 n Mario Haustein (TUC) Die -Architektur WS 2013/14 14 / 39 Die Befehlssätze Der - - Thumb- 32 Bit pro Befehl 16 Bit pro Befehl 54 Befehle 38 Befehle Standard-Modus reduzierte Mächtigkeit Für Praktikum relevant Für Praktikum nicht relevant Wechsel jederzeit durch BX-Befehl möglich. Jeder Befehl ist 32 Bit breit. Sehr strukturierte Kodierung: Ähnliche Befehle sind ähnlich kodiert. Alle 5 Befehle können bedingt ausgeführt werden. Höchstwertigsten 4 Bits gegeben Bedingung an. 15 verschiedene Bedingungen. Keine Bedingung: AL (always) Adressierung Zwei oder drei Operanden (Ziel, Quelle, optionale Quelle). Ziel und optionale Quelle sind immer Register. Shifter-Operand: Shiften des Operanden innerhalb des Befehlszyklus. Korrekte Ausrichtung muss vom Programmierer sichergestellt werden. S-Bit: Sonderverhalten bei Transport- oder Artihmetik-Befehlen. 5 Ab v5 gibt es Ausnahmen. Mario Haustein (TUC) Die -Architektur WS 2013/14 15 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 16 / 39

Bedingungsflags Allgemeines Format: opcode { cond } Flags cond Meaning Condition 0000 EQ gleich Z = 1 0001 NE ungleich Z = 0 0010 CS/HS größer gleich (VZ-los) C = 1 0011 CC/LO kleiner (VZ-los) C = 0 0100 MI negativ N = 1 0101 PL nichtneg. N = 0 0110 VS Überlauf V = 1 0111 VC kein Überlauf V = 0 1000 HI größer (VZ-los) C = 1 Z = 0 1001 LS kleiner gleich (VZ-los) C = 0 Z = 1 1010 GE größer gleich N = V 1011 LT kleiner als N V 1100 GT größer als N = V Z = 0 1111 LE kleiner gleich N = V Z = 1 1110 AL immer Datenverarbeitende Befehle Format opcode { cond }{S} Rd, Rn, shifter operand S-Bit: Rd PC: Statusbits aktualisieren Rd = PC: Zusätzlich SPSR CPSR Bei Vergleichen implizit gesetzt Beispiele ADD R1, R2, R3 ; R1 := R2 + R3 ADDEQ R2, R4, R5 ; Wenn Z- Flag dann R2 := R4 + R5 TEQS R4, #3 ; Teste R4 == 3 MOV R0, R0 ; Leer - Instruktion ( NoOP ) MOV PC, LR ; Rü ckkehr von Unterprogramm MOVS PC, LR ; Rü ckkehr aus Exception - Handler Ohne Suffix wird AL angenommen. Mario Haustein (TUC) Die -Architektur WS 2013/14 17 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 18 / 39 Multiplikation Format MUL{L}{ cond }{S} Rd, Rm, Rs MLA{L}{ cond }{S} Rd, Rm, Rs, Rn MUL: Multiplikation MLA: Multiplikation + Addition Es werden nur die 32 niederwertigen Bits gespeichert L-Variante: 64-Bit Ergebnisse Beispiele MUL R1, R2, R3 ; R1 := R2 * R3 MLA R1, R2, R3, R4 ; R1 := R2 * R3 + R4 SMULL R1, R4, R2, R3 ; R4: R1 := R2 * R3, signed UMLAL R1, R5, R2, R3 ; R5: R1 := R2 * R3 + R5: R1, unsigned Einzelregister-zugriffe Format LDR{ cond }{B}{T} Rd, address STR{ cond }{B}{T} Rd, address 9 Adressierungsvarianten (siehe -Handbuch) Adressierung immer in Bezug auf ein Basisregister B: Byte-Zugriff T: Zugriff mit USR-Privilegien Beispiele LDR R1, [ R2, #16] ; Lade R1 mit Inhalt von ; Adresse ( R2 + 16) STR R1, [ R2, R4 ]! ; e R1 auf Adresse ; ( R2 + R4) und schreibe ; Adresse nach R2 STR R1, [ R2], R4 ; e R1 nach Adresse in R2 ; und schreibe R2 + R4 zur ü ck ; nach R2 Mario Haustein (TUC) Die -Architektur WS 2013/14 19 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 20 / 39

Multiregister-zugriffe Prinzip Multiregister-zugriffe Stack-Zugriffe Format LDM{ cond } adressing mode Rb {!}, register list {^} STM{ cond } adressing mode Rb {!}, register list {^} Lesen/Schreiben einer beliebigen Teilmenge der Registerbank aus/in aufeinanderfolgende stellen. Adressierungsmodus IA Increment After IB Increment Before!-Flag: Aktualisieren des Basisregisters. DA Decrement After DB Decrement Before ^-Flag PC in Registerliste und LDM: Zusätzlich SPSR CPSR Sonst: Zugriff aus USR-Register Register mit kleinerer Ordnungszahl liegen immer an den kleineren Adressen. Achtung: Es gibt Fälle mit undefiniertem Verhalten! Stack-Adressierungsmodi als Synonym für IA, IB, DA, DB Geben das Wachstum des Stacks an. FD Full Descending ED Empty Descending LDM... STM... DA = FA DA = ED IA = FD IA = EA DB = EA DB = FD IB = ED IB = FA FA Full Ascending EA Empty Ascending Befehle mit gleichen Stack-Modi gehören zusammen. Mario Haustein (TUC) Die -Architektur WS 2013/14 21 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 22 / 39 Multiregister-zugriffe Beispiele Multiregister-zugriffe Stolperfallen STMFD R13!, { R0 - R12, LR} ; Alle Register bis auf R13 ; und R15 sichern. R13 zeigt ; anschlie ß end auf Inhalt ; von R0. STMFD R13, { R0 - R12, LR} ; Wie oben, nur zeigt R13 auf ; das Wort ü ber Inhalt von ; LR. LDMFD R13!, { R0 - R12, PC} ; Kontext wiederherstellen. ; Dabei Rü cksprung vornehmen. LDMFD R13!, { R0 - R12, PC }^ ; Dito, allerdings auch CPSR ; wiederherstellen. PC als Basisregister Leere Registerliste ^ im USR/SYS-Modus! und Zugriff auf USR-Register LDM:! und Basisregister in Registerliste STM: PC in Registerliste = implementationsspezifisch STM ohne Zugriff auf USR-Register:! und Basisregister hat nicht die kleinste Ordnungszahl in der Registerliste. Wenn Befehl auf banked Register zugreift, und direkt davor ein LDM/STM mit Zugriff auf USR-Register erfolgte. Gängige Praxis: Im Zweifel ein NOP einfügen. Mario Haustein (TUC) Die -Architektur WS 2013/14 23 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 24 / 39

Sprünge CPSR-Zugriffe Format B{ cond } target BL{ cond } target Nur PC-relative Adressierung möglich. Sprungweite auf 8 Byte ± 32 MByte begrenzt. BL: Vor Sprung wird Adresse des Folgebefehls im LR gespeichert. Durch Load- oder Arithmetikbfehle sind ebenfalls Sprünge möglich. Format MRS{ cond } Rd, CPSR MRS{ cond } Rd, SPSR MSR{ cond } CPSR, Rs MSR{ cond } CPSR, # immediate MSR{ cond } SPSR, Rs MSR{ cond } SPSR, # immediate MSR kann zusätzlich Bits maskieren (siehe -Handbuch). Beispiel MRS R0, CPSR ; Kopiere CPSR nach R0 BIC R0, R0, #0 x1f ; Modus - Bits lö schen ORR R0, R0, # new mode ; Neuen Modus setzen MSR CPSR, R0 ; Zur ü ckschreiben Mario Haustein (TUC) Die -Architektur WS 2013/14 25 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 26 / 39 Atomare Befehle Format SWP{B}{ cond } Rd, Rm, [ Rn ] Atomarer zugriff Rd := [ Rn ] [ Rn ] := Rm Randbedingungen Rd Rn und Rn Rm Register PC nicht involviert. Beispiele SWP R1, R2, [ R3] ; R2 an Stelle R3 n. ; Vorheriger wert steht in ; R1. SWP R1, R1, [ R2] ; Tausche R1 mit dem wort ; an Adresse R2. Software Interrupt (Trap) Format SWI{ cond } immed24 Löst SVC-Exception aus. Der Direktwert im Vefehlswort kodiert, aber ignoriert. Kann vom Exception-Handler aus dem Programmcode ausgelesen werden. Beispiel SWI #0 Mario Haustein (TUC) Die -Architektur WS 2013/14 27 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 28 / 39

Koprozessoren Bis zu 16 Koprozessoren mit je bis zu 16 Registern Erweiterung um FPU, MMU, Debug,... Wenn nicht vorhanden = Undefined-Exception Software-Emulation möglich Format Datenoperation CDP{ cond } coproc, opcode1, CRd, CRn, CRm, opcode2 zugriff LDC{ cond }{L} coproc, CRd, addressing mode STC{ cond }{L} coproc, CRd, addressing mode Registerzugriff MCR{ cond } coproc, opcode1, Rd, CRn, CRm {, opcode2 } MRC{ cond } coproc, opcode1, Rd, CRn, CRm {, opcode2 } Bedeutung der Befehle und Register = -Handbuch Bedingte Befehle Kompakter Code, bessere Performance C-Code if(a == 0) b = 23; else { b = 42; c = a; } x86 Assembler test eax, eax jne _else mov ebx, 23 jmp _done _else : mov ebx, 42 mov ecx, eax _done : Mario Haustein (TUC) Die -Architektur WS 2013/14 29 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 30 / 39 Bedingte Befehle Kompakter Code, bessere Performance C-Code if(a == 0) b = 23; else { b = 42; c = a; } Assembler (konventionell) TEQ R0, #0 BNE _else MOV R1, #23 B _done _else : MOV R1, #42 MOV R2, R0 _done : Bedingte Befehle Kompakter Code, bessere Performance C-Code if(a == 0) b = 23; else { b = 42; c = a; } Assembler (bedingt) TEQ R0, #0 MOVEQ R1, #23 MOVNE R1, #42 MOVNE R2, R0 Mario Haustein (TUC) Die -Architektur WS 2013/14 30 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 30 / 39

Shifter-Operand Effekte des Pipelining t MOV R1, R0, LSL #3 ; R1 := 8 * R0 ADD R3, R2, R1, LSR #2 ; R3 := R2 + R1 / 4 ADD R0, R1, R1, LSL #1 ; R0 := 3 * R1 MOV R3, R2, ROR R1 ; R2 um R1 nach rechts ; rotieren und Wert in R3 ; laden. n l1: NOP l2: NOP l3: MOV R0, PC ; R0 ist Adresse von l5. l4: NOP l5: NOP l6: NOP Mario Haustein (TUC) Die -Architektur WS 2013/14 31 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 32 / 39 Effekte des Pipelining Effekte des Pipelining n l1: NOP l2: NOP l3: STR PC, [ R0] ; R0 enth ä lt Adresse von l5 oder l6. l4: NOP ; Implementationsabh ä ngig! l5: NOP l6: NOP t n LDM R1, { LR }^ ; Wo ist der Fehler? SUB R0, SP, #4 ; Zugriff auf SP undefiniert! t Mario Haustein (TUC) Die -Architektur WS 2013/14 32 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 32 / 39

Effekte des Pipelining n LDM R1, { LR }^ ; Wo ist der Fehler? NOP SUB R0, SP, #4 ; So ist s richtig! Mario Haustein (TUC) Die -Architektur WS 2013/14 32 / 39 t Inline Assembler uint32_t change_ mode ( uint32_t mode ) { uint32_t old ; asm v o l a t i l e ( " mrs r0, cpsr \n\t" " mov %[ old_mode ], r0\n\t" " bic r0, r0, #0 x1f \n\t" " orr r0, r0, %[ mode ]\n\t" " msr cpsr, r0\n\t" : [ old_mode ] "=r" ( retval ) : [ new_mode ] "r" ( mode ) : "r0" ); r e t u r n old ; } /* This function won t work as expected, even though the assembler code is correct. Do you know the reason? */ Mario Haustein (TUC) Die -Architektur WS 2013/14 33 / 39 AT91RM9200 und Portux920T AT91RM9200 und Portux920T Der des AT91RM9200 arten Intern: RAM und ROM auf dem Chip Extern: am Prozessorbus I/O-: Pseudospeicher für Memory Mapped IO 4 höchstwertigen Bits bilden Chip-Select = 16 regionen zu 256 MiByte Region 0 Interner 1 8 Externer 9 14 undefiniert (= Abort) 15 I/O Nicht alle 28 Adressleitungen an ext. genutzt = Wrap-Around Siehe Kapitel 8 im AT91RM9200-Datenblatt. Region 0 Bereich Modulus Beschreibung 0x00000000 0x000FFFFF 1 MiB Boot Memory 0x00100000 0x001FFFFF 1 MiB int. ROM 0x00200000 0x002FFFFF 1 MiB int. SRAM 0x00300000 0x003FFFFF 1 MiB USB Host 0x00400000 0x0FFFFFFF Undefined = Abort Nach Reset beginnt Prozessor an Adresse 0x00000000. Boot Memory abhängig von Pegel eines Prozessor-Pins und Status des Memory Controllers (MC). 6 Vor REMAP-Kommando des MC und BMS-Pin LOW = Wie Region 1 Vor REMAP-Kommando des MC und BMS-Pin HIGH = Int. ROM Nach REMAP-Kommando des MC = Int. SRAM Am Portux-Board ist BMS auf LOW gelegt. = REMAP notwendig um Interrupt-Vektoren anlegen zu können. 6 Nicht mit MMU verwechseln! Mario Haustein (TUC) Die -Architektur WS 2013/14 34 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 35 / 39

AT91RM9200 und Portux920T AT91RM9200 und Portux920T Der des Portux920T Streuspeicher und schutz MMU und MPU durch Koprozessor 15 bereitgestellt. Ohne MMU Reg. Bereich Modulus Beschreibung 1 0x10000000 0x1FFFFFFF 16 MiB ext. Flash 2 0x20000000 0x2FFFFFFF 64 MiB ext. RAM 4 0x40000000 0x4FFFFFFF 4 B LCD-Display CPU AB DB LCD Mit MMU Jede Adresse zur Ansteuerung geeignet. Zusätzlich müssen Steuerleitungen über den PIO-Controller gesetzt werden. Für Details, siehe Datenblatt. CPU MMU Befehls- und Daten-Cache zwischen CPU und MMU. Müssen bei Umkonfiguration manuell geleert werden. Mario Haustein (TUC) Die -Architektur WS 2013/14 36 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 37 / 39 AT91RM9200 und Portux920T I/O AT91RM9200 und Portux920T I/O I/O Schnittstellen des -Kerns an seine Umgebung Daten- und Adressbus IRQ und FIQ-Leitung Debug-Schnittstelle von Koprozessor 14 = Keine dedizierten I/O-Leitungen = Memory Mapped I/O Zugriff auf Register der I/O-Komponenten über Adressraum Schreib- und Lesezugriffe haben Seiteneffekte AT91RM9200 0xFFFA0000 0xFFFFFFFF Für Details, siehe Datenblatt I/O-Komponenten (Auswahl) Parallel I/O Controller (PIO) Ansteuerung der Pins am Chip z.b. LEDs Advanced Interrupt Controller (AIC) Aufschalten von Interrupts der I/O-Komponenten auf IRQ- bzw. FIQ-Leitung Interrupt-Priorisierung möglich System Timer (ST) Erzeugung periodischer Interrupts Watchdog, Echtzeituhr Debug Unit (DBGU) Universal Synchronous Asynchronous Receiver Transmitter (USART) Serielle Schnittstelle Power Management Controller (PMC) Taktaufbereitung Memory Controller (MC) u.a. REMAP-Kommando Mario Haustein (TUC) Die -Architektur WS 2013/14 38 / 39 Mario Haustein (TUC) Die -Architektur WS 2013/14 39 / 39