Mikrocontroller
Mikrocontroller: Schalenmodell (壳层模型)
Kosten spielen meist die dominante Rolle
- einfacher als der Kern eines Mikroprozessors
Mikrocontroller: Prozessorkern - Varianten
Verwendung älterer Kerne von Mikroprozessoren 使用旧核
Leistungsvermögen meist ausreichend 性能足够
Modifikationen:
- Stromsparmodus
- kein Cache
- keine virtuelle Speicherverwaltung
→ Reduktion des Stromverbrauchs, Verbesserung des Echtzeitverhaltens
Mikrocontroller: Peripherie
Mikrocontroller: Speicher
Mikrocontroller: I/O Module
Analog/Digital Converter (ADC)
Verwandelt analoge Signale in digitale Datenströme
Amplitude eines kontinuierlichen analogen Signals wird zu bestimmten Zeitpunkten gesampelt und das Ergebnis in einem Register abgelegt.
Spannungsbereich und Auflösung hängen vom Controller ab
Pulsweitenmodulation (PWM)
- Wird zur Intensitätssteuerung von Aktoren verwendet
- Änderung des On-/Off-Verhältnisses innerhalb eines festen Zyklus (duty cycle) steuert Intensität
- Beispiele:
- Änderung des duty cycle ändert Geschwindigkeit von Motoren
- Änderung des duty cycle ändert Helligkeit von LEDs
Mikrocontroller: Zähler und Zeitgeber
Anwendung:
- Zählen von Ereignissen, Messen von Zeiten kommen mit einem Zähler bzw. Zeitgeber aus
- Pulsweitenmodulation, Frequenz- oder Drehzahlmessung, Schrittmotorsteuerungen benötigen mehrere Einheiten
Mikrocontroller: Watchdog
Watchdog zur Überwachung der Programmaktivitäten eines Mikrocontrollers 用于监视微控制器的程序活动
Programm muss in regelmäßigen Abständen Lebenszeichen liefern 定期发送正常的信息
- Bleiben diese aus, so nimmt Watchdog einen Fehler im Programmablauf an => Reset 否则会重置
Mikrocontroller: Anwendungen
Steuerungsdominante Anwendungen
- kontrollfluss-dominanter Code 控制流主导代码
- viele Verzweigungen und Sprünge
- weniger komplexe arithmetische Operationen
- geringer Datendurchsatz
- Multitasking ≅ schnelle Kontextwechsel
Mikrocontroller: Low-Cost
- Systeme mit 4/8/16-Bit Prozessoren
- Codegröße dominiert die Chipfläche und damit die Kosten 代码量会对芯片面积和功耗影响较大
- Performanzanforderungen oftmals gering 性能要求很少
- optimiert auf bestimmte Anwendungsgebiete 针对特定领域优化
- Industriesteuerungen, Regelungstechnik, Bedienschnittstellen, …
Q&A
Was ist ein Mikrocontroller?
Mikrocontroller ist ein spezieller Mikrorechner, die einen Prozessor und zugleich auch Peripheriefunktionen enthalten.
Gib Beispiele für 8/16/32/64 bit Mikrocontroller
8-Bit, Intel-8051(MCS51)
16-Bit, MSP430
32-Bit, ARM
Warum ist der 8051 ein 8 bit Mikrocontroller?
kann gleichzeitig 8 Bit Daten verarbeiten
Was ist der Unterschied zwischen einem Mikroprozessor und einem Mikrocontroller?
- einfacher als der Kern eines Mikroprozessors
- Kosten spielen meist die dominante Rolle
Digitale Signalprozessoren (DSPs)
Architektur spezialisiert auf digitale Signalverarbeitung
DSP: Signalverarbeitungs-Anwendungen
- Datenfluß-dominanter Code
- viele arithmetische Operationen
- wenig Sprünge und Verzweigungen
- oftmals große Parallelisierung möglich
- sehr große Datenmengen, hoher Datendurchsat
DSP: Datenpfad- / Architektur Optimierung
Harvard-Architektur, Mehrfachzugriffe auf Operanden
- MAC-Instruktion: Zugriff auf Instruktion und zwei Operanden in einem Zyklus 在一个周期内访问指令和两个操作数
- Speicherarchitektur mit Mehrfachzugriff notwendig
- Architektur muss für Instruktionen und Daten getrennte Busse haben
- Harvard-Architektur: mehrere Datenbusse für mehrfachen Operandenzugriff
- Erste DSPs: getrennte externe Busse für Instruktionen und Daten.
- Moderne DSPs: nur interne Harvard-Architektur, aber extern oft zwei identische Speicherschnittstellen, über die gleichzeitig auf verschiedene Off- Chip Speicherbausteine zugegriffen wird (heute oft auch On-Chip!). 仅是内部哈佛架构,但在外部通常是两个相同的存储器接口,通过它们可以同时访问不同的片外存储器模块
Parallel-Instruktionen (MAC - Multiply & Accumulate)
- MAC-Operation ist oft benötigte Operatorverkettung
d.h., in einem Befehlszyklus werden 2 Operanden multipliziert und das Resultat in einem Register akkumuliert - Multiplikationsdatenpfad optimiert in Hardware realisiert
DSP 首次具有乘法器,可用于浮点运算
Zero-Overhead Schleifen
- Schleifen mit bekannter Anzahl von Durchläufen enthalten speziellen Zähler 循环内包含计数器,与0比较
- DSPs besitzen hierzu Spezial-Register zur Hardwareunterstützung
- mit Anfangs- und End-Adresse der Schleife sowie dem Zähler geladen 加载了循环的开始和结束地址以及计数器
- Während Schleifendurchlauf: Zähler wird parallel dekrementiert und die Adresse der entsprechenden Instruktion (Zurückspringen oder nicht!) gesetzt 在循环运行期间:计数器并行减少,并设置相应指令的地址(是否跳转!)
- keine Takte für die Schleifensteuerung notwendig
spezielle DSP-Adressierungsarten (circular, bit-revers)
- Adressgeneratoren arbeiten parallel zur eigentlichen Instruktionsabarbeitung 地址生成器与指令的实际处理并行工作
- Einsparung von Prozessorzyklen für die Adressberechnung
DSP: Multiply and Accumulate
DSP: Wichtige Eigenschaften
- Eingeschränkte Parallelität 有限的并行性, Viele DSPs haben nur 1-2 MAC-Einheiten
Heterogene Register 异构寄存器
- mehrere verschiedene Registersätze (Zugriff nur durch spezielle Funktionseinheiten)
- Standardprozessoren verwenden dagegen meist nur einen General-PurposeRegistersatz
Echtzeitfähigkeit
- Oft ist Angabe der maximalen Laufzeit (nicht das Mittel) wichtig. 通常,指定最大持续时间(而不是平均值)很重要。
- mehr Rechenleistung pro Watt als bei Standardprozessoren 每瓦的计算能力比标准处理器高
=> wichtig bei portablen Geräten
DSP: Zahlenformate
Mantisse bestimmt die Genauigkeit
Exponent bestimmt die Dynamik
Fixed Point (FX)
- gleiche Mantissenbreite: kleiner (billiger) + schneller als Floating-Point 相同的尾数宽度: 比浮点更小+更快
- Entwurf von manchen Anwendungen durch Rundungs- und Skalierungsprobleme erschwert 由于四舍五入和缩放问题,一些应用程序的设计很困难
Floating Point (FP)
- Große Dynamik des Zahlenbereiches
- einfacherer Entwurf von Anwendungen
- Aber: teure Hardware (komplex, große Fläche)
DSP: Arithmetik / Genauigkeit
Blocked Floating-Point: einzelner Exponent für Gruppe von Zahlen
- Exponent wird in extra Variable gespeichert
- Nach Operation müssen die Ergebnisse entsprechend diesem Exponenten durch Schiebeoperationen wieder angepasst werden
DSPs stammen eigentlich von analogen Signalprozessoren (ASP)
Begrenzung bei Arithmetiküberläufen: Sättigungs-Arithmetik 算术溢出的局限性:饱和算术
DSP: Programmentwicklung
Assembler, Compiler
- bisher nur in Assembler nutzbar 以前只能用汇编
- Programmierung in C 现在可以使用C语言
Codegeneratoren
- Spezielle Entwicklungsumgebungen
- Modellierung, Simulation + Codegenerierung
- Beispiele: Matlab, Synopsys COSSAP, SPW
OpenMP Einführung
API zur Programmierung von Multiprozessor-Systemen mit Shared Memory
Bestehend aus Compilerdirektiven, Bibliotheksfunktionen und Umgebungsvariablen
- Parallelisierung auf Thread- bzw. Schleifenebene
- Programmablauf nach fork/join-Modell:
BSP. data parallelism
Vorteile:
- Erweiterung der C-Programmierbarkeit
- Beschleunigter Softwareentwurf
- Hohe Portierbarkeit, da standardisiert und plattformunabhängig 高可移植性,因为它是标准化的且与平台无关
- Wachsende Zahl an unterstützenden Compilern Threadhandling läuft automatisch ab 越来越多的支持编译器线程处理自动运行
Nachteile:
- Datenabhängigkeiten werden nicht erkannt
- Synchronisation der Threads nötig
Q&A
Was ist ein digitaler Signalprozessor?
Architektur spezialisiert auf digitale Signalverarbeitung
Was ist der Unterschied zwischen einem Mikroprozessor und einem digitalen Signalprozessor?
Architektur spezialisiert auf digitale Signalverarbeitung
Wie werden DSPs heute programmiert?
Programmierung in C
Wie kann Parallelität realisiert werden?
openMP verwenden
Grafik Prozessoren (GPU)
Was ist eine GPU?
GPU ist Heterogener Chip Multi-Prozessor, spezial für Grafikanwendungen
CPU-style Kerne
Einfacher Prozessorkern
Wie viele Fragmente sollen sich einen Instruktionsstrom teilen?
- Idee: Amortisieren von Kosten/Komplexität bei der Verwaltung von Instruktionsströmen zwischen vielen ALUs 摊销许多ALU之间的指令流的成本/复杂性
Hinzufügen von ALUs ➔ SIMD
- Neu kompilierter Shader sollte auf Anzahl der im Shader Core vorhandenen ALUs angepasst sein
- Hier: 8 parallele Fragmente für 8 ALUs
SIMD Prozessierung
- SIMD Prozessierung impliziert nicht SIMD Instruktionen SIMD处理并不意味着SIMD指令
- Option 1: Explizite Vektor Instruktionen
- Option 2: Skalare Instruktionen, implizite Hardware Vektorisierung
- Hardware entscheidet Verteilung der Instruktionsströme auf ALUs
- Realität: 16 bis 64 Fragmente teilen sich einen Instruktionsstrom
Stalls und Interleaved Processing
- Stalls kommen vor, wenn ein Kern aufgrund einer Abhängigkeit
- Aber wir haben eine Menge unabhängiger Fragmente
- Idee #3:
Die Ausführung vielr Fragmente verschachteln um stalls durch Operationen mit hoher Latenz zu vermeiden.
- Idee #3:
Durchsatz
Q&A
Was ist eine GPU?
GPU ist Heterogener Chip Multi-Prozessor, spezial für Grafikanwendungen
Was ist ein Shader Core?
Shader sind Hardware- oder Software-Module, die bestimmte Rendering-Effekte bei der 3D-Computergrafik implementieren.
Wieso gibts es mehrere ALUs pro Kern?
Amortisieren von Kosten/Komplexität
Wie kann der Durchsatz erhöht werden?
Increase run time of one group
Wie kann hoher Durchsatz bei geringer Leistungsaufnahme erreicht werden? 如何以低功耗实现高吞吐量?
Wieso kann eine Vielfache Beschleunigung gegenüber GPProzessoren erreicht werden? 与GPP相比,为什么可以实现多重加速?