Kriterien zur Hardware/Software-Partitionierung beim Systementwurf

Die Seite wird erstellt Stefan-Louis Strauß
 
WEITER LESEN
Kriterien zur Hardware/Software-Partitionierung beim
                   Systementwurf
                                   Wofram Hardt, Raul Camposano
                      Universität Gesamthochschule Paderborn, 33095 Paderborn
                                   e-mail: hardt@uni-paderborn.de
           Abstrakt. HW/SW-Codesign bietet viele Vorteile (z.B. bzgl. Verifikation und Simula-
           tion) im Systementwurf. Der gemeinsame Entwurf macht eine HW/SW-Partitionierung
           erforderlich. Hierfür werden Kriterien aufgestellt, basierend auf der Bewertung von
           Hardware- und Softawarerealisationen unterschiedlich komplexer Basiselemente.

1.0 Einleitung
In jüngster Zeit wird HW/SW-Codesign von verschiedenen Seiten untersucht. Zum einen extrahiert man Teile
der Software, die einen wesentlichen Teil der Hardware-Resourcen belegen und implementiert sie durch spe-
zielle Hardware [Henk92]. Diese Methode wird besonders durch zeitkritische Anwendungen motiviert. Zum
anderen werden Teile aus einem Hardware-Design identifiziert und in Software realisiert. Kandidaten hierfür
sind z.B. datenabhängige Konstrollstrukturen [Gupt92]. In unserem Ansatz untersuchen wir den Trade-Off
zwischen Hardware- und Softwareimplementationen. Verschiedene Abstraktionsebenen werden von unten
nach oben (Bottom-Up) untersucht. Zu differenzieren sind die Hardware-Ebene (Computer und zusätzliche
Spezialhardware), die Assembler-Ebene (Maschinensprache), die Hochsprachen-Ebene (z.B. C oder C++),
die SW-Modul-Ebene (z.B. Funktionen, Prozeduren) und die Applikations-Ebenen (z.B. Compiler). Charak-
teristische Elemente jeder Ebene werden in Hardware implementiert und mit der jeweiligen Softwarerealisie-
rung verglichen (Bild 1).
                                          SW
                                   SW-Application        4

                                     SW-Module           3

                               Programming Language 2

                                     Assembler
                                  Assembler              1

                                         HW

                                        Logic

                                                Bild 1. Abstraktionsebenen

Es ist zu Beachten, daß zusätzliche Software wie z.B. das Betriebssystem nicht berücksichtigt wird. Das
würde den Ansatz zu sehr verkomplizieren. Hier werden Kriterien entwickelt zur HW/SW-Partitionierung
basierend auf dem HW/SW-Trade-Off auf den verschiedenen Ebenen. Als HW/SW-Codesign Scenario haben
wir die bekannte Sparc-Architektur [Cyp90] ausgewählt, insbesondere auch deshalb weil die Anbindung spe-
zieller Hardware als Coprocessor vorgesehen ist.

                                                   -1-
2.0 Vergleich von Hardware- und Softwaredesigns
Prizipiell lassen sich Hadwaredesigns derselben Technologie vergleichen. Wesentliche Bewertungskriterien
sind Größe (Fläche) und Zeit (Verzögerung). Softwareapplikationen dagegen mißt man an der Größe des
Sourcecodes (Lines of Code), der Größe der ausführbaren Dateien (abhängig von Compiler, Maschine und
Operationssystem) und der erforderlichen Datenmenge. Zum Vergleich von Hardware- und Softwaredesigns
beschränken wir uns auf die Kriterien Fläche und Zeit.

2.1 Fläche
Für Hardwaredesigns leiten wir das Flächenmaß aus der aktiven Fläche des Entwurfs ab. Dazu wird die
abstrakte Systembeschreibung synthetisiert und in einer bestimmten Technologie implementiert, z.B. in einer
2 µm CMOS Technologie. Aus den Bibliotheksdaten [Miet04] wird die absolute Fläche ermittelt.
Die Flächenermittlung für Softwareapplikationen beruht auf unser Entscheidung, spezielle Hardware an eine
bestehende Architektur anzubinden. Eine Verschiebung von Hardwaremoduln in Software, läßt sich durch die
Größe des zusätzlich belegten Speichers messen. Tabelle 1 gibt die charakteristischen Daten eines Speicher-

                                  Feature            Characteristic
                                  Organization       1M x 4
                                  I/O Interface      TTL
                                  Power              single 3.3V
                                  Cell size          1.43µm x 3.04 µm
                                  Chip size          6.2 mm x 10.6 mm
                                  Design             0.5 µm
                                    Tabelle 1. Charakteristika eines 4 MB Speicherbausteins

