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

Die Seite wird erstellt Christina Pohl
 
WEITER LESEN
Hardware/Software-Codesign - Kapitel 1 - Einführung M. Schölzel
Hardware/Software-Codesign

     Kapitel 1 - Einführung

          M. Schölzel
Hardware/Software-Codesign - Kapitel 1 - Einführung M. Schölzel
Entwicklungsgeschichte
Job     User       User                   Ergebnis
                                                                               Großrechner
         Mainframes /
         Großrechner
                                                                               Desktops

                    Physisches System

        Sensoren                                            Aktuatoren               Eingebettete
                                                                                       Systeme
                         Prozessrechner
                                           Finden Eingang in viele Bereiche…
                    Zuverlässigkeit
                      nimmt zu

                                         Erster Mikroprozessor
                                         Intel 4004

                                         Logik auf einem Chip
                                         integriert

 1950      1960                   1970              1980         1990      2000       2010
Hardware/Software-Codesign - Kapitel 1 - Einführung M. Schölzel
Beispiel für diesen Trend

Komet Küchenmaschine anno 1958                Küchenmaschine anno 2010

  •   Rührwerk
  •   1 Schalter                       •   Rührwerk, Waage, Heizplatte, Uhr
  •   Drehzahl über Getriebe wählbar   •   15 Schalter/Knöpfe (teilweise Mehrfachbelegung)
  •   Kaum elektronische Bauteile      •   18 LEDs
                                       •   Digitalanzeige
                                       •   Platine mit Prozessor

          3
Hardware/Software-Codesign - Kapitel 1 - Einführung M. Schölzel
Eingebettete Elektronik ist Überall

Mikrocontroller                        Mikroprozessor                   Mehrkernprozessor

              80 bis 100 Prozessoren                    Fensterhebermotor
                                                   Regelung durch Mikroprozessor
Hardware/Software-Codesign - Kapitel 1 - Einführung M. Schölzel
Schematische Darstellung Eingebettetes
               System

                        Kopplung

                                           Standard-
     Speicher               ASIC          komponente

                Prozessor          Prozessor

          Eingebettetes System

                 Systemumgebung
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*
                            Digitale                                                      Digitale
       Analog-Digital-      Signale                      Digitales                        Signale                 Digital-Analog-
         Wandler                                   Verarbeitungssystem                                               Wandler

                  Analoge                                                                                                       Analoge
                  Signale                                                                                                       Signale

          Sensoren                                        Regelstrecke                                                 Aktoren

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

                                   Gesamtsystems

Entwurf mechanischer                                        Entwurf elektronischer
   Komponenten                                                  Komponenten

                                                Formales Modell der
                    Formales Modell der
                                             mechanischen Komponenten
                elektronischen Komponenten

  Testen mechanischer Komponenten                  Testen elektronischer Komponenten

                                 Gesamtsystem
Motivation für HW/SW-Codesign
              Freiheitsgrade beim Entwurf elektronischer Komponenten

     Application Specific Circuit (ASIC)   …   Standardprozessor + Software

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

  hoch
          • 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
niedrig                                 werden

              Umsetzung als ASIC              Umsetzung mit
                                      Standardprozessor und Software
Entwurfszeit

  hoch
          • 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-
niedrig                                       bungssprachen

              Umsetzung als ASIC                    Umsetzung mit
                                            Standardprozessor und Software
Entwicklungskosten

  hoch
          • Korreliert mit Entwurfszeit

                                          • Korreliert mit Entwurfszeit
niedrig
               Umsetzung als ASIC                 Umsetzung mit
                                          Standardprozessor und Software
Flexibilität

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

          • Einmal gefertigt nicht mehr
            änderbar
niedrig
               Umsetzung als ASIC                 Umsetzung mit
                                          Standardprozessor und Software
Platz-/Stromverbrauch

  hoch
                                        • Programmgesteuerte
                                          Universalarchitektur
                                          verbraucht Platz und Strom
                                          für Programmverarbeitung
                                        • Längere Verarbeitungszeit
                                        • Überflüssige Hardware

          • Auf das Problem
            zugeschnittene
            Hardwarearchitektur und
            Technologie
          • Spezialisierte Hardware -
