34
Hardware/Software-Codesign Kapitel 1 - Einführung M. Schölzel

Hardware/Software-Codesign - Universität Potsdam · Entwicklungsgeschichte Mainframes / Großrechner . Erster Mikroprozessor . Intel 4004 . Job . User . User . Ergebnis . Physisches

Embed Size (px)

Citation preview

Hardware/Software-Codesign

Kapitel 1 - Einführung

M. Schölzel

Entwicklungsgeschichte

Mainframes / Großrechner

Erster Mikroprozessor Intel 4004

Job User Ergebnis User

Physisches System

Aktuatoren Sensoren

Prozessrechner

Großrechner

Desktops

Eingebettete Systeme

1950 1960 1970 1980 1990 2000 2010

Zuve

rläss

igke

it ni

mm

t zu

Logik auf einem Chip integriert

Finden Eingang in viele Bereiche…

Beispiel für diesen Trend

3

• Rührwerk • 1 Schalter • Drehzahl über Getriebe wählbar • Kaum elektronische Bauteile

• Rührwerk, Waage, Heizplatte, Uhr • 15 Schalter/Knöpfe (teilweise Mehrfachbelegung) • 18 LEDs • Digitalanzeige • Platine mit Prozessor

Komet Küchenmaschine anno 1958 Küchenmaschine anno 2010

Eingebettete Elektronik ist Überall

Mikrocontroller Mikroprozessor Mehrkernprozessor

80 bis 100 Prozessoren Fensterhebermotor Regelung durch Mikroprozessor

Schematische Darstellung Eingebettetes System

Systemumgebung

Eingebettetes System

Speicher ASIC Standard-

komponente

Prozessor Prozessor

Kopplung

Kopplung Prozessrechner mit physischem System

Analoge Signale sind kontinuierlich in der Zeit und den Werten Digitale Signale sind diskret in der Zeit und den Werten Mit zunehmender Integrationsdichte wurden digitale

Verarbeitungssysteme immer kleiner (Schrankgröße -> Stecknadelkopfgröße)

Damit zunehmende Verbreitung der eingebetteten Systeme

Cyber-System*

Physical-System*

Digitales Verarbeitungssystem

Analog-Digital-Wandler

Digital-Analog-Wandler

Digitale Signale

Analoge Signale

Regelstrecke Sensoren Aktoren

Digitale Signale

Analoge Signale

*Lee, Edward. Cyber Physical Systems: Design Challenges. University of California, Berkeley Technical Report No. UCB/EECS-2008-8.

Testen elektronischer Komponenten Testen mechanischer Komponenten

Gesamtsystem

Entwurfsprozesses für Cyber-Physical-System

Gesamtsystems

Entwurf mechanischer Komponenten

Entwurf elektronischer Komponenten

Formales Modell der mechanischen Komponenten

Formales Modell der elektronischen Komponenten

Motivation für HW/SW-Codesign

Gründe für Implementierung in Software: Entwurfszeit Flexibilität Entwicklungskosten Gründe für Implementierung in Hardware: Verarbeitungsgeschwindigkeit Stromverbrauch Platzverbrauch (Fertigungskosten)

… Application Specific Circuit (ASIC) Standardprozessor + Software

Freiheitsgrade beim Entwurf elektronischer Komponenten

Verarbeitungsgeschwindigkeit

• Auf das Problem zugeschnittene Hardwarearchitektur und Technologie

• Spezialhardware möglich

• Programmgesteuerte Universalarchitektur verbraucht Zeit für Programmverarbeitung

• Alle erforderlichen Operationen müssen mit dem vorhandenen Befehlssatz umgesetzt werden

hoch

niedrig

Umsetzung als ASIC Umsetzung mit Standardprozessor und Software

Transistoranzahl und Performance

Verarbeitungsleistung stieg ebenfalls exponentiell an. Übertragen auf einen Rolls-Royce aus den 70ern würde das bedeuten: Preis: 40 $ 3,8 Liter Benzin reichen für 8

Weltumrundungen Höchstgeschwindigkeit ca. 4,5 Millionen

Stundenkilometer

Entwurfszeit

hoch

niedrig

