Poche settimane fa Corellium, una società di software specializzata in virtualizzazione Linux basata su ARM, è riuscita a effettuare un porting funzionante di Linux su hardware Apple M1. Ve ne abbiamo parlato anche noi sulle nostre pagine e vi ricordiamo che il materiale è stato rilasciato gratuitamente su GitHub.
Rispetto alla prima release, gli sviluppatori di Corellium sono riusciti ad abilitare la maggior parte delle funzioni - incluso il Wi-Fi - e degli accessori dell'ecosistema Apple. Ma ciò che è più interessante è che il processo di porting sta svelando molte informazioni sul processore e sull'architettura del M1 di Apple. Stanno emergendo le profonde differenze tra i SoC proprietari di Apple e le altre architetture basate su Arm.
L'azienda di Cupertino è da tempo impegnata nella costruzione di microarchitetture proprietarie per offrire prestazioni imbattibili sui suoi iPhone e iPad. A differenza dei principali rivali, Apple ha preferito migliorare le prestazioni single-core/single-thread delle sue CPU. Lo stesso principio sembra esser stato adottato per i processori M1. Oltre a questa scelta costruttiva, secondo Corellium Apple sembrerebbe usare anche un'architettura di sistema profondamente personalizzata.
Praticamente tutti i sistemi basati su Arm a 64 bit all'avvio caricano il firmware attraverso un'interfaccia chiamata PSCI. Nell'M1, invece, i core della CPU si avviano da un indirizzo specificato da un registro MMIO e solo in un secondo momento iniziano a eseguire il kernel. Inoltre i sistemi Apple usano un "Apple Interrupt Controller" proprietario, che non è compatibile con gli standard Arm.
Anche gli interrupt del timer presentano un uso peculiare. Sui sistemi Apple, per far interagire i vari core del processore, il sistema operativo fornisce una serie di interrupt interprocessore (IPI): gli IPI sono solitamente sono gestiti proprio come gli IRQ tradizionali, cioè usando accessi MMIO all'AIC. Nel caso del M1, Apple usa i registri del core del processore per elaborare gli IPI come FIQ, una modalità con privilegi in cui i processori di solito switchano per accettare richieste di interrupt veloce. Tale modalità purtroppo non è compatibile con OS Linux, quindi per ora non è possibile appurare il motivo di questa scelta.
Le stranezze di Apple non finiscono qui. Si è scoperto che il controller Wi-Fi/Bluetooth su M1 Apple si connette al SoC usando un protocollo non standard, basato su PCIe. Per rendere le cose più complicate, il PCIe di Apple e il controller USB integrato Synopsys DWC3 utilizzano un'unità di gestione della memoria input-output (IOMMU) proprietaria dell'azienda, chiamata "device address resolution table" (DART). Inoltre l'I2C di Apple ha un firmware personalizzato, che utilizza un protocollo esclusivo e ostacola l'uso delle porte USB Type-A.
L'uso di un'architettura di sistema proprietaria non è una novità per Apple, ma questa scelta rende molto più complicato portare altri sistemi operativi sui suoi device o l'esecuzione di questi sistemi in modalità virtuale, come Parallels Desktop. Recentemente uno sviluppatore è riuscito a far funzionare il futuro Windows 10X di Microsoft su un sistema basato su Apple M1 usando QEMU, ma questo sistema operativo è ancora in sviluppo e rischia di essere instabile. Inoltre Windows 10X non esegue app Win32, una limitazione grave per alcuni utenti.
Eseguire Windows 10 o Linux su un Apple Mac non è una necessità per la maggior parte di coloro che usano un Mac. Ma un'architettura di sistema complessa, con l'uso di numerose tecnologie proprietarie, potrebbe rendere più difficile anche lo sviluppo e l'aggiornamento di software e hardware per i Mac del passato realizzati con architettura Arm.
Cerchi accessori per il tuo Macbook? Quale che sia la sua CPU, su Amazon puoi scegliere tra tantissimi caricabatterie, custodie e altro.