Computex ARM preview: Wat zit er in de smartphones van 2020? Een eerste blik op de Cortex-A77 CPU en Mali-G77 GPU!

3 reacties
Inhoudsopgave
  1. 1. Inleiding
  2. 2. Cortex-A77: 20% sneller is de belofte
  3. 3. Cortex-A77 in detail
  4. 4. Mali-G77 GPU: Eerste met Valhall architectuur
  5. 5. Dieper in de G77
  6. 6. Video en display
  7. 7. Conclusie
  8. 3 reacties

Cortex-A77 in detail

Als er één belangrijk adagium is om processors zo snel en efficiënt mogelijk te krijgen, dan is het ervoor zorgen dat alle chip-onderdelen op ieder moment nuttig werk kunnen verrichten. Dat is makkelijker gezegd dan gedaan. Zo heeft een processor bijvoorbeeld meerdere execution units, onderdelen die daadwerkelijk berekeningen kunnen uitvoeren, die elk slechts een beperkt aantal taken kunnen uitvoeren.

Zo zijn er specifieke execution units voor berekeningen met integers (gehele getallen), berekeningen met floating point getallen (getallen met komma) en voor instructies die met geheugen van doen hebben. De truc is ervoor zorgen dat deze execution units altijd bezig zijn. Mocht een programma op een bepaald moment echter niet voldoende variëteit aan instructies hebben of mochten de instructies die op dit moment uitgevoerd moeten worden wachten op data uit het geheugen, dan zijn er twee belangrijke trucs die moderne processors toepassen om toch bezig te blijven. Allereerst worden instructies niet noodzakelijkerwijs in de oorspronkelijke volgorde uitgevoerd: out of order execution in jargon. Om er maar een analogie bij te pakken: een moderne processor zou de Ikea-handleiding voor het in elkaar zetten van een dressoir erbij pakken en daarna zélf de optimale volgorde van alle handelingen bepalen. Wat een processor ook kan doen, is alvast vooruit werken: is er even geen werk dat nu direct moet gebeuren, dan bekijkt een processor welke instructies voor later klaar staan.

De uitdagingen van vooruitwerken

Vooruitwerken brengt echter weer een extra uitdaging mee. Software heeft namelijk vertakkingen: op basis van bepaalde zaken (de uitkomst van een berekening, de waarde van bepaalde data, etc.) kan een reeks instructies ofwel op de ene manier ofwel op de andere manier verder gaan. Wanneer een processor vooruit werkt en bij zo’n vertakking (een branch in jargon) uitkomt, moet gegokt worden welke vertakking vermoedelijk de juiste is, branch prediction in jargon. Een goede voorspelling is cruciaal: mocht uiteindelijk blijken dat de verkeerde bessissing is genomen, dan kan het zijn dat allerhande instructies voor niets zijn uitgevoerd: zonde van de energie, maar bovenal een flinke vertraging, want op zo’n moment moeten alsnog halsoverkop de juiste instructies uit het geheugen worden opgehaald en door de hele pipeline geloodst worden. Geen wonder dat het verbeteren van de branch predictor iets is waarover we steevast horen bij iedere nieuwe microarchitectuur, niet alleen bij ARM, maar ook bij Intel, AMD en anderen. De branch predictor is misschien wel het belangrijkste ingrediënt van de secret sauce van chip-ontwikkelaars, vandaar dat men nooit prijs wil geven hoe deze precies werkt en wat de gemiddelde hit-rate in de praktijk is. Wat ARM ons wel laat weten, is dat men de snelheid waarop de branch predictor data uit de cache kan halen heeft verdubbeld naar 64 bytes per klokslag, waardoor deze sneller kan werken. Daarnaast is het buffergeheugen van de branchpredictor verhoogd.

Het nut van de macro-op cache

Verderop in de front-end vinden we één van de opvallendste vernieuwingen binnen de Cortex-A77: de komst van een macro-op cache. Even een beetje uitleg: een processor werkt volgens een bepaalde taal ofwel architectuur (ARMv8 in het geval van de cores waar we het nu over hebben) en die architectuur bevat allerhande instructies die door de processor uitgevoerd kunnen worden. In het geval van ARM zijn dat er al 1000’en dat valt nog in het niet bij het aantal x86-instructies die Intel en AMD processors kunnen verwerken. Een aantal van die instructies zijn echter te groot en complex om in één keer door de processor verwerkt te worden. Vandaar de zogenaamde decoder binnen de processor-pipeline deze instructies verwerkt en waar nodig opdeelt tot één of meerdere macrop-ops, die door de rest van cpu verwerkt kunnen worden. Nu is verhouding instructies tot macro-ops bij ARM zeer beperkt; gemiddeld wordt iedere instructie 1,1 à 1,2 macro-ops, maar desalniettemin is dit een belangrijke stap. In de nieuwe macro-op cache kunnen instructies en hun macro-op afgeleiden opgeslagen worden, zodat wanneer dezelfde instructie nogmaals gebruikt wordt deze niet opnieuw gedecodeerd hoeft te worden. De nieuwe cache heeft ruimte voor zo’n 1500 macro-ops en behaalt daarmee volgens de ontwikkelaars een hit-rate van zo’n 85%. Het voordeel van een hit is dus dat een gedeelte van de pipeline overgeslagen kan worden en een bijkomende voordeel is dan ook dat wanneer de branch-predictor een verkeerde beslissing neemt, de gemiddelde penalty ook lager is, aangezien in de juiste branch vaak dezelfde instructies worden gebruikt, maar dan met andere data. 

