67
Hardware/Software-Codesign Kapitel 5: Hardwaresynthese M. Schölzel

Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Hardware/Software-Codesign

Kapitel 5: Hardwaresynthese

M. Schölzel

Page 2: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Zur Erinnerung…

Hardwaresynthese − High-Level-Synthese: Überführt Verhaltensbeschreibung auf

Architekturebene in Strukturbeschreibung auf Architekturebene − Logiksynthese: Überführt Verhaltensbeschreibung auf Logikebene in

Strukturbeschreibung

Bloc

k

Mod

ul Sy

stem

Arch

itekt

ur

Logi

k

Software Hardware

Abstraktionen / Ebenen nach J. Teich

Prozessoren, ASICs, ASIPs, Busse, Speicher,…

Programmiersprachen, Hardwarebeschreibungssprachen,

DAGs, …

ALUs, Register, Multiplexer,…

Boolesche Funktionen, Zustandsautomaten,…

Gatter, Flip-Flops, …

Page 3: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Hardware/Software-Codesign

High-Level-Synthese

Page 4: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Ziel der High-Level-Synthese

Eingabe: Spezifikation einer Funktion durch verhaltensorientierte

Beschreibung Zeitbeschränkung

Ausgabe: Datenpfad und Steuerpfad, zur Berechnung der spezifizierten

Funktion − bei Einhaltung der Zeitbeschränkung − mit minimalen Ressourcen

Page 5: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Erzeugte Architektur

Strukturelle Beschreibung einer Architektur besteht aus: Datenpfad

− Funktionale Ressourcen (Addierer, ALUs, …) − Kommunikationsressourcen (Leitungen, Busse) − Speicherressourcen (Register, FIFOs, RAM, …)

Kontrollpfad Klassifikation Datenpfad: Multiplexer-basiert Bus-basiert Klassifikation Kontrollpfad: Direktimplementierung Mikroprogrammiert

Page 6: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Multiplexer-basierte Architektur

Steuerwerk (Automat)

Datenpfad

F. U. F. U.

Reg.

Reg.

Reg.

Mux Mux

Mux

in

out

Page 7: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Bus-basierte Architektur

R1 R2 R3 R4 R5

Multiplizierer A L U

Ergebnisbus

Operandenbus

Page 8: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Ablauf High-Level-Synthese

Eingabe: − Spezifikation der Funktion (z.B. als VHDL-Programm, Hardware-C, C-Code, …)

Übersetzung der Eingabe in Zwischencode + Optimierungen (Eliminierung toten Codes, redundanter Berechnungen, …)

Erstellung einer internen Beschreibung (z. B. Steuerflussgraph, DAG)

High-Level-Synthese: − Datenpfadsynthese

• Scheduling (Erstellen eines Ablaufplans) • Allocation (Auswahl der Ressourcen) • Binding (Zuordnung der Operationen zu Ressourcen)

− Kontrollpfadsynthese

Page 9: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Datenpfad-Synthese

Scheduling und Allocation sind eng verknüpft Bei Optimierung der Ablaufzeit: In der Regel viele Ressourcen erforderlich Bei Optimierung der Ressourcen: Hohe Ablaufzeiten

1

2

3

4

5

DAG Zeitoptimiert Ressourcenoptimiert

1 3 5

2 4

1

2

3

4

5

Page 10: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Problem-Graph

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1 2 6 8 10

3 7 9 11

4

5

Ein Problemgraph ist ein gerichteter azyklischer Graph (DAG) mit Knotenmenge V und Kantenmenge E Í V´V. Knoten sind Aufgaben, Kanten beschreiben Abhängigkeiten zwischen den Aufgaben.

Page 11: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Ressource-Graph

1

3

7

2

6

8

1

1

1

1

1

1

α (r 1) = 1

Multiplizierer

r 1

4

9

11

5

10

1

1

1

1

1

α (r 2) = 1r 2

ALU

Ein Ressourcengraph ist ein bibartiter Graph (VR,K), wobei VR = V È VT und K Í V´ VT. VT ist die Menge der Ressourcentypen. Eine Kante (m,n) repräsentiert die Ausführbarkeit der Aufgabe m auf dem Ressourcentyp n.

