Software-Codesign

Hardware/Software-Codesign Kapitel 6: Systemsynthese M. Schölzel Modelle für den Systementwurf Typische Modelle im Entwurfsablauf Prozessbasierte ...
Author: Eike Neumann
13 downloads 0 Views 939KB Size
Hardware/Software-Codesign Kapitel 6: Systemsynthese M. Schölzel

Modelle für den Systementwurf

Typische Modelle im Entwurfsablauf Prozessbasierte Modelle (Kommunizierende Prozesse,, DFGs), Zustandsbasierte Systeme (Petrinetze, State Charts) zur Modellierung von Nebenläufigkeit

Verarbeitungselemente (Prozessoren, ASICs, ASIPs) und Kommunikationselemente

System

Programmiersprachen, CFG, DAGs zur Modellierung sequentiellen Verhaltens

Verhalten

Zustandsautomaten zur Modellierung sequentieller Logik, Aussagenlogische Formeln, Wahrheitswertetabellen zur Modellierung Boolescher Funktionen

Prozessor Logik Standardzellen

Physisch

Struktur Komponenten: z.B. ALUs, Register, Multiplizierer

Gatter (NAND, NOR), Flip-Flops

Spannungs/Stromgleichungen Transistoren, Netzlisten

Prozess-basierte Modelle Prozesse (P):

 Verarbeiten Daten  Datenverarbeitung im Prozess sequentiell  Prozesse arbeiten nebenläufig, Reihenfolge nur durch Datenabhängigkeiten gegeben

Verschiedene Arten der Kommunikation (C) möglich:

 Gemeinsamer Speicher (Semaphore, Kritische Sektionen für gegenseitigen Ausschluss)  Nachrichtenbasiert (synchron oder asynchron)

P1

C1

P2

C2

PE 3

C3

Details Prozess Prozess

P3

Steuerflussgraph des Prozesses

Kommunikation

 Nichtdeterministisches Verhalten kann entstehen (Race-Conditions)  Deadlocks können entstehen

Beispiel: Deadlock P1

P3

P2

 P3 besitzt 2 Ressourcen und wartet gleichzeitig auf Anforderungen von P1 und P2.  P1 bzw. P2 benötigen beide Ressourcen gleichzeitig.  P1 fordert zuerst bei P3 eine Ressource an.  Bevor P1 die zweite Ressource anfordern kann, fordert diese P2 an.  Weder P1 noch P2 können jetzt die benötigte zweite Ressource erhalten.

Beispiel: Race-Condition P1

P2 Schreibt danach Y

Schreibt X

P1

P2

Schreibt danach X

Schreibt zuerst Y

Liest dann erst Y P3

Liest dann erst X P3

Reihenfolge, in der P1 und P2 den Kommunikationskanal (z.B. gemeinsame Variable) nutzen, beeinflusst das Ergebnis des Systems.

Kahn Prozess Netzwerk Verhalten des Netzwerks wird deterministisch durch Einschränkungen bei der Kommunikation Kommunikationskanäle sind:    

Nachrichtenbasiert Unidirektional Punkt zu Punkt Verbindungen Asynchrone FIFOs mit unendlich großem Puffer

Prozesse:   

Schreibende Prozesse werden wegen unendlich großer Puffer nie blockiert Lesende Prozess werden blockiert, falls keine Daten im Kanal vorhanden sind Gleichzeitiges Lesen mehrerer Kanäle nicht erlaubt

Konsequenz:  

Reihenfolge, in der Kanäle von einem Prozess gelesen werden, ist durch den Prozess statisch festgelegt; kann sich aber in Abhängigkeit verfügbarer Daten ändern KPN haben ein deterministisches Verhalten

P1

K2

P3

Praktische Umsetzung von KPN Für KPN ist unentscheidbar  Halteproblem  Beschränkte Puffergröße

Implementierung eines KPN Modells erfordert:

 Dynamische Ablaufplanung mit Prozesswechsel  Anpassung der Puffergröße Umschalten auf



anderen Prozess, wenn Kanal blockiert.



Datenflussgraph (DFG)  Prozesse werden zu Aktoren: − Ein Aktor wird erst aktiviert, wenn alle eingehenden Kanäle genügend Daten erhalten. − Daten werden gelesen, verarbeitet und Ausgabedaten geschrieben − Damit ist ein Aktor eine atomare Ausführungseinheit, bei dem – einmal gestartet – kein Wechsel zu einem anderen Aktor erforderlich wird.

 Kanäle: − sind weiterhin FIFOs mit unendlicher Kapazität − unidirektionale Punkt-zu-Punkt Verbindungen

 DFGs erlauben eine vereinfachte Ablaufplanung verglichen mit KPN, da Ausführung von Aktoren nicht unterbrochen werden muss.  Trotzdem bleibt im Allgemeinen eine dynamische Ablaufplanung erforderlich.

