LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Relevanta dokument
Parallellism i NVIDIAs Fermi GPU

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)

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

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

Hantering av hazards i pipelines

Grafiska pipelinens funktion

Pipelining i Intel Pentium II

SIMD i Intel s P5- baserade Pentium MMX

Hyper-Threading i Intelprocessorer

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

Parallellism i CDC 7600, pipelinens ursprung

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

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

Processor pipelining genom historien (Intel i9-intel i7)

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

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

Öka prestanda i Shared-Cache multi-core processorer

Grundläggande datavetenskap, 4p

Datorarkitekturer med operativsystem ERIK LARSSON

Datorteknik ERIK LARSSON

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

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

Information Coding / Computer Graphics, ISY, LiTH CUDA. En lösning för generella beräkningar. En introduktion: Programmingsmodell och språk

32 Bitar Blir 64 Sammanfattning

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

Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA

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

Datorarkitekturer med operativsystem ERIK LARSSON

DEC Alpha instruktions Arkitektur

Datorarkitekturer med operativsystem ERIK LARSSON

Arm Cortex-A8 Pipeline

Datorteknik ERIK LARSSON

Grafiska pipelinen. Edvin Fischer

HF0010. Introduktionskurs i datateknik 1,5 hp

Shaders. Renderingssystem. Renderingssystem. Renderingssystem. Hårdvara för 3D-rendering. Hårdvara för 3D-rendering

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA

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

Datorteknik ERIK LARSSON

Tentamen den 18 mars svar Datorteknik, EIT070

Spekulativ exekvering i CPU pipelining

Pipelining i Intel 80486

KUNDCASE. Inovia gjorde sin AI-utveckling 10 gånger snabbare med Power-plattformen

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

Datorsystemteknik DAV A14 Föreläsning 1

Föreläsning 2. Operativsystem och programmering

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

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

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

Datorarkitekturer med operativsystem ERIK LARSSON

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

Datorsystemteknik DVGA03 Föreläsning 8

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

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

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

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

F5: Högnivåprogrammering

F5: Högnivåprogrammering

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

Digital- och datorteknik

Grafikkort till parallella beräkningar

IT för personligt arbete F5

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Digitala System: Datorteknik ERIK LARSSON

Multithreading in Intel Pentium 4 - Hyperthreading

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

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

Datorsystemteknik för E/D

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

Shaders. Gustav Taxén

Tentamen PC-teknik 5 p Lösningar och kommentarer

Teknik för avancerade datorspel!

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

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

MESI i Intel Core 2 Duo

Viktigt säkerhetsmeddelande till marknaden, Korrigering av medicinteknisk produkt #15483

Rapport (1,5 HP) Lunds Universitet HT15

Tentamen PC-teknik 5 p

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Digital elektronik och inbyggda system

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

Hantering av hazards i multi-pipelines

Digital- och datorteknik, , Per Larsson-Edefors Sida 1

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Innehåll. EDAA35 Föreläsning 5. Kursinformation: tidigare laborationer som inte är godkända. Kursinformation: Presentation av lab 4

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

DIG IN TO Dator och nätverksteknik

Vår väg till Godkänt, och sedan vidare...

DYNAMISKT MEDIANFILTER I REALTIDSSPEL

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Datorarkitekturer med operativsystem ERIK LARSSON

Introduktion till programmering

Introduktion till programmering och Python Grundkurs i programmering med Python

Pipelining: Software Optimeringar Av: Gustaf Lagerblad

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

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

Teknik för avancerade datorspel!

Datorsystemteknik DAV A14 Föreläsning 1

Transkript:

LUNDS UNIVERSITET Parallell exekvering av Float32 och INT32 operationer Samuel Molin Kursansvarig: Erik Larsson Datum 2018-12-05 Referat Grafikkort utför många liknande instruktioner parallellt då typiska program exekveras på dem. Uppgifterna som utförs har en förutsägbar distribution heltal samt flyttalsoperationer vilket utgör en flaskhals då flyttalsoperationer blockeras då exekvering av heltalsoperationer sker. Texten hanterar en metod utvecklad av Nvidia till sin nya Turing mikroarkitektur för att låta heltal samt flyttalsoperationer exekvera parallellt.

Innehållsförteckning Introduktion 2 Teori 3 ALU och FPU 3 CUDA 3 Relevansen av parallell exekvering i GPUn 4 Diskussion 5 Avslutning 6 Referenser 7 Introduktion Komponenterna som används för att bygga upp en processor utvecklas hela tiden och när prestanda och precision ökar ger detta industrin nya möjligheter att utveckla och förbättra sina produkter. Den elektroniska strukturen av en processor kallas för en mikroarkitektur(ma); en MA byggs för att kunna exekvera ett instruktionsset som behövs för att uträtta de uppgifter processorn är byggd för på ett så effektivt sätt som möjligt. För att öka effektiviteten försöker man hitta flaskhalsar i dagens design som kan lösas med hjälp av ny elektronik eller metodik. Texten hanterar en effektivisering Nvidia gjort i sin grafikkorts-ma Turing som introducerades augusti 2018. Den nya tekniken är parallell exekvering av INT32 och FP32 operationer. Vad detta innebär är att operationer som utnyttjar den aritmetiska enheten för heltalsoperationer kan arbeta simultant med enheten som hanterar flyttalsoperationer. Det leder till att instruktioner i pipelinen inte behöver vänta lika länge eftersom båda enheterna kan utnyttjas samtidigt.[1]

