05.11.2012 Aufrufe

Implementierung Massiv Paralleler Systeme - Institut für Informatik ...

Implementierung Massiv Paralleler Systeme - Institut für Informatik ...

Implementierung Massiv Paralleler Systeme - Institut für Informatik ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Implementierung</strong><br />

<strong>Massiv</strong><br />

<strong>Paralleler</strong><br />

<strong>Systeme</strong><br />

Manfred Schimmler, Lars Wienbrandt, Sven Koschnicke<br />

<strong>Institut</strong> <strong>für</strong> <strong>Informatik</strong><br />

Lehrstuhl Technische <strong>Informatik</strong><br />

Christian-Albrechts-Universität zu Kiel<br />

1


Inhalt der Vorlesung<br />

1. Motivation und Einleitung<br />

2. Einführung in VHDL<br />

3. Automatenmodellierung mit VHDL<br />

4. Synthesefähiger Entwurf eines Mikroprozessors in VHDL<br />

5. FPGA-Technologie<br />

6. Taktung<br />

7. Parallelität<br />

8. Topologien und Komplexitätsmaße<br />

9. Parallele Architekturen 1 (Das Instruction Systolic Array)<br />

10.ISA-Prozessor-Architektur<br />

11.Parallele Hardware-Algorithmen 1 (Paralleles Merge)<br />

12.Parallele Hardware-Algorithmen 2 (Paralleles Sortieren)<br />

13.Parallele Hardware-Algorithmen 3 (Graphen-Algorithmen)<br />

14.Parallele Hardware-Algorithmen 4 (Brücken und FFT)<br />

15.Parallele Architekturen 2 (Vektorrechner)<br />

16.Parallele Architekturen 3 (Systolische Felder)<br />

17.Cloud Computing<br />

18. Der FPGA-basierte Parallelrechner Rivyera<br />

19. Rivyera API<br />

20. Bio-<strong>Informatik</strong> Algorithmen 1<br />

21. Bio-<strong>Informatik</strong> Algorithmen 2<br />

2


Was erwartet sie heute?<br />

1. Motivation<br />

Arten digitaler integrierter Schaltkreise<br />

Welche Zielarchitektur passt <strong>für</strong> welche Anwendung?<br />

Taxonomie der ICs<br />

Typen konfigurierbarer und rekonfigurierbarer Logik<br />

Ebenen beim Entwurf digitaler Schaltungen<br />

Entwurfsprozess<br />

Funktion der Hardwarebeschreibungssprache<br />

3


Arten digitaler integrierter Schaltungen<br />

• Diskrete Bauteile mit einer kleinen Anzahl einzelner Gattern zum<br />

Auflöten oder Aufstecken auf Platinen (z.B. in TTL, 7400)<br />

• Einfache fest konfigurierte Funktionsblöcke auf einem Chip ohne oder<br />

mit sehr begrenzter Möglichkeit der Programmierung (z.B. einfache<br />

Speicherchips, Zähler, Taschenrechner, Uhren)<br />

• Komplexe fest konfigurierte programmierbare Einheiten auf einem<br />

Chip (z.B. Mikroprozessoren, Mikrocontroller, Digitale Signal<br />

Prozessoren (DSPs), Massenspeicher mit integrierter Logik)<br />

• Kundenspezifisch konfigurierbare einfache Bausteine, z.B. PLA, FPLA<br />

(Programmable Logic Array, Field Programmable Logic Array)<br />

• Kundenspezifisch konfigurierbare komplexe Bausteine, z.B. FPGA<br />

(Field Programmable Gate Array)<br />

• Anwenderspezifische Integrierte Schaltkreise, ASICs<br />

4


Welche Zielarchitektur <strong>für</strong> welche Anforderung?<br />

Hauptkriterium: Datendominanz oder Kontrolldominanz?<br />

1. Beispiel: Die Steuerung der Einspritzung von Kraftstoff in einem<br />

Verbrennungsmotor<br />

2. Beispiel: Eine Grafikkarte<br />

3. Beispiel: Gesucht ist eine Hardwarelösung zum Angriff auf ein<br />

symmetrisches Verschlüsselungsverfahren, z.B. DES (Data<br />

Encryption Standard).<br />

4. Beispiel: Warum leisten Mikroprozessoren in datendominanten<br />

Anwendungen weniger als DSPs?<br />

5. Beispiel: Vektorprozessoren<br />

5


Welche Zielarchitektur <strong>für</strong> welche Anforderung?<br />

Hauptkriterium: Datendominanz oder Kontrolldominanz?<br />

1. Beispiel: Die Steuerung der Einspritzung von Kraftstoff in einem<br />

Verbrennungsmotor erfordert nicht viele (numerische) Berechnungen.<br />

Andererseits muss aber echtzeitig und zuverlässig reagiert werden. Es<br />

