AltiVec

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 24. december 2013; checks kræver 8 redigeringer .

AltiVec  er et sæt SIMD - instruktioner (vektor) til at arbejde med flydende tal med enkelt præcision og heltalsaritmetik, udviklet og ejet af Apple Computer , IBM og Motorola (kendt som AIM ). AltiVec er implementeret i forskellige versioner af PowerPC-processorer , både lavet af Motorola ( G4 ) og lavet af IBM ( G5 ).

Selve AltiVec-navnet er et registreret varemærke tilhørende Motorola, hvorfor Apple bruger navnet Velocity Engine , og IBM bruger VMX .

Da AltiVec blev introduceret i slutningen af ​​1990'erne, var det det mest kraftfulde vektorinstruktionssæt i desktop- processorer . AltiVec tilbyder flere registre og muligheden for at arbejde med dem på grund af et meget mere fleksibelt instruktionssæt end dets modstykker ( MMX , udviklet af Intel til at arbejde med heltals-aritmetik, SSE- floating point-instruktionssættet og en række udviklinger fra andre producenter af RISC-processorer ).

Den tredje og fjerde generation af Intels SIMD-instruktionssæt ( SSE2 og SSE3 , oprindeligt tilgængelig i Pentium 4 og senere implementeret af AMD i AMD64-arkitekturen ) har et meget større instruktionssæt end AltiVec.

Både AltiVec og SSE opererer på 128-bit vektorregistre, som kan bruges som seksten 8-bit bytes, otte 16-bit ord, fire 32-bit heltal eller fire flydende kommatal. Begge giver en mekanisme til at arbejde med cache-hukommelse , så programmøren kan reducere antallet af fejl, når der arbejdes med datastrømmen.

Der er betydelige forskelle mellem AltiVec og SSE. Kun AltiVec understøtter RGB - pixel datatypen , men kan ikke håndtere 64-bit dobbelt præcision heltal, og der er ingen mekanisme til direkte overførsel af data mellem skalar- og vektorregistre . I overensstemmelse med load/store-modellen for PowerPC-processorens RISC -arkitektur kan vektorregistre såvel som skalære registre kun indlæses og lagres i hukommelsen. AltiVec tilbyder dog et meget mere udvidet sæt af "horisontale" instruktioner, der fungerer på alle vektorelementer; Der er mange flere gyldige kombinationer af datatyper og operationer. I modsætning til de otte 128-bit vektorregistre i SSE og SSE2 tilbyder AltiVec 32 sådanne registre, og de fleste af dets instruktioner fungerer med tre registre på én gang ("sæt resultatet af tilføjelsen af ​​A og B i C"), i modsætning til to -operand (register/register, register/hukommelse: "tilføj A indholdet af B") instruktioner i IA-32 . Dette kan i høj grad reducere mængden af ​​hukommelsesarbejde.

Moderne versioner af GCC , IBM Visual Age Compiler giver et sæt funktioner til at arbejde direkte med AltiVec-instruktioner direkte fra C og C++ .

Der er en speciel vektormodifikator til at specificere typen af ​​en variabel (f.eks. vektor unsigned char foo;  er en vektor på seksten bytes). Overbelastede funktioner, såsom vec_add , fungerer på vektorregistre baseret på deres indhold, mens de skriver meget fint. Intel vektorinstruktioner udfører ingen typekontrol og fungerer kun på størrelsen af ​​vektoren uden at skelne mellem bytes og ord. En sådan uagtsomhed kan føre til, at vektoren af ​​ord er kompleks med vektoren af ​​bytes, hvilket fuldstændig ødelægger dataene. For at forhindre dette i at ske, er der for Intel-arkitekturen en hel række af duplikerende hinanden instruktioner af formen: _mm_add_epi16 (x, y) for at tilføje to vektorer af ord, _mm_add_epi32 (x, y) for at tilføje to vektorer af heltal, etc.

AltiVec blev udviklet fra 1996-1998 af Keith Diefendorf , en kendt videnskabsmand og leder af mikroprocessorarkitektur hos Apple Computer .

Apple har været en stor kunde hos AltiVec og har brugt det til at fremskynde multimedieapplikationer som QuickTime eller iTunes . AltiVec spiller også en stor rolle i Apples Mac OS X -systemmotorer, såsom Quartz - billedgengivelsesundersystemet . Tredjeparter som Adobe bruger også AltiVec til at fremskynde deres programmer som Adobe Photoshop . Motorola var den første til at sælge AltiVec, indbygget i G4-seriens processorer (AltiVec håndteres nu af Freescale , en spin-off fra Motorola). AltiVec bruges også i nogle indlejrede systemer til at levere hurtige A/D-konvertere .

IBM udelukkede VMX (et andet navn for AltiVec) fra sin POWER -serie , da disse processorer blev brugt i mainframes og servere, hvor der ikke er særlig brug for vektorberegning. Men i PowerPC G5, beregnet til stationære computere, indlejrer IBM et højtydende AltiVec-modul. Kernen indeholder add/multiply-modulet og en komplet VMX-implementering.

IBM oplyser også, at en del af VMX-instruktionerne er inkluderet i den processor, der bruges i Microsoft Xbox 360 -spillekonsollen , som er baseret på PowerPC. Celleprocessoren inkluderer også et VMX-modul.

Ifølge Apples dokumentation [1] kan AltiVec i G4- og G5-implementeringen udføre otte 32-bit FLOPS pr. cyklus, mens SSE i både Intel- og AMD-implementeringer kun kan udføre fire 32-bit FLOPS pr. cyklus (det skal bemærkes, at SSE -2 tillader to 64-bit operationer pr. cyklus, hvilket AltiVec ikke kan). Det ville være logisk at antage, at SSE ved at fordoble frekvensen kunne indhente AltiVec. Pentium-processorer fungerer dog ikke med dobbelt så mange frekvenser som PowerPC, så AltiVec kan udføre markant flere operationer i sekundet. Den faktiske hastighed af programmet vil afhænge af mange flere faktorer, såsom hastigheden og mængden af ​​hukommelse, arkitekturen af ​​I/O-undersystemet, compilere , OS og simpelthen selve programmets arkitektur.

På trods af det faktum, at Apple hævder, at PowerPC er hurtigere end Pentium , når man arbejder med multimedieapplikationer, er det bedre at afstå fra sådanne vurderinger, da der ikke er nogen entydige data om overlegenheden af ​​SSE eller AltiVec, på trods af den teoretisk højere hastighed af AltiVec .

Noter

  1. Hardware - SIMD Executive Summary . Hentet 28. september 2017. Arkiveret fra originalen 11. november 2004.

Links