2.6 Mikrocontroller-Beispiele

Ähnliche Dokumente
Rechnerarchitektur Atmega Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7

Der Mikrocontroller beinhaltet auf einem Chip einen kompletten Mikrocomputer, wie in Kapitel

Einführung in die Welt der Microcontroller

BLIT2008-Board. Uwe Berger

Die Mikroprogrammebene eines Rechners

Mikrocontroller - Tipps & Tricks

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

Rechner Architektur. Martin Gülck

Atmel AVR für Dummies

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)

L3. Datenmanipulation

Johann Wolfgang Goethe-Universität

Mikroprozessor als universeller digitaler Baustein

Teil VIII Von Neumann Rechner 1

Rechnerstrukturen. 6. System. Systemebene. Rechnerstrukturen Wintersemester 2002/03. (c) Peter Sturm, Universität Trier 1. Prozessor.

6. Peripheriegeräte und Schnittstellen

TBE332 Controller. Produktbeschreibung

Hardwareaufbau der Mikrocontroller der 51er -Familie

Ein- Ausgabeeinheiten

Vorlesung Rechnerarchitektur. Einführung

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

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

SPI Serial Peripheral Interface

Serielle Kommunikation mit dem Arduino. Teil 1: Das Serial Peripheral Interface (SPI)

a. Flipflop (taktflankengesteuert) Wdh. Signalverläufe beim D-FF

Smart Metering: Entwicklung eines intelligenten Stromzählers

Assembler und Hochsprachen

Mikrocontrollerprogrammierung in Assembler und C

Neues vom STRIP Forth-Prozessor

XT - FEMTO - SXL XT-FEMTO-SXL

Software ubiquitärer Systeme

StarterKit Embedded Control SC13 + DK51. From the electronic to the automation

Arbeitsfolien - Teil 4 CISC und RISC

Das Prinzip an einem alltäglichen Beispiel

AVR-Mikrocontroller mit dem GCC programmieren

Zusatzplatine MP-Bus HZS 562

Autonome Mobile Systeme. Dr. Stefan Enderle

X-MAX-400 SORCUS. High Performance X-Bus Modul. Eigenschaften

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

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Aufgabe 2 - Erweiterung um PIC und Interrupts

Steuerungen. 4 Typen verbindungsprogrammierte Steuerung (VPS), speicherprogrammierte Steuerung (SPS), Mikrokontroller (MC) und Industrie-PCs (IPC)

Tutorial. Microcontroller. Grundlagen µc. Kapitel 1

2.2 Rechnerorganisation: Aufbau und Funktionsweise

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Grundlagen der Rechnerarchitektur

Ringlicht-v3 - Frei konfigurierbares Ringlicht mit RS232 Anbindung. Kurzbeschreibung

Instruktionssatz-Architektur

3. Rechnerarchitektur

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

XT - NANO - XXL XT-NANO-XXL

Fachhochschule Kaiserslautern Fachbereich Angewandte Ingenieurwissenschaften WS2010/11. Zeitpunkt der Prüfung: Beginn: 10.

Grundlagen der Rechnerarchitektur. Ein und Ausgabe

CU-R-CONTROL. Beschreibung zur Schaltung ATMega16-32+ISP MC-Controller Steuerung auf Basis ATMEL Mega16/32. Autor: Christian Ulrich

Johannes Kelper Universität Linz. Institut für Elektrische Messtechnik. Dokumentation. ATmeag8-USB Modul. Bernd R. Arminger ATmega8-USB Modul 1

Tickt ihr Board noch richtig? Frequenzmessung durch ChipVORX als Ergänzung zum Boundary Scan Test. Dipl.-Ing. (FH) Martin Borowski

Mikrocomputertechnik. Einadressmaschine

C4 Die SPI Schnittstelle

4 Der Von-Neumann-Rechner als Grundkonzept für Rechnerstrukturen

Operating System Kernels

Einführung in die Programmierung von Mikrocontrollern mit C/C++

Selbstbau-USB-Programmiergerät für AVR

Handbuch CompactPCI-Karten

DTMF Sender. Es können 252 Zeichen maximal am Stück übertragen werden; die Länge des Strings wird mit einem Byte übertragen.

Aufgabe 2 - Erweiterung um PIC und Interrupts

Dateiübertragung mit ProComm Plus (Posten 6)

Mikrocontroller. eine Einführung. Florian Schmitt / 34

Übung 7. Mikroprozessor & Eingebettete Systeme 1

Ein Computer zum Selbstbauen

Intelligente GPRS- und UMTS-Modems - MT-202 / MT-251

Technische Informatik 2: Addressierung und Befehle

DST EINFÜHRUNG IN MRT (V2)

Mikrocontrollertechnik. A1 Einführung

Netduino Mikroprozessor für.net Entwickler

Teil I: Wat isse ne Mikrokontroller?

ZENTRALEINHEITEN GRUPPE

Inhalt. Prozessoren. Curriculum Manfred Wilfling. 28. November HTBLA Kaindorf. M. Wilfling (HTBLA Kaindorf) CPUs 28. November / 9

Neue Prozessor-Architekturen für Desktop-PC

Prozess-rechner. auch im Büro. Automation und Prozessrechentechnik. Prozessrechner. Sommersemester Prozess I/O. zu und von anderen Rechnern

Programmieren der AVR RISC MikroController mit BASCOM-AVR

GinLink Interface 1GHz RISC CPU M-RAM High-Speed Feldbus Controller RISC-CPU, 800MHz... 1GHz Bis zu 256 MByte SDRAM

B1 Stapelspeicher (stack)

Der Scheduler von Windows Konzepte und Strategien

8. SPS Komponenten: Beschreibung der Hardware-Komponenten einer SPS samt deren Eigenschaften

Der Übungsrechner

Ergänzungen zum Manual OS V 2.05/2.06

Inhaltsverzeichnis. Teil I Aufgaben 1

Echtzeitprogrammierung und Echtzeitverhalten von Keil RTX. Frank Erdrich Semester AI 7

eblock, SD-Kartenleser Projektteam: Henrik Esche Tobias Albers Michael Heßling Daniel Lütfrenk Jonas Wieschmann

Einführung in die Microchip PIC-Controller vergleichende Betrachtung zu anderen Microcontrollern CLUG Matthias Kupfer

Übung "Struktur von Mikrorechnern" (SMR)

Embedded OS für ARM Cortex Microcontroller

Computer-Architektur Ein Überblick


Kommunikationseinheit 520CMD01 Datenblatt

3 Rechnen und Schaltnetze

Transkript:

2.6.1 ATmega128A - ein kompakter Mikrocontroller 8-Bit-Mikrocontroller Mitglied der AVR8-Familie ATmega Reihe größere Bauform als ATtiny ATtiny: DIL8, ATmega: QIL64, etwas erweiterter Prozessorkern 50% Reduktion des Energieverbrauchs zu ATmega128 1