• Oft vollständiger Neuentwurf erforderlich.

• Korrektur von Entwurfsfehlern kostet viel Zeit.

• Niedriges Abstraktionsniveau

• Neuentwurf erforderlich, aber Programmiersprachen stellen oft schon zahlreiche Bibliotheken mit vorgefertigter Funktionalität bereit.

• Höheres Abstraktionsniveau als in Hardwarebeschrei-bungssprachen

Umsetzung als ASIC Umsetzung mit Standardprozessor und Software

Entwicklungskosten

hoch

niedrig

• Korreliert mit Entwurfszeit

• Korreliert mit Entwurfszeit

Umsetzung als ASIC Umsetzung mit Standardprozessor und Software

Flexibilität

hoch

niedrig

• Einmal gefertigt nicht mehr änderbar

• Auch nach der Fertigung noch Änderungen an der Software möglich

Umsetzung als ASIC Umsetzung mit Standardprozessor und Software

Platz-/Stromverbrauch

hoch

niedrig

• Auf das Problem zugeschnittene Hardwarearchitektur und Technologie

• Spezialisierte Hardware -komponenten

• Programmgesteuerte Universalarchitektur verbraucht Platz und Strom für Programmverarbeitung

• Längere Verarbeitungszeit • Überflüssige Hardware

Umsetzung als ASIC Umsetzung mit Standardprozessor und Software

Gesamtkosten pro Stück

hoch

niedrig

• Bei geringer Stückzahl • Bei hoher Stückzahl

Umsetzung als ASIC Umsetzung mit Standardprozessor und Software

• Bei hoher Stückzahl • Bei geringer Stückzahl

Beispiel: Fixkosten: 2.100.000€ Herstellungskosten pro Stück 2,50€

Fixkosten: 750.000€ Kaufpreis pro Stück: 3,00€ 2.100.000 2,5 750.000 3

1.350.000 (3 2,5)

2.700.000

x x

x

x

Beispiel Fertigungskosten

Technology Gates / mm² (KU) costs per million gates ($)

90 nm 637 0,0401

65 nm 1109 0,0282

40 nm 2130 0,0194

28 nm 3948 0,0140

20 nm 6992 0,0142

16 nm 12391 0,0162 Quelle: http://electroiq.com/wp-content/uploads/2014/03/4.png

Schlussfolgerung

Gesucht ist eine Lösung, die die Gesamtkosten minimiert und dabei alle Randbedingungen (Verarbeitungszeit, Entwicklungszeit, Platz-/Stromverbrauch,…) einhält.

Durch eine Softwarerealisierung können die Entwicklungskosten und –zeiten gering gehalten werden.

Anforderungen bzgl. Verarbeitungsgeschwindigkeit, Platz-/Stromverbrauch werden dann aber evtl. nicht eingehalten.

Hardware-/Software Codesign dient dem Finden einer Systemimplementierung, zwischen diesen beiden Extremen.

Was ist HW/SW-Codesign?

Hardware/software co-design means meeting system-level objectives by exploiting the synergism of hardware and software through their

concurrent design. DeMicheli

Hardware/software co-design means meeting system-level objectives by exploiting the synergism of hardware and software through their

concurrent design. Software-hardware co-design is an important approach to ensure an efficient final implementation of the product.

Wikipedia

Co-Design is a simultaneous consideration of hardware and software within the design process.

Lockheed Martin

Aspekte des HW/SW Codesign: Partitionierung

Informale Spezifikation (Beschreibung der Funktionalität)

Formale Spezifikation

HW SW

F1 F2

F3

F4 F5

F6

HW SW

F1

F2

F4 F5

F6 F3

HW SW

F1 F2

F3

F4

F5

F6

Betrachtung unterschiedlicher HW/SW Partitionierungen für die Funktionen Fi im System.

Variante 1 Variante 2 Variante k

Aspekte des HW/SW Codesign: High-Level-Synthese

Abbilden der Funktionalität, die in Form einer Hochsprachenbeschreibung (Programmiersprache, Graphmodell) gegeben sind auf eine Hardwareimplementierung (Struktur)

Dabei Optimierung der Hardware für die geforderte Funktionalität

HW SW

