Inhoudstafel Inleiding De basis van digitaal ontwerp Vak - hoofdstuk Inhoudstafel Inleiding De basis van digitaal ontwerp Combinatorische schakelingen Sequentiële schakelingen Niet-programmeerbare processoren Programmeerbare processoren Hardware-beschrijvingstalen
Niet-programmeerbare processor Vak - hoofdstuk Niet-programmeerbare processor FSMD Beschrijving Synthese Finite State Machine with Datapath Bevat een datapad voor de berekeningen en een controller die het datapad zegt wanneer welke berekeningen op welke data moet uitgevoerd worden De controller voert altijd hetzelfde programma uit niet-programmeerbaar Datapad Controller (FSM) Controle- signalen Status- Data- ingangen uitgangen
FSMD-ontwerp FSMD Beschrijving van een algoritme Vak - hoofdstuk FSMD-ontwerp FSMD Beschrijving Synthese FSMD Datapad: vertaling bewerkingen in hardware Controller: vertaling programma in hardware Tijdsgedrag Beschrijving van een algoritme Synthese: naar hardware
Vak - hoofdstuk Datapad FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese Drie delen: Functionele eenheden (FU), die datamanipulaties uitvoeren: ALU, vermenigvuldiger, rotator, comparator, … Tijdelijk geheugen, voor tussenresultaten: register(bank), FIFO’s, … Verbindingen: bussen met multiplexers & 3-state buffers Registertransfer: register FU(registers) Tijdelijk geheugen Functionele eenheden Externe ingangen Externe uitgangen Resultaat-verbindingen Operand-verbindingen
Constructie datapad Taak: Algoritme: Bewerking sum = 0 FOR i = 1 TO 2 Vak - hoofdstuk Constructie datapad FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese Taak: sum = 0 FOR i = 1 TO 2 sum = sum + xi ENDFOR y = sum Algoritme: Bewerking Controle Constructie datapad: elke variabele & constante komt overeen met een register elke operator komt overeen met een functionele eenheid maak verbindingen registeruitgangen ingangen functionele eenheden uitgangen functionele eenheden registeringangen gebruik MUX of bus met 3-state buffers als meerdere uitgangen verbonden zijn aan één ingang
Implementatie voorbeeld Vak - hoofdstuk Implementatie voorbeeld Variabelen: sum Reset Load Clk Register SUM (bijv. 16 bit) (breedte!) 17 16 Algoritme: sum = 0 FOR i = 1 TO 2 sum = sum + xi ENDFOR y = sum FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese Adder Operatoren: + Volgorde (210): ‘Reset’, ‘Load’, ‘Out’ Verbindingen xi y 1 2 Start Wait 100 Add1 010 Start=1 Add2 010 Output 001
Datapad voorbeeld 2 Taak: tel het aantal bits dat 1 is in een woord Vak - hoofdstuk Datapad voorbeeld 2 Taak: tel het aantal bits dat 1 is in een woord FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese Data = Inport || OCnt = 0 || Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp || Data = Data >> 1 ENDWHILE Outport = OCnt Algoritme: Opmerkingen: Parallelle (‘concurrent’) beschrijving: alle instructies gescheiden door ‘||’ worden tegelijkertijd uitgevoerd Belangrijk verschil met software programma: programma-instructies worden sequentieel uitgevoerd, slechts één op een bepaald ogenblik hardware componenten werken altijd en in parallel Compromis mogelijk: snelheid/performantie kostprijs
Implementatie voorbeeld 2 Vak - hoofdstuk Implementatie voorbeeld 2 1 2 3 4 5 Wait X01X00 Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt 1 Inport Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt z Data OCnt R Mask Temp Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt = 0 AND Add Shift Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt Outport Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt Output order: 543210 FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese s=0 s Load 111X00 s=1 Comp X00000 Temp X00010 z=0 Out X00001 z=1 Update 010100
Optimalisering van een typisch datapad Vak - hoofdstuk Optimalisering van een typisch datapad Inport enkel bruikbaar via registerbank 8 registers met 1 schrijf- en 2 leespoorten Inport FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese 1 S WA Register File 23 WE RA1 R RE1 Counter R Register L RA2 C RE2 L COE RFOE1 RFOE2 ROE Comparator ALU Barrel shifter Sh F D > = < AOE SOE OOE 2 i.p.v. 4 operandbussen o.a. Compare & ALU gebruiken dezelfde data 1 resultaatbus ALU & shifter niet tegelijk bruikbaar Outport
Instructiewoord verzameling bits voor aansturing datapad Vak - hoofdstuk Instructiewoord FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese verzameling bits voor aansturing datapad 32-bit instructiewoord voor vorig voorbeeld Geheugensteun (‘mnemonic’) voor bitpatronen van (deel van) instructiewoord, bijv. ADD eenvoudiger en duidelijker RF OE1 RE1 RA0 RA1 WA1 R RA2 WE WA0 WA2 S COE C L Register File Read Port 1 Register File Write Port Counter 18 19 20 21 22 23 24 25 26 27 28 29 30 31 OOE SOE D SH0 F0 RF OE2 RE2 RA0 SH1 SH2 AOE F1 F2 ROE L R RA1 RA2 Barrel shifter ALU Register Register File Read Port 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Vak - hoofdstuk Instructiewoord OOE SOE D SH0 F0 RF OE2 RE2 RA0 SH1 SH2 AOE F1 F2 ROE L R RA1 RA2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 OE1 RE1 WA1 WE WA0 WA2 S COE C 18 19 20 21 22 23 24 25 26 27 28 29 30 31 FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese C L RF OE2 COE RF OE2 RE2 OE1 RE1 RF OE1 ROE D SH0 F0 SH1 SH2 F1 F2 SOE AOE De grootte kan verminderd worden omdat sommige operaties niet tegelijkertijd kunnen: 1e operandbus bevat ofwel Register File Read Port 1 ofwel Register Read Port (−1) 2e operandbus bevat ofwel Register File Read Port 2 ofwel Counter Read Port (−1) Register File REi = RFOEi (−2) ALU & Shift niet tegelijkertijd: 1 bit nodig voor keuze operator en 4 bits voor controle operator (−2) als ALU gebruikt wordt mag zijn uitgang direct op de resultaatbus; idem voor Barrel shifter (−2) teller ‘Count’ & ‘Load’ zijn exclusief (−1) Extra beperkingen qua parallellisme zijn mogelijk, maar dit resulteert in een grotere uitvoeringstijd
FSMD-ontwerp FSMD Beschrijving van een algoritme Synthese Datapad Vak - hoofdstuk FSMD-ontwerp FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese FSMD Datapad Controller Sneller ontwerp voor grote FSM Tijdsgedrag Beschrijving van een algoritme Synthese
Standaard FSM-controller Vak - hoofdstuk Standaard FSM-controller FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese S*=F(S,I) Next State Logic D Q O=H(S,I) Output Logic Clk D Q Clk D Q Clk
... hertekend Next state logic SReg Out- put logic Vak - hoofdstuk ... hertekend Controle- signalen (CS) Status signalen (SS) FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese Volgende toestand CI SS Next state logic SReg Controle- ingangen (CI) Controle- uitgangen (CO) Out- put logic CS Grootte toestandsregister SReg voor n toestanden: log2n als straightforward of minimum-bit-change n als one-hot Huidige toestand CO CI SS
Wijziging 1 One-hot toestandsregister Next state logic log2n n dec. Vak - hoofdstuk Wijziging 1 One-hot toestandsregister CS SS FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese CI SS Next state logic CI log2n n dec. Voordelen van one-hot: eenvoudig ontwerp en beperkte logica straightforward: klein # FF’s SReg CO Out- put logic CS CO CI SS
Vak - hoofdstuk Wijziging 2 FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese Dikwijls volgen de toestanden mekaar onvoorwaardelijk op, op een paar uitzonderingen na volgende toestand = huidige + 1 Gebruik laadbare teller als toestandsregister ‘Next state logic’ eenvoudig: moet enkel conditionele volgende toestand genereren Wait 100 Start=0 Add1 010 Start=1 Add2 Output 001
generatie volgende toestand Vak - hoofdstuk Wijziging 2 FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese generatie volgende toestand CS SS CI SS Next state logic SReg MUX CI CO Out- put logic INC CS CO laadbare teller CI SS
Vak - hoofdstuk Wijziging 3 FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese Soms bevat een toestandsdiagramma een deel dat verschillende keren herhaald wordt subroutine s0 s1 s2 s3 s6 s0 s1 5 toestanden De terugkeertoestand (= toestand na het subroutine-einde) is slechts gekend op het moment van uitvoering LIFO s2 s3 s4 s5 s6 7 toestanden
Wijziging 3 Next state logic SReg LIFO MUX Out- put logic CS SS CI CO Vak - hoofdstuk Wijziging 3 CS SS FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese CI SS Next state logic Push/ Pop* SReg LIFO MUX CI CO Out- put logic Terug- keer- toestand CS CO CI SS
Alle wijzigingen samen Vak - hoofdstuk Alle wijzigingen samen CS SS FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese CI SS Next state logic log2n n dec. LIFO SReg MUX CI CO Out- put logic INC CS CO CI SS Veronderstelling: terugkeertoestand = springtoestand + 1
Implementatie ‘next state & output logic’ Vak - hoofdstuk Implementatie ‘next state & output logic’ FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese Minimale AND-OR implementatie (Karnaugh) Microprogramma-controle = (ROM-)geheugen met waarheidtabel CS SS CI SS ROM- tabel LIFO SReg MUX CI CO CS INC CO
FSMD-ontwerp FSMD Beschrijving van een algoritme Synthese Datapad Vak - hoofdstuk FSMD-ontwerp FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese FSMD Datapad Controller Tijdsgedrag interactie datapad-controller kritisch pad Beschrijving van een algoritme Synthese
Interactie datapad-controller Vak - hoofdstuk Interactie datapad-controller FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese Altijd 1 klokperiode vertraging tussen de twee delen voor synchrone systemen, bijv. implementatie voorbeeld 2 Klok-periode Toe-stand Datapad m Load m+1 Comp nieuwe Data test ze op nul m+2 Temp … n test op nul n+1 Out Outport = OCnt 1 Load 111x00 5 Data Comp x00000 OCnt 4 z=0 z=1 Temp x00010 Out x00001 = 0 z Outport volgende toestand = f(vorige test) asynchrone controle
Vertraging vermijden (als nodig) Vak - hoofdstuk Vertraging vermijden (als nodig) FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese Laat controller reageren in dezelfde klokperiode als zijn ingangen inputgebaseerde controller Laat datapad reageren in dezelfde klokperiode als zijn controlesignalen asynchrone controle- signalen (LD, reset, … ) Let op voor terugkoppelingen: gevaar op doorrimpelen! Data Shift 1
Vak - hoofdstuk Kritisch pad FSMD Datapad Controller Tijdsgedrag Beschrijving Synthese langste combinatorisch pad (klokklok) in beide delen samen Bijv. SReg Next state logic Out- put CI SS CS CO Register File 23 Register Counter Barrel shifter ALU Comparator R L C S 1 WA WE RA1 RE1 RA2 RE2 COE RFOE1 RFOE2 ROE AOE SOE OOE > = < F Sh D
FSMD-ontwerp FSMD Beschrijving van een algoritme Synthese Vak - hoofdstuk FSMD-ontwerp FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese FSMD Beschrijving van een algoritme Toestand-actie-tabel ASM-schema Synthese
Volgende toestand f(Start, Zero) Vak - hoofdstuk Toestandstabel FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese Niet overzichtelijk omdat dikwijls de volgende toestand slechts afhangt van enkele ingangen de datapadvariabelen niet wijzigen Huidige toestand Volgende toestand f(Start, Zero) Uitgang Datapadvariabelen 00 01 10 11 Outport Data OCnt Temp Mask S0 S1 Z X S2 Inport 1 S3 S5 S4 Data AND Mask Data >> 1 Ocnt + Temp Ocnt
Toestand-actie-tabel Vak - hoofdstuk Toestand-actie-tabel FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese compacte voorstelling van toestandstabel conditionele tabel: niet alle ingangscombinaties actie = geef verandering van variabele aan Huidige toestand Volgende toestand Controle- & datapad-acties Conditie Toestand Acties S0 Start = 0 Output = Z Start = 1 S1 S2 Data = Inport Ocnt = 0 Mask = 1 Data ≠ 0 S3 Data = 0 S5 S4 Temp = Data AND Mask Ocnt = Ocnt + Temp Data >> 1 Output = Ocnt
FSMD-ontwerp FSMD Beschrijving van een algoritme Synthese Vak - hoofdstuk FSMD-ontwerp FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese FSMD Beschrijving van een algoritme Toestand-actie-tabel ASM-schema Synthese
Algorithmic-State-Machine chart Vak - hoofdstuk Algorithmic-State-Machine chart FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese visuele voorstelling toestand-actie-tabel Eenvoudiger te verstaan voor een mens Elke rij in een toestand-actie-tabel komt overeen met een ASM-blok Een ASM-blok bestaat uit een of meerdere ASM-elementen Drie soorten ASM-elementen: ‘state box’ ‘decision box’ ‘condition box’ Onconditionele toekenningen Conditie 1 Conditionele toekenningen
Vak - hoofdstuk Voorbeeld ASM-blok slechts 1 per ASM-blok aan ingang ASM-blok relevant voor datapad alle onvoorwaardelijke toekenningen FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese s0 Done = 0 relevant voor controller Start = 1 1 alleen na beslissingskaders relevant voor datapad toekenningen die afhangen van ingangen enkel bij een inputgebaseerde FSMD Data = Inport Dit stelt hardware voor: alles in 1 ASM-blok (= 1 toestand) gebeurt tegelijkertijd!
Vak - hoofdstuk Geldige ASM-blokken FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese In een geldig ASM-blok moet elke combinatie van ingangen tot exact 1 volgende toestand leiden. Voorbeeld van een ongeldig ASM-blok: Cond1 Cond2 1 s0 s1 s2 Als Cond2 = 1 zijn er twee volgende toestanden
Nog een ongeldige ASM-blok Vak - hoofdstuk Nog een ongeldige ASM-blok FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese s0 Als Cond1 = 0 en Cond2 = 0 is er geen volgende toestand Cond1 1 Cond2 1 s1 s2
Meerdere uitdrukkingen in 1 kader Vak - hoofdstuk Meerdere uitdrukkingen in 1 kader FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese Als er meerdere uitdrukkingen in één kader staan, worden ze in parallel uitgevoerd. Vermits ze in parallel uitgevoerd worden is hun volgorde onbelangrijk. Dit geldt niet alleen voor ASM-elementen maar ook voor een ASM-blok als geheel! Programma: y = x + 1 z = y + 2 y = x + 1 z = y + 2 y = x + 1 z = y + 2 ≠ x = y + 1 y = x + 2 y = x + 2 x = y + 1
Toestandgebaseerd ASM-schema Vak - hoofdstuk Toestandgebaseerd ASM-schema Start=1 s0 FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese Data=Inport OCount=0 1 s1 DataLSB s2 Data<>0 1 OCount=OCount+1 1 s3 Voorbeeld uit boek Data=Data>>1 s4 Data = Inport OCount = 0 DO OCount = OCount + DataLSB Data = Data >> 1 WHILE Data <> 0 Outport = OCount Output=OCount s5
(Data>>1)<>0 Vak - hoofdstuk Caveat FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese Data = Data>>1 Welke Data wordt getest? De oude (niet geschoven) of de nieuwe (geschoven)? Data<>0 De nieuwe is wat we verwachten bij traditionele stroomschema’s maar we gebruiken de oude volgens de regels (“alles in één ASM-blok, d.w.z. één toestand, gebeurt tegelijkertijd”) Anders gebruik je Data = Data>>1 (Data>>1)<>0
Een voorbeeldje Genereer de sequentie 2 1 0 2 1 0 … Vak - hoofdstuk Een voorbeeldje FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese Genereer de sequentie 2 1 0 2 1 0 … Twee mogelijke ASM-schema’s en de bijbehorende controller: s0 Data = Data − 1 Data=0 s1 Data = 2 1 s0 Data = Data − 1 Data=1 s1 Data = 2 1 S0 S1 1 (Data−1)=0
Een voorbeeldje: evaluatie van de hardware implementaties Vak - hoofdstuk Een voorbeeldje: evaluatie van de hardware implementaties FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese Test registeruitgang Data Test uitgang operator Data−1 (‘chaining’) Data −1 Mux = 0 z 2 Sel 1 Data −1 Mux = 0 z 2 Sel 1 Toestand Sel Data z S1 1 S0 −1 2 Toestand Sel Data z S1 1 S0 2
Inputgebaseerd ASM-schema Vak - hoofdstuk Inputgebaseerd ASM-schema Start=1 s0 FSMD Beschrijving Toestand-actie-tabel ASM-schema Synthese Output=OCount s3 Data=Inport OCount=0 1 s1 s2 DataLSB 1 OCount=OCount+1 Data > 1 1 Data=Data>>1 Slechts 4 toestanden 6 als toestandgebaseerd Voorbeeld uit boek Data = Inport OCount = 0 DO OCount = OCount + DataLSB Data = Data >> 1 WHILE Data <> 0 Outport = OCount
FSMD-ontwerp FSMD Beschrijving van een algoritme Vak - hoofdstuk FSMD-ontwerp FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling FSMD Beschrijving van een algoritme Synthese: naar hardware Basisprincipes ‘Register sharing’: variabelen samenvoegen ‘Functional-unit sharing’: bewerkingen samenvoegen ‘Bus sharing’: verbindingen samenvoegen ‘Register port sharing’: registers samenzetten in een registerbank ‘Chaining’: meerdere bewerkingen in 1 klokcyclus ‘Pipelining’ & ‘multicycling’: meerdere klokcycli voor 1 bewerking
Basisprincipe synthese Vak - hoofdstuk Basisprincipe synthese FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Vertrekkend van een toestand-actie-tabel of een ASM-schema, kan een FSMD gerealiseerd worden als volgt: elke variabele komt overeen met een register elke operatie komt overeen met een FU het gebruik (lezen) van een variabele komt met een verbinding van een register naar een FU overeen het wijzigen (schrijven) van een variabele komt met een verbinding van een FU naar een register overeen elke ASM-blok (of een rij van een toestand-actie-tabel) komt met een toestand van de controller overeen Dit leidt niet tot een minimale realisatie Bijv. elke ‘+’ resulteert in een aparte opteller
Minimalisering Van de controller Van het datapad Vak - hoofdstuk Minimalisering FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Van de controller Minimalisering FSM-ontwerp (zie vroeger) Van het datapad Register sharing: eenzelfde register stockeert variabelen die niet overlappen qua levensduur Functional unit sharing: eenzelfde FU voert meerdere operaties uit die niet op hetzelfde ogenblik gebeuren Connection sharing: eenzelfde draad wordt voor meerdere verbindingen gebruikt die niet op hetzelfde ogenblik informatie vervoeren Register port sharing: een registerbank verzamelt meerdere registers waarvan de poorten niet tegelijkertijd gebruikt worden
Voorbeeld minimalisering Vak - hoofdstuk Voorbeeld minimalisering FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Benaderende berekening van de wortel van een kwadratische som (SRA: Square Root Approximation): Gebruikt om het vermogen van QAM-transmissie te berekenen (o.a. voor CATV-transmissie): a is het reële deel van het signaal b is het imaginaire deel van het signaal
SRA: ASM-schema a = In1 b = In2 Start Out = t7 1 t1 = |a| Vak - hoofdstuk SRA: ASM-schema FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling a = In1 b = In2 Start Out = t7 t1 = |a| t2 = |b| 1 t7 = max(t6,x) x = max(t1,t2) y = min(t1,t2) t6 = t4 + t5 t3 = x >> 3 t4 = y >> 1 t5 = x − t3 t3 = 0,125x t4 = 0,5y t5 = 0,875x
SRA: gebruik variabelen Vak - hoofdstuk SRA: gebruik variabelen Levensduur variabele = vanaf de eerste toestand waarin de variabele een nieuwe waarde krijgt tot en met de laatste toestand die ze gebruikt inclusief alle tussenliggende toestanden FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling S0 a = In1 b = In2 S7 Start Out = t7 1 S1 t1 = |a| t2 = |b| t7 = max(t6,x) S1 S2 S3 S4 S5 S6 S7 a X b t1 t2 x y t3 t4 t5 t6 t7 # 2 3 1 x = max(t1,t2) y = min(t1,t2) t6 = t4 + t5 t3 = x >> 3 t4 = y >> 1 t5 = x − t3 Nooit meer dan 3 variabelen levend tegelijkertijd slechts 3 registers nodig
Vak - hoofdstuk SRA: gebruik FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling S1 S2 S3 S4 S5 S6 S7 # abs 2 min 1 max >> − + 9 a = In1 b = In2 S7 Start Out = t7 1 S1 t1 = |a| t2 = |b| t7 = max(t6,x) Nooit meer dan 2 operaties tegelijkertijd minstens 2 FU’s nodig doe de 2 ‘max’en in 1FU ook bijv. ‘+’ en ‘−’ in 1 FU Hoe meer verschillende bewerkingen in 1 FU, hoe complexer de FU! x = max(t1,t2) y = min(t1,t2) t6 = t4 + t5 t3 = x >> 3 t4 = y >> 1 t5 = x − t3
Vak - hoofdstuk SRA: verbindingen FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling a b t1 t2 x y t3 t4 t5 t6 t7 abs1 I O abs2 min max1 max2 >>3 >>1 − + a = In1 b = In2 I O Start Out = t7 1 t1 = |a| t2 = |b| t7 = max(t6,x) S2 Nooit meer dan 4 ingangen en 2 uitgangen tegelijkertijd (S2) voeg sommige van de 20 verbindingen samen tot bussen minstens 6 bussen x = max(t1,t2) y = min(t1,t2) t6 = t4 + t5 t3 = x >> 3 t4 = y >> 1 t5 = x − t3
Verdere optimalisering Vak - hoofdstuk Verdere optimalisering FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Bewerkingen die in parallel kunnen gebeuren mogen ook sequentieel uitgevoerd worden, als de specificaties dit toelaten Herschrijf algoritme met behoud van specificaties, bijv. Chaining: zoveel mogelijk bewerkingen na mekaar binnen 1 klokcyclus Multicycling: laat een FU toe om meer dan 1 klokcyclus te gebruiken voor een berekening Pipelining: splits een bewerking op in verschillende onderdelen, die ieder 1 klokcyclus gebruiken verhoogde verwerkingskracht: hogere klokfrequentie meer bewerkingen in 1 klokcyclus
FSMD-ontwerp FSMD Beschrijving van een algoritme Synthese Vak - hoofdstuk FSMD-ontwerp FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling FSMD Beschrijving van een algoritme Synthese Basisprincipes Register sharing: groepeer variabelen met niet-overlappende levensduur in één variabele Linkerrand-algoritme Gebruik van een compatibiliteitsgraaf Functional-unit sharing Bus sharing Register port sharing Chaining Pipelining & multicycling
‘Left-edge algorithm’ Vak - hoofdstuk ‘Left-edge algorithm’ Sorteer volgens begintoestand & levensduur FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Bepaal levensduur variabelen Alloceer nieuw register Verwijder gebruikte variabelen van lijst Leeg? Neen Ja Gebruik register voor alle niet-overlappende variabelen (volgens sortering lijst)
SRA: Linkerrand-algoritme Vak - hoofdstuk SRA: Linkerrand-algoritme S1 S2 S3 S4 S5 S6 S7 a X b t1 t2 x y t3 t4 t5 t6 t7 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Bepaal de levensduur van de variabelen Sorteer de variabelen volgens begintoestand en levensduur S1 S2 S3 S4 S5 S6 S7 a X b t1 t2 x y t4 t3 t5 t6 t7 t4 heeft een langere levensduur dan t3
SRA: Linkerrand-algoritme Vak - hoofdstuk SRA: Linkerrand-algoritme FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Alloceer nieuw register en gebruik het voor niet-overlappende variabelen S1 S2 S3 S4 S5 S6 S7 a X b t1 t2 x y t4 t3 t5 t6 t7 X X X R1 : a t1 x t7 X R2 b t2 y t4 t6 : R3 t3 t5 : X X
Implementatie SRA na linkerrand-algoritme Vak - hoofdstuk Implementatie SRA na linkerrand-algoritme In1 In2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling MUX MUX MUX R1: a,t1,x,t7 R2: b,t2,y t4,t6 R3: t3,t5 |a| |b| min max max + − >>1 >>3 Out
Vak - hoofdstuk Kan het beter? FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Zelfs wanneer het kleinst aantal registers gebruikt wordt bestaan er verschillende mogelijkheden om de variabelen erover te verdelen! Daarom een bijkomend criterium: minimaliseer ook het aantal MUX-poorten Voeg twee variabelen samen die dezelfde ingang van een FU gebruiken Voeg twee variabelen samen die dezelfde uitgang van eenzelfde FU zijn R1: t1 R2: t2 MUX FU R1: t1,t2 MUX R3: t3 R4: t4 R2: t3,t4
Impact van samenvoegen FU hierop Vak - hoofdstuk Impact van samenvoegen FU hierop FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling MUX’s slechts gekend na samenvoegen FU’s! Dan eerst FU sharing? Neen, want dan hangt de keuze van de MUX’s in die stap af van hoe de variabelen over de registers verdeeld zijn! Deze patstelling (‘deadlock’) is typisch een probleem van gekoppelde optimaliseringen Praktische oplossing: Optimaliseer eerst wat het meest oplevert en maakt hierbij een schatting van de andere optimaliseringen Optimaliseer dan de andere aspecten Itereer tot een bevredigend resultaat bereikt is
Impact van samenvoegen FU hierop Vak - hoofdstuk Impact van samenvoegen FU hierop FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Wat brengt het meest op: het samenvoegen van registers of van bewerkingen? Meestal het samenvoegen van registers: Er zijn meer variabelen dan FU’s Het samenvoegen van FU’s resulteert meestal in een duurdere FU dan ieder van de FU’s afzonderlijk, wat niet het geval is bij registers Het is gemakkelijker om te schatten welke bewerkingen kunnen samengenomen worden dan welke registers Soms het samenvoegen van FU’s Als slechts één soort FU gebruikt/aanwezig is Als de kostprijs van een register verwaarloosbaar is t.o.v. de kostprijs van een FU in een FPGA is het register aan de FU-uitgang gratis
Gebruik van een compatibiliteitsgraaf Vak - hoofdstuk Gebruik van een compatibiliteitsgraaf FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Om de zoektocht naar het kleinst aantal registers te combineren met MUX-reductie, maken we gebruik van de methode van de compatibiliteitsgraaf: Stel een compatibiliteitsgraaf op Splits ze met het max-cut algoritme In het SRA-voorbeeld maken we de volgende schatting van samenvoegen FU’s: Combineer de twee max-bewerkingen in één Combineer de optelling en de aftrekking in één adder-subtractor S1 S2 S3 S4 S5 S6 S7 # abs 2 min 1 max >> − + 1 1
Compatibiliteitsgraaf Vak - hoofdstuk Compatibiliteitsgraaf FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Drie delen: Knopen (‘nodes’) Komen overeen met variabelen Incompatibiliteitsranden tussen knopen die onverenigbaar zijn Tussen twee variabelen met overlappende levensduur: deze zijn niet samen te voegen Prioriteitsranden tussen knopen die goed verenigbaar zijn, waarbij het gewicht de wenselijkheid van verenigen aangeeft Tussen twee variabelen die aan dezelfde ingang van dezelfde FU gebruikt worden of die dezelfde uitgang van dezelfde FU gebruiken Gewicht = # keren dat de twee variabelen aan de vorige voorwaarde voldoen
SRA: compatibiliteitsgraaf (1) Vak - hoofdstuk SRA: compatibiliteitsgraaf (1) a t1 x t7 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling b t2 y t4 t6 t3 t5 Knopen zijn variabelen sorteer knopen grafisch zo zodat onverenigbare variabelen al grafisch gescheiden zijn Resultaat linkerrand-algoritme: R1: a, t1, x, t7 R2: b, t2, y, t4, t6 R3: t3, t5
SRA: compatibiliteitsgraaf (2) Vak - hoofdstuk SRA: compatibiliteitsgraaf (2) a t1 x t7 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling b t2 y t4 t6 t3 t5 S1 S2 S3 S4 S5 S6 S7 a X b t1 t2 x y t4 t3 t5 t6 t7 X Incompatibiliteitsranden: variabelen met overlappende levensduur X X X X X X X X
SRA: compatibiliteitsgraaf (3) Vak - hoofdstuk SRA: compatibiliteitsgraaf (3) a t1 1 x 1 t7 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling b t2 y t4 t6 1 1 t3 t5 1 a b t1 t2 x y t3 t4 t5 t6 t7 abs1 I O abs2 min max O/I >>3 >>1 −/+ Prioriteitsranden: variabelen met dezelfde FU-ingang of dezelfde FU-uitgang I O/I I O/I O max t1 t2 x t6 t7 I I O/I O/I O x en t4 zijn incompatibel: geen prioriteitsrand
Splitsen graaf ‘Max-cut graph partitioning’ Vak - hoofdstuk Splitsen graaf FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling ‘Max-cut graph partitioning’ verdeel de graaf in het kleinst aantal groepen van verenigbare knopen zodat het totale gewicht van alle groepen samen maximaal is Totale gewicht van een groep de som van alle prioriteitsranden binnenin de groep We doen dit visueel als voorbeeld Voor implementaties, zie cursussen over optimalisering
SRA: max-cut graph partitioning Vak - hoofdstuk SRA: max-cut graph partitioning FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling x, t3 en t4 zijn onderling onverenigbaar elk in een apart register a t1 1 x 1 t7 b t2 y t4 t6 1 1 t3 t5 1
SRA: max-cut graph partitioning Vak - hoofdstuk SRA: max-cut graph partitioning FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling t1 & x en t7 & x zijn verenigbaar en verbonden door een prioriteitsrand met het hoogste gewicht (nl. 1) alle drie in hetzelfde register a t1 1 x 1 t7 b t2 y t4 t6 1 1 t3 t5 1
SRA: max-cut graph partitioning Vak - hoofdstuk SRA: max-cut graph partitioning FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling t3, t5, t6 en t2 zijn verenigbaar en verbonden door prioriteitsranden in hetzelfde register a t1 1 x 1 t7 b t2 y t4 t6 1 1 t3 t5 1
SRA: max-cut graph partitioning Vak - hoofdstuk SRA: max-cut graph partitioning FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Overblijvende variabelen hebben geen prioriteitsranden kunnen bij gelijk welk register gevoegd worden waarmee ze verenigbaar zijn a t1 1 x 1 t7 b t2 y t4 t6 1 1 t3 t5 1 Resultaat linkerrand-algoritme: R1: a, t1, x, t7 R2: b, t2, y, t4, t6 R3: t3, t5 Resultaat max-cut algoritme: R2: b, t2, t3, t5, t6 R3: y, t4
Implementatie SRA na samenvoegen registers Vak - hoofdstuk Implementatie SRA na samenvoegen registers In1 In2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling MUX MUX MUX R1: a,t1,x,t7 R2: b,t2,t3 t5,t6 R3: y,t4 |a| |b| min max max + − >>1 >>3 Out
Vak - hoofdstuk Kostprijsberekening FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Kostprijs van een 1-bit register met CE en asynchrone preset of clear ½ CLB 8 poorten 38 tors Kostprijs van 1-bit MUX In FPGA is een register gratis na een MUX 2-to-1 3-to-1 4-to-1 5-to-1 CLB 0,5 1 1,5 poorten 3 4 5 6 tors 12 18 24 30
Kostprijsberekening voor 32-bit datapad Vak - hoofdstuk Kostprijsberekening voor 32-bit datapad FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Originele FSMD (geen optimalisering): 11 registers van 32 bits 11 reg × 32 bit/reg × ½ CLB/bit = 176 CLB’s 11 reg × 32 bit/reg × 8 poort/bit = 2816 poorten 11 reg × 32 bit/reg × 38 tor/bit = 13376 tors Na samenvoegen registers: 1 register van 32 bits met een 4-to-1 MUX 1 CLB/MUXREGbit × 32 bit = 32 CLB’s (5 poort/MUXbit + 8 poort/REGbit) × 32 bit = 416 poorten (24 tor/MUXbit + 38 tor/REGbit) × 32 bit = 1984 tors 1 register van 32 bits met een 5-to-1 MUX (1 CLB/4MUXbit + ½ CLB/2MUXREGbit) × 32 bit = 48 CLB’s (6 poort/MUXbit + 8 poort/REGbit) × 32 bit = 448 poorten (30 tor/MUXbit + 38 tor/REGbit) × 32 bit = 2176 tors 1 register van 32 bits met een 2-to-1 MUX 1/2 CLB/MUXREGbit × 32 bit = 16 CLB’s (3 poort/MUXbit + 8 poort/REGbit) × 32 bit = 352 poorten (12 tor/MUXbit + 38 tor/REGbit) × 32 bit = 1600 tors
Vergelijking kostprijs Vak - hoofdstuk Vergelijking kostprijs FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Samen-voegen CLB’s poorten transistoren Verbin-dingen Reg FU Tot Origineel 176 2816 13376 20 Register 96 1216 5760 12 Bus Reg.bank Optimaliseringen beïnvloeden elkaar: samenvoegen registers verandert het aantal verbindingen We hadden een schatting van de reductie in verbindingen kunnen gebruiken bij het samenvoegen van registers
FSMD-ontwerp FSMD Beschrijving van een algoritme Synthese Vak - hoofdstuk FSMD-ontwerp FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling FSMD Beschrijving van een algoritme Synthese Basisprincipes Register sharing Functional-unit sharing: bewerkingen samenvoegen Bus sharing Register port sharing Chaining Pipelining & multicycling
Samenvoegen bewerkingen Vak - hoofdstuk Samenvoegen bewerkingen FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling vervang FU’s die niet tegelijkertijd gebruikt worden door 1 FU met de gecombineerde functionaliteit en MUX’s aan zijn ingangen Kunnen identieke FU’s (bijv. 2 × MAX) of gelijkaardige (bijv. ADD & SUBTRACT) zijn Enkel wanneer nieuwe FU&MUX goedkoper is! Samenvoegen registers beïnvloedt MUX-kost a b c d a c b d MUX MUX FU1 FU2 FU1&2 x y x y
Samenvoegen bewerkingen Vak - hoofdstuk Samenvoegen bewerkingen FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Bijv. met max-cut algoritme Compatibiliteitsgraaf voor FU’s Knopen Komen overeen met bewerkingen Incompatibiliteitsranden Tussen twee bewerkingen die in eenzelfde toestand gebruikt worden niet samen te voegen Prioriteitsranden Tussen twee of meer bewerkingen die door eenzelfde (nieuwe) FU kunnen uitgevoerd worden Gewicht = winst in kostprijs door het samenvoegen
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling ABS MIN SUB >>3 ABS MAX ? MAX ADD >>1 Knopen zijn bewerkingen Incompatibiliteitsrand: twee bewerkingen in dezelfde toestand Prioriteitsrand: gewicht geeft winst door samenvoegen S1 S2 S3 S4 S5 S6 S7 abs 2 min 1 max >> − + #
Kostprijs MAX-bewerking Vak - hoofdstuk Kostprijs MAX-bewerking FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling a b Alleen carry-logica, behalve voor MSB waar som nodig is: ½ CLB/bit 5 poort/bit 20 tor/bit − ½ CLB/bit 3 poort/bit 12 tor/bit teken 1 MUX max(a,b) ai bi ci ci+1 Kostprijs per bit: 1 CLB 8 poorten 32 tors
Winst van één MAX & MAX FU Vak - hoofdstuk Winst van één MAX & MAX FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R1 R2 R1 R2 Kostprijs: 2 CLB’s 16 poorten 64 tors R1=MAX(R1,R2) R1=MAX(R1,R2) & R1 R1 R1=MAX(R1,R2) R1 R2 Kostprijs: 1 CLB 8 poorten 32 tors Winst: 1 CLB 8 poorten 32 tors Bemerk dat dit hier geen MUX’s nodig zijn omdat de respectievelijke operanden en het resultaat uit eenzelfde register komen!
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling ABS MIN SUB >>3 ABS MAX MAX ADD >>1 1/8/32 ?
Kostprijs ABS-bewerking Vak - hoofdstuk Kostprijs ABS-bewerking a FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling teken (an−1) Kostprijs per bit: ½ CLB (wegens ‘carry-chain’) 6 poorten 32 tors − MUX |a| HA MUX a0 a1 an−1 |a0| |a1| |an−1| 1 … 2 poorten (AND & XOR) 18 tors (6 + 12)
R2 meest in tabel meeste don’t cares hiervoor Vak - hoofdstuk Realisatie ABS & MAX FU MAX/ABS* MAX/ABS* R2n−1 Sn−1 F M10 R2 1X 1 S 01 R1 00 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R1 = MAX(R1,R2) 1 R2 = ABS(R2) 0 R1 R2 MAX/ABS* FA ci (c0=1) Kostprijs per bit: 1 CLB (FA & INV & AND) + 1 (MUX) = 2 CLB’s 5 poorten (FA) + 1 (AND) + 1 (INV) + 4 (MUX) = 11 poorten 36 tors (FA) + 6 (AND) + 2 (INV) + 18 (MUX) = 62 tors R1 S R2 M1 M0 00 01 1X R2 meest in tabel meeste don’t cares hiervoor F
Winst van één ABS & MAX & MAX FU Vak - hoofdstuk Winst van één ABS & MAX & MAX FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R2 R1 R2 R1 R2 Kostprijs: 2,5 CLB’s 22 poorten 96 tors R2=ABS(R2) R1=MAX(R1,R2) R1=MAX(R1,R2) & & R2 R1 R1 R2=ABS(R2) R1=MAX(R1,R2) R1 R2 R1/R2 Kostprijs: 2 CLB’s 11 poorten 62 tors Winst: 0,5 CLB 11 poorten 34 tors
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling ABS MIN SUB >>3 ? ABS MAX MAX ADD >>1 1/8/32 0,5/11/34
Kostprijs MIN-bewerking Vak - hoofdstuk Kostprijs MIN-bewerking FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling a b Alleen carry-logica, behalve voor MSB waar som nodig is: ½ CLB/bit 5 poort/bit 20 tor/bit − ½ CLB/bit 3 poort/bit 12 tor/bit teken 1 MUX max(a,b) ai bi ci ci+1 Kostprijs per bit: 1 CLB 8 poorten 32 tors
Realisatie ABS & MIN FU R3 = MIN(R1,R2) R1 = ABS(R1) Vak - hoofdstuk Realisatie ABS & MIN FU R3 = MIN(R1,R2) R1 = ABS(R1) MIN/ABS* R1n−1 Sn−1 F M10 R1 1X 1 S 01 R2 00 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R2 R1 MIN/ABS* FA ci (c0=1) Kostprijs per bit: 1 CLB (FA & INV & AND) + 1 (MUX) = 2 CLB’s 5 poorten (FA) + 1 (AND) + 1 (INV) + 4 (MUX) = 11 poorten 36 tors (FA) + 6 (AND) + 2 (INV) + 18 (MUX) = 62 tors R1 S R2 M1 M0 00 01 1X F
Winst van één ABS & MIN FU Vak - hoofdstuk Winst van één ABS & MIN FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R1 R1 R2 Kostprijs: 1,5 CLB’s 14 poorten 64 tors R1=ABS(R1) R3=MIN(R1,R2) & R1 R3 R1=ABS(R1) R3=MIN(R1,R2) R1 R2 R1/R3 Kostprijs: 2 CLB’s 11 poorten 62 tors Winst: −0,5 CLB 3 poort 2 tors Klaarblijkelijk niet altijd zinvol om ABS en MIN samen te voegen!
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling −0,5/ 3/2 ABS MIN SUB >>3 ? ABS MAX MAX ADD >>1 1/8/32 0,5/11/34
Kostprijs optelling (ADD) Vak - hoofdstuk Kostprijs optelling (ADD) FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling xi yi ci Kostprijs per bit: ½ CLB 5 poorten 36 tors ci+1 si
Kostprijs aftrekking (SUB) Vak - hoofdstuk Kostprijs aftrekking (SUB) FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling a3 b3 a2 b2 a1 b1 a0 b0 FA FA FA FA c4 1 f3 f2 f1 f0 FAS: vervang INV door XOR Kostprijs FAS per bit: ½ CLB 6 poorten 48 tors Kostprijs SUB per bit: ½ CLB 6 poorten 38 tors
Of dit in ½ CLB past of niet, hangt af van het type FPGA Vak - hoofdstuk Realisatie ADD & SUB FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R2 = ADD(R3,R2) R2 = SUB(R1,R2) Of dit in ½ CLB past of niet, hangt af van het type FPGA R1 R3 R2 S/A* 1 Kostprijs per bit: ½ CLB (FAS & MUX) 6 poorten (FAS) + 3 (MUX) = 9 poorten 48 tors (FAS) + 12 (MUX) = 60 tors MUX FA ci (c0= S/A*) S
Winst van één ADD & SUB FU Vak - hoofdstuk Winst van één ADD & SUB FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R3 R2 R1 R2 Kostprijs: 1 CLB 11 poorten 74 tors R2=ADD(R3,R2) R2=SUB(R1,R2) & R2 R2 Kostprijs: 0,5 CLB 9 poorten 60 tors R2=ADD(R3,R2) R2=SUB(R1,R2) R1 R3 R2 Winst: 0,5 CLB 2 poorten 14 tors
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling −0,5/ 3/2 ABS MIN SUB >>3 0,5/ 2/14 ABS MAX MAX ADD >>1 1/8/32 0,5/11/34 ?
Realisatie ADD & MAX FU R2 = ADD(R3,R2) R1 = MAX(R1,R2) Vak - hoofdstuk Realisatie ADD & MAX FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R2 = ADD(R3,R2) R1 = MAX(R1,R2) M/A* Sn−1 F M10 S 0X 1 R1 10 R2 11 R1 R3 R2 M/A* 1 MUX M1 = MAX/ADD* M0 = Sn−1 FA c0 = M/A* Kostprijs per bit: ½ CLB (FAS & MUX) + 1 (MUX) = 1,5 CLB 6 poorten (FAS) + 3 (MUX) + 4 (MUX) = 13 poorten 48 tors (FAS) + 12 (MUX) + 18 (MUX) = 78 tors R1 S R2 M1 M0 10 0X 11 F
Winst van één MAX & MAX & ADD FU Vak - hoofdstuk Winst van één MAX & MAX & ADD FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R1 R2 R1 R2 R3 R2 Kostprijs: 2,5 CLB 21 poorten 100 tors R1=MAX(R1,R2) R1=MAX(R1,R2) R2=ADD(R3,R2) & & R1 R1 R2 Kostprijs: 1,5 CLB 13 poorten 78 tors R1=MAX(R1,R2) R2=ADD(R3,R2) R1 R3 R1/R2 R2 Winst: 1 CLB 8 poorten 22 tors
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling −0,5/ 3/2 ABS MIN SUB >>3 0,5/ 2/14 ABS MAX MAX ADD >>1 1/8/32 ? 0,5/11/34 1/8/22
Realisatie ABS & MAX & ADD FU Vak - hoofdstuk Realisatie ABS & MAX & ADD FU ABS ADD R2 = ABS(R2) 1 R2 = ADD(R3,R2) R1 = MAX(R1,R2) FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R1 R3 R2 ADD’ 11 10 00 Mux M1 = ADD + ABS • Sn−1’ M0 = Sn−1 ABS FA c0 = ABS + ADD’ Kostprijs per bit: ½ CLB (FAS) + ½ (MUX) + 1 (MUX) = 2 CLB 6 poorten (FAS) + 3 (MUX) + 4 (MUX) = 13 poorten 48 tors (FAS) + 12 (MUX) + 18 (MUX) = 78 tors R1 S R2 M1 M0 00 1X 01 F
Winst van één ABS & MAX & MAX & ADD FU Vak - hoofdstuk Winst van één ABS & MAX & MAX & ADD FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R2 R1 R2 R1 R2 R3 R2 Kostprijs: 3 CLB’s 27 poorten 132 tors R2=ABS(R2) R1=MAX(R1,R2) R1=MAX(R1,R2) R2=ADD(R3,R2) & & & R2 R1 R1 R2 Kostprijs: 2 CLB’s 13 poorten 78 tors R2=ABS(R2) R1=MAX(R1,R2) R2=ADD(R3,R2) R1 R3 R1/R2 R2 Winst: 1 CLB 14 poorten 54 tors
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling −0,5/ 3/2 ABS MIN SUB >>3 ? 0,5/ 2/14 ABS MAX MAX ADD >>1 1/8/32 0,5/11/34 1/8/22 1/14/54
Realisatie ABS & MAX & ADD & SUB FU Vak - hoofdstuk Realisatie ABS & MAX & ADD & SUB FU R2 = ABS(R2) R2 = ADD(R3,R2) R2 = SUB(R1,R2) R1 = MAX(R1,R2) FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R1 R3 R2 ADD’ M1 = ADD + SUB + ABS • Sn−1’ M0 = Sn−1 X1 10 0X Mux ABS FA c0 = ADD’ Kostprijs per bit: ½ CLB (FAS) + ½ (MUX) + 1 (MUX) = 2 CLB 6 poorten (FAS) + 3 (MUX) + 4 (MUX) = 13 poorten 48 tors (FAS) + 12 (MUX) + 18 (MUX) = 78 tors R1 S R2 M1 M0 00 1X 01 F
Winst van één ABS & MAX & MAX & ADD & SUB FU Vak - hoofdstuk Winst van één ABS & MAX & MAX & ADD & SUB FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R2 R1 R2 R1 R2 R3 R2 R1 R2 R2=ABS(R2) R1=MAX(R1,R2) R1=MAX(R1,R2) R2=ADD(R3,R2) R2=SUB(R1,R2) & & & & R2 R1 R1 R2 R2 Kostprijs: 3,5 CLB’s 33 poorten 170 tors Kostprijs: 2 CLB’s 13 poorten 78 tors R2=ABS(R2) R1=MAX(R1,R2) R2=ADD(R3,R2) R2=SUB(R1,R2) R1 R3 R1/R2 R2 Winst: 1,5 CLB 20 poorten 92 tors
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling −0,5/ 3/2 ABS MIN SUB >>3 ? 1,5/20/92 0,5/ 2/14 ABS MAX MAX ADD >>1 1/8/32 0,5/11/34 1/8/22 1/14/54
Realisatie MIN & SUB FU R3 = MIN(R1,R2) R2 = SUB(R1,R2) M1 = SUB/MIN* Vak - hoofdstuk Realisatie MIN & SUB FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R3 = MIN(R1,R2) R2 = SUB(R1,R2) R1 R2 M1 = SUB/MIN* M0 = Sn−1’ FA c0 = 1 Kostprijs per bit: ½ CLB (SUB) + 1 (MUX) = 1,5 CLB 6 poorten (SUB) + 4 (MUX) = 10 poorten 38 tors (SUB) + 18 (MUX) = 56 tors R1 S R2 M1 M0 00 1X 01 F
Winst van één MIN & SUB FU Vak - hoofdstuk Winst van één MIN & SUB FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R1 R2 R1 R2 Kostprijs: 1,5 CLB 14 poorten 70 tors R3=MIN(R1,R2) R2=SUB(R1,R2) & R3 R2 Kostprijs: 1,5 CLB 10 poorten 56 tors R3=MIN(R1,R2) R2=SUB(R1,R2) R1 R2/R3 R2 Winst: 0 CLB 4 poorten 14 tors
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s ? FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling −0,5/ 3/2 ABS MIN SUB >>3 0/4/14 1,5/20/92 0,5/ 2/14 ABS MAX MAX ADD >>1 1/8/32 0,5/11/34 1/8/22 1/14/54
Realisatie ABS & MIN & SUB FU Vak - hoofdstuk Realisatie ABS & MIN & SUB FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R1 = ABS(R1) R3 = MIN(R1,R2) R2 = SUB(R1,R2) SUB als ABS = MIN = 0 M1 = ABS’ • MIN’ + MIN’ • Sn−1’ M0 = ABS’ • Sn−1’ Een ABS & SUB FU heeft dezelfde hardware nodig! R1 R2 ABS’ 1 MUX Kostprijs per bit: ½ CLB (FA) + ½ (AND) + ½ (MUX & INV) + 1 (MUX) = 2,5 CLB 5 poorten (FA) + 1 (AND) + 3 (MUX & INV) + 4 (MUX) = 13 poorten 36 tors (FA) + 6 (AND) + 14 (MUX & INV) + 18 (MUX) = 74 tors FA c0 = 1 R1 S R2 M1 M0 00 1X 01 F
Winst van één ABS & MIN & SUB FU Vak - hoofdstuk Winst van één ABS & MIN & SUB FU FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R1 R1 R2 R1 R2 Kostprijs: 2 CLB’s 20 poorten 102 tors R1=ABS(R1) R3=MIN(R1,R2) R2=SUB(R1,R2) & & R1 R3 R2 R1=ABS(R1) R3=MAX(R1,R2) R2=SUB(R1,R2) R1 R2 R1/R2/R3 Kostprijs: 2,5 CLB’s 13 poorten 74 tors Winst: −0,5 CLB 7 poorten 28 tors
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s −0,5/7/28 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling −0,5/ 3/2 ABS MIN SUB >>3 0/4/14 1,5/20/92 0,5/ 2/14 ABS MAX MAX ADD >>1 1/8/32 0,5/11/34 1/8/22 1/14/54 Is het zinvol om SHIFT’s met enige andere FU te combineren?
Vak - hoofdstuk Realisatie SHIFT FU’s FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Kostprijs per bit: 0 CLB 0 poorten 0 tors >>1 Vermits de SHIFT’s niets kosten kunnen we de globale kostprijs niet verminderen door het met iets te combineren! >>3
SRA: compatibiliteitsgraaf FU’s Vak - hoofdstuk SRA: compatibiliteitsgraaf FU’s −0,5/7/28 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling −0,5/ 3/2 ABS MIN SUB >>3 0/4/14 1,5/20/92 0,5/ 2/14 ABS MAX MAX ADD >>1 1/8/32 0,5/11/34 1/8/22 1/14/54 Niet alle combinaties zijn onderzocht, maar we nemen aan dat die geen extra winst opleveren Het max-cut algoritme is minder geschikt als de winst van de combinatie van 3 knopen verschilt van de som van de winsten van 2 knopen!
SRA: minimalisering voor FPGA Vak - hoofdstuk SRA: minimalisering voor FPGA −0,5 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling ABS −0,5 MIN SUB >>3 1,5 0,5 ABS MAX MAX ADD >>1 1 0,5 1 1 Mogelijkheid 1: (ABS), (MIN), (ABS & MAX & MAX & ADD & SUB), (>>3), (>>1): winst 1,5 CLB’s, kost 3,5 CLB’s
SRA: minimalisering voor FPGA Vak - hoofdstuk SRA: minimalisering voor FPGA −0,5 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling ABS −0,5 MIN SUB >>3 1,5 0,5 ABS MAX MAX ADD >>1 1 0,5 1 1 Mogelijkheid 1: (ABS), (MIN), (ABS & MAX & MAX & ADD & SUB), (>>3), (>>1): kost 3,5 CLB’s, winst 1,5 CLB’s Mogelijkheid 2: (ABS), (MIN), (SUB & ADD), (ABS), (MAX & MAX), (>>3), (>>1): kost 3,5 CLB’s, winst 1,5 CLB’s Mogelijkheid 2 heeft 2 FU’s meer nodig (meer verbindingen)
SRA: minimalisering voor gate array Vak - hoofdstuk SRA: minimalisering voor gate array 7 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling ABS 3 MIN SUB >>3 4 20 2 ABS MAX MAX ADD >>1 8 11 8 14 Mogelijkheid 1: (ABS & MIN), (ABS & MAX & MAX & ADD & SUB), (>>3), (>>1): kost 24 poorten, winst 23 poorten
SRA: minimalisering voor CMOS ASIC Vak - hoofdstuk SRA: minimalisering voor CMOS ASIC 28 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling ABS 2 MIN SUB >>3 14 92 14 ABS MAX MAX ADD >>1 32 34 22 54 Mogelijkheid 1: (ABS & MIN), (ABS & MAX & MAX & ADD & SUB), (>>3), (>>1): kost 140 tors, winst 94 tors
Implementatie SRA na samenvoegen bewerkingen Vak - hoofdstuk Implementatie SRA na samenvoegen bewerkingen In1 In2 Gebruik FPGA-oplossing 1 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling MUX MUX MUX R1: a,t1,x,t7 R2: b,t2,t3 t5,t6 R3: y,t4 MUX ABS MIN FU3 >>3 >>1 Out FU3: ABS, MAX, ADD, SUB
Kostprijsberekening per bit Vak - hoofdstuk Kostprijsberekening per bit FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Kostprijs FU’s originele FSMD: ABS (0,5 CLB; 6 poorten; 32 tors) × 2 MIN (1 CLB; 8 poorten; 32 tors) MAX (1 CLB; 8 poorten; 32 tors) × 2 SUB (0,5 CLB; 6 poorten; 38 tors) ADD (0,5 CLB; 5 poorten; 36 tors) Na samenvoegen bewerkingen: Winst FU’s FU3: 1,5 CLB; 20 poorten; 90 tors Nieuwe kostprijs registers & MUX’s 2 registers met 3-to-1 MUX (1 CLB; 8 + 4 poorten; 38 + 18 tors) × 2 register met 2-to-1 MUX (0,5 CLB; 8 + 3 poorten; 38 + 12 tors)
Vergelijking kostprijs Vak - hoofdstuk Vergelijking kostprijs FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Samen-voegen CLB poorten transistoren Verbin-dingen Reg FU Tot Origineel 176 160 336 2816 1504 4320 13376 7488 20864 20 Register 96 256 1216 2720 5760 13248 12 80 112 192 1120 832 1952 5184 4544 9728 8 Bus Reg.bank Optimaliseringen beïnvloeden elkaar: samenvoegen FU’s verandert het aantal registers het aantal verbindingen
FSMD-ontwerp FSMD Beschrijving van een algoritme Synthese Vak - hoofdstuk FSMD-ontwerp FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling FSMD Beschrijving van een algoritme Synthese Basisprincipes Register sharing Functional-unit sharing Bus sharing: verbindingen samenvoegen Register port sharing Chaining Pipelining & multicycling
Verbindingen samenvoegen Vak - hoofdstuk Verbindingen samenvoegen FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling vervang twee of meer verbindingen, die niet tegelijkertijd gebruikt worden door 1 verbinding Dit vermindert de bedrading, wat tegenwoordig een belangrijke kost vertegenwoordigt, ten koste van extra 3-state buffers wanneer meerdere verschillende bronnen dezelfde bus aansturen, maar het vermindert ook het aantal MUX’s wanneer één bus verschillende verbindingen verenigt die dezelfde FU-ingang aansturen. R1 R2 R1 R2 MUX FU FU
Verbindingen samenvoegen Vak - hoofdstuk Verbindingen samenvoegen FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Compatibiliteitsgraaf voor verbindingen: Knopen komen overeen met verbindingen Incompatibiliteitsranden tussen twee verbindingen die in eenzelfde toestand gebruikt worden en verschillende aansturingen hebben Prioriteitsranden tussen twee verbindingen die eenzelfde aansturing hebben (besparing # 3-state buffers) of eenzelfde gebruiker (besparing # MUX’s) Tweemaal voor de twee groepen bussen: operanden (verbindingen registers FU’s) resultaten (verbindingen FU’s registers)
SRA: operandverbindingen Vak - hoofdstuk SRA: operandverbindingen In1 In2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling MUX MUX MUX R1: a,t1,x,t7 R2: b,t2,t3 t5,t6 R3: y,t4 A B C D E F G H I MUX ABS MIN FU3 >>3 >>1 Out
SRA herschreven met registers en FU’s Vak - hoofdstuk SRA herschreven met registers en FU’s FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling S0 R1=In1 R2=In2 a = In1 b = In2 R1: a,t1,x,t7 R2: b,t2,t3,t5,t6 R3: y,t4 S7 Start Out = t7 Out=R1 1 FU1: ABS FU2: MIN FU3: ABS, MAX, MAX, ADD, SUB FU4: >>3 FU5: >>1 R1=FU1(R1) R2=FU3(R2) t1 = |a| t2 = |b| R1=FU3(R1,R2) t7 = max(t6,x) R1=FU3(R1,R2) R3=FU2(R1,R2) x = max(t1,t2) y = min(t1,t2) t6 = t4 + t5 R2=FU3(R3,R2) R2=FU4(R1) R3=FU5(R3) t3 = x >> 3 t4 = y >> 1 t5 = x − t3 R2=FU3(R1,R2)
SRA: compatibiliteitsgraaf operandverbindingen Vak - hoofdstuk SRA: compatibiliteitsgraaf operandverbindingen Onverenigbare verbindingen worden in dezelfde toestand gebruikt en komen uit een verschillend register: FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling S0 B-G C-D C-G D-E E-G R1=In1 R2=In2 H-I F-G S7 Start Out=R1 S0 S1 S2 S3 S4 S5 S6 S7 A : R1®Out X B : R1®FU1 C : R1®FU2.1 D : R2®FU2.2 E : R1®FU3.1 F : R3®FU3.1 G : R2®FU3.2 H : R1®FU4 I : R3®FU5 1 X R1=FU1(R1) R2=FU3(R2) R1=FU3(R1,R2) X X X X X X X X R1=FU3(R1,R2) R3=FU2(R1,R2) R2=FU3(R3,R2) X R2=FU4(R1) R3=FU5(R3) R2=FU3(R1,R2) X
SRA: compatibiliteitsgraaf operandverbindingen Vak - hoofdstuk SRA: compatibiliteitsgraaf operandverbindingen FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Prioriteitsranden: zelfde aansturing of gebruik A R1®Out E R1®FU3.1 A R1®Out C R1®FU2.1 A R1®Out F R3®FU3.1 A R1®Out I R3®FU5 A R1®Out B R1®FU1 C R1®FU2.1 D R2®FU2.2 E R1®FU3.1 F R3®FU3.1 G R2®FU3.2 H R1®FU4 I R3®FU5 A R1®Out B R1®FU1 A R1®Out H R1®FU4 A R1®Out G R2®FU3.2 A R1®Out D R2®FU2.2 A R1®Out B R1®FU1 C R1®FU2.1 D R2®FU2.2 E R1®FU3.1 F R3®FU3.1 G R2®FU3.2 H R1®FU4 I R3®FU5 B R1®FU1 C R1®FU2.1 E R1®FU3.1 H R1®FU4 C R1®FU2.1 E R1®FU3.1 H R1®FU4 D R2®FU2.2 G R2®FU3.2 A E R1®FU3.1 F R3®FU3.1 H R1®FU4 F R3®FU3.1 I R3®FU5 I B H C G D Incompatibiliteitsranden: B-G, C-D, C-G, D-E, E-G, H-I, F-G F E
SRA: compatibiliteitsgraaf operandverbindingen Vak - hoofdstuk SRA: compatibiliteitsgraaf operandverbindingen FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Operandbus 1 : A, B, C, E, F, H Operandbus 2 : D, G, I A A I I B B H E H C D C G G D F F E
SRA: resultaatverbindingen Vak - hoofdstuk SRA: resultaatverbindingen In1 In2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling A B C D E F G H MUX MUX MUX R1: a,t1,x,t7 R2: b,t2,t3 t5,t6 R3: y,t4 ABS MIN FU3 >>3 >>1 Out
SRA: compatibiliteitsgraaf resultaatverbindingen Vak - hoofdstuk SRA: compatibiliteitsgraaf resultaatverbindingen Onverenigbare verbindingen worden in dezelfde toestand gebruikt en komen uit een verschillende FU: FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling S0 A-D B-E C-G F-H R1=In1 R2=In2 S7 Start Out=R1 S0 S1 S2 S3 S4 S5 S6 S7 A : In1®R1 X B : FU1®R1 C : FU3®R1 D : In2®R2 E : FU3®R2 F : FU4®R2 G : FU2®R3 H : FU5®R3 X 1 X R1=FU1(R1) R2=FU3(R2) R1=FU3(R1,R2 X R1=FU3(R1,R2) R3=FU2(R1,R2) R2=FU3(R3,R2) X R2=FU4(R1) R3=FU5(R3) R2=FU3(R1,R2)
SRA: compatibiliteitsgraaf resultaatverbindingen Vak - hoofdstuk SRA: compatibiliteitsgraaf resultaatverbindingen FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Prioriteitsranden: zelfde aansturing of gebruik A In1®R1 B FU1®R1 C FU3®R1 D In2®R2 E FU3®R2 F FU4®R2 G FU2®R3 H FU5®R3 A In1®R1 B FU1®R1 C FU3®R1 A H B C FU3®R1 E FU3®R2 D In2®R2 E FU3®R2 F FU4®R2 G C G FU2®R3 H FU5®R3 F D E Incompatibiliteitsranden: A-D, B-E, C-G, F-H
SRA: compatibiliteitsgraaf resultaatverbindingen Vak - hoofdstuk SRA: compatibiliteitsgraaf resultaatverbindingen FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Resultaatbus 1 : A, B, C, H Resultaatbus 2 : D, E, F, G A D A B C H H B G G C F F D E E
Implementatie SRA na samenvoegen verbindingen Vak - hoofdstuk Implementatie SRA na samenvoegen verbindingen In1 In2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling MUX R1: a,t1,x,t7 R2: b,t2,t3 t5,t6 R3: y,t4 ABS MIN FU3 >>3 >>1 Out
Kostprijs 3-state buffer Vak - hoofdstuk Kostprijs 3-state buffer FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling FPGA elke CLB heeft een gratis 3-state buffer aan een horizontale lange lijn maar een beperkt aantal lange lijnen zo weinig mogelijk verbindingen Gate array & CMOS 3 poorten / 10 tors F Vcc Vss E IN E F Z 1 IN
Berekening extra kostprijs per bit Vak - hoofdstuk Berekening extra kostprijs per bit FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Qua registers 2 × verwijdering 3-to-1 MUX voor register = −(1 CLB; 8 poorten; 36 tors) 6 × 3-state buffers = (0 CLB; 18 poorten; 60 tors) Qua FU’s verwijdering 2-to-1 MUX uit FU3 = −(0 CLB; 2 poorten; 6 tors) R1 0 1 Mux R3 ADD ABS’ X1 10 0X Mux ABS ADD’
Vergelijking kostprijs Vak - hoofdstuk Vergelijking kostprijs FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Samen-voegen CLB poorten transistoren Verbin-dingen Reg FU Tot Origineel 176 160 336 2816 1504 4320 13376 7488 20864 20 Register 96 256 1216 2720 5760 13248 12 80 112 192 1120 832 1952 5184 4544 9728 8 Bus 48 1440 1344 2784 5952 6272 12224 4 Reg.bank
FSMD-ontwerp FSMD Beschrijving van een algoritme Synthese Vak - hoofdstuk FSMD-ontwerp FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling FSMD Beschrijving van een algoritme Synthese Basisprincipes Register sharing Functional-unit sharing Bus sharing Register port sharing: registers samenzetten in een registerbank Chaining Pipelining & multicycling
Samenvoegen registers Vak - hoofdstuk Samenvoegen registers FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling voeg registers samen tot een registerbank om # leespoorten te verminderen minder ingangs-MUX’s # schrijfpoorten te verminderen minder 3-state buffers Methodologie Registertoegangstabel (‘Register Access Table’) de lees- en schrijfoperaties van registers voor elke toestand Optimaliseer het samenvoegen van registers traditionele methoden (bijv. max-cut) exhaustief voor eenvoudige gevallen (zoals voor SRA-voorbeeld)
Registertoegangstabel (lezen) Vak - hoofdstuk Registertoegangstabel (lezen) FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Vertrek van tabel met het gebruik van operandverbindingen S0 S1 S2 S3 S4 S5 S6 S7 A : R1®Out X B : R1®FU1 C : R1®FU2.1 D : R2®FU2.2 E : R1®FU3.1 F : R3®FU3.1 G : R2®FU3.2 H : R1®FU4 I : R3®FU5 S0 S1 S2 S3 S4 S5 S6 S7 R1 R R2 R3
Registertoegangstabel (schrijven) Vak - hoofdstuk Registertoegangstabel (schrijven) FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Vertrek van tabel met het gebruik van resultaatverbindingen S0 S1 S2 S3 S4 S5 S6 S7 A : In1®R1 X B : FU1®R1 C : FU3®R1 D : In2®R2 E : FU3®R2 F : FU4®R2 G : FU2®R3 H : FU5®R3 S0 S1 S2 S3 S4 S5 S6 S7 R1 W R W R R2 R3
SRA: exhaustieve minimalisering Vak - hoofdstuk SRA: exhaustieve minimalisering S0 S1 S2 S3 S4 S5 S6 S7 R1 W R W R R2 R3 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling W R W R W R W R R W R W W R W R registerbanken # lees/schrijfpoorten # poorten (R1), (R2), (R3) (1;1) + (1;1) + (1;1) 6 (R1,R2), (R3) (2;2) + (1;1) 6 (R1,R3), (R2) (2;2) + (1;1) 6 (R1), (R2,R3) (1;1) + (2;2) 6 (R1,R2,R3) 4 (R1,R2,R3) (2;2) 4
Implementatie SRA na alle samenvoegingen Vak - hoofdstuk Implementatie SRA na alle samenvoegingen In1 In2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling R1: a,t1,x,t7 R2: b,t2,t3 t5,t6 R3: y,t4 ABS MIN FU3 >>3 >>1 Out
Vergelijking kostprijs Vak - hoofdstuk Vergelijking kostprijs Samen-voegen CLB poorten transistoren Verbin-dingen Reg FU Tot Origineel 176 160 336 2816 1504 4320 13376 7488 20864 20 Register 96 256 1216 2720 5760 13248 12 80 112 192 1120 832 1952 5184 4544 9728 8 Bus 48 1440 1344 2784 5952 6272 12224 4 Reg.bank 1152 2496 4928 11200 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Wijzigingen t.g.v. gebruik registerbank Ervoor: 1 × 2-to-1 MUX en 6 × 3-state buffers Erna: 4 × 3-state buffers Winst 0 CLB’s (MUX zat in zelfde CLB als register) 9 poort/MUXbit × 32 bit = 288 poorten 32 tor/MUXbit × 32 bit = 1024 tors
FSMD-ontwerp FSMD Beschrijving van een algoritme Synthese Vak - hoofdstuk FSMD-ontwerp FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling FSMD Beschrijving van een algoritme Synthese Basisprincipes Register sharing Functional-unit sharing Bus sharing Register port sharing Chaining: meerdere bewerkingen in 1 klokcyclus Pipelining & multicycling
Chaining plaats een tussenresultaat niet in een register als Vak - hoofdstuk Chaining FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling plaats een tussenresultaat niet in een register als levensduur van tussenresultaat = 1 vertragingFU1 + vertragingFU2 < klokperiode OK qua specificaties tijdsgedrag Voordelen: minder toestanden minder registers eventueel minder klokcycli voor het hele algoritme t3 = x >> 3 t5 = x − t3 t5 = x − (x >> 3) >> 3 − x t3 t5 >> 3 − x t5
FSMD-ontwerp FSMD Beschrijving van een algoritme Synthese Vak - hoofdstuk FSMD-ontwerp FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling FSMD Beschrijving van een algoritme Synthese Basisprincipes Register sharing Functional-unit sharing Bus sharing Register port sharing Chaining Pipelining & multicycling: meerdere klokcycli voor 1 bewerking
Vak - hoofdstuk Multicycling FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling geef een FU meerdere klokcycli om een bewerking af te ronden als meer dan 1 klokcyclus tussen generatie en gebruik van het resultaat van een bewerking Voordelen: Goedkopere FU (want trager) of hogere klokfrequentie Opmerking: Levensduur start als bewerking begint Eventueel extra toestand(en) nodig t3 = x >> 3 t4 = y >> 1 t3 = x >> 3 [t4] = y >> 1 t5 = x − t3 t5 = x − t3 t4 = [y >> 1] t6 = t4 + t5 t6 = t4 + t5
Versnellen trage operaties Vak - hoofdstuk Versnellen trage operaties FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Sequentieel Parallel Pipelining (lopende band) … t … hardware × n datasnelheid × n … … … hardware × 1 datasnelheid × n
Vak - hoofdstuk Pipelining FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling opsplitsing bewerking in n onderdelen, die ieder slechts 1/n van de tijd gebruiken klokfrequentie ± × n meestal ≈ datafrequentie (performantie) berekening 1 resultaat (‘latency time’) ± zelfde f() a f() y in in a i y f1() f2() a = in y = f(a) a = in i = f1(a) y = f2(i) at = int−1 it = f1(at−1) yt = f2(it−1) = f2(f1(at−2)) at = int−1 yt = f(at−1) klokfrequentie × 2
Pipelining: impact op ASM Vak - hoofdstuk Pipelining: impact op ASM FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Normaal extra toestanden nodig enkel waar pipelining (vb. boek: 9 → 13) geen performantieverlies want klokfreq. × n performantie dikwijls te verbeteren door de ASM te herschrijven a = in i = f1(a) a > 0 J N y = f2(i) nieuwe ASM a = in a > 0 y = f(a) J N a = in a > 0 i = f1(a) J N y = f2(i) pipeline klokfrequentie : × 2 datafrequentie : zelfde × 2
Soorten pipelining van FU (die in het kritisch pad) Vak - hoofdstuk Soorten pipelining controller RF FU1 FU2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling van FU (die in het kritisch pad) van datapad (als trage registerbank) van controle (kritisch pad van processoren meestal door controller) van ASM-kaart (splits ASM) ieder deel aparte hardware parallellisme eventueel ontdubbeling hardware Lees instructie Bereken adressen Lees operand(en) Voer bewerking uit Stockeer resultaat
Pipelining: nadelen Extra hardware (registers) Vak - hoofdstuk Pipelining: nadelen FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Extra hardware (registers) Verlies performantiewinst bij terugkoppeling (bewerking gebruikt resultaat van de vorige) “stop de pipeline!” (geen nieuwe data) a = f(a) i = f1(a) a = f2(i) at = f2(it−1) = f2(f1(at−2)) ak = f2(f1(ak−2)) yt = f(at−1) yk = f(ak−1) verdubbeling snelheid klok & data? i = f1(a) at = f2(it−1) = f2(f1(at−2)) ak = f2(f1(ak−1)) a = f2(i) geen dubbele datasnelheid!
Besluit synthese Zéér moeilijk om optimale implementatie te vinden! Vak - hoofdstuk Besluit synthese FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling Zéér moeilijk om optimale implementatie te vinden! Eenvoudige optimaliseringstechnieken (inclusief max-cut) niet geschikt voor sommige minimaliseringen (bijv. samenvoegen FU’s) Beste keuze sterk afhankelijk van technologie Algoritme herschrijven geeft veel mogelijkheden ligt niet voor de hand herminimalisering nodig Optimaliseringen beïnvloeden elkaar veel globale optimalisering moeilijk