Einordnung in die Familie ATtiny1X 2X 4X 8X ATmega 8X 16X 32X 64X 128X 256X AT90X AT94X Grundmodelle mit 1, 2, 4 oder 8 kbytes ROM. Je nach X unterschiedliche Versionen, z.b. ATtiny11 mit 6 MHz, ATtiny12 mit 8 MHz und ATtiny13 mit 20 MHz Taktfrequenz. Erweiterte Modelle mit 8 bis 256 kbytes ROM. Je nach X unterschiedliche Varianten, z.b. ATmega128A mit 4 kbytes RAM und ATmega1280 mit 8 kbytes RAM Spezialversionen, z.b. AT90CAN128 mit CAN-Bus-Einheit oder AT90PWM1 mit Pulsweitenmodulator Enthält programmierbare Logik (FPGA) 2

Prozessorkern - RISC-Architektur - Taktfrequenz bis 16 MHz - Harvard-Architektur mit 8 Bit Datenbus, 16 Bit Befehlsbus und 16 Bit Adressbus - 32 allgemeine 8 Bit Register, 6 davon paarweise als 16 Bit Indexregister nutzbar - 7 Adressierungsarten - Gemeinsame Adressierung (Memory Mapped IO) - 8 x 8 Bit Multiplikation Speicher - statisches RAM - FlashRAM - EEPROM 3

Zeitgeber und Ein-/Ausgabeeinheiten - 7 parallele Ein-/Ausgabeeinheiten, insgesamt 53 Bit - 2 synchrone serielle Ein-/Ausgabeeinheiten - 2 synchrone/asynchrone serielle Ein-/Ausgabeeinheiten - 2 8-Bit-Zähler/Zeitgeber mit Compare-Funktion und Pulsweitenmodulator - 2 16-Bit-Zähler/Zeitgeber mit Capture/Compare-Funktion und Pulsweitenmodulator - 1 Watchdog - 1 Analogvergleicher - 8 Digital/Analog-Wandlerkanäle, jeweils 10 Bit - 8-Bit-Erweiterungsbus im Daten-/Adressmultiplexing, 16 Bit Adressen - JTAG Test- und Debuginterface 4

Aufbau: Quarz Reset Unterbrechungen (0-3), Zähler/Zeitgeber, Serielle EA, Parallele EA Unterbrechungen (4-7), Zähler/Zeitgeber, Serielle EA, Parallele EA Parallele Schnittstelle D Parallele Schnittstelle E Unterbrechungen (INT0-INT7) FlashRAM 128 kbyte Takt Unterbrechungs- Steuerung Synchrone serielle Schnittstelle 1 (Two Wire) 2 x synchrone/ asynchrone serielle Schnittstellen (USART) EEPROM 4 kbyte Prozessorkern Erweiterungsbus Daten/Adressen (0-7) Adressen (8-15) Steuersignale 4 x Zähler/Zeitgeber (2 x 8 Bit, 2 x 16 Bit, Capture/Compare, Pulsweitenmodulator) Watchdog Synchrone serielle Schnittstelle 2 (SPI) RAM 4 kbyte Test/Debug Schnittstelle (JTAG) Analog/Digital Wandler Parallele Schnittstelle A Parallele Schnittstelle C Parallele Schnittstelle G Parallele Schnittstelle B Parallele Schnittstelle F Erweiterungsbus Daten / Adressen (0-7), Parallele EA Erweiterungsbus Adressen (8-15), Parallele EA Erweiterungsbus Steuersignale, Zähler/Zeitgeber, Parallele EA Serielle EA, Zähler/Zeitgeber, Parallele EA, Analoge EA, Testschnittstelle, Parallele EA,

2.6.1.1 Prozessorkern 2.6 Mikrocontroller-Beispiele Adress-, Daten- und Befehlsbusse des Prozessorkerns Harvard Architektur Direkte Verbindung zwischen ALU und Registersatz (RISC) Befehlsadressraum 64kWorte = 128 kbytes Taktfrequenz 16 MHz Programmzähler FlashRAM 128 kbyte (Programmspeicher) 16-Bit Befehlsbus Prozessorkern 16-Bit Adressbus EEPROM 4 kbyte (Datenspeicher) RAM 4 kbyte (Datenspeicher) ALU Registersatz Zähler/Zeitgeber Schnittstellen 8-Bit Datenbus 6

Programmiermodell: 7 0 15 0 R0 PC Load/Store-Architektur RAMPZ (Bit0): Ansprechen der oberen oder unteren 64k Byte des Programmspeichers als Datum RAMPX, RAMPY beim ATmega128 nicht vorhanden (Datenspeicher 64 kbytes) R1 R2 R3... R13 R14... R26 R27 R28 R29 R30 R31 X-Register Low X-Register High Y-Register Low Y-Register High Z-Register Low Z-Register High Programmzähler (Program Counter) 7 0 SPL SPH Kellerzeiger (Stack Pointer) 7 0 PSW I T H S V N Z C Prozessorstatuswort (C = Carry, V = Overflow, Z = Zero, N = Negative, H = Half Carry, S = Sign, I = Interrupt Maske, T = Bit Copy) 7 0 RAMPX RAMPY RAMPZ 32 allgemeine Register Speichererweiterungsregister 7

Adressierungsarten: 2-Adress Format Rx = Rx + Ry (x, y {0.. 31}) Registerdirekt ADD R1,R0 R1 = R1 + R0 0C 10 Unmittelbar SUBI R16,$10 R16 = R16-10 h 51 00 Adressdirekt LDS R1,($2000) R1 = (2000 h ) 50 10 20 00 Registerindirekt LD R1,X R1 = (X) 90 1C Registerindirekt LD R1,X+ R1 = (X), X++ 90 1D (Postinc, Predec) 8

Registerindirekt LD R1,Y+5 R1 = (Y + 5) 80 15 (Displacement) PC Relativ RJMP $10 PC = (PC + 10) C0 10 133 Befehle 8 und 16 Bit Ganzahl-Datentypen, Einzelbits Befehsbreite 16 Bit (Ausnahme adressdirekte Adressierung, dort 32 Bit) 9

SLEEP-Befehl für statisches Power-Management Betriebsarten: Idle Mode: ADC Noise Reduction Power Save Mode Power Down Mode Standby Mode Prozessorkern abgeschaltet Prozessorkern und Teil der Peripherie abgeschaltet Prozessorkern und alle Peripherie bis auf externe Unterbrechungen, Watchdog, eine serielle Schnittstelle und ein Zähler/Zeitgeber abgeschaltet wie Power Save, nur Zähler/Zeitgeber ebenfalls abgeschaltet wie Power Down, aber Taktgenerator bleibt zum schnellen Wiederanfahren aktiv Extended Standby Mode wie Power Save, aber Taktgenerator bleibt aktiv 10