Weiterhin ist gegeben: • Kostenfunktion c: VT ® , die jedem

Ressourcentyp Kosten zuordnet. • Gewichtsfunktion w: K ® , die jeder

Kante (m,n) die Berechnungszeit der Aufgabe m auf Ressource n zuordnet.

Ein Synthesemodell ist ein Paar aus Problemgraph und Ressourcengraph: ((V,E), (VR,K)).

Zu lösende Syntheseprobleme: • Scheduling (Finden eines Ablaufplans s

zum Problemgraphen) • Allokation • Bindung

Page 12: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Allokation und Bindung

Zu gegebenem Synthesemodell ((V,E), (VR,K)) legt eine Allokation a : VT ® die Anzahl der vorhandenen Instanzen eines jeden Ressourcentyps fest.

Zu gegebenem Synthesemodell ((V,E), (VR,K)) ist eine Bindung gegeben durch: − b: V ® VT mit (v, b(v)) K ist (Zuordnung zu einem Ressourcentyp) − g: V ® mit g(v) < a(b(v)) (Zuordnung zu einer Instanz eines

Ressourcentyps)

Page 13: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Implementierung

Synthesemodell ((V,E), (VR,K)) ist gegeben.

Eine obere Zeitschranke S

Eine Implementierung ist eine Ablaufplanung, Allokation und Bindung (s,b,g,a) mit folgenden Eigenschaften: − Zeitschranke wird eingehalten:

• Für alle v V: s(v) + w(v, b(v)) S

− In jedem Zeitschritt i werden die vorhandenen Ressourcenbeschränkungen eingehalten:

• "i"r VT:|{v | s(v) i < s(v) + w(v, b(v)) und b(v)=r}| a(r)

Page 14: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Ablaufplan und Bindung des Problemgraphen

Page 15: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Ablaufplan des Problemgraphen bei beschränkten Ressourcen

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1

2

6

8

10

3

7

9

11

4

5

Takt 5

Takt 6

Takt 7

Page 16: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Ablaufplan des Problemgraphen bei beschränkten Ressourcen mit Bindung

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1

2

6

8

10

3

7

9

11

4

5

Takt 5

Takt 6

Takt 7

Page 17: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Datenpfad aus der Implementierung ableiten Operationen mit gleicher Bindung werden

durch dieselbe Ressource implementiert

Kanten werden Register

Überlappende Kanten müssen auf verschiedene Register abgebildet werden.

Register, die von unterschiedlichen Ressourcen beschrieben werden, erhalten Multiplexer am Eingang

Ressourcen, die Werte von verschiedenen Registern nutzen, erhalten Multiplexer am Eingang

Page 18: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Beispiel

MUL Add, Cmp Sub

R1 R2

Mux

Mux Mux Mux Mux

Ext Ext

Page 19: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Ablaufplanung (Scheduling)

Zeitpunkt der Ablaufplanung: statisch (zur Übersetzungszeit) dynamisch (zur Abarbeitungszeit der Aufgabe) Zeitpunkt der Unterbrechnung Aufgabe darf unterbrochen werden (präemptive Ablaufplanung) Aufgabe darf nicht unterbrochen werden (nicht-präemptive Ablaufplanung) Art der Beschränkung ressourcenbeschränkt zeitbeschränkt Periodizität periodisch (Planung für iterative Ausführung) aperiodisch

Page 20: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Zeitbeschränkte Planung - As Soon As Possible (ASAP)

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1 2 6 8 10

3 7 9 11

4

5

0, falls keinen Vorgänger hat( )

max{ ( ) ( ) | ist Vorgänger von } 1, sonstasapasap

vv

u delay u u v

Page 21: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Zeitbeschränkte Planung – As Late As Possible (ALAP)

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1 2

6

8 10

3

7

9 11

4

5

( ), falls keine Nachfolger hat( , )

min{ ( , ) | ist Nachfolger von } ( ), sonstalapalap

L delay v vL v

L u u v delay v

ALAP-Ablaufplan für L = 5

Page 22: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

ASAP-Scheduling mit bedingter Verschiebung (ressourcenbeschränkt)

