Parallellism i NVIDIAs Fermi GPU

Relevanta dokument
Datorarkitekturer med operativsystem ERIK LARSSON

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

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

Hantering av hazards i pipelines

Tentamen den 18 mars svar Datorteknik, EIT070

Pipelining i Intel Pentium II

Datorteknik ERIK LARSSON

Arm Cortex-A8 Pipeline

SIMD i Intel s P5- baserade Pentium MMX

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)

Pipelining i Intel 80486

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Öka prestanda i Shared-Cache multi-core processorer

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

Grafiska pipelinens funktion

Grundläggande datavetenskap, 4p

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

Spekulativ exekvering i CPU pipelining

Pipeline hos ARM Cortex-A53 och ARM Cortex-A73

Rapport (1,5 HP) Lunds Universitet HT15

Digitalteknik och Datorarkitektur 5hp

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

32 Bitar Blir 64 Sammanfattning

Datorarkitekturer med operativsystem ERIK LARSSON

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

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

Parallellism i CDC 7600, pipelinens ursprung

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

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

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

What Is Hyper-Threading and How Does It Improve Performance

Datorteknik och datornät. Case Study Topics

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

Hantering av hazards i multi-pipelines

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

Processor pipelining genom historien (Intel i9-intel i7)

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

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

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

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

MESI i Intel Core 2 Duo

Grafikkort till parallella beräkningar

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

Cache coherence hos multicoreprocessorer

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

Jacquards vävstol, 1801

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

Cacheminne Intel Core i7

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

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

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

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Teknik för avancerade datorspel!

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

Datorarkitekturer med operativsystem ERIK LARSSON

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

Datorarkitekturer med operativsystem ERIK LARSSON

Jämförelse av skrivtekniker till cacheminne

LINCE. -vad kommer sedan? Linköpings Universitet

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

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

Datorteknik ERIK LARSSON

Teknik för avancerade datorspel!

Hyper-Threading i Intelprocessorer

Cache-koherens protokoll MESI och MOSI

Tentamen den 17 mars 2016 Datorteknik, EIT070

IT-GUIDE Version 1.0 Författare: Juha Söderqvist

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

Aktivitetsschemaläggning för flerkärninga processorer

MESI-protokollets funktion i multiprocessorer

MESI-Protokollet. Richard Elvhammar. Lund Universitet 4/12-16

Skinning and Animation

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

LARS. Ett e-bokningssystem för skoldatorer.

Cacheminne i en Intel Core 2 Duo-processor

Multithreading in Intel Pentium 4 - Hyperthreading

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

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

Datorgrafik Ray tracing. Mattias Ekström, Västerås,

DYNAMISKT MEDIANFILTER I REALTIDSSPEL

Cacheminne i en AMD Opteron Processor

Datorsystemteknik för E/D

Närliggande allokering Datorteknik

Minnesisolering för virtuella maskiner en hypervisorstudie

Resurshantering i Dual-Core kluster

IT för personligt arbete F5

Grafiska pipelinen. Edvin Fischer

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Uppgift 1: a) u= a c + a bc+ ab d +b cd

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

TSEA28 Datorteknik Y (och U)

MESI protokollet och dess derivater

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

4 grundregler. Minneshantering. Problemet. Windows minkrav

ASIC TENTAMEN TSTE87. Tid: Lördag 17 mars 2007 kl. 14:00 18:00 Time: Saturday March , 14:00 18:00

DEC Alpha instruktions Arkitektur

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

Displaysystem. Hans Brandtberg Saab Avitronics SAAB AVITRONICS

Transkript:

Parallellism i NVIDIAs Fermi GPU Thien Lai Phu IDA2

Abstract This report investigates what kind of computer architecture, based on Flynn s taxonomy, is used on NVIDIAs Fermi-based GPU to achieve parallellism at a data-level on the GPUs multithreaded processors. We find that a variant of SIMD (Single Instruction, Multiple Data), called SIMT, is used in the multiple processors on Fermi graphics cards and that NVIDIAs implementation of SIMT very closely resembles a vector-based processor. We also dives deeper into the specifics of the Fermi architecture and covers what kind of techniques are used in order to increase overall performance of the GPU, one key technique being the ability to execute two warps simultaneously. Based on the similarities to a vector-based processor that we can find on the GPU processors, we theorize that a Fermi GPU should technically be able to be classified as a multicore vector processor, and therefore also be able to perform similar tasks as aforementioned processor.

Inledning Förr i tiden brukade många mikroprocessorer hantera både datorgrafik (t.ex det som visas på din dators bildskärm) och program, vilket medförde att en del av processorns instruktionskapacitet gick till grafikrelaterade beräkningar. Med en stigande marknad för tvoch datorspel och en ökande efterfrågan på bättre grafik, som i sin tur innebar ett behov av effektivare grafikrelaterade beräkningar i mikroprocessorer, tillsammans med Moores lag ledde till utvecklingen av GPUer (Graphics Processing Units), grafikprocessorer som var helt ägnade åt dessa beräkningar. Nuförtiden kan även datorprogram utnyttja processorkraften i GPUer, som idag kan innehålla flera biljoner transistorer och ett flertal samverkande processorer i ett enda grafikkort. Det är viktigt att processorerna i en GPU kan arbeta parallellt för att snabbt kunna utföra en instruktion utan konflikter. Den här rapporten kommer gå igenom vilken sorts teknik som används i grafikkort av NVIDIAs arkitektur Fermi och vilka egenskaper som är unikt för Fermi. Metod Inom området parallellism för processorer är det viktigt att veta hur man hanterar data och instruktioner. Hur många av varje kan processorn hantera på en gång? Det finns två möjligheter att välja mellan, endast en eller flera. Detta leder till fyra kombinationer, SISD (Single Instruction, Single Data), SIMD (Single Instruction, Multiple Data), MISD (Multiple Instructions, Single Data) och MIMD (Multiple Instructions, Multiple Data). Tekniken som används för att uppnå parallellism i kärnorna i NVIDIAS grafikkort av arkitekturen Fermi är en variant av SIMD som kallas SIMT (Single Instruction, Multiple Thread). Som namnet tyder så fungerar SIMT sådan att man hämtar en instruktion för flera trådar som ska utföra denna instruktion. För att detta ska vara möjligt måste en GPU bestå av flera multitrådade SIMD processorer som jobbar parallellt med varandra. Trådarna som skapas och hanteras i GPUerna är trådar bestående av endast SIMD instruktioner. En vanlig tråd är i sin tur den information som en CPU behöver för att exekvera en ström av instruktioner, bl.a. så finner man programräknare, register state och en stack i en tråd (jämför med ett bokmärke). Den typen av tråd som används i vårt fall kräver att SIMD

