Datorteknik ERIK LARSSON

Relevanta dokument
Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

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

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

Tentamen den 18 mars svar Datorteknik, EIT070

Datorarkitekturer med operativsystem ERIK LARSSON

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

Datorarkitekturer med operativsystem ERIK LARSSON

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

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

Digitala System: Datorteknik ERIK LARSSON

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

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

Närliggande allokering Datorteknik

Datorarkitekturer med operativsystem ERIK LARSSON

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)

Pipelining i Intel Pentium II

Digitala System: Datorteknik ERIK LARSSON

Arm Cortex-A8 Pipeline

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

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Exempeltentamen Datorteknik, EIT070,

Pipelining i Intel 80486

TSEA28 Datorteknik Y (och U)

Parallellism i CDC 7600, pipelinens ursprung

TSEA28 Datorteknik Y (och U)

Parallellism i NVIDIAs Fermi GPU

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

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

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

Grundläggande datavetenskap, 4p

Tentamen den 17 mars 2016 Datorteknik, EIT070

Hantering av hazards i pipelines

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

Processor pipelining genom historien (Intel i9-intel i7)

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

MESI i Intel Core 2 Duo

Datorsystemteknik DVGA03 Föreläsning 8

TSEA28 Datorteknik Y (och U)

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

TSEA28 Datorteknik Y (och U)

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

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

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

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

SIMD i Intel s P5- baserade Pentium MMX

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

TSEA28 Datorteknik Y (och U)

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

TSEA28 Datorteknik Y (och U)

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

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

Hyper Threading Intels implementation av SMT. Datorarkitekturer med operativsystem - EITF60. Felix Danielsson IDA2

Program Datorteknik. Kontrollenhet. Exekvering av en instruktion. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk.

Datorteknik ERIK LARSSON

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

Datorsystem. Tentamen

Prestandapåverkan på databashanterare av flertrådiga processorer. Jesper Dahlgren

DEC Alpha instruktions Arkitektur

Hyper-Threading i Intelprocessorer

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

Minnet från processorns sida Datorteknik

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

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

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

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

Hantering av hazards i multi-pipelines

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

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

HF0010. Introduktionskurs i datateknik 1,5 hp

Datorsystemteknik för E/D

IT för personligt arbete F5

Digitalteknik och Datorarkitektur 5hp

Spekulativ exekvering i CPU pipelining

Effektivitetsmätning av multitrådning på ARM Cortex-A53 mikroarkitektur

TSEA28 Datorteknik Y (och U)

4. Pipelining. 4. Pipelining

Digitalteknik och Datorarkitektur

Cacheminne Intel Core i7

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Läsminne Read Only Memory ROM

Föreläsning 2. Operativsystem och programmering

DatorsystemteknikDAVA14 Föreläsning 9

Emil Kristiansson Kurs: EDT621 Delmoment: Rapport. En introduktion till Smart cache

Jacquards vävstol, 1801

Datorteknik. Föreläsning 7 Historia och framtid. Institutionen för elektro- och informationsteknologi, LTH

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Datorarkitektur. Fö 9: Datorarkitektur. Datororganisation. Typiska Arkitekturattribut. Introduktion till datorarkitektur.

Utvecklingen från en 8 bitars till en 16 bitars mikroprocessor

Digitalteknik och Datorarkitektur 5hp

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

Lösningar till tentamen i EIT070 Datorteknik

Tentamen PC-teknik 5 p

TSEA28 Datorteknik Y (och U)

Transkript:

Datorteknik ERIK LARSSON

Programexekvering (1) Hämta instruktion på 00001000 (där PC pekar) Fetch (2) Flytta instruktionen 0000101110001011 till CPU (3) Avkoda instruktionen: 00001 MOVE, 01110001 Adress, 011 Register 3 (4) Hämta data på adress: 01110001 Execute (5) Lagra datan i register 3 Primärminne Address Instruction 00001000 0000101110001011 00001001 0001101110000011 00001010 0010100000011011 00001011 0001001110010011 Data Instruktioner Register CPU Kontrollenhet Aritmetisk Logisk Enhet (ALU)