Synchroner Datenflussgraph (SDF)  Anzahl der konsumierten/produzierten Daten eines Aktors je Kanal ist konstant  Damit statische Ablaufplanung möglich  SDF G = (V,E,c,p,d) mit − − − − −

V ist die Menge der Knoten (Aktivitäten) E Í V ´ V Kantenmenge (FIFO-Speicher) c : E ®  konsumierte Marken beim Feuern p : E ®  produzierte Marken beim Feuern d : E ®  Anzahl der initialen Marken in den FIFOs

 Gut geeignet zur Modellierung von Signalverarbeitungssystemen

Beispiel zu SDF Schaltung zur Bilddatenkompression 77

produzierte konsumierte Daten Daten

D

1 R

1 1

1

77

1

1

1

1

77

Q Quelle

DCT

1 C

RLC

Quelle: Bildquelle

C: Neuer Wert für Q nach 77 Blöcken

DCT: Diskrete Cosinus-Transformation

RLC: Lauflängen Kodierung

Q: Quantisierer (1 Wert pro quantisiertem Block)

R: Wert für Q muss für 77 Blöcke wiederholt werden.

Topologiematrix zum SDF Knoten 1

1

1 1

2

Knoten 2 Knoten3

3 1

Aufbau der Topologiematrix:

 Jede Spalte j entspricht einer Kante  Zeile i entspricht Knoten i  Zwei Fälle für Eintrag cij:

− cij < 0: Knoten i produziert -cij Marken von Kante j − cij > 0: Knoten i konsumiert cij Marken auf Kante j

1 0 2      1 1 0     0 1 1   Kante von 1 nach 3

1

Kante von 2 nach 3

2

Kante von 1 nach 2

1

Modellierung des dynamischen Verhaltens Eine Markierung der Kanten ist gegeben durch d = (e1,…,e|E|)T mit ei Î . Schaltvorgang, bei dem Knoten i genau ki mal feuert, wird beschrieben durch einen Vektor k = (k1,…,k|V|). Damit ergibt sich eine neue Kantenmarkierung d' durch: d' = d – CT  k, wobei CT die transponierte Topologiematrix des SDF ist. Beispiel zum SDF von voriger Folie:

2 1 1

e1

1

1 3

1 2

e2

e3

1

d 1 0 2    C   1 1 0    1 1   0

CT

k

1  1 1 0 0 1  1  0                         0   0 1 1  1   0  1  1              0 2 0 1 0 0 0  0

Notwendige Bedingung für eine periodische Schaltfolge : CT  k = 0, wobei k ¹ 0 (SDF wird dann konsistent genannt). Das kann nur erfüllt sein, wenn rang(CT) < |V| Knoten (Aktoren) in einem konsistenten SDF sind statisch planbar.

Beispiel Konsistenz im SDF nicht konsistent 1

2

konsistent 1

1

1

1 1

2

1 1

2

3 1

1 0 2     C   1 2 0    1 1  0

1 0 2    C   1 1 0    1 1   0 1 1 0    T C   0 1 1   2 0 1

1

3 1

2

2

1 1 0      0 1 1     0   0 1 

1 1 0     C T   0 2 1    0 1  2

1 1 0     0  2 1    0 0 0 

Konsistenter Graph 3

2

k1

3

1

2

k3

 2 0 2  0  2 3     C   3 3 0  C T   0 3 1      1 1 0 1  2  0

2 1

k2

3

k1=3

k1 k2 k3

2 3 0      0 3 1 0 0 0 

2k1=3k2

k2=2 1

k3=6

3k2 = k3

Schalthäufigkeiten der Knoten

Finden einer Schaltreihenfolge durch beliebige Planung; zum Beispiel: 

3,3,1,2,3,3,1,3,3,1,2

Daraus initiale Kantenmarkierung ableiten, so dass jeder Knoten genug Marken zum Schalten hat, indem Schaltreihenfolge abgearbeitet wird:  