2.6.1.2. Unterbrechungsbehandlung Einfacher Vektorinterrupt Vektoren fest den Komponenten und 8 externen Interrupt- Eingängen zugeordnet 35 Vektoren 70 Byte Vektortabelle (16 Bit pro Eintrag = Adressbreite) Vektortabelle am Anfang des Programmadressraums positioniert (0000 h 0044 h ), kann jedoch auch auf den Anfang des Boot-Bereiches verschoben werden Feste Prioritäten, globales Maskenbit (I-Bit), jede Quelle kann jedoch durch Steuerregister auch individuell maskiert werden 11

Adresse Vektor Priorität Unterbrechungsquelle 0000 h 1 hoch Rücksetzen 0002 h 2 Externer Interrupt-Eingang INT0 0004 h 3 Externer Interrupt-Eingang INT1 0006 h 4 Externer Interrupt-Eingang INT2 0008 h 5 Externer Interrupt-Eingang INT3 000A h 6 Externer Interrupt-Eingang INT4 000C h 7 Externer Interrupt-Eingang INT5 000E h 8 Externer Interrupt-Eingang INT6 0010 h 9 Externer Interrupt-Eingang INT7 0012 h 10 Zähler/Zeitgeber 2 (8 Bit) Compare 0014 h 11 Zähler/Zeitgeber 2 (8 Bit) Überlauf 0016 h 12 Zähler/Zeitgeber 1 (16 Bit) Capture 0018 h 13 Zähler/Zeitgeber 1 (16 Bit) Compare A 001A h 14 Zähler/Zeitgeber 1 (16 Bit) Compare B 001C h 15 Zähler/Zeitgeber 1 (16 Bit) Überlauf 001E h 16 Zähler/Zeitgeber 0 (8 Bit) Compare 0020 h 17 Zähler/Zeitgeber 0 (8 Bit) Überlauf 0022 h 18 Synchrone serielle Schnittstelle 2 (SPI) 0024 h 19 Sync/async. Schnittstelle 1 (USART) empfangen 0026 h 20 Sync/async. Schnittstelle 1 (USART) leer 0028 h 21 Sync/async. Schnittstelle 1 (USART) senden 002A h 22 Analog/Digitalwandler 002C h 23 EEPROM bereit 002E h 24 Analogvergleicher 0030 h 25 Zähler/Zeitgeber 1 (16 Bit) Compare C 0032 h 26 Zähler/Zeitgeber 3 (16 Bit) Capture 0034 h 27 Zähler/Zeitgeber 3 (16 Bit) Compare A 0036 h 28 Zähler/Zeitgeber 3 (16 Bit) Compare B 0038 h 29 Zähler/Zeitgeber 3 (16 Bit) Compare C 003A h 30 Zähler/Zeitgeber 3 (16 Bit) Überlauf 003C h 31 Sync/async. Schnittstelle 2 (USART) empfangen 003E h 32 Sync/async. Schnittstelle 2 (USART) leer 0040 h 33 Sync/async. Schnittstelle 2 (USART) senden 0042 h 34 Synchrone serielle Schnittstelle 1 (Two Wire) 0044 h 35 niedrig Programmspeicher (FlashRAM) programmiert

2.6.1.3 Speicher und Adressraum 0 15 0 7 0000 h 0044 h Interrupt-Vektortabelle Internes FlashRAM 0000 h 0020 h 0060 h 0100 h 1100 h Registersatz EA-Register Externe EA- Register Internes RAM 4096 x 8 Bit 0000 h 0FFF h 0 7 EEPROM 4096 x 8 Bit Über EA-Register zugreifbar/ programmierbar 64k x 16 Bit Externes RAM Boot-Bereich: FFFF h Anwendungsbereich Interrupt-Vektortabelle Bootbereich konfigurierbare Größe, 512, 1024, 2048 oder 4096 Worte FFFF h nur dort können Befehle zum Schreiben des FlashRAMs ausgeführt werden => generisches Ladeprogramm über serielle oder Debugschnittstelle dort ladbar Programmspeicher Datenspeicher

2.6.1.4 EA-Einheiten, Zähler und Zeitgeber Digitale parallele EA Einheit Eingabe- Bits Ausgabe- Bits Bidirektion ale Bits Geteilt mit A - - 8 Erweiterungsbus Daten/Adressen B - - 8 Zähler/Zeitgeber, synchrone serielle E/A (SPI) C - - 8 Erweiterungsbus Adressen D - - 8 Ext. Unterbr. 0-3, Zähler/Zeitgeber, sync. /async. serielle E/A (USART, Two Wire) E - - 8 Ext. Unterbr 4-7, Zähler/Zeitgeber, sync./async. serielle E/A (USART) F - - 8 Analog/Digital-Wandler, Debugschnittstelle G - - 5 Erweiterungsbus Steuersignale, Zähler/Zeitgeber 14

Digitale serielle EA RxD (Receive Data) TxD (Transmit Data) XCK (External Clock) RxD (Receive Data) TxD (Transmit Data) XCK (External Clock) Synchrone/Asynchrone serielle Schnittstelle 1 (USART) Synchrone/Asynchrone serielle Schnittstelle 2 (USART) Max. Baudrate USART: SPI: Two Wire 250 kbaud 4 MBaud 400 kbaud Synchrone serielle Schnittstelle 1 (Two Wire) SDA (Serial Data) SCL (Serial Clock) max 128 Teilnehmer MOSI (Master Out Slave In) Synchrone serielle Schnittstelle 2 (SPI) MISO (Master In Slave Out) SCK (Serial Clock) SS (Slave Select) 15

Analog/Digital-Wandler 2.6 Mikrocontroller-Beispiele interner Datenbus 8-Bit Kanalwahlregister 8 Bit Status/Steuerregister 8 Bit Ausgangsregister low 16 Bit Ausgangsregister high Digitalwert Wägeverfahren 10-Bit AD-Wandler 16 µsec Wandlungszeit 10 Bit Auflösung Analog- Signal 8 Kanäle Analog MUX Single oder Free Running Conversion Mode Analog In 7... Analog In 0 16

Zähler und Zeitgeber Programmierbarer Watchdog-Zähler Impulsausgang C von 16-Bit Zähler/Zeitgeber 1 Watchdog: 1 MHz Takt, 8 Stufen (2 14 2 21 = 14msec 1,8sec) Watchdog Datenbus Reset 8 Bit Zähler +/- Zählerbus Impulsausgang von 8-Bit Zähler/Zeitgeber 2 Takt Vorteiler Compare-Interrupt Modulator (Und/Oder) Impulsausgang Modulator Modulator Externer Takt Interner Takt Modulator: Wahlweise Und bzw Oder Verknüpfung zweier Signale Compare-Register 8-Bit Zähler/Zeitgeber 0 8-Bit Zähler/Zeitgeber 2 Impulserzeuger Impulsausgang 17