sind eine Reihe von Sondersituationen denkbar, die über spezielle<br />

Programme behandelt werden müssen. Die Art der Berechnung ist<br />

weitgehend ereignisgesteuert. Hier überwiegt die Kontrolle gegenüber<br />

der Datenverarbeitung, die Anwendung ist „kontrolldominant“.<br />

Für eine solche Anwendung verwendet man einen Mikrocontroller (was<br />

nichts anderes ist als ein auf Kosten optimierter Mikroprozessor).<br />

2. Beispiel: Eine Grafikkarte muss <strong>für</strong> Millionen von Pixeln dieselben<br />

Operationen durchführen, um einen Frame auf dem Bildschirm zu<br />

berechnen. Die Folge der Operationen ist fest vorgegeben, es gibt keine<br />

oder fast keine Sondersituationen und Interrupts. Der Datendurchsatz<br />

soll optimal sein, d.h. in einer festen Zeit sollen soviele (gleichartige)<br />

Berechnungen wie möglich gemacht werden. Eine solche Anwendung<br />

ist „datendominant“. Typische Zielarchitekturen hier sind DSPs oder<br />

Spezialprozessoren.<br />

6


Welche Zielarchitektur <strong>für</strong> welche Anforderung?<br />

3. Beispiel: Gesucht ist eine Hardwarelösung zum Angriff auf ein<br />

symmetrisches Verschlüsselungsverfahren, z.B. DES (Data Encryption<br />

Standard). Diese muss 2 56 mögliche Schlüssel einer Chiffre<br />

durchprobieren, um einen chiffrierten Text in den zugehörigen Klartext<br />

zurück zu übersetzen. Selbst schnellste Mikroprozessoren und sogar<br />

schnellste DSPs würden Jahrzehnte rechnen, um diese Aufgabe zu<br />

erfüllen. Dieses (ganz klar datendominierte) Anwendung erfordert eine<br />

individuelle Lösung, die speziell <strong>für</strong> diese Anwendung entwickelt wird.<br />

Man nennt eine solche Lösung „kundenspezifisch“, „application specific“<br />

oder „custom solution“. In diesem Falle könnte die Lösung eine<br />

Parallelarchitektur aus mehreren speziell <strong>für</strong> DES konfigurierten FPGAs<br />

sein, die mit deutlich höherem Durchsatz die möglichen Schlüssel<br />

durchprobieren können, als jeder Standardrechner. Oft werden mit<br />

solchen kundenspezifischen Lösungen Geschwindigkeiten erreicht, die<br />

sogar deutlich über denen von Superrechnern liegen.<br />

7


Welche Zielarchitektur <strong>für</strong> welche Anforderung?<br />

4. Beispiel: Warum leisten Mikroprozessoren in datendominanten<br />

Anwendungen weniger als DSPs?<br />

Mikroprozessoren sind „Alleskönner“, die <strong>für</strong> den Universaleinsatz<br />

optimiert sind. Sie haben aufwendige Pipelines, Branch-Prediction-<br />

Einheiten, Interrupt-Einheiten usw. die darauf ausgelegt sind,<br />

Unregelmäßigkeiten im Kontrollfluss effizient bearbeiten zu können.<br />

DSPs sind im Gegensatz dazu Rechenknechte. Sie haben (oft) viele<br />

Recheneinheiten, die parallel arbeiten können. Oft sind diese auch<br />

kombiniert, um spezielle Funktionen besonders schnell oder mit<br />

besonders hohem Durchsatz berechnen zu können. Ein Beispiel da<strong>für</strong><br />

ist eine Multiply-Add-Einheit, die viele Anwendungen in der linearen<br />

Algebra beschleunigen kann, z.B. Matrix-Multiplikation oder –Inversion.<br />

DSPs haben breite Datenleitungen (<strong>für</strong> Ein- und Ausgabe). Ein anderes<br />

Extrem in dieser Richtung sind die Netzwerkprozessoren, die darauf<br />

zugeschneidert sind, Anwendungen aus der modernen Digitalen<br />

Nachrichtenvermittlung zu beschleunigen.<br />

8


Welche Zielarchitektur <strong>für</strong> welche Anforderung?<br />

5. Beispiel: Vektorprozessoren verfügen über spezielle Einheiten, mit<br />

denen Vektoren verarbeitet werden können. Diese zeichnen sich durch<br />

eine besonders tiefe Pipeline aus. Ferner gibt es Register mit<br />

Vektorbreite und einen schnellen vektoriellen Speicherzugriff.<br />

Aufeinanderfolgende Operationen werden durch das sogenannte<br />

Chaining (Forewarding zwischen Operationen) beschleunigt.<br />

Vektorprozessoren waren in den 70-er und 80-er Jahren die ersten<br />

