Heterogen systemarkitektur - Heterogeneous System Architecture

Heterogenous System Architecture ( HSA ) er et sæt af specifikationer på tværs af leverandører, der muliggør integration af centrale processorenheder og grafikprocessorer på den samme bus med delt hukommelse og opgaver . HSA udvikles af HSA Foundation , som inkluderer (blandt mange andre) AMD og ARM . Platformens erklærede mål er at reducere kommunikationslatens mellem CPU'er, GPU'er og andre computerenheder og gøre disse forskellige enheder mere kompatible fra en programmeringsperspektiv, hvilket aflaster programmøren for opgaven med at planlægge flytning af data mellem enheders usammenhængende minder (som skal gøres i øjeblikket med OpenCL eller CUDA ).

CUDA og OpenCL samt de fleste andre ret avancerede programmeringssprog kan bruge HSA til at øge deres udførelsesydelse. Heterogen computing bruges i vid udstrækning i system-on-chip- enheder såsom tablets , smartphones , andre mobile enheder og videospilkonsoller . HSA tillader programmer at bruge grafikprocessoren til flydende beregninger uden separat hukommelse eller planlægning.

Begrundelse

Begrundelsen bag HSA er at lette byrden for programmører, når de aflæser beregninger til GPU'en. Oprindeligt drevet udelukkende af AMD og kaldet FSA, blev ideen udvidet til at omfatte andre processorenheder end GPU'er, såsom andre producenters DSP'er .

Moderne GPU'er er meget velegnede til at udføre enkelt instruktion, flere data (SIMD) og enkelt instruktion, flere tråde (SIMT), mens moderne CPU'er stadig er optimeret til forgrening. etc.

Oversigt

Oprindeligt introduceret af indlejrede systemer såsom Cell Broadband Engine , ved at dele systemhukommelse direkte mellem flere systemaktører gør heterogen computing mere mainstream. Heterogen computing i sig selv henviser til systemer, der indeholder flere processorenheder - centrale processorenheder (CPU'er), grafikbehandlingsenheder (GPU'er), digitale signalprocessorer (DSP'er) eller enhver form for applikationsspecifikke integrerede kredsløb (ASIC'er). Systemarkitekturen tillader enhver accelerator, for eksempel en grafikprocessor , at fungere på samme behandlingsniveau som systemets CPU.

Blandt de vigtigste funktioner definerer HSA et samlet virtuelt adresseområde til computerenheder: hvor GPU'er traditionelt har deres egen hukommelse, adskilt fra hovedhukommelsen (CPU), kræver HSA, at disse enheder deler sidetabeller, så enheder kan udveksle data ved at dele markører . Dette skal understøttes af brugerdefinerede hukommelsesstyringsenheder . For at gøre interoperabilitet mulig og også lette forskellige aspekter af programmering er HSA beregnet til at være ISA -agnostisk for både CPU'er og acceleratorer og understøtte programmeringssprog på højt niveau.

Indtil videre dækker HSA-specifikationerne:

HSA mellemliggende lag

HSAIL (Heterogenous System Architecture Intermediate Language), et virtuelt instruktions sæt til parallelle programmer

  • svarer til LLVM Intermediate Representation and SPIR (bruges af OpenCL og Vulkan )
  • færdiggjort til en specifik instruktion, der er indstillet af en JIT-kompilator
  • træffe sene beslutninger om, hvilke kerner der skal køre en opgave
  • eksplicit parallel
  • understøtter undtagelser, virtuelle funktioner og andre funktioner på højt niveau
  • debugging support

HSA-hukommelsesmodel

  • kompatibel med C ++ 11 , OpenCL, Java og .NET hukommelsesmodeller
  • afslappet konsistens
  • designet til at understøtte både administrerede sprog (f.eks. Java) og ikke-administrerede sprog (f.eks. C )
  • vil gøre det meget nemmere at udvikle tredjepartscompilere til en bred vifte af heterogene produkter programmeret i Fortran , C ++, C ++ AMP , Java, et al.