Impulserzeuger: Datenbus 16 Bit Zähler +/- Zählerbus Takt Vorteiler Externer Takt Interner Takt Compare-Intterupt A erzeugt zahlreiche Impulsformen bei Compare-Ereignis, z.b. Ausgang setzen, rücksetzen, wechseln, setzen bei Compare und rücksetzen bei max. Zählerstand,... Compare-Register A Compare-Register B Compare-Register C Capture-Register Compare-Interrupt B Compare-Interrupt C Capture-Interrupt Impulserzeuger Impulserzeuger Impulserzeuger Flankenerkennung Impulsausgang A Impulsausgang B Impulsausgang C Capture-Eingang Analog-Vergleicher 16-Bit Zähler/Zeitgeber 1 16-Bit Zähler/Zeitgeber 3 18

2.6.1.5 Erweiterungsbus Kann über Steuerregister aktiviert und konfiguriert werden Bei aktivem Erweiterungsbus sind die geteilten parallelen EA- Einheiten nicht verfügbar Unterstützt variablen Adressraum Die Adressbits A8 A15 sind schrittweise zuschaltbar Nicht benutzte Adressbits stehen den parallelen EA-Einheiten zur Verfügung Wartezyklen (bis zu 3) beim Zugriff sind programmierbar 19

Aufbau des Erweiterungsbusses: Port C A 8 A 15 ATmega128 Port A Latch En A 0 A 7 ALE D 0 D 7 Port G RW WR RW WR 20

2.6.2 PXA 270 ein Hochleistungs-Mikrocontroller 32 Bit Mikrocontroller Weiterentwicklung der StrongARM Familie ARM Version 5TE RISC Prozessorkern Vielfältige Peripherie Wird z.b. gerne in portablen Geräten eingesetzt 21

Prozessorkern - skalare RISC-Architektur ARM Version 5TE - Taktfrequenz bis 624 MHz - 32-Bit-Datenbus, 32-Bit-Adressbus - Virtuelle Speicherverwaltung für Daten und Befehle - 32 KBytes Befehls-Cache - 32 KBytes Daten-Cache - 2 KBytes Mini-Daten-Cache zur Aufnahme von Datenströmen - Erweiterte Multiplikations-/Additionseinheit für Signalverarbeitung - komprimierbarer Befehlssatz - Multimedia Coprozessor - Ruhebetrieb 22

Speicher - 256 kbytes statischer Speicher (zusätzlich zu den bereits genannten Caches) - Schnittstelle für verschiedene Speichertypen (ROM, Flash- RAM, statisches RAM, dynamisches RAM, PC-Karten,...) Zeitgeber und Ein-/Ausgabeeinheiten - 119 Bit breite parallele Ein-/Ausgabe - 3 synchrone serielle Ein-/Ausgabeschnittstellen - 3 asynchrone serielle Ein-/Ausgabeschnittstelle, davon eine optimiert für den Bluetooth-Funkstandard - 1 serielle Infrarot-Schnittstelle - 2 USB-Schnittstellen 23

Zeitgeber und Ein-/Ausgabeeinheiten (fortg.) - 1 serielle I 2 C-Schnittstelle - 1 serielle Audio-Schnittstelle (I 2 S) - 1 Audiocontroller - 1 Highspeed Chip zu Chip Schnittstelle (Mobile Serial Link) - 1 Tastaturschnittstelle - 1 USIM (Universal Subscriber Identity Module) Schnittstelle für Mobiltelefonie - 1 Kameraschnittstelle - 1 LCD-Anzeigecontroller - 32 DMA-Kanäle 24

Zeitgeber und Ein-/Ausgabeeinheiten (fortg.) - 1 Echtzeit-Zähler - 1 Zähler mit 4 Compare-Einheiten und Watchdog-Funktion - 8 Zeitgeber - 4 Pulsweitenmodulatoren - vollständiger Erweiterungsbus mit 32 Bit Daten und 26 Bit Adressen 25

Aufbau: Quarz 256 KBytes statischer Speicher 32 KBytes Daten-Cache Prozessorkern ARM 5TE Multimedia Coprozessor Takt 32 KBytes Befehls- Cache 2 KBytes Mini-Daten- Cache Virtuelle Speicherverwaltung Daten Virtuelle Speicherverwaltung Befehle DMA-Controller Unter- brechungs- Steuerung Erweiterungs -bus/ Speichercontroller LCD- Controller Echtzeituhr, Zeitgeber, Watchdog PWM, USIM Serielle Schnittstellen Tastatur- Schnittstelle, Kamera- Schnittstelle, MSL, Audio- Controller Parallele Schnittstellen Interrupts, parallele EA Adr. Daten Steuersignale, parallele EA LCD-Anzeige, parallele EA Zeitgeber, Pulsweitenmodulator, USIM parallele EA Serielle EA, Kamera, Tastatur, parallele EA Audio- Schnittstelle, parallele EA

2.6.2.1 Prozessorkern Intel XScale Mikroarchitektur 7-stufige skalare Pipeline spekulative Befehlsausführung mit 2-Bit Sprungvorhersage ARM Version 5 Erweitert die im Vorgänger StrongARM verwendete ARM Version 4 um Codekompression und MAC-Einheit Mehrere Registerbänke, die je nach Betriebsart gewechselt werden 27

Benutzer und System R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 (PC) FIQ IRQ Supervisor Abbruch Undefiniert R0 R1 R2 R3 R4 R5 R6 R7 R8 fiq * R9 fiq * R10 fiq * R11 fiq * R12 fiq * R13 fiq * R14 fiq * R15 (PC) R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 irq * R14 irq * R15 (PC) R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 svc * R14 svc * R15 (PC) R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 abt * R14 abt * R15 (PC) R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 und * R14 und * R15 (PC) 0 31 0 31 0 31 0 31 0 31 0 31 allgemeine Register Programmiermodell CPSR CPSR SPSR fiq * CPSR SPSR irq * PC : Programm Counter, Programmzähler CPSR : Current Program Status Register, Prozessorstatuswort SPSR : Saved Program Status Register, gerettetes Prozessorstatuswort CPSR SPSR svc * CPSR SPSR abt * CPSR SPSR und * Statusregister *: betriebsartspezifisches Register 28

Besonderheiten des Befehlssatzes: MAC-Einheit wie bei Signalprozessoren 32-Bit Standard RISC Befehlssatz 16-Bit komprimierter Thumb-Befehlssatz Für RISC eher untypisch viele Adressierungsarten 29

Acht Arbeitsmodi: Turbo-Modus: hohe Taktfrequenz Half-Turbo-Modus: halbe Taktfrequenz Normaler Modus: niedere Taktfrequenz, Umschaltung zu hoher Taktfrequenz in Nanosekunden Idle-Modus: Kern ist angehalten, Wecken durch Interrupt Deep-Idle-Modus: Wie Idle-Modus, jedoch bleiben nur Tastatur und LCD aktiv Standby-Modus: Kern und alle Komponenten bis auf Echtzeituhr, Takt und Power-Manager abgeschaltet, erniedrigte Versorgungsspannung 30

Acht Arbeitsmodi (fortg.): Sleep-Modus: Wie Standby, jedoch mit weiter reduzierter Versorgungsspannung, nur Echtzeituhr, Takt und Power- Manager und vom Benutzer definierte Komponenten bewahren ihren Zustand Deep-Sleep-Modus: Wie Sleep-Modus, nur Echtzeituhr, Takt und Power-Manager bewahren ihren Zustand 31