Ausgangspunkt ist ASAP-Ablaufplan ohne Ressourcenbeschränkung Werden in einem Zeitschritt mehr Ressourcen benötigt, also vorhanden, dann verschieben der nicht ausführbaren Operationen auf späteren Zeitpunkt.

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1 2 6 8 10

3 7 9 11

4

5

ASAP-Ablaufplan ASAP-Ablaufplan mit bedingter Verschiebung

Ressourcenbeschränkung: a(MUL) = 2, a(ALU) = 2

Page 23: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Ressourcenbeschränkte Ablaufplanung (List-Scheduling)

Bekannt

Page 24: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Zeitbeschränkte Ablaufplanung (Force-Directed-Scheduling)

Ähnlich dem List-Scheduling Priorität einer Operation wird dynamisch bestimmt anhand von: Mobilitätsintervall: (v) = [sasap(v), salap(v)] Ausführungswahrscheinlichkeit p(v,t):

Belegung einer Ressource r:

1, falls ( ) ( )

( , ) ( ) 10, sonst

asap alapv t v

p v t v

V und v ist Operation, dieauf Ressource ausgeführtwerden kann

( , ) ( , )v

r

q r t p v t

Page 25: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Beispiel Belegung einer Ressource

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1 2

6

8 10

3

7

9 11

4

5

1

1

0 0

0

0

0

2

2

2

2

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1 2

6

8 10

3

7

9 11

4

5

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1 2 6 8 10

3 7 9 11

4

5

Belegung des Multiplizierers in Zeitschritt 0:

q(MUL,0) = p(1,0) + p(2,0) + p(6,0) + p(8,0) = 1 + 1 + 1/2 + 1/3 = 17/6 = 2,8333…

Page 26: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Belegungsgraph für das Beispiel mit Multiplizierer und ALU

0

1

2

3

1

2

3

qk,t Multiplizierer

q k,t ALU0 1 2 3

0 1 2 3

t

t

Page 27: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Selbstkraft

Takt 0

Takt 1

Takt 2

Takt 3

q(MUL,0)

qm(MUL,v)

q(MUL,1)

q(MUL,2)

q(MUL,3)

Beispiel für Multiplikation

Mobilität der Operation v qm(MUL,v)

qm(MUL,v)

( )

( )

1( , ) ( , )

( ) 1

alap

asap

v

mt v

q r v q r tv

Mittlere Auslastung der Ressource r im Mobilitätsintervall der Operation v:

Selbstkraft der Operation v zum Zeitpunkt t, v benötigt Ressource r:

,( , ) ( , )S

v t mF q r t q r v

Page 28: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Vorgänger-/Nachfolgerkräfte

Takt 0

Takt 1

Takt 2

Takt 3

q(MUL,0)

qm(MUL,u)

q(MUL,1)

q(MUL,2)

q(MUL,3)

Beispiel für Multiplikation

Alte Mobilität der Operation u

qm(MUL,u)

qm(MUL,u)

( )

( )

1( , ) ( , )

( ) 1

alap

asap

u

nt u

q r u q r tu

Planung einer Operation v ändert Mobilität der Vor-/Nachfolgeroperation u Geänderte Mobilität: (u) Geänderte ASAP/ALAP-Zeit: alap(u), asap(u)

Vor/Nachfolgekraftkraft der Operation u zum Zeitpunkt t, u benötigt Ressource r:

,( , ) ( , )N

u t n mF q r u q r u

Neue Mobilität der Operation u

qn(MUL,u)

qn(MUL,u)

Mittlere Auslastung der Ressource r im neuen Mobilitätsintervall der Operation u:

Page 29: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Gesamtkraft

, , , ,( ) ( )

S N Nv t v t u t u t

u Succ v u Pred v

F F F F

Eingabe: Problemgraph (V, E), Ressourcegraph, Zeitschranke L Ausgabe: Ablaufplan s while noch nicht alle Knoten aus V geplant do Bestimme Mobilitätsintervalle aller nicht geplanten Operationen Bestimme Belegungen der Ressourcen und Ausführungswahrscheinlichkeiten Bestimme Gesamtkräfte aller Operationen Plane Operation v in Zeitpunkt t für die Fv,t minimal ist od