Verder heeft ARM in de front-end een dynamische code optimizer opgenomen, die bijdraagt aan het in slimmere volgorde zetten van instructies. Hoe deze precies werkt wil men niet kwijt, wel dat deze significant bijdraagt aan de prestatiewinst én dat deze in toekomstige Cortex-varianten vermoedelijk een nóg belangrijkere rol zal gaan spelen.

In het middelste gedeelte van de processor heeft ARM de datapaden aangepast, zodat er per klokslag niet vier, maar zes instructies kunnen voortvloeien van de ene stap in het proces naar de volgende. Dat is niet zonder reden: zoals we verderop zullen zien is het aantal execution units verhoogd en om ervoor te zorgen dat de weg richting de execution units niet dichtslibt, moest deze verbreed worden. Daarnaast heeft men het zogenaamde out-of-order window vergroot met 25%, tot 160 instructies. Zoals we al schreven optimaliseren moderne processors de volgorde van binnenkomende instructies om deze sneller en efficiënter uit te kunnen voeren. Om maar bij de analogie van zojuist te blijven: door dit window te vergroten, kan de Cortex-A77 in de spreekwoordelijke Ikea-catalogus de stappen van 160 pagina’s vooruit lezen en in slimmere volgorde doen.

In het laatste stuk van de pipeline vinden we de exection units, de onderdelen van de processor waar daadwerkelijk instructies worden uitgevoerd. In het integer gedeelte heeft ARM twee rekenaanheden aan de core toegevoegd. Allereerst is een vierde ALU (arithmetic logic unit), ofwel een rekenunit voor gehele getallen, toegevoegd. Deze is geschikt voor relatief simpele integer-berekeningen die in één of twee klokslagen verwerkt kunnen worden. Daarnaast is er een twee branch unit geplaatst, die vertakkingen in programmacode kan verwerken.

Minstens net zo belangrijk is dat ARM een tweede AES-pipeline heeft toegevoegd. AES is het meest gebruikte encryptieprotocol ter wereld. Het is bijvoorbeeld de basis voor bijvoorbeeld https, maar wordt ook op ontelbare andere plekken gebruikt. In de nieuwste versies van Android wordt binnen het OS zo’n beetje alle data versleuteld en dus is de afgelopen jaren de hoeveelheid AES-rekenwerk die cpu-cores te verwerken krijgen gigantisch toegenomen. De laatste generaties Cortex-kernen hadden al een specieke, hardwarematige AES-rekeneenheid en door nu een tweede toe te voegen kan de snelheid waarop data versleuteld of ontsleuteld kan worden in theorie verdubbelen.

Ten slotte heeft ARM om de core gebalanceerd te houden ook de communicatiewegen tussen de execution cores en de caches (en daarmee het geheugen) versneld. Zo hebben de load en store units (die specifiek bedoeld zijn om data van of naar het geheugen te schrijven) nu eigen verbindingen met de L1-cache, waar die tot aan de Cortex-A76 gedeeld werden met een datapad vanaf de ALU’s. Bovenal heeft ARM de prefetching verbeterd, de technologie die voorspelt welke data uit het geheugen op korte termijn benodigd is door de CPU en die data alvast ophaalt naar het cache geheugen. Net als bij branch predictors geldt dat processorfabrikanten nooit exact vertellen hoe hun prefetchers werken, maar het is evident dat hoe beter deze geoptimaliseerd worden, hoe hoger de algehele processorprestaties kunnen zijn.

Waar leidt dit nu allemaal toe? Zoals al geschreven belooft ARM een gemiddelde prestatietoename van zo’n 20% bij identieke klokfrequentie en identiek productieprocedé. Onderstaande slide moet nog iets meer context geven. Hierbij geeft ARM de te verwachten prestatiewinst bij een aantal low-level cpu-benchmarks weer. We zien dat voornamelijk bij floating point workloads de te verwachten prestatiewinst het grootst is, tot of zelfs over de 30%. Bij interer workloads ligt het rond de 20%. Wanneer een benchmark wat meer leunt op geheugenbandbreedte zijn de te verwachten winsten iets lager.

ARM stelt dat het met deze prestatiewinst nu op een vergelijkbare of soms zelfs hogere IPC zit dan Intel bij haar nieuwste generatie processors.

Laat nogmaals gezegd zijn: double digit IPC-prestatiewinsten binnen één jaar bij een microarchitectuur die in de basis een optimalisatie is van de vorige, is iets waar we in de desktop- en laptopwereld alleen maar van kunnen dromen. Over die wereld gesproken: tussen neus en lippen door meldde ARM dat het met deze prestatiewinst nu op een vergelijkbare of soms zelfs hogere IPC zit dan Intel bij haar nieuwste generatie processors. Nu is daar voldoende op af te dingen – algehele systeemprestaties zijn van veel meer afhankelijk dan de gemiddelde IPC van de processor – maar het geeft wel aan dat ARM ondanks de slechts zeer beperkte successen tot nu toe (understatement) nog steeds vertrouwen heeft om met Intel te kunnen gaan concurreren in de markt voor laptops.

Advertentie
0

Hardware Info maakt gebruik van cookies

Hardware Info plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Hardware Info relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie.

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Hardware Info contextuele advertenties te tonen op basis van pagina's die je hebt bezocht.

    janee

    Hardware Info genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Hardware Info gevolgd worden. Deze data wordt maximaal 2 weken bewaard. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden.

    janee