Linux on Apple M1 Project Reveals New Details About M1 System Architecture
Apple's new product line of computers is taken advantage of creating a new chip design that contains proprietary architecture. Apple has long been planning to move away from Intels’ architecture in favor of their own hardware and CPUs. The new architecture is named M1 is based on complete redesign of CPUs and motherboard in favor of producing hardware specifically for Apples’ Operating System.
The first company that managed to use the new Apple’s hardware to port Linux, is Corellium. Corellium specializes in virtualization solutions for the marketplace. The port was a difficult one and most peripherals have yet to work on the new M1 based machines. In the process Corellium has discovered important details about Apple’s M1 CPUs and underlying architecture of the motherboard and hardware that Apple has built. As Corellium managed to recreate the device drivers needed to support the new hardware, simple things like the WIFI and other hardware slowly started to work and revealed some of the hidden features of the new Apple’s machines.
Apple joined many other hardware manufacturers in creating System-On-Chip (SoC) in order to enhance their own products. Apple has a long history of doing things their own way and their SoC follows in the same footsteps. Just like Apples’ iPhones and iPads that contain proprietary Arm-based microarchitecture, M1 continues on the same path with their high end CPUs to handle much heavier workload. In addition Apple has concentrated on improving its cores’ single-core/single-thread performance instead of just throwing more cores at the CPUs.
The M1 architecture introduces many custom features that move away from popular standards such as ARM, Timer Interrupts, hardware firmware and others. Important aspects such as booting up and starting the kernel is done via MMIO instead of the common Arm-based systems over the PSCI. Apple continues to stray from the standards by using the new Apple Interrupt Controller (AIC) that is not compatible with Arm standards at all. Various M1 processors interact with each other over inter-processor interrupts (IPAs), that were previously handled by traditional IRQs using MMIO. But in case of the new M1 now uses processor core registers to transfer and communicate with IPIsas via the FIQs.
Apple has always used their sway to create custom architecture to run their Operating Systems. Porting another Operating System over to Apple OS in order to virtualize it, is not going to be a trivial task. Efforts to port OS such as Win-10x have been somewhat successful but not very stable. Using QEMU to achieve this port has not been finalized yet, and its viability has not been tested out of the lab. Of course running Win 10x is not a priority for most Mac users. But the complicated new architecture might prevent other software companies from trying to move their products over to the new M1 CPUs on the Macs.