Superrechner. Heute verfügen viele Standardprozessoren über<br />

assoziierte Vektoreinheiten.<br />

9


Ein ASIC (Application Specific Integrated Circuit) ist ein<br />

anwendungsspezifischer integrierter Schaltkreis.<br />

Wenn es sich um einen Chip handelt, dessen sämtliche Transistoren<br />

und Leitungen frei vom Anwender entworfen, positioniert und<br />

dimensioniert werden, spricht man von einem Full-custom ASIC.<br />

Beim Full-Custom ASIC stehen dem Entwerfer alle Möglichkeiten zur<br />

Verfügung, die auch die Entwerfer von Mikroprozessoren (z.B. bei<br />

Intel oder Texas Instruments) benutzen (allerdings haben die kleineren<br />

Entwurfshäuser in der Regel nicht Zugang zu den jeweils besten<br />

Fabrikationsstätten, die in der Hand der großen Chiphersteller sind).<br />

Ein Beispiel <strong>für</strong> einen ASIC sehen wir auf der folgenden Folie. Die<br />

farbigen Striche und Rechtecke sind Leitungen in unterschiedlichen<br />

Materialien aus denen die Transistoren und Verbindungen aufgebaut<br />

werden.<br />

10


Full Custom Entwurf<br />

11


Full-custom<br />

ASIC-Entwurfsprozess<br />

Funktionale Beschreibung<br />

Floorplanning<br />

Design und Layout<br />

Design Rule Check<br />

Extraktion der Netzliste<br />

Simulation<br />

Electrical Rule Check<br />

Maskengenerierung<br />

Fertigung<br />

Test<br />

12


Wenn der Anwender sich beim Entwurf auf eine Menge von<br />

vorgegebenen Standardzellen beschränken kann und das Plazieren<br />

auf dem Chip (Placement) sowie das Verdrahten der Standardzellen<br />

untereinander (Routing) durch ein Programm durchgeführt wird,<br />

spricht man von einem Semi-Custom ASIC. Ein solcher Entwurf ist oft<br />

signifikant preisgünstiger als ein Full-Custom Entwurf, erreicht aber<br />

nicht die Integrationsdichte eines solchen.<br />

Die folgende Folie zeigt das Bild eines Semi-Custom Chips. Man<br />

erkennt deutlich die Zeilen, in denen die Standardzellen<br />

nebeneinander andgeordnet sind, und zwischen denen sich so<br />

genannte Routing-Kanäle <strong>für</strong> die Verbindung der Standardzellen<br />

untereinander befinden.<br />

Zur Semi-Custom-Klasse zählen auch Gate-Arrays. Dies sind Chips,<br />

bei denen in einem ersten Fabbrikationsschritt eine große Menge von<br />

Gattern auf dem Chip integriert wurde, aber zunächst ohne Routing. In<br />

einem zweiten, vom Kunden gesteuerten Fertigungsprozess, werden<br />

die Verbindungsleitungen entsprechend der kundenspezifischen<br />

Schaltung hinzugefügt. Diese Technologie hat aber in den letzten<br />

Jahren an Bedeutung verloren.<br />

13


Semi-Custom Entwurf<br />

14


Wenn die Strukturen auf dem Silizium weitgehend<br />

anwendungsunspezifisch vorgegeben sind und der Anwender seine<br />

Schaltung durch nachträgliche Manipulation eines solchen Chips<br />

implementiert, spricht man von Field Programmable Logic. Sie wird<br />

also quasi erst im Anwendungsfeld programmiert.<br />

Diese gibt es in zwei grundsätzlich verschiedenen Ausprägungen:<br />

• Einmalig programmierbar<br />

• Reprogrammierbar<br />

Einmalig programmierbare Schaltungen sind in der Regel schneller<br />

und flächeneffizienter aufgebaut. Diese Vorteile stehen dem Nachteil<br />

gegenüber, dass der Entwurfsprozess wesentlich komfortabler mit<br />

reprogrammierbarer Logik gestaltet werden kann. Beispiele da<strong>für</strong><br />

werden wir später kennen lernen.<br />

15


Taxonomie der ICs<br />

Standard ICs<br />

Standard ICs<br />

Logik Logik<br />

Familien<br />

Speicher<br />

Mikroprozessoren<br />

Digitale integrierte Schaltkreise<br />

Digitale integrierte Schaltkreise<br />

Field Fieldpro programmable<br />

Speicher<br />

PROM PROM<br />

EPROM<br />

EEPROM<br />

Logik<br />

Logik<br />

PLDs<br />

PLDs<br />

ASICs<br />

ASICs<br />

Full Full<br />

Custom<br />

Gate- Gate-<br />

Array Array<br />

FPGAs<br />

FPGAs<br />

Semi Semi<br />

Custom<br />

Standard-<br />