HSA-afsender og driftstid

  • designet til at muliggøre heterogen opgavekø: en arbejdskø pr. kerne, fordeling af arbejde i køer, belastningsafbalancering ved at stjæle arbejde
  • enhver kerne kan planlægge arbejde for enhver anden, inklusive sig selv
  • betydelig reduktion af omkostningerne ved planlægningsarbejde for en kerne

Mobilenheder er et af HSA's applikationsområder, hvor det giver forbedret strømeffektivitet.

Blokdiagrammer

Illustrationerne nedenfor sammenligner CPU-GPU-koordinering under HSA versus under traditionelle arkitekturer.

Software support

Image
AMD GPU'er indeholder visse ekstra funktionelle enheder beregnet til at blive brugt som en del af HSA. I Linux giver kernedriver amdkfd påkrævet support.

Nogle af de HSA-specifikke funktioner, der er implementeret i hardwaren, skal understøttes af operativsystemets kerne og specifikke enhedsdrivere. F.eks. Blev support til AMD Radeon og AMD FirePro- grafikkort og APU'er baseret på Graphics Core Next (GCN) fusioneret til version 3.19 af Linux-kernelainline , udgivet den 8. februar 2015. Programmer interagerer ikke direkte med amdkfd , men sæt deres job i kø ved hjælp af HSA-runtime. Denne allerførste implementering, kendt som amdkfd , fokuserer på "Kaveri" eller "Berlin" APU'er og fungerer sammen med den eksisterende Radeon-kernegrafikdriver.

Derudover understøtter amdkfd heterogen kø (HQ), som har til formål at forenkle fordelingen af ​​beregningsjob mellem flere CPU'er og GPU'er fra programmørens perspektiv. Understøttelse af heterogen hukommelsesadministration ( HMM ), der kun passer til grafikhardware med version 2 af AMDs IOMMU , blev accepteret i Linux - kernelainlineversion 4.14.

Integreret support til HSA-platforme er blevet annonceret til "Sumatra" -udgivelsen af OpenJDK , der forventes i 2015.

AMD APP SDK er AMDs proprietære softwareudviklingssæt, der er målrettet mod parallel computing, tilgængelig til Microsoft Windows og Linux. Bolt er et C ++ skabelonbibliotek optimeret til heterogen computing.

GPUOpen forstår et par andre softwareværktøjer relateret til HSA. CodeXL version 2.0 inkluderer en HSA-profil.

Hardware support

AMD

Fra februar 2015 var det kun AMDs "Kaveri" A-serie APU'er (jf. "Kaveri" desktopprocessorer og "Kaveri" mobile processorer ) og Sonys PlayStation 4, der gav den integrerede GPU adgang til hukommelse via version 2 af AMDs IOMMU. Tidligere APU'er (Trinity og Richland) inkluderede version 2 IOMMU-funktionalitet, men kun til brug af en ekstern GPU forbundet via PCI Express.

Post-2015 Carrizo og Bristol Ridge APU'er inkluderer også version 2 IOMMU-funktionalitet til den integrerede GPU.

Nedenstående tabel viser funktioner af AMD 's APU'er (se også: Liste over AMD accelereret behandlingsenheder ).

