De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

FSMD KATHOLIEKE UNIVERSITEIT 5-15-106–07H01L1 Inhoudstafel  Inleiding  De basis van digitaal ontwerp  Combinatorische schakelingen  Sequentiële schakelingen.

Verwante presentaties


Presentatie over: "FSMD KATHOLIEKE UNIVERSITEIT 5-15-106–07H01L1 Inhoudstafel  Inleiding  De basis van digitaal ontwerp  Combinatorische schakelingen  Sequentiële schakelingen."— Transcript van de presentatie:

1 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Inhoudstafel  Inleiding  De basis van digitaal ontwerp  Combinatorische schakelingen  Sequentiële schakelingen  Niet-programmeerbare processoren  Programmeerbare processoren  Hardware-beschrijvingstalen

2 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Niet-programmeerbare processor =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- signalen Data- ingangen Data- uitgangen Controle- ingangen Controle- uitgangen FSMD Beschrijving Synthese

3 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  FSMD  Datapad: vertaling bewerkingen in hardware  Controller: vertaling programma in hardware  Tijdsgedrag  Beschrijving van een algoritme  Synthese: naar hardware FSMD Beschrijving Synthese

4 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Datapad 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 FSMD  Datapad Controller Tijdsgedrag Beschrijving Synthese

5 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Constructie datapad Taak: sum = 0 FOR i = 1 TO 2 sum = sum + x i 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 FSMD  Datapad Controller Tijdsgedrag Beschrijving Synthese

6 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Implementatie voorbeeld sum = 0 FOR i = 1 TO 2 sum = sum + x i ENDFOR y = sum Algoritme: Variabelen: sum Reset Load Clk Register SUM Wait 100 Adder Operatoren: + 0 Start Volgorde (210): ‘Reset’, ‘Load’, ‘Out’ Verbindingen xixi y Add1 010 Start=1 Add2 010 Output 001 (bijv. 16 bit) (breedte!) FSMD  Datapad Controller Tijdsgedrag Beschrijving Synthese

7 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Datapad voorbeeld 2 Taak: tel het aantal bits dat 1 is in een woord 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 FSMD  Datapad Controller Tijdsgedrag Beschrijving Synthese

8 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Implementatie voorbeeld 2 Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt s=0 s DataOCnt R MaskTemp Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt = 0ANDAddShift Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt Load 111X00 s=1 Comp X 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 = 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 Outport Data = Inport; OCnt = 0; Mask = 1 WHILE Data <> 0 DO Temp = Data AND Mask OCnt = OCnt + Temp; Data = Data >> 1 ENDWHILE Outport = OCnt 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 Temp X00010 z=0 Update Out X00001 z=1 Output order: FSMD  Datapad Controller Tijdsgedrag Beschrijving Synthese

9 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Optimalisering van een typisch datapad Register File 2 3 RegisterCounter Barrel shifter ALUComparator R L C S 10 WA WE RA 1 RE 1 RA 2 RE 2 R L COE RFOE 1 RFOE 2 ROE AOESOE OOE >=< Outport Inport F Sh D 1 resultaatbus  ALU & shifter niet tegelijk bruikbaar 2 i.p.v. 4 operandbussen  o.a. Compare & ALU gebruiken dezelfde data 8 registers met 1 schrijf- en 2 leespoorten Inport enkel bruikbaar via registerbank FSMD  Datapad Controller Tijdsgedrag Beschrijving Synthese

10 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Instructiewoord =verzameling bits voor aansturing datapad  32-bit instructiewoord voor vorig voorbeeld  Geheugensteun (‘mnemonic’) voor bitpatronen van (deel van) instructiewoord, bijv. ADD  eenvoudiger en duidelijker OOESOEDSH0F0 RF OE2 RE2RA0SH1SH2AOEF1F2ROELRRA1RA2 Barrel shifter ALU Register Register File Read Port RF OE1 RE1RA0RA1WA1RRA2WEWA0WA2SCOECL Register File Read Port 1 Register File Write Port Counter FSMD  Datapad Controller Tijdsgedrag Beschrijving Synthese

