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

Relevanta dokument
Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

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

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

Tentamen den 18 mars svar Datorteknik, EIT070

Datorarkitekturer med operativsystem ERIK LARSSON

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

Närliggande allokering Datorteknik

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Pipelining i Intel Pentium II

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)

Digitala System: Datorteknik ERIK LARSSON

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

TSEA28 Datorteknik Y (och U)

Digitala System: Datorteknik ERIK LARSSON

Arm Cortex-A8 Pipeline

TSEA28 Datorteknik Y (och U)

Exempeltentamen Datorteknik, EIT070,

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

Pipelining i Intel 80486

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

Parallellism i NVIDIAs Fermi GPU

Parallellism i CDC 7600, pipelinens ursprung

Hantering av hazards i pipelines

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

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

SIMD i Intel s P5- baserade Pentium MMX

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

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

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

MESI i Intel Core 2 Duo

TSEA28 Datorteknik Y (och U)

Grundläggande datavetenskap, 4p

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

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

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

TSEA28 Datorteknik Y (och U)

DEC Alpha instruktions Arkitektur

TSEA28 Datorteknik Y (och U)

Tentamen den 17 mars 2016 Datorteknik, EIT070

TSEA28 Datorteknik Y (och U)

Datorsystemteknik DVGA03 Föreläsning 8

Processor pipelining genom historien (Intel i9-intel i7)

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

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

Hantering av hazards i multi-pipelines

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

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

Hyper-Threading i Intelprocessorer

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

Spekulativ exekvering i CPU pipelining

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

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

Datorteknik ERIK LARSSON

HF0010. Introduktionskurs i datateknik 1,5 hp

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

Datorteknik ERIK LARSSON

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

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

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)

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

Datorsystem. Tentamen

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

Digitalteknik och Datorarkitektur 5hp

Minnet från processorns sida Datorteknik

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

Läsminne Read Only Memory ROM

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

Föreläsning 2. Operativsystem och programmering

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

Digitalteknik och Datorarkitektur

4. Pipelining. 4. Pipelining

Datorarkitekturer med operativsystem ERIK LARSSON

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

32 Bitar Blir 64 Sammanfattning

Cacheminne Intel Core i7

Intel Silverthornes front-end

Datorsystemteknik för E/D

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

Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren

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

TSEA28 Datorteknik Y (och U)

Jacquards vävstol, 1801

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

Intel Pentium. Intel khz. 32 million 2600MHz. Copyright 2005 Benny Thörnberg, Mattias O Nils

Aktivitetsschemaläggning för flerkärninga processorer

Målsättning med kursen

Datorteknik ERIK LARSSON

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

DatorsystemteknikDAVA14 Föreläsning 9

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

Digitalteknik och Datorarkitektur 5hp

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Transkript:

Datorteknik ERIK LRSSON Fetch- Utan pipelining: Tid: 1 2 3 4 5 6 Instruktion 1 Instruktion 2 Instruktion 3 Fetch Fetch Fetch Med pipelining: Tid: 1 2 3 4 Instruktion 1 Instruktion 2 Instruktion 3 Fetch Fetch Fetch Pipelining Pipeline diagram (vid en viss tidpunkt) 6-stegs pipeline: Fetch instruction (FI) Decode instruction (DI) Calculate operand address (CO) Fetch operand (FO) instruction (EI) Write operand (WO) Tid: 1 2 3 4 5 6 7 8 Instruktion 1 Instruktion 2 Instruktion 3 FI DI CO FO EI WO FI DI CO FO EI WO FI DI CO FO EI WO

Pipeline diagram Ö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 Inledning Parallellism Instruktions-nivå Superscalar processors Very Long Instruction Word processors Trådar Konstant behov av högre prestanda Prestanda har uppnåtts genom: Utveckling inom halvledarteknik Tekniker som:» Cacheminne» Flera bussar» Pipelining» Superscalar arkitekturer 4000 3500 3000 2500 2000 1500 Ökning av klockfrekvens över tiden Ivy Bridge Prescott Nehalem Willamette 1000 500 Pentium II 0 486 1990 1995 2000 2005 2010 2015

