Pascal (mikroarhitektuur)

**Pascal** on Nvidia graafikaprotsessori arhitektuuri koondnimi, mida peetakse Maxwelli arhitektuuri järeltulijaks. Pascali mikroarhitektuuri tutvustati esmalt 2016. aasta aprillis koos GP100 kiibiga. Arhitektuur on nime saanud Blaise Pascali järgi, kes oli 17. sajandi matemaatik. Kõik Pascali arhitektuuri kiibid toodetakse TSMC 16&nbsp;nm FinFET tootmisprotsessiga.

## Detailid
Märtsis 2014 kuulutas Nvidia välja Maxwelli arhitektuuri järeltulija, milleks on Pascali mikroarhitektuur. Tesla P100 (GP100 kiip ehk esimese generatsiooni Pascali tippklassi kiip) kuulutati välja 6. mail 2016 ning väljastati 27. mail 2016. Võrreldes GTX graafikaprotsessoritega (GP104 kiibiga ehk hetkel väljas olevatest graafikakaartidest GTX 1070, GTX 1080, Quadro P5000) on sel erinev Pascali arhitektuuri versioon. GP104 varjutaja plokid sarnanevad Maxwelli arhitektuuri disainiga.

Arhitektuuriliselt parandati GP100 juures järgmisi asju:
* Pascali arhitektuuris koosneb voogedastus-multiprotsessor 64 CUDA tuumast. Maxwelli arhitektuuril oli 128, Kepleril 192, Fermil 32 ning Teslal kõigest 8 CUDA tuuma voogedastus-multiprotsessoris. GP 100 voogedastus-multiprotsessor on liigendatud kaheks töötlemisplokiks, kummaski 32 ühekordse täpsusega CUDA tuuma, juhendite puhver, lõime planeerija, kaks tekstuuri vastendamise üksust ja kaks saatmisüksust.
* Võeti kasutusele CUDA arvutamisvõimekus 6.0.
* Kasutatakse HBM2-mälu (lairiba mälu), mõned kaardid sisaldavad 16GiB lairiba mälu neljas pinus, mis teeb kokku 4096-bitise siini ning 720 GB/s ribalaiusega mälu.
* Kasutusele võeti mälu arhitektuur, kus CPU ja GPU saavad mõlemad ligi süsteemi põhimälule ja graafikakaardi mälule, mida võimaldab Page Migration Engine'i tehnoloogia.
* NVLink on lairiba CPU ja GPU vahel ning mitme GPU vahel, mis võimaldab palju suuremaid andmeedastuskiirusi kui PCI Express ühendus, hinnanguliselt jääb andmeedastuskiirus vahemikku 80–200 GB/s.
* 16-bitiseid (FP16) ujukoma operatsioone (kõnekeeles "poole täpsusega") saab käivitada kaks korda sagedamini kui 32-bitiseid ujukoma operatsioone (kõnekeeles "ühekordse täpsusega") ja 64-bitiseid ujukoma operatsioone (kõnekeeles "kahekordse täpsusega") saab käivitada poole aeglasemini kui 32-bitiseid ujukoma operatsioone. 
* Maxwelli arhitektuuriga võrreldes on iga CUDA tuuma kohta kaks korda rohkem registreid.
* Rohkem on jagatud mälu kui varasematel arhitektuuridel.
* Kasutusel on dünaamiline koormuse jagamise ja planeerimise süsteem. See lubab planeerijal dünaamiliselt muuta, kui suur osa graafikaprotsessorist tegeleb mitme ülesandega, mis tagab, et graafikaprotsessoril on küllaldaselt tööd, välja arvatud juhtudel, kui ei ole ülesandeid, mida saaks turvaliselt jagada. Seega on Nvidia turvaliselt implementeerinud asünkroonse arvutamise Pascali draiveritega.
* Instruktsioonide tasandil ning lõimede tasandil on esmakasutusõigus.
Arhitektuuriliselt parandati GP104 juures järgmisi asju:
* Võeti kasutusele CUDA arvutamisvõimekus 6.1.
* Kiibil on uus mälustandard, GDDR5X, mis toetab kuni 10 Gbit/s andmeedastuskiirust, uuendatud mälukontrolleriga.
* Kasutusel on samaaegse mitmik-projektsiooni tehnoloogia, kus genereeritakse mitu projektsiooni ühest geomeetrilisest voost, kui see tuleb ülemistest varjutaja tasemetest ning siseneb voogedastus-multiprotsessori mootorisse.
* Kaartidel on DisplayPort 1.4 ja HDMI 2.0b pordid.
* Kiip võimaldab neljanda generatsiooni Delta värvitihendust (Delta Color Compression).
* Täiendati SLI liidest, see on suurema ribalaiusega võrreldes eelmiste versioonidega.
* PureVideo, mis võimaldab riistvaralist dekodeerimist: HEVC Main10 (10-bitine), Main12 (12-bitine) ja VP9 riistvaralist dekodeerimist.
* HDCP 2.2 tugi 4K DRM kaitsega materjalide esitamiseks ja voogedastuseks (Maxwell GM200 ja GM204 puhul puudub HDCP 2.2 tugi, aga GM206 toetab HDCP 2.2).
* Kasutusele võeti NVENC HEVC Main10,10-bitine riistvaraline kodeerimine.
* Kiipidel on peal GPU Boost 3.0 tehnoloogia.
* Kiibid võimaldavad asünkroonselt arvutada.
* Instruktsioonide tasandil on GP104 kiibil esmakasutusõigus. Graafiliste ülesannete puhul annab draiver esmaõiguse piksli tasemele, sest tüüpiliselt lõpetatakse pikselülesanded kõige kiiremini ning pikseltaseme eeskasutusõiguste üldkulud on palju madalamad, kui lubada instruktsioonide tasandil esmakasutusõigust. Arvutusülesanded saavad lõime tasandil või instruktsiooni tasandil esmakasutusõiguse. See on kasulik, sest arvutusülesanded võivad võtta palju aega ja pole mingisugust garantiid, millal need lõppeda võivad. Tänu sellele võimaldab draiver sellistele ülesannetele instruktsioonide tasandi esmakasutusõiguse.