11 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Instructiewoord  De grootte kan verminderd worden omdat sommige operaties niet tegelijkertijd kunnen:  1 e operandbus bevat ofwel Register File Read Port 1 ofwel Register Read Port (−1)  2 e operandbus bevat ofwel Register File Read Port 2 ofwel Counter Read Port (−1)  Register File RE i = RFOE i (−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 OOESOEDSH0F0 RF OE2 RE2RA0SH1SH2AOEF1F2ROELRRA1RA RF OE1 RE1RA0RA1WA1RRA2WEWA0WA2SCOECL DSH0F0SH1SH2F1F2SOEAOE CL RF OE2 RE2 RF OE1 RE1 RF OE1 ROE RF OE2 COE FSMD  Datapad Controller Tijdsgedrag Beschrijving Synthese

12 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  FSMD  Datapad  Controller  Sneller ontwerp voor grote FSM  Tijdsgedrag  Beschrijving van een algoritme  Synthese FSMD Datapad  Controller Tijdsgedrag Beschrijving Synthese

13 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Standaard FSM-controller D Clk Q S*=F(S,I) Next State Logic O=H(S,I) Output Logic D Clk Q D Q FSMD Datapad  Controller Tijdsgedrag Beschrijving Synthese

14 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1... hertekend SReg Next state logic Out- put logic CI SS Huidige toestand Volgende toestand Controle- ingangen (CI) Controle- uitgangen (CO) Controle- signalen (CS) Status signalen (SS) Grootte toestandsregister SReg voor n toestanden:  log 2 n  als straightforward of minimum-bit-change n als one-hot CS CO FSMD Datapad  Controller Tijdsgedrag Beschrijving Synthese

15 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Wijziging 1 SReg Next state logic Out- put logic CI SS CI CO CSSS log 2 n  n dec. Voordelen van one-hot: eenvoudig ontwerp en beperkte logica straightforward: klein # FF’s CS CO One-hot toestandsregister FSMD Datapad  Controller Tijdsgedrag Beschrijving Synthese

16 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Wijziging 2 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 010 Output 001 FSMD Datapad  Controller Tijdsgedrag Beschrijving Synthese

17 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Wijziging 2 SReg Next state logic Out- put logic CI SS CICO CSSS MUX INC generatie volgende toestand CS CO laadbare teller FSMD Datapad  Controller Tijdsgedrag Beschrijving Synthese

18 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Wijziging 3 Soms bevat een toestandsdiagramma een deel dat verschillende keren herhaald wordt  subroutine 7 toestanden 5 toestanden De terugkeertoestand (= toestand na het subroutine-einde) is slechts gekend op het moment van uitvoering  LIFO s0 s1 s2 s3 s4 s5 s6 s0 s1 s2 s3 s6 FSMD Datapad  Controller Tijdsgedrag Beschrijving Synthese

19 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Wijziging 3 SReg Next state logic Out- put logic CI SS CICO CSSS MUXLIFO Push/ Pop* Terug- keer- toestand CS CO FSMD Datapad  Controller Tijdsgedrag Beschrijving Synthese

20 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Alle wijzigingen samen log 2 n  n dec. Out- put logic CI SS CI CO CSSS MUX LIFO SReg INC Veronderstelling: terugkeertoestand = springtoestand + 1 CS CO Next state logic FSMD Datapad  Controller Tijdsgedrag Beschrijving Synthese

21 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Implementatie ‘next state & output logic’  Minimale AND-OR implementatie (Karnaugh)  Microprogramma-controle = (ROM-)geheugen met waarheidtabel ROM- tabel CISS CICO CSSS MUX LIFO SReg INC CS CO FSMD Datapad  Controller Tijdsgedrag Beschrijving Synthese

22 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  FSMD  Datapad  Controller  Tijdsgedrag  interactie datapad-controller  kritisch pad  Beschrijving van een algoritme  Synthese FSMD Datapad Controller  Tijdsgedrag Beschrijving Synthese

23 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Interactie datapad-controller  Altijd 1 klokperiode vertraging tussen de twee delen voor synchrone systemen, bijv. implementatie voorbeeld 2 Comp x00000 Load 111x00 Temp x00010 z=0 Out x00001 z=1 Data = 0 10 z 4 5 Outport 0 OCnt Klok- periode Toe- stand Datapad mLoad m+1Comp nieuwe Data test ze op nul m+2Temp … nComptest op nul n+1OutOutport = OCnt volgende toestand = f(vorige test) asynchrone controle FSMD Datapad Controller  Tijdsgedrag Beschrijving Synthese

24 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Vertraging vermijden (als nodig)  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 10 FSMD Datapad Controller  Tijdsgedrag Beschrijving Synthese

25 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kritisch pad =langste combinatorisch pad (klok  klok) in beide delen samen Bijv. FSMD Datapad Controller  Tijdsgedrag Beschrijving Synthese

26 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  FSMD  Beschrijving van een algoritme  Toestand-actie-tabel  ASM-schema  Synthese FSMD Beschrijving Toestand-actie- tabel ASM-schema Synthese

27 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Toestandstabel Niet overzichtelijk omdat dikwijls  de volgende toestand slechts afhangt van enkele ingangen  de datapadvariabelen niet wijzigen Huidige toestand Volgende toestand f(Start, Zero) UitgangDatapadvariabelen Outport DataOCntTempMask S0S0 S0S0 S0S0 S1S1 S1S1 ZXXXX S1S1 S2S2 S2S2 S2S2 S2S2 ZInport0X1 S2S2 S3S3 S5S5 S3S3 S5S5 ZDataOCntXMask S3S3 S4S4 S4S4 S4S4 S4S4 ZDataOCnt Data AND Mask Mask S4S4 S2S2 S2S2 S2S2 S2S2 Z Data >> 1 Ocnt + Temp XMask S5S5 S0S0 S0S0 S0S0 S0S0 OcntDataOcntXX FSMD Beschrijving  Toestand-actie- tabel ASM-schema Synthese

28 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Toestand-actie-tabel =compacte voorstelling van toestandstabel  conditionele tabel: niet alle ingangscombinaties  actie = geef verandering van variabele aan Huidige toestand Volgende toestandControle- & datapad-acties ConditieToestandConditieActies S0S0 Start = 0S0S0 Output = Z Start = 1S1S1 S1S1 S2S2 Data = Inport Ocnt = 0 Mask = 1 S2S2 Data ≠ 0S3S3 Data = 0S5S5 S3S3 S4S4 Temp = Data AND Mask S4S4 S2S2 Ocnt = Ocnt + Temp Data >> 1 S5S5 S0S0 Output = Ocnt FSMD Beschrijving  Toestand-actie- tabel ASM-schema Synthese

29 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  FSMD  Beschrijving van een algoritme  Toestand-actie-tabel  ASM-schema  Synthese FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

30 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Algorithmic-State-Machine chart =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 Conditionele toekenningen Conditie 1 0 FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

31 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Voorbeeld ASM-blok Dit stelt hardware voor: alles in 1 ASM-blok (= 1 toestand) gebeurt tegelijkertijd! Done = 0 s0s0 Start = 1 0 Data = Inport 1 slechts 1 per ASM-blok aan ingang ASM-blok relevant voor datapad alle onvoorwaardelijke toekenningen relevant voor controller alleen na beslissingskaders relevant voor datapad toekenningen die afhangen van ingangen enkel bij een inputgebaseerde FSMD FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

32 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Geldige ASM-blokken  In een geldig ASM-blok moet elke combinatie van ingangen tot exact 1 volgende toestand leiden. Voorbeeld van een ongeldig ASM-blok: Cond1Cond s0s0 s1s1 s2s2 Als Cond2 = 1 zijn er twee volgende toestanden FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

33 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Nog een ongeldige ASM-blok Cond1 Cond2 0 1 s0s0 s1s1 s2s2 0 1 Als Cond1 = 0 en Cond2 = 0 is er geen volgende toestand FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

34 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Meerdere uitdrukkingen in 1 kader  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! x = y + 1 y = x + 2 y = x + 2 x = y + 1  y = x + 1 z = y + 2  ≠ y = x + 1 z = y + 2 Programma: y = x + 1 z = y + 2 FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

35 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Toestandgebaseerd ASM-schema Data = Inport OCount = 0 DO OCount = OCount + Data LSB Data = Data >> 1 WHILE Data <> 0 Outport = OCount Voorbeeld uit boek Start=1 s0s0 0 Data=Inport OCount=0 1 s1s1 Data LSB s2s2 OCount=OCount+1 1 s3s3 Data=Data>>1 s4s4 0 Data<>0 1 Output=OCount 0 s5s5 FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

36 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Caveat  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<>0 Welke Data wordt getest? De oude (niet geschoven) of de nieuwe (geschoven)? Data = Data>>1 (Data>>1)<>0 FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

37 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Een voorbeeldje Genereer de sequentie …  Twee mogelijke ASM-schema’s en de bijbehorende controller: s0s0 Data = Data − 1 Data=0 s1s1 Data = S0S0 S1S1 0 1 s0s0 Data = Data − 1 Data=1 s1s1 Data = (Data−1)=0 FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

38 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Een voorbeeldje: evaluatie van de hardware implementaties  Test registeruitgang Data  Test uitgang operator Data−1 (‘chaining’) Data −1 Mux = 0 z 2 Sel 0 1 Data −1 Mux = 0 z 2 Sel 0 1 ToestandSelDataz S1S1 110 S1S1 101 S0S0 0−10 S1S1 120 S1S1 110 S1S1 101 ToestandSelDataz S1S1 111 S0S0 000 S1S1 120 S1S1 111 S0S0 000 FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

39 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Start=1 s0s0 0 Output=OCount s3s3 Data=Inport OCount=0 1 s1s1 s2s2 Data LSB 1 OCount=OCount+1 0 Data > 1 1 Data=Data>>1 0 Inputgebaseerd ASM-schema Data = Inport OCount = 0 DO OCount = OCount + Data LSB Data = Data >> 1 WHILE Data <> 0 Outport = OCount Slechts 4 toestanden  6 als toestandgebaseerd Voorbeeld uit boek FSMD Beschrijving Toestand-actie- tabel  ASM-schema Synthese

40 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  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 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

41 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Basisprincipe synthese  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 FSMD Beschrijving Synthese  Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

42 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Minimalisering  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 FSMD Beschrijving Synthese  Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

43 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Voorbeeld minimalisering 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 FSMD Beschrijving Synthese  Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

44 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: ASM-schema a = In1 b = In2 Start 0 t3 = 0,125x t4 = 0,5y t5 = 0,875x t1 = |a| t2 = |b| 1 x = max(t1,t2) y = min(t1,t2) t3 = x >> 3 t4 = y >> 1 t5 = x − t3t6 = t4 + t5t7 = max(t6,x)Out = t7 FSMD Beschrijving Synthese  Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

45 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 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 S1S2S3S4S5S6S7 aX bX t1X t2X xXXXX yX t3X t4XX t5X t6X t7X # a = In1 b = In2 Start 0 t1 = |a| t2 = |b| 1 x = max(t1,t2) y = min(t1,t2) t3 = x >> 3 t4 = y >> 1 t5 = x − t3 t6 = t4 + t5 t7 = max(t6,x) Out = t7 S0 S1 S7 Nooit meer dan 3 variabelen levend tegelijkertijd  slechts 3 registers nodig FSMD Beschrijving Synthese  Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

46 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: gebruik FU S1S2S3S4S5S6S7# abs22 min11 max112 >>22 − # a = In1 b = In2 Start 0 t1 = |a| t2 = |b| 1 x = max(t1,t2) y = min(t1,t2) t3 = x >> 3 t4 = y >> 1 t5 = x − t3 t6 = t4 + t5 t7 = max(t6,x) Out = t7 S1 S7 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! FSMD Beschrijving Synthese  Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

47 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: verbindingen abt1t2xyt3t4t5t6t7 abs1IO abs2IO minIIO max1IIO max2IIO >>3IO >>1IO −IIO +IIO Nooit meer dan 4 ingangen en 2 uitgangen tegelijkertijd (S2)  voeg sommige van de 20 verbindingen samen tot bussen  minstens 6 bussen a = In1 b = In2 Start 0 t1 = |a| t2 = |b| 1 x = max(t1,t2) y = min(t1,t2) t3 = x >> 3 t4 = y >> 1 t5 = x − t3 t6 = t4 + t5 t7 = max(t6,x) Out = t7 S2 IIO IIO FSMD Beschrijving Synthese  Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

48 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Verdere optimalisering  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 Beschrijving Synthese  Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

49 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  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 FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

50 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Bepaal levensduur variabelen ‘Left-edge algorithm’ Sorteer volgens begintoestand & levensduur Alloceer nieuw register Alloceer nieuw register Gebruik register voor alle niet-overlappende variabelen (volgens sortering lijst) Gebruik register voor alle niet-overlappende variabelen (volgens sortering lijst) Verwijder gebruikte variabelen van lijst Leeg? Neen Ja FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

51 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: Linkerrand-algoritme  Bepaal de levensduur van de variabelen  Sorteer de variabelen volgens begintoestand en levensduur S1S2S3S4S5S6S7 aX bX t1X t2X xXXXX yX t3X t4XX t5X t6X t7X S1S2S3S4S5S6S7 aX bX t1X t2X xXXXX yX t4XX t3X t5X t6X t7X t4 heeft een langere levensduur dan t3 FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

52 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: Linkerrand-algoritme  Alloceer nieuw register en gebruik het voor niet-overlappende variabelen S1S2S3S4S5S6S7 aX bX t1X t2X xXXXX yX t4XX t3X t5X t6X t7X at1xt7 R3t3t5: R1: R2bt2yt4t6: X XXXX X X X X XX X X X X FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

53 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Implementatie SRA na linkerrand-algoritme |a||b|minmax +−>>1>>3 R2: b,t2,y t4,t6 R1: a,t1,x,t7R3: t3,t5 MUX In1In2 Out FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

54 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kan het beter?  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 MUX R3: t3R4: t4 MUX R2: t3,t4 MUX R1: t1R2: t2 MUX FU R1: t1,t2 FU FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

55 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Impact van samenvoegen FU hierop  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 FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

56 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Impact van samenvoegen FU hierop  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 FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

57 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Gebruik van een compatibiliteitsgraaf  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 S1S2S3S4S5S6S7# abs22 min11 max112 >>22 − FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

58 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Compatibiliteitsgraaf 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 FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

59 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Resultaat linkerrand-algoritme: R1: a, t1, x, t7 R2: b, t2, y, t4, t6 R3: t3, t5 at1xt7 bt2yt4t6 t3t5 Knopen zijn variabelen SRA: compatibiliteitsgraaf (1) sorteer knopen grafisch zo zodat onverenigbare variabelen al grafisch gescheiden zijn FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

60 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Incompatibiliteitsranden: variabelen met overlappende levensduur SRA: compatibiliteitsgraaf (2) S1S2S3S4S5S6S7 aX bX t1X t2X xXXXX yX t4XX t3X t5X t6X t7X at1xt7 bt2yt4t6 t3t5 X X X X X X XX XX X X X X X X X X X X FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

61 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf (3) at1xt7 bt2yt4t6 t3t5 Prioriteitsranden: variabelen met dezelfde FU-ingang of dezelfde FU-uitgang abt1t2xyt3t4t5t6t7 abs1IO abs2IO minIIO maxIIO/IIO >>3IO >>1IO −/+IIIO/IO x en t4 zijn incompatibel: geen prioriteitsrand IO/I OII III O max t1t2 x xt6 t7 FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

62 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Splitsen graaf  ‘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 FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

63 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: max-cut graph partitioning  x, t3 en t4 zijn onderling onverenigbaar  elk in een apart register at1xt7 bt2yt4t6 t3t FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

64 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: max-cut graph partitioning  t1 & x en t7 & x zijn verenigbaar en verbonden door een prioriteitsrand met het hoogste gewicht (nl. 1)  alle drie in hetzelfde register at1xt7 bt2yt4t6 t3t FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

65 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: max-cut graph partitioning  t3, t5, t6 en t2 zijn verenigbaar en verbonden door prioriteitsranden  in hetzelfde register at1xt7 bt2yt4t6 t3t FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

66 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: max-cut graph partitioning  Overblijvende variabelen hebben geen prioriteitsranden  kunnen bij gelijk welk register gevoegd worden waarmee ze verenigbaar zijn at1xt7 bt2yt4t6 t3t Resultaat linkerrand-algoritme: R1: a, t1, x, t7 R2: b, t2, y, t4, t6 R3: t3, t5 Resultaat max-cut algoritme: R1: a, t1, x, t7 R2: b, t2, t3, t5, t6 R3: y, t4 FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

67 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Implementatie SRA na samenvoegen registers |a||b|minmax +−>>1>>3 R2: b,t2,t3 t5,t6 R1: a,t1,x,t7R3: y,t4 MUX In1In2 Out FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

68 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kostprijsberekening  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-13-to-14-to-15-to-1 CLB0,5111,5 poorten3456 tors FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

69 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kostprijsberekening voor 32-bit datapad  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 = 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 FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

70 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Vergelijking kostprijs 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 Samen- voegen CLB’spoortentransistoren Verbin- dingen RegFUTotRegFUTotRegFUTot Origineel Register FU Bus Reg.bank FSMD Beschrijving Synthese Basis  Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

71 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  FSMD  Beschrijving van een algoritme  Synthese  Basisprincipes  Register sharing  Functional-unit sharing: bewerkingen samenvoegen  Bus sharing  Register port sharing  Chaining  Pipelining & multicycling FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

72 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Samenvoegen bewerkingen =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 FU1FU2FU1&2 MUX a a bcd cbd xy xy FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

73 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Samenvoegen bewerkingen 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 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

74 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s ABS MIN MAX ADD SUB>>3 >>1 S1S2S3S4S5S6S7 abs2 min1 max11 >>2 −1 +1 # Knopen zijn bewerkingen Incompatibiliteitsrand: twee bewerkingen in dezelfde toestand Prioriteitsrand: gewicht geeft winst door samenvoegen ? FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

75 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kostprijs MAX-bewerking Kostprijs per bit: 1 CLB 8 poorten 32 tors ½ CLB/bit 3 poort/bit 12 tor/bit − MUX a teken max(a,b) b Alleen carry-logica, behalve voor MSB waar som nodig is: ½ CLB/bit 5 poort/bit 20 tor/bit 01 aiai bibi cici c i+1 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

76 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Winst van één MAX & MAX FU R1=MAX(R1,R2) R1R2 R1 R1=MAX(R1,R2) R1R2 R1 & Kostprijs: 2 CLB’s 16 poorten 64 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! R1=MAX(R1,R2) R1R2 R1 Kostprijs: 1 CLB 8 poorten 32 tors FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

77 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s ABS MIN MAX ADD SUB>>3 >>1 1/8/32 ? FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

78 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kostprijs ABS-bewerking − MUX a teken (a n−1 ) |a| Kostprijs per bit: ½ CLB (wegens ‘carry-chain’) 6 poorten 32 tors 2 poorten (AND & XOR) 18 tors (6 + 12) HA MUX HA MUX HA MUX a0a0 a1a1 a n−1 |a 0 ||a 1 ||a n−1 | 1 … FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

79 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Realisatie ABS & MAX FU FA R1 MAX/ABS* R2 R1R X M1M0M1M0 F S 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 MAX/ABS*R2 n−1 S n−1 FM R21X 001R21X 010S01 011S 100R R21X 110R R21X R1 = MAX(R1,R2) 1 R2 = ABS(R2) 0 R2 meest in tabel  meeste don’t cares hiervoor c i (c 0 =1) MAX/ABS* FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

80 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Winst van één ABS & MAX & MAX FU R1=MAX(R1,R2) R1R2 R1 R1=MAX(R1,R2) R1R2 R1 & Kostprijs: 2,5 CLB’s 22 poorten 96 tors R2=ABS(R2) R2 & Winst: 0,5 CLB 11 poorten 34 tors R2=ABS(R2) R1=MAX(R1,R2) R1R2 R1/R2 Kostprijs: 2 CLB’s 11 poorten 62 tors FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

81 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s ABS MIN MAX ADD SUB>>3 >>1 1/8/32 0,5/11/34 ? FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

82 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kostprijs MIN-bewerking Kostprijs per bit: 1 CLB 8 poorten 32 tors ½ CLB/bit 3 poort/bit 12 tor/bit − MUX a teken max(a,b) b Alleen carry-logica, behalve voor MSB waar som nodig is: ½ CLB/bit 5 poort/bit 20 tor/bit 10 aiai bibi cici c i+1 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

83 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Realisatie ABS & MIN FU MIN/ABS*R1 n−1 S n−1 FM R11X 001R11X 010S01 011S 100R11X 101R R11X 111R200 R3 = MIN(R1,R2) R1 = ABS(R1) FA R2 MIN/ABS* R1 R X M1M0M1M0 F S c i (c 0 =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 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

84 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Winst van één ABS & MIN FU R3=MIN(R1,R2) R1R2 R3 Kostprijs: 1,5 CLB’s 14 poorten 64 tors R1=ABS(R1) R1 & Winst: −0,5 CLB 3 poort 2 tors Klaarblijkelijk niet altijd zinvol om ABS en MIN samen te voegen! R1=ABS(R1) R3=MIN(R1,R2) R1R2 R1/R3 Kostprijs: 2 CLB’s 11 poorten 62 tors FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

85 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s ABS MIN MAX ADD SUB>>3 >>1 1/8/32 0,5/11/34 −0,5/ 3/2 ? FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

86 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kostprijs optelling (ADD) Kostprijs per bit: ½ CLB 5 poorten 36 tors xixi yiyi cici c i+1 sisi FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

87 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kostprijs aftrekking (SUB) Kostprijs SUB per bit: ½ CLB 6 poorten 38 tors FA a0a0 b0b0 1 f0f0 a1a1 b1b1 f1f1 a2a2 b2b2 f2f2 a3a3 b3b3 c4c4 f3f3 FAS: vervang INV door XOR Kostprijs FAS per bit: ½ CLB 6 poorten 48 tors FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

88 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Realisatie ADD & SUB FU FA R1 S/A* R2 S Kostprijs per bit: ½ CLB (FAS & MUX) 6 poorten (FAS) + 3 (MUX) = 9 poorten 48 tors (FAS) + 12 (MUX) = 60 tors MUX R3 Of dit in ½ CLB past of niet, hangt af van het type FPGA R2 = ADD(R3,R2) R2 = SUB(R1,R2) 01 c i (c 0 = S/A*) FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

89 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Winst van één ADD & SUB FU R2=SUB(R1,R2) R1R2 Kostprijs: 1 CLB 11 poorten 74 tors R2=ADD(R3,R2) R2 & R3R2 Winst: 0,5 CLB 2 poorten 14 tors Kostprijs: 0,5 CLB 9 poorten 60 tors R2=ADD(R3,R2) R2=SUB(R1,R2) R1R3 R2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

90 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s ABS MIN MAX ADD SUB>>3 >>1 1/8/32 0,5/11/34 −0,5/ 3/2 0,5/ 2/14 ? FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

91 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Realisatie ADD & MAX FU FA R1R2 R1R2 10 0X 11 M1M0M1M0 F S MUX R3 M/A* M 1 = MAX/ADD* M 0 = S n−1 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 M/A*S n−1 FM 10 00S0X 01S 10R110 11R211 R2 = ADD(R3,R2) R1 = MAX(R1,R2) 10 c 0 = M/A* FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

92 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Winst van één MAX & MAX & ADD FU R1=MAX(R1,R2) R1R2 R1 Kostprijs: 2,5 CLB 21 poorten 100 tors R1=MAX(R1,R2) R1 & R2 R2=ADD(R3,R2) R3R2 & Winst: 1 CLB 8 poorten 22 tors Kostprijs: 1,5 CLB 13 poorten 78 tors R1=MAX(R1,R2) R2=ADD(R3,R2) R1R3 R1/R2 R2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

93 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s ABS MIN MAX ADD SUB>>3 >>1 1/8/32 0,5/11/34 −0,5/ 3/2 0,5/ 2/14 1/8/22 ? FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

94 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Realisatie ABS & MAX & ADD FU FA R1R2 R1R2 00 1X 01 M1M0M1M0 F S 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 Mux R3 ABS 0 ADD’ M 1 = ADD + ABS S n−1 ’ M 0 = S n−1 c 0 = ABS + ADD’ ABSADD R2 = ABS(R2) 10 R2 = ADD(R3,R2) 01 R1 = MAX(R1,R2) 00 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

95 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Winst van één ABS & MAX & MAX & ADD FU R1=MAX(R1,R2) R1R2 R1 Kostprijs: 3 CLB’s 27 poorten 132 tors R1=MAX(R1,R2) R1 & R2 R2=ADD(R3,R2) R3R2 & R2=ABS(R2) R2 & Winst: 1 CLB 14 poorten 54 tors Kostprijs: 2 CLB’s 13 poorten 78 tors R2=ABS(R2) R1=MAX(R1,R2) R2=ADD(R3,R2) R1R3 R1/R2 R2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

96 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s ABS MIN MAX ADD SUB>>3 >>1 1/8/32 0,5/11/34 −0,5/ 3/2 0,5/ 2/14 1/8/22 1/14/54 ? FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

97 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Realisatie ABS & MAX & ADD & SUB FU FA R1R2 R1R2 00 1X 01 M1M0M1M0 F S 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 X1 10 0X Mux R3 ABS 0 M 1 = ADD + SUB + ABS S n−1 ’ M 0 = S n−1 R2 = ABS(R2) R2 = ADD(R3,R2) R2 = SUB(R1,R2) R1 = MAX(R1,R2) ADD’ c 0 = ADD’ FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

98 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Winst van één ABS & MAX & MAX & ADD & SUB FU R1=MAX(R1,R2) R1R2 R1 Kostprijs: 3,5 CLB’s 33 poorten 170 tors R1=MAX(R1,R2) R1 & R2 R2=ADD(R3,R2) R3R2 & R2=ABS(R2) R2 & R2=SUB(R1,R2) R1R2 & Winst: 1,5 CLB 20 poorten 92 tors Kostprijs: 2 CLB’s 13 poorten 78 tors R2=ABS(R2) R1=MAX(R1,R2) R2=ADD(R3,R2) R2=SUB(R1,R2) R1R3 R1/R2 R2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

99 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s ABS MIN MAX ADD SUB>>3 >>1 1/8/32 0,5/11/34 −0,5/ 3/2 0,5/ 2/14 1/8/22 1/14/54 1,5/20/92 ? FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

100 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Realisatie MIN & SUB FU FA R1 c 0 = 1 R2 R1R2 00 1X 01 M1M0M1M0 F S Kostprijs per bit: ½ CLB (SUB) + 1 (MUX) = 1,5 CLB 6 poorten (SUB) + 4 (MUX) = 10 poorten 38 tors (SUB) + 18 (MUX) = 56 tors M 1 = SUB/MIN* M 0 = S n−1 ’ R3 = MIN(R1,R2) R2 = SUB(R1,R2) FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

101 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Winst van één MIN & SUB FU R2=SUB(R1,R2) R1R2 Kostprijs: 1,5 CLB 14 poorten 70 tors R3=MIN(R1,R2) R3 & R1R2 Winst: 0 CLB 4 poorten 14 tors Kostprijs: 1,5 CLB 10 poorten 56 tors R3=MIN(R1,R2) R2=SUB(R1,R2) R1 R2/R3 R2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

102 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s ABS MIN MAX ADD SUB>>3 >>1 1/8/32 0,5/11/34 −0,5/ 3/2 0,5/ 2/14 1/8/22 1/14/54 1,5/20/92 0/4/14 ? FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

103 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Realisatie ABS & MIN & SUB FU FA R1 c 0 = 1 R2 R1R2 00 1X 01 M1M0M1M0 F S 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 MUX ABS’ SUBals ABS = MIN = 0 M 1 = ABS’ MIN’ + MIN’ S n−1 ’ M 0 = ABS’ S n−1 ’ R1 = ABS(R1) R3 = MIN(R1,R2) R2 = SUB(R1,R2) 0 1 Een ABS & SUB FU heeft dezelfde hardware nodig! FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

104 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Winst van één ABS & MIN & SUB FU R3=MIN(R1,R2) R1R2 R3 Kostprijs: 2 CLB’s 20 poorten 102 tors R1=ABS(R1) R1 & R2=SUB(R1,R2) R1R2 & Winst: −0,5 CLB 7 poorten 28 tors R1=ABS(R1) R3=MAX(R1,R2) R2=SUB(R1,R2) R1R2 R1/R2/R3 Kostprijs: 2,5 CLB’s 13 poorten 74 tors FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

105 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s ABS MIN MAX ADD SUB>>3 >>1 1/8/32 0,5/11/34 −0,5/ 3/2 0,5/ 2/14 1/8/22 1/14/54 1,5/20/92 0/4/14 −0,5/7/28 Is het zinvol om SHIFT’s met enige andere FU te combineren? FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

106 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Realisatie SHIFT FU’s Kostprijs per bit: 0 CLB 0 poorten 0 tors >>1 >>3 Vermits de SHIFT’s niets kosten kunnen we de globale kostprijs niet verminderen door het met iets te combineren! FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

107 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf FU’s  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! ABS MIN MAX ADD SUB>>3 >>1 1/8/32 0,5/11/34 −0,5/ 3/2 0,5/ 2/14 1/8/22 1/14/54 1,5/20/92 0/4/14 −0,5/7/28 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

108 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 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 ABS MIN MAX ADD SUB>>3 >>1 1 0,5 −0,5 0, ,5 0 −0,5 FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

109 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: minimalisering voor FPGA ABS MIN MAX ADD SUB>>3 >>1 1 0,5 −0,5 0, ,5 0 −0,5 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) FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

110 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: minimalisering voor gate array ABS MIN MAX ADD SUB>>3 >> Mogelijkheid 1:(ABS & MIN), (ABS & MAX & MAX & ADD & SUB), (>>3), (>>1): kost 24 poorten, winst 23 poorten FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

111 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: minimalisering voor CMOS ASIC ABS MIN MAX ADD SUB>>3 >> Mogelijkheid 1:(ABS & MIN), (ABS & MAX & MAX & ADD & SUB), (>>3), (>>1): kost 140 tors, winst 94 tors FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

112 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Implementatie SRA na samenvoegen bewerkingen ABS R2: b,t2,t3 t5,t6 R1: a,t1,x,t7R3: y,t4 MUX In1In2 Out MINFU3>>3>>1 MUX Gebruik FPGA-oplossing 1 FU3: ABS, MAX, ADD, SUB FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

113 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kostprijsberekening per bit  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; poorten; tors) × 2  register met 2-to-1 MUX (0,5 CLB; poorten; tors) FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

