Linus Torvalds, il “Dittatore Benevolo†di Linux, ha recentemente lanciato una nuova e accesa critica contro i livelli di funzionalità della microarchitettura x86_64, definendoli una “spazzatura completamente difettosa†che “deve morireâ€. Così, tanto per gradire, la solita pacatezza di Linus Torvalds.
Questa uscita bellicosa è avvenuta in seguito alla pubblicazione di aggiornamenti del kernel Linux, mirati a migliorare i kernel Linux a 32 bit (un ramo di secondaria importanza) su CPU x86_64, che hanno introdotto nuove opzioni di configurazione in Kconfig (Kernel Configuration). Kconfig è un sistema fondamentale per la personalizzazione e la gestione delle impostazioni del kernel Linux, consentendo agli sviluppatori e agli utenti di selezionare le funzionalità da includere durante la fase di compilazione. Attraverso Kconfig, è possibile attivare o disattivare moduli specifici, ottimizzando così il kernel Linux in base alle esigenze hardware e software.
Linus Torvalds ha espresso un netto disaccordo riguardo alla gestione di queste nuove opzioni da parte degli sviluppatori della toolchain del compilatore, sostenendo che il sistema di denominazione, caratterizzato da etichette come “v2â€, “v3†e “v4â€, non solo risulta fuorviante ma è anche intrinsecamente errato, generando confusione tra gli sviluppatori e distogliendo l’attenzione dalle specifiche reali delle CPU.
Cosa Sono i Livelli di Funzionalità x86_64?
Per comprendere il contesto, è utile sapere che i livelli di funzionalità x86_64 sono stati creati dagli sviluppatori della toolchain del compilatore per rappresentare insiemi comuni di estensioni dell’ISA (Instruction Set Architecture) x86_64 introdotte nel corso degli anni. Questi livelli includono:
- x86_64-v2: Richiede il supporto per le estensioni SSE3 e SSE4.2, utilizzate in CPU più vecchie come quelle AMD Bulldozer e Intel Nehalem.
- x86_64-v3: Introduce estensioni come AVX e AVX2, oltre a BMI2 e FMA, tipiche delle CPU Intel Haswell e AMD Excavator.
- x86_64-v4: Richiede il supporto per AVX-512, un’estensione avanzata per operazioni vettoriali.
Le Preoccupazioni di Linus Torvalds
In risposta a una delle patch che modificano i flag del compilatore per la configurazione Kconfig relativa alla CPU, Torvalds ha commentato:
The whole “v2â€, “v3â€, “v4†etc naming seems to be some crazy glibc artifact and is stupid and needs to die. It has no relevance to anything. Please do *not* introduce that mind-fart into the kernel sources.
L’intera nomenclatura ‘v2’, ‘v3’, ‘v4’ sembra essere un artefatto folle di glibc ed è stupida e deve morire. Non ha rilevanza alcuna. Per favore, non introducete questa assurdità nei sorgenti del kernel.
Torvalds ha evidenziato che il modello attuale dei livelli microarchitetturali è completamente errato e non ufficiale. Ha sottolineato che esiste un modello reale per le funzionalità microarchitetturali basato sui bit CPUID, che sono istruzioni specifiche utilizzate dalle CPU per comunicare le loro capacità e caratteristiche agli ambienti software. Questi bit forniscono informazioni dettagliate sulle istruzioni supportate da un processore, come le estensioni SIMD (Single Instruction, Multiple Data) e altre funzionalità avanzate. Torvalds ha criticato la linearizzazione di questi bit, sostenendo che tentare di rappresentarli in una progressione lineare, come avviene con le etichette “v2â€, “v3†e “v4â€, è tecnicamente scorretto. Questa linearizzazione non riflette la complessità delle architetture moderne, dove i processori possono presentare variazioni significative nelle loro capacità a prescindere dalla loro classificazione numerica. In effetti, questa semplificazione può generare confusione tra gli sviluppatori, poiché non consente di comprendere appieno quali istruzioni siano realmente supportate da una determinata CPU, portando a domande fuorvianti come “cosa significa ‘v3’?†invece di domande più dirette e utili riguardo le capacità specifiche del processore.
Inoltre, ha messo in evidenza che questa “semplificazione†in realtà aggiunge complessità al sistema. Invece di chiedere “questa CPU supporta l’istruzione cmpxchgb16?â€, ora ci si deve chiedere “cosa significa ‘v3’?â€
Le Implicazioni Pratiche
Torvalds ha anche espresso la sua preferenza per una riduzione della complessità nelle opzioni di configurazione x86_64, affermando che la maggior parte della messa a punto del compilatore per CPU specifiche non è realmente utile per il kernel Linux. È probabile che il kernel Linux continui a utilizzare opzioni generiche per l’architettura x86_64 e potrebbe adottare l’opzione “-march=native†per ottimizzare il sistema locale. Questa opzione consente di generare codice ottimizzato specificamente per l’architettura della CPU su cui il kernel Linux viene compilato, migliorando le prestazioni senza la necessità di definire livelli di funzionalità microarchitetturali specifici.
Tuttavia, è importante notare che l’adozione di livelli come x86_64-v2, x86_64-v3 e x86_64-v4, proposti in recenti patch (correzioni), ha sollevato dubbi tra gli sviluppatori del kernel Linux, poiché i benefici di tali specifiche per il kernel stesso sono considerati limitati. La maggior parte delle ottimizzazioni necessarie per il kernel Linux sono già incorporate nel codice assembly e nelle ottimizzazioni del compilatore, rendendo le nuove opzioni di configurazione potenzialmente superflue.
Questa posizione è particolarmente rilevante in un contesto in cui Intel si trova in una situazione complicata: i loro nuovi processori per laptop e desktop non supportano AVX-512 e presentano opzioni sia da 256 bit che da 512 bit con AVX10, creando ulteriori complessità nella gestione delle funzionalità . In particolare, la mancanza di supporto per AVX-512 nei processori Alder Lake ha costretto Intel a rivedere la propria strategia, poiché i P-core (Performance cores) sono in grado di gestire queste istruzioni avanzate solo se gli E-core (Efficient cores) sono disabilitati. Con l’introduzione di AVX10, Intel mira a unificare il set di istruzioni, consentendo sia ai P-core che agli E-core di supportare le funzionalità di AVX-512, sebbene le istruzioni a 512 bit funzioneranno esclusivamente sui P-core. Questa situazione complicata non solo influisce sulle prestazioni generali dei processori, ma genera anche confusione tra gli sviluppatori riguardo alle capacità effettive delle diverse architetture, rendendo necessaria una gestione più attenta delle funzionalità offerte dai vari modelli di CPU.
Conclusione
Le affermazioni di Linus Torvalds riguardo ai livelli di funzionalità dell’architettura x86_64 mettono in luce le sfide tecniche e pratiche legate alla gestione delle architetture moderne nel kernel Linux. La sua opposizione a modelli non ufficiali e la richiesta di semplificazione riflettono un impegno costante verso un sistema operativo più efficiente e meno soggetto a confusione.
A questo punto, non ci resta che metterci comodi e osservare gli sviluppi di questa nuova provocazione del “Dittatore Benevolo†di Linux, che, a rigor di logica, sembra avere tutte le carte in regola dalla sua parte. Dopotutto, quando il re del kernel Linux si scaglia contro le pratiche discutibili, è sempre un evento da seguire con popcorn e curiosità !
Fonte: https://lore.kernel.org/lkml/CAHk-=wh_b8b1qZF8_obMKpF+xfYnPZ6t38F1+5pK-eXNyCdJ7g@mail.gmail.com/
Fonte: https://www.phoronix.com/news/Torvalds-Mind-Fart-x86_64-Level
Source: Read More