Questo post é stato letto 190 volte!
Linux dice addio a MMX. Il kernel si appresta a eliminare definitivamente le ultime ottimizzazioni dedicate alle istruzioni MMX, una tecnologia introdotta da Intel circa trent'anni fa per velocizzare alcune operazioni sui processori x86. Questa modifica, proposta dallo sviluppatore Eric Biggers e probabilmente inclusa in Linux 7.5, riguarda una parte specifica del codice che gestisce gli array RAID software. Non significa che Linux smetterà di funzionare sui vecchi Pentium, ma rappresenta la conclusione di un lungo processo di abbandono delle ottimizzazioni pensate per le CPU degli anni '90.
L'importanza delle istruzioni MMX
Le istruzioni MMX, acronimo di Multimedia Extensions, furono lanciate nel 1997 con il Pentium MMX e successivamente adottate da numerosi processori Intel e AMD, inclusi Pentium II e K6. All'epoca, rappresentarono un'innovazione significativa, consentendo di elaborare più dati con una singola istruzione e anticipando le tecniche SIMD (Single Instruction, Multiple Data). Queste 57 istruzioni permettevano al processore di eseguire la stessa operazione su più numeri contemporaneamente, sfruttando registri da 64 bit per lavorare su otto numeri da 8 bit o quattro numeri da 16 bit con una sola istruzione.
Il superamento di MMX
Nonostante la loro importanza iniziale, le istruzioni MMX presentavano una limitazione architetturale: i loro 8 registri MM0-MM7 condividevano lo stato fisico con i registri dell'unità floating point x87. Questo rendeva complesso il passaggio tra codice MMX e operazioni in virgola mobile. L'introduzione delle istruzioni SSE con il Pentium III nel 1999, che portarono registri XMM separati da 128 bit, e successivamente SSE2 con il Pentium 4 nel 2000, cambiarono progressivamente la situazione. Le generazioni successive, come AVX e AVX-512, hanno ulteriormente ampliato le capacità di vettorizzazione.
Mantenere implementazioni specializzate per MMX è diventato sempre meno conveniente.
Perché Linux dice addio a MMX nei sistemi RAID
L'intervento di Eric Biggers si concentra sul codice nelle directory lib/raid/xor/ e lib/raid/raid6/ del kernel, componenti che implementano operazioni matematiche per la gestione della ridondanza dei dati nei sistemi RAID software. Le vecchie istruzioni MMX acceleravano le operazioni XOR, usate per generare e ricostruire le informazioni di parità. Con le patch proposte, verranno eliminate centinaia di righe di codice dedicate a queste ottimizzazioni. Linux non perderà funzionalità RAID, ma rinuncerà ad accelerazioni pensate per processori di fine anni '90, ormai poco diffusi.
Le CPU moderne continueranno a usare istruzioni più efficienti come SSE2, AVX2 e AVX-512.
Cosa cambia per i vecchi processori
Per i processori a 32 bit che supportano MMX ma non le estensioni più recenti, come il Pentium MMX o il Pentium II, le operazioni RAID interessate utilizzeranno le implementazioni scalari in C già presenti nel codice Linux. Queste sono alternative consolidate che non richiedono istruzioni vettoriali specifiche. È possibile che alcune elaborazioni di parità risultino meno veloci su tali processori. La rimozione delle ottimizzazioni MMX non impedisce l'esecuzione delle istruzioni MMX; il processore continuerà a riconoscerle e le applicazioni che le utilizzano potranno eseguirle, a patto che il sistema operativo e l'ambiente software mantengano la compatibilità.
Questo post é stato letto 190 volte!