Hat eine Kante nicht genug Marken, darf der Knoten trotzdem feuern, Markenzahl der entsprechenden Kanten wird auf 0 reduziert (sonst werden nur die verbrauchten Marken abgezogen. Erreichte Schlussmarkierung ist auch Anfangsmarkierung: d (e1) = 1, d(e2) = 3, d(e3) = 0

Zustandsbasierte Modelle Endliche Automaten:    

Einfache Modellierung möglich Keine Hierarchie Keine Nebenläufigkeit Moore- und Mealy-Automat bekannt

State-Charts:  unterstützen Hierarchie und Nebenläufigkeit

Hierarchische Modellierung in State Charts Rechtecke mit runden Kanten sind Zustände Pfeile sind Zustandsübergänge Hierarchie Schachtelung der Zustände Zusätzliche Bedingung für Zustandsübergang

Superzustand

Ereignis zum Auslösen des Zustandsübergangs

D A χ (K)

α β

B

Subzustand

C

δ XOR-Dekomposition von D (entweder in A oder in C)

Zustandsübergang in State Charts  a ist ein Ereignis (elementar oder Verknüpfung von elementaren Ereignissen)  P ist boolescher Ausdruck (besonderer Ausdruck ist in S).  A ist eine Aktion: − Externes Ereignis aus Sicht des Systems − Internes Ereignis: Zuweisung eines Ausdrucks an eine Variable (die dann z.B. in einer Bedingung verwendet wird)

α (P) / A S

T

Nebenläufige Zustände Modellierung der Nebenläufigkeit durch AND-Dekomposition von Superzuständen (Ein Subzustand von A und ein Subzustand von D des Superzustandes Y ist aktiv) a ist Synchronisationsereignis (B,F) ® (C,G) unter a

Y

Anfangszustände bei Eintritt in Y

D

A

µ

B E α

β (in G)

C

χ

G

F

δ α

State Chart für Armbanduhr mit Stoppuhr und Alarm Timer Ii / change_item

lr 24H

ul

AM_PM

TIME ul

lr

UPDATE lr / update

ur /light

ll

lr / start_stop STOP WATCH

ll ll

ALARM

ur / reset ur ALARM_ON

ul

ur

ALARM UPDATE

lr CHIME lr

l l / change_item

ul lr / update

ur / stop_bell

Entwurfsmethoden

Syntheseprobleme Systemsynthese Prozessorsynthese / Architektursynthese System

Verhalten

Prozessor Logik Standardzellen

Physisch

Logiksynthese Struktur

Typische Schritte Systemsynthese  Profiling: Informationen über Operationen, Speicher- und Buszugriffe einzelner Prozesse sammeln  Allokation von Prozessoren und Hardware  Binden von Prozessen und Kommunikation an Prozessoren und Busse  Ablaufplanung von Prozessen, die an denselben Prozessor gebunden sind  Zusammensetzen aller allokierten Komponenten zum strukturorientierten Modell

Modell der Systemsynthese Spezifikation des Problems

1

2

1

2

Spezifikation von Zielarchitekturen

(Allokation von Prozessoren und Kommunikationseinheiten)

RISC

ASIC 1

5

Punkt-zu-Punkt Verbindung (P)

3 3

6

4

gemeinsam genutzter Bus (S)

ASIC 2

7

A1

R

S

P

A2

4 P1

Datenflussgraph (z.B. kommunizierende Prozesse)

Problemgraph

Proc 1 Punkt-zu-Punkt Verbindung (P)

P

Proc 2 Kommunikationsknoten P2

Operationsknoten

Zwei mögliche Zielarchitekturen

Architekturgraphen

Spezifikation Problemgraph 1

Abbildungskanten

Architekturgraphen R

A1

5

3

S

P

7

A2

4

6

P1

P

P2

2 Weggelassen wurden die Abbildungskanten von Kommunikationsknoten zu Operatorknoten im Architekturgraph

Aktivierung aller verwendeten Knoten und Kanten Eine gültige Bindung muss folgende Eigenschaften haben:  Alle Knoten und Kanten des Problemgraphen sind aktiviert  Für jeden aktivierten Knoten im Problemgraphen ist genau eine Abbildungskante aktiviert.  Jede aktivierte Abbildungskante beginnt und endet in einem aktivierten Knoten  Für jede Kante (u,v) des Problemgraphen gilt:

− Entweder werden u und v auf denselben Knoten abgebildet oder − zwischen den zwei Knoten, auf die u und v abgebildet sind, existiert eine Kante

Beispiel: Gültige Bindung 1

R

A1

5

3

S

P

7

A2

4

6

P1

P

P2

2

Modellierung der Kosten (5,2) 1

R

5

Beschriftung der Abbildungskanten mit Tupeln, z.B.: (Kosten c, Latenz L, Leistungsverbrauch P) A1 Bewertung mittels 

3

− Setzt voraus, dass Bindung vollständig vorliegt. − Vergleich gegebener Implementierungen möglich

S

 P

7

A2

4

6

totale Kostenfunktion:

P1

P

P2

2 Weggelassen wurden die Abbildungskanten von Kommunikationsknoten zu Operatorknoten im Architekturgraph

partielle Kostenfunktion: − Bewertung unvollständiger Bindungen möglich − dient der Abwägung im Entscheidungsprozess bei der Konstruktion einer Bindung

Anwendungsbeispiel 1 Abbildung unabhängiger Prozesse auf homogenes Multiprozessorsystem: 1

2

3

1

4

P1

2 P2

Problemgraph 3

4

P1

P2

P3

P3 Bus

Prozessorsystem

Spezifikationsgraph

BUS

Anwendungsbeispiel 2 HW/SW-Partitionierung: Proz essor

1 BUS 2

3

ASIC

Simulated Annealing als Lösungsstrategie Ausgangspunkt ist eine gültige Bindung (z.B. zufallsbasiert bestimmt) tn sei eine monoton gegen 0 fallende Folge von Zeitschritten i := 0 In jedem Zeitschritt ti führe k-mal aus:

 Es sei a die aktuelle Bindung  Erzeuge aus a eine neue Bindung b durch Mutation; z.B. durch ändern der Bindung einer Operation  Falls Koste f(b) kleiner als f(a) sind, dann ist b die neue aktuelle Bindung  Falls f(b) ³ f(a), dann wird b mit Wahrscheinlichkeit

die neue aktuelle Bindung.

e



f (b ) f (a ) ti

i := i + 1 Solange ti kleiner als festgelegter Schwellwert, wiederhole ab Punkt 4

Top-Down-Entwurfsablauf 1: Funktionale Beschreibung des Systems einschließlich Nebenläufigkeit ohne Zeitverhalten (z.B. kommunizierende Prozesse) 2: Beschreibung der Struktur des Systems bestehend aus Prozessoren und Verbindungsnetzwerken einschließlich geeigneter Protokolle mit erforderlichem Zeitverhalten 3: Beschreibung des Verhaltens der Prozessoren z.B. durch CFGs und DAGs System Struktur 4: Aufbaus der Prozessoren aus Verhalten Komponenten (Register, ALU, Bus) Prozessor 2 1 5 -> 6: Implementierung der 4 Logik 3 Komponenten durch Logikgatter 5 6 (Logiksynthese) Standard7 zellen 8 7->8: Logikgatter werden auf Standardzellen/Transistoren abgebildet 9 8->9: Layout, Routing

Physisch

Bottom-Up-Entwurfsablauf 1->2->3: Erstellen von Standardzellen (Flip-Flops, NAND-, NOR-Gatter) einschließlich Layout aus Transistoren 4->5->6: Erstellen von RT-Komponenten (Register, ALU, …) beschrieben durch Boolesche Ausdrücke, Endliche Automaten aus Standardzellen 7->8->9: Beschreibung des Verhaltens der Prozessoren durch Programme, CFG, DAGs. Überführung Datenpfad- und Kontrollpfad-Struktur, bis hin zum Layout unter Verwendung der RT-Komponenten 10->11->12: Funktionale Beschreibung des Systemverhaltens, z.B. kommunizierende Prozesse. Überführung in Kommunikationsstruktur zwischen Prozessoren. Schließlich Layoutgenerierung unter Verwendung der bereits entworfenen Prozessoren

Verhalten

Struktur

System

10

Prozessor

7

Logik

4

Standardzellen

1

2 3 6 9 12

Physisch

5

8

11

Meet-in-the-Middle Entwurfsablauf Top-Down-Entwurf auf höheren Abstraktionsebenen Bottom-Up-Entwurf auf niedrigeren Abstraktionsebenen Variante 1: Nutzung von RT-Komponenten aus Bibliothek Variante 2: Nutzung vorhandener Prozessoren Verhalten

1

Struktur

System Prozessor

3

Logik

4

Standardzellen

1

2

5

4

2

Verhalten

1

Prozessor

7

Logik

4

Standardzellen

1

2

3

3

6

6 9

Physisch

Struktur

System

Physisch

5

8

2