Page 30: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Bindung und Allokation

Ausgangspunkt ist eine Spezifikation bestehend aus Problem- und Ressourcengraphen: ((V,E), (VR,K)) und Eventuell eine Ablaufplanung s Lösung durch Betrachtung von Verträglichkeiten/Konflikten: Verträgliche Aufgaben können auf derselben Ressource ausgeführt werden Aufgaben mit Konflikt müssen auf verschiedenen Ressourcen ausgeführt werden.

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1 2 6 8 10

3 7 9 11

4

5

Problemgraph mit Ablaufplanung

Page 31: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Verträglichkeitsgraph

7 3

6 1

2 8

7 3

6 1

2 8

7 3

6 1

2 8

11 5

9 10 4

11 5

9 10 4

11 5

9 10 4

Schwache Verträglichkeit (Best Case)

Ablaufplan-Verträglichkeit Starke Verträglichkeit (Worst-Case)

ALU

Multi- plizierer

u ~w v, gdw. u und v können auf derselben Ressource

ausgeführt werden.

u ~a v, gdw. u ~w v und u wird im Ablaufplan erst gestartet,

nachdem die Ausführung von v beendet wurde.

u ~s v, gdw. u ~w v und im Problemgraphen ex. ein

gerichteter Pfad von u nach v.

Page 32: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Berechnung einer Bindung und Allokation

Berechnung durch Finden maximaler Cliquen im Ablaufplanverträglichkeitsgraphen Im Bsp.: {4,5,10,9}, {11}, {2,7},{3,8},{1},{6} Es werden damit 2 ALUs und 4 Multiplizierer benötigt.

Ablaufplan-Verträglichkeit

7 3

6 1

2 8

11 5

9 10 4

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1 2 6 8 10

3 7 9 11

4

5

Page 33: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Konflikt-Graph Berechnung der Bindung und Allokation durch Färbung des Konfliktgraphen (analog der Färbung des Interferenzgraphen) Im Bsp: {4,5,10,11},{9}, {7,6}{3,1},{2},{8} Damit wieder 2 ALUs und vier Multiplizierer Konfliktgraph nach der Ablaufplanung ist ein Intervallgraph Finden der optimalen Lösung mit Left-Edge-Algorithmus in polynomieller Zeit möglich.

Konfliktgraph nach Ablaufplanung (komplementär zum Verträglichkeitsgraphen)

7 3

6 1

2 8

11 5

9 10 4

u ~k v, gdw. u sind nicht schwach verträglich und werden im Ablaufplan

zur selben Zeit verarbeitet.

Takt 0

Takt 1

Takt 2

Takt 3

Takt 4

1 2 6 8 10

3 7 9 11

4

5

Page 34: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Intervall-Graph

t 2 4 6 8 10 12 14 16 18

1

3

2 4

5

1

2

3

4

5

0

Ein ungerichteter Graph (V, E) heißt Intervallgraph, falls man jedem Knoten v V einen Intervall [av,ev) mit av, ev und av ev zuordnen kann, so dass eine Kannte (u,v) E genau dann existiert, falls sich die Intervalle [au, eu) und [av,ev) überlappen.

Page 35: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Sortierung der Intervalle und Färbung

Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen au und weist jedem Knoten die kleinste Farbe zu, mit der noch kein Knoten gefärbt ist, dessen Intervall mit dem Intervall des aktuellen Knotens überlappt.

Page 36: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Kontrollpfadsynthese

Erzeugen eines Moore-Schaltwerkes (direktimplementiert) Gegeben ist eine Implementierung mit einer Latenz L Konstruktion eines Zustandsdiagramms mit L vielen Zuständen z0,…zL-1. Zustand zi repräsentiert Zeitschritt i Eingangssignal reset Startzustand x0 Zustandsübergangsfunktion:

0

1

, falls ( , )

, sonstii

x e resetf z e

z

MUL1 MUL2 ALU1 ALU2

1

r1 r2

r3

2 3 r1

r1

r1

r2

r2

r2

r3

r3

4 5 6

Kon

trollp

fad

Steu

ersig

nale

Page 37: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Kontrollpfadsynthese - Mikroprogrammgesteuert

