TSEA28 Datorteknik Y (och U)

Relevanta dokument
TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen. Datorteknik Y, TSEA28

Datorarkitekturer med operativsystem ERIK LARSSON

Pipelining i Intel Pentium II

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

TSEA28 Datorteknik Y (och U)

Datorteknik ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Närliggande allokering Datorteknik

Digitala System: Datorteknik ERIK LARSSON

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Datorteknik ERIK LARSSON

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Datorteknik ERIK LARSSON

Tentamen. Datorteknik Y, TSEA28

Datorsystemteknik DVGA03 Föreläsning 8

Tentamen. Datorteknik Y, TSEA28

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

TSEA28 Datorteknik Y (och U)

Datorarkitekturer med operativsystem ERIK LARSSON

Fetch-Execute. Datorteknik. Pipelining. Pipeline diagram (vid en viss tidpunkt)

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Tentamen Datorteknik D del 2, TSEA49

Grundläggande datavetenskap, 4p

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Tentamen. Datorteknik Y, TSEA28

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN)

Hantering av hazards i pipelines

Vad bör göras? Steg 1. RISC => pipelining. Parallellism. Pipelining. Nya LDA 13. RISC(reduced instruction set computer) Öka klockfrekvensen

Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

TSEA28 Datorteknik Y (och U)

Föreläsningsanteckningar 4. Pipelining

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Exempeltentamen Datorteknik, EIT070,

Digitala System: Datorteknik ERIK LARSSON

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

4. Pipelining. 4. Pipelining

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

Pipelining i RISC-processorn. Joakim Lindström Institutionen för informationsbehandling Åbo Akademi E-post: jolindst@abo.fi

Tentamen Datorteknik Y, TSEA28 Datum TER1 och TER2 Tid 14-18

Tentamen Datorteknik Y, TSEA28 Datum TER2 och TER3 Tid 14-18

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Lösningar till tentamen i EIT070 Datorteknik

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Lösningar till tentamen i EIT070 Datorteknik

DatorsystemteknikDAVA14 Föreläsning 9

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Tentamen Datorteknik Y, TSEA28 Datum

Tentamen. Datorteknik Y, TSEA28

Föreläsningsanteckningar 5. Cacheminnen

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

Processor pipelining genom historien (Intel i9-intel i7)

TSEA28 Datorteknik Y (och U)

Tentamen den 17 mars 2016 Datorteknik, EIT070

Datorarkitekturer med operativsystem ERIK LARSSON

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Pipelining i Intel 80486

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Spekulativ exekvering i CPU pipelining

Tentamen. Datorteknik Y, TSEA28

SIMD i Intel s P5- baserade Pentium MMX

IBM POWER4, den första flerkärniga processorn och dess pipelines.

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

Tenta i Digitalteknik

TSEA28 Datorteknik Y (och U)

Digital- och datorteknik

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Digital- och datorteknik

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Parallellism i CDC 7600, pipelinens ursprung

Hur det går att minska effektutvecklingen i en processor genom att ändra pipeline

Datorarkitekturer med operativsystem ERIK LARSSON

DEC Alpha instruktions Arkitektur

TSEA28 Datorteknik Y (och U)

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Transkript:

TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 2 TSEA28 Datorteknik Y (och U) Föreläsning 15 Kent Palmkvist, ISY Praktiska kommentarer Lab 4 extratillfälle idag 16/5 kl 15-17 Med labbhandledare, avsett för dom som gjorde hemuppgift ( dugga ) i tid Lab 5 extratillfälle imorgon tisdag 17/5 kl 15-17 Med labbhandledare, avsett för dom som gjorde hemuppgift ( dugga ) i tid Skicka mail till mig om ni vill vara med (eventuellt sätts fler pass in om det blir fullt) Många inte klara med lab 5 Extra möjlighet presentera labb kommer senare Rotationsdelen (uppgift 3) kan delvis göras hemifrån/isy linuxlab (se även hemsidan) make rotate_sdl ;./rotate-sdl Kan testa att programmet roterar bild korrekt Möjligt att få komma in i Bussen efter att ni gjort lab5a (kom förbi kontoret) TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 3 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 4 Praktiska kommentarer Lab 4 extratillfälle idag 16/5 kl 15-17 Med labbhandledare, avsett för dom som gjorde hemuppgift ( dugga ) i tid Lab 5 extratillfälle imorgon tisdag 17/5 kl 15-17 Med labbhandledare, avsett för dom som gjorde hemuppgift ( dugga ) i tid Skicka mail till mig om ni vill vara med (eventuellt sätts fler pass in om det blir fullt) Många inte klara med lab 5 Extra möjlighet presentera labb kommer senare Rotationsdelen (uppgift 3) kan delvis göras hemifrån/isy linuxlab (se även hemsidan) make rotate_sdl ;./rotate-sdl Kan testa att programmet roterar bild korrekt Möjligt att få komma in i Bussen efter att ni gjort lab5a (kom förbi kontoret) Tävlingsresultat 8 bidrag 2 klarade inte svåra listan (3 likadana värden, värdet 8000, 7fff etc.) Bästa resultat: 2216 klockcykler Näst bästa: 8171 klockcykler 3:e bästa: 9352 klockcykler Mitt eget försök: 8628 klockcykler

TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 5 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 6 Tävlingsresultat Bästa resultat: 2216 klockcykler Vinnare av tårta är Carl Ekman och Lisa Eriksson Dagens föreläsning Strukturella konflikter SIMD VLIW Superskalära processorer TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 7 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 8 Mål för datorarkitektur Utför så många instruktioner per tidsenhet som möjligt Med begränsning av effektförbrukning och pris Orsak till ökande beräkningskrav (applikationsområden) Matematiska beräkningar (oljeletning, lösning av ekvationssystem, simulering av konstruktioner, CAD) Multimedia (ljudkodning, bildkomprimering) Kryptering (krypterad överföring, signering, bitcoin) Kommunikation (modulering, felrättande koder) Ökning av prestanda med pipeline Tillåter flera instruktion exekverade parallellt Starta nästa innan föregående utförd färdigt Startar fortfarande bara en instruktion per klockcykel Sekvensiell instruktionsexekvering Arbetar parallellt med olika delar av flera instruktioner samtidigt Får problem med diverse konflikter Tvingas stanna exekvering av efterföljande instruktioner i vissa fall (STALL) Chapter 7 Handout från http://alanclements.org/supplements.html

TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 9 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 10 Exempel: Hantering av RAW STALL ( bubblor i pipeline) Tvinga nästa instruktion vänta på data (sänker fortfarande prestanda) Programmeraren behöver inte hålla reda på databeroende Exempel 2 stall mellan instruktion 2 och 3 => två ej utnyttjade möjligheter att utföra instruktioner motsvarande 2 NOP inlaggda mellan instruktion 2 och 3 ADD Rx,Ry,Rz ; Rx = Ry+Rz Klockcykel 1 2 3 4 5 6 7 8 9 ADD R0,R1,R2 IF OF OE OS ADD R3,R4,R5 IF OF OE OS ADD R2,R3,R4 IF S S OF OE OS ADD R6,R1,R3 IF OF OE OS IF = Instruction Fetch OF = Operand Fetch OE = Operation Execution OS = Operand Store S = Stall Konflikter i en pipelinad processor Datakonflikt Data inte tillgängligt från annan tidigare instruktion Styrkonflikt ADD R3,R4,R5 ; R3 = R4+R5 ADD R2,R3,R4 ; R3 inte tillgänglig direkt (R2=R3+R4) Icke-linjär instruktionssekvens BRA newplace ; nästa instruktion blir inte other: MOVE R2,#23 ; instruktion på nästa adress Strukturell konflikt Beräkningsenhet/resurs upptagen av annan instruktion ADD R0,R1,R2 ; addition både av operand och MOVE -(A7),R0 ; adressberäkning TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 11 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 12 Exempel på hantering av pipelineproblem Skalärprodukt av två vektorer med 40 element var 40 x i y i =x 1 y 1 +x 2 y 2 +...+x 40 y 40 i=1 Antag enkel pipelined dator ; a0 och a1 pekar på vektorerna dotprod: move.l #40,d0 ; d0 är loopräknaren clr.l d1 ; d1 är ackumulator move.w (a0)+,d2 ; räkna ut d1 = d1 + M[a0++]*M[a1++] move.w (a1)+,d3 ; d3=yi, öka pekare till yi+1 muls.w d2,d3 ; d3=d3*d2 add.l d3,d1 ; d1=d1+d3 Delayslot och ingen forward (resultat tar en klockcykel innan det kan läsas) add.w #-1,d0 ; Räkna ner loopräknaren nop ; <-- Delayslot för hoppet Databeroenden i koden D3 används direkt efter läsning i multiplikation och sedan i addition. Ger stall i pipeline vid varje instruktion Kräver 1+1+40*(1+1+2+2+1+1+1)+1 = 363 klockcykler Försök använda delayslot Måste hitta lämplig instruktion att flytta ; dotprod: move.l #40,d0 ; d0 är loopräknaren clr.l d1 ; d1 är ackumulator move.w (a0)+,d2 ; d1 = d1 + M[a0++]*M[a1++] move.w (a1)+,d3 muls.w d2,d3 ; databeroende add.l d3,d1 ; databeroende add.w #-1,d0 ; Räkna ner loopräknaren nop ; <-- Delayslot för hoppet

TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 13 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 14 Utnyttja delayslot add.w #-1,d0 måste ligga före bne, kan inte flyttas add.l d3,d1 kan placeras i delayslot Sparar 40 klockcykler. Dessutom minskar databeroende => 40 sparade cyckler ; totalt 283 klockcykler dotprod: move.l #40,d0 ; d0 är loopräknaren clr.l d1 ; d1 är ackumulator (ca 20% bättre) move.w (a0)+,d2 ; d1 = d1 + M[a0++]*M[a1++] move.w (a1)+,d3 muls.w d2,d3 ; Databeroende! Nästa förändring Rulla upp loop (dvs utför flera beräkningar i varje varv i loop) add.w #-1,d0 ; Räkna ner loopräknaren add.l d3,d1 ; <-- Delayslot för hoppet Utrullad loop, 2 mult per loop Minskar databeroende, tar bort STALL Sparar 40 klockcykler ytterligare 243 klockcykler Bättrat på prestanda för skalärprodukt med totalt 120/363=33% dotprod: move.l #40,d0 ; d0 är loopräknaren clr.l d1 ; d1 är ackumulator move.w (a0)+,d2 ; 2 iterationer per loop döljer move.w (a1)+,d3 ; databeroenden vilket ger move.w (a0)+,d4 ; färre STALL move.w (a1)+,d5 muls.w muls.w add.l d2,d3 d4,d5 d3,d1 add.w #-2,d0 ; Räkna ner loopräknaren med TVÅ! add.l d5,d1 ; <-- Delayslot för hoppet TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 15 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 16 Exempel på beräkningar JPEG/MPEG kodning 8x8 cosinustransform Kvantisering (viktning och avrunding) Zig-zag utläsning (Ordna om data) RLL-kodning (ange antal 0 följd av värde) MP3 Uppdelning av ljud i frekvensband (cosinustransform) Diverse kodning (baserad på örats förmåga särskilja ljud) N 1 y k = x n cos[ π n=0 N (n+1 2 )k ] Huffmankodning (olika antal bitar i symboler, få bitar för symboler som kommer ofta) Digital signalbehandling MP3 och JPEG exempel på digital signalbehandling Typiska egenskaper Ofta bestående av multiplikationer och additioner Summa av produkter = FIR filter Mycket loopar Hantering av buffertar (t ex 16 senaste värden) Cirkulär adressering (bas + offset mod size) Extrema krav på energieffektivitet buffert

TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 17 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 18 DSP processorer Speciell familj av processor har skapats 16 eller 24 bitars dataord Multipla minnesbankar och bussar Läs argument från minne parallellt Speciella adresseringsmoder buffer, zigzag-ordning, bitreverserad ordning Ingen cache Måste alltid veta hur lång tid operationer tar (realtidskrav) Speciella instruktioner Multiplicera och addera, loopräknare som inte kräver separata subtrahera och hoppa instruktioner En del finesser har även introducerats i vanliga processorer Finesser adderade till vanliga processorer Ofta appliceras samma operation på många data Exempel: Summera element i två vektorer c i =a i +b i Med 32-bitars och 64-bitars processorer blir hantering av data (16 eller 24 bitar) ineffektivt Läs och hantera flera data parallellt Exempel: 4 stycken 16-bitars data i ett 64-bitars ord Addition måste spärra carry från 16-bitar dataord till nästa Känt som multimedia extensions Intel: MMX, ARM: NEON, PowerPC: 3Dnow TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 19 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 20 SIMD (Single Instruction Multiple Data) Multimedia-expansion är exempel på SIMD Flera data hanteras parallelt av en instruktion Speciella processorer Vektorbaserad beräkning Ofta korta vektorer i vanliga processorer (2-8 värden) Iäs och skriv parallella data Exempel: Avkoda instruktion Läs 8 data Läs ytterligare 8 data Addera data två och två parallellt Skriv 8 data Mycket snabbare än att läsa och skriva ett data i taget Instruktionsavkodning och loophantering tillkommer Exempel på SIMD instruktion Addition av konstant C till 8-bitars värden i en 24- elements vektor (Intel MMX) MOVQ MM1,C ; 8 kopior av konstant i MM1 MOV CX,3 ; loopräknare (24=3*8) MOV ESI,0 ; index in i vektor Next: MOVQ MM0,x[ESI] ; ladda 8 byte PADDB MM0,MM1 ; Addera byte för byte MOVQ x[esi],mm0 ; Spara resultat ADD ESI,8 ; öka index med 8 LOOP Next ; loophantering med cx EMMES ; klar med MMX operationer

TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 21 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 22 Hantering av overflow i SIMD Data från en beräkning får inte spilla över i beräkningen bredvid Carry får inte skickas vidare Svårt hantera flera carry parallellt om inte inbyggt stöd i processorstrukturen Vanlig (ej SIMD/multimedia) overflow (wraparound) $ff + 1 = $00, $00-1 = $FF SIMD/multimedia hantering $ff + 1 = $ff Mättnatslogik används (använd närmaste tillåtna värde) Max = $F...F, Min = 0...0 för positiva heltal Max = $7F..F, Min = 80...0 för tvåkomplement Jämförelser och villkorliga hopp i SIMD Olika data jämförs samtidigt Flera olika resultat parallellt, men det går inte ha olika instruktionssekvenser parallellt Måste lösa villkorliga hopp utan att ändra instruktionssekvens En lösning: Sätt värde till bara 1:or eller bara 0:or som resultat på jämförelse Exempel: Sätt 8-bitars pixlar med värde < 50 till 0 Antag MM0 = $5050505050505050 PCMPGTb MM0, MM1 ; jämför 8 pixlar i MM1 PAND MM1, MM0 ; Sätt pixlar = 0 om pixel < 50 Pixlar i MM1: 20 8F C2 30 34 40 F1 A3 Tröskelvärde i MM0: 50 50 50 50 50 50 50 50 Jämförelseresultat i MM0: 00 FF FF 00 00 00 FF FF (efter PCMPGTb) Slutresultat i MM1: 00 8F C2 00 00 00 F1 A3 (efter PAND) TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 23 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 24 Skalärprodukt som SIMD Orginalkod: skalärprodukt på två vektorer med 40 element var SIMD-lösning med 64-bitars register dotprod: move.l #40,d0 ; d0 är loopräknaren clr.l MM2 ; MM2 är ackumulator move.w (a0)+,mm0 ; Läs 4 ord parallellt move.w (a1)+,mm1 pmaddwd MM0,MM1 ; multiplicera 16-bitarstal parvis, addera ihop parvis paddd MM0,MM2 ; addera produkt av två första paren psrq MM0,32 ; flytta 32-bitars produkt till lägre 32 bitar i MM0 paddd MM0,MM2 ; addera två sista produkterna till ackumulatr add.w #-4,d0 ; Räkna ner loopräknaren nop ; <-- Delayslot för hoppet Flynns taxanomi Single Instruction Single data Den vanliga processorn, 1 sekvens av data påverkas av 1 sekvens av instruktioner Single Instruction Multiple data Specialstruktur för att applicera samma instruktion till många datasekvenser samtidigt Multiple Instruction Multiple Data Flera vanliga processorer sammansatta i en dator Det vanliga fallet numera (t ex 4 kärnor i en PC, 8 kärnor i en mobiltelefon etc.) MISD (multiple instruction, single data) finns inte?

TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 25 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 26 Ökning av antal operationer per klockcykel Pipelining tillåter maximalt 1 instruktion per klockcykel Alternativ: Ange flera operationer i samma maskininstruktion Används av en del DSP-processorer Varje maskininstruktion har separata fält motsvarande flera vanliga instruktioner Kan skapas genom att kombinera två eller fler instruktioner från en vanlig processor Brukar innebära flera beräkningsenheter (ALU, multiplikator, shiftenhet) som kan användas parallellt Opcode1 Opcode2 Opcode3 Beräkningsenhet 1 1 maskininstruktion Beräkningsenhet 2 enhet Beräknings- 3 Registerfil VLIW (Very Long Instruction Words) Kombination av många opcoder skapar långa maskinkodsinstruktioner 256 bitar inte ovanligt Liknar väldigt mycket mikrokodinstruktioner Olika beräkningsenheter kan ha olika egenskaper Ett par ALU, någon multiplikator, någon skiftenhet Kan inte alltid packa ihop en sekvens så att alla enheter används samtidigt Kräver addition av NOP (liknar stall i en pipeline) TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 27 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 28 VLIW exempel Exempel på VLIW Antag 2 ALU samt en multiplikator Exempel 1: sekvensiell kod ADD R1,R2,R3 ; R1 = R2+R3 ADD R4,R5,R6 ; R4 = R5+R6 MULT R7,R8,R9 ; R7 = R8 * R9 Kan realiseras som en VLIW instruktion ADD R1,R2,R3 ; ADD R4,R5,R6 ; MULT R7,R8,R9 Exempel 2: Sekvensiell kod ADD R1,R2,R3 MULT R4,R5,R6 MULT R7,R8,R9 Kan inte realiseras i en instruktion (saknar 2 mult) ADD R1,R2,R3 ; NOP ; MULT R4,R5,R6 NOP ; NOP ; MULT R7,R8,R9 1 maskininstruktion Opcode1 Opcode2 Opcode3 ALU ALU MULT Registerfil Skalärprodukt på två vektorer med 40 element var 40 x i y i =x 1 y 1 +x 2 y 2 +...+ x 40 y 40 i=1 Antag VLIW med två instruktioner Databeroenden kan fortfarande inte lösas Behöver skriva om kod som tidigare (för att hantera datakonflikt) dotprod: move.l #40,d0 clr.l d1 move.w (a0)+,d2 nop ; En minnesport => bara en läsning move.w (a1)+,d3 nop ; d3 kan inte användas direkt muls.w d2,d3 nop ; Databeroenden, bara en instruktion add.l d3,d1 add.w #-1,d0 ; Räkna ner loopräknaren Bne loop nop ; om bra branch prediction

TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 29 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 30 Exempel på VLIW, fo Utgå från version med två parallella loopar Bättre än förra Fortfarande beroende av omskrivning av programmeraren dotprod: move.l #40,d0 clr.l d1 ; d1 är ackumulator move.w (a0)+,d2 nop ; 2 iterationer per loop, forfarande bara 1 minne move.w (a1)+,d3 nop move.w (a0)+,d4 nop move.w (a1)+,d5 muls.w d2,d3 muls.w d4,d5 add.l d3,d1 add.w #-2,d0 nop ; Räkna ner loopräknaren med TVÅ! add.l d5,d1 ; <-- Delayslot för hoppet VLIW egenskaper Enkel att avkoda instruktioner Kompilering/programmering komplicerat Kräver full förståelse för arkitekturen Kräver full kontroll över databeroenden Svårt kunna utnyttja alla beräkningsenheter parallellt Förändras arkitekturn måste program kompileras om TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 31 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 32 Alternativ till VLIW: Superskalär Öka antal instruktioner till flera per klockcykel Om cache används finns en hel cacheline tillgänglig Om m parallella pipeline används kan maximalt m gånger snabbare exekvering fås M-vägs superskalär processor Kan få < 1 klockcykel per instruktion Måste kunna utföra flera beräkningar parallellt Fler ALU och motsvarande behövs Måste utföra samma beräkningar som en icke-superskalär processor Databeroenden måste uppfyllas Superskalär processor, funktion 2-vägs superskalär struktur Hämta två instruktioner varje klockcykel Inte alltid möjligt exekvera båda parallellt Instruktion i Instruktion i+1 Instruktion i+2 Instruktion i+3 Instruktion i+4 Instruktion i+5 Om instruktioner inte kan ligga parallellt fås bubblor i pipeline

TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 33 Superskalär processor, arkitektur Superskalär processor, arkitektur Instruktionsminne skickar flera instruktioner per läsning Dispatch fördelar instruktioner till beräkningsenheter Registerfil med fler läs och skrivportar Minne med flera vägar PC Instruktions minne Dispatch ALU ALU PC Instruktions minne Dispatch Instruktionsminne skickar flera instruktioner per läsning Dispatch fördelar instruktioner till beräkningsenheter Registerfil med fler läs och skrivportar Flera exekveringsenheter Minne med flera vägar ALU Flera exekveringsenheter Registerfil Dataminne Registerfil Dataminne ALU 34 2015-01-05 TSEA28 Datorteknik Y 2015 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 35 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 36 Superskalär process, problem Ännu mer potentiella problem med konflikter Kostnad för bubblor ökar Svårt hitta parallella instruktioner Databeroenden begränsar hur många instruktioner som kan utföras parallellt Var börjar nästa instruktion? Måste behålla samma beteende som en rent sekvensiell maskin Samma utresultat Samma ordning på minnesskrivning/läsning? Ökning av parallellism Tillåt processor köra instruktioner i fel ordning OK så länge som slutresultat samma Exempel ADD R1,R2,R3 ; De två första instruktionerna kan ADD R4,R1,R3 ; inte köras samtidigt (R1 inte klar) ADD R5,R6,R7 Alternativ, i annan ordning ADD R1,R2,R3 ; Två första instruktionerna kan ADD R5,R6,R7 ; köras samtidigt ADD R4,R1,R3 Vill hitta fler parallella instruktioner

TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 37 TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 38 Exempel på superskalär exekvering Orginalkod: skalärprodukt på två vektorer med 40 element var 40 x i y i =x 1 y 1 +x 2 y 2 +...+x 40 y 40 i=1 Antag 2-vägs superskalär processor (1 minne, 2 ALU, ingen delayslot) dotprod: move.l #40,d0 ; d0 är loopräknaren \ samtidigt clr.l d1 ; d1 är ackumulator / move.w (a0)+,d2 ; Kan ej köras samtidigt med nästa pga 1 minne move.w (a1)+,d3 ; - ' ' - muls.w d2,d3 ; Databeroende, kan inte köra samtidigt med add.l add.l d3,d1 ; Kan köra samtidigt med add.w add.w #-1,d0 ; Kan köras samtidigt med 1 :a move.w om hopp döljs av ; branch prediction Superskalär exekvering, utrullad loop Skalärprodukt på två vektorer med 40 element var Antag 2-vägs superskalär processor (1 minne, 2 ALU, ingen delayslot) Inte någon stor Uppsnabbning (2 eller 3 tillfällen där 2 instruktioner utförs parallellt dotprod: move.l #40,d0 ; kan köras samtidigt med clr.l clr.l d1 move.w (a0)+,d2 ; 1 minne, kan inte köras samtidigt med nästa move.w (a1)+,d3 ; - ' ' - move.w (a0)+,d4 ; - ' ' - move.w (a1)+,d5 ; kan köras samtidigt med muls.w muls.w d2,d3 muls.w d4,d5 ; kan köras samtidig med add.l add.l d3,d1 add.l d5,d1 ; add.w #-2,d0 ; Räkna ner loopräknaren med TVÅ! TSEA28 Datorteknik Y (och U), föreläsning 15, Kent Palmkvist 2016-05-16 39 Skillnad mellan VLIW och superskalär Superskalär tar själv reda på vilka instruktioner som kan köras parallellt Varje instruktion är fortfarande en liten/enkel instruktion Processorn försöker exekvera sekvensiell kod parallelt Processorn räknar själv ut och hanterar data och kontrollberoende Kompilator/programmerare kan förutsätta sekvensiellt exekverad kod VLIW har från början definierat vilka operationer som ska ske parallellt i varje klockcykel Instruktionen är mycket större än för superskalär Delinstruktioner kan inte automatiskt flyttas mellan klockcykler Kompilator/programmerare måste garantera begränsningar hos arkitekturen Svårt flytta kod mellan olika arkitekturer (även med samma instruktionsuppsättning) www.liu.se