Kodenavn Server Grundlæggende Toronto
Micro Kyoto
Desktop Ydeevne Renoir Cezanne
Mainstream Llano Treenighed Richland Kaveri Kaveri Refresh (Godavari) Carrizo Bristol Ridge Raven Ridge Picasso
Indgang
Grundlæggende Kabini
Mobil Ydeevne Renoir Cezanne
Mainstream Llano Treenighed Richland Kaveri Carrizo Bristol Ridge Raven Ridge Picasso
Indgang Dalí
Grundlæggende Desna, Ontario, Zacate Kabini, Temash Beema, Mullins Carrizo-L Stoney Ridge
Indlejret Treenighed Hvidhovedet havørn Merlin Falcon ,
Brown Falcon
Stor hornugle Gray Hawk Ontario, Zacate Kabini Steppe Eagle , kronet ørn ,
LX-familie
Prairie Falcon Stribet kestrel
Platform Høj, standard og lav effekt Lav og ultra-lav effekt
Udgivet Aug 2011 Okt 2012 Juni 2013 Januar 2014 2015 Juni 2015 Juni 2016 Okt 2017 Januar 2019 Mar 2020 Jan 2021 Januar 2011 Maj 2013 Apr 2014 Maj 2015 Feb 2016 Apr 2019
CPU- mikroarkitektur K10 Rambuk Steamroller Gravemaskine " Gravemaskine + " Zen Zen + Zen 2 Zen 3 Bobcat Jaguar Puma Puma + " Gravemaskine + " Zen
ER EN x86-64 x86-64
Stikkontakt Desktop High-end Ikke relevant Ikke relevant
Mainstream Ikke relevant AM4
Indgang FM1 FM2 FM2 + Ikke relevant
Grundlæggende Ikke relevant Ikke relevant AM1 Ikke relevant
Andet FS1 FS1 + , FP2 FP3 FP4 FP5 FP6 FT1 FT3 FT3b FP4 FP5
PCI Express- version 2.0 3.0 2.0 3.0
Fab. ( nm ) GF 32SHP
( HKMG SOI )
GF 28SHP
(HKMG bulk)
GF 14LPP
( FinFET bulk)
GF 12LP
(FinFET bulk)
TSMC N7
(FinFET bulk)
TSMC N40
(bulk)
TSMC N28
(HKMG bulk)
GF 28SHP
(HKMG bulk)
GF 14LPP
( FinFET bulk)
Die område (mm 2 ) 228 246 245 245 250 210 156 180 75 (+ 28 FCH ) 107 ? 125 149
Min TDP (W) 35 17 12 10 4.5 4 3,95 10 6
Maks. APU TDP (W) 100 95 65 18 25
Maks. Lager APU-basisur (GHz) 3 3.8 4.1 4.1 3.7 3.8 3.6 3.7 3.8 4.0 1,75 2.2 2 2.2 3.2 3.3
Maks. APU'er pr. Node 1 1
Maks. CPU- kerner pr. APU 4 8 2 4 2
Maks. Tråde pr. CPU-kerne 1 2 1 2
Heltalsstruktur 3 + 3 2 + 2 4 + 2 4 + 2 + 1 4 + 2 + 1 1 + 1 + 1 + 1 2 + 2 4 + 2
i386, i486, i586, CMOV, NOPL, i686, PAE , NX bit , CMPXCHG16B, AMD-V , RVI , ABM og 64-bit LAHF / SAHF Ja Ja
IOMMU Ikke relevant Ja
BMI1 , AES-NI , CLMUL og F16C Ikke relevant Ja
MOVBE Ikke relevant Ja
AVIC , BMI2 og RDRAND Ikke relevant Ja
ADX , SHA , RDSEED , SMAP , SMEP , XSAVEC, XSAVES, XRSTORS, CLFLUSHOPT og CLZERO Ikke relevant Ja Ikke relevant Ja
WBNOINVD, CLWB, RDPID, RDPRU og MCOMMIT Ikke relevant Ja Ikke relevant
FPU'er pr. Kerne 1 0,5 1 1 0,5 1
Rør pr. FPU 2 2
FPU rørbredde 128-bit 256-bit 80-bit 128-bit
CPU- instruktion indstillet SIMD- niveau SSE4a AVX AVX2 SSSE3 AVX AVX2
3DNow! 3DNow! + Ikke relevant Ikke relevant
FORETJENING / FORETJENING Ja Ja
FMA4 , LWP , TBM og XOP Ikke relevant Ja Ikke relevant Ikke relevant Ja Ikke relevant
FMA3 Ja Ja
L1 -datacache pr. Kerne (KiB) 64 16 32 32
L1 data cache associativitet (måder) 2 4 8 8
L1 instruktions cacher pr. Kerne 1 0,5 1 1 0,5 1
Maks. APU total L1 instruktionscache (KiB) 256 128 192 256 512 64 128 96 128
L1 instruktion cache associativitet (måder) 2 3 4 8 16 2 3 4
L2 cacher pr. Kerne 1 0,5 1 1 0,5 1
Maks. APU samlet L2-cache (MiB) 4 2 4 1 2 1
L2 cache associativitet (måder) 16 8 16 8
APU samlet L3-cache (MiB) Ikke relevant 4 8 16 Ikke relevant 4
APU L3 cache- associativitet (måder) 16 16
L3 cache-ordning Offer Ikke relevant Offer Offer
Maks. Lager DRAM- understøttelse DDR3-1866 DDR3-2133 DDR3-2133 , DDR4-2400 DDR4-2400 DDR4-2933 DDR4-3200 , LPDDR4-4266 DDR3L-1333 DDR3L-1600 DDR3L-1866 DDR3-1866 , DDR4-2400 DDR4-2400
Maks. DRAM- kanaler pr. APU 2 1 2
Maks. Lager DRAM- båndbredde (GB / s) pr. APU 29,866 34.132 38.400 46,932 68,256 ? 10,666 12.800 14.933 19.200 38.400
GPU- mikroarkitektur TeraScale 2 (VLIW5) TeraScale 3 (VLIW4) GCN 2. gen GCN 3. gen GCN 5. gen TeraScale 2 (VLIW5) GCN 2. gen GCN 3. gen GCN 5. gen
GPU instruktions sæt TeraScale instruktions sæt GCN instruktionssæt TeraScale instruktions sæt GCN instruktionssæt
Maks. Lager GPU-basisur (MHz) 600 800 844 866 1108 1250 1400 2100 2100 538 600 ? 847 900 1200
Maks. Lager GPU-base GFLOPS 480 614.4 648.1 886,7 1134,5 1760 1971.2 2150.4 ? 86 ? ? ? 345,6 460,8
3D-motor Op til 400: 20: 8 Op til 384: 24: 6 Op til 512: 32: 8 Op til 704: 44: 16 Op til 512: 32: 8 80: 8: 4 128: 8: 4 Op til 192:?:? Op til 192:?:?
IOMMUv1 IOMMUv2 IOMMUv1 ? IOMMUv2
Video dekoder UVD 3.0 UVD 4.2 UVD 6.0 VCN 1.0 VCN 2.0 UVD 3.0 UVD 4.0 UVD 4.2 UVD 6.0 UVD 6.3 VCN 1.0
Videokoder Ikke relevant VCE 1.0 VCE 2.0 VCE 3.1 Ikke relevant VCE 2.0 VCE 3.1
AMD Fluid Motion Ingen Ja Ingen Ingen Ja Ingen
GPU strømbesparelse PowerPlay PowerTune PowerPlay PowerTune
TrueAudio Ikke relevant Ja Ikke relevant Ja
FreeSync 1
2
1
2
HDCP ? 1.4 1.4
2.2
? 1.4 1.4
2.2
PlayReady Ikke relevant 3.0 endnu ikke Ikke relevant 3.0 endnu ikke
Understøttede skærme 2–3 2–4 3 3 (desktop)
4 (mobil, integreret)
4 2 3 4
/drm/radeon Ja Ikke relevant Ja Ikke relevant
/drm/amdgpu Ikke relevant Ja Ja Ikke relevant Ja Ja

ARM

ARMs Bifrost mikroarkitektur, som implementeret i Mali-G71, er fuldt ud kompatibel med HSA 1.1 hardwarespecifikationer. Fra juni 2016 har ARM ikke annonceret softwaresupport, der bruger denne hardwarefunktion.

Se også

Referencer

eksterne links