Instr. 1: *, *, + Instr. 2: *, *, < Instr. 3: -, *, * Instr. 4: -, +

ROM

Kontrollwort

Adresse

Zustand

Nächste Adresse

Reset

Takt

Steuerwerk

Page 38: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Optimierung der Taktperiode

t(rk) ist die Verzögerungszeit, der Ressource rk

Maximale Operatorverzögerung: Schlupf:

max ( ) |k k T

T t r r V

( )( , ) ( )k

k k

t rs T r T t r

T

Page 39: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Minimierung des mittleren Schlupfes bei gegebener Implementierung

h(rk) sei die Anzahl der Operationen, die an die Ressource rk gebunden sind. Mittlerer Taktschlupf: Minimierung von ms(T) durch Berechnen aller möglichen mittleren Taktschlupfe für Perioden im Intervall [Tmin,…,Tmax] Tmin bzw. Tmax sind minimale/maximale Perioden der Ressourcen Mit optimalem Topt kann dann die Ausführungszeit berechnet werden: Tex = L * Topt

| |

1| |

1

( ) ( , )( )

( )

T

T

V

k kk

V

kk

h r s T rms T

h r

Page 40: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Entwurfsraumexploration von anwendungsspezifischen Befehlssatz-

Prozessoren (ASIPs)

Page 41: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Basiselemente in LISA

Alle Operationen zusammen beschreiben den Befehlssatz des Prozessors Coding: Binärcodierung Syntax: Syntax des Assemblerbefehls Behaviour: Verhalten des Befehls

Beschreibt Architektur der Speicherelemente im Prozessor: Arbeitsspeicher Register Pipeline Alle vereinbarten Ressourcen sind global in der LISA-Beschreibung gültig

RESOURCE { }

OPERATION { CODING { … } SYNTAX { … } BEHAVIOR { … } }

Page 42: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Beispiel für Ressourcendeklaration

Mehrere RESOURCE-Abschnitte erlaubt Verfügbare Ressourcen in LISA: REGISTER PROGRAM_COUNTER RAM

− Size: Anzahl der Elemente im Speicher

− BLOCKSIZE: Bits in einem Element

− FLAGS: R=Lesbar, W=Schreibbar, X=Ausführbar

MEMORY_MAP − RANGE: prog_mem wird auf

Bereich 0x0 … 0xfff abgebildet PIN: Pins des Prozessors Globale Variablen

RESOURCE { PROGRAM_COUNTER uint32 PC; REGISTER uint32 IR; REGISTER uint32 GPR[0..31]; RAM uint32 prog_mem { SIZE(0x1000) BLOCKSIZE(32) FLAGS(R|X) }; MEMORY_MAP { RANGE(0x0000, 0x0FFF) -> prog_mem[(31..0)]; } PIN bit[1] IRQ, NMI }

RESOURCE { uint16 forwarded_address; }

Page 43: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Simple Form der Kodierung einer Operation

ADD r0, r1, r2

OPERATION add { SYNTAX { „ADD“ „r0“, „r1“, „r2“ } CODING {0b0[6] 0b00001 0b00010 0b00000 0b0[5] 0b100000 } BEHAVIOR {GPR[0] = GPR[1] + GPR[2]; } }

Immer 0 Opcode

Problem: So müsste für jeden Befehl und jede Registerkombination eine separate OPERATION-Deklaration angegeben erden. Lösung: Deklaration von Gruppen.

Page 44: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Hierarchie von Operationen

instruction behavior: GPR[0] = GPR[1] + GPR[2] instruction syntax : "ADD r0, r1, r2" instruction coding : 000000 00001 00010 00000 00000 100000

instruction behavior: GPR[0] = GPR[1] - GPR[2] instruction syntax : "SUB r0, r1, r2" instruction coding : 000000 00001 00010 00000 00000 100010

Add-Operation: Sub-Operation:

OPERATION alu { DECLARE { GROUP opcode = {add || sub} } SYNTAX { opcode ~ „r0“, „r1“, „r2“ } CODING {0b0[6] 0b00001 0b00010 0b00000 0b0[5] opcode} BEHAVIOR { operand1 = GPR[1]; operand2 = GPR[2]; opcode(); GPR[0] = result; } }

