HW vs. SW ein erster Vergleich

HW vs. SW – ein erster Vergleich 182.700 - HW/SW-Codesign Daniel Haslauer Vortrag Florian Wagner Mitschrift 18.10.2016 1 Definition - Was ist Hard-...
Author: Kristian Berg
33 downloads 1 Views 165KB Size
HW vs. SW – ein erster Vergleich 182.700 - HW/SW-Codesign

Daniel Haslauer Vortrag

Florian Wagner Mitschrift

18.10.2016 1 Definition - Was ist Hard- und Software? Eine wirklich reine Hardware- und eine reine Softwarel¨osung gibt es praktisch nicht. Auf Switches l¨auft eine Software und eine Software braucht eine Hardware auf der sie l¨auft. Zudem kann man eine Software auf verschiedenen Abstraktionsebenen betrachten. Sie kann hardwarenah (z.B. in C) geschrieben sein und eine ben¨otigt Kenntnisse der Hardware, andere Programmiersprachen setzten auf einer h¨oheren Ebene an. Als eine reine Softwarel¨osung kann man ein Programm bezeichnen, das auf verschiedenen StandardProzessoren l¨auft. Sinnvoller ist es, wenn man die Schnittstelle zwischen Hardware und Software in einem System betrachtet. Gewisse Aufgaben k¨onnen in Software oder in Hardware gel¨ost werden. Ob ein Task in Hardware oder Software umgesetzt wird h¨angt von verschiedenen Faktoren ab, die in Tabelle 1 tabellarisch zusammengefasst sind. hardwarelike Performance

softwarelike Handling von hoher Komplexit¨at Senkung von Designkosten

Energieeffizienz

Tabelle 1: Vergleich HW vs. SW

2 Partitioning - HW/SW-Codesign “Hardware/Software Co-Design is the design of cooperating hardware components and software components in a single design effort.” — Patrick Schaumont, A Practical Introduction to Hardware/Software Codesign

1

Beim HW/SW-Codesign ist großes Wissen u ¨ber Hardware als auch Software im Designprozess notwendig, auch wenn man als Entwickler nur in einen Teilbereich t¨atig ist. Ein wichtiger Teil des Designprozesses ist das Partitioning, die Einteilung welcher Teil des Systems in HW und welcher in SW umgesetzt wird.

2.1 Rolle des FPGA Ein FPGA erm¨oglicht bzw. unterst¨ utzt das HW/SW-Codesign. Ein FPGA kann im Vergleich zu einem ASIC nur mit geringeren Taktraten betrieben werden und ben¨otigt mehr Fl¨ache und mehr Leistung. Auf der anderen Seite k¨onnen der Mikroprozessor und der Custom Prozessor schnell auf gepr¨ uftem Silizium implementiert werden. Dabei wird das Designrisiko gesenkt und der FPGA kann schnell rekonfiguriert werden.

2.2 Partitioning Das Partitioning muss zu einem guten Teil manuell erfolgen. Man kann eine Problemstellung derzeit von keinem Algorithmus automatisch in einen Hardware- und einen Softwareteil aufteilen lassen. Es gibt diverse unterst¨ utzende Programme, eine komplette Automatisierung dieser Aufgabe ist seit 25 Jahren Gegenstand der Forschung.

3 HW vs. SW - Entwurf 3.1 Unterschiede Die Unterschiede in der Entwicklung von Hardware und Software sind in Tabelle 2 zusammengefasst. Hardware Tr¨age Nach der Produktion schwer anpassbar Kostenkurve steigt stark Viele Testcases

Software Flexibilit¨at St¨andige Anpassung m¨oglich Kostenkurve flach Noch mehr Testcases

Tabelle 2: Vergleich HW vs. SW

3.2 Gemeinsamkeiten Beim Hardware- und Softwareentwurf kann man auch Gemeinsamkeiten feststellen. • Erfassen und Simulieren • Grobe Blockstruktur = Spezifikation Verfeinerung

2

HW: Logik/Transistor Diagramme SW: Assembler • Simulation, Emulation, Validierung

3.3 Tools Grunds¨atzlich sind Tools zur Hard- als auch Softwareentwicklung kostenlos erh¨altlich, professionelle Tools kosten etwas. Mit den kostenlosen Softwaretools kommt man auch im professionellen Umfeld gut zurecht. Bei der High-End-Hardwareentwicklung greift man auf die kostenpflichtigen Tools der FPGA-Entwickler zur¨ uck die passend zu ihren Chips Entwicklungssoftware anbieten. Diese Tools sind deutlich teuer als vergleichbare Tools zur Softwareentewicklung.

