Datorarkitekturer med operativsystem ERIK LARSSON
Parallellberäkning Konstant behov av högre prestanda Prestanda har uppnåtts genom: Utveckling inom halvledarteknik Tekniker som:» Cacheminne» Flera bussar» Pipelining» Superscalar arkitekturer Men, single core CPUer räcker inte till. 4000 3500 3000 2500 2000 1500 1000 Klockfrekvens för några processorer Willamette Prescott Nehalem Ivy Bridge 500 Pentium II 0 486 1990 1995 2000 2005 2010 2015
Parallellberäkning När single core CPUer inte räcker till, fundera på: Fler CPUer Gemensamma resurser (delat minne (shared memory)) Busstruktur Avvägningar: Komplexitet av CPUer Gemensama resurser Prestanda på busstruktur
Klassificering av datorarkitekturer 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) 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 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 på 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 Förbättra en aspekt (sida) av en dator och förvänta sig proportionell förbättring: T improved = T affected improvement factor + T unaffected Exempel: Antag ett program med 100s exekveringstid där 80s används för multiplikation. Hur mycket snabbare (n) måste multiplikationen göras för att systemet ska bli 5 gånger snabbare? En olösbar ekvation. 5X (100/5) 80 20 + = n 20 Tid för icke multiplikation
Amdahls lag Antag att ett program (algoritm) implementeras så att f är den del som måste exekveras sekventiellt. Resten (1-f) kan exekveras parallellt på p enheter. f 1-f T s f (1-f)/p T p Exekveringstid: T p =f*t s +(1-f)*T s /p Speedup: S=T s /T p =T s /(f*t s +(1-f)*T s /p)=1/(f+(1-f)/p) Efficiency: E=S/p=1/(f*(p-1)+1)
Amdahls lag Antag att ett program (algoritm) implementeras så att f är den del som måste exekveras sekventiellt. Resten (1-f) kan exekveras parallellt på p enheter. f=20% (f-1)/4=20% (f-1)/4=20% (f-1)/4=20% (f-1)/4=20% Exempel: om f=20% och man 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
Processhantering Ett program behöver resurser för att kunna exekvera Alternerar mellan CPU och I/O cykler För att maximera utnyttjandet av CPU, används multiprogramming (time sharing, multi-tasking) mer än ett program är aktivt. Fetch Execute Fetch Execute Fetch Execute Fetch Tid för Facebook Tid för Musik 0101 0101 0011 Primärminne 0101 0101 0011 Byt program Data/instruktioner Control Central processing unit (CPU)
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
Process modell New preemption admitted Ready Running I/O, event completion dispatch I/O, wait exit Waiting Terminated
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
A Multithreading Scalar (icke-superscalar) processor En tråd A Tråd blockeras Interleaved multithreading A B C D A A Blocked multithreading A B C D A B C D B C A B B C C D
A Multithreading Superscalar processor A A A A En tråd A A A A Interleaved Blocked Simultaneous multithreading multithreading multithreading (SMT) A B C D A B C D A B C D 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
Framtid för multithreading? Kommer multithreading att överleva? Effektförbrukning -> enklare arkitekturer Cache-miss fördröjning Trådbyte kan vara kostnadseffektivt Flera enklare cores kanske delar resurser mer effektivt
Multi core Mål: koppla samman flera datorer för att få högre prestanda Jobb (process) parallelism Throughput av oberoende jobb Parallella program Ett program köra på flera processorer Multicore processorer Chip (IC) med flera processorer (cores)
Exempel 2 quad-core Intel Xeon e5345 (Clovertown) 2 quad-core AMD Opteron X4 2356 (Barcelona)
Exempel 2 oct-core Sun UltraSPARC T2 5140 (Niagara 2) 2 oct-core IBM Cell QS20
Minne-Processor Design Tillgång till minnet är en flaskhals Shared memory multiprocessor (SMP)
Minne-Processor Design Meddelande sändning Varje processor has sin adressrymd Meddelanden för kommunikation mellan processorer
Minne-Processor Design Buss design Bus Ring 2D Mesh N-cube (N = 3) Fully connected
GPU (grafik processor) Operera på element i vektorer T ex MMX (MultiMedia extension, Multiple Math extension eller Matrix Math extension) och SSE (Streaming SIMD Extensions) SIMD: alla processorer exekverar samma instruktion samtidigt men med olika data Vektor processorer: för streaming Instruktioner för vektorer, t ex lv, sv: load/store vektor addv.d: add vektor Vektor processorer är mer generella än ad-hoc media utökningar (MMX, SSE)
GPU historik Video kort 3D grafik behandling GPU:er För processorer för 3D» Spel Hantera pixlar
GPU i systemet
GPU arkitekturer Beräkningar är mycket parallella GPU:er är mycket multi-threaded Använder tråd (thread byts för att gömma långsamt minner» Mindre beroende av multi-level cacheminnen Trend går mot generella GPU:er Hetrogena CPU/GPU system» CPU för sekventiell kod och GPU för parallel kod Programmeringsspråk DirectX, OpenGL C för Graphics Compute Unified Device Architecture (CUDA)
Exempel: NVIDIA Tesla Streaming multiprocess or 8 Streaming processors
Sammanfattning Önskan om mer prestanda kan inte längre mötas med högre klockfrekvens Med 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