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)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Tentamen den 18 mars svar Datorteknik, EIT070

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

Läsminne Read Only Memory ROM

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)

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

Datorarkitekturer med operativsystem ERIK LARSSON

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

Digitala System: Datorteknik ERIK LARSSON

Närliggande allokering Datorteknik

Grundläggande datavetenskap, 4p

Pipelining i Intel Pentium II

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

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Exempeltentamen Datorteknik, EIT070,

HF0010. Introduktionskurs i datateknik 1,5 hp

Datorteknik ERIK LARSSON

TSEA28 Datorteknik Y (och U)

Minnessystem. Minneshierarki. Flyktigt eller icke flyktigt huvudsakliga egenskaper. Minneshierarki

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Datorteknik ERIK LARSSON

Tentamen. Datorteknik Y, TSEA28

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

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

Digitala System: Datorteknik ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

Datorteknik ERIK LARSSON

Datorsystemteknik DVGA03 Föreläsning 8

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

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

Datorteknik Y - Föreläsning 13

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

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

Tentamen den 17 mars 2016 Datorteknik, EIT070

Tentamen Datorteknik D del 2, TSEA49

Datorarkitekturer med operativsystem ERIK LARSSON

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

Digital- och datorteknik

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

Mer datorarkitektur. En titt I datorn Minnen

Digital- och datorteknik

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

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

Föreläsningsanteckningar 5. Cacheminnen

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya

4. Pipelining. 4. Pipelining

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

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

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

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

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

F9: Minne. Sammansättning av minnesgrupper Ansluta minne till Interface till olika typer av minnen Användningsområden.

IT för personligt arbete F5

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

TSEA28 Datorteknik Y (och U)

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

Föreläsningsanteckningar 4. Pipelining

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

Digitalteknik och Datorarkitektur 5hp

Datorsystemteknik för E/D

Hantering av hazards i pipelines

TSEA28 Datorteknik Y (och U)

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Minnen. Informationsteknologi sommarkurs 5p, Agenda. Slideset 4

TSEA28 Datorteknik Y (och U)

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning

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

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

Pipelining i Intel 80486

TSEA28 Datorteknik Y (och U)

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

Datorarkitekturer med operativsystem ERIK LARSSON

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

MESI i Intel Core 2 Duo

Tentamen PC-teknik 5 p

Tentamen. Datorteknik Y, TSEA28

F9: Minne. Minneskonfiguration. Sammansättning av minnesgrupper Ansluta minne till Interface till olika typer av minnen Användningsområden

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

Lösningar till tentamen i EIT070 Datorteknik

DEC Alpha instruktions Arkitektur

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Datorsystemteknik DAV A14 Föreläsning 1

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

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

Transkript:

TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 3 TSEA28 Datorteknik Y (och U) Föreläsning 13 Kent Palmkvist, ISY Praktiska kommentarer Sorteringsuppgiften: Glöm inte testa mer än given sekvens i labbdokumentet! Flera lika värden? Minsta möjliga värdet (0x8000) Största möjliga värdet (0x7fff) Bara positiva respektive bara negativa värden? Sorteringstävlingen deadline: Torsdag 2/5 kl 23:59. Jag ska kunna ladda design, ändra värden i PM adress E0-FF, trycka på regs=0, nollställ klockcykler, och sedan Kont. Sista maskinkodsinstruktionen ska vara HALT från 1:a delen av labben (eller använda SEQ-fältet). TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 2 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 4 Dagens föreläsning Strukturella konflikter SIMD VLIW Superskalära processorer Minnen 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) Autonoma system (maskininlärning, identifiering)

TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 5 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 7 Ö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 Typer av konflikter i en pipelinad processor Datakonflikt (data inte tillgänglig) Data inte tillgängligt från annan tidigare instruktion ADD R3,R4,R5 ; R3 = R4+R5 ADD R2,R3,R4 ; R3 inte tillgänglig direkt (R2=R3+R4) Styrkonflikt (nästa instruktion hämtas fel) Icke-linjär instruktionssekvens BRA newplace ; nästa instruktion blir inte other: MOVE R2,#23 ; instruktion på nästa adress Strukturell konflikt (upptagen hårdvara) 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 13, Kent Palmkvist 2019-04-11 6 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 8 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 Hantering av strukturell konflikt Enklast? Mer hårdvara Exempel: Separat adderare för adressberäkning Mer hårdvara ökar kostnad Avvägning mellan prestandavinst jämfört med kostnad För programmeraren Undvik sekvenser som genererar strukturell konflikt Specifika lösningar beroende på arkitektur Ny arkitektur kräver omkompilering av kod

TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 9 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 11 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 Delayslot och ingen forward (resultat tar en klockcykel innan det kan läsas) ; r4 och r5 pekar på vektorerna dotprod: mov r0,#40 ; r0 är loopräknaren mov r1,#0 ; r1 är ackumulator ldrsh r2,[r4],#2 ; Läs ur 1:a vektor, öka sedan r4 med 2 ldrsh r3,[r5],#2 ; läs ur 2:a vektor mul r3,r3,r2 ; beräkna M[r4]*M[r5], öka r4 och r5 med 2 add r1,r1,r3 subs r0,r0,#1 ; räkna ned loopräknare bne loop nop ; Delayslot för hoppet bx lr ; återhopp från subrutin Utnyttja delayslot Subs r0,r0,#1 måste ligga före bne, kan inte flyttas add r1,r1,r3 kan placeras i delayslot Sparar 40 klockcykler. Dessutom minskar databeroende => ytterligare 40 sparade cyckler ; r4 och r5 pekar på vektorerna totalt 283 klockcykler dotprod: mov r0,#40 ; r0 är loopräknaren mov r1,#0 ; r1 är ackumulator (ca 20% bättre) ldrsh r2,[r4],#2 ; Läs ur 1:a vektor, öka sedan r4 med 2 ldrsh r3,[r5],#2 ; läs ur 2:a vektor, databeroende! mul r3,r3,r2 ; produkt av vektorelement subs r0,r0,#1 ; räkna ned loopräknare bne loop add r1,r1,r3 ; Delayslot för hoppet Nästa förändring Rulla upp loop (dvs utför flera beräkningar i varje varv i loop) bx lr ; återhopp från subrutin TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 10 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 12 Databeroenden i koden r3 används direkt efter läsning i multiplikation och sedan i addition. Ger stall i pipeline vid varje instruktion (mul samt add) 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: mov r0,#40 ; r0 är loopräknaren mov r1,#0 ; r1 är ackumulator ldrsh r2,[r4],#2 ; Läs ur 1:a vektor, öka r4 med 2 ldrsh r3,[r5],#2 ; läs ur 2:a vektor, öka r5 med 2 mul r3,r3,r2 ; produkt av vektorelement add r1,r1,r3 subs r0,r0,#1 ; räkna ned loopräknare bne loop nop ; Delayslot för hoppet bx lr ; återhopp från subrutin ; 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: mov r0,#40 ; r0 är loopräknaren mov r1,#0 ; r1 är ackumulator ldrsh r2,[r4],#2 ; 2 iterationer per loop döljer ldrsh r3,[r5],#2 ; databeroenden vilket ger ldrsh r6,[r4],#2 ; färre STALL ldrsh r7,[r5],#2 mul r3,r3,r2 mul r6,r6,r7 add r1,r1,r3 sub r0,r0,#2 ; Räkna ner loopräknaren med TVÅ! bne loop add r1,r1,r6 ; <-- Delayslot för hoppet bx lr

TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 13 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 15 Exempel på andra vanliga 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) DSP processorer Speciell familj av processor har skapats 12, 16 eller 24 bitars dataord Multipla minnesbankar och bussar Läs argument från minnen parallellt Speciella adresseringsmoder buffer, zigzag-ordning, bitreverserad ordning Ingen cache (oftast) 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 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 14 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 16 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) buffert Cirkulär adressering (bas + offset mod size) Extrema krav på energieffektivitet Mobila/batteridrivna applikationer vanliga Energi per operation 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 13, Kent Palmkvist 2019-04-11 17 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 19 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 (vektoraddition) Exempel principiell funktion hos instruktion: 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 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) 0xff + 1 = 0x00, 0x00-1 = 0xFF SIMD/multimedia hantering 0xff + 1 = 0xff Mättnatslogik används (använd närmaste tillåtna värde) Max = 0xF...F, Min = 0x0...0 för positiva heltal Max = 0x7F..F, Min = 0x80...0 för tvåkomplement TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 18 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 20 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 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 = 0x5050505050505050 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 13, Kent Palmkvist 2019-04-11 21 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 23 Skalärprodukt som SIMD Orginalkod: skalärprodukt på två vektorer med 40 element var SIMD-lösning med 64-bitars register dotprod: mov r0,#40 ; r0 är loopräknaren mov MM2,#0 ; MM2 är ackumulator ldrl MM0,[r4],#4 ; Läs 4 ord parallellt ldrl MM1,[r4],#4 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 ackumulator subs r0,r0,#4 ; Räkna ner loopräknaren bne loop nop ; <-- Delayslot för hoppet bx lr Ö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 Beräkningsenhet 1 1 maskininstruktion Opcode1 Opcode2 Opcode3 Beräkningsenhet 2 enhet Beräknings- 3 Registerfil TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 22 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 24 Flynns taxanomi Single Instruction Single data (SISD) Den vanliga processorn, 1 sekvens av data påverkas av 1 sekvens av instruktioner Single Instruction Multiple data (SIMD) Specialstruktur för att applicera samma instruktion till många datasekvenser samtidigt Multiple Instruction Multiple Data (MIMD) 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? Feltoleranta system (olika algoritmer på samma indata + majoritetsbeslut) 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 13, Kent Palmkvist 2019-04-11 25 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 27 VLIW exempel Exempel på VLIW, forts 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 Utgå från version med två parallella loopar Bättre än förra Fortfarande beroende av omskrivning av programmeraren dotprod: mov r0,#40 mov r1,#0 ; r1 är ackumulator ldrsh r2,[r4],#2 nop ; 2 iterationer per loop, forfarande bara 1 minne ldrsh r3,[r5],#2 nop ldrsh r6,[r4],#2 nop ldrsh r7,[r5],#2 mul r2,r3 mul r6,r6,r7 add r1,r1,r3 subs r0,r0,#2 nop ; Räkna ner loopräknaren med TVÅ! bne loop add r1,r6 ; <-- Delayslot för hoppet bx lr TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 26 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 28 Exempel på VLIW 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: mov r0,#40 mov r1,#0 ldrsh r2,[r4],#2 nop ; En minnesport => bara en läsning 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 ldrsh r3,[r5],#2 nop ; r3 kan inte användas direkt mul r2,r2,r3 nop ; Databeroenden, bara en instruktion add r1,r1,r3 subs r0,r0,#1 ; Räkna ner loopräknaren bne loop nop ; om bra branch prediction bx lr

TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 29 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 31 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, 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 Flera exekveringsenheter Registerfil Dataminne TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 30 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 32 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 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? Om olika längd måste nästa hittas snabbt Måste behålla samma beteende som en rent sekvensiell maskin Samma utresultat Samma ordning på minnesskrivning/läsning?

TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 34 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 36 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: mov r0,#40 ; r0 är loopräknaren \ samtidigt mov r1,#0 ; r1 är ackumulator / ldrsh r2,[r4],#2 ; Kan ej köras samtidigt med nästa pga 1 minne ldrsh r3,[r5],#2 ; - ' ' - mul r3,r3,r2 ; Databeroende, kan inte köra samtidigt med add.l add r1,r1,r3 ; Kan köra samtidigt med sub sub r0,r0,#1 ; Kan köras samtidigt med 1 :a ldrsh om hopp döljs av bne loop ; branch prediction bx lr 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) TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 35 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 37 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: mov r0,#40, ; kan köras samtidigt med mov r1,#0 mov r1,#0 ldrsh r2,[r4],#2 ; 1 minne, kan inte köras samtidigt med nästa ldrsh r3,[r5],#2 ; - ' ' - ldrsh r6,[r4],#2 ; - ' ' - ldrsh r7,[r5],#2 ; kan köras samtidigt med mul mul r3,r3,r2 mul r7,r7,r6 ; kan köras samtidig med add add r1,r1,r3 add r1,r1,r7 ; subs r0,r0,#2 ; Räkna ner loopräknaren med TVÅ! bne bx loop lr Problem med högre klockfrekvenser Alla delar i datorn är inte lika snabba Register skickar fort ut värden på bussen ALU går olika fort beroende på operation Shift, AND, OR etc. går fort Add/sub går långsammare Multiplikation ännu långsammare Minnen är långsamma Större minnen långsammare än mindre Fysisk gräns: ljusets hastighet 10 GHz motsvarar 100 ps/klockcykel = 3 cm (vakum!) Långsammare på chip pga material

TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 38 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 40 Minnen (program och datamminne) Utvecklingen av läshastighet för minne går långsammare än för processorn Ca 50% bättre processorprestanda per år Ca 10% bättre minnesprestanda per år Större och större skillnad, processorn måste oftast vänta på minnet Olika hastighet och pris för olika minnen Finns många typer Minnesegenskaper läs/skriv Enbart läsning (ROM, Read Only Memory) Processorn kan bara läsa, inte skriva till minnet Maskprogrammerade ROM Programmeras vid tillverkning, billigt i stora volymer PROM: Programmable Read Only Memory Skrivning kan göras 1 gång, oftast i speciell programmeringsutrustning EPROM: Eraseable Programmable Read Only Memory Minnet kan raderas i speciell utrustning (T ex UV) och programmeras om EEPROM: Electrically Eraseable Programmable Read Only Memory Minnet kan raderas cell för cell eller block elektriskt, eventuellt utan speciell utrustning FLASH: Speciell typ av EEPROM Kan inte radera enstaka celler, utan stora block (kbyte eller Mbyte) raderas per gång. Långsamma att skriva. TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 39 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 41 Minnesegenskaper Många olika egenskaper intressanta Processorns användning av minnesceller Kan värde skrivas in i minnesceller (read-write resp. read-only) Latens för läsning och skrivning Genomströmningshastighet för läsning och skrivning Försvinner värdena när strömmen slagits av (flyktiga) Tekniska/ekonomiska begränsningar Pris per bit i minnet Storlek på minnet Speciell hantering för att behålla värdet (dynamiska) Effektförbrukning Minnesegenskaper läs/skriv, forts. Läs och skriv (RAM, Random Access Memory) Processorn kan skriva och läsa till varje cell i minnet Beroende på teknik kan värdet i minnet försvinna om man inte läser värdet inom viss tid SRAM: Statiskt RAM, värdet ligger kvar så länge strömmen är på DRAM: Dynamiskt RAM, värdet försvinner om inte det läses och skrivs tillbaks inom viss tid (1-10 ms mellan varje läsning) Bygger på lagring av laddning i en kondensator som sakta laddas ur Jämför skriva i sanden på en strand med vågor. Texten blir till slut oläslig om den inte skrivs om med jämna mellanrum SRAM mycket dyrare per minnescell och snabbare än DRAM

TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 42 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 44 Fler detaljer om minnestiming för DRAM Dynamiskt minne är mer komplicerat att kommunicera med Varje minne har en kontroller som styr refresh och kommunikation Ett protokoll med ca 25 kommandot Ex: Datablad till Micron 256Mbit DDR3 minne är 211 sidor långt Mål med minnesdesign Få pinnar, låg effektförbrukning Hög genomströmningshastighet (pipelining) Egenskaper hos DRAM (DDR3 exempel) Lång tid start slumpmässig läsning/skrivning 11+8 klockcykler Klockfrekvens ca 500 Mhz => ca 2.5 M access/sekund Hopplöst långsamt! 2.5 GHz CPU => 1000 klockcykler i CPU per minnesaccess Pipelined minne => Kan påbörja fler accesser Möjlighet läsa burst av data Kan läsa många data i sekvens (8 i DDR3 exemplet) Utan att behöva vänta mellan varje data Kan få hög genomströmningshastighet TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 43 TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 45 DRAM, läsning Aktivera först rätt bank av minne och välj rad Välj sedan kolumn och gör läsning/skrivni ng Notera burst av data (flera i sekvens) Minnesegenskaper flyktigt/icke flyktigt Flyktigt minne, förlorar informationen vid spänningsbortfall (engelsk term: volatile) Måste initieras/fyllas när strömmen slås på (t ex SRAM, DRAM) Icke-flyktiga minnen, behåller värde även om strömförsörjning tas bort T ex: ROM, EPROM, FLASH Måste finnas icke-flyktigt minne i en dator Annars vet maskinen inte vad som ska göras när strömmen slås på BIOS, bootsekvens, etc. Brukar vara av ROM typ FLASH vanligt (tillåter uppdatering av bootsekvens etc.)

TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 46 Andra typer av minne På gång? Intel Optane (3D Xpoint) Snabbt, icke-flyktigt, kompakt? Lagring av information som magnetisk egenskap Hårddisk, magnetiska media (dock inte som program och dataminne) Ferromagnetiska minnen (FE-RAM), icke-flyktigt utan behov att raderas Kärnminnen (gammal teknik) Seriella minnen: lång väntan på 1:a värdet, sedan ganska snabbt nästa värde i samma sekvens (gammal teknik) Bubbelminnen (magnetiska öar skiftas runt i en enhet) Kvicksilverminnen (ljudvågor skickas genom kvicksilverränna) Kassettband, tape www.liu.se TSEA28 Datorteknik Y (och U), föreläsning 13, Kent Palmkvist 2019-04-11 47 Sammanfattande minneshierarki Primärminne (data och programminne) RAM Läs och skrivbara, Flyktiga, snabba, ganska dyra SRAM snabbast, dyrast DRAM långsammare, mer komplicerad, billigare per bit ROM Endast läsning, icke-flyktiga, snabba, varierande pris FLASH är snabba, ganska billiga, och omprogrammerbara Sekundärminnen Hårddiskar (mekaniska, SSD), flash-minnen Tape, molntjänster