Linux Shares New Information About M1 System Architecture on Apple M1 Project
Apple’s M1 systems use multiple proprietary technologies.
Corellium, a tech firm specialized in virtualization technologies, has managed to port Linux to an Apple M1-based PC and also succeeded in making nearly all the system peripherals functional. Corellium found several interesting details about Apple’s M1 processor and the architecture of the system in the process.
We reported that a startup called Corellium had managed to run Linux on an Apple M1-based computer a few weeks ago. The operating system ran back then, but it did not support many things, essentially making the PC to a large degree unusable. The company has recently finally managed to do most of the work (including Wi-Fi), which means that Linux can now be used on the latest Macs. But there is an interesting side effect to the whole project of running a non-Apple OS on such computers, as it shows how different Apple SoCs are compared to other Arm-based architectures.
Proprietary Technologies Loads It’s no secret that for quite a while now, Apple has been working on developing its own Arm-based microarchitectures to provide unbeatable performance with its iPhones and iPads. The business did not add in more cores, unlike its competitors, instead enhancing the single-core/single-thread performance of its cores. In addition to custom cores, Apple evidently uses an extremely custom system architecture too, according to Corellium.
When nearly all 64-bit Arm-based systems are booted, the firmware is named using the PSCI interface, but in the case of M1, the Processor cores start with the address defined in the MMIO register and then start running the kernel. In addition, a proprietary Apple Interrupt Controller (AIC) that is not compliant with Arm’s specifications is also used by Apple systems. The timer interrupts, meanwhile, are related to the FIQ, an obscure architectural feature mainly found on Linux-incompatible 32-bit Arm systems.
The OS must have a series of inter-processor interrupts to allow separate processors communicate with each other on an M1-powered PC (IPIs). IPIs were traditionally managed using MMIO access to the AIC, much like conventional IRQs, except in the case of the M1, Apple uses processor core registers to dispatch and identify IPIs while they depend on FIQs.
The oddities of Apple do not stop there. For example, using a non-standard PCIe-based protocol, the Apple Wi-Fi/Bluetooth controller connects to the SoC. (which fortunately was supported by Corellium virtualization software). Apple’s PCIe and the embedded Synopsys DWC3 USB controller use the company’s patented input-output memory management unit (IOMMU), dubbed the system address resolution table, to make matters more difficult (DART). In comparison, Apple’s I2C has a custom firmware that uses an exclusive interface that uses the USB Type-A ports to foil it.
It’s not anything new for Apple to use a proprietary system architecture, but it would make it much harder to port other operating systems to its platforms and to run those OSes in virtualization mode. A developer recently managed to run Microsoft’s upcoming Windows 10X using QEMU virtualization on an Apple M1-based device, but this OS is not final yet, and it is unknown how stable it is. In comparison, Windows 10X does not run applications for Win32, which makes it less valuable for some consumers.
To most Mac owners, running Windows 10 or Linux on an Apple Mac might not be crucially necessary. But a dynamic system architecture with several proprietary technologies would possibly make it difficult for Arm-based Macs to build those types of applications and hardware.