Bedeutung:
Normalerweise wird die Berechnung von Sensorerfassung und Steuerung getrennt
Smarte Materialien stellen die enge Verbindung zwischen
Algorithmische Skalierung und Verteilung sind erforderlich
Mooresches Gesetz sagte starke Miniaturisierung voraus
Jedoch die Informatik und deren Methoden konnten nicht immer folgen → Lücke zwischen Hardware und Software
Eine normalisierte Recheneffizienz eines Computers (nur unter Berücksichtigung der Datenverarbeitungseinheit) kann definiert werden durch:
Chipfläche in mm2
Rechenleistung in Mega Instructions per Second (MIPS) - oder besser in Kilo Dhrystones/s (KDS)!
Elektrische Leistungsaufnahme in W
Die Recheneffizienz kann verwendet werden, um verschiedene Computer und Geräte zu vergleichen, d.h. einen Skalierungsfaktor anzugeben:
Gesamter Speicher in Mega Bytes (MB), beinhaltet RAM, ROM, Register
Gesamte Kommunikationsfähigkeit als Datendurchsatz (Mega Bit/s)!
Einfachste Maßzahl ist die Anzahl der Integer- oder Fliesskommaoperationen pro Zeiteinheit (MIPS/FLOPS)
Ein Programm besteht i.A. aus den folgenden High-level Operationen:
⇒ Dhrystone Benchmark umfasst alle oben genannten Operationen!
Mache eigene Messungen mit dem dhrstone benchmark Test auf verschiedenen Rechnern und Virtuellen Maschinen.
Stelle eine Tabelle zusammen mit gängigen Computern (mobil, Desktop, Server, eingebettete Rechner, Nanorechner) mit den Daten MIPS/DPS, Speicher, Kommunikation (abgeschätzt) sowie Chip Fläche und el. Leistungsbedarf
Berechne die verschiedenen ε Parameter und vergleiche …
Existierende “Nano”-Computer:
Micro Mote M3
| ELM System
|
Existierende Kleinstrechner für Sensornetzwerke mit Drahtloskommunikation (WLAN, Bluetooth)
Raspberry PI Zero
| ESP8266
|
Micro Mote (M3 ) | ELM System | Atmel Tiny 20 | Freescale KL03 | ARM Cortex Smart Phone | |
Processor | Arm Cortex M0 | C8051F990 (SL) | AVR | Arm Cotex M0+ | Arm Cortex A9 |
Clock | 740kHz max. | 32kHz | - | 48MHz | 1GHz |
CPU Chip Area | 0.1mm2 | 9mm2 | 1mm2 | 4mm2 | 7mm2/ROM |
Sensors | Temperature | - | - | - | Temp, Light, Sound, Accel., Press., Magn. |
Communication | 900MHz radio, optical | optical | electrical | - | 3G/4G, WLAN, USB, Bluetooth, NFC |
Harvester, Battery | Solar cell, Thin film | Solar cell, Coin | - | - | - |
Power Consumption | 70mW / CPU | 160mW / CPU | 20mW | 3mW @ 48MHz | 100mW avg., |
Manufacturing | 180nm CMOS | - | - | - | 40nm CMOS |
Package | Wire bonded | Silicon Stack | PCB | Single Chip | Single Chip |
Computing Eff. εC | 150 | 0.02 | 0.6 | 4.0 | 0.53 |
Von großen Computern zu großen Netzwerken …
Rechner und Mikroprozessoren unterscheiden sich u.A. durch die Art und Weise der Maschinenbefehlsausführung
Man unterscheidet: Reduced Instruction Set Computer (RISC) und Complex Instruction Set Computer (CISC)
Es gibt Maschinenbefehle mit einer unterschiedlicher Anzahl von Operanden (0,1,2,3,..)
Neben register- und speicherbasierten Rechnern gibt es reine stackbasierte Rechner (Nulloperandenbefehle)
Die Programmierung eingebetteter Systeme stellt aufgrund folgender Randbedingung eine Herausforderung dar:
Geringe Rechnenleistung pro Netzknoten
Geringe Speicherkapazität von Daten
Bei energieautarken Systemen gibt es eingeschränkte Laufzeit
Geringe Kommunikationsleistung
Fehleranfälligkeit
Schlechte Wartbarkeit (Softwareupdates usw.)
Eingeschränkte Möglichkeiten der Fehlersuche
Assembler → Maximale Performanz, minimalste Zuverlässigkeit/Korrektheit (Fehler), minimalster Speicherbedarf, kein automatisches Speichermanagement
C/C++ → Sehr gute Performanz, geringer Speicherbedarf, und mittlere Zuverlässigkeit/Korrektheit (Fehler), kein oder minimales automatisches Speichermanagement → Prozedurale Programmierung
JAVA → Mittlere Performanz, hoher Speicherbedarf, gute Zuverlässigkeit/Korrekheit (Fehler), automatisches Speichermanagement → Objektorientierte Programmierung
Skriptsprachen → Unterschiedliche Performanz, wird durch Interpreter bestimmt, automatisches Speichermanagement
Performanz und Speicherbedarf bei Skriptsprachen hängen vom Interpreter ab!
Bytecode. Der Bytecode ist eine Sammlung von Befehlen für eine virtuelle Maschine.
Reine Bytecode Interpreter haben geringe oder mittlere Performanz bei niedrigen Speicherbedarf
Ein JIT Compiler übersetzt häufig vorkommende Bytecode Abschnitte zur Ausführungszeit in nativen Maschinencode
Vorteile von Skriptsprachen gegenüber kompilierten Programmen: Schneller Test, ausführliche und genaue Rückmeldung vom Interpreter bei Fehlern, bessere Laufzeitüberwachung von Fehlern, …
Daher ist eine zweistufige Architektur sinnvoll:
Virtualisierung durch die VM von:
Warum nicht JAVA?
[http://doc.gold.ac.uk]
[Python]
[Peter Cawley]
[King Fahd University of Petroleum and Minerals]
Überlegen Sie sich die Vor- und Nachteile von
Was sind die Bewertungskriterien?
Welche Ausführungsarchitekturen könnten für Eingebettete Systeme geeignet sein?
[B]
Dhrystone Benchmark (Kombination aus Berechnung, Objekten, Arrays, Strings, Funktionen)
VM/OS-ARCH | Linux-i686 | Linux-armv6l (PI-3) | Linux-armv6l (PI Zero) |
python2.7 | 105k/s | 10k/s | 4k/s |
lua 5.1 | 140k/s | - | - |
luajit 2.0.5X | 660k/s | 71k/s | 40k/s |
jerryscript 1.1.7X | 45k/s | - | - |
nodejs 4 | 6300k/s | 350k/s | 40k/s |
C/gcc | ? | ? | ? |
Dhrystone Benchmark (Kombination aus Berechnung, Objekten, Arrays, Strings, Funktionen)
VM/OS-ARCH | Linux-i686 | Linux-armv6l (PI-3) | Linux-armv6l (PI Zero) |
python2.7 | - | - | - |
lua 5.1 | - | - | - |
luajit 2.0.5X | 2MB | - | - |
jerryscript 1.1.7X | 2MB | ||
nodejs 4 | 24MB | - | - |
C/gcc | ? | ? | ? |
In C/C++ muss für jedes zur Laufzeit dynamisch erzeugte Datenobjekt (Array, String, Record, ..) immer explizit Speicherplatz im Hauptspeicher angefragt werden (malloc
) und wieder frei gegeben werden wenn das Datenobjket nicht mehr benötigt wird (free
)
In Skriptsprachen gibt es i.A. ein automatisches Speichermanagement mit einem sog. Garbage Collector und Objektreferenzierung
Jedes Datenobjekt welches verwendet wird (z.B. in Variablen oder Funktionen) besitzt eine Referenz
Es muss eine Wurzeltabelle geben von der aus alle Referenzen auf verwendete Objekte auffindbar sind
Beispiel 1. (Beispiel von Objektreferenzierungen in Lua: Wo existieren Referenzen?)