Cell Cell<br />

16


Full-Custom<br />

IC<br />

Standard-<br />

Cell IC<br />

Gate Array FPGA<br />

Anzahl Gatter 500.000.000 10.000.000 1.000.000 1.000.000<br />

Entw.-Zeit 1-2 Jahre 2-4 Monate 3-6 Wochen 1-30 Tage<br />

Entw.-Kosten<br />

Witschaftl.<br />

Stückzahl<br />

hoch<br />

ab ca. 200.000<br />

mittel<br />

ca. 80.000<br />

mittel<br />

ca. 50.000<br />

niedrig<br />

ca. 10.000<br />

ab 100.000 ab 5000 ab 1000 ab 1<br />

PLD<br />

2.000<br />

1 Tag<br />

niedrig<br />

ca. 300<br />

ab 1<br />

17


Rechenleistung<br />

ASIC<br />

Rechenleistung vs. Flexibilität<br />

Spezialrechner<br />

ASIC: application specific integrated circuit<br />

FPGA: field programmable gate array<br />

FPGA<br />

Mikroprozessoren<br />

Größe des<br />

Anwendungsspektrums<br />

18


Integrationsdichte<br />

Höchstintegration vs. schneller Entwurf<br />

ASIC<br />

angepasster<br />

Mikroprozessor<br />

PCB<br />

ASIC: Application Specific Integrated Circuit<br />

FPGA: Field Programmable Gate Array<br />

PLA: Programmable Logic Array<br />

PCB: Printed Circuit Board<br />

PLA<br />

FPGA<br />

Designgeschwindigkeit<br />

19


Typen konfigurierbarer und rekonfigurierbarer Logik<br />

Üblich sind zwei Arten der <strong>Implementierung</strong>:<br />

Schaltnetzrealisierung durch Speicher<br />

Schaltnetzrealisierung mit AND- und OR-Plane<br />

Wir sehen Beispiele <strong>für</strong> die beiden Techniken auf den folgenden<br />

Folien.<br />

Die Realisierung kann unveränderlich oder reprogrammierbar sein. Bei<br />

unveränderlicher Realisierung werden im Moment des Erzeugens der<br />

individuellen Schaltung bestimmte Verbindungen durchtrennt (man<br />

bezeichnet diesen Vorgang häufig als „Brennen“). Die Stellen, an<br />

denen Verbindungen so durchtrennt werden können, werden als<br />

Fuses (Sicherungen) bezeichnet. Durch das Brennen wird die Ein-<br />

Ausgabe-Funktion der Schaltung festgelegt.<br />

Bei reprogrammierbarer Realisierung werden Speicher beschrieben,<br />

die danach den Betrieb der Schaltung steuern. Im Allgemeinen ist der<br />

Speicher selbst schon die Realisierung der Schaltung, d.h. die<br />

Eingaben sind die Adressen und die Ausgaben sind die gespeicherten<br />

Werte.<br />

20


Beispiel: Realisierung eines Schaltnetzes als ROM (Read Only<br />

Memory)<br />

Ein ROM wird zur Generierung des Schaltnetzes mit der Wertetabelle<br />

der zu entwerfenden Funktion beschrieben.<br />

Im Betrieb wird dieses ROM danach benutzt, indem die Eingaben in<br />

das Schaltnetz an die Addresseingänge des ROM gelegt werden, und<br />

die Ausgaben des Schaltnetzes durch die Ausgaben des ROM<br />

geliefert werden.<br />

Eingaben<br />

Ausgaben<br />

21


Beispiel: Ein Volladdierer, realisiert mit einem 8x2-Bit ROM<br />

Wertetabelle ROM<br />

x 2 x 1 x 0 s c<br />

0 0 0 0 0<br />

0 0 1 1 0<br />

0 1 0 1 0<br />

0 1 1 0 1<br />

1 0 0 1 0<br />

1 0 1 0 1<br />

1 1 0 0 1<br />

1 1 1 1 1<br />

Eingaben<br />

x 2 ,x 1 ,x 0<br />

000<br />

001<br />

010<br />

011<br />

100<br />

101<br />

110<br />

111<br />

0 0<br />

1 0<br />

1<br />

0<br />

0 1<br />

1 0<br />

0 1<br />

0 1<br />

1 1<br />

c<br />

s<br />

22


Beispiel: Ein 8x2-Bit ROM (Fuse-Technik, d.h. nicht<br />

reprogrammierbar), bisher noch nicht „gebrannt“<br />

Eingaben<br />

x 2 ,x 1 ,x 0<br />

000<br />

001<br />

010<br />

011<br />

100<br />

101<br />

110<br />

111<br />

1 0 1<br />

1<br />

1<br />

23


Beispiel: Ein Volladdierer, realisiert mit einem 8x2-Bit ROM. Das<br />

