Difference Between ARM64, ARMel, and ARMhf

Most of us, while looking to buy a new smartphone, tablet, or any electronics gadget we see the term “ARM vXXX” processor in the specifications list. But we hardly bother to know what is an ARM processor. So in this guide, we will explore in brief ARM processors.

What is ARM anyway?

ARM or Advanced RISC Machines or Acorn RISC Machine (previous name) is one of the world’s most used processor cores. The ARM processor became the first commercial RISC processor in 1985. The first release was a 26 bit RISC machine. With its second release in 1987, the ARM version 2 introduced the co-processor feature. Over time the arm processors have evolved very much. The ARM corporation provides paid licenses to anyone who wants to manufacture CPUs or SOC products based on their architecture. ARM Holdings, based in Cambridge, UK, is responsible for this business in and out. Apple, Qualcomm, Texas Instruments, Nvidia, Samsung, etc., are some of the ARM family’s notable consumers.

The ARM processors are mostly used in mobile devices and embedded systems. They are small in size and have low power consumption, but at the same time, they provide high performance. The point of consideration is the design issue, as the software designed for ARM cannot run on non-ARM devices. It is just like two people with different languages cannot understand what the other is speaking.

Features of ARM Processor

  1. Based on RISC  or Reduced Instruction Set Computing.
  2. Fixed size and uniform instruction set.
  3. Multiple stage pipeline support for instruction.
  4. Supports wide frequency range.
  5. Execution of Java byte-code.
  6. Optimized for battery usage in mobile devices.

In a broad sense, the ARM architecture has three types of profiles:

A-profile or Application profile

R-profile or Real-time profile

M-profile or Micro-controller profile

Why is ARM is used by Tech Giants

For a long time, ARM is considered as the processor for mobile devices, with  x86/x64 as the target processor for desktops and servers. But with the evolution of technologies, ARM processors are being used for tablets. For e.g., Windows 10 earlier can only be run on  x86 and x64 based processor, but recent Windows 10 desktop can run on processors that are based on ARM64 architecture. Microsoft has assured the application compatibility for x86 and x64 based applications to run smoothly on the ARM64 based PCs. Although ARM32 and ARM64 based applications will directly execute, the x86 based application will require emulation to run.

Some windows version like Windows 8  requires x86 or x64 processor, whereas Windows RT needs ARM processor. Although x86/x64 are very fast as compared to the ARM processor, they consume significant energy. Therefore they are best suited for servers and desktop computers. At the same time, the ARM processor is relatively slow but requires low energy to run. This makes them more suitable for mobile devices running Android, IOS, etc.

Apple has announced to move its MAC series from Intel to  SoC and SiP processors, which are based on ARM architecture. According to Apple, with ARM processors, they will deliver performance combined with long battery power. Apple Silicon chips are the first Apple-designed Arm-based chip to be used in recent MacBook Air, MacBook Pro, and Mac mini.

The  Three Debian ARM ports: Debian/armel, Debian/armhf, and Debian/arm64

Debian/armhf is an acronym for “arm hard float,” representing a port on Debian.  The Debian armhf port was started to benefit the floating-point unit (FPU) on modern 32 bit ARM boards.

For critical accuracy requirements in computing and digital signal processing (DSP) based applications, floating-point is specifically suited. An ARMv7 CPU  with version 3 of the ARM vector floating-point specification (VFPv3) is the minimum requirement for Debian armhf port.

It is primarily used for mobile devices (smartphones, tablets) and embedded devices.

Various platforms are known to supported by Debian/armhf:

  1. Freescale MX53 Quick Start Board: The i.MX53 Quick Start Board has a 1 GHz Arm Cortex-A8 Processor. It is an open-source platform for development.
  2. NVIDIA Jetson TK1: It is a developer board with a 32-bit ARM Cortex-A15 CPU.
  3. SolidRun Cubox-i4Pro: The Cubox-i series is a tiny compute platform. Cubox-i4Pro features an ARM Cortex A9 processor.

Other supported platforms include Wandboard, Seagate Personal Cloud and Seagate NAS, SolidRun Cubox-i2eX tec. The EfikaMX platform was earlier supported till Debian 7, but from Debian 8, the support is abandoned.

Debian/armel or ARM EABI or Embedded ABI port on Debian was aimed at older 32 bit ARM processors. It does not have a hardware floating-point unit (FPU) support. ARM EABI or armel is supposed to work with ARM architecture versions 4T, 5T, and above, but with Debian 10 (buster) release, the ARM4T support is removed.

According to Oracle, the armel to armhf is in progress, so there may be some incompatibilities between them. To check whether your system is running armhf or armel, run the below command on your Linux terminal:

$ readelf -A /proc/self/exe | grep Tag_ABI_VFP_args

If the above command returns a Tag_ABI_VFP_args tag, then it is an armhf system, whereas a blank output shows that it is an armel system. For e.g., a raspberry distribution will return a Tag_ABI_VFP_args: VFP registers tag as it is an armhf distribution. On the other hand, a  soft-float Debian Wheezy distribution will give a blank output, indicating it is an armel distro.

The following list contains the various platforms supported by Debian/armel:

  1. Kirkwood and Orion5x SoC from Marvell with an ARM CPU.
  2. Versatile platform with QEMU emulator.

Debian/arm64 targets  64-bit ARM processors, which requires minimum ARMv8 architecture. The 64-bit processing provides an enhanced computing capability. This processing enhancement is achieved with an increase in memory addressing capacity in 64-bit architecture.  Arm64 hardware was first launched for iPhone 5 in the year 2013. The gnu name for ARM64 is aarch64-linux-gnu. The good thing with ARM64 is that it is compatible with its 32-bit predecessor. This helps in running the ARMv7 binaries or software without any modification on ARMv8 architecture.

Debian released ARM64 port for the first time in it’s Debian 8 (Jessie) operating system. The list of various platforms supported by Debian/ARM is given below:

  1. Applied Micro (APM) Mustang/X-Gene: It is the first known platform with ARMv8 architecture with an 8-core CPU.
  2. ARM Juno Development Platform: According to ARM, Juno Arm Development Platformis an open and vendor-neutral Armv8 development with a 6-core  ARMv8-A CPU.

Example of devices using ARM64 architecture includes Raspberry Pi 2,  Raspberry Pi 3, Microsoft HoloLens 2, DragonBoard, several IoT devices, modern laptops and desktops, smartphones, etc

Checking the processor type of your board.

To check the processor type on a Ubuntu machine, just use the following command:

$ dpkg –print-architecture

For a detailed list of the various feature of your CPU, use the following command:

$ cat /proc/cpuinfo[//c]

Another command that you can use to see the processor architecture of your system is given below:

[cc lang="bash" width="100%" height="100%" escaped="true" theme="blackboard"]
$ uname -a

About the author

Ali Imran Nagori

Ali imran is a technical writer and Linux enthusiast who loves to write about Linux system administration and related technologies. You can connect with him on LinkedIn