Wat is AArch64? Wat u moet weten over deze CPU-architectuur

click fraud protection

Hoewel je waarschijnlijk een apparaat met een AArch64-processor hebt gebruikt, weet je misschien niet wat het betekent. Dit is wat u moet weten.

Er zijn veel CPU's architecturen die er zijn, met de grootste zijn x86 En ARM. Dat gezegd hebbende, AArch64 is waarschijnlijk onder je radar gevlogen. Zelfs de redelijk belezen techliefhebber heeft er misschien nog nooit van gehoord, ondanks het feit dat het op miljoenen apparaten aanwezig is. Nou, het punt is dat AArch64 niet zozeer mysterieus is als wel een erg verwarrende technische term. Dit is wat u moet weten over AArch64.

AArch64 is ARM64, een soort van

Bron: Arm

Kortom, AArch64 is de officiële naam voor Arm's 64-bits instructiesetarchitectuur (ISA) die werd geïntroduceerd met de Armv8-A-update. Het verwijst bijna altijd naar AArch64. Het is niet precies duidelijk waarom ARM64 vaak wordt gebruikt in plaats van AArch64, maar een deel van de verwarring lijkt voort te komen uit twee plaatsen. Een deel daarvan is omdat de 64-bits extensie van x86 x86-64 is, dus de 64-bits extensie van ARM zou natuurlijk ARM64 moeten zijn. Apple leek dat zeker te denken en verwees tot 2014 naar AArch64 als ARM64. Voor de meeste mensen is "AArch64 is ARM64" een zeer bevredigende verklaring.

Als je echt technisch wilt worden, AArch64 is niet de ISA, maar eerder de executie staat waarmee ARM-CPU's de A64-instructieset van de ARMv8 ISA kunnen gebruiken (en alleen gebruiken), die voor het eerst werd geïntroduceerd met de Armv8-A-architectuur. Als dit verwarrend klinkt, is dat omdat het zo is. Zelfs als u bekend bent met computerarchitectuur, kan dit moeilijk te begrijpen zijn, dus ik ga dit stap voor stap uitleggen.

Dus technisch gezien is AArch64 een staat, geen ISA, maar niemand geeft erom, zelfs Arm zelf niet.

ARM is een familie van verwante ISA's, en hoewel verschillende ISA's meestal onverenigbaarheid impliceren, is dat niet helemaal waar. Verschillende versies van de ARM ISA worden ARMv1, ARMv2, enzovoort genoemd, maar deze ISA's bevatten in wezen sub-ISA's: A-profiel, M-profiel en R-profiel. Het fundamentele verschil tussen deze sub-ISA's is de minimale hoeveelheid instructies die elk gebruikt, waarbij het A-profiel het meeste gebruikt en het M-profiel het minst. De ARM ISA is dus onderverdeeld in afzonderlijke versies, zoals ARMv8, en vervolgens zijn die versies verder onderverdeeld in verschillende implementaties van de ISA.

Armv8-A is de eerste A-profielimplementatie van de ARMv8 ISA, die twee nieuwe dingen heeft toegevoegd: AArch32 en AArch64. Deze worden staten of modi genoemd en ze stellen ARM-CPU's in staat om toegang te krijgen tot verschillende instructiesets, met AArch32 met de 32-bits A32- en T32-instructies, en AArch64 met de 64-bits A64 instructies. Als een processor zich bijvoorbeeld momenteel in de AArch64-status bevindt en A32-instructies wil gebruiken, moet deze zijn status wijzigen in AArch32. Bovendien zijn in de AArch64-modus zowel de 32-bits als de 64-bits registers toegankelijk, terwijl in de AArch32-modus alleen de 32-bits registers bruikbaar zijn. Het meest verwarrende van dit alles is dat al deze dingen variabel worden aangeduid als ISA's en zelfs Arm (het bedrijf dat de ARM ISA ontwikkelt) maakt zich hier schuldig aan.

Maar als we supertechnisch zijn, zo is het eigenlijk: de achtste versie van de ARM ISA, ARMv8, werd voor het eerst geïmplementeerd met Armv8-A, dat twee toestanden bevat, AArch32 en AArch64. Wanneer een CPU zich in de AArch64-status bevindt, kan deze 64-bits A64-instructies uitvoeren. Dus technisch gezien is AArch64 een staat, geen ISA, maar niemand geeft erom, zelfs Arm zelf niet.

Waarom zowel 32-bits als 64-bits belangrijk zijn voor ARM

Dus AArch64 is eigenlijk behoorlijk ingewikkeld, en het lijkt omslachtig om van toestand te moeten wisselen om 32-bits en 64-bits instructies te gebruiken. Het punt is dat ondersteuning voor zowel 32-bits als 64-bits te belangrijk was om te laten liggen, dus het moet gewoon zo zijn. Het kwam eigenlijk neer op twee belangrijke problemen: de noodzaak om oude 32-bits software te ondersteunen en het nastreven van moderne, krachtige computers.

Als Arm geen native ondersteuning voor 32-bits software in zijn eerste 64-bits ISA had opgenomen, had het een ramp kunnen zijn, omdat, simpel gezegd, niemand code wil herschrijven. Als iedereen door ARMv8 vanaf het begin nieuwe software moest schrijven, had het de ISA in een dodelijke spiraal kunnen brengen, waar niemand maakt of koopt ARMv8-apparaten vanwege een gebrek aan software, en vervolgens maken ontwikkelaars geen apps vanwege een gebrek aan gebruikers, tot in het oneindige totdat Arm het moet noemen stopt. Over 32-bits ondersteuning kon dus niet worden onderhandeld.

Aan de andere kant was het niet implementeren van 64-bit computing ook geen optie. Intel en AMD, de bedrijven achter x86, gebruikten al sinds het begin van de jaren 2000 64-bits architecturen voor hun geweldige CPU's, hoewel er op dat moment geen vraag was naar 64-bits ARM-chips omdat telefoons ze niet nodig hadden. Maar de uitvinding van de smartphone veranderde alles, en iedereen wilde dat zijn telefoon meer dingen deed. Niet alleen zou 64-bits ondersteuning smartphones helpen krachtiger te worden, maar het opende ook de deur voor bedrijven om ARM-chips te maken voor markten waar x86 traditioneel domineerde, zoals laptops en servers.

Kortom, deze hele naamgevingsverwarring kwam voort uit het feit dat Arm zijn technologie moest moderniseren als reactie op veranderende prioriteiten. Misschien hoefde Arm niet op deze manier 64-bits ondersteuning te implementeren, maar dat deed het wel, en zo kwam AArch64 tot stand. Hoewel AArch64 geen ISA is, gebruiken de meeste mensen de term zo, ten goede of ten kwade.