114 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Vergelijking kostprijs Samen- voegen CLBpoortentransistoren Verbin- dingen RegFUTotRegFUTotRegFUTot Origineel Register FU Bus Reg.bank Optimaliseringen beïnvloeden elkaar: samenvoegen FU’s verandert  het aantal registers  het aantal verbindingen FSMD Beschrijving Synthese Basis Samenvoegen variabelen  Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

115 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  FSMD  Beschrijving van een algoritme  Synthese  Basisprincipes  Register sharing  Functional-unit sharing  Bus sharing: verbindingen samenvoegen  Register port sharing  Chaining  Pipelining & multicycling FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

116 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Verbindingen samenvoegen =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. R1R2 MUX FU R1R2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

117 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Verbindingen samenvoegen  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: 1)operanden (verbindingen registers  FU’s) 2)resultaten (verbindingen FU’s  registers) FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

118 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: operandverbindingen ABS In1In2 Out MINFU3>>3>>1 MUX ABCDEFGHI R2: b,t2,t3 t5,t6 R1: a,t1,x,t7R3: y,t4 MUX FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

119 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA herschreven met registers en FU’s R1: a,t1,x,t7 R2: b,t2,t3,t5,t6 R3: y,t4 FU1:ABS FU2:MIN FU3:ABS, MAX, MAX, ADD, SUB FU4:>>3 FU5:>>1 a = In1 b = In2 Start 0 t1 = |a| t2 = |b| 1 x = max(t1,t2) y = min(t1,t2) t3 = x >> 3 t4 = y >> 1 t5 = x − t3 t6 = t4 + t5 t7 = max(t6,x) Out = t7 S0 S7 R1=In1 R2=In2 R1=FU1(R1) R2=FU3(R2) R1=FU3(R1,R2) R3=FU2(R1,R2) R2=FU4(R1) R3=FU5(R3) R2=FU3(R1,R2) R2=FU3(R3,R2) R1=FU3(R1,R2) Out=R1 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