bausteins an [Naka92]. Damit ergibt sich eine Fläche von 139 µm pro 32-Bit Wort. Es ist zu beachten, daß die
verwendete Technologie viel kleiner ist als die, die für die speziellen Hardwaremoduln verwendet wurde. Das
ist übliche Praxis.

2.2 Zeit
Synchrone Systeme werden vielfach durch einen gemeinsamen Takt gesteuert. Dieser ist abhängig von der
eingesetzten Technologie und der Systemkonfiguration. Die ausgewählte Sparc-Architektur wird durch einen
33 MHz Takt gesteuert. Das ist als Einschränkung beim Scheduling zu berücksichtigen. Trade-Offs, die sich
durch eine höhere Taktrate einzelner Moduln ergeben, werden hier nicht untersucht.
Die Ausführungszeit von Software kann durch die Anzahl der abgearbeiteten Befehle approximiert werden.
Da pauschale Durchschnittswerte insbesondere für kleine Moduln zu sehr ungenauen Abschätzungen führen,
untersuchen wir den Assemblercode, der durch den GNU Compiler [Stal92] generiert wird explizit. Jeder
Befehl wird mit der Ausführungsdauer unter Berücksichtigung der ausgewählten Architektur, gewichtet.
Damit werden Pipeline-Effekte und Parallelität von Instruktions- und Floatingpointeinheit berücksichtigt.
Tabelle 2 enthält einen Auszug aus der ermittelten Gewichtungstabelle. Für größere Applikationen müssen
Cache- und Speicherzugriffsfehler einbezogen werden [Smith82], [Smith86], [Good83].

3.0 Trade-Offs
Die Assembler-Ebene wird durch den Befehlssatz des Prozessors definiert. Viele verschiedene Befehlssätze
sind bekannt und man kann sie z.B. in die Gruppen RISC1 und CISC2 einteilen. Zum einen wird die Ausfüh-

                                                     -2-
Instruktion                Zyklen           Floating Point      Zyklen
                                                                       Instruktionen
                        conditional jump                 2                FADDs              5
                       unconditional jmp                 3                FCMPs              4
                               load                      2                FDIVs              23
                    load double floating point           3                FDIVd              37
                              store                      3               FSQRTs              34
                        arithmetic/logical               1               FSQRTd              63
                               Tabelle 2. Instruktions-Ausführungszeiten in Zyklen [Cyp90]

rungszeit pro Instruktion und zum anderen die Anzahl der Instruktionen pro beabsichtigter Aktion optimiert
[Patt90]. HW/SW-Codesign auf dieser Ebene würde bedeuten, kurze Sequenzen von Instruktionen in Hard-
ware zu implementieren. Dies kommt einer Erweiterung des Befehlssatzes gleich. Der Entwurf von Befehls-
sätzen ist ein altes Forschungsgebiet [Lund77], [Kemm67]. Die Granularität der betrachteten Elemente ist

           Time
           Cycle

             31
             29
             27
             25
             23        Compiler: GNU
             21        Machine : Sparc_4
             19
             17
             15
             13
             11
              9
              7
              5
              3
              1
                                                                                             Constructs
               int a=0     a==0 void f ()              if-then            for                 of “C”
                    a=12    a==C void f (int)           if-then-else while ... do
                       a++     a==b     int f ()             if (0) then do ... while
                                           int* f ()             if (1) then
                                               char f ()
                                                  char* f ()                  switch [8]

                  assign compare             call            control        loop

                                               Bild 2. Ausführungszeit von C-Konstrukten

