RDNA (mikroarhitektuur): erinevus redaktsioonide vahel

Allikas: Vikipeedia
Eemaldatud sisu Lisatud sisu
Resümee puudub
CommonsDelinker (arutelu | kaastöö)
Fail RDNA_SharedMemory.png on eemaldatud, sest kasutaja Yann kustutas selle Commonsist. Põhjus: Copyright violation, see c:Commons:Licensing.
55. rida: 55. rida:





[[File:RDNA SharedMemory.png|paremal|RDNA SharedMemory]]
Iga WGP jaoks on 128 kB jagatud LDS, mis laseb madala latentsiga suhelda tööelementidel omavahel. Mälul on 64 panka, igal 512 4-baidist pesa. Seda saab kasutada ka kui tarkvaralist vahemälu, kus hoida korduvalt kasutatavalt andmeid, mida on näiteks vaja teatud tekstuuri funktsioonidel. LDS-l on kaks töörežiimi: CU mood ja WGP mood. Esimese puhul jagatakse mälu pooleks 4 SIMD32 vahel ning neis töödeldavad elemendid ei saa omavahel suhelda. See aga võib kiirendada tööd. Teise puhul on LDS üks suur mälu kõigile ligipääsetav.<ref name="ISA"/><ref name="WHITE"/> Kirjutamis/Lugemiskiirus on 32 sõna taktis, mis on kahekordistatud võrreldes GCN-ga. LDS-mälul on ka igas pangas oma ALU, mis teeb atoomilisi operatsioone nagu näiteks FP min või FP max. Mälul on oma crossbar liigutamaks infot panga ja lainete vahel. Kui mitu elementi tahavad ligipääsu samale pangale ühe takti ajal, siis riistvara automaatselt paneb need üksteise järele.
Iga WGP jaoks on 128 kB jagatud LDS, mis laseb madala latentsiga suhelda tööelementidel omavahel. Mälul on 64 panka, igal 512 4-baidist pesa. Seda saab kasutada ka kui tarkvaralist vahemälu, kus hoida korduvalt kasutatavalt andmeid, mida on näiteks vaja teatud tekstuuri funktsioonidel. LDS-l on kaks töörežiimi: CU mood ja WGP mood. Esimese puhul jagatakse mälu pooleks 4 SIMD32 vahel ning neis töödeldavad elemendid ei saa omavahel suhelda. See aga võib kiirendada tööd. Teise puhul on LDS üks suur mälu kõigile ligipääsetav.<ref name="ISA"/><ref name="WHITE"/> Kirjutamis/Lugemiskiirus on 32 sõna taktis, mis on kahekordistatud võrreldes GCN-ga. LDS-mälul on ka igas pangas oma ALU, mis teeb atoomilisi operatsioone nagu näiteks FP min või FP max. Mälul on oma crossbar liigutamaks infot panga ja lainete vahel. Kui mitu elementi tahavad ligipääsu samale pangale ühe takti ajal, siis riistvara automaatselt paneb need üksteise järele.
RX 5700XT graafikakaardi igal WGP-l on lisaks 32kB käskude vahemälu, mis töötab 64B andmeplokkidega, 16kB skalaar vahemälu, mis 64B andmeplokkidega, ning 2x16kB L0 vahemälu, mis töötab 128B andmeplokkidega. <ref name ="POWER"/> L0 mälu on "write-through" ja kasutab kõige viimasena kasutatud asendussüsteemi (LRU).
RX 5700XT graafikakaardi igal WGP-l on lisaks 32kB käskude vahemälu, mis töötab 64B andmeplokkidega, 16kB skalaar vahemälu, mis 64B andmeplokkidega, ning 2x16kB L0 vahemälu, mis töötab 128B andmeplokkidega. <ref name ="POWER"/> L0 mälu on "write-through" ja kasutab kõige viimasena kasutatud asendussüsteemi (LRU).

Redaktsioon: 30. aprill 2021, kell 22:20