Fetch-Execute Utan pipelining: Tid: 1 2 3 4 5 6 Instruktion 1 Instruktion 2 Instruktion 3 Fetch Execute Fetch Execute Fetch Execute Med pipelining: Tid: 1 2 3 4 Instruktion 1 Instruktion 2 Instruktion 3 Fetch Execute Fetch Execute Fetch Execute

Pipeline diagram

Pipeline diagram (vid en viss tidpunkt)

Översikt Pipelining Pipeline problem (hazards) Strukturella problem (hazards) Data problem (hazards) Kontroll problem (hazards) Delayed branching Branch prediction Statiskt prediction Dynamisk prediction Branch history table

Översikt Parallellism Instruktions-nivå Superscalar processors Very Long Instruction Word processors Trådar

Inledning Konstant behov av högre prestanda Prestanda har uppnåtts genom: Utveckling inom halvledarteknik Tekniker som:» Cacheminne» Flera bussar» Pipelining» Superscalar arkitekturer 4000 Ökning av klockfrekvens över tiden 3500 Ivy Bridge Prescott Nehalem 3000 2500 2000 1500 Willamette 1000 500 Pentium II 0 486 1990 1995 2000 2005 2010 2015

Klassificering av datorarkitekturer Baserat på instruktionsflödet och dataflödet, klassficerar Flynn datorer: Single-instruction single-datastream (SISD) Single-instruction multiple-datastream (SIMD) Multiple-instruction single-datastream (MISD) Multiple-instruction multiple-datastream (MIMD) Flynn, M., Some Computer Organizations and Their Effectiveness, IEEE Transactions on Computers, Vol. C-21, pp. 948, 1972.

Single-instruction single-datastream (SISD) En ström av instruktioner (IS) och en ström av data (DS) CPU Kontroll enhet Beräknings enhet IS Minne DS

Single-instruction multiple-datastream (SIMD) En ström av instruktioner (IS) och flera strömmar av data (DS) Beräknings enhet 1 DS 1 Kontroll enhet Beräknings enhet 2 DS 2 IS Beräknings enhet n DS n Minne

Multiple-instruction multipledatastream (MIMD) Flera strömmar av instruktioner (IS) och flera strömmar av data (DS) CPU IS 1 Kontroll Beräknings DS 1 enhet enhet DS 2 CPU IS 2 Kontroll enhet Beräknings enhet Minne CPU DS n IS n Kontroll enhet Beräknings enhet

Multicore och multicomputer Multicore chips: Flera processorer (cores) på varje chip Intel x86: Intel Core Duo, Intel Core i7 Multicomputers: Flera datorer sammankopplade Vectorprocessorer; har instruktioner för vektorberäkninar Multimedia extentions MMX för Intel x86, VIS UltraSparc, MDMX för MIPS, MAX-2 för HP PA-RISC

Prestanda på parallella arkitekturer Hur snabbt kan arkitekturer maximallt exekvera? Hur snabbt exekverar arkitekturer ett normalt program? Hur mäta prestanda på en parallell arkitektur? Hur mäta prestanda om ytterligare funktionella beräkningsenheter läggs till?

Prestanda på parallella arkitekturer Peak rate: den teoretiska gränser på hur snabbt en arkitektur kan exekvera. Ofta har peak rate begränsat intresse eftersom det är svårt att uppnå peak rate Speedup (S): mäter vinsten med en parallell arkitektur jämfört med sekventiell exekvering: S = Ts / Tp där Ts är exekveringstid vid sekventiell exekvering och Tp är exekveringstid med parallell exekvering Efficiency (E) relaterar speedup till antal processorer, E=S/p där S är speedup och p är antal processorer. Idealt (teori) ska: S= Ts / (Ts/p) = p vilket leder till E=1

