ARM naar 64-bit: de laatste ontwikkelingen op een rijtje

25 reacties
Inhoudsopgave
  1. 1. Inleiding
  2. 2. De eerste
  3. 3. Keuzes
  4. 4. Denver
  5. 5. Android op 64-bit
  6. 6. Toekomst
  7. 25 reacties

Inleiding

Apple was de eerste die de 64-bit ARM-instructieset naar mobiele apparaten bracht. Inmiddels is deze ook in de Android-wereld aan een opmars bezig. Wij zetten de ontwikkelingen op een rijtje voor je.


In de PC-wereld werd de overstap naar 64-bit ingeluid met de aankondiging in oktober 1999 van de AMD64 instructiesetuitbreiding. Die kwam in oktober 2003 beschikbaar bij de eerste Opteron-processor en werd uiteindelijk zelfs door Intel overgenomen. AMD64, ook wel x86-64, is feitelijk een uitbreiding van 32-bit naar 64-bit voor alle onderdelen van de CPU, waaronder de registers (de gedeeltes van de chip waar de verwerkingseenheden ofwel execution units hun data hebben staan) en de interne databussen. Omdat er in de eigenlijke architectuur weinig veranderde, bood AMD64 niet direct een grote prestatiewinst, maar was het belangrijkste voordeel van de overstap naar 64-bit dat het mogelijk werd om meer dan 4 GB geheugen aan te sturen vanuit de CPU. Was dat aan het begin van deze eeuw voornamelijk een theoretisch voordeel, inmiddels is het plaatsen van 8 GB of 16 GB geheugen in een systeem natuurlijk de normaalste zaak van de wereld.

In de wereld van ARM, de instructieset waarop de meeste processors voor smartphones, tablets en andere mobiele apparaten zijn gebaseerd, is men inmiddels ook druk doende met de overstap van 32-bit naar 64-bit. ARM heeft ervoor gekozen om bij de overstap naar 64-bit direct een aantal grote wijzigingen en optimalisaties door te voeren aan de instructieset, waardoor ook 32-bit software sneller uitgevoerd kan worden. Klik hier voor ons artikel uit 2013 waarin we ARM's overstap op 64-bit voor het eerst uitgebreid belichtten. ARM’s nieuwe, eind 2011 aangekondigde 64-bit instructieset luistert naar de naam ARMv8 en is de opvolger van ARMv7.

ARMv8

Volledige compatibiliteit met de 32-bit ARMv7 architectuur is bij ARMv8 gewaarborgd, al is het voor ontwikkelaars die zelf cores ontwerpen ook mogelijk om ARMv8-kernen te maken die deze compatibiliteit niet hebben. In de nieuwe versie is zowel het aantal als de grootte van de general purpose registers binnen de architectuur verhoogd. Daarnaast is de capaciteit van de NEON-uitbreiding voor SIMD (Single Instruction Multiple Data)-instructies verbeterd en heeft de ARMv8-architectuur nieuwe instructies gekregen die encryptiealgoritmes kunnen versnellen.

Na het ontwikkelen van de ARMv8-architectuur ging ARM aan de slag met het maken van twee implementaties daarvan, in de vorm van de Cortex-A53- en Cortex-A57-kernen. Zoals bekend kunnen ontwikkelaars van SoC’s bij ARM kant-en-klare ontwerpen van CPU- eGPU-cores bij ARM kopen en gebruiken op hun chips.

De Cortex-A53 is een piepkleine, zeer efficiënte core voor hetzelfde marktsegment als voorloper Cortex-A7. De Cortex-A57 is juist een relatief grote en complexe variant met hoge prestaties en daarmee de opvolger van Cortex-A15. Uiteraard kunnen Cortex-A57 en –A53 cores samen werken in big.LITTLE-configuraties, waarbij het wederom mogelijk is om de langzame en snelle cores tegelijkertijd te gebruiken. Deze samenwerking wordt heterogeneous multi-processing of global task scheduling genoemd.

De Cortex-A53 is net als de A7 een dual-issue, in-order CPU met een 8-stage pipeline. Met dual-issue wordt bedoeld dat er iedere klokslag maximaal twee instructies gedecodeerd, verwerkt of afgesloten worden. In-order houdt in dat instructies worden verwerkt in de volgorde waarin ze worden aangeleverd. De A57 daarentegen is een veel complexere en grotere CPU-core die allereerst out-of-order werkt, wat betekent dat de core alle binnenkomende instructies zelf in de optimale volgorde hergroepeert om zo alle execution units zoveel mogelijk gevuld te krijgen. De A57 kan bij alle gedeeltes van de chip drie instructies tegelijkertijd verwerken en heeft 8 execution units, waarbij de twee units geschikt voor floating point- en NEON-instructie met 128-bits tegelijkertijd kunnen werken.


Een vergelijking tussen de opeenvolgende ARM instructiesets.

0
*