F1 F2

F3

F4 F5

F6

HW SW

F1

F2

F4 F5

F6 F3

HW SW

F1 F2

F3

F4

F5

F6

Variante 1 Variante 2 Variante k

K1 K1 K2

K3

K1 K2

K3 K4

K5

Aspekte des HW/SW Codesign: HW für SW optimieren

Software fest vorgegeben: Optimierung der Hardware durch Auswahl geeigneter Prozessoren für die Softwarefunktionalität. Möglichkeiten: Verwendung von Standardprozessoren Verwendung Domain-spezifischer Prozessoren (z.B. Digitale Signalprozessoren, Mikrocontroller) Verwendung von ASIPs (Application Sepcific Instruction Set Processors); Ableiten des Befehlssatzes des

Prozessors aus der Anwendung erforderlich …

HW SW

F1 F2

F3

F4 F5

F6

HW SW

F1

F2

F4 F5

F6 F3

HW SW

F1 F2

F3

F4

F5

F6

Variante 1 Variante 2 Variante k

P1 P2

P2 P1

K1 K1 K2

K3

K1 K2

K3 K4

K5

Aspekte des HW/SW Codesign: SW für HW optimieren

Hardware fest vorgegeben: Optimierung der Software bei der Softwaresynthese oder Auswahl eines geeigneten Algorithmus aus einem ganzen Spektrum von Algorithmen, der besonders gut auf vorliegender HW abgearbeitet werden kann. Softwaresynthese: Abbilden der in Software implementierten Funktionen auf den Zielprozessor Programm muss für Zielarchitektur optimiert werden Für jede Zielarchitektur wird ein spezifischer optimierender Compiler benötigt: Anpassung der Hardware zur Unterstützung bestimmter Optimierungstechniken in Compilern Anpassung des Compilers zur Unterstützung bestimmter Optimierungen für die Zielarchitektur

HW SW

F1 F2

F3

F4 F5

F6

HW SW

F1

F2

F4 F5

F6 F3

HW SW

F1 F2

F3

F4

F5

F6

Variante 1 Variante 2 Variante k

P1 P2

P2 P1

K1 K1 K2

K3

K1 K2

K3 K4

K5

Problematik des Systementwurfs

Höhere Integrationsdichte erlaubt Fertigung immer komplexerer Systeme: System on Chips (SoC) Multi-Processor Systems on Chip (MPSoC) Design-Gap: Entwicklung geeigneter Entwurfswerkzeuge hält mit Systemkomplexität, die gefertigt werden kann, nicht Schritt Eine Lösungsstrategie: Abstraktion

Design-Gap

Komplexität Hardware

Beherrschbare Komplexität mit Entwurfswerkzeugen

Jahr

Kom

plex

ität

Systematisierung Systementwurf

Abstraktion Granularität der Modellierung: Systemebene (Prozessoren, Speicher, Busse, …) Architektureben (Register, ALU, …) Logikebene (Gatter, Flip-Flops, …) Schalterebene Verfeinerung ( ) ist die Verringerung der

Abstraktion

Sichten Beschreiben unterschiedliche Modellierungsarten: Verhalten Struktur (Physische Sicht)

Synthese ( ) ist die Überführung von Verhalten in Struktur bzw. Struktur in

Physische Sicht

Verhalten Struktur

Physisch

Schalter

Logik

Prozessor

System

Abstraktionen / Ebenen nach Gajski (Y-Chart)

Typische Modelle im Entwurfsablauf

Verhalten Struktur

Physisch

Schalter

Logik

Prozessor

System

Programmiersprachen, CFG, DAGs zur Modellierung

sequentiellen Verhaltens

ALUs, Register, Multiplizierer, …

Gatter (NAND, NOR), Flip-Flops

Zustandsautomaten zur Modellierung sequentieller Logik,

Aussagenlogische Formeln, Wahrheitswertetabellen zur

Modellierung Boolescher Funktionen

Prozessoren, ASICs, Speicher, Busse, …

Prozessbasierte Modelle (Kommunizierende Prozesse, DFGs), Zustandsbasierte Systeme

(Petrinetze, State Charts)

Spannungs-/Stromgleichungen

