Il kernel Linux sta innalzando, quasi senza clamore, il requisito minimo per le CPU x86 che può ancora supportare. La modifica riguarda il Time Stamp Counter (TSC), un contatore hardware presente nei processori x86 fin dall’era Pentium e utilizzato da decenni per misurare intervalli temporali estremamente brevi con elevata precisione.

Una patch integrata nel kernel Linux 7.2 utilizza il parametro CONFIG_X86_TSC senza condizioni: la presenza del TSC diventa un requisito di avvio, non più una caratteristica opzionale gestita in fase di compilazione. Questa modifica non impatta i PC moderni, ma consente al kernel di eliminare vecchi percorsi software destinati a processori ormai fuori supporto.
Diverse testate hanno accostato questa novità ai requisiti hardware imposti da Windows 11. Tuttavia, il paragone risulta tendenzioso e fuorviante. Linux non sta richiedendo una funzione recente ai PC attuali: sta piuttosto eliminando codice nato per CPU che risalgono a oltre 30 anni fa, dopo un’ampia operazione di pulizia dell’architettura x86.
Linux 7.1 ha iniziato a rimuovere il supporto per i486 e numerose piattaforme derivate; il ciclo successivo ha eliminato anche configurazioni dedicate a processori i586 privi di TSC.
Cos’è il TSC e perché è importante
Il TSC è un registro a 64 bit associato alla CPU. Il software può leggerlo tramite istruzioni come RDTSC e, sui processori che lo supportano, RDTSCP; il valore restituito cresce nel tempo e consente di misurare intervalli molto brevi senza dover interrogare dispositivi esterni al processore.
La differenza rispetto a timer di piattaforma come HPET o all’ACPI Power Management Timer risiede nel fatto che la rilevazione può avvenire direttamente dal core, mentre consultare un timer collegato al chipset implica normalmente un accesso più costoso. I primi TSC non erano però una buona sorgente temporale: su alcuni processori il contatore poteva variare con la frequenza della CPU, fermarsi in stati di risparmio energetico o risultare non perfettamente sincronizzato tra core diversi.
I processori più recenti hanno progressivamente risolto queste anomalie storiche. Le CPU moderne espongono normalmente un invariant TSC: il contatore avanza a una frequenza costante indipendentemente dai normali cambiamenti di P-state, dalla variazione del clock dei core e da molti stati di risparmio energetico.
La vera novità è l’abbandono delle CPU senza TSC. Per capire perché Linux abbia aspettato così a lungo, bisogna considerare la sua tradizionale compatibilità con hardware molto vecchio. Per anni il kernel ha conservato opzioni dedicate a i486, primi i586, AMD K5, alcuni Cyrix e altre CPU o SoC che non offrivano tutte le caratteristiche in queste ore considerate basilari.
La serie di patch dedicata alla pulizia x86 ha rimosso, tra le altre cose, configurazioni M486, M486SX, ELAN e varianti i586 senza TSC. Una patch specifica, “Remove TSC-less CONFIG_M586 support”, chiarisce che i Pentium e derivati dotati di TSC possono continuare a funzionare attraverso le configurazioni M586TSC o M586MMX.
Il beneficio non consiste tanto in prestazioni magicamente superiori per l’utente finale. Si riduce piuttosto il numero di combinazioni hardware che il codice deve rappresentare, testare e mantenere: per un kernel con decenni di compatibilità accumulata, sbarazzarsi di configurazioni ormai irrealistiche è sempre più importante.
Il confronto con Windows
Microsoft ha affrontato problemi simili anni prima attraverso QueryPerformanceCounter (QPC), API ad alta risoluzione usata dalle applicazioni Win32 per misurare intervalli brevi. QPC esiste da Windows 2000 e XP, ma la sorgente hardware sottostante è cambiata nel tempo.
Windows Vista e Server 2008 preferivano contatori di piattaforma come HPET o ACPI PM Timer, in parte per evitare i problemi dei vecchi TSC non sincronizzati. Microsoft documenta che l’accesso a tali timer ha una latenza maggiore e scala peggio su macchine multiprocessore, perché il contatore risiede fuori dal core ed è condiviso.
Con Windows 7 e Server 2008 R2 Microsoft ha iniziato a usare come base di QPC i TSC a frequenza costante quando il sistema riusciva a sincronizzarli correttamente tra i processori. Windows 8, 8.1 e le corrispondenti versioni Server hanno migliorato ulteriormente l’algoritmo di sincronizzazione.
Per chi utilizza processori Intel o AMD relativamente recenti, la modifica non cambia nulla. I sistemi x86-64 supportati da Linux possiedono da tempo un TSC; anche molte CPU a 32 bit di epoca Pentium e successiva lo implementano. Gli effetti reali ricadono sul retrocomputing e su apparecchiature industriali estremamente vecchie.
Una macchina incapace di soddisfare i nuovi requisiti non potrà seguire indefinitamente il kernel Linux mainline, ma può continuare a funzionare con versioni precedenti del kernel compatibili con quell’hardware. Naturalmente ciò apre un altro problema: un kernel vecchio smette prima o poi di ricevere correzioni, quindi mantenerlo connesso a reti non fidate richiede valutazioni di sicurezza molto più attente.
* Contenuto realizzato con l’ausilio di sistemi di intelligenza artificiale.
Hardware Ready Ready to Bench?