„Brennen“ erfolgt durch herausnehmen von Source-Verbindungen der<br />

MOSFETs (Fuses).<br />

1 0 1<br />

Eingaben<br />

x 2 ,x 1 ,x 0<br />

000<br />

001<br />

010<br />

011<br />

100<br />

101<br />

110<br />

111<br />

1<br />

1<br />

s<br />

c<br />

24


Die letzte Folie hat gezeigt: Ein Bit der Wertetabelle einer booleschen<br />

Funktion benötigt in einer Fuse-Technik einen Transistor (der durch<br />

den Prozess des Brennens aktiviert oder deaktiviert sein kann).<br />

Natürlich können wir auch dieselbe Wertetabelle in einem<br />

wiederbeschreibbaren Speicher, z.B. einem SRAM unterbringen. Der<br />

Unterschied ist der Schaltungsaufwand. Für ein Bit in einer SRAM<br />

Zelle benötigen wir 6 Transistoren. D.h. wir haben ungefähr einen um<br />

einen Faktor 6 höheren Flächenaufwand. Entsprechend sind logisch<br />

gleichgroße Speicher in Antifuse-ROM-Technologie kleiner und<br />

schneller.<br />

Dieses Merkmal zieht sich durch alle Schaltkreisfamilien, in denen wir<br />

reprogrammierbare oder einmalig brennbare Bausteine vorfinden. Wir<br />

bezahlen die Reprogrammierbarkeit mit einer geringeren Integrations-<br />

Dichte und einer geringeren Schaltgeschwindigkeit.<br />

25


Der Vorteil von Reprogrammierbarkeit soll aber hier auch nicht<br />

verschwiegen werden: Im Prozess des Entwurfs einer Schaltung ist<br />

die Bearbeitung von Designfehlern und der Test erheblich<br />

kostengünstiger. Dies macht die reprogrammierbaren Bausteine<br />

besonders <strong>für</strong> den Einsatz in Forschung und Entwicklung besonders<br />

attraktiv.<br />

Tatsächlich machen die beiden größten Firmen im Bereich der FPGAs<br />

(Xilinx und Altera) gegenwärtig mehr als 90% ihres Geschäfts mit<br />

reprogrammierbaren Bausteinen.<br />

26


Realisierung eines Schaltnetzes als PLA mit AND- und OR-Plane<br />

AND-Plane<br />

&<br />

&<br />

&<br />

Minterme<br />

OR-plane<br />

≥1 ≥1 ≥1<br />

Eingaben Ausgaben<br />

27


Beispiel: Volladdierer als PLA mit AND- und OR-Plane<br />

x 2<br />

AND-Plane<br />

1 1 1<br />

x 1<br />

x 0<br />

Minterme<br />

OR-plane<br />

s c<br />

28


0<br />

1<br />

0<br />

Beispiel: Funktionen y1 = x0x1x2 + x0x1x2 und y0 = x0x1x2 realisiert als PLA mit AND- und OR-Plane<br />

0<br />

x 2<br />

1 1 1<br />

x 1<br />

x 0<br />

Eingänge Ausgänge<br />

y 1<br />

1<br />

0<br />

y 0<br />

29


FPGA (Field Programmable Gate Arrays)<br />

FPGAs sind heute die leistungsfähigsten anwenderprogrammierbaren<br />

Bausteine. Es gibt weltweit etwa 10 Hersteller, von denen Xilinx, Altera,<br />

Quicklogic, Actel die wichtigsten sind.<br />

Das Konzept des FPGAs ist die Bereitstellung einer Vielzahl von<br />

identischen konfigurierbaren Zellen, so genannten Configurable Logical<br />

Blocks (CLBs). Diese können Boolesche Schaltnetze mit zwischen 4<br />

und 16 Eingängen realisieren und haben in der Regel ein bis vier<br />

Flipflops zur Speicherung der Ergebnisse zur Verfügung.<br />

XilinX: Configurable Logic Block (CLB)<br />

Altera: Logic Element (LE)<br />

Actel: Logic Tile (LT)<br />

QuickLogic: Logic Cell (LC)<br />

In modernen FPGAs wird häufig als zusätzliche Funktionalität ein oder<br />

mehrere Blöcke RAM vorgehalten. Auch das integrieren von einfachen<br />

Prozessorkernen wird unterstützt.<br />

FPGAs gibt es sowohl als einmalig brennbare Bauteile als auch als<br />

reprogrammierbare Einheiten.<br />

Auf der nächsten Folie ist der Floorplan eines typischen FPGAs<br />

abgebildet.<br />

30


Beispiel <strong>für</strong> einen CLB eines XilinX XC3000 FPGAs<br />

31


Beispiel: Floorplan eines FPGA<br />

CLB<br />

RAM<br />

