Google sta lavorando duramente per rilevare in modo proattivo i difetti del software nei principali progetti open source. Ma ora stanno sviluppando un sistema SiliFuzz che rileverà i difetti nelle unità centrali di elaborazione.
Il principio di funzionamento di SiliFuzz è analizzare il funzionamento del processore eseguendo dati di test pre-preparati raccolti utilizzando emulatori e disassemblatori. Questo è uno dei tipi di fuzzing: il processore viene caricato con calcoli "casuali", il cui risultato viene verificato in uscita. In caso di discrepanza, il processore è considerato difettoso.
Il sistema è progettato per rilevare, prima di tutto, i difetti elettrici dei chip che potrebbero insorgere durante la produzione, l'installazione, durante il funzionamento, ecc. Particolare attenzione è rivolta a loro e non agli errori logici nelle CPU stesse. Allo stesso tempo, i test stessi non utilizzano alcun meccanismo di debug di basso livello, il che consente loro di essere utilizzati su sistemi di "combattimento".
Il compito degli sviluppatori, infatti, è quello di creare un sistema in grado di testare regolarmente ogni core in ogni server di Google, con un impatto minimo sulle sue prestazioni. Nella sua forma attuale, SiliFuzz seleziona il momento in cui il carico su una particolare macchina non è così grande e testa in sequenza gruppi di quattro thread (2 core con SMT) per non più di due minuti. Finora, gli sviluppatori sono guidati da processori x86-64, che sono ampiamente utilizzati da Google stesso.
L'obiettivo principale del progetto è automatizzare il rilevamento di difetti nascosti che portano a calcoli errati e che sono molto più pericolosi dei normali guasti e crash, poiché le uniche piccole deviazioni nel funzionamento del chip portano all'accumulo di una serie di errori. Quindi, ad esempio, si è scoperto che alcune CPU a volte restituivano risultati errati della chiamata F2XM1 (x2-1), mentre altre fornivano periodicamente calcoli FCOS diversi da quelli corretti. In quest'ultimo caso, la differenza è inferiore allo 0,0000003%, ma questo può essere sufficiente per problemi.
Come notato, circa il 45% dei difetti rilevati utilizzando SiliFuzz non viene monitorato da altri strumenti. In futuro, gli sviluppatori prevedono di ridimensionare SiliFuzz, aumentare la velocità del programma e, in generale, migliorare la qualità del lavoro.
2021-10-19 15:51:56
Autore: Vitalii Babkin