120 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf operandverbindingen S0S1S2S3S4S5S6S7 A : R1  Out X B : R1  FU1 X C : R1  FU2.1 X D : R2  FU2.2 X E : R1  FU3.1 XXX F : R3  FU3.1 X G : R2  FU3.2 XXXXX H : R1  FU4 X I : R3  FU5 X Onverenigbare verbindingen worden in dezelfde toestand gebruikt en komen uit een verschillend register: B-GC-GD-EE-G H-I C-D F-G X X X X X X X X X X X X X X X X X X X X X X R1=In1 R2=In2 Start 0 R1=FU1(R1) R2=FU3(R2) 1 R1=FU3(R1,R2) R3=FU2(R1,R2) R2=FU4(R1) R3=FU5(R3) R2=FU3(R1,R2) R2=FU3(R3,R2) R1=FU3(R1,R2) Out=R1 S0 S7 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

121 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf operandverbindingen Prioriteitsranden: zelfde aansturing of gebruik 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 B C D EF G H I A R1  Out B R1  FU1 A R1  Out C R1  FU2.1 A R1  Out D R2  FU2.2 A R1  Out E R1  FU3.1 A R1  Out F R3  FU3.1 A R1  Out G R2  FU3.2 A R1  Out H R1  FU4 A R1  Out 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 E R1  FU3.1 F R3  FU3.1 H R1  FU4 F R3  FU3.1 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 Incompatibiliteitsranden: B-G, C-D, C-G, D-E, E-G, H-I, F-G FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

