A common theme in the SPO600 course, is the need for software which originally was written for x86_64 to be ported over to AArch64 chipsets. This includes providing better capability, optimizations, and developer support for the alternative processing architecture. Doing so is not as easy as one might imagine, for the GCC compiler (in the case of C code) already covers quite a bit of optimizations during compilation on a AArch64 system. This does not imply that each software build is equally as performant as it’s x86 counterpart, which leads to the theme mentioned above. It’s not enough to simply recompile the code; that is arguably child’s play which a machine could automate once fed the location of the source code; It’s about optimizing the code itself beyond what the compiler can attempt to automatically improve, that including optimizations such as inline assembly (AArch64 .ASM instruction sets), updating dependencies, and correcting logic which does not apply to ARM chipsets. That being said, an even graver task if you decided to port a program, is fixing platform specific bugs which may arise from the code or external dependencies which consequently, may not have been ported over yet; you loop through the motions, echoing the process of “Break, Fix, Build” in dissonant whispers. To better explain the beneficial takeaway for modern mobile devices, and why developers are keen to support modern AArch64 chipsets, read below.
The vast majority of mobile devices, including smartphones, tablets, IoT, wearables and the ever expanding sector itself rely on ARM processors alone. Few outliers of mobile devices utilize a x86 chip, a common example being the Asus Zenfone 2 which sported a quad-core Intel Atom Z3580 processor. Though a successful product, developer support was slim during the time of release in the US, and plateaued quickly within that year with few custom roms or improvements being successful ported over to the Zenfone 2. Now, it’s viewed upon as a device for the hobbyist developer who wants to dabble in the niche while the rest of the world goes on it’s own way; into the unknown.
In the context of the modern smartphone, mobile devices utilizing low power ARM-based chipsets were the end result of politics and stagnation (described in the same article) from Intel’s R&D department. Funnily enough, Apple wanted Intel to develop what would be the processor for the first iPhone, which Intel’s then CEO Paul Otellini declined due to his doubts on the iPhone’s success. This resulted in Apple looking into custom AArch64 silicon, and porting OS X over to ARM in the process. ARM chips had a few benefits in this context, that being the circuits design following a much simpler instruction set, allowing for better power consumption management and heat disbursement without the need for fans or liquid cooling. With this, developers who wanted to focus on mobile applications, or tools related to mobile devices only had to focus on ARM architectures to target 98% of the device market, allowing for a driving force which would cause much of the everyday software tools (and eventually, the commercial software which once was restricted to the desktop) to be ported over to AArch64. Some even considered ARM processors to be the future, explaining the developments resulting from contributions and OEM endorsements of ARM 64-bit SOCs, which now frequently support the following capabilities:
- 4G LTE connectivity
- Camera controls and processing
- Location services such as GPS, geolocation and cell tower triangulation
- Sensor Cores which are dedicated for gyrometers, accelerometers, barometers
- Security including encryption, authentication, cryptography
Many estimate that the advancements in ARM64-bit technology is nowhere close to plateauing, with newer SOCs being released month at times which reduces power consumption while increasing performance metrics. Apple’s latest chipset, the A10 Fusion, is cited to be more powerful than the Intel M5 found in the 2016 Macbook Pro; leading some to believe that Apple may port MacOS entirely to ARM, and use custom silicon for their computer products as well. This may create quite the push from third party applications to follow suite, if they want to be compatible with an ARM version of MacOS on the newest hypothetical devices.
Furthermore, with the growing trend which is the replacement of desktop applications and workstations with mobile applications only helps to cement the notion that, with the more software, libraries, tools, etc being ported to AArch64, the benefits only increase. The Raspberry Pi, an ARM powered device has shown much success and also helped popularize the porting of applications over to this platform with the thousands of projects which the Pi enabled. Where will we go next with ARM? Who knows! But I hope you will be following along as the rest of us do too.