Amdahls lag Antag att ett program (algoritm) implementeras så att f är den del som måste exekveras sekventiellt. Då kan resten (1- f) exekveras parallellt. Denna del måste exekvera sekventiellt Denna del kan exekvera parallellt En CPU: f 1-f Ts=f*Ts+(1-f)*Ts p CPUer: f (1-f)/p Tp=f*Ts+(1-f)*Ts/p

Amdahls lag Exekveringstid: T p =f*t s +(1-f)*T s /p Speedup: S=T s /T p Efficiency: E=S/p Exempel: om f=20% och arkitekturen har 4 processorer, fås: Speedup S=1/(0.2+(1-0.2)/4)= 2.5 Efficiency E=1/(0.2*(4-1)+1)= 0.625 Även en liten bit sekventiell exekvering (1/f) leder till begränsningar på speedup och efficiency För att öka speedup och efficiency måste mer exekveras parallellt

Översikt Parallellism Instruktions-nivå Superscalar processors Very Long Instruction Word processors Trådar

Superscalar architecture En superscalar architecture (SSA) tillåter att mer än en instruktion initieras samtidigt och exekveras oberoende av varandra. Skalär: heltal, flyttal Icke-skalär: array, matris, vektor I pipelining är flera instruktioner aktiva men de är alla i olika pipeline steg Utöver pipelining, tillåter SSA att flera instruktioner exekverar samtidigt (i samma pipeline steg). Det är möjligt att initiera flera instruktioner i samma klockcykel; instruction level parallelism (ILP)

Superscalar architecture (SSA) Ett exempel, tre parallella enheter (pipelines): en flyttalsinstruktion och två heltalsinstruktioner kan exekveras samtidigt (som tidigare kan flera instruktioner vara aktiva i en pipeline) Flyttal: Heltal: Heltal: FI DI CO FO EI WO FI DI CO FO EI WO FI DI CO FO EI WO FI DI CO FO EI FI DI CO FO EI FI DI CO FO EI WO WO WO

Instruktionsfönster Instruktions fönster (instruction window) är de instruktioner som processorn har att välja mellan vid en viss tidpunkt. Instruktions fönstret ska vara så stort som möjligt för att ge möjlighet att effektivt välja instruktioner som ska exekveras Problem: Svårt att hämta instruktioner i hög hastighet Konflikter i pipeline (branches, struktural, data)

Problem med parallell exekvering Problem som förhindrar parallell exekvering i SSA liknar de problem som skapade problem i pipelines Konflikter i pipelines: Resource (resurs) konflikter Kontrollkonflikter Datakonflikter» True data dependency» Output dependency» Anti-dependency

True data dependency True data dependency (data konflikt/hazard) uppkommer när resultat (output) från en instruktion behövs som indata i följande instruktion: MUL R4, R3, R1 R4 R3 * R1 -------- ADD R2, R4, R5 R2 R4 + R5

True data dependency MUL R4, R3, R1 FI DI R4 CO R3 FO * R1 EI ADD R2, R4, R5 R2 R4 + R5 Här vill I2 ha resultat från * WO Här görs * FI DI CO FO EI WO FO EI WO FI DI CO STALL FO CO EI WO FO EI Här skrivs resultatet till R4 WO FI DI CO FO CO EI WO FO EI WO

Output dependency Output dependency existerar om två instruktioner skriver till samma plats. Om den senare instruktionern exekveras före den första blir det fel: MUL R4, R3, R1 R4 R3 * R1 -------- ADD R4, R2, R5 R4 R2 + R5

Anti-dependency En anti-dependency existerar om en instruktion använder en plats (minne/register) medan någon nästföljande instruktion skriver till den platsen. Om den första instruktionen inte är klar medan en efterföljande instruktion skriver på samma plats, blir det fel: MUL R4, R3, R1 R4 R3 * R1 -------- ADD R3, R2, R5 R3 R2 + R5