sehr fein und die erreichten Verbesserungen können durch eine Verlangsamung der Ausführungszeiten insge-
samt kompensiert werden. Daher erwarten wir auf dieser Ebene keine wesentlichen Verbesserungen durch
HW/SW-Codesign.

1. Reduced Instruction Set Computer
2. Complex Instruction Set Computer

                                                         -3-
Verschiebt man die Betrachtungsebene in Richtung Software, Hochsprachen-Ebene, vergröbert sich die
Granularität der zu betrachtenden Elemente. Die Konstrukte einer Hochsprache werden durch Sequenzen von
Maschineninstruktionen implementiert. Wir haben die bekannte Hochsprache “C” für eine illustrative Ana-
lyse ausgewählt. Die Sprachkonstrukte können in vier Klassen eingeteilt werden: Assignment, Comparison,
Call und Control. Bild 2 veranschaulicht das Ergebnis. Der durchschnittliche Aufwand der Basiselemente
jeder Kategorie wird durch die Schattierung angedeutet. Unsere Schlußfolgerung an diesem Punkt ist, daß
selbst die Konstrukte einer Hochsprache innerhalb von sehr wenigen Zyklen realisiert werden können. Die
einzige Ausnahme ist das switch-Konstrukt, das hier mit 29 Zyklen angegeben ist.
In Bild 3 ist eine standardisierte Version des switch-Konstuktes definiert. Der break-Befehl ist zur Vermei-
dung von Seiteneffekten (z.B. die Ausführung mehrere Fälle bei einem Durchlauf) notwendig.
              switch ( int A )
              {
                                         case     0:         { sequence of C-commands}    break;
                                         case     10:        { sequence of C-commands}    break;
                                         case     20:        { sequence of C-commands}    break;
                                          .
                                          .
                                          .
                                         case     n:         { sequence of C-commands};   break;
              }

                                              FIGURE 3. Standard Switch-Konstrukt

Die Skizze einer auf acht Fälle beschränkten Hardware-Implementation ist in Bild 4 angegeben. Die Ein-
gangsregister können vom Hauptspeicher mit den relevanten Adressen geladen werden. Diese Beschreibung
wurde synthetisiert und mit der Softwarerealisierung verglichen (Einträge für “case” in Tabelle 3 und
Tabelle 5). Hier sind wesentliche Verbesserungen im Zeitverhalten festzustellen, sofern kein Kommunikati-
onsaufwand berücksichtigt wird, d.h. das Laden der Register wird ignoriert. Das ist sinnvoll für feste Sprung-

                                   Integer
                                    Unit

                                                                     MUX
                                                        D0     D1               D6   D7

                                                                        ...

                                                                    Data Bus

                                 Bild 4. Hardware-Implementation des Standard Switch-Konstruktes

adressen, z.B. bei Festverdrahtung oder einem einmaligen Ladevorgang in kleinen Applikationen. Im
schlechtesten Fall müssen alle Register geladen werden, während der Prozessor wartet. Dieser Wert ist in
Klammern angegeben.

                                                             -4-
Die Konstrukte einer Hochsprache werden häufig in Funktionen oder Prozeduren, d.h. Moduln, zusammenge-
faßt. Auf der SW-Modul-Ebene haben wir einige Benchmarks [Ben92] von VHDL1 nach “C” konvertiert
und die Implementationen verglichen. Für die Hardwarerealisierung wurden die Ergebnisse von HIS verwen-
det, die in [Camp91] angegeben sind. Das Modul zur Berechnung des größten gemeinsamen Teilers (gcd)
wurde für vier Bits realisiert, der Diffeq und der Ellipic-Filter für 16 Bits. Tabelle 3 listet die ermittelten Grö-
ßen auf.

                            Fläche des                Fläche der         Duchschnittszeit            Zeit der
       Benchmark           HW-Designs               SW-Applikation       des HW-Designs         SW-Applikation
                           in   µm2   *103            in   µ m2   *103         in Zyklen             in Zyklen

            gcd                   770                       7.3                  2.5                     84
          diffeq                 12,960                     10.9                     5                   144
         ellipticF               12,000                     22.1                  13                     312
           case                  6,541                      5.9                 1 (10)                   44
                                      Tabelle 3. Benchmarks implementiert in HW und SW

