Var inte en stor anledning till att 64-bitars stöd fått rätt lång prioritet i t.ex. Raspbian att enheten trots allt inte är begränsad av 32-bitar samt att Cortex A53 (CPU-kärnan i RPi3) faktiskt presterar bäst med det instruktionsformat som kallas Thumb2?
ARMv8 (som är den senaste standarden och den RPi3 använder) specificerar tre olika instruktionsformat
Thumb2: detta är ett 32-bitars läge som även finns hos RPi2, instruktionerna är 2 eller 4 bytes långa (olika för olika instruktioner, så en form av variabel instruktionsstorlek), register är 32-bitar. Detta läge ger typisk de minsta binärerna
A32: detta är ett 32-bitars läge som (utan att gå in på pyttedetaljer) finns på alla RPi-modeller, alla instruktioner är 4 bytes långa, register är 32-bitar
A64: detta är ett 64-bitars läge som endast finns hos RPi3, alla instruktioner är 4 bytes långa, register är 64-bitar
Cortex A53 är en väldigt enkel CPU-kärna och flaskhalsarna verkar mest ligga i dess begränsade minneshierarkidesign, Thumb2 är det läge som ger mest plats i cachar och liknande så att det blir färre minnesanrop.
A64 kan mycket väl vara det långsammaste av de tre lägena på just denna CPU. Om/när det kommer RPi med mer avancerade ARM-modeller lär vi få se 64-bitars stöd. Om inte annat lär de komma om/när det kommer modeller med så pass mycket RAM att 32-bitar är en flaskhals, vilket med normal konfiguration av Linux-kärnan inträffar om man går över 2 GB.
Det skrivet:
Som utvecklare skulle jag absolut vilja se Aarch64 stöd för RPi3! Om kärnan kör A64 är det fullt möjligt att köra alla tre instruktionsformat som stöds i user-land (i vanliga program).