2.6.2.2. Unterbrechungsbehandlung Einfaches Unterbrechungssystem mit festen Vektoren 8 verschiedene Vektoren, davon 2 extern (IRQ, FIQ) Adresse Vektor Unterbrechungsquelle Priorität 0 h 0 Rücksetzen 1 4 h 1 Undefinierter Befehl 6 8 h 2 Software Interrupt 6 C h 3 Abbruch vorgezogener Datenzugriff 5 10 h 4 Abbruch Datenzugriff 2 14 h 5 Reserviert - 18 h 6 IRQ (Interrupt) 4 1C h 7 FIQ (Fast Interrupt) 3 32

FIQ (Fast Interrupt) erlaubt eine etwas kürzere Reaktionszeit auf einen Interrupt als IRQ Grund: Der Prozessorkern entnimmt der Vektortabelle nicht die Adresse der Behandlungsroutine Vielmehr springt er auf die Tabellenadresse. Dort muss dann ein Sprungbefehl zur Behandlungsroutine stehen => eher Sprungtabelle als Vektortabelle FIQ ist der letzte Eintrag der Tabelle. Daher muss hier kein Sprungbefehl stehen, die Behandlungsroutine kann sofort beginnen 33

Die Zuordnung der externen und internen Komponenten auf IRQ und FIQ erfolgt durch einen integrierten Interruptcontroller Unterbrechungsanforderungen der peripheren Komponenten... Maskenregister (ICMR) 0 31... Zuordnungsregister (ICLR) IRQ FIQ Statusregister* (ICPR) 0 31... * Existiert auch als ICIP und ICFP Register getrennt für IRQ und FIQ Welche Komponente hat die Unterbrechung ausgelöst? 34

2.6.2.3 Speicher und Adressraum Externer Speicher ist in Bänken zu je 64 MBytes organisiert 00000000 h 04000000 h 08000000 h 0C000000 h 10000000 h 14000000 h 18000000 h 20000000 h 30000000 h 40000000 h 60000000 h Ext. statische Speicherbank 1 64 MBytes Ext. statische Speicherbank 2 64 MBytes Ext. statische Speicherbank 3 64 MBytes Ext. statische Speicherbank 4 64 MBytes Ext. statische Speicherbank 5 64 MBytes Ext. statische Speicherbank 6 64 MBytes Reserviert 2 x 64 MBytes PCMCIA Slot 1 4 x 64 MBytes PCMCIA Slot 2 4 x 64 MBytes Interne Komponenten, interner Speicher 8 x 64 MBytes Reserviert 16 x 64 MBytes A0000000 h Ext. dynamische Speicherbank 1 64 MBytes A4000000 h Ext. dynamische Speicherbank 2 64 MBytes A8000000 h Ext. dynamische Speicherbank 3 64 MBytes AC000000 h Ext. dynamische Speicherbank 4 64 MBytes B0000000 h FFFFFFFF h Reserviert 20 x 64 MBytes

2.6.2.4 EA-Einheiten, Zähler und Zeitgeber Digitale parallele EA 119 parallele E/A-Bits, Richtung einzelbitweise festlegbar Jedes Bit kann als Interrupt-Eingang genutzt werden Digitale serielle EA 3 asynchrone serielle Schnittstellen (Standard, Bluetooth, Modem) 3 synchrone serielle Schnittstellen Spezielle serielle Schnittstellen (Fast Infrared, USB, I 2 C, I 2 S) 36

FIFOs (64 Bytes) FIFOs (64 Bytes) FIFOs (64 Bytes) RI (Ring Indicator) DCD (Data Carrier Detect) DSR (Data Set Ready) DTR (Data Terminal Ready) CTS (Clear to Send) RTS (Request to Send) RxD (Receive Data) TxD (Transmit Data) CTS (Clear to Send) RTS (Request to Send) RxD (Receive Data) TxD (Transmit Data) RxD (Receive Data) TxD (Transmit Data) 2.6 Mikrocontroller-Beispiele Asynchrone serielle Schnittstellen Schnittstelle 1 (Standard) Schnittstelle 2 (Bluetooth) Schnittstelle 3 (Modem) 37

EXTCLK (External Serial Clock)) CLKEN (Internal Clock Eneblae) CLK (Internal Serial Clock) FRM (Frame) RxD TxD LR (Left/Right) CLK (Bit Clock) SDI (Serial Data In) SDO (Serial Data Out) SLC (Serial Clock) SDA (Serial Data/Address) USB- USB+ RxD TxD 2.6 Mikrocontroller-Beispiele synchrone und spezielle serielle Schnittstellen Infrarot USB I 2 C I 2 S SSP1,2,3 geteilt mit asynchroner Schnittstelle 1 (Standard) geteilt mit Audio-Controller 38

Stereo-Datenübertragung zwischen Audio-Bausteinen über die I 2 S Schnittstelle Bit Clock................................................... Serial Data 1 rechter Kanal 32 1 linker Kanal 32 1rechter Kanal 32 1 linker Kanal 32... Left/Right... Stereodaten i Stereodaten i+1 39

Audio-Controller (Abspielen und Aufnehmen von Audiosignalen im PCM-Format) LCD Controller Bilddaten im externen Speicher DMA- Controller FIFO LCD-Controller Farbpalette Dithering Ausgabesteuerung Bildpunkte Steuersignale Anzeige 40

Zähler und Zeitgeber 2.6 Mikrocontroller-Beispiele Systemtakt Echtzeituhr Vorteiler Feinjustierung 1 Hz Ausgang 1 Hz Takt Echtzeit- Zähler 32 Bit (freilaufend) Echtzeit- Zähler 32 Bit (freilaufend) Compare- Register (Alarm) Compare- Register (Alarm) Echtzeit- Unterbrechung Echtzeit- Unterbrechung 100 Hz Takt Echtzeit- Zähler 32 Bit (freilaufend) Compare- Register (Alarm) Echtzeit- Unterbrechung 1 khz Takt Echtzeit- Zähler 32 Bit (freilaufend) Compare- Register (Alarm) Echtzeit- Unterbrechung PXA255 Kompatibilitäts- Zeitgeber Zähler 32 Bit (freilaufend) 4 x Compare- 4 Compare- Register 4 Compare- Register 4 Compare- Register Register Unterbrechung 1-4, Watchdog Ereignis Betriebssystem-Zeitgeber 8 x Prog. prog. Vorteiler Prog. Prog. Vort Prog. Vor Prog. Vortei Prog. Vortei Prog. Vortei Vo 8 x Zähler Compare- 32 Compare- Bit Register (freilaufend) Compare- 1-8 Register Compare- 1-8 Register Compare- 2 Register Compare- 3 Register Compare- 4 Register 1-8 Register 1-8 8 x Compare- Compare- Register Compare- Register Compare- 1-8 Register Compare- 1-8 Register Compare- 2 Register Compare- 3 Register Compare- 4 Register 1-8 Register 1-8 Unterbrechung 5-12 Pulsweitenmodulator Pulsweitenmodulator 1-4 Pulsweitenmodulator Pulsweiten- 1-4 Pulsweitenmodulator 1-4 4 x modulator PWM Ausgang 1-4 41