4 FPGA vs. ASIC Ab einer St¨ uckzahl von 400.000 St¨ uck sind die St¨ uckkosten beim ASIC niedriger als beim FPGA (siehe Abbildung 1).

Abbildung 1: St¨ uckkostenvergleich FPGA vs. ASIC (Quelle: anysilicon.com)

3

5 Jobanforderungen - Embedded Systems Eine schnelle (nicht repr¨asentative) Recherche zeigt, dass Jobs im Embedded Systems Bereich vor allem die folgenden Skills ben¨otigen. • Englisch, Teamf¨ahigkeit: Embedded Systems werden durch große internationale Teams entwickelt • C bzw. ANSI-C (Verifizierbarkeit) • Standards, Protokolle • Wissen u ¨ber Hardware als auch Software Im Konkreten sind nat¨ urlich auch Spezialf¨ahigkeiten gefragt.

6 Maintenance Ein wichtiger Aspekt beim Entwickeln von Hardware und Software ist die Wartbarkeit (Maintenance). Wie ein System gewartet werden kann h¨angt von verschiedenen Faktoren wie Systemumgebung, Zugriffsm¨oglichkeiten, Einsatzgebiet, Alterung und Laufzeitverhalten ab.

6.1 Tracing Eine M¨oglichkeit ein System zu warten ist Tracing. Hier wird das Systemverhalten zur Laufzeit beobachtet und Daten werden gesammelt. Anschließend werden diese Daten aufw¨andig analysiert. Tracing ist sowohl in Hardware als auch Software realisierbar. Das Tracing kann in drei Teilschritte unterteilt werden • Instrumentierung (Tracingfunktion integrieren) • Tracing (Speicherung der Daten) • Analyse (Daten¨ ubertragung, Auswertung, geschieht offline)

7 Vorteile von HW und SW 7.1 Diskussion Bei der Diskussion, wo die Vorteile von Hardware- bzw. Softwarel¨osungen liegen, konnte man sich auf folgende Punkte einigen: 7.1.1 Timing constraints Zum Erreichen von Zeitvorgaben ist die Hardwarel¨osung besser, hier wird tats¨achlich mit einzelnen Takten gearbeitet.

4

7.1.2 Echtzeitverhalten Siehe timing contraints. Bei einer Hardwarel¨osung k¨onnen Ereignisse besser gezielt zu bestimmten Zeitpunkten ausgel¨ost werden. 7.1.3 Wiederverwendbarkeit Hier liegt der Vorteil eher bei der Softwarel¨osung. Der Code wird einfach kopiert. Aber auch HW-Code wie VHDL oder Verilog kann kopiert werden. Eine andere Betrachtung der Wiederverwendbarkeit: Eine reine Softwarel¨osung (bspw. in Java) kann auf verschiedenen Systemen laufen. Grunds¨atzlich muss ein Code - ob HW- oder SW-Code - eine gewisse Qualit¨at (Dokumentation) und einen gewissen Stil aufweisen um wiederverwendbar zu sein. 7.1.4 Tools Die Tools sind bei der Softwareentwicklung grunds¨atzlich g¨ unstiger, f¨ ur kleine Hardwareentwicklungen sind Gratis-Tools aber ausreichend. 7.1.5 Security Hier herrschte Uneinigkeit bei den Diskussionsteilnehmern. F¨ ur Softwarel¨osungen gibt es Protokolle und Anleitungen um eine Software sicher zu entwickeln und vor b¨oswilligen Angriffen zu sch¨ utzen. Etwaige Security-L¨ ucken k¨onnen mit Updates gefixt werden. Mit einer Hardware kann nicht so leicht von außen interagiert werden und das Verhalten manipuliert werden. Findet sich in der Hardware trotzdem eine Security-L¨ ucke so kann man diese nicht oder nur sehr schwer schließen.

7.2 Beispiel CRC Ein Cyclic Redundancy Check ist leichter in Hardware zu implementieren. • HW: Schieberegister + XOR Operationen Leichte Implementierung Hohe Geschwindigkeit • SW: Bit Maskierungen, Shifts, XOR Operationen,... Schwierigere Implementierung Teurer Overhead

7.3 Beispiel IP Paket Fragmentierung Die IP Paket Fragmentierung ist in Software leicht zu implementieren.

5

• HW: Sehr große Anzahl von States Hohe Komplexit¨at Hoher Platzbedarf Aufw¨andige Verifikation • SW: Viele Verzweigungen ¨ Bessere Ubersicht Geringere Entwicklungszeit

6