OPERATION add { SYNTAX { „ADD“ } CODING {0b100000} BEHAVIOR { result = operand1 + operand2 } }

OPERATION sub { SYNTAX { „SUB“ } CODING {0b100010} BEHAVIOR { result = operand1 - operand2 } }

• Ein Bezeichner für mehrere Gruppen

• Obergruppe enthält gemeinsames Verhalten.

• Untergruppen modellieren alternatives Verhalten.

• Gruppenname wird als Platzhalter für korrespondierende Sektion in der Unter-gruppe verwendet

alu

add sub

Operationsgraph

behaviour call

Page 45: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Kodierung/Dekodierung der Operationen

Assembler: Vergleicht die eingegebenen Assembleranweisung mit allen

möglichen Assembleranweisungen, die sich durch den Operationsbaum ergeben.

Die passende Folge der Knoten wird aktiviert Die aktivierten Knoten werden zur Kodierung verwendet. Simulator: Vergleicht Bitmuster der zu simulierenden Operationen mit

allen möglichen Bitmustern, die sich im Operationsbaum bilden lassen

Die passende Folge der Knoten wird aktiviert Behaviour-Sektion der aktivierten Knoten wird zur

Ausführung der Anweisung verwendet. Disassembler: Passende Knoten werden wie im Simulator aktiviert. Syntax-Sektion dieser Knoten wird genutzt, um den

Assemblerbefehl zu erzeugen. HDL Code Generator: Nutzt alle Coding-Sektionen, um daraus den HDL-Code für die

Dekodierlogik der Befehle zu erzeugen.

alu

add sub

opcode r0,r1,r2

opcode = add opcode = sub

alu

add sub

000000 00001 00010 00000 00000 opcode

opcode = 100000 opcode = 100010

Page 46: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Generische Operanden

Verhalten: GPR[dest] = GPR[src1] + GPR[src2] Syntax: "ADD r<dest>, r<src1>, r<src2>" Codierung: 000000 <src1> <src2> <dest> 00000100000

Verhalten: GPR[dest] = GPR[src1] - GPR[src2] Syntax: "SUB r<dest>, r<src1>, r<src2>" Codierung: 000000 <src1> <src2> <dest> 00000100010

Add-Operation: Sub-Operation:

OPERATION alu { DECLARE { GROUP opcode = {add || sub} GROUP dest, src1, src2, = {reg} } SYNTAX { opcode ~ dest „,“ src1 „,“ src2 } CODING {0b0[6] src1 src2 dest 0b0[5] opcode} BEHAVIOR { operand1 = GPR[src1]; operand2 = GPR[src2]; opcode(); GPR[dest] = result; } }

OPERATION add { SYNTAX { „ADD“ } CODING {0b100000} BEHAVIOR { result = operand1 + operand2 } }

OPERATION sub { SYNTAX { „SUB“ } CODING {0b100010} BEHAVIOR { result = operand1 - operand2 } }

OPERATION reg { DECLARE { LABEL idx; } SYNTAX { „r“~idx=#U} CODING {idx=0bx[5]} EXPRESSION { idx } }

Label ist ein lokaler Bezeichner innerhalb einer Operation mit: • textueller Repräsentation

in Syntax-Sektion • Binärrepräsentation in

Coding-Sektion • Wert in Behavior-Sektion

• Mehrere Bezeichner für eine Gruppe.

• Obergruppe modelliert gemeinsames Verhalten.

• Untergruppe modelliert gleiches Verhalten an verschiedenen Stellen in der Obergruppe.

Page 47: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Anpassung durch Assembler

ADD r4, r5, r1

OPERATION alu { … SYNTAX { opcode ~ dest „,“ src1 „,“ src2 } … }

OPERATION add { SYNTAX { „ADD“ } … }

OPERATION sub { SYNTAX { „SUB“ } … }

OPERATION reg { … SYNTAX { „r“~idx=#U} … }

idx=4 idx=5 idx=1

Eingabe:

Page 48: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Codierung durch Assembler

OPERATION alu { … SYNTAX { opcode ~ dest „,“ src1 „,“ src2 } CODING {0b0[6] src1 src2 dest 0b0[5] opcode} … }

OPERATION add { SYNTAX { „ADD“ } CODING {0b100000} … }

OPERATION reg { … SYNTAX { „r“~idx=#U} CODING {idx=0bx[5]} … }

idx=4 idx=1 idx=5

000000 00101 00001 00100 00000 100000 Ausgabe:

Page 49: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Matching im Simulator

OPERATION alu { … CODING {0b0[6] src1 src2 dest 0b0[5] opcode} … }

OPERATION add { … CODING {0b100000} … }

OPERATION reg { … CODING {idx=0bx[5]} … }

idx=4

idx=1 idx=5

000000 00101 00001 00100 00000 100000 Eingabe:

OPERATION sub { … CODING {0b100010} … }

OPERATION reg { … CODING {idx=0bx[5]} … }

OPERATION reg { … CODING {idx=0bx[5]} … }

Page 50: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Evaluierung durch Simulator

OPERATION alu { … CODING {0b0[6] src1 src2 dest 0b0[5] opcode} BEHAVIOUR { operand1 = GPR[src1]; operand2 = GPR[src2]; opcode(); GPR[dest] = result; } }

OPERATION reg { … CODING {idx=0bx[5]} EXPRESSION { idx } }

idx=4 idx=1 idx=5

OPERATION reg { … CODING {idx=0bx[5]} EXPRESSION { idx } }

OPERATION add { … CODING {0b100000} BEHAVIOR { result = operand1 + operand2 } }

OPERATION reg { … CODING {idx=0bx[5]} EXPRESSION { idx } }

Page 51: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Modellierung gemeinsamen Verhaltens in verschiedenen Operationen

Zurückschreiben wird in beiden Operationen genutzt.

OPERATION alu { DECLARE { GROUP opcode = {add || sub} GROUP dest, src1, src2, = {reg} } SYNTAX { opcode ~ dest „,“ src1 „,“ src2 } CODING {0b0[6] src1 src2 dest 0b0[5] opcode} BEHAVIOR { operand1 = GPR[src1]; operand2 = GPR[src2]; opcode(); GPR[dest] = result; } }

OPERATION load { DECLARE { GROUP dest = {reg} LABEL addr } SYNTAX { „LOAD“ ~ “ „ dest „,“ „@“~ addr=#X} CODING {0b1[5] dest addr=0bx[16] 0b111011 } BEHAVIOR { result = data_mem[addr]; GPR[dest] = result; } }

Page 52: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Instanzen zur Nutzung gemeinsamer Funktionalität

OPERATION alu { DECLARE { GROUP opcode = {add || sub} GROUP dest, src1, src2, = {reg} } SYNTAX { opcode ~ dest „,“ src1 „,“ src2 } CODING {0b0[6] src1 src2 dest 0b0[5] opcode} BEHAVIOR { operand1 = GPR[src1]; operand2 = GPR[src2]; opcode(); writeback(); } }

OPERATION load { DECLARE { GROUP dest = {reg} LABEL addr } SYNTAX { „LOAD“ ~ “ „ dest „,“ „@“~ addr=#X} CODING {0b1[5] dest addr=0bx[16] 0b111011 } BEHAVIOR { result = data_mem[addr]; writeback(); } }

OPERATION writeback{ BEHAVIOR { GPR[dest] = result; } }

Problem: dest ist nur lokal in den Operationen alu und load gültig.

Page 53: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Lösung des Problems: Referenzen

OPERATION alu { DECLARE { GROUP opcode = {add || sub} GROUP dest, src1, src2, = {reg} } SYNTAX { opcode ~ dest „,“ src1 „,“ src2 } CODING {0b0[6] src1 src2 dest 0b0[5] opcode} BEHAVIOR { operand1 = GPR[src1]; operand2 = GPR[src2]; opcode(); writeback(); } }

OPERATION load { DECLARE { GROUP dest = {reg} LABEL addr } SYNTAX { „LOAD“ ~ “ „ dest „,“ „@“~ addr=#X} CODING {0b1[5] dest addr=0bx[16] 0b111011 } BEHAVIOR { result = data_mem[addr]; writeback(); } }

OPERATION writeback{ DECLARE { REFERENCE dest; } BEHAVIOR { GPR[dest] = result; } }

Eine Referenz ist ein lokaler Bezeichner, der sich auf eine Gruppe in einer übergeordneten Operation bezieht.

Page 54: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Zusammenfassen aller Befehle

OPERATION decode{ DECLARE { GROUP instruction = { nop || alu || load }; } CODING AT (PC) { IR == instruction } SYNTAX { instruction } BEHAVIOR { instruction(); } }

load alu nop

add sub

decode

Page 55: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Mechanismus Befehlsausführung

OPERATION fetch{ DECLARE { INSTANCE decode; } BEHAVIOR { IR = prog_mem[PC]; PC = PC + 1; decode(); } }

OPERATION main { DECLARE { INSTANCE fetch; } BEHAVIOR { fetch(); } }

OPERATION reset { BEHAVIOR { int i; for(i=0; i < 32; i++) { GPR[i] = 0; } IR = 0 ; PC = LISA_PROGRAM_COUNTER operand1 = 0; operand2 = 0; result = 0; } }

load alu nop

add sub

decode

fetch

main

Schnittstelle zum Befehlssatz

Architekturunabhängig: Keine Kodierung, keine

Syntax

OPERATION decode{ DECLARE { GROUP instruction = { nop || alu || load }; } CODING AT (PC) { IR == instruction } SYNTAX { instruction } BEHAVIOR { instruction(); } }

Page 56: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Compiler Generierung

Erweiterung der LISA-Schlüsselworte um: REGISTER, IMMEDIATE, INSTRUCTION Dadurch Kennzeichnung von Operationen, die eine Instruktion im Befehlssatz des Prozessors repräsentieren ein Register / einen Registersatz repräsentieren eine Konstante repräsentieren Einhaltung verschiedener Guidelines erforderlich, insbesondere zur automatischen Extraktion von Abhängigkeiten zwischen LISA-Operationen Bereitstellung weiterer Informationen: Abbildung aller C Datentypen und Operationen auf Assembleranweisungen Stackaufbau/Abbau bei Funktionsaufrufen Unterstützung für spezielle Operationen, die besonders effizient durch den

Prozessor verarbeitet werden können (z.B. MAC)

Page 57: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Ablauf im Compilerbackend in LISA

Code Selection: benötigt Spezifikation aller Muster

Register Allocation: benötigt Spezifikation aller nutzbaren Register (wird teilweise schon automatisch aus der LISA-Beschreibung extrahiert).

Scheduling: benötigt Informationen über Latenz der einzelnen Instruktionen und Abhängigkeiten (Ziel, Quelloperanden werden aus LISA-Beschreibung extrahiert).

Frontend

Register Allocation

Scheduling

Code Selection

IR-Code

Assembler-code

Page 58: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Matcher

Quelle: LISA-Tutorial

Page 59: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Spezifikation eines Musters in LISA

Quelle: LISA-Tutorial

Page 60: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Architekturgetriebene Entwurfsraumexploration mit LISA

LISA-Beschreibung Zielarchitektur

Zielarchitektur

Compiler

Linker

Assembler

Simulator

Profiling (Ausführungszeit)

Anwen-dung

Netzliste

VHDL-Code des Prozessors

Synthesecompiler

Profiling (Taktfrequenz, Fläche,

Stromverbrauch)

Page 61: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Design by Compilation

Compiler übersetzt Anwendung ohne die Zielarchitektur zu kennen

Page 62: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Überblick

Page 63: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Scheduling

Ziel: Minimierung der verwendeten Ressourcen bei gegebener Ablaufplanlänge l: Minimierung der Slots:

Minimierung der Operatoren: Verwendung von zeitbeschränkten Ablaufplanungsverfahren Ablaufplanung beachtet folgende Ressourcenallokationsphase

Page 64: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Ressourcenallokation

Page 65: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Selection: Slot Optimierung

Page 66: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Selection: Typoptimierung

Page 67: Hardware/Software-Codesign€¦ · Left-Edge-Algorithmus bearbeitet die Knoten in aufsteigender Reihenfolge der linken Intervallgrenzen a u und weist jedem Knoten die kleinste Farbe

Abschließende Allokation