DMA-Controller DREQ1 Externe Eingänge 1 und 2 5 Bit DRCMR0 Zuordnung DREQ2 DRCMR1 DMA-Kanal 0 Steuerregister Interne DMA-Anforderung 1... DRCMR2 Asynchrone serielle Schnittstellen, synchrone serielle Schnittstelle, I2C, I2S, USB, Audio Controller... Interne DMA-Anforderung 72... DRCMR73... DMA-Kanal 31 Steuerregister DREQ3 Externer Eingang 3 DRCMR74 DMA Controller 32 Kanäle, frei den internen und drei externen Komponenten zuordenbar 42

Bedienung der DMA Gruppen im Round Robin Verfahren Gruppe Kanäle Priorität Bedienhäufigkeit 1 0,1,2,3,16,17,18,19 hoch 4 2 4,5,6,7,20,21,22,23 mittel 2 3 8,9,10,11,24,25,26,27 nieder 1 4 12,13,14,15,28,29,30,31 nieder 1 Gruppen 1 2 1 3 1 2 1 4 43

2.6.2.5 Erweiterungsbus 26-Bit Adressbus 32-Bit Datenbus Steuerbus - zum Anschluss von 6 statischen Speicherbänken à 64 MBytes - zum Anschluss von 4 dynamischen Speicherbänken à 64 MBytes - zum Anschluss einer PC-Kartenschnittstelle (PCMCIA) 44

PXA270 CS1 Statische Speicherbank 1 (64 Mbytes) CS2 Statische Speicherbank 2 (64 Mbytes) CS3 Statische Speicherbank 3 (64 Mbytes) CS4 Statische Speicherbank 4 (64 Mbytes) CS5 Statische Speicherbank 5 (64 Mbytes) Speicher-Controller CS6 Daten (D 0 D 31 ) Adressen (A 0 A 25 ) Steuersignale Statische Speicherbank 6 (64 Mbytes) (D 0 D 15 ) PC-Kartenschnittstelle Multiplex DCS1 Dynamische Speicherbank 1 (64 Mbytes) DCS2 Dynamische Speicherbank 2 (64 Mbytes) DCS3 Dynamische Speicherbank 3 (64 Mbytes) DCS4 Dynamische Speicherbank 4 (64 Mbytes)

2.6.3 MCore - optimiert für niedrigen Energieverbrauch Architektur bzw. Mikroarchitektur eines Prozessorkerns Primäres Ziel: niedriger Energieverbrauch Wird in verschiedenen Mikrocontrollerns verwendet, z.b. MMC2001, MMC2003, MMC2107, MMC2114,... Wir wollen uns hier auf die Energiespartechniken im Prozessorkern konzentrieren 46

Eigenschaften: skalare RISC Architektur Load/Store Konzept 32 Bit Datenbus, Register und Ausführungseinheiten 32 Bit Adressbus Feste 16 Bit Befehlslänge 4-stufige Pipeline 2 Registersätze mit je 16 Registern zum schnellen Kontextwechsel 8-, 16- und 32-Bit Datentypen Statisches und dynamisches Power-Management Statisches CMOS Design (bis 0 Hz Taktfrequenz) 33 MHz maximale Taktfrequenz 1,8 bis 3,6 Volt Versorgungsspannung 47

Operationswerk Steuerwerk Low-Power Betriebsart (LPMD) Registersatz Allgemeiner Registersatz 16 x 32 Bit Alternativer Registersatz 16 x 32 Bit Steuerregistersatz 13 x 32 Bit Betriebsartensteuerung Statisches Power- Management Verringerung der Busaktivitäten Multiplizierer, Dividierer, Barrel-Shifter Dynamisches Power- Management Befehls-Pipeline: 1. Befehl holen 2. Befehl decodieren / Register lesen 3. Befehl ausführen 4. Register schreiben Dynamisches Power-Management, Code-Dichte Addierer, Subtrahierer, Logische Operationen, Lade- und Speicheroperationen Dynamisches Power- Management Adresserzeugung Code-Dichte MCore Verringerung der Busaktivitäten Datenbus Adressbus 48

2.6.3.1 Reduktion der Busaktivitäten und Erhöhung der Code-Dichte Benutzer Supervisor Reduktion der externen Busaktivitäten durch reichhaltigen Registersatz R0 (SP) R1 R2 R3 R4 R5 R6 R7 R0 (SP) R1 R2 R3 R4 R5 R6 R7 R0* R1* R2* R3* R4* R5* R6* R7* CR0 CR1 CR2 CR3 CR4 CR5 CR6 CR7 R8 R8 R8* CR8 R9 R9 R9* CR9 R10 R10 R10* CR10 R11 R11 R11* CR11 R12 R12 R12* CR12 R13 R14 R13 R14 R13* R14* 0 31 R15 R15 R15* 0 31 0 31 0 31 C C PC PC 49

Hohe Code-Dichte durch 16-Bit Befehlssatz 15 4 3 0 Befehlscode Rx Adressierung mit einem Register 15 8 7 4 3 0 Befehlscode Ry Rx Adressierung mit zwei Registern 15 11 10 4 3 0 Befehlscode Immediate Rx 15 11 10 0 Befehlscode Displacement Adressierung mit Register und unmittelbarer Konstanten Adressierung mit Displacement 15 12 11 8 7 0 Befehlscode Rx Displacement Adressierung mit Register und Displacement Rx = Register R0... R15 50

2.6.3.2 Statisches Power Management Voll statisches Steuerwerk, bis zu 0 Hz Taktfrequenz Niedere Versorgungsspannung von 1.8 Volt Spezialbefehle und Ausgangssignale (LPMD = low power mode) um nicht benötigte Komponenten abzuschalten Modus (Befehl) LPMD1 LPMD0 Stop 0 0 Wait 0 1 Doze 1 0 Run 1 1 51

2.6.3.3 Dynamisches Power Management Power Aware Pipeline Die Pipeline erkennt und deaktiviert gerade nicht benötigte Komponenten Eine Addition aktiviert z.b. den Addierer, deaktiviert aber den Barrel-Shifter Unterschiedliche Datengrößen werden unterstützt Für 8 und 16 Bit Operationen werden unbenutzte Teile der internen 32 Bit Datenpfade und Verarbeitungseinheiten abgeschaltet 52

Gesamtverteilung des Energiebedarfs im Prozessorkern Taktleitungen: Datenpfade: Steuerlogik: 36% des gesamten Energiebedarfs 36% des gesamten Energiebedarfs 28% des gesamten Energiebedarfs => Optimierung der Taktleitungen und Sperrung von Teilen des Takt-Baumes (Clock Gating) kann viel Energie einsparen Die Pipeline sperrt z.b. den Takt für einige Komponenten während dem Auftreten von Pipeline-Hazards 53