122 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf operandverbindingen  Operandbus 1 : A, B, C, E, F, H  Operandbus 2 : D, G, I A B C D EF G H I C D BA H E GF I FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

123 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: resultaatverbindingen ABS R2: b,t2,t3 t5,t6 R1: a,t1,x,t7R3: y,t4 MUX In1In2 Out MINFU3>>3>>1 ABCDEFGH FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

124 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf resultaatverbindingen Onverenigbare verbindingen worden in dezelfde toestand gebruikt en komen uit een verschillende FU: A-DB-EC-GF-H S0S1S2S3S4S5S6S7 A : In1  R1 X B : FU1  R1 X C : FU3  R1 XX D : In2  R2 X E : FU3  R2 XXX F : FU4  R2 X G : FU2  R3 X H : FU5  R3 X X X X X X X X X R1=In1 R2=In2 Start 0 R1=FU1(R1) R2=FU3(R2) 1 R1=FU3(R1,R2) R3=FU2(R1,R2) R2=FU4(R1) R3=FU5(R3) R2=FU3(R1,R2) R2=FU3(R3,R2) R1=FU3(R1,R2 Out=R1 S0 S7 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

125 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf resultaatverbindingen Prioriteitsranden: zelfde aansturing of gebruik A B C D E F G H 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 D In2  R2 E FU3  R2 F FU4  R2 C FU3  R1 E FU3  R2 G FU2  R3 H FU5  R3 Incompatibiliteitsranden: A-D, B-E, C-G, F-H FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

126 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: compatibiliteitsgraaf resultaatverbindingen  Resultaatbus 1 : A, B, C, H  Resultaatbus 2 : D, E, F, G A B C D E F G H A D B C E F G H FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

127 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Implementatie SRA na samenvoegen verbindingen ABS R2: b,t2,t3 t5,t6 R1: a,t1,x,t7R3: y,t4 MUX Out MINFU3>>3>>1 In1In2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

128 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Kostprijs 3-state buffer  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 EF 0Z 1IN F V cc V ss E IN E IN FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

129 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Berekening extra kostprijs per bit  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 +6 × 3-state buffers = (0 CLB; 18 poorten; 60 tors) +verwijdering 2-to-1 MUX uit FU3 = −(0 CLB; 2 poorten; 6 tors) R1 0 1 Mux R3 ADD ABS’ R1 X1 10 0X Mux R3 ABS 0 ADD’ FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

130 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Vergelijking kostprijs Samen- voegen CLBpoortentransistoren Verbin- dingen RegFUTotRegFUTotRegFUTot Origineel Register FU Bus Reg.bank FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren  Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling

131 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  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 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen  Samenvoegen registers Chaining Pipelining & multicycling

132 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Samenvoegen registers =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) FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen  Samenvoegen registers Chaining Pipelining & multicycling