niedrig     komponenten

               Umsetzung als ASIC               Umsetzung mit
                                        Standardprozessor und Software
Gesamtkosten pro Stück
        hoch
                  • Bei geringer Stückzahl                    • Bei hoher Stückzahl

                  • Bei hoher Stückzahl                       • Bei geringer Stückzahl
      niedrig
                      Umsetzung als ASIC                              Umsetzung mit
                                                              Standardprozessor und Software

Beispiel:       Fixkosten: 2.100.000€                       Fixkosten: 750.000€
                Herstellungskosten pro Stück 2,50€          Kaufpreis pro Stück: 3,00€
                                2.100.000  2, 5  x  750.000  3  x
                                1.350.000             x  (3  2, 5)
                                2.700.000            x
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

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

 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
Aspekte des HW/SW Codesign:
                 Partitionierung
                                  Informale Spezifikation
                             (Beschreibung der Funktionalität)

                                  Formale Spezifikation

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

             F4         F5          F1        F2     F4         F5   F1        F2     F4
F1

             F3         F6               F3                F6        F3        F6

                   F2                                                     F5

 HW               SW                     HW               SW              HW               SW
      Variante 1                              Variante 2                       Variante k
Aspekte des HW/SW Codesign: High-
                  Level-Synthese
               F4         F5    K1
                               F1           K2
                                           F2    F4        F5    K1
                                                                F1     K2
                                                                      F2     F4
   K1
  F1

               F3         F6          K3
                                     F3               F6         K3
                                                                F3     K4
                                                                      F6

                     F2                                          K5
                                                                F5

   HW               SW           HW                   SW          HW              SW
        Variante 1                     Variante 2                     Variante k

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

 Dabei Optimierung der Hardware für die geforderte
  Funktionalität
Aspekte des HW/SW Codesign: HW für
                     SW optimieren

                  F4         F5       K1
                                     F1           K2
                                                 F2    F4        F5     K1
                                                                       F1     K2
                                                                             F2     F4
     K1
    F1

                  F3         F6             K3
                                           F3               F6          K3
                                                                       F3     K4
                                                                             F6
    P1     P2

                        F2                        P2                    K5
                                                                       F5    P1

     HW                SW              HW                   SW           HW              SW
           Variante 1                        Variante 2                      Variante k

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
   …
Aspekte des HW/SW Codesign: SW für
                    HW optimieren

                 F4         F5            K1
                                         F1           K2
                                                     F2    F4        F5         K1
                                                                               F1     K2
                                                                                     F2      F4
     K1
    F1

                 F3         F6                  K3
                                               F3               F6              K3
                                                                               F3     K4
                                                                                     F6
    P1    P2

                       F2                             P2                        K5
                                                                               F5    P1

     HW               SW                   HW                   SW               HW               SW
          Variante 1                             Variante 2                          Variante k

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
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
                   Komplexität

                                                  Design-Gap

                                 Komplexität   Beherrschbare Komplexität
                                  Hardware      mit Entwurfswerkzeugen

                                                                 Jahr
Eine Lösungsstrategie: Abstraktion
Systematisierung Systementwurf
Abstraktion                                                      Sichten
Granularität der Modellierung:                                   Beschreiben unterschiedliche
     Systemebene (Prozessoren, Speicher, Busse, …)              Modellierungsarten:
     Architektureben (Register, ALU, …)                            Verhalten
     Logikebene (Gatter, Flip-Flops, …)                            Struktur
     Schalterebene                                                 (Physische Sicht)

    Verfeinerung (    ) ist die Verringerung der                     Synthese ( ) ist die Überführung von
                     Abstraktion                                     Verhalten in Struktur bzw. Struktur in
                                                                                Physische Sicht
                                                     System
                                                    Prozessor
                                 Verhalten            Logik             Struktur
                                                      Schalter

                                                    Physisch

                                        Abstraktionen / Ebenen nach Gajski
                                                    (Y-Chart)