2.6.4 Komodo - ein Forschungs-Mikrocontroller Java einfache Programmierung, Threads Echtzeit Zeitbedingungen, Scheduling Mehrfädige Prozessortechnik schneller Kontextwechsel Komodo Mikrocontroller Java Prozessor, mehrfädige Hardware, Thread-basierte Unterbrechungsbehandlung, Middleware 54

Das Komodo-Projekt ist in fünf Ebenen gegliedert Anwendung Middleware OSA+ Standard Klassen Driver.Klassen Garbage Collection Heap Traps Mem. Klasse Ethreads. Klasse Prioritäts- Manager Multithreading Komodo- Mikrocontroller Signal Einheit I/O Einheit Der Mikrocontroller ist die niedrigste Ebene 55

Prozessorkern mehrfädige 32 Bit Architektur bis zu 4 Hardware-Threads direkte Ausführung von Java Bytecode thread-basierte Unterbrechungsbehandlung extrem schneller Kontextwechsel (0 Taktzyklen) Speicher Schnittstelle für externen Arbeitsspeicher Datentransferpuffer für Ein-/Ausgabedaten Zeitgeber und Ein-/Ausgabeeinheiten 1 parallele und 2 serielle Ein-/Ausgabeschnittstellen 1 Capture- und Compare-Einheit 1 Zähler- und Zeitgebereinheit 56

Architektur des Komodo-Mikrocontrollers Quarz Prozessorkern Takt mehrfädige Java Pipeline Ein-/Ausgabe- Einheit Signal- Einheit Datentransfer- Puffer Speicherschnittstelle Weck-Einheit Parallele Ein- /Ausgabe- Einheit Serielle Ein- /Ausgabe- Einheit Capture- /Compare- Einheit Zähler- /Zeitgeber- Einheit Externer Speicher Externe Ereignisse Parallele EA Serielle EA Einfangen/Treffer Zählen/Takt 57

2.6.4.1 Prozessorkern Java Prozessor Ausführung von Java Bytecode direkt in Hardware (Einfache Bytecodes) Mikrocode (mittel-komplexe Bytecodes) Trap Routinen (komplexe Bytecodes) Stack-Register-Satz Hardware-Unterstützung für Garbage Collection 58

Mehrfädiger Prozessor Kann mehr als einen Thread gleichzeitig in der Pipeline verarbeiten Besitzt mehrere Programmzähler und Registersätze Extrem schneller Kontextwechsel Latenzen bei der Ausführung eines Threads können durch Instruktionen aus anderen Threads überbrückt werden Befehl holen Befehl dekodieren Stackadresse berechnen Stack- Zugriff Befehl ausführen, Speicherzugriff Thread-Kennung Thread-Kennung Thread-Kennung Thread-Kennung Thread-Kennung Befehl 5 (aus Thread 4) Befehl 4 (aus Thread 3) Befehl 3 (aus Thread 3) Befehl 2 (aus Thread 2) Befehl 1 (aus Thread 1) 59

Speicherschnittstelle Adressen Daten Adressen Befehle Mikrocode ROM Befehlsholeinheit PC1 PC2 PC3 PC4 IW1 IW2 IW3 IW4 Prioritätenmanager Befehlsdecodiereinheit Operandenholeinheit RS1 RS2 RS3 RS4 Speicherzugriffseinheit Ausführungseinheit Ein-/Ausgabezugriffseinheit Signaleinheit Peripherie- Signale... Adressen Daten Ein-/Ausgabeschnittstelle Mikroarchitektur: Mehrfädig (0 Takte Kontextwechsel) Bis zu 4 Hardware Threads Prioritäten-Manager für Echtzeit-Scheduling (in Hardware) Signaleinheit für externe Komponenten Stackregistersätze 60

2.6.4.2 Echtzeit-Scheduling Erfolgt in Hardware durch den Prioritäten-Manager 2 Ebenen Scheduling: 1. Ebene: ordnet den Threads gemäß Echtzeit- Scheduling Prioritäten zu 2. Ebene: wählt den Thread höchster Priorität, der gerade keine Latenz besitzt => Kombination von Echtzeit-Scheduling und Latenzzeitnutzung 61

Unterstützte Echtzeit-Scheduling Verfahren: Fixed Priority Preemptive (FPP) Earliest Deadline First (EDF) Least Laxity First (LLF) Guarantied Percentage (GP) Das Scheduling wird in Hardware durchgeführt, um eine Entscheidung in einem Taktzyklus zu erlauben 62

Guaranteed Percentage Scheduling weist einem Thread einen garantierten Prozentsatz der Prozessorleistung zu, garantiert dies in einem kurzen Intervall Thread A, 30% Thread B, 20% Thread C, 40%... Thread A 30 Taktzyklen Thread B 20 Taktzyklen Thread C 40 Taktzyklen Thread A 30 Taktzyklen Thread B 20 Taktzyklen Thread C 40 Taktzyklen... 100 Taktzyklen 100 Taktzyklen 63

Klassen: Exakt Minimum Maximum ein Thread erhält genau den geforderten Prozentsatz ein Thread erhält mindestens den geforderten Prozentsatz ein Thread erhält höchstens den geforderten Prozentsatz Die Summe der geforderten Prozentsätze der Klassen Exakt und Minimum darf 100 % nicht überschreiten Der Latenzgewinn über 100% kann von der Klasse Maximum genutzt werden 64

Vorteile von GP: strikte zeitliche Isolation der Threads Garantierte Antwortzeiten und Datenraten für mehrere Threads Einfache Erkennung von Überlast (>100%) Ermöglicht Debug-Threads ohne Veränderung des Echtzeit- Verhaltens Fein-granulare Realisierung auf einem mehrfädigen Prozessorkern 65

2.6.4.3 Unterbrechungsbehandlung Standard Echtzeit-Ereignisbehandlung: Interrupt Service Routinen (ISR) mit festen Prioritäten (FPP) Nicht-optimale Prozessorausnutzung (< 100%) Blockierung niederpriorer Ereignisse Komplexe Programme, schwer zu testen 66

Komodo benutzt Interrupt Service Threads (IST) Ein Ereignis aktiviert direkt einen zugeordneten Hardware-Thread im mehrfädigen Prozessorkern Ereignisse werden durch Java Threads behandelt Die Aktivierung erfolgt per Hardware (der Signaleinheit) Jeder IST wird in einen Thread-Slot des mehrfädigen Prozessorkerns geladen 67

Vorteile: Interrupt Service Threads passen perfekt in das Thread Konzept von Java. Ereignisse lassen sich wie alle anderen Aufgaben einheitlich mittels Java Threads behandeln. Die direkte Aktivierung per Hardware vermeidet Verzögerungszeiten. Alle Threads inklusive der Interrupt Service Threads unterliegen einem einheitlichen, hardwareunterstützten Scheduling. Es können flexible Kontextwechsel zwischen Interrupt Service Threads und anderen Threads stattfinden. Schedulingverfahren wie EDF, LLF oder GP erlauben eine Prozessorauslastung von 100 Prozent 68

