Google travaille dur pour détecter de manière proactive les défauts logiciels dans les principaux projets open source. Mais maintenant, ils développeraient un système SiliFuzz qui détectera les défauts dans les unités centrales de traitement.
Le principe de fonctionnement de SiliFuzz est d'analyser le fonctionnement du processeur en exécutant des données de test pré-préparées collectées à l'aide d'émulateurs et de désassembleurs. C'est l'un des types de fuzzing - le processeur est chargé de calculs "aléatoires", dont le résultat est vérifié en sortie. En cas de divergence, le processeur est considéré comme défectueux.
Le système est conçu pour détecter tout d'abord les défauts électriques des puces qui pourraient survenir lors de la production, de l'installation, du fonctionnement, etc. Une attention particulière leur est accordée, et non aux erreurs logiques dans les processeurs eux-mêmes. Dans le même temps, les tests eux-mêmes n'utilisent aucun mécanisme de débogage de bas niveau, ce qui leur permet d'être utilisés sur des systèmes "de combat".
En fait, la tâche des développeurs est de créer un système capable de tester régulièrement chaque cœur de chaque serveur Google, avec un impact minimal sur ses performances. Dans sa forme actuelle, SiliFuzz sélectionne le moment où la charge sur une machine particulière n'est pas si importante, et teste séquentiellement des groupes de quatre threads (2 cœurs avec SMT) pendant pas plus de deux minutes. Jusqu'à présent, les développeurs sont guidés par des processeurs x86-64, qui sont massivement utilisés par Google lui-même.
L'objectif principal du projet est d'automatiser la détection des défauts cachés qui conduisent à des calculs incorrects et qui sont beaucoup plus dangereux que les pannes et les crashs ordinaires, car les seuls petits écarts dans le fonctionnement de la puce conduisent à l'accumulation d'un ensemble d'erreurs. Ainsi, par exemple, il s'est avéré que certains processeurs renvoyaient parfois des résultats incorrects de l'appel F2XM1 (x2-1), tandis que d'autres donnaient périodiquement des calculs FCOS qui différaient des bons. Dans ce dernier cas, la différence est inférieure à 0,0000003%, mais cela peut suffire pour des problèmes.
Comme indiqué, environ 45% des défauts détectés à l'aide de SiliFuzz ne sont pas suivis par d'autres outils. À l'avenir, les développeurs prévoient de faire évoluer SiliFuzz, d'augmenter la vitesse du programme et d'améliorer généralement la qualité du travail.
2021-10-19 15:51:56
Auteur: Vitalii Babkin