Register renaming: Output dependency och anti-dependency Output dependency Givet var: MUL R4, R3, R1 -------- ADD R4, R2, R5 R4 R3*R1 R4 R2+R5 Anti dependency Givet var: MUL R4, R3, R1 -------- ADD R3, R2, R5 R4 R3*R1 R3 R2+R5 Med nya register: MUL R4, R3, R1 -------- ADD R7, R2, R5 R4 R3*R1 R7 R2+R5 Med nya register: MUL R4, R3, R1 -------- ADD R6, R2, R5 R4 R3*R1 R6 R2+R5

Parallell exekvering Instruktioner kan alltså exekveras i en annan ordning än den som är given i programmet. Detta är inget problem så länge resultatet blir rätt. Exekveringspolicies: In-order issue with in-order completion In-order issue with out-of-order completion Out-of-order issue with out-of-order completion

Parallell exekvering Antag en superscalar processor: Två instruktioner kan hämtade (fetch) och avkodade (decoded) Tre funktionella enheter kan arbeta parallellt; en flyttals enhet, en heltals adderare, och en heltals multiplicerare Resultat från två instruktioner kan skrivas tillbaka (written back) samtidigt Decode, dispatch, rename Instruktions buffert Fetch unit Instructions cache Floating-point unit Register file Instruktions-fönster Instruction issuing Integer unit (+) Minne Integer unit (*) Data cache Commit

Parallell exekvering I3 och I4 är i konflikt om samma functionella funktionella enhet (*) Antag ett program: I1: ADDF R12, R13, R14 R12 R13 + R14 (float. pnt.) I2: ADD R1, R8, R9 R1 R8 + R9 I3: MUL R4, R2, R3 R4 R2 * R3 I4: MUL R5, R6, R7 R5 R6 * R7 I5: ADD R10, R5, R7 R10 R5 + R7 I6: ADD R11, R2, R3 R11 R2 + R3 I5 behöver resultatet från beräkningen i I4 Alla instruktioner kräver 1 klockcykel för exekvering förutom I1 som kräver två klockcykler I2, I2, I5 I5 och och I6 I6 är är i i konflikt om om samma functionella funktionella functionella enhet (+) (+)

In-order issue with in-order completion I1: ADDF R12, R13, R14 R12 R13 + R14 (flyttalsberäkning) I2: ADD R1, R8, R9 R1 R8 + R9 I3: MUL R4, R2, R3 R4 R2 * R3 I4: MUL R5, R6, R7 R5 R6 * R7 I5: ADD R10, R5, R7 R10 R5 + R7 I6: ADD R11, R2, R3 R11 R2 + R3 Decode/ Issue Execute FP ADD MUL Writeback/ complete Cykel I1 I2 1 I3 I4 I1 I2 2 I5 I6 I1 STALL 3 I3 I1 I2 4 I4 I3 5 I5 I4 6 I6 I5 7 I6 8

In-order issue med out-of-order completion I1: ADDF R12, R13, R14 R12 R13 + R14 (flyttalsberäkning) I2: ADD R1, R8, R9 R1 R8 + R9 I3: MUL R4, R2, R3 R4 R2 * R3 I4: MUL R5, R6, R7 R5 R6 * R7 I5: ADD R10, R5, R7 R10 R5 + R7 I6: ADD R11, R2, R3 R11 R2 + R3 Decode/ Issue Execute FP ADD MUL Writeback/ complete Cykel I1 I2 1 I3 I4 I1 I2 2 I5 I6 I1 I2 3 I3 I1 4 I4 I3 5 I5 I4 6 I6 I5 7 I6 8 Out-of-order completion

Out-of-Order Issue (OOI) med Out-of- Order Completion (OOC) I1: ADDF R12, R13, R14 R12 R13 + R14 (flyttalsberäkning) I2: ADD R1, R8, R9 R1 R8 + R9 I3: MUL R4, R2, R3 R4 R2 * R3 I6 kan starta före I5 och parallellt I4: MUL R5, R6, R7 R5 R6 * R7 med I4. Programmet tar bara 6 I5: ADD R10, R5, R7 R10 R5 + R7 cykler (jämfört med 8 i fallet med inorder issue and in-order I6: ADD R11, R2, R3 R11 R2 + R3 completion) Decode/Issue Execute Writeback/ Cykel FP ADD MUL complete I1 I2 1 I3 I4 I1 I2 2 I5 I6 I1 I3 I2 3 I6 I4 I1 I3 4 I5 I4 I6 5 I5 6 7 8

