Gli smartphone diventando sempre più potenti, ma una parte delle loro prestazioni non dipende solo dall’hardware. Spesso è il software a fare la differenza. Ciò soprattutto il modo in cui il sistema operativo è costruito e ottimizzato. In tale contesto si inserisce una nuova tecnica su cui Google sta lavorando per migliorare Android. Si tratta di una soluzione che potrebbe rendere i telefoni più veloci e efficienti cambiando il modo in cui viene compilato il kernel del sistema. La novità arriva dal team interno chiamato Android LLVM Toolchain Team. Quest’ultimo si occupa degli strumenti utilizzati per trasformare il codice sorgente di Android in istruzioni comprensibili dal processore.
La tecnica di cui hanno parlato si chiama Automatic Feedback-Directed Optimization, abbreviata in AutoFDO. Dietro tale nome tecnico c’è un’idea abbastanza semplice: invece di ottimizzare il sistema operativo basandosi solo su modelli teorici, si utilizzano dati provenienti dall’uso reale degli smartphone. A tal proposito, è utile sottolineare il ruolo del kernel. Quest’ultimo è la parte centrale di Android e gestisce la comunicazione tra le applicazioni e l’hardware del dispositivo. Ogni operazione passa, direttamente o indirettamente, attraverso tale livello. In pratica è il coordinatore di tutto ciò che accade all’interno dello smartphone.
Google punta al kernel Android per migliorare le prestazioni
Quando il kernel viene compilato, il codice che lo compone viene convertito in istruzioni che il processore può eseguire. In tale fase il compilatore non si limita a tradurre il codice, ma prende anche una serie di decisioni su come organizzarlo per renderlo più efficiente. Di solito, tali scelte si basano su regole generiche e su stime di come il software potrebbe comportarsi durante l’esecuzione. Il limite di tale metodo è evidente: si tratta di previsioni. Il compilatore non sa davvero quali parti del codice verranno utilizzate più spesso dagli utenti. AutoFDO nasce proprio per colmare tale distanza tra teoria e utilizzo reale.
Per raccogliere dati concreti Google ha effettuato diversi test interni utilizzando smartphone Pixel. Durante tali prove sono state simulate attività comuni, eseguendo circa cento delle applicazioni Android più popolari. Nel frattempo il sistema monitorava quali porzioni del kernel venivano richiamate più frequentemente. In tal modo si crea una sorta di mappa del comportamento reale del sistema operativo durante l’uso quotidiano.
Quando il kernel viene ricompilato utilizzando tali informazioni, il compilatore può riorganizzare il codice in modo molto più mirato. Le parti più utilizzate vengono ottimizzate e posizionate in modo da essere eseguite più velocemente, mentre quelle meno frequenti hanno un peso minore nella struttura finale del programma. È un cambiamento che non riguarda le funzioni del sistema, ma il modo in cui queste vengono eseguite dal processore. In termini pratici, le ottimizzazioni ottenute con AutoFDO potrebbero tradursi in applicazioni Android che si avviano più rapidamente e transizioni più fluide.