## Ülevaade

### Graafikaprotsessori klastrid
Kiip on liigendatud graafikaprotsessori klastriteks (*Graphics Processor Clusters* – GPCs). GP104 kiibi puhul sisaldab graafikaprotsessori klaster viit voogedastusprotsessorit.

### Voogedastus-multiprotsessor Pascal
Nvidia voogedastus-multiprotsessor vastab AMD arvutusüksusele. Voogedastus-multiprotsessor sisaldab 128 ühekordse täpsusega aritmeetika-loogikaplokki (ALU) ("CUDA tuumad") GP104 kiibil ning 64 ühekordse täpsusega aritmeetika-loogikaplokki GP100 kiibil.

Mida AMD kutsub arvutusüksuseks (CU), võib võrrelda Nvidia voogedastus-multiprotsessoriga. Kui kõik arvutusüksuste versioonid sisaldavad 64 varjutaja protsessorit (näiteks 4 SIMD vektorühikut (igaüks 16 rada lai) = 64), siis Nvidia (tihti nimetatakse varjutaja protsessoreid "CUDA tuumadeks") samas eksperimenteerib erinevate numbritega:

* Üks Tesla voogedastus-multiprotsessor koosneb 8 ühekordse täpsusega (FP32) varjutaja protsessorist.
* Üks Fermi voogedastus-multiprotsessor koosneb 32 ühekordse täpsusega (FP32) varjutaja protsessorist.
* Üks Kepleri voogedastus-multiprotsessor koosneb 192 ühekordse täpsusega (FP32) varjutaja protsessorist ning ka 64 topelttäpsusega ühikust (vähemalt GK110 graafikaprotsessorid).
* Üks Maxwelli voogedastus-multiprotsessor koosneb 128 ühekordse täpsusega (FP32) varjutaja protsessorist.
* Üks Pascali voogedastus-multiprotsessor, vähemalt GP100 graafikaprotsessoritel, koosneb 64 ühekordse täpsusega (FP32) varjutaja protsessorist ning ka 32 topelttäpsusega (FP64) varjutaja protsessorist, mis tähendab 2:1 suhet ühe ning topelttäpsusega läbilaskevõime kohta. GP104 kiibil koosneb voogedastus-multiprotsessor 128 ühekordse täpsusega aritmeetika-loogikaplokist ja neljast topelttäpsusega aritmeetika-loogikaplokist, mis teeb nende suhteks 32:1. Lisaks koosneb see protsessor veel ühest poole täpsusega aritmeetika-loogikaplokist, mis koosneb kahest poole täpsusega ujukist, millest mõlemad saavad käivitada instruktsioone mõlemal ujukil. See teeb kokku 64:1 suhte, kui sama instruktsioon on kasutusel mõlemal elemendil. GP100 kiip kasutab aga rohkem paindlikke FP32 tuumasid, mis suudavad töödelda ühte ühekordse täpsusega või kahte poole täpsusega numbrit kaheelemendilises vektoris. Nvidia kavatseb seda kasutada süvaõppes, kus vajatakse algoritmide arvutamist.