Transistoren, Netzlisten

Transistorlayout

Gatterlayout

Layout der Module

Physische Aufteilung des Chips

Einbeziehung der Software Bl

ock

Mod

ul Sy

stem

Arch

itekt

ur

Logi

k Software Hardware

Abstraktionen / Ebenen nach J. Teich (Doppeldach)

Verhalten Struktur

Physisch

Schalter

Logik

Prozessor

System

Abstraktionen / Ebenen nach Gajski (Y-Chart)

Typische Modelle

Bloc

k

Mod

ul Sy

stem

Arch

itekt

ur

Logi

k

Software Hardware

Abstraktionen / Ebenen nach J. Teich

Prozessbasierte Modelle (Kommunizierende Prozesse, DFGs)

Zustandsbasierte Modelle (Petrinetze, State Charts) Prozessoren, ASICs, ASIPs, Busse, Speicher,…

Algebraische Spezifikation

Imperatives Programm

Graph-basierte Modelle, DAGs, CFG, 3-Address-Code

Assembler-/Maschinenprogramm

Programmiersprachen, Hardwarebeschreibungssprachen,

DAGs, …

ALUs, Register, Multiplexer,…

Boolesche Funktionen, Zustandsautomaten,…

Gatter, Flip-Flops, …

Typischer Entwurfsablauf

Systemspezifikation

Validierung

HW/SW-Partitionierung

Hardwaresynthese

Hardwareentwurf

Validierung

Softwaresynthese

Softwareentwurf

Validierung

Validierung

Fertig

Typischer Ablauf der High-Level-Synthese

Eingabe der Spezifikation

Berechnung einer Allokation, Ablaufplanung

und Bindung

Ausgabe des Datenpfads Ausgabe des Kontrollpfads

Prozessorsynthese (1)

Aufgabe: Fensterhebermotor bauen

Software entwerfen

Prozessor entwerfen

Fertig!

Mechanische Komponenten entwerfen

Elektronische Komponenten entwerfen

Software ist in der Regel zuerst da!

Prozessor muss zur Software passen!

CoM

et

Prozessorsynthese (2)

Übersetzungswerkzeuge

Spezifikation des Prozessormodells

Assembler

Compiler

Anpassung des

Simulators Binärcode der

Anwen - dung

Software Ergebnisse

des Profilings

Typischer Ablauf der Software-Synthese

Eingabe des Hochsprachenprogramms

Berechnung einer Ablaufplanung,

Zielcodeauswahl und Registerallokation

Ausgabe des Binärcodes

Was soll behandelt werden in der VL?

Systemspezifikation

Validierung

HW/SW-Partitionierung

Hardwaresynthese

Hardwareentwurf

Validierung

Softwaresynthese

Softwareentwurf

Validierung

Validierung

Fertig

Modellierungs-möglichkeiten für

eingebettete Systeme

Implementierungsvarianten für eingebettete Systeme: ASICs,

verschiedene Prozessorarchitekturen, FPGAs, Softcores, …

High-Level-Synthese, Architektursynthese

Synthesecompiler Compiler: Optimierung (Standardoptimierungen / Zielarchitekturabhängige

Optimierungen), Retargierbare Compiler

VHDL

Literatur

J. Teich: „Digitale Hardware/Software-Systeme – Synthese und Optimierung“, Springer, 1997. R. Gessler, T. Mahr: „Hardware-Software-Codesign – Entwicklung flexibler Mikroprozessor-FPGA-Hochleistungssysteme“, Vieweg, 2007. A. Jentsch: „Modeling Embedded Systems and SOC‘s – Concurrency and Time in Models of Computation“, Morgan Kaufmann, 2004. Rajesh Kumar Gupta: „Co-Synthesis of Hardware and Software for Digital Embedded Systems“, Kluwer Academic Publishers, 1995. Daniel D. Gajski, Frank Vahid, Sinjiv Narayan, Jie Gong: „Specification and Design of Embedded Systems“, Prentice Hall, 1994. D. Gajski, S. Abdi, A. Gerstlauer, G. Schirner: “Embedded System Design – Modeling, Synthesis and Verification”, Springer, 2009.