Core che non contano: Google preoccupata per gli errori silenziosi delle CPU


Un gruppo di ricercatori di Google ha pubblicato un’interessante ricerca dal titolo “Cores that don’t count” (Core che non contano) in cui si solleva il tema dei core delle CPU che sbagliano i calcoli. Nel testo questi core sono stati ribattezzati “mercurial core” o italianizzando “core capricciosi“. Di che si tratta? Scopriamolo insieme.

Il team della casa di Mountain View afferma che i processi produttivi più avanzati, i progetti elaborati (non solo del chip ma anche il packaging) e le istruzioni sempre più specializzate per aumentare le prestazioni, stanno facendo emergere “errori di calcolo effimeri che non sono stati rilevati durante i test produttivi“. Insomma, non solo ogni core non è uno uguale all’altro, ma per giunta alcuni core “sbagliano” in modo assolutamente non prevedibile.

“Questi difetti non possono sempre essere mitigati da tecniche come gli aggiornamenti del microcodice e possono essere correlati a componenti specifici all’interno del processore, aprendo la strada a piccole modifiche al codice che possono portare a grandi cambiamenti nell’affidabilità“.

Uno degli aspetti peggiori di questi errori – ribattezzati corrupt execution error o CEE – è che spesso sono “silenti“, ossia ce ne si accorge solo dopo un calcolo sbagliato, non prima, e non danno “evidenze” chiare se non un risultato finale errato. Insomma, i CEE sono sintomi di quella che Google chiama “silent data corruption“, o l’abilità per il dato di corrompersi quando scritto, letto o rimane inattivo senza che la corruzione venga rilevata immediatamente.

“I core capricciosi sono estremamente rari, ma in una grande flotta di server possiamo osservare gli intoppi che causano, spesso tali da vederli come un chiaro problema – uno che richiederà la collaborazione tra progettisti di hardware, i produttori di processori e gli sviluppatori di sistemi software”, scrivono i ricercatori.

Il documento pubblicato è una chiamata alle armi verso una rinnovata attenzione al problema, con i ricercatori di Google che illustrano diversi approcci basati sul software per affrontarlo, da una una migliore rilevazione o meccanismi di isolamento, fino ad arrivare a metodi per tollerare la corruzione dei dati causata. Lo studio è però solo allo stadio iniziale e ci sono ancora molte cose da analizzare e scoprire.

Google, per ora, ha messo a punto un modello per mostrare come appare, in genere, un CEE. Da quanto emerso, i fallimenti nel processo di calcolo sembrano non deterministici e si verificano in modo variabile, e sembra che il problema peggiori nel corso del tempo. “Abbiamo alcune prove che l’invecchiamento è un fattore. In un processore multi-core, solitamente un solo core fallisce, spesso in modo costante. I CEE sembrano essere un problema diffuso nell’industria, non legato a uno specifico produttore, ma il tasso non è uniforme tra le CPU“.

Insomma, ci sono errori di fabbricazione che non sono stati rilevati da nessuno in fase di test, anche perché questi errori si possono verificare dopo un certo periodo di tempo e non sono presenti sin dall’inizio.

I ricercatori spiegano che i tassi di corruzione differiscono di “molti ordini di grandezza” tra i core difettosi. Il tipo di carico di lavoro, la frequenza, la tensione e la temperatura possono influire sul fatto che un core emetta un CEE. Gli autori hanno osservato tassi di fallimento “dell’ordine di pochi core capricciosi per diverse migliaia di macchine”. Non stiamo quindi parlando di un problema che interessa i nostri PC gaming, ma se pensate alla quantità di core di un datacenter, ecco che il quadro si fa più serio.

Google elenca diversi problemi causati dai core capricciosi, dalla violazione della semantica dei lock alla corruzione dei dati durante le operazioni load, store e vettoriali. L’azienda ha inoltre rilevato come si rischi che un’operazione di cifratura svolta da un core capriccioso sia decifrabile solo dallo stesso core e non da un altro, il quale restituirebbe un risultato incomprensibile – forse una grande cosa dal punto di vista della sicurezza, in quanto il dato resterebbe sicuro, ma non certo un comportamento accettabile.



Source link