RDNA arhitektuur kuulutati esmaselt välja Computexi näitusel AMD tegevjuhi Dr Lisa Su poolt, olles järglane varasemale Graphics Core Next arhitektuurile. Uus arhitektuur oli eeskätt mõeldud arvutimängude, konsoolide ja pilvelahenduste tarbeks, võttes eesmärkideks madala latentsi ja energiakulu. See on siiski tagasiühilduv GCN arhitektuuriga.[1] Sellel tehnoloogial põhinevad RX seeria graafikakaardid tulid tarbijatele esimest korda kättesaadavaks 2019. aasta juulist. RDNA on esimene arhitektuur, mis põhineb TSMC 7nm TinFET tehnoloogial ja mis kasutab liidesena PCIe 4.0-i. [2][3][1]
RDNA edasiarendus, RDNA2 näidati avalikkusele 2020.aasta oktoobris. See on aluseks AMD RX 6000 seeria graafikakaartidele ja ka Playstation 5 ning Xbox Series X graafikakaartidele.[3][4][5] Järgmine põlvkond RDNA3, avalikustatakse eeldatavasti 2022. aastal või varem AMD plaani järgi ja põhineb uuel tootmisprotsessil, mida pole veel avaldatud.[6] RDNA arhitektuuri programmeerimisjuhis on saadaval GPUOpen veebilehel.[7]

RDNA Arhitektuur

RDNA Protsessor Plokkdiagramm
RDNA Protsessor Plokkdiagramm

RDNA protsessor on vektor ja skalaar aritmeetika-loogika üksus, et jooksutada keerukaid paralliseerituid programme. See on on paralleelse mikroarhitektuuriga, mis on hea andmetöötluse kui ka graafiliste rakenduste jaoks. RDNA seadmel on paralleelandmete protsessorite massiiv, käsuprotsessorid (command processor), mälukontroller (memory controller) ja muu loogika. Käsuprotsessorid loevad sisse käsud, mida peremeesseade (Host CPU) on kirjutanud süsteemimälu (system memory) aadressiruumi, seejärel saadavad riistvaraliselt tekitatud katkestused tagasi peremehele, kui käsk on täidetud. RDNA mälukontrolleril on otseühendus seadmemälule (device memory) ja peremehe poolt määratud süsteemimälu osadele. Mälukontroller käitub ka kui otsemälupöördumiste (DMA) kontroller, et rahuldada lugemis-ja kirjutamiskäsud. See arvutab mäluaadressimuutusi, vastavalt küsitud andmetele.
Töötav rakendus RDNA keskkonnas koosneb kahest osast:

  • Programm, mis töötab peremeesseadmel
  • Programmid, nimega kernelid, mis jooksevad RDNA protsessoril

RDNA programme juhivad peremehe käsud, mis:

  • seavad üles sisemised registrid
  • täpsustavad aadressiruumi
  • puhastavad RDNA GPU vahemälud
  • panevad RDNA GPU täitma mingit programmi


Vajalik draiver töötab peremeesseadmes.
Paralleelandmete protsessorite massiiv on organiseeritud kui töögrupi protsessorite (workgroup processor) torud, igaüks iseseisev ja võimeline töötama nii ujukomaarvude kui ka täisarvudega voogudega. Need torud saavad töödelda andmeid või läbi mälukontrolleri kirjutada või lugeda andmeid. Mõlemat saab teha tingimuslikuks.
RDNA protsessor koosneb:

  • skalaaride aritmeetika loogika üksusest, mis töötab ühe väärtusega iga laine kohta
  • vektorite aritmeetika loogika üksuis, mis töötab unikalsete väärtuste kallal iga tööelemendi kohta
  • Lokaalne andmehoidla (LDS), mis laseb ühe töögrupi tööelementidel omavahel andmeid jagada ja suhelda
  • Skalaarmälu
  • Vektormälu


Kui töögrupi protsessor saab käsu, laeb see juhised ja info mälust ning töötab kuni kerneli lõpuni. RDNA riistvara loeb juhised automaatselt vahemällu, ilma, et tarkvaraliselt oleks vaja midagi teha. Kernelid saavad laadida andmeid välisest mälust üldkasutatavatesse registritesse (GPR).
Programmi töö käigus tekkivaid ujukoma erindeid suudab seade leida ja tekitada katkestus. Neid saab ka salvestada, et hiljem uurida. Varjamaks latentsi on korraga sadu erinevaid protsesse ja samal ajal on nii arvutusprotsessid kui mälust lugemise protsessid.[8] RDNA-ga tuli uus QoS teenus nimega Asynchronous Compute Tunneling, mis laseb protsessoril tegeleda kõige latentsitundlikuma ja tähtsamate töödega. RDNA arhitektuur on hästi skaleeruv, sest GPU-d koosnevad mitmest kindla riistvara komplektidest. Vastavalt GPU-le on võimalik neid komplekte ja komponente lisada. [1]

Kernelid