Im Vergleich dazu ist in Tabelle 4 die Größe bekannter Prozessoren angegeben [Patt90].

                                                                         Area
                                                   Processor
                                                                         mm2

                                                    Sparc                56
                                                Intel 80486              160
                                               MIPS R3000                72
                                              Motorola 88100             81
                     Tabelle 4. Chipfläche bekannter Prozessoren realisiert in Ceramic-PGA Technologie

Auf dieser Ebene sind erste Verbesserungen durch Implementation in Hardware anstelle von Software fest-
stellbar. Das Zeitverhalten konnte um einen Faktor 4 bis 30 gesteigert werden. Dabei ist zu beachten, daß
diese Zahlen für einen Durchlauf aller Schleifen gelten. Jede weitere Iteration kann das Ergebnis verbessern,
aber die Anzahl der Iterationen kann nicht durch die Untersuchung des Programmcodes ermittelt werden.
Der Vergleich der Flächen muß die unterschiedliche Datenpfadbreite berücksichtigen. Geht man von Bit-
Slice-strukturierten Entwürfen aus, kann die Fläche des n-Bit Datenpfades durch Multiplikation des 1-Bit
Datenpfades mit n approximiert werden. Diese Werte sind auch in Tabelle 5 angegeben. Die Fläche der Hard-
warerealisation ist ungefähr 1000 mal größer als die der Softwarerealisierung. Andererseits ist die zusätzliche
Hardware verglichen mit dem Prozessor klein.

                     Benchmark            Fläche             Fläche           Zeit          Kontroll-
                                                                                           Instruktion
                                          HW/SW            HW/SW32        SW/HW                (%)
                         gcd                 105               840            33.6            18.8
                        diffeq             1188                2376           28.8            2.53
                                                   Tabelle 5. HW-SW Trade-Off

1. Hardwarebeschreibungssprache

                                                               -5-
Benchmark        Fläche           Fläche          Zeit      Kontroll-
                                                                             Instruktion
                                  HW/SW           HW/SW32         SW/HW
                                                                                 (%)
                   ellipticF        542              1084            24          1.2
                     case           1108             1108         (44) 4.4       29
                                            Tabelle 5. HW-SW Trade-Off

Die o.g. Beispiele können in bezug auf die Anzahl der verwendeten Kontrollbefehle klassifiziert werden. Der
prozentuale Anteil der Sprungbefehle ist in Tabelle 5 angegeben. Korreliert man diese mit den vorhergehen-
den Ergebnissen, so stellt sich heraus, daß kontroll-dominierte Moduln bessere Kandidaten für HW/SW/
Codesign sind als z.B. arithmetisch-dominierte.
Auf der Applikations-Ebene werden verschiedene Ansätze verfolgt. Eine softwareorientierte Vorgehens-
weise extrahiert Hardwaremoduln aufgrund von Laufzeitanalysen [Ernst90]. Das ist besonders im Bereich
der Echtzeitanwendungen von Interesse. Ein anderer Ansatz geht von einer vollständigen Hardwarerealisie-
rung aus und transformiert datenabhängige Schleifen in Softwaremoduln [Gupt92]. Für ein Beispiel, einen
Ethernetz-Kontroller, das erfolgreich synthetisiert werden konnte, wurde eine Verkleinerung der Hardware
um etwa 20 Prozent ereicht. Wir legen den Schwerpunkt auf Applikationen, die in Standardsystemen häufig
benutzt werden, z.B. den Blitter [Ben92] ein Coprocessor für spezielle Datenmanipulation. Ein noch komple-
xeres Beispiel wird ein eingeschränkter Compiler sein. Entwicklungen von Hochleistungsarchitekturen zur
effizienten Ausführung von “C”-Programmen wie z.B. die CRISC-Architektur [Ditz87] basieren auf Ent-
wurfstechniken, die auch hier eingesetzt werden können.

