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