RDNA kernelid on protsessori üldised programmid, mis võtavad mälust andmeid, töötlevad neid ja panevad tulemused tagasi mällu. Programmi jaoks vajalikud tööelemendid grupeeritakse kas 32-või 64-steks ja kernel töötleb neid korraga. Need tööelementid moodustavad lained, kas wave32 või wave64. Varjutaja riistvara on põliselt wave32 jaoks. Et teha wave64 operatsioone, antakse käske kaks korda, algul esimese 32 tööelemendi ja siis ülejäänute jaoks. Kui kummagi puhul pole vaja midagi teha, siis saab selle vahele jätta.[8] Wave32 on parem, sest sellel on madalam latents, lühem laine eluiga, see on efektiivsem poolikute lainetega ja omab paremat juurdepääsu mälule. Wave64 lubab aga rohkem tööelemente ja on efektiivsem „attribute interpolation“ eesmärkidel. Kompilaator teeb otsuse, kumba kasutada. Arvutus ja „vertex“ varjutajad on wave32, piksli varjutaja on wave64.[9]Kerneli juhtimine, näiteks if- või loop-lausete abil, on skalaar ALU juhiste abil, mis kehtivad tervele lainele. Vektor juhised töötavad laines ühel hetkel kõikidele laine tööelementidele. Lainel on eraldi atribuut määramaks, mis tööelemendi kallal viiakse vektorjuhis läbi ja millisel mitte.[8]

WGP

Eelmise põlvkonna väikseima põhilise arvutusüksuse asemel on töögrupi protsessor (WGP). Igas WGP-s on kaks arvutusüksust, kummaski 2 SIMD32 üksust, mis jagavad oma rada mäluni, mõlemas 32 ALU-d. Lisaks LDS-i, mälu, skalaarvahemälu ja aritmeetika-loogika üksused.[1]

RDNA GCN Utilization
RDNA GCN Utilization

Sellise WGP eelised võrreldes varasema arhitektuuriga on:

  • madalam latents ja kõrgem IPC
  • tugi wave32-le kui ka wave64-le, varasem GCN oli ainult wave64
  • üksiktaktide ajal käsu jagamine, GCN jagas uue käsu iga 4 takti tagant
  • kahe arvutusüksuse ressursid on igas WGP-s
  • topelt skalaarmälud
  • transtsendentaalsete aritmeetiliste toimingute samaaegne täitmine
  • vektormälu parandused

Võrreldes GCN-i arvutusüksustega vajavad RDNA WGP üksused palju vähem laineid, et tervet süsteemi täismahus utiliseerida. GCN-i 2 arvutusüksuse jaoks on vaja kokku 512 tööelementi. WGP vajab 128 tööelementi. Kui iga WGP jaoks on 256 tööelementi, siis praktikas on 90% ALU-st kasutusel. Kui on 64 tööelementi, siis GCN-i puhul koondatakse need kõik ühte SIMD16 üksusesse, RDNA-l aga jaotatakse need kahe SIMD32 peale. Mõlemad arhitektuurid vajavad lisalaineid, et peita mälu latentsi. GCN-i SIMD16 üksused said igaüks kuni 10 lainet ja nad andsid käsklusi iga 4 takti tagant. RDNA SIMD32 üksused annavad aga uue käsu iga takti tagant. Igal SIMD32 üksusel on 1024 füüsilist registrit(VGPR), need jaotatakse lainete vahel ära nii, et iga laine saab kuni 256 registrit. Üks wave32 laine saab võrreldes wave64-ga kaks korda rohkem registreid. Näiteks 8 wave32 puhul saab iga laine 128 registrit, sama palju wave64 laine saab 64 registrit.[9]