Parallellberäkning Klassificering av datorarkitekturer När single core CPUer inte räcker till, fundera på: Fler CPUer (cores) Gemensamma resurser (delat minne (shared memory)) Busstruktur vvägningar: Komplexitet av CPUer Gemensama resurser Prestanda på busstruktur Baserat på instruktionsflödet och dataflödet, klassficerade 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) Single-instruction multiple-datastream (SIMD) En ström av instruktioner (IS) och en ström av data (DS) En ström av instruktioner (IS) och flera strömmar av data (DS) CPU Kontroll Beräknings Kontroll Beräknings 1 Beräknings 2 DS 1 DS 2 IS Minne DS IS Beräknings n DS n Minne

Multiple-instruction multipledatastream (MIMD) Multicore och multicomputer Flera strömmar av instruktioner (IS) och flera strömmar av data (DS) CPU IS 1 Kontroll Beräknings DS 1 DS 2 IS 2 CPU Kontroll Beräknings Minne Multicore chips: Flera processorer 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, MX-2 för HP P-RISC CPU DS n IS n Kontroll Beräknings Prestanda på parallella arkitekturer 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äkningser läggs till? 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

mdahls lag ntag att ett program (algoritm) implementeras så att f är den del som måste exekveras sekventiellt. Då kan resten (1- f) exekveras parallellt. En CPU: P CPUs: f 1-f f 1-f/p Tp=f*Ts+(1-f/)*Ts Ts=f*Ts+(1-f)Ts mdahls 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 Superscalar architecture Parallellism Instruktions-nivå Superscalar processors Very Long Instruction Word processors Trådar En superscalar architecture (SS) 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 SS 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 (SS) Instruktionsfönster Ett exempel, tre parallella er: Flyttal: Heltal: Heltal: en flyttalsinstruktion och två heltalsinstruktioner Kan exekveras samtidigt (som tidigare kan flera instruktioner vara aktiva i en pipeline) FI DI CO FO EI FI DI CO FO EI FI DI CO FO EI WO WO WO 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 True data dependency Problem som förhindrar parallell exekvering i SS liknar de problem som skapade problem i pipelines Konflikter i pipelines: Resource (resurs) konflikter Kontrollkonflikter Datakonflikter» True data dependency» Output dependency» nti-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 -------- DD R2, R4, R5 R2 R4 + R5

True data dependency Här görs * MUL R4, R3, R1 FI DI R4 CO R3 FO * R1 EI WO DD R2, R4, R5 FI DI R2 CO R4 FO + R5 EI WO FO EI WO FI DI CO STLL FO CO EI WO FO EI Här vill I2 ha resultat från * 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 -------- DD R4, R2, R5 R4 R2 + R5 nti-dependency Register renaming: Output dependency och 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: Output dependency Givet var: MUL R4, R3, R1 -------- DD R4, R2, R5 R4 R3*R1 R4 R2+R5 nti dependency Givet var: MUL R4, R3, R1 -------- DD R3, R2, R5 R4 R3*R1 R3 R2+R5 MUL R4, R3, R1 R4 R3 * R1 -------- DD R3, R2, R5 R3 R2 + R5 Med nya register: MUL R4, R3, R1 -------- DD R7, R2, R5 R4 R3*R1 R7 R2+R5 Med nya register: MUL R4, R3, R1 -------- DD R6, R2, R5 R4 R3*R1 R6 R2+R5

Parallell exekvering 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 ntag en superscalar processor: Två instruktioner kan hämtade (fetch) och avkodade (decoded) Tre funktionella er kan arbeta parallellt; en flyttals, 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 ntag ett program: I3 och I4 är i konflikt om samma functionella funktionella (*) I1: DDF R12, R13, R14 R12 R13 + R14 (float. pnt.) I2: DD R1, R8, R9 R1 R8 + R9 I3: MUL R4, R2, R3 R4 R2 * R3 I4: MUL R5, R6, R7 R5 R6 * R7 I5: DD R10, R5, R7 R10 R5 + R7 I6: DD R11, R2, R3 R11 R2 + R3 I2, I2, I5 I5 och och I6 I6 är är i i I5 behöver resultatet konflikt om om samma från beräkningen i I4 functionella funktionella functionella (+) (+) lla instruktioner kräver 1 klockcykel för exekvering förutom I1 som kräver två klockcykler In-order issue with in-order completion I1: DDF R12, R13, R14 R12 R13 + R14 (flyttalsberäkning) I2: DD R1, R8, R9 R1 R8 + R9 I3: MUL R4, R2, R3 R4 R2 * R3 I4: MUL R5, R6, R7 R5 R6 * R7 I5: DD R10, R5, R7 R10 R5 + R7 I6: DD R11, R2, R3 R11 R2 + R3 Decode/ Issue FP DD MUL Writeback/ complete Cykel I1 I2 1 I3 I4 I1 I2 2 I5 I6 I1 STLL 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: DDF R12, R13, R14 R12 R13 + R14 (flyttalsberäkning) I2: DD R1, R8, R9 R1 R8 + R9 I3: MUL R4, R2, R3 R4 R2 * R3 I4: MUL R5, R6, R7 R5 R6 * R7 I5: DD R10, R5, R7 R10 R5 + R7 I6: DD R11, R2, R3 R11 R2 + R3 Decode/ Issue FP DD 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: DDF R12, R13, R14 R12 R13 + R14 (flyttalsberäkning) I2: DD 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: DD R10, R5, R7 R10 R5 + R7 cykler (jämfört med 8 i fallet med inorder I6: DD R11, R2, R3 R11 R2 + R3 issue and in-order completion) Decode/Issue Writeback/ complete FP DD MUL Cykel 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 - - - - DD R4, R2, R5 R4 R2 + R5 ntidependency MUL R4, R3, R1 R4 R3 * R1 - - - - DD R3, R2, R5 R3 R2 + R5 Sammanfattning Experiment har visat: tt enbart lägga till extra er (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 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 VLIW processorer Källkod... Fetch unit FU-1 Minne Fördelar: Enklare hårdvara.» ntalet FU kan ökas utan behov av mer och sofistikerad hårdvara för att detektera parallellism Maskinkod: Instr. i: op 1 op 2 op 3 op 4 op 1 - op 3 op 4 op 1 op 2 - op 4 Decode unit FU-2 FU-3 FU-4 Register» Effektförbrukning kan reduceras Kompilatorn kan detektera parallellism genom en global analys av hela programmet (inget problem med begränsat instruktions fönster) Execution unit VLIW processorer 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) 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 er 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 Sammanfattning För att hålla alla funktionella er aktiva, måste kompilatorer för VLIW vara offensiva i sökandet efter parallellism. Tekniker som används är: Loop unrolling; flera iterationer unrollas för att hanteras parallellt Trace scheduling (villkorliga hopp); kompilatorn försöker förutse (predikt) vilken branch som tas. Instruktioner i den branchen schemaläggs så att de exekveras så snabbt som möjligt. Kompensationskod kan behöva läggas till för att få programmet korrekt. Detta leder till extra tid när dessa instruktioner exekveras Översikt Kontextbyte (context switch) Process Process B Parallellism Instruktions-nivå Superscalar processors Very Long Instruction Word processors T I D Save state of into PCB Load state of B from PCBB running Context switch Trådar B running Save state of B into PCBB Load state of from PCB Context switch 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 lla 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: B C 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) Multithreading Scalar (icke-superscalar) processor En tråd Tråd blockeras Interleaved multithreading Blocked multithreading B C D B C D Multithreading Superscalar processor En tråd Interleaved Blocked Simultaneous multithreading multithreading multithreading (SMT) B C D B C D B C D B C D B C B B C C D B B C C D D D D B B B B B B B C C B B C B C B D B B B B B C C D

Sammanfattning Hur många cores i framtiden? 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äkningser, utan också hur parallellt ett program är Multithreading processorer ger via hårdvarustöd möjlighet att exekvera flera trådar Moores lag (antal transistorer fördubblas var 18/24 månad) gäller. Transistorer blir mindre Men, Dennard skalning (konstant effektförbrukning per chip) gäller inte. Få komplexa cores, eller många enkla? Vem ska sköta utnyttjandet? HW, kompilator, programmerare 3D-Stacked ICs