4.0 Zusammenfassung und Ausblick
In dieser Arbeit haben wir den HW/SW Trade-Off auf unterschiedlich abstrakten Ebenen untersucht und dar-
aus elementare Partitionierungskriterien ermittelt. Unsere weiteren Forschungen konzentrieren sich auf die
Applikations-Ebene. Die Systembeschreibungen werden in das neu entwickelte ISF-Format [Camp93] trans-
formiert, das eine detailliertere Untersuchung größerer Moduln ermöglicht. Weitere Aspekte, wie z.B. die
Separierung von Kontroll- und Datenteil und die Definition von Modulcharakteristika, die eine vorteilhafte
Implementation in Hardware oder Software erlauben, werden einbezogen.

5.0 Referenzen
[Ben92]      “Benchmarks for the 6th International Workshop on High-Level Synthesis.” Available through
             electronic mail at ics.uci.edu, 1992.
[Camp91]     R.Camposano, R.A.Bergamaschi, C.E. Haynes, M.Payer, S.M.Wu. High-Level VLSI Synthesis,
             chapter 4, pages 79–104. Kluwer Academic Publishers, 1991.
[Camp93]     Andreas Hoffmann, Heinz Josef Eikerling, Wolfram Hardt, Reiner Geneveriere, Raul
             Camposano. “ISF- eine Entwurfsdarstellung für High-Level-Synthese.” Workshop des SFB 358
             der TU Dresden und der ITG/GI, 1993.
[Cyp90]      Cypress Semiconductor. “Sparc/RISC User’s Guide.” Ross Technology Subsidiary, 3901 North
             First Street, San Jose, CA 95134. 1990.
[Ditz87]     Daniel R. Ditzel, Hubert R. McLellan. “The Hardware Architecture of the CRISP
             Microprocessor” ACM Computer Architecture News, Vol 15 No.2, pages 309-319, 1987.
[Ernst92]    Rolf Ernst, Ulrich Holtmann. “Some experiments with low-level speculative computation based
             on multiple branch prediction for the synthesis on high-performance, pipelined coprocessors.”
             Sixth International Workshop on High Level Synthesis, pages 146–158, 1992.
[Gupt92]     Rajesh K. Gupta and G. De Michelli. “System synthesis via hardware- software co-design.” CSL
             TR-92-548, 1992.

                                                     -6-
[Henk92]    R.Ernst, J.Henkel “Hardware-Software Co-design of Embedded Controllers based on Hardware
            Extraction” Proceedings of the ACM Workshop on Hardware-Software Co-design, 1992.
[Good83]    J.R.Goodman J.E.Smith. “A study of instruction cache organizations and replacement policies.”
            Proc. Tenth Annual Symposium on Computer Architecture, pages 132–137, January 1983.
[Patt90]    D.A.Patterson, J.L.Hennessy. Computer Architecture A Quantitative Approach. MORGAN
            KAUFMANN PUBLISHERS, INC., 1990.
[Keem67]    W.M. Mc Keeman. “Language directed computer design.” Proc. 1967 Fall Joint Computer
            Conf., Washington, D.C., pages 413–417, 1967.
[Lund77]    A. Lunde. “Emperial evaluation of some features of instruction set processor architecture.”
            Comm. ACM, pages 143–152, March 1977.
[Miet04]    Mietec document S2SM 1.0.0. Mietec Standard Cell User Manual 2.4 um CMOS. EUROCHIP
            Document MIE/F/04.
[Naka92]    K. Nakagawa, N.Akiyama, T. Ohta, T. Someya, A.Tamba, Yuji Yokoyama a.o. “Circuit
            Technologies for a 12ns 4Mb TTL BiCMOS DRAM at 3.3V Operation.” Symposium on VLSI
            Circuits Digest of Technical Papers, pages 62–63, 1992.
[Smith82]   A.J.Smith. “Cache memories.” Computing Surveys, pages 473–530, September 1982.
[Smith86]   A.J.Smith. “Bibliography and readings on cpu cache memories and related topics.” Computer
            Architecture News, pages 22–42, January 1986.
[Stal92]    Richard M. Stallmann. Using and Porting GNU CC. Free Software Foundation Inc., December
            1992.

Diese Arbeit wurde teilweise durch den Sonderforschungsbereich SFB 358 der Deutschen Forschungsge-
meinschaft (DFG) gefördert.

                                                 -7-
Sie können auch lesen