Googleは、主要なオープンソースプロジェクトのソフトウェアの欠陥をプロアクティブに検出するために懸命に取り組んでいます。しかし現在、彼らは中央処理装置の欠陥を検出するSiliFuzzシステムを開発していると報告されています。
SiliFuzzの動作原理は、エミュレーターと逆アセンブラーを使用して収集された事前に準備されたテストデータを実行することにより、プロセッサーの動作を分析することです。これはファジングのタイプの1つです。プロセッサには「ランダム」計算がロードされ、その結果が出力でチェックされます。不一致がある場合、プロセッサは欠陥があると見なされます。
このシステムは、まず第一に、製造、設置、操作などの間に発生する可能性のあるチップの電気的欠陥を検出するように設計されています。 CPU自体の論理エラーではなく、それらに特に注意が払われます。同時に、テスト自体は低レベルのデバッグメカニズムを使用しないため、「戦闘」システムで使用できます。
実際のところ、開発者の仕事は、パフォーマンスへの影響を最小限に抑えながら、各Googleサーバーの各コアを定期的にテストできるシステムを作成することです。現在の形式では、SiliFuzzは特定のマシンの負荷がそれほど大きくない瞬間を選択し、4つのスレッドのグループ(SMTでは2コア)を2分以内で順次テストします。これまでのところ、開発者は、Google自体によって大規模に使用されているx86-64プロセッサによって導かれています。
プロジェクトの主な目標は、誤った計算につながり、通常の障害やクラッシュよりもはるかに危険な隠れた欠陥の検出を自動化することです。これは、チップの動作のわずかな偏差だけが一連のエラーの蓄積につながるためです。そのため、たとえば、一部のCPUはF2XM1(x2-1)呼び出しの誤った結果を返すことがありましたが、他のCPUは定期的に正しい計算とは異なるFCOS計算を行っていました。後者の場合、差は0.0000003%未満ですが、問題が発生する場合はこれで十分な場合があります。
前述のように、SiliFuzzを使用して検出された欠陥の約45%は、他のツールでは追跡されません。将来的には、開発者はSiliFuzzをスケーリングし、プログラムの速度を上げ、一般的に作業の品質を向上させることを計画しています。
2021-10-19 15:51:56
著者: Vitalii Babkin