Arm is the newest CPU architecture used by all modern smartphones in both Android and Apple devices. However, the arm processor is also making its way into the computer ecosystem with products like Windows on Arm and Apple‘s upcoming custom CPUs for Macs. The war on which we’ll learn who the superior of the two is about to start soon. Here’s everything you might need to know about X86 vs. ARM.
First, what is a CPU? The Central Processing Unit (CPU) is the “brains” of your device, but it’s not exactly smart. A CPU only works when given particular instructions suitably called the instruction set, which tells the processor to move data between registers and memory or perform a calculation using a specific execution unit (such as multiplication or subtraction). Unique CPU hardware blocks require different instructions. These tend to scale up with more complex and powerful CPUs. If you want the lowest power CPU, keeping the instruction set simple is paramount. However, higher performance can be obtained from more complex hardware and instructions at the expense of power. This is a fundamental difference between Arm’s and Intel’s approaches to the CPU design.
64-bit CPU Architecture
x86 traditionally targets peak performance over all else, which is a crucial difference with Arm processors who aim for better energy efficiency. In today’s world, we have 64-bit architectures mainstream across smartphones and PCs. This change didn’t come so fast. It was around 2012 that phones also made the transition, but this didn’t change how we use the devices. It just made them handle things better. Today both architectures support 64-bit, but it’s more relevant in smartphones.
PCs moved to 64-bit well before smartphones, but it wasn’t Intel that coined the modern x86-64 architecture (also known as x64). That accolade belongs to AMD’s announcement from 1999, which retrofitted Intel’s existing x86 architecture.
Arm is RISC (Reduced Instruction Set Computing) based, while Intel (x86) is CISC (Complex Instruction Set Computing). Arm’s CPU instructions are reasonably atomic, with a very close correlation between the number of instructions and micro-ops. CISC, by comparison, offers many more instructions, many of which execute multiple operations (such as optimized math and data movement). This leads to better performance, but more power consumption decoding these complicated instructions.
Arm introduced its ARMv8 64-bit architecture in 2011. Rather than extend its 32-bit instruction set, Arm offers a clean 64-bit implementation. To accomplish this, the ARMv8 architecture uses two execution states, AArch32 and AArch64. As the names imply, one is for running 32-bit code and one for 64-bit. The beauty of the ARM design is the processor can seamlessly swap from one mode to the other during its normal execution. This means that the decoder for the 64-bit instructions is a new design that doesn’t need to maintain compatibility with the 32-bit era, yet the processor as a whole remains backwardly compatible.
ARM’s win on mobile ecosystem
The architectural differences discussed above partly explain the current successes and issues faced by the two chip behemoths. Arm’s low power approach is perfectly suited to the 3.5W Thermal Design Power (TDP) requirements of mobile. Yet performance scales up to match Intel’s laptop chips too. Meanwhile, Intel’s 100W TDP typical Core i7 wins big in servers and high-performance desktops but historically struggles to scale down below 5W.
One unique feature of Arm’s architecture has been mainly instrumental in keeping TDP low for mobile applications, heterogeneous computing. The idea is simple enough, build an architecture that allows different CPU parts (in terms of performance and power) to work together for improved efficiency. Heterogeneous Multiprocessing (HMP) is already prominent in the Android space, see chips like the Snapdragon 810, Exynos 7420 or Helio X20, but Heterogeneous Compute (HC) is the next evolution.
You see, processors can be designed to perform specific tasks more efficiently, but a single design struggles to be great at everything. Your typical CPU may be good at serial processing, while a GPU can handle streams of parallel data, and a DSP is better optimized for crunching numbers to high accuracy in real-time. With a broader range of options to choose from, the theory is that picking the best processor for any specific task will result in better performance and energy efficiency.
The world’s fastest computer at the time of writing is ARM-based!
Fugaku is now the world’s faster supercomputer. As part of the TOP500 project, Japan’s Fugaku computer has been ranked the fastest in the world and is powered bu the A64FX processor. Fugaku is located at the RIKEN Center for Computational Science in Wakō, Japan.
Applications and software have to be compiled for the CPU architecture they run on. Historically the ecosystems such as Android on Arm or Windows on x86 don’t have a problem running on multiple platforms or architectures. Apple’s Arm-based Macs, Google’s Chrome OS, and Microsoft’s Windows on Arm are modern examples where the software needs to run on both Arm and Intel architectures. Compiling native software for both is an option for new apps and developers willing to invest in recompilation. To fill in the gaps, these platforms also rely on code emulation. In other words, translating code compiled for one CPU architecture to run on another. This is less efficient and degrades performance than native apps. But good emulation is currently possible to ensure that apps work.
After years of development, Windows on Arm emulation is in a pretty good state for most applications. Android apps run on Intel Chromebooks decently for the most part too. We’ll have to wait and see if Arm Macbooks run as well.