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

Datorarkitekturer med operativsystem ERIK LARSSON

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

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

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

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

Datorarkitekturer med operativsystem ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Pipelining i Intel Pentium II

Närliggande allokering Datorteknik

Pipelining i Intel 80486

Parallellism i CDC 7600, pipelinens ursprung

Parallellism i NVIDIAs Fermi GPU

TSEA28 Datorteknik Y (och U)

Grundläggande datavetenskap, 4p

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

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

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

TSEA28 Datorteknik Y (och U)

Exempeltentamen Datorteknik, EIT070,

Arm Cortex-A8 Pipeline

Digitala System: Datorteknik ERIK LARSSON

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

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

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

SIMD i Intel s P5- baserade Pentium MMX

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Processor pipelining genom historien (Intel i9-intel i7)

Datorsystemteknik DVGA03 Föreläsning 8

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

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

MESI i Intel Core 2 Duo

TSEA28 Datorteknik Y (och U)

Tentamen den 17 mars 2016 Datorteknik, EIT070

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

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

Hantering av hazards i pipelines

TSEA28 Datorteknik Y (och U)

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

Datorteknik ERIK LARSSON

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

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

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)

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

TSEA28 Datorteknik Y (och U)

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

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

DEC Alpha instruktions Arkitektur

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

Datorteknik ERIK LARSSON

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

Datorarkitekturer med operativsystem ERIK LARSSON

Hyper-Threading i Intelprocessorer

Minnet från processorns sida Datorteknik

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

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

HF0010. Introduktionskurs i datateknik 1,5 hp

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

Datorteknik ERIK LARSSON

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

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

Digitalteknik och Datorarkitektur 5hp

Datorsystem. Tentamen

Spekulativ exekvering i CPU pipelining

Cacheminne Intel Core i7

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

TSEA28 Datorteknik Y (och U)

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

Digitalteknik och Datorarkitektur

IT för personligt arbete F5

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

4. Pipelining. 4. Pipelining

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

Datorsystemteknik för E/D

Digitalteknik och Datorarkitektur 5hp

Föreläsning 2. Operativsystem och programmering

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Intel Silverthornes front-end

Datorteknik ERIK LARSSON

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.

DatorsystemteknikDAVA14 Föreläsning 9

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

TSEA28 Datorteknik Y (och U)

Läsminne Read Only Memory ROM

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

Hantering av hazards i multi-pipelines

Datorarkitekturer med operativsystem ERIK LARSSON

32 Bitar Blir 64 Sammanfattning

Jacquards vävstol, 1801

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

Transkript:

Datorteknik ERIK LARSSON

Så här långt. FÖ2 RISC/CISC FÖ1 Primärminne Instruktioner och data Address Instruction 00001000 0000101110001011 00001001 0001101110000011 00001010 0010100000011011 00001011 0001001110010011 Central processing unit (CPU) Register FÖ4 pipeline pipeline pipeline Kontrollenhet Aritmetisk Logisk Enhet (ALU) FÖ3 FÖ5 FÖ6 Fetch instruction Execute instruction Interrupt enable? Yes! No! Interrupt handling FÖ2

Ö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: : 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

Pipelining 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

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 Instruktionsfö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ämtas (fetch) och avkodas (decoded) Tre funktionella enheter kan arbeta parallellt; en flyttalsenhet, en heltalsadderare, och en heltalsmultiplicerare Resultat från två instruktioner kan skrivas tillbaka (write 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 instruktionsfö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 I 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 Go, Rust, Swift

Framtiden Hur ska processorer se ut? Minne CPU CPU CPU pipeline pipeline Core 1 pipeline pipeline Core 2 pipeline pipeline pipeline pipeline Core 1 CPU Core 2 pipeline pipeline Core 3 Core 4 pipeline pipeline