Konflikthantering Med in-order issue med in-order-completion behöver processorn bara hantera true data dependency, men inte output dependency och anti-dependency. Med out-of-order issue med out-of-order completion behöver processorn hantera true data dependency, output dependency och anti-dependency Output dependency MUL R4, R3, R1 R4 R3 * R1 - - - - ADD R4, R2, R5 R4 R2 + R5 Antidependency MUL R4, R3, R1 R4 R3 * R1 - - - - ADD R3, R2, R5 R3 R2 + R5

Sammanfattning Experiment har visat: Att enbart lägga till extra enheter (typ pipelines) är inte effektivt; Out-of-order är väldigt viktigt; det tillåter look ahead för independent instruktioner; Register renaming kan förbättra prestanda med mer än 30%; in this case performance is limited only by true dependencies. Viktigt med fetch/decode där instruktions fönstret är tillräckligt stort

Översikt Parallellism Instruktions-nivå Superscalar processors Very Long Instruction Word processors Trådar

Superscalar processorer Bra: Hårdvaran löser allt:» Hårdvara detekterar potentiell parallellism av instruktioner» Hårdvara försöker starta exekvering (issue) av så många instruktioner som möjligt parallellt» Hårdvara löser register renaming Kompatibla binärer:» Om en ny funktionell enhet läggs till i en ny version av arkitekturen eller några andra förbättringar göra (utan att ändra instruktionsuppsättningen) så kommer äldre program (kompilerade för äldre arkitektur) att kunna dra nytta av förbättringar eftersom den nya hårdvaran kan exekverar det gamla programmet (dess ordning av instruktioner) mer effektivt.

Superscalar processorer Problematiskt: Väldigt komplext:» Behövs mycket hårdvara för run-time detektering av möjlig parallellism» Effektförbrukningen kan bli hög, pga mycket hårdvara Begränsat instruktions fönster:» Det gör att det blir svårare att hitta instruktioner som har möjlighet att exekveras parallellt.

VLIW processorer VLIW processorer använder kompilatorn för detektering av parallellism Kompilatorn analyserar och detekterar operationer som kan exekveras parallellt. Dessa operationer packas in i en large instruktion När en long instruktion hämtats, exekveras alla dess operationer parallellt Ingen hårdvara behövs för run time detektering av parallellism Problemet med litet instruktions fönster är löst; kompilatorn kan vid kompilering använda hela programmet för detektera parallellism.

VLIW processorer Källkod... Fetch unit Minne FU-1 Maskinkod: Instr. i: op 1 op 2 op 3 op 4 op 1 - op 3 op 4 Decode unit FU-2 FU-3 Register op 1 op 2 - op 4 FU-4 Execution unit

VLIW processorer Fördelar: Enklare hårdvara.» Antalet FU kan ökas utan behov av mer och sofistikerad hårdvara för att detektera parallellism» Effektförbrukning kan reduceras Kompilatorn kan detektera parallellism genom en global analys av hela programmet (inget problem med begränsat instruktions fönster)

VLIW processorer Nackdelar: Många register behövs för att hålla alla FU aktiva (lagring av operander och resultat) Stor bandbredd behövs mellan:» FU och register» Register och minne» Instruktions cache och fetch unit (exempel: en instruktion med 7 operationer där varje operation behöver 24, krävs 168 bitar per instruktion)

VLIW processorer Nackdelar: Stora program (många instruktioner) pga icke använda operationer i instruktioner Binär (exekverbar kod) är inte kompatibel. Om en ny processor har fler FU så kan parallellism öka (fler operationer). Problemet är att instruktionerna ändras. Gammal kod kan inte exekvera på den nya processorn. Och om den kan det så utnyttjas inte alla FUs.