Verküpfung von Ereignissen und Threads durch die Signaleinheit Verbindungsmatrix mit Steuer- und Statusregister Steuerregister Statusregister Pweripherie-Signale (Ereignisse) Thread 1 Thread 2 Thread 3 Thread 4 69

2.6.4.4 Anbindung der periphere Komponenten Einfach (kein Forschungsschwerpunkt in diesem Projekt) Daisy Chain Ein-/Ausgabe- Zugriffseinheit Serielle Schnittstelle 1 Serielle Schnittstelle 2 Parallele Schnittstelle Zähler- /Zeitgeber Capture/ Compare Datentransferpuffer Ein-/Ausgabebus: Daten / Adressen / Steuersignale Prozessorkern 70

Datentransferpuffer entlastet den Prozessorkern von der Aufgabe der Datenübertragung da die Zeitbedingungen für die Datenübertragung und Datenverarbeitung meist unterschiedlich sind, müsste anderenfalls ein eigener Thread zur Datenübertragung oder ein Thread mit wechselnden Zeitbedingungen für Übertragung und Verarbeitung eingesetzt werden 71

2.6.4.5 Evaluierungs-Ergebnisse Leistungsgewinn durch den mehrfädigen Ansatz für die Echtzeit- Scheduling Verfahren FPP, EDF, LLF and GP Lastprogramm FFT PID-Regler Impulszähler (ca. 6 Millionen Befehle) (ca. 6000 Befehle) (ca. 10 Befehle) Modelle Einfädig (Standard Prozessor, 100 Takte Kontextwechselzeit) Mehrfädig mit 0 Takte Kontextwechselzeit, aber keiner Latenzzeitnutzung Mehrfädig mit Latenzzeitnutzung 72

Threads mit ähnlichen Deadlines (4 * Impulszähler) : Einfädig Mehrfädig, ohne Latenzzeitnutzung 3,00 Mehrfädig, mit Latenzzeitnutzung 2,50 2,00 Gewinn 1,50 1,00 0,50 0,00 FPP EDF GP LLF 73

Für einfädige Prozessorkerne kein Leistungsunterschied zwischen einfachem FPP und komplexeren EDF. Ursache: einfacher Impulszähler GP und LLF fallen hier ab. Ursache: häufige Kontextwechsel Mehrfädiger Prozessorkern ohne Latenzzeitnutzung eliminiert diesen Nachteil. Leistungssteigerung um Faktor 1,45 Mehrfädigen Prozessorkern mit Latenzzeitnutzung steigert den Gewinn. GP und LLF effizienter als FPP und EDF. Ursache: Anzahl aktiv-bleibender Threads. 74

T1 T2 Kontextwechsel d1 d2 d3 Deadlines T1 T2 Kontextwechsel d1 d2 d3 Deadlines T3 d4 T3 d4 T4 T4 4 3 2 1 Anzahl aktive Threads 4 3 2 1 Anzahl aktive Threads a: FPP und EDF Scheduling b: GP und LLF Scheduling 75

Threads mit verschiedenen Deadlines : Einfädig Mehrfädig, ohne Latenzzeitnutzung 3,00 Mehrfädig, mit Latenzzeitnutzung 2,50 2,00 Gewinn 1,50 1,00 0,50 0,00 FPP EDF GP LLF 76

Für den einfädigen Prozessorkern bestätigt sich zunächst das Ergebnis der ersten Evaluation: GP und LLF schneiden schlecht ab Durch die komplexere Last: Unterschiede zwischen dem einfachen FPP und dem leistungsfähigeren EDF Dies gilt auch für den mehrfädigen Prozessorkern ohne Latenzzeitnutzung. GP fällt durch die schwierige Wahl geeigneter Prozentsätze ab. Beim mehrfädigen Prozessorkern mit Latenzzeitnutzung liefert wie bei der ersten Evaluierung LLF hervorragende Ergebnisse. Auch GP kann die Latenzen sehr gut verwerten, verliert aber durch die oben genannten Probleme 77

2.6.4.6 Weiterführende Konzepte Problem: Pipeline-Hemmnisse oder Locks verringern den Durchsatz, zeitliche Vorhersagbarkeit (Echtzeit) wird erschwert Durchsatz = Anzahl Befehle / Anzahl Taktzyklen (IPC, Instructions per Cycle) Beispiel Komodo, GP-Scheduling, Klasse Exakt, GP = 30% idealerweise IPC = 30 / 100 = 0,3 treten jedoch z.b. 5 Latenzzyklen auf IPC = 25 / 100 = 0,25 78

Abhilfe: Einsatz eines geschlossenen Regelkreises Sollwert - Stellwert PID- Regler Neuer GP-Prozentsatz Komodo- Prozessorkern Istwert Messung des Durchsatze s Regelung des Durchsatzes mittels eines PID-Reglers 79

Modifizierte Komodo- Pipeline Adressen Befehle Befehlsholeeinheit PC1 PC2 PC3 PC4 Peripherie- Signale Speicherschnittstelle PID- Regler Mikrocode ROM IW1 IW2 IW3 IW4 Prioritätenmanager Befehlsdecodiereinheit Operandenholeeinheit Signaleinheit... Ein-/Ausgabeschnittstelle Adressen Daten Speicherzugriffseinheit Ausführungseinheit Ein-/Ausgabezugriffseinheit Adressen Daten RS1 RS2 RS3 RS4 Stack-Registersätze 80

Durchsatz eines Erzeuger- Threads in einem Erzeuger/ Verbraucher- Benchmark GP = 0,49 keine Regelung 81

Durchsatz eines Erzeuger- Threads in einem Erzeuger/ Verbraucher- Benchmark GP = 0,49 PID- Regler 82

Verbleibendes Problem: Kurzfristige Änderungen der IPC-Rate können nicht kompensiert werden, da der Regler nicht in die Zukunft blicken kann Idee: Vorhersage der Latenzen für das nächste 100 Taktzyklen- Intervall Verbesserung des Regelverhaltens Vorgehensweise: Aufteilung des Programms in Basic Blocks (von Sprung zu Sprung) Lineare Analyse vor Programmstart Sprungvorhersage für bedingte Sprünge am Blockende 83

Programmzähler zu Beginn des Intervalls Latenzzähler = 0 2 Latenzen Latenzzähler = 2 Sprungbefehl Sprungvorhersage: Sprung genommen 3 Latenzen Latenzzähler = 5 Sprungbefehl Sprungvorhersage: Sprung genommen 3 Latenzen Latenzzähler = 8... 84

Durchsatz eines Erzeuger- Threads in einem Erzeuger/ Verbraucher- Benchmark GP = 0,49 PID- Regler + Latenz-Prädiktor 85