### Polymorph-Engine 4.0
Polümorf mootor on üksus, mis vastutab ruutmosaiigi eest. See vastab funktsionaalsuse poolest AMD geomeetrilisele protsessorile. Pascali arhitektuur sisaldab versiooni 4.0. See on liigutatud varjutaja mooduli alt tekstuuritöötlemisklastri (TPC) alla, et lubada ühel polümorfi mootoril suunata ühele või mitmele voogedastusprotsessorile informatsiooni tekstuuritöötlemisklastri sees.

### Kiibid
* GP100 – Nvidia Tesla P100 graafikaprotsessori graafikakiirendi on suunatud sellistele laiaotstarbeliste graafikaprotsessorite rakendustele nagu FP64 topelttäpsusega arvutamine ja süvaõpe, mida kasutab FP16. See graafikaprotsessor kasutab HMB2-mälu.
* GP102 – see graafikaprotsessor on kasutusel Titan X kaardis ja sellel on 12 GB GDDR5X-mälu, 384-bitine mälusiin ja 480 GB/s mälu ribalaius. Seda graafikaprotsessorit kasutatakse ka Quadro P6000 ja Tesla P40 kaartides.
* GP104 – see graafikaprotsessor on kasutusel GeForce GTX 1070 ja GTX 1080 graafikakaartides. GTX 1070 kaardil on veerand varjutajatest välja lülitatud ja see on ühendatud GDDR5-mäluga, samas kui GTX 1080 kaardil on terve kiip ning on ühendatud GDDRX-mäluga. Seda graafikaprotsessorit kasutatakse ka Quadro P5000 ja Tesla P4 kaartides.
* GP106 – seda graafikaprotsessorit kasutatakse GeForce GTX 1060 kaardis koos GDDR5-mäluga.
* GP107 – seda graafikaprotsessorit kasutatakse GeForce GTX 1050 Ti ja GeForce GTX 1050 kaartides.
* GP108 – see kiip on mitteametlikel andmetel veel tulemas.

## Jõudlus
Pascali graafikaprotsessori teoreetilist ühekordse täpsusega töötlemisvõimsust tuhandetes ujukomatehetes sekundites (GFLOPS) arvutatakse järgmiselt: 2 * CUDA tuumade arv * tuuma taktsagedus (GHz).

Pascali graafikaprotsessori teoreetiline topelttäpsusega töötlemisvõimsus on 1/2 ühekordse täpsusega jõudlusest GP100 kiibil ning 1/32 GP102 ja GP104 kiipidel.

Pascali graafikaprotsessori teoreetiline poole täpsusega töötlemisvõimsus on kaks korda suurem kui GP100 kiibil ning 1/64 GP104 kiibiga võrreldes.

## Järeltulija
Pascali arhitektuuri järeltuleva arhitektuuri koodnimi on Volta. Nvidia on teatanud, et Volta graafikaprotsessor sisaldab lairiba mälu, ühendatud mälu ja NVLinki.

## Vaata ka
* Graafikaprotsessor
* Nvidia

## Viited