Verdrahtungskanäle<br />

Pad-Cellen <strong>für</strong> die<br />

Verbindung nach außen<br />

32


Ebenen beim Entwurf digitaler Schaltungen<br />

Die Ebenen, die bei dem Entwurf einer Schaltung durchlaufen werden,<br />

definieren die Anforderungen an ein Softwaresystem, das den<br />

Entwurfprozess unterstützen soll. Wir wollen diese Ebenen zunächst<br />

kennen lernen, um danach beurteilen zu können, an welcher Stelle des<br />

Entwurfs wir uns Unterstützung durch Software erhoffen können.<br />

Die oberste Ebene ist die Verhaltensebene. Auf dieser wird die<br />

Schaltung durch Leistungsanforderungen an ihr Ein-Ausgabe-Verhalten<br />

beschrieben. Die Verhaltens-Beschreibung macht keine Festlegung<br />

über die Strukturierung, <strong>Implementierung</strong>, Technologie usw.<br />

Darunter liegt die Architektur-Ebene. Hier wird festgelegt, aus welchen<br />

Komponenten die Schaltung aufgebaut werden soll, mit welchen<br />

Hardware-Bausteinen also die Funktion erfüllt werden kann. Beispiele<br />

<strong>für</strong> solche Bausteine können <strong>für</strong> ein komplexes System wie z.B. das<br />

Motherboard eines Computers die beteiligten Prozessoren,<br />

Speicherchips, Controller, usw. Zwischen diesen Bauteilen bestehen<br />

Schnittstellen, die ebenso wie die Bauteile selbst wiederum funktional<br />

beschrieben werden müssen. Ein Beispiel <strong>für</strong> ein weniger komplexes<br />

33


&<br />

≥1<br />

Abstraktionsebenen beim Entwurf digitaler <strong>Systeme</strong><br />

J Q<br />

K<br />

Verhaltens-Ebene<br />

Architektur-Ebene<br />

RT-Ebene<br />

Logik-Ebene<br />

Transistor-Ebene<br />

Physikalische Ebene<br />

Speicher CPU I/O<br />

A B<br />

Mux<br />

Control<br />

ALU<br />

34


System ist ein zu entwerfender Mikrocontroller. Hier könnten die<br />

Bausteine eine ALU, ein Multiplizierer, ein On-Chip-Cache, ein<br />

Registersatz, eine Befehls-Dekodierungs-Einheit usw. sein. Wiederum<br />

sind diese Komponenten und ihre Schnittstellen funktional zu<br />

beschreiben.<br />

Die Ebene darunter ist die Register-Transfer-Ebene (RT-Ebene).<br />

Bausteine sind hier Register, Multiplexer, Addierer, Schaltnetze, Shifter,<br />

usw. Die Schnittstellen zwischen diesen Einheiten sind Datenpfade, auf<br />

denen Registerinhalte ausgetauscht werden. Das Verhalten der<br />

Einheiten ist durch die Operationen bestimmt, <strong>für</strong> deren Ausführung sie<br />

erforderlich sind.<br />

Unter der Register-Transfer-Ebene liegt die Logik-Ebene. Hier sind die<br />

Einheiten Gatter, Flipflops, Transmissionsgatter. Ihr Verhalten kann<br />

durch boolsche Ausdrücke beschrieben werden.<br />

Unter der Logik-Ebene kommt die Transistor-Ebene. Diese ist aus<br />

Transistoren und passiven Elementen wie Leitungen aufgebaut. Die<br />

physikalischen Ebenen unterhalb der Transistor-Ebene sollen uns in<br />

dieser Vorlesung nicht interessieren.<br />

35


Verhaltens-<br />

Ebene<br />

Architektur<br />

Ebene<br />

Register Transfer<br />

Ebene<br />

Verhaltensbeschreibung<br />

Struktur<br />

Leistungsanforderungen keine<br />

Ein-Ausgabeverhalten<br />

der Architektur<br />

Datenfluss, State<br />

Machines<br />

Blockschaltbild<br />

RT-Diagramme<br />

Logik-Ebene Boolesche Gleichungen Netzliste<br />

Transistor-Ebene Differenzialgleichungen el. Schaltbild<br />

Elemente<br />

Prozessoren, Speicher<br />

Busse, Controller<br />

Register, Multiplexer,<br />

Dekodierer<br />

Flipflops, Gatter<br />

Transistoren, Dioden<br />

Kondensatoren<br />

36


Daten<br />

Speicher<br />

Befehls-Dekodierung<br />

ALU<br />

FPU<br />

Multiplizierer<br />

Daten, Befehle, Selektoren<br />

OP-<br />

Muxe<br />

Clk<br />

Daten<br />

Daten, Befehle, Selektoren<br />

37


Spaltenselektor<br />

In<br />