Typische Modelle im Entwurfsablauf

                   Prozessbasierte Modelle (Kommunizierende
                   Prozesse, DFGs), Zustandsbasierte Systeme
                            (Petrinetze, State Charts)
                                                                                Prozessoren, ASICs, Speicher,
                                                                                         Busse, …

                                                                System
                                                                                                      ALUs, Register,
                                                               Prozessor
                                                                                                      Multiplizierer, …
                                         Verhalten               Logik       Struktur
             Programmiersprachen, CFG,
                                                                Schalter
               DAGs zur Modellierung
              sequentiellen Verhaltens                                                     Gatter (NAND, NOR), Flip-Flops

                                                                                         Transistoren, Netzlisten
Zustandsautomaten zur Modellierung
        sequentieller Logik,
     Aussagenlogische Formeln,                                                                  Transistorlayout
    Wahrheitswertetabellen zur                                 Physisch
Modellierung Boolescher Funktionen             Spannungs-                                             Gatterlayout
                                           /Stromgleichungen

                                                                                               Layout der Module

                                                                           Physische Aufteilung des
                                                                                    Chips
Einbeziehung der Software

                                                                         System
  Software                    Hardware                                  Prozessor
                                                     Verhalten            Logik             Struktur
                                                                          Schalter
                     System
             Modul

                               Architektur

                                             Logik
Block

                                                                        Physisch

        Abstraktionen / Ebenen nach J. Teich                Abstraktionen / Ebenen nach Gajski
                   (Doppeldach)                                         (Y-Chart)
Typische Modelle
                        Prozessbasierte Modelle (Kommunizierende
                                      Prozesse, DFGs)
                        Zustandsbasierte Modelle (Petrinetze, State
                                          Charts)                                       Prozessoren, ASICs, ASIPs, Busse, Speicher,…

                                                                                                                           Programmiersprachen,
                                               Software                  Hardware                                      Hardwarebeschreibungssprachen,
             Algebraische Spezifikation                                                                                          DAGs, …

                                                                System
                                                                                                                     Boolesche Funktionen,
Graph-basierte Modelle, DAGs,                                                                                        Zustandsautomaten,…
    CFG, 3-Address-Code
                                                        Modul

                                                                          Architektur

                                                                                             Logik
                                             Block

     Assembler-
 /Maschinenprogramm                                  ALUs, Register,
                                                     Multiplexer,…
                           Imperatives
                            Programm
                                                                                                            Gatter, Flip-Flops, …

                                                                                                                              Abstraktionen / Ebenen nach J. Teich
Typischer Entwurfsablauf
                   Systemspezifikation

                       Validierung

                 HW/SW-Partitionierung

Hardwareentwurf                          Softwareentwurf

   Validierung                             Validierung

Hardwaresynthese                         Softwaresynthese

                       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)

                                                 Fertig!

Aufgabe: Fensterhebermotor bauen

                                                               CoMet
    Mechanische                    Elektronische
Komponenten entwerfen          Komponenten entwerfen

                                                               Prozessor entwerfen

                                                                       Prozessor muss zur
                               Software entwerfen                       Software passen!

                        Software ist in der Regel zuerst da!
Prozessorsynthese (2)

                                   Spezifikation des
                                   Prozessormodells

                 Assembler
                                                       Anpassung
                                                          des
           Übersetzungswerkzeuge       Binärcode
                                                       Simulators   Ergebnisse
                                           der
Software                                                               des
                                        Anwen -
                 Compiler                                            Profilings
                                          dung
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?
                                                                           Modellierungs-
                                         Systemspezifikation              möglichkeiten für
                                                                            eingebettete
                                                                              Systeme
                                             Validierung
   Implementierungsvarianten für
    eingebettete Systeme: ASICs,
verschiedene Prozessorarchitekturen,    HW/SW-Partitionierung
         FPGAs, Softcores, …

                     Hardwareentwurf                            Softwareentwurf

                          Validierung                             Validierung
   VHDL

                    Hardwaresynthese                            Softwaresynthese

                    Synthesecompiler                                    Compiler: Optimierung
                                              Validierung             (Standardoptimierungen /
                                                                       Zielarchitekturabhängige
       High-Level-Synthese,                                                 Optimierungen),
       Architektursynthese                      Fertig                  Retargierbare Compiler
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.
Sie können auch lesen