Arm has announced that from 2023, all of its new smartphone CPU cores will be 64-bit only, with no 32-bit compatibility mode. We have had 64-bit capable smartphone processors since 2013 when Apple included the 64-bit A7 processor in the iPhone 5s. 64-bit CPUs came to Android soon after, but all those CPUs could run both 32-bit code and 64-bit code. So, we went from 32-bit only, to 32-bit and 64-bit, and now we are leaving 32-bits behind and moving to a 64-bit only era. What does that mean for Android? Let’s find out.
Bits and bytes
On your smartphone, every pixel, every bit of data sent over the Internet, every file stored in the flash memory, every sound played, and every touch on the screen is represented by and processed as numbers. The bulk of the processing is done by the CPU, with the help of other components like the GPU.
Bits are the ones and zeroes of binary.
The processor stores these numbers in binary, and the space allocated for them is measured in bits. Bits are the ones and zeroes of binary. Eight bits can represent any number between zero and 255. 16 bits range from zero to 65,535, and 32 bits can store numbers up to 4,294,967,295 (i.e. 4GB).
Arm introduced 64-bit support in version eight of its instruction set architecture (called Armv8) and that support continues in Armv9. Both of these are also optionally backwards compatible with the previous 32-bit only Arm architectures. This means that in principle Cortex-A processors can run 32-bit code and 64-bit code and switch between them on the fly. Users wouldn’t have noticed any difference between 32-bit and 64-bit code. In fact, the first Armv8 SoC from Samsung was the Exynos 5433 used in the Galaxy Note 4. It had four Cortex-A57 cores and four Cortex-A53 cores, but it was only used in 32-bit mode.
Over the years things have become more nuanced. Arm has some Armv8 based Cortex-A cores that are 32-bit only (e.g. the Cortex-A32) and some which are 64-bit only (e.g. the Cortex-A34 and the Cortex-A65). You might not have heard of those CPU designs as they weren’t used in any smartphone processors.
The Cortex-A76 changed things a little in that it supports 32-bit mode, but only for apps.
Most Cortex-A processors from the Cortex-53 to the Cortex-A75 support both 32-bit and 64-bit modes. The Cortex-A76 changed things a little in that it supports 32-bit mode, but only for apps. That means that you need to be running a 64-bit version of Android (see below), but you can still run 32-bit apps. If you have a Snapdragon 855 (or later) processor. Or a Kryo 4xx (or later) based processor (including the Snapdragon 480, Snapdragon 675, Snapdragon 720, Snapdragon 730, Snapdragon 765, Snapdragon 780G, etc.) then the processor already dropped support for 32-bit operating systems, and you didn’t even notice!
With the Cortex-X2 and the Cortex-A510, 32-bit app support has been dropped so you need to run a 64-bit OS and 64-bit apps. The Cortex-A710 retains 32-bit app support, which means that any lingering 32-bit apps will be forced to run on the A710 cores.
All Cortex-A CPUs will be 64-bit only by 2023
Arm has made two statements about the pending move to 64-bits only. First, it said that by 2022 all of its big cores would be 64-bit only, then several months later it said that all of its cores would be 64-bit by 2023. Sounds great. Until you remember that the Cortex-A510 (a LITTLE core) is already 64-bit only. So why the two different deadlines? The only sense I can make from it is that we will see a new LITTLE core announced in 2022 that supports 32-bits and then from thereafter everything will be 64-bits.
One thing worth noting is that we are talking about Cortex-A processors, meaning the CPUs in smartphones, tablets, Chromebooks, etc. We are not talking about Cortex-M CPUs from Arm’s microcontroller range. In fact, Armv8-M (M for microcontroller) is 32-bit only.
What it means for Android
The good news is that 64-bit Android is a mature technology and there won’t be any big surprises when 32-bit support is completely dropped.
The first fully 64-bit compatible version of Android was Android 5.0 (Lollipop). Released in 2014, it added support for 64-bit Intel processors, as well as 64-bit Arm chips. Since August 2019, all Google Play apps needed to support 64-bits. To help developers support 64-bits, the popular game engines all added support: Unreal (in 2015), Cocos2d (in 2015), and Unity (in 2018). Starting August 1, 2021, Google Play will stop serving apps without 64-bit versions on 64-bit capable devices, meaning they will no longer be available in the Play Store on those devices.
Google has provided different tools and plenty of documentation to prepare app developers for the switch over to 64-bits. For many apps, there is actually little to do as those written with Java or Kotlin don’t need altering. But apps developed using a game engine, or a third-party SDK will need to ensure that the latest 64-bit versions are being used.
Since devices with 64-bit Android have been shipping for several years now, combined with Google’s efforts to ensure that 64-bit apps are available in the Play Store, then the final switch over to 64-bits only will happen without too much fuss or fanfare.
What it means for Apple
Apple has been supporting 64-bits in hardware and software since the iPhone 5S. Back in February 2015, Apple announced that all iOS apps must support 64-bits. Then, in 2017, Cupertino announced that 32-bit apps won’t work from iOS 11 onwards. At that point, Apple dropped 32-bit completely and all of its processors starting with the Apple A11 (found in the iPhone 8, iPhone X) are 64-bit only.
Apple M1 tested: Performance benchmarks and thermal throttling explained
It is a similar story with macOS. Apple’s desktop OS has been 64-bit only since 10.7 Lion (2011). Since 2018 all new apps submitted to the Mac App Store needed to support 64-bits and like iOS, macOS dropped support for 32-bits apps (with the release of macOS 10.15 Catalina, in 2019). Today, macOS 11 is 64-bit on Intel and 64-bit only on Arm. The M1 processor is 64-bit only.
The future is 64-bit, for some
All Cortex-A processors will be 64-bit only from 2023. Since Android has 64-bit support and is moving to 64-bit only apps then you will unlikely notice any differences and the change over will be smooth. If you are an Apple user, then the switch to 64-bit already happened a while back on both iOS and macOS. I didn’t hear of any major hiccups in the transition.
For other CPU architectures and other OS’s, like Windows and Linux, then 32-bit support will survive much longer. Since Linux wants to be everyone’s friend, then 32-bit support is likely to stay for decades to come. For Windows on x86-64 processors, things are a little less clear cut, but there may not even be a clear path to the sunny meadows of 64-bit only land.