processorerna som ska exekvera trådarna måste ha parallella functional units, s.k. SIMD Lanes, för att utföra operationen. Det måste även finnas en SIMD Thread Scheduler inuti varje multitrådad processor som håller reda på och schemalägger trådar som ska exekveras i processorn. Något specifikt för NVIDIAs GPU är hur minnet är fördelat mellan de multitrådade processorerna. Varje enskild processor har en minnesmängd som inte delas med andra SIMD processorer i grafikkortet och en minnesmängd som hela GPUn kan ta nytta av. Funktionsmässigt fungerar SIMD processorerna i grafikkorten likt vektorprocessorer. Som namnet tyder så utför man operationer på vektorer istället för skalära (enskilda) värden. Vektorerna består av ett antal n-bitar ord som är lika många som vektorns storlek. En vektor instruktion utför en operation på varje element i en vektor. Man använder sedan pipelining för att utföra vektoroperationer parallellt på elementen i en vektor. Mycket av det som nämnts ovan finner vi i NVIDIAs grafikkort av arkitekturen Fermi. Eftersom Fermi-grafikkort har tillverkats i olika prisklasser så skiljer sig antalet multitrådade SIMD processorer åt mellan grafikkortsmodeller, t.ex har NVIDIAs Fermi flaggskeppskort GTX 580 16 st multitrådade SIMD processorer jämfört med instegsmodellen GTX 560 som har 10,5 st processorer. För att hantera denna skillnad mellan grafikkort finns det en Thread Block Scheduler som samlar ihop trådar i blocks och delar ut blocks till processorerna för exekvering. När en SIMD processor ska exekvera ett block så delas blocket upp i s.k. warps om 32 trådar var och kör sedan varje warp i blocket oberoende av varandra. Thread Block Scheduler tar även hänsyn till hur många SIMD processorer som finns tillgängligt i en GPU när blocks ska fördelas. Unikt för Fermi arkitekturen är att de multitrådade SIMD processorerna kan utföra två warps på en gång. Varje SIMD processor i en Fermi GPU har två Warp Schedulers, vars funktion är lik en SIMD Thread Scheduler beskriven ovan, som kan välja ut två warps som ska exekveras. Sedan används två stycken enheter som delar ut instruktioner för nästa steg. När två warps har valts ut kommer instruktionsutdelarna att dela ut en instruktion från varje warp till antingen CUDA-kärnor (beräkningsenheterna), till Load/Store-enheter för mellanlagring, eller till SFUs (Special Function Units, speciella beräkningsenheter som kan utföra mer komplexa beräkningar som t.ex sinus och cosinus). Alla dessa finner man inuti SIMD processorn. Man behöver inte se upp för kollisioner tack vare att warps exekveras oberoende av varandra, och de flesta instruktionerna som ska utföras går att exekvera i par (NVIDIA 2009).

Resultat Det finns egentligen ingen stor skillnad mellan SIMT och SIMD förutom de multitrådade SIMD processorerna som körs parallellt med varandra i GPUer. Vi ser att den grundläggande tekniken som används för att uppnå parallellism i NVIDIAs Fermi GPUer, SIMT, har mycket gemensamt med SIMD och vektorprocessorer. NVIDIA bygger sedan vidare på denna teknik genom att implementera saker som förbättrar prestandan i SIMT, bl.a. fann vi att grafikkort som tillhör Fermi-arkitekturen kan utföra två warps på en gång tack vare hur NVIDIA har valt att bygga upp deras SIMD processorer som finns i grafikkorten. Minnesmässigt påminner designvalet, att varje processor har sitt eget minne och kan ta del av ett större gemensamt minne, om ett flernivås-cacheminnen för en CPU. Av detta hade man kunnat påstå att en Fermi GPU tekniskt sett skulle kunna fungera som en flerkärnad vektorbaserad CPU då det finns många likheter mellan en vektorprocessor och en Fermi GPU. NVIDIA har däremot endast tillgängliggjort ett virtual instruction set, PTX, för Fermi-arkitekturen vilket gör att påståendet inte kan konfirmeras.

Referenser Wittenbrink, Craig M.; Kilgariff, Emmett; Prabhu, Arjun. IEEE Micro. 03/01/2011, Vol 31 Issue 2, p.50-59. NVIDIA (2009). NVIDIA s Next Generation CUDA Compute Architecture: Fermi, www.nvidia.com/content/pdf/fermi_white_papers/nvidia_fermi_compute_architecture_white paper.pdf [2016-12-01] David A. Patterson, John L. Hennessy (2014). Computer Organization and Design: The Hardware/Software Interface, Fifth Edition.