Iga WGP jaoks on 128 kB jagatud LDS, mis laseb madala latentsiga suhelda tööelementidel omavahel. Mälul on 64 panka, igal 512 4-baidist pesa. Seda saab kasutada ka kui tarkvaralist vahemälu, kus hoida korduvalt kasutatavalt andmeid, mida on näiteks vaja teatud tekstuuri funktsioonidel. LDS-l on kaks töörežiimi: CU mood ja WGP mood. Esimese puhul jagatakse mälu pooleks 4 SIMD32 vahel ning neis töödeldavad elemendid ei saa omavahel suhelda. See aga võib kiirendada tööd. Teise puhul on LDS üks suur mälu kõigile ligipääsetav.[8][1] Kirjutamis/Lugemiskiirus on 32 sõna taktis, mis on kahekordistatud võrreldes GCN-ga. LDS-mälul on ka igas pangas oma ALU, mis teeb atoomilisi operatsioone nagu näiteks FP min või FP max. Mälul on oma crossbar liigutamaks infot panga ja lainete vahel. Kui mitu elementi tahavad ligipääsu samale pangale ühe takti ajal, siis riistvara automaatselt paneb need üksteise järele. RX 5700XT graafikakaardi igal WGP-l on lisaks 32kB käskude vahemälu, mis töötab 64B andmeplokkidega, 16kB skalaar vahemälu, mis 64B andmeplokkidega, ning 2x16kB L0 vahemälu, mis töötab 128B andmeplokkidega. [9] L0 mälu on "write-through" ja kasutab kõige viimasena kasutatud asendussüsteemi (LRU). RDNA seadmed kasutavad 64kB-st globaalset mälu (GDS), mida saavad kasutada kõik WGP-d. Mälus on 32 panka, igas 512 4-baidist pesa. Iga takti ajal antakse ligipääs 128 baidile. Mälu saab kasutada, et hoida tähtsat kernelite juhtimisinfot või teha sisseehitatud loogikaga andmete kokkupakkimist.[8]

RDNA Vahemälu
RDNA Vahemälu

Uuenenud vahemäluga toimuvad vähem kirjutamisi kiibivälisesse mällu. See on saavutatud sellega, et L2 kliendid on nüüd kõik elemendid, varasemalt kirjutas Copy Engine otse mällu. Esimest korda on ka L1 vahemällu. L1 vahemälu on WGP komplektidele 128kB, 128B andmeplokiga, L2 vahemälu on tervele protsessorile 4MB, 128B andmeplokiga. Suuremate andmeplokkide tõttu on mälu kiirem ja L1 vahemälu lisandumisega on väiksem latents. Samuti L1 mälu tõttu on üldjagataval L2 mälul koormus väiksem ja selle ehitus lihtsam.[1][9]

RDNA2

RDNA teine põlvkond esitleti avalikkusele 28. oktoobril 2020 ja esimesed graafikakaardid selle arhitektuuriga tulid müügile sama asta 18. novembril.

Fail:RDNA2 ComputeUnit.png
RDNA2 ComputeUnit

WGP uuendusena on juures kiirtejälituskiirendi (Ray accelerator). 1 kiirendi on kummalgi WGP arvutusüksusel ja need arvutavad valguse liikumist ja annavad reaalaja valgusefektide loomise. Kiirtejälitus kasutab BVH (bounding volume hierarchy) töötlemist. Selle abil leiab efektiivselt kiire ja kolmnurga ristumiskohti. Kasutades riistvaralist kiirendajat on kiirtejälitus 10 korda kiirem kui tarkvaraline lahendus varjutajatega. Protsessoril on juures esimest korda L3 vahemälu, nimega Infinity Cache, mille suurus on 128MB, mõnedel mudelitel 96MB. Selle tõttu on väiksem vajadus küsida infot välise GDDR6 mälu käest, mis on ühendatud 256-bitise andmeliiniga. Uue arhitektuuriga on ühilduvad DirectX 12 Ultimate ja Microsoft Direct Storage. Viimane laseb graafikakaardi mälul suhelda otse NVMe SSD-ga, kiirendamaks laadimisaegu. Optimiseeritud arhitektuuriga on graafikakaardid võimelised taktsagedusele üle 2 GHz.[10][3][11]

Kodeerimine

Arhitektuuril on olemas eraldi üksused kodeerimiseks ja dekodeerimiseks ja dekodeerimiseks. Seda tööd saab ka teha WGP-de peal, kuid eriüksused on selles paremad ning lasevad WGP-del tegeleda muude operatsioonidega. Videoüksus oli varasemast ümber disainitud 4K ja 8K ekraanide jaoks, mis on HDR toega. Videoüksus saab töödelda H.264, HEVC ja VP9 formaati, kuid viimast suudab ainult dekodeerida. H.264 formaadis 4K videot dekodeerib üksus 150 kaadrit sekundis, kodeerib aga 90 kaadrit sekundis. HEVC formaadis 4K videot dekodeerib ja kodeerib 90 kaadrit sekundis, seda kas 8-või 10-bitise värvisügavusega. VP9 formaadis dekodeerib sama moodi.Viitamistõrge: Algussilt <ref> on väärdunud või selle nimi on vigane.


Viited