Zeilenselektor<br />

In<br />

Datalink<br />

Westen<br />

Vom CW<br />

Spaltenselektor<br />

Out<br />

2<br />

12<br />

2<br />

Instruction<br />

Out<br />

Instruction<br />

In<br />

rs cs<br />

Writeport<br />

ALU<br />

6<br />

Datalink<br />

Norden<br />

Flag-Manager<br />

Floating Point Einheit (FPU)<br />

Shifter<br />

Datalink<br />

Süden<br />

RAM-Registerfile<br />

Befehlsdekoder<br />

Bedingt-Logische<br />

Einheit<br />

Multipizierer<br />

Vom CN<br />

R0<br />

R1<br />

R31<br />

Op0-Indexreg. Op1-Indexreg. Res-Indexreg.<br />

Kommunikationsregister<br />

Vom CS<br />

Op0-MUX<br />

Read-<br />

Port<br />

Op1-MUX<br />

Clock-<br />

Verteiler<br />

Zeilenselektor<br />

Out<br />

Datalink<br />

Osten<br />

Vom CE<br />

Clock<br />

38


ybar<br />

x<br />

r_mult<br />

s_mult<br />

1<br />

≥1<br />

VA<br />

≥1<br />

VA<br />

39


Beim Entwurf eines digitalen Systems durchläuft man die hier<br />

angesprochenen Ebenen der Abstraktion.<br />

In bestimmten Entwurfsprozessen ist die Detailkenntnis aller Ebenen<br />

nicht erforderlich. Z.B. braucht ein Standard-Cell-Designer nur sehr<br />

wenig über die Transistor-Ebene zu wissen, da sein Entwurfziel auf der<br />

Logik-Ebene bereits erreicht ist. Die Umsetzung seiner bis dahin<br />

entworfenen Schaltung in ein physikalisches Layout ist Aufgabe des<br />

Semi-Custom-Entwurfssystems (also eines Programms).<br />

Wir favorisieren hier einen Top-Down-Entwurfsprozess. Wir wollen bei<br />

unseren Entwürfen bei der Verhaltens-Ebene beginnen, und nach und<br />

nach auf dem Weg hinunter zur Logik-Ebene das Verhalten der<br />

Schaltung durch eine Strukturierung ihrer Bauteile sicherstellen. Man<br />

implementiert also auf diesem Weg „Verhalten“ durch „Struktur“.<br />

Begleitend soll der Entwurf in jeder Phase überprüfbar korrekt sein. Dies<br />

geschieht durch Simulation.<br />

43


Simulation erfordert die Modellierung der<br />

Schaltung auf der jeweiligen<br />

Entwurfsebene und die Kontrolle der<br />

Funktion dieses Modells bei der Eingabe<br />

von aussagefähigen Simulationsstimuli<br />

(Eingabewerten).<br />

44


Am wünschenswertesten ist eine Simulationsumgebung, die unabhängig<br />

vom Stadium des Entwurfs (dem Anteil von Verhaltensmodell und<br />

Strukturmodell) ist. Man möchte also einen Satz von Simulationsstimuli<br />

benutzen, mit dem dieselbe Funktionalität in allen Ebenen des Entwurfs<br />

verifiziert werden kann.<br />

45


Strukturelle vs. Verhaltensbeschreibung von Schaltungen<br />

Man kann Schaltungen mit Ihrer Struktur oder mit ihrem Verhalten<br />

beschreiben. Bei der Beschreibung mittels der Struktur beziehen wir uns<br />

auf den Aufbau der Schaltung aus einzelnen Komponenten, die<br />

wiederum ihrerseits beschrieben werden können. Bei einer<br />

Verhaltensbeschreibung wird angegeben, welche datenverarbeitenden<br />

Prozesse die Schaltung realisiert. Wir beschreiben also ihr<br />

Verarbeitungsverhalten der Eingangsdaten und geben auf diese Weise<br />

algorithmisch an, wie die Ausgangsdaten aus den Eingangsdaten<br />

berechnet werden.<br />

Man kann Strukturbeschreibung und Verhaltensbeschreibung mischen.<br />

Z.B. könnten die Komponenten einer Strukturbeschreibung eines<br />

Bausteins in ihrem Verhalten beschrieben werden. Im Hardwareentwurf<br />

beginnen wir in der Regel mit Verhaltensbeschreibungen. Diese werden<br />

dann nach und nach durch Strukturbeschreibungen ersetzt.<br />

Der Prozess des Hardwareentwurfs kann also im weitesten Sinne als<br />

kontinuierliche Ersetzung von Verhalten durch Struktur verstanden<br />

werden.<br />

46


Definition<br />

Unter einer strukturellen Beschreibung eines Bausteins versteht man<br />

die Beschreibung einer Skizze, die angibt, welche Komponenten (und<br />

wie viele Instanzen der Komponenten) zur Realisierung des Bausteins<br />

genutzt werden und wie diese Komponenten mit den Ein- und<br />

Ausgängen des Bausteins verdrahtet sind.<br />

47


Definition<br />

Unter einer Verhaltensbeschreibung eines Bausteins versteht die<br />

funktionale Modellierung seines Ein-/Ausgabeverhaltens.<br />

48


Beispiel: Verhaltensbeschreibung eines Volladdierers<br />

architecture Behavioral of VA is<br />

Begin<br />

s


Beispiel: Strukturbeschreibung eines Volladdierers<br />

architecture Structural of VA is<br />

BEGIN<br />

HA1: HA PORT MAP(<br />

A => A,<br />

B => B,<br />

S => S1HA,<br />

Cout => C1HA<br />

);<br />

HA2: HA PORT MAP(<br />

A => S1HA,<br />

B => Cin,<br />

S => S2HA,<br />

Cout => C2HA<br />

);<br />

Cout


Beispiel: Der FPGA-Entwurfsablauf ab der RT-Ebene<br />

Eingabe<br />

VHDL Verilog<br />

Netzliste<br />

Synthese<br />

Implementation<br />

Bitfile<br />

Chip<br />

Programmierung<br />

Verhaltenssimulation<br />

Funktionale Simulation<br />

Statische Timing Analyse<br />

Timing Simulation<br />

In-Circuit Verification<br />

Verifikation<br />

51


Synthese<br />

VHDL<br />

VHDL<br />

Syntax Check<br />

grafische RTL<br />

Darstellung<br />

Technology Mapping<br />

Netzliste<br />

Netzliste<br />

Netzliste<br />

Überprüfung des VHDL Codes<br />

auf Syntax und Semantik<br />

Abbildung der Logik von RTL<br />

Ebene auf Gatter-Ebene<br />

52


Implementation<br />

Netzliste<br />

Netzliste<br />

Netzliste<br />

Translate<br />

Map<br />

Place & Route (PAR)<br />

Bitfile<br />

Constraints<br />

Generiert aus mehreren Netzlisten und<br />

Constraints eine einzige Netzliste<br />

Logischer „Design Rule Check“ und<br />

Abbildung der Logik auf<br />

Komponententypen der Zielarchitektur<br />

Abbildung der Komponenten auf<br />

definierte physikalische Einheiten der<br />

Zielarchitektur und erstellen<br />

der Verbindungen<br />

53


Funktion der Hardwarebeschreibungssprache<br />

Die Hardware Description Language (HDL) hat die Aufgabe, den<br />

Entstehungsprozess eines Hardwareentwurfs durch die verschiedenen<br />

Ebenen zu unterstützen. Die Sprachen Verilog HDL und VHLD sind<br />

weltweit etwa gleichstark vertreten. In Europa gibt es ein Übergewicht<br />

von VHDL, in Amerika von Verilog HDL.<br />

HDLs unterstützen den Top-Down-Entwurf. In der HDL kann eine<br />

Schaltung auf der Verhaltensebene modelliert und simuliert werden.<br />

Sodann kann sie durch schrittweise Ersetzung von Verhalten durch<br />

Struktur in eine synthetisierbare Form gebracht werden. Jeder dieser<br />

Schritte kann wiederum durch Simulation verifiziert werden.<br />

Die finale strukturierte HDL-Beschreibung ist schließlich die Eingabe in<br />

das zur Verfügung stehende Synthese-Tool.<br />

Gegenstand dieser Vorlesung ist das Erlernen von VHDL in der<br />

Anwendung, einfache Schaltungen auf eine FPGA-Zielarchitektur zu<br />

bringen.<br />

54


Funktion der Hardwarebeschreibungssprache<br />

• Macht die Komplexität heutiger <strong>Systeme</strong> beherrschbar<br />

• Manueller Entwurf fehleranfällig<br />

• Simulation des Gesamtsystems zu rechenaufwendig<br />

• Entwurfsaufgaben können auf meherere Personen verteilt werden<br />

• Wiederverwendung von bestehenden Entwürfen wird unterstützt<br />

• Kann zum Datenaustausch dienen<br />

• Auftraggeber und –nehmer<br />

• Entwickler im selben Entwurfsteam<br />

• Zwischen verschiedenen Ebenen des Entwurfs<br />

• Zwischen unterschiedlichen Tools verschiedener Hersteller<br />

• Kann der Dokumentation dienen<br />

• Lebensdauer des Systems höher als Zugriffszeit auf Entwickler<br />

• Erleichtert Wiederverwendung bei Modifikationen im Entwurf<br />

• Erleichtert Wiederverwendung bei Technologiewechsel<br />

• Garantiert Konsistenz in der Dolumentation<br />

55

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!