Teori Till skillnad från processorer som byggs för att utföra ett brett instruktionsset utvecklas grafikkort för att utföra en specifik typ av uppgift bestående av ett mindre instruktionsset. Grafikkortets uppgift kan brytas ner i tre steg; Applikation, Geometri och Rastrering.[2] Första steget Applikation utförs i huvudsak av processorn och kan utföras parallellt med de övriga stegen som utnyttjar GPUn. Geometri steget kan brytas ned i flera uppgifter men i stora drag ansvarar det för att bestämma vertex eller punkters position samt kopplingen mellan dessa samt deras färg. Rastrering innebär att informationen från tidigare steg kvantiseras och bryts ned till individuella pixlar som ska målas upp på skärmen. Eftersom uppgifterna en GPU används till inte skiljer sig så mycket från varandra öppnar detta upp möjligheter till attackera flaskhalsar utan att detta har en negativ effekt på övriga uppgifter en vanlig flexibel processor hade behövt utföra.[2] ALU och FPU Program som körs på datorer använder heltal och flyttal för att utföra sina uppgifter och beräkningarna av dessa sker med hjälp av aritmetiska enheter(alu). För att utföra operationer med heltal och flyttal används olika enheter; flyttal använder en floating-point-unit eller (FPU) som till skillnad från ALUn kan utföra operationer som resulterar i flyttal eller vars input är flyttal såsom kvadratrötter eller trigonometriska beräkningar.[3] CUDA Turing använder sig av Nvidias Compute Unified Device Architecture(CUDA); CUDA är ett API som är skapat för att utveckla system som exekverar många operationer parallellt. CUDA implementeras i form av hundratals och ibland tusentals Streaming Multiprocessors(SM) som alla kan exekvera operationer parallellt. Varje SM kan jämföras med en mycket långsam processorkärna och de som används i Turing kallas för CUDA-kärnor.[4]

I en CUDA-kärna utförs alla operationer med hjälp av en exekveringsenhet även kallad den funktionella enheten(fu). Turing MAn lägger till en extra FU som kan exekvera heltalsoperationer samtidigt som CUDA-kärnan utför en flyttalsoperation.[1] Instruktionerna använder olika bussar för att exekvera instruktionerna parallellt eftersom det inte går att utföra dem samtidigt i samma pipeline.[1] Relevansen av parallell exekvering i GPUn Anledningen till att det är viktigt att kunna köra parallella INT32 och FLOAT32 operationer är att programmen som i huvudsak är krävande för en GPU består av en mix mellan heltalsoperationer och flyttalsoperationer. Grafikkort används i störst utsträckning för att spela

spel och Nvidia har genom att mäta den genomsnittliga distributionen operationer bland populära spel kommit fram till att det per 100 flyttalsinstruktioner är i genomsnitt 36 heltalsoperationer.[1] Genom att öppna upp möjligheten för dessa att exekvera parallellt betyder detta att flyttalsoperationer inte blockeras vilket gör att man kan köra 36% fler flyttalsoperationer per tidsenhet än vad man hade kunnat utan parallellism.[1] Diskussion Metoden är effektiv när den appliceras på GPUn. Hade samma metod kunnat användas för att strömlinjeforma den huvudsakliga processorns uppgift? Eftersom man har en god bild av uppgifterna en GPU uträttar kan man utveckla metoder som är skräddarsydda för dess funktion; om man försöker applicera samma lösning på en processor skulle det vara svårt att få det att leda till en ökning av prestanda. Processorer har mycket färre kärnor än vad en GPU har vilket gör att man inte kan utföra lika många parallella operationer. Detta i kombination med att en CPU har ett jämförelsevis komplext instruktionsset samt att distributionen heltal och flyttalsoperationer inte är lika uniform mellan uppgifter leder till att man inte kan förutsäga vilken distribution mikroarkitekturen ska byggas för.[1][5] En implementation som hade kunnat ha effekt skulle vara att använda CUDA-kärnor för att exekvera kod som upprepar sig såsom en while loop. Om loopen har både flyttal och heltalsoperationer hade parallell exekvering av dessa snabbat på processen.

Avslutning CUDA-kärnor lanserades 2007 och sedan dess har Nvidia implementerat dem i sina mikroarkitekturer. För varje iteration av GPU-serie hittas nya tekniker som utnyttjar dem på nya sätt; det är idag omöjligt att säga om metoden som Turing använder kommer bytas ut eller undergå förändring i senare arkitekturer men dagens implementation har en mätbar positiv inverkan på effektiviteten hos uppgiften GPUn utför.

Referenser [1] https://www.nvidia.com/content/dam/en-zz/solutions/design-visualization/technolo gies/turing-architecture/nvidia-turing-architecture-whitepaper.pdf [2] https://docs.microsoft.com/sv-se/windows/desktop/direct3d11/overviews-direct3d- 11-graphics-pipeline [3] Computer Organization And Design 5th Edition 2014; David A. Patterson, John L. Hennessy; Appendix B [4] https://devblogs.nvidia.com/cuda-turing-new-gpu-compute-possibilities/ [5] https://www.kjell.com/se/fraga-kjell/hur-funkar-det/dator/datorns-huvudkomponenter/pro cessorn