Sammanfattning För att möta det konstanta behov av prestanda så har super scalar processorer blivit väldigt komplexa VLIW processorer undviker komplexitet genom att låta kompilatorn hantera detektering av parallellism Operationsnivå parallellism ges direkt av instruktionerna i VLIW processorer I och med att en VLIW processor inte behöver hårdvara för att hantera parallellism kan VLIW processorer ha fler funktionella enheter för att öka möjligheter till parallellism. Dock, leder det till att behoven ökar för fler register och mer bandbredd för kommunikation

Översikt Parallellism Instruktions-nivå Superscalar processors Very Long Instruction Word processors Trådar

T I D Kontextbyte (context switch) Process A Process B Save state of A into PCBA Load state of B from PCBB A running Context switch B running Save state of B into PCBB Load state of A from PCBA Context switch A running

Processer och trådar En process består av en eller flera trådar (threads) där en tråd är sekventiell kod som kan exekvera parallellt med andra trådar A B C Alla trådar i en process delar data och stack, vilket gör att byte av tråd är mindre kostsamt än byte av process Hårdvarustöd: Programräknare och register per tråd Instruktionshämtning (fetch) på trådbasis Kontextbyte (byte av tråd) Effektiv exekvering av program med flera trådar (multithreading) Effektivt utnyttjande av processorns resurser

Processer och trådar Flera trådar (multithreading) Större chans att kunna exekvera instruktioner parallellt När en tråd blockeras (wait) på grund av till exempel minnesaccess så kan instruktioner från en annan tråd exekvera. Fördelen är att fördröjning på grund av minnesaccess (t ex cache miss), databeroende kan gömmas Multithreading kan användas på arkitekturer som är såväl skalära (scalar) och superskalära (superscalar) Multithreading: Interleaved multithreading Blocked multithreading Simultaneous multithreading (SMT)

A Multithreading A Tid Scalar (icke-superscalar) processor En tråd och en beräkningsenhet (pipeline) Interleaved multithreading A B C D A A Tråd blockeras Blocked multithreading A B C D Tid A Tid A B B C B D C B C C D

A Multithreading Superscalar processor En tråd och flera beräkningsenheter (pipelines) Interleaved Blocked Simultaneous multithreading multithreading multithreading (SMT) A B C D A B C D A A A A A A A A A B C D Tid A A B B C C D D A A A D D A A A A B B B B B B B C C A B A A B C A B C B D B B A B B B C C D

Sammanfattning Högre prestanda kan inte längre fås med högre klockfrekvens Parallella datorer samarbetar flera processorer för att lösa en uppgift Parallella program underlättar exekvering i en parallell arkitektur Datorer kan klassas som SISD, SIMD och MIMD Prestandan beror inte bara på antal beräkningsenheter, utan också hur parallellt ett program är Multithreading processorer ger via hårdvarustöd möjlighet att exekvera flera trådar

Framtiden Vem ska hantera parallellism? Programmerare Operativsystem Hårdvara Hur ska processorer se ut? Hur många och hur komplexa kärnor (cores)?

Framtiden Moores lag (antal transistorer fördubblas var 18/24 månad) gäller Exempel 2015: SPARC M7-10000000000 Transistorer blir mindre Exempel 2015: SPARC M7-20nm

Framtiden Kostnad för 45nm process: 200-500 miljoner USD En fotomask kan kosta 1000 till 100000 USD Behöver kanske 30 masker för ett komplett set.

Internet-of-Things

Tentamen Moment svarar mot 4.5hp, dvs 120 timmar arbete Schemalagd tid: 7*2=14 timmar Examination: Skriftlig tentamen. Inga hjälpmedel Första tentamen: 2017-03-16 klockan 14:00-19:00 Maximalt 50 poäng Betygsgränser: Betyg 3: Minst 20 poäng Betyg 4: Minst 30 poäng Betyg 5: Minst 40 poäng Motivera och förklara tydligt för tankegång är viktig