133 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Registertoegangstabel (lezen) Vertrek van tabel met het gebruik van operandverbindingen S0S1S2S3S4S5S6S7 A : R1  Out X B : R1  FU1 X C : R1  FU2.1 X D : R2  FU2.2 X E : R1  FU3.1 XXX F : R3  FU3.1 X G : R2  FU3.2 XXXXX H : R1  FU4 X I : R3  FU5 X S0S1S2S3S4S5S6S7 R1RRRRRR R2RRRRR R3RR FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen  Samenvoegen registers Chaining Pipelining & multicycling

134 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Registertoegangstabel (schrijven) Vertrek van tabel met het gebruik van resultaatverbindingen S0S1S2S3S4S5S6S7 A : In1  R1 X B : FU1  R1 X C : FU3  R1 XX D : In2  R2 X E : FU3  R2 XXX F : FU4  R2 X G : FU2  R3 X H : FU5  R3 X S0S1S2S3S4S5S6S7 R1WR W RR R R2WR WR W R R3 WR WR FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen  Samenvoegen registers Chaining Pipelining & multicycling

135 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 SRA: exhaustieve minimalisering S0S1S2S3S4S5S6S7 R1WR W RR R R2WR WR W R R3 WR WR W R W R R R W W R W RR W R 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)(2;2)4(R1,R2,R3)4 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen  Samenvoegen registers Chaining Pipelining & multicycling

136 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Implementatie SRA na alle samenvoegingen ABS R3: y,t4 R1: a,t1,x,t7 In1In2 Out MINFU3>>3>>1 R2: b,t2,t3 t5,t6 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen  Samenvoegen registers Chaining Pipelining & multicycling

137 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Vergelijking kostprijs  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 Samen- voegen CLBpoortentransistoren Verbin- dingen RegFUTotRegFUTotRegFUTot Origineel Register FU Bus Reg.bank FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen  Samenvoegen registers Chaining Pipelining & multicycling

138 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  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 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers  Chaining Pipelining & multicycling

139 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Chaining =plaats een tussenresultaat niet in een register als  levensduur van tussenresultaat = 1  vertraging FU1 + vertraging FU2 < 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 − xt3t5 >> 3 − xt5 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers  Chaining Pipelining & multicycling

140 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 FSMD-ontwerp  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 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining  Pipelining & multicycling

141 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 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 t5 = x − t3 t6 = t4 + t5 t3 = x >> 3 [t4] = y >> 1 t5 = x − t3 t4 = [y >> 1] t6 = t4 + t5 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining  Pipelining & multicycling

142 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Versnellen trage operaties  Sequentieel  Parallel  Pipelining (lopende band) … t  hardware × n  datasnelheid × n  hardware × 1  datasnelheid × n … … … … … … FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining  Pipelining & multicycling

143 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 f() Pipelining =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 a f() y in a = in y = f(a) a = in y = f(a) a t = in t−1 y t = f(a t−1 ) a = in i = f 1 (a) y = f 2 (i) a = in i = f 1 (a) y = f 2 (i) a t = in t−1 i t = f 1 (a t−1 ) y t = f 2 (i t−1 ) = f 2 (f 1 (a t−2 )) a f 1 () i in f 2 () y klokfrequentie × 2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining  Pipelining & multicycling

144 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Pipelining: impact op ASM  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 a > 0 y = f(a) J N a = in a > 0 i = f 1 (a) J N y = f 2 (i) pipeline a = in i = f 1 (a) a > 0 J N a = in i = f 1 (a) y = f 2 (i) nieuwe ASM klokfrequentie :× 2 datafrequentie :zelfde × 2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining  Pipelining & multicycling

145 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Soorten pipelining  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 controller RF FU1FU2 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining  Pipelining & multicycling

146 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Pipelining: nadelen  Extra hardware (registers)  Verlies performantiewinst bij terugkoppeling (bewerking gebruikt resultaat van de vorige)  “stop de pipeline!” (geen nieuwe data) a = f(a) y t = f(a t−1 ) y k = f(a k−1 ) i = f 1 (a) a = f 2 (i) i = f 1 (a) a = f 2 (i) a t = f 2 (i t−1 ) = f 2 (f 1 (a t−2 )) a k = f 2 (f 1 (a k−2 )) verdubbeling snelheid klok & data? i = f 1 (a) a t = f 2 (i t−1 ) = f 2 (f 1 (a t−2 )) a k = f 2 (f 1 (a k−1 )) a = f 2 (i) geen dubbele datasnelheid! FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining  Pipelining & multicycling

147 FSMD KATHOLIEKE UNIVERSITEIT –07H01L1 Besluit synthese 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 FSMD Beschrijving Synthese Basis Samenvoegen variabelen Samenvoegen operatoren Samenvoegen verbindingen Samenvoegen registers Chaining Pipelining & multicycling


Download ppt "FSMD KATHOLIEKE UNIVERSITEIT 5-15-106–07H01L1 Inhoudstafel  Inleiding  De basis van digitaal ontwerp  Combinatorische schakelingen  